diff --git a/.circleci/config.yml b/.circleci/config.yml index 1161e4076..e8bfde299 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ version: 2 aliases: - &defaults docker: - - image: circleci/ruby:2.5.1-stretch-node + - image: circleci/ruby:2.6.0-stretch-node environment: &ruby_environment BUNDLE_APP_CONFIG: ./.bundle/ DB_HOST: localhost @@ -98,21 +98,21 @@ jobs: <<: *defaults <<: *install_steps + install-ruby2.6: + <<: *defaults + <<: *install_ruby_dependencies + install-ruby2.5: <<: *defaults + docker: + - image: circleci/ruby:2.5.3-stretch-node + environment: *ruby_environment <<: *install_ruby_dependencies install-ruby2.4: <<: *defaults docker: - - image: circleci/ruby:2.4.4-stretch-node - environment: *ruby_environment - <<: *install_ruby_dependencies - - install-ruby2.3: - <<: *defaults - docker: - - image: circleci/ruby:2.3.7-stretch-node + - image: circleci/ruby:2.4.5-stretch-node environment: *ruby_environment <<: *install_ruby_dependencies @@ -128,43 +128,43 @@ jobs: - ./mastodon/public/assets - ./mastodon/public/packs-test/ + test-ruby2.6: + <<: *defaults + docker: + - image: circleci/ruby:2.6.0-stretch-node + environment: *ruby_environment + - image: circleci/postgres:10.6-alpine + environment: + POSTGRES_USER: root + - image: circleci/redis:5.0.3-alpine3.8 + <<: *test_steps + test-ruby2.5: <<: *defaults docker: - - image: circleci/ruby:2.5.1-stretch-node + - image: circleci/ruby:2.5.3-stretch-node environment: *ruby_environment - - image: circleci/postgres:10.3-alpine + - image: circleci/postgres:10.6-alpine environment: POSTGRES_USER: root - - image: circleci/redis:4.0.9-alpine + - image: circleci/redis:4.0.12-alpine <<: *test_steps test-ruby2.4: <<: *defaults docker: - - image: circleci/ruby:2.4.4-stretch-node + - image: circleci/ruby:2.4.5-stretch-node environment: *ruby_environment - - image: circleci/postgres:10.3-alpine + - image: circleci/postgres:10.6-alpine environment: POSTGRES_USER: root - - image: circleci/redis:4.0.9-alpine - <<: *test_steps - - test-ruby2.3: - <<: *defaults - docker: - - image: circleci/ruby:2.3.7-stretch-node - environment: *ruby_environment - - image: circleci/postgres:10.3-alpine - environment: - POSTGRES_USER: root - - image: circleci/redis:4.0.9-alpine + - image: circleci/redis:4.0.12-alpine <<: *test_steps test-webui: <<: *defaults docker: - - image: circleci/node:8.11.1-stretch + - image: circleci/node:8.15.0-stretch steps: - *attach_workspace - run: ./bin/retry yarn test:jest @@ -183,20 +183,24 @@ workflows: build-and-test: jobs: - install + - install-ruby2.6: + requires: + - install - install-ruby2.5: requires: - install + - install-ruby2.6 - install-ruby2.4: requires: - install - - install-ruby2.5 - - install-ruby2.3: - requires: - - install - - install-ruby2.5 + - install-ruby2.6 - build: requires: - - install-ruby2.5 + - install-ruby2.6 + - test-ruby2.6: + requires: + - install-ruby2.6 + - build - test-ruby2.5: requires: - install-ruby2.5 @@ -205,13 +209,9 @@ workflows: requires: - install-ruby2.4 - build - - test-ruby2.3: - requires: - - install-ruby2.3 - - build - test-webui: requires: - install - check-i18n: requires: - - install-ruby2.5 + - install-ruby2.6 diff --git a/.codeclimate.yml b/.codeclimate.yml index 58f6b3de4..a70459764 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -27,7 +27,7 @@ plugins: enabled: true eslint: enabled: true - channel: eslint-4 + channel: eslint-5 rubocop: enabled: true channel: rubocop-0-54 diff --git a/.eslintignore b/.eslintignore index 6d540c413..d4930e1f5 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,30 +1,13 @@ -# See https://help.github.com/articles/ignoring-files for more about ignoring files. -# -# If you find yourself ignoring temporary files generated by your text editor -# or operating system, you probably want to add a global ignore instead: -# git config --global core.excludesfile '~/.gitignore_global' - -# Ignore bundler config. -/.bundle - -# Ignore the default SQLite database. -/db/*.sqlite3 -/db/*.sqlite3-journal - -# Ignore all logfiles and tempfiles. -/log/* -!/log/.keep -/tmp -coverage -public/system -public/assets -.env -.env.production -node_modules/ -neo4j/ - -# Ignore Vagrant files -.vagrant/ - -# Ignore Capistrano customizations -config/deploy/* +/build/** +/coverage/** +/db/** +/lib/** +/log/** +/node_modules/** +/nonobox/** +/public/** +!/public/embed.js +/spec/** +/tmp/** +/vendor/** +!.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..56e3d0530 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,199 @@ +module.exports = { + root: true, + + env: { + browser: true, + node: true, + es6: true, + jest: true, + }, + + globals: { + ATTACHMENT_HOST: false, + }, + + parser: 'babel-eslint', + + plugins: [ + 'react', + 'jsx-a11y', + 'import', + 'promise', + ], + + parserOptions: { + sourceType: 'module', + ecmaFeatures: { + experimentalObjectRestSpread: true, + jsx: true, + }, + ecmaVersion: 2018, + }, + + settings: { + react: { + version: 'detect', + }, + 'import/extensions': [ + '.js', + ], + 'import/ignore': [ + 'node_modules', + '\\.(css|scss|json)$', + ], + }, + + rules: { + 'brace-style': 'warn', + 'comma-dangle': ['error', 'always-multiline'], + 'comma-spacing': [ + 'warn', + { + before: false, + after: true, + }, + ], + 'comma-style': ['warn', 'last'], + 'consistent-return': 'error', + 'dot-notation': 'error', + eqeqeq: 'error', + indent: ['warn', 2], + 'jsx-quotes': ['error', 'prefer-single'], + 'no-catch-shadow': 'error', + 'no-cond-assign': 'error', + 'no-console': [ + 'warn', + { + allow: [ + 'error', + 'warn', + ], + }, + ], + 'no-fallthrough': 'error', + 'no-irregular-whitespace': 'error', + 'no-mixed-spaces-and-tabs': 'warn', + 'no-nested-ternary': 'warn', + 'no-trailing-spaces': 'warn', + 'no-undef': 'error', + 'no-unreachable': 'error', + 'no-unused-expressions': 'error', + 'no-unused-vars': [ + 'error', + { + vars: 'all', + args: 'after-used', + ignoreRestSiblings: true, + }, + ], + 'object-curly-spacing': ['error', 'always'], + 'padded-blocks': [ + 'error', + { + classes: 'always', + }, + ], + quotes: ['error', 'single'], + semi: 'error', + strict: 'off', + 'valid-typeof': 'error', + + 'react/jsx-boolean-value': 'error', + 'react/jsx-closing-bracket-location': ['error', 'line-aligned'], + 'react/jsx-curly-spacing': 'error', + 'react/jsx-equals-spacing': 'error', + 'react/jsx-first-prop-new-line': ['error', 'multiline-multiprop'], + 'react/jsx-indent': ['error', 2], + 'react/jsx-no-bind': 'error', + 'react/jsx-no-duplicate-props': 'error', + 'react/jsx-no-undef': 'error', + 'react/jsx-tag-spacing': 'error', + 'react/jsx-uses-react': 'error', + 'react/jsx-uses-vars': 'error', + 'react/jsx-wrap-multilines': 'error', + 'react/no-multi-comp': 'off', + 'react/no-string-refs': 'error', + 'react/prop-types': 'error', + 'react/self-closing-comp': 'error', + + 'jsx-a11y/accessible-emoji': 'warn', + 'jsx-a11y/alt-text': 'warn', + 'jsx-a11y/anchor-has-content': 'warn', + 'jsx-a11y/anchor-is-valid': [ + 'warn', + { + components: [ + 'Link', + 'NavLink', + ], + specialLink: [ + 'to', + ], + aspect: [ + 'noHref', + 'invalidHref', + 'preferButton', + ], + }, + ], + 'jsx-a11y/aria-activedescendant-has-tabindex': 'warn', + 'jsx-a11y/aria-props': 'warn', + 'jsx-a11y/aria-proptypes': 'warn', + 'jsx-a11y/aria-role': 'warn', + 'jsx-a11y/aria-unsupported-elements': 'warn', + 'jsx-a11y/heading-has-content': 'warn', + 'jsx-a11y/html-has-lang': 'warn', + 'jsx-a11y/iframe-has-title': 'warn', + 'jsx-a11y/img-redundant-alt': 'warn', + 'jsx-a11y/interactive-supports-focus': 'warn', + 'jsx-a11y/label-has-for': 'off', + 'jsx-a11y/mouse-events-have-key-events': 'warn', + 'jsx-a11y/no-access-key': 'warn', + 'jsx-a11y/no-distracting-elements': 'warn', + 'jsx-a11y/no-noninteractive-element-interactions': [ + 'warn', + { + handlers: [ + 'onClick', + ], + }, + ], + 'jsx-a11y/no-onchange': 'warn', + 'jsx-a11y/no-redundant-roles': 'warn', + 'jsx-a11y/no-static-element-interactions': [ + 'warn', + { + handlers: [ + 'onClick', + ], + }, + ], + 'jsx-a11y/role-has-required-aria-props': 'warn', + 'jsx-a11y/role-supports-aria-props': 'off', + 'jsx-a11y/scope': 'warn', + 'jsx-a11y/tabindex-no-positive': 'warn', + + 'import/extensions': [ + 'error', + 'always', + { + js: 'never', + }, + ], + 'import/newline-after-import': 'error', + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ + 'config/webpack/**', + 'app/javascript/mastodon/test_setup.js', + 'app/javascript/**/__tests__/**', + ], + }, + ], + 'import/no-unresolved': 'error', + 'import/no-webpack-loader-syntax': 'error', + + 'promise/catch-or-return': 'error', + }, +}; diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index fbda26549..000000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,170 +0,0 @@ ---- -root: true - -env: - browser: true - node: true - es6: true - jest: true - -globals: - ATTACHMENT_HOST: false - -parser: babel-eslint - -plugins: -- react -- jsx-a11y -- import -- promise - -parserOptions: - sourceType: module - ecmaFeatures: - experimentalObjectRestSpread: true - jsx: true - ecmaVersion: 2018 - -settings: - import/extensions: - - .js - import/ignore: - - node_modules - - \\.(css|scss|json)$ - -rules: - brace-style: warn - comma-dangle: - - error - - always-multiline - comma-spacing: - - warn - - before: false - after: true - comma-style: - - warn - - last - consistent-return: error - dot-notation: error - eqeqeq: error - indent: - - warn - - 2 - jsx-quotes: - - error - - prefer-single - no-catch-shadow: error - no-cond-assign: error - no-console: - - warn - - allow: - - error - - warn - no-fallthrough: error - no-irregular-whitespace: error - no-mixed-spaces-and-tabs: warn - no-nested-ternary: warn - no-trailing-spaces: warn - no-undef: error - no-unreachable: error - no-unused-expressions: error - no-unused-vars: - - error - - vars: all - args: after-used - ignoreRestSiblings: true - object-curly-spacing: - - error - - always - padded-blocks: - - error - - classes: always - quotes: - - error - - single - semi: error - strict: off - valid-typeof: error - - react/jsx-boolean-value: error - react/jsx-closing-bracket-location: - - error - - line-aligned - react/jsx-curly-spacing: error - react/jsx-equals-spacing: error - react/jsx-first-prop-new-line: - - error - - multiline-multiprop - react/jsx-indent: - - error - - 2 - react/jsx-no-bind: error - react/jsx-no-duplicate-props: error - react/jsx-no-undef: error - react/jsx-tag-spacing: error - react/jsx-uses-react: error - react/jsx-uses-vars: error - react/jsx-wrap-multilines: error - react/no-multi-comp: off - react/no-string-refs: error - react/prop-types: error - react/self-closing-comp: error - - jsx-a11y/accessible-emoji: warn - jsx-a11y/alt-text: warn - jsx-a11y/anchor-has-content: warn - jsx-a11y/anchor-is-valid: - - warn - - components: - - Link - - NavLink - specialLink: - - to - aspect: - - noHref - - invalidHref - - preferButton - jsx-a11y/aria-activedescendant-has-tabindex: warn - jsx-a11y/aria-props: warn - jsx-a11y/aria-proptypes: warn - jsx-a11y/aria-role: warn - jsx-a11y/aria-unsupported-elements: warn - jsx-a11y/heading-has-content: warn - jsx-a11y/html-has-lang: warn - jsx-a11y/iframe-has-title: warn - jsx-a11y/img-redundant-alt: warn - jsx-a11y/interactive-supports-focus: warn - jsx-a11y/label-has-for: off - jsx-a11y/mouse-events-have-key-events: warn - jsx-a11y/no-access-key: warn - jsx-a11y/no-distracting-elements: warn - jsx-a11y/no-noninteractive-element-interactions: - - warn - - handlers: - - onClick - jsx-a11y/no-onchange: warn - jsx-a11y/no-redundant-roles: warn - jsx-a11y/no-static-element-interactions: - - warn - - handlers: - - onClick - jsx-a11y/role-has-required-aria-props: warn - jsx-a11y/role-supports-aria-props: off - jsx-a11y/scope: warn - jsx-a11y/tabindex-no-positive: warn - - import/extensions: - - error - - always - - js: never - import/newline-after-import: error - import/no-extraneous-dependencies: - - error - - devDependencies: - - "config/webpack/**" - - "app/javascript/mastodon/test_setup.js" - - "app/javascript/**/__tests__/**" - import/no-unresolved: error - import/no-webpack-loader-syntax: error - - promise/catch-or-return: error diff --git a/.postcssrc.yml b/.postcssrc.yml deleted file mode 100644 index efffb39ba..000000000 --- a/.postcssrc.yml +++ /dev/null @@ -1,9 +0,0 @@ -plugins: - postcss-smart-import: {} - precss: {} - autoprefixer: - browsers: - - last 2 versions - - IE >= 11 - - iOS >= 9 - postcss-object-fit-images: {} diff --git a/.ruby-version b/.ruby-version index aedc15bb0..e70b4523a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.5.3 +2.6.0 diff --git a/AUTHORS.md b/AUTHORS.md index b81b6d245..1bcf455b1 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,41 +1,44 @@ +Authors +======= + Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon) and provided thanks to the work of the following contributors: * [Gargron](https://github.com/Gargron) * [ykzts](https://github.com/ykzts) * [akihikodaki](https://github.com/akihikodaki) -* [mjankowski](https://github.com/mjankowski) * [ThibG](https://github.com/ThibG) +* [mjankowski](https://github.com/mjankowski) * [unarist](https://github.com/unarist) * [m4sk1n](https://github.com/m4sk1n) +* [dependabot[bot]](https://github.com/apps/dependabot) * [yiskah](https://github.com/yiskah) * [nolanlawson](https://github.com/nolanlawson) * [sorin-davidoi](https://github.com/sorin-davidoi) +* [ysksn](https://github.com/ysksn) * [abcang](https://github.com/abcang) * [lynlynlynx](https://github.com/lynlynlynx) -* [dependabot[bot]](https://github.com/apps/dependabot) * [alpaca-tc](https://github.com/alpaca-tc) +* [mayaeh](https://github.com/mayaeh) +* [renatolond](https://github.com/renatolond) * [nclm](https://github.com/nclm) * [ineffyble](https://github.com/ineffyble) -* [renatolond](https://github.com/renatolond) * [jeroenpraat](https://github.com/jeroenpraat) -* [mayaeh](https://github.com/mayaeh) * [blackle](https://github.com/blackle) * [Quent-in](https://github.com/Quent-in) * [JantsoP](https://github.com/JantsoP) +* [mabkenar](https://github.com/mabkenar) * [nullkal](https://github.com/nullkal) * [yookoala](https://github.com/yookoala) -* [mabkenar](https://github.com/mabkenar) -* [ysksn](https://github.com/ysksn) +* [Kjwon15](https://github.com/Kjwon15) * [shuheiktgw](https://github.com/shuheiktgw) * [ashfurrow](https://github.com/ashfurrow) -* [Kjwon15](https://github.com/Kjwon15) +* [Quenty31](https://github.com/Quenty31) * [zunda](https://github.com/zunda) * [eramdam](https://github.com/eramdam) -* [masarakki](https://github.com/masarakki) * [takayamaki](https://github.com/takayamaki) +* [masarakki](https://github.com/masarakki) * [ticky](https://github.com/ticky) -* [Quenty31](https://github.com/Quenty31) * [danhunsaker](https://github.com/danhunsaker) * [ThisIsMissEm](https://github.com/ThisIsMissEm) * [hcmiya](https://github.com/hcmiya) @@ -88,16 +91,19 @@ and provided thanks to the work of the following contributors: * [mistydemeo](https://github.com/mistydemeo) * [dunn](https://github.com/dunn) * [xqus](https://github.com/xqus) +* [hugogameiro](https://github.com/hugogameiro) * [pfm-eyesightjp](https://github.com/pfm-eyesightjp) * [fakenine](https://github.com/fakenine) * [tsuwatch](https://github.com/tsuwatch) * [victorhck](https://github.com/victorhck) +* [ashleyhull-versent](https://github.com/ashleyhull-versent) +* [kedamaDQ](https://github.com/kedamaDQ) * [puckipedia](https://github.com/puckipedia) * [fvh-P](https://github.com/fvh-P) * [contraexemplo](https://github.com/contraexemplo) -* [hugogameiro](https://github.com/hugogameiro) * [kazu9su](https://github.com/kazu9su) * [Komic](https://github.com/Komic) +* [lmorchard](https://github.com/lmorchard) * [diomed](https://github.com/diomed) * [ariasuni](https://github.com/ariasuni) * [Neetshin](mailto:neetshin@neetsh.in) @@ -105,7 +111,6 @@ and provided thanks to the work of the following contributors: * [ProgVal](https://github.com/ProgVal) * [valentin2105](https://github.com/valentin2105) * [yuntan](https://github.com/yuntan) -* [ashleyhull-versent](https://github.com/ashleyhull-versent) * [goofy-bz](mailto:goofy@babelzilla.org) * [kadiix](https://github.com/kadiix) * [kodacs](https://github.com/kodacs) @@ -119,35 +124,37 @@ and provided thanks to the work of the following contributors: * [northerner](https://github.com/northerner) * [fhemberger](https://github.com/fhemberger) * [greysteil](https://github.com/greysteil) -* [hnrysmth](https://github.com/hnrysmth) +* [hensmith](https://github.com/hensmith) +* [hinaloe](https://github.com/hinaloe) * [d6rkaiz](https://github.com/d6rkaiz) +* [Reverite](https://github.com/Reverite) * [JMendyk](https://github.com/JMendyk) * [JohnD28](https://github.com/JohnD28) * [znz](https://github.com/znz) * [Naouak](https://github.com/Naouak) +* [pawelngei](https://github.com/pawelngei) * [reneklacan](https://github.com/reneklacan) * [ekiru](https://github.com/ekiru) * [tcitworld](https://github.com/tcitworld) * [geta6](https://github.com/geta6) * [happycoloredbanana](https://github.com/happycoloredbanana) -* [kedamaDQ](https://github.com/kedamaDQ) * [leopku](https://github.com/leopku) * [SansPseudoFix](https://github.com/SansPseudoFix) * [tomfhowe](https://github.com/tomfhowe) * [noraworld](https://github.com/noraworld) * [theboss](https://github.com/theboss) * [178inaba](https://github.com/178inaba) +* [Aditoo17](https://github.com/Aditoo17) * [alyssais](https://github.com/alyssais) * [kodnaplakal](https://github.com/kodnaplakal) * [stalker314314](https://github.com/stalker314314) * [huertanix](https://github.com/huertanix) * [genesixx](https://github.com/genesixx) * [halkeye](https://github.com/halkeye) -* [hinaloe](https://github.com/hinaloe) * [treby](https://github.com/treby) -* [Reverite](https://github.com/Reverite) * [jpdevries](https://github.com/jpdevries) -* [H-C-F](https://github.com/H-C-F) +* [gdpelican](https://github.com/gdpelican) +* [kmichl](https://github.com/kmichl) * [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name) * [saper](https://github.com/saper) * [nevillepark](https://github.com/nevillepark) @@ -157,6 +164,7 @@ and provided thanks to the work of the following contributors: * [Ram Lmn](mailto:ramlmn@users.noreply.github.com) * [harukasan](https://github.com/harukasan) * [stamak](https://github.com/stamak) +* [noellabo](https://github.com/noellabo) * [Technowix](mailto:technowix@users.noreply.github.com) * [Eychics](https://github.com/Eychics) * [Thor Harald Johansen](mailto:thj@thj.no) @@ -165,22 +173,27 @@ and provided thanks to the work of the following contributors: * [Valentin_NC](mailto:valentin.ouvrard@nautile.sarl) * [R0ckweb](https://github.com/R0ckweb) * [caasi](https://github.com/caasi) +* [chr-1x](https://github.com/chr-1x) * [esetomo](https://github.com/esetomo) * [foxiehkins](https://github.com/foxiehkins) * [hoodie](mailto:hoodiekitten@outlook.com) * [luzi82](https://github.com/luzi82) * [duxovni](https://github.com/duxovni) +* [trwnh](https://github.com/trwnh) * [unsmell](https://github.com/unsmell) +* [valerauko](https://github.com/valerauko) * [chriswmartin](https://github.com/chriswmartin) * [vahnj](https://github.com/vahnj) * [ikuradon](https://github.com/ikuradon) * [AndreLewin](https://github.com/AndreLewin) * [rinsuki](https://github.com/rinsuki) +* [0xflotus](https://github.com/0xflotus) * [redtachyons](https://github.com/redtachyons) * [thurloat](https://github.com/thurloat) * [aaribaud](https://github.com/aaribaud) * [Andrew](mailto:andrewlchronister@gmail.com) * [estuans](https://github.com/estuans) +* [BenLubar](https://github.com/BenLubar) * [dissolve](https://github.com/dissolve) * [PurpleBooth](https://github.com/PurpleBooth) * [bradurani](https://github.com/bradurani) @@ -192,7 +205,7 @@ and provided thanks to the work of the following contributors: * [cdutson](https://github.com/cdutson) * [farlistener](https://github.com/farlistener) * [DavidLibeau](https://github.com/DavidLibeau) -* [SirCmpwn](https://github.com/SirCmpwn) +* [ddevault](https://github.com/ddevault) * [Fjoerfoks](https://github.com/Fjoerfoks) * [fmauNeko](https://github.com/fmauNeko) * [gloaec](https://github.com/gloaec) @@ -207,6 +220,7 @@ and provided thanks to the work of the following contributors: * [jasonrhodes](https://github.com/jasonrhodes) * [Jason Snell](mailto:jason@newrelic.com) * [jviide](https://github.com/jviide) +* [YuleZ](https://github.com/YuleZ) * [crakaC](https://github.com/crakaC) * [tkbky](https://github.com/tkbky) * [Kaylee](mailto:kaylee@codethat.sucks) @@ -223,10 +237,12 @@ and provided thanks to the work of the following contributors: * [petzah](https://github.com/petzah) * [ignisf](https://github.com/ignisf) * [raymestalez](https://github.com/raymestalez) +* [remram44](https://github.com/remram44) * [sascha-sl](https://github.com/sascha-sl) * [u1-liquid](https://github.com/u1-liquid) * [sim6](https://github.com/sim6) * [stemid](https://github.com/stemid) +* [sumdog](https://github.com/sumdog) * [ThomasLeister](https://github.com/ThomasLeister) * [mcat-ee](https://github.com/mcat-ee) * [tototoshi](https://github.com/tototoshi) @@ -243,7 +259,6 @@ and provided thanks to the work of the following contributors: * [aus-social](https://github.com/aus-social) * [imbsky](https://github.com/imbsky) * [bsky](mailto:me@imbsky.net) -* [chr-1x](https://github.com/chr-1x) * [codl](https://github.com/codl) * [cpsdqs](https://github.com/cpsdqs) * [barzamin](https://github.com/barzamin) @@ -252,6 +267,7 @@ and provided thanks to the work of the following contributors: * [ik11235](https://github.com/ik11235) * [kawax](https://github.com/kawax) * [007lva](https://github.com/007lva) +* [mbajur](https://github.com/mbajur) * [matsurai25](https://github.com/matsurai25) * [mecab](https://github.com/mecab) * [nicobz25](https://github.com/nicobz25) @@ -259,7 +275,6 @@ and provided thanks to the work of the following contributors: * [pinfort](https://github.com/pinfort) * [rbaumert](https://github.com/rbaumert) * [rhoio](https://github.com/rhoio) -* [trwnh](https://github.com/trwnh) * [usagi-f](https://github.com/usagi-f) * [vidarlee](https://github.com/vidarlee) * [vjackson725](https://github.com/vjackson725) @@ -269,11 +284,11 @@ and provided thanks to the work of the following contributors: * [Awea](https://github.com/Awea) * [halcy](https://github.com/halcy) * [naaaaaaaaaaaf](https://github.com/naaaaaaaaaaaf) -* [NecroTechno](https://github.com/NecroTechno) * [8398a7](https://github.com/8398a7) * [857b](https://github.com/857b) * [insom](https://github.com/insom) -* [Aditoo17](https://github.com/Aditoo17) +* [tachyons](https://github.com/tachyons) +* [Esteth](https://github.com/Esteth) * [unascribed](https://github.com/unascribed) * [Aguay-val](https://github.com/Aguay-val) * [Akihiko Odaki](mailto:nekomanma@pixiv.co.jp) @@ -283,6 +298,7 @@ and provided thanks to the work of the following contributors: * [alxrcs](https://github.com/alxrcs) * [console-cowboy](https://github.com/console-cowboy) * [pointlessone](https://github.com/pointlessone) +* [Alkarex](https://github.com/Alkarex) * [a2](https://github.com/a2) * [0xa](https://github.com/0xa) * [palindromordnilap](https://github.com/palindromordnilap) @@ -299,7 +315,6 @@ and provided thanks to the work of the following contributors: * [ayumin](https://github.com/ayumin) * [BaptisteGelez](https://github.com/BaptisteGelez) * [bzg](https://github.com/bzg) -* [BenLubar](https://github.com/BenLubar) * [benediktg](https://github.com/benediktg) * [blakebarnett](https://github.com/blakebarnett) * [bradj](https://github.com/bradj) @@ -341,6 +356,7 @@ and provided thanks to the work of the following contributors: * [espenronnevik](https://github.com/espenronnevik) * [Finariel](https://github.com/Finariel) * [siuying](https://github.com/siuying) +* [fwenzel](https://github.com/fwenzel) * [GenbuHase](https://github.com/GenbuHase) * [hattori6789](https://github.com/hattori6789) * [algernon](https://github.com/algernon) @@ -375,10 +391,9 @@ and provided thanks to the work of the following contributors: * [jguerder](https://github.com/jguerder) * [Jehops](https://github.com/Jehops) * [joshuap](https://github.com/joshuap) -* [YuleZ](https://github.com/YuleZ) * [Tiwy57](https://github.com/Tiwy57) * [xuv](https://github.com/xuv) -* [Jnsll](https://github.com/Jnsll) +* [June Sallou](mailto:jnsll@users.noreply.github.com) * [j0k3r](https://github.com/j0k3r) * [KEINOS](https://github.com/KEINOS) * [futoase](https://github.com/futoase) @@ -389,7 +404,6 @@ and provided thanks to the work of the following contributors: * [k0ta0uchi](https://github.com/k0ta0uchi) * [KrzysiekJ](https://github.com/KrzysiekJ) * [leowzukw](https://github.com/leowzukw) -* [lmorchard](https://github.com/lmorchard) * [Tak](https://github.com/Tak) * [cacheflow](https://github.com/cacheflow) * [ldidry](https://github.com/ldidry) @@ -426,6 +440,7 @@ and provided thanks to the work of the following contributors: * [lae](https://github.com/lae) * [Nanamachi](https://github.com/Nanamachi) * [orinthe](https://github.com/orinthe) +* [NecroTechno](https://github.com/NecroTechno) * [Dar13](https://github.com/Dar13) * [ngerakines](https://github.com/ngerakines) * [vonneudeck](https://github.com/vonneudeck) @@ -443,7 +458,6 @@ and provided thanks to the work of the following contributors: * [Pangoraw](https://github.com/Pangoraw) * [peterkeen](https://github.com/peterkeen) * [pgate](https://github.com/pgate) -* [remram44](https://github.com/remram44) * [retokromer](https://github.com/retokromer) * [rfwatson](https://github.com/rfwatson) * [rfreebern](https://github.com/rfreebern) @@ -455,19 +469,22 @@ and provided thanks to the work of the following contributors: * [sts10](https://github.com/sts10) * [skoji](https://github.com/skoji) * [ScienJus](https://github.com/ScienJus) -* [larkinscott](https://github.com/larkinscott) -* [imolein](https://github.com/imolein) -* [blinry](https://github.com/blinry) -* [Noiwex](https://github.com/Noiwex) -* [yuki764](https://github.com/yuki764) -* [shnjp](https://github.com/shnjp) -* [ernix](https://github.com/ernix) -* [rosylilly](https://github.com/rosylilly) -* [shouko](https://github.com/shouko) +* [Scott Larkin](mailto:scott@codeclimate.com) +* [Sebastian Hübner](mailto:imolein@users.noreply.github.com) +* [Sebastian Morr](mailto:sebastian@morr.cc) +* [Sergei Č](mailto:noiwex1911@gmail.com) +* [Setuu](mailto:yuki764setuu@gmail.com) +* [Shaun Gillies](mailto:me@shaungillies.net) +* [Shin Adachi](mailto:shn@glucose.jp) +* [Shin Kojima](mailto:shin@kojima.org) +* [Sho Kusano](mailto:rosylilly@aduca.org) +* [Shouko Yu](mailto:imshouko@gmail.com) * [Sina Mashek](mailto:sina@mashek.xyz) -* [sossii](https://github.com/sossii) +* [Sir-Boops](mailto:admin@boops.me) +* [Soshi Kato](mailto:mail@sossii.com) * [Spanky](mailto:2788886+spankyworks@users.noreply.github.com) * [StefOfficiel](mailto:pichard.stephane@free.fr) +* [Steven Tappert](mailto:admin@dark-it.net) * [Svetlozar Todorov](mailto:svetlik@users.noreply.github.com) * [Sébastien Santoro](mailto:dereckson@espace-win.org) * [Tad Thorley](mailto:phaedryx@users.noreply.github.com) @@ -521,11 +538,13 @@ and provided thanks to the work of the following contributors: * [jacob](mailto:jacobherringtondeveloper@gmail.com) * [jenn kaplan](mailto:me@jkap.io) * [jirayudech](mailto:jirayudech@gmail.com) +* [jomo](mailto:github@jomo.tv) * [jooops](mailto:joops@autistici.org) * [jukper](mailto:jukkaperanto@gmail.com) * [jumoru](mailto:jumoru@mailbox.org) * [karlyeurl](mailto:karl.yeurl@gmail.com) * [kedama](mailto:32974885+kedamadq@users.noreply.github.com) +* [kodai](mailto:shirafuta.kodai@gmail.com) * [kuro5hin](mailto:rusty@kuro5hin.org) * [luzpaz](mailto:luzpaz@users.noreply.github.com) * [maxypy](mailto:maxime@mpigou.fr) @@ -533,6 +552,7 @@ and provided thanks to the work of the following contributors: * [mimikun](mailto:dzdzble_effort_311@outlook.jp) * [mshrtkch](mailto:mshrtkch@users.noreply.github.com) * [muan](mailto:muan@github.com) +* [namelessGonbai](mailto:43787036+namelessgonbai@users.noreply.github.com) * [neetshin](mailto:neetshin@neetsh.in) * [nightpool](mailto:nightpool@users.noreply.github.com) * [rch850](mailto:rich850@gmail.com) @@ -564,3 +584,248 @@ and provided thanks to the work of the following contributors: * [雨宮美羽](mailto:k737566@gmail.com) This document is provided for informational purposes only. Since it is only updated once per release, the version you are looking at may be currently out of date. To see the full list of contributors, consider looking at the [git history](https://github.com/tootsuite/mastodon/graphs/contributors) instead. + +## Translators + +Following people have contributed to translation of Mastodon: + +- **Arabic** + - ButterflyOfFire +- **Asturian** + - ButterflyOfFire + - Enol P. +- **Basque** + - Aitzol + - ButterflyOfFire + - Gorka Azkarate + - Osoitz + - Peru Iparragirre +- **Bulgarian** + - ButterflyOfFire +- **Catalan** + - ButterflyOfFire + - Joan Montané + - Jose Luis + - spla +- **Chinese (Hong Kong)** + - ButterflyOfFire + - Luzi Leung +- **Chinese (Simplified)** + - Allen Zhong + - ButterflyOfFire + - SerCom_KC +- **Chinese (Traditional)** + - ButterflyOfFire + - James58899 + - Jeff Huang + - S1ttidoe477 + - SHA265 +- **Corsican** + - Alix D. R. + - ButterflyOfFire +- **Croatian** + - ButterflyOfFire +- **Czech** + - ButterflyOfFire + - Lorem Ipsum + - Marek Ľach +- **Danish** + - ButterflyOfFire + - Rasmus Sæderup +- **Dutch** + - ButterflyOfFire + - Jelv + - jeroenpraat + - rscmbbng +- **English** + - ButterflyOfFire + - Renato "Lond" Cerqueira +- **Esperanto** + - ButterflyOfFire + - Jeong Arm + - Martin Bodin + - Mélanie Chauvel + - Vanege + - tuxayo/Victor Grousset +- **Finnish** + - ButterflyOfFire + - Jonne Arjoranta + - S Heija + - Taru Luojola +- **French** + - Alda Marteau-Hardi + - Alix D. R. + - Baptiste Jonglez + - ButterflyOfFire + - Franck Paul + - Jean-Baptiste Holcroft + - Jonathan Chan + - Letiteuf55 + - Martin Bodin + - Mélanie Chauvel + - Olivier Humbert + - Paul Marques Mota + - Sylvhem + - Technowix + - Thibaut Girka + - Théodore + - azenet + - codl +- **Galician** + - ButterflyOfFire + - Xose M. + - manequim +- **Georgian** + - ButterflyOfFire +- **German** + - Benedikt Geißler + - ButterflyOfFire + - Daniel + - Eugen Rochko + - Koyu Berteon + - Patrick Figel + - Weblate Admin + - averageunicorn + - ePirat + - koyu + - larsreineke + - lilo +- **Greek** + - Antonis + - ButterflyOfFire + - Dimitris Maroulidis + - Konstantinos Grevenitis +- **Hebrew** + - ButterflyOfFire + - Ira + - Yaron Shahrabani +- **Hungarian** + - Adam Paszternak + - ButterflyOfFire + - Tibike Miklós +- **Ido** + - ButterflyOfFire +- **Indonesian** + - Alfiana Sibuea + - ButterflyOfFire + - Dito Kurnia Pratama + - Eirworks + - afachri + - se7entime +- **Italian** + - Alessandro Levati + - ButterflyOfFire + - Giuseppe Pignataro + - Stefano +- **Japanese** + - ButterflyOfFire + - Kumasun Morino + - Yamagishi Kazutoshi + - mayaeh + - osapon + - unarist + - 小鳥遊まりあ + - 森の子リスのミーコの大冒険 +- **Korean** + - ButterflyOfFire + - Jeong Arm + - Minori Hiraoka + - Yamagishi Kazutoshi +- **Malay** + - ButterflyOfFire + - Muhammad Nur Hidayat (MNH48) +- **Norwegian (old code)** + - ButterflyOfFire + - Espen Rønnevik + - Tale +- **Occitan** + - ButterflyOfFire + - Maxenç + - Quenti2 + - Quentí +- **Persian** + - ButterflyOfFire + - Masoud Abkenar +- **Polish** + - ButterflyOfFire + - Jakub Mendyk + - Marcin Mikołajczak + - Marek Ľach + - Stasiek Michalski + - krkk +- **Portuguese** + - ButterflyOfFire + - Hugo Gameiro + - manequim +- **Portuguese (Brazil)** + - André Andrade + - Anna e só + - ButterflyOfFire + - Renato "Lond" Cerqueira +- **Romanian** + - ButterflyOfFire + - adrianbblk +- **Russian** + - Andrew Zyabin + - ButterflyOfFire + - Evgeny Petrov + - Yaron Shahrabani +- **Serbian** + - Branko Kokanovic + - Burekz Finezt + - ButterflyOfFire +- **Serbian (latin)** + - ButterflyOfFire +- **Slovak** + - ButterflyOfFire + - Ivan Pleva + - Lorem Ipsum + - Marek Ľach + - Peter +- **Slovenian** + - ButterflyOfFire + - Kristijan Tkalec +- **Spanish** + - Angeles Broullón + - Antón López + - ButterflyOfFire + - Carlos Mondragon + - David Charte + - Emmanuel + - Lothar Wolf + - Pablo de la Concepción Sanz +- **Swedish** + - ButterflyOfFire + - Elias Mårtenson + - Isak Holmström + - Shellkr + - Stefan Midjich + - Tim Stahel +- **Telugu** + - ButterflyOfFire + - Joseph Nuthalapati + - Ranjith Tellakula + - avndp +- **Thai** + - ButterflyOfFire +- **Turkish** + - ButterflyOfFire +- **Ukrainian** + - ButterflyOfFire + - Ivan Verchenko + - alexcleac +- **Welsh** + - ButterflyOfFire + - Jaz-Michael King + - Kevin Beynon + - Owain Rhys Lewis + - Renato "Lond" Cerqueira + - Rhoslyn Prys + - carl morris +- **Armenian** + - ButterflyOfFire +- **Latvian** + - ButterflyOfFire +- **Tamil** + - ButterflyOfFire + - Prasanna Venkadesh diff --git a/CHANGELOG.md b/CHANGELOG.md index cb8bf3272..3bafbe1e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,132 +3,328 @@ Changelog All notable changes to this project will be documented in this file. +## [2.7.0] - 2019-01-20 +### Added + +- Add link for adding a user to a list from their profile ([namelessGonbai](https://github.com/tootsuite/mastodon/pull/9062)) +- Add joining several hashtags in a single column ([gdpelican](https://github.com/tootsuite/mastodon/pull/8904)) +- Add volume sliders for videos ([sumdog](https://github.com/tootsuite/mastodon/pull/9366)) +- Add a tooltip explaining what a locked account is ([pawelngei](https://github.com/tootsuite/mastodon/pull/9403)) +- Add preloaded cache for common JSON-LD contexts ([ThibG](https://github.com/tootsuite/mastodon/pull/9412)) +- Add profile directory ([Gargron](https://github.com/tootsuite/mastodon/pull/9427)) +- Add setting to not group reblogs in home feed ([ThibG](https://github.com/tootsuite/mastodon/pull/9248)) +- Add admin ability to remove a user's header image ([ThibG](https://github.com/tootsuite/mastodon/pull/9495)) +- Add account hashtags to ActivityPub actor JSON ([Gargron](https://github.com/tootsuite/mastodon/pull/9450)) +- Add error message for avatar image that's too large ([sumdog](https://github.com/tootsuite/mastodon/pull/9518)) +- Add notification quick-filter bar ([pawelngei](https://github.com/tootsuite/mastodon/pull/9399)) +- Add new first-time tutorial ([Gargron](https://github.com/tootsuite/mastodon/pull/9531)) +- Add moderation warnings ([Gargron](https://github.com/tootsuite/mastodon/pull/9519)) +- Add emoji codepoint mappings for v11.0 ([Gargron](https://github.com/tootsuite/mastodon/pull/9618)) +- Add REST API for creating an account ([Gargron](https://github.com/tootsuite/mastodon/pull/9572)) +- Add support for Malayalam in language filter ([tachyons](https://github.com/tootsuite/mastodon/pull/9624)) +- Add exclude_reblogs option to account statuses API ([Gargron](https://github.com/tootsuite/mastodon/pull/9640)) +- Add local followers page to admin account UI ([chr-1x](https://github.com/tootsuite/mastodon/pull/9610)) +- Add healthcheck commands to docker-compose.yml ([BenLubar](https://github.com/tootsuite/mastodon/pull/9143)) +- Add handler for Move activity to migrate followers ([Gargron](https://github.com/tootsuite/mastodon/pull/9629)) +- Add CSV export for lists and domain blocks ([Gargron](https://github.com/tootsuite/mastodon/pull/9677)) +- Add `tootctl accounts follow ACCT` ([Gargron](https://github.com/tootsuite/mastodon/pull/9414)) +- Add scheduled statuses ([Gargron](https://github.com/tootsuite/mastodon/pull/9706)) +- Add immutable caching for S3 objects ([nolanlawson](https://github.com/tootsuite/mastodon/pull/9722)) +- Add cache to custom emojis API ([Gargron](https://github.com/tootsuite/mastodon/pull/9732)) +- Add preview cards to non-detailed statuses on public pages ([Gargron](https://github.com/tootsuite/mastodon/pull/9714)) +- Add `mod` and `moderator` to list of default reserved usernames ([Gargron](https://github.com/tootsuite/mastodon/pull/9713)) +- Add quick links to the admin interface in the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/8545)) +- Add `tootctl domains crawl` ([Gargron](https://github.com/tootsuite/mastodon/pull/9809)) +- Add attachment list fallback to public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/9780)) +- Add `tootctl --version` ([Gargron](https://github.com/tootsuite/mastodon/pull/9835)) +- Add information about how to opt-in to the directory on the directory ([Gargron](https://github.com/tootsuite/mastodon/pull/9834)) +- Add timeouts for S3 ([Gargron](https://github.com/tootsuite/mastodon/pull/9842)) +- Add support for non-public reblogs from ActivityPub ([Gargron](https://github.com/tootsuite/mastodon/pull/9841)) +- Add sending of `Reject` activity when sending a `Block` activity ([ThibG](https://github.com/tootsuite/mastodon/pull/9811)) + +### Changed + +- Temporarily pause timeline if mouse moved recently ([lmorchard](https://github.com/tootsuite/mastodon/pull/9200)) +- Change the password form order ([mayaeh](https://github.com/tootsuite/mastodon/pull/9267)) +- Redesign admin UI for accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/9340), [Gargron](https://github.com/tootsuite/mastodon/pull/9643)) +- Redesign admin UI for instances/domain blocks ([Gargron](https://github.com/tootsuite/mastodon/pull/9645)) +- Swap avatar and header input fields in profile page ([ThibG](https://github.com/tootsuite/mastodon/pull/9271)) +- When posting in mobile mode, go back to previous history location ([ThibG](https://github.com/tootsuite/mastodon/pull/9502)) +- Split out is_changing_upload from is_submitting ([ThibG](https://github.com/tootsuite/mastodon/pull/9536)) +- Back to the getting-started when pins the timeline. ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/9561)) +- Allow unauthenticated REST API access to GET /api/v1/accounts/:id/statuses ([Gargron](https://github.com/tootsuite/mastodon/pull/9573)) +- Limit maximum visibility of local silenced users to unlisted ([ThibG](https://github.com/tootsuite/mastodon/pull/9583)) +- Change API error message for unconfirmed accounts ([noellabo](https://github.com/tootsuite/mastodon/pull/9625)) +- Change the icon to "reply-all" when it's a reply to other accounts ([mayaeh](https://github.com/tootsuite/mastodon/pull/9378)) +- Do not ignore federated reports targetting already-reported accounts ([ThibG](https://github.com/tootsuite/mastodon/pull/9534)) +- Upgrade default Ruby version to 2.6.0 ([Gargron](https://github.com/tootsuite/mastodon/pull/9688)) +- Change e-mail digest frequency ([Gargron](https://github.com/tootsuite/mastodon/pull/9689)) +- Change Docker images for Tor support in docker-compose.yml ([Sir-Boops](https://github.com/tootsuite/mastodon/pull/9438)) +- Display fallback link card thumbnail when none is given ([Gargron](https://github.com/tootsuite/mastodon/pull/9715)) +- Change account bio length validation to ignore mention domains and URLs ([Gargron](https://github.com/tootsuite/mastodon/pull/9717)) +- Use configured contact user for "anonymous" federation activities ([yukimochi](https://github.com/tootsuite/mastodon/pull/9661)) +- Change remote interaction dialog to use specific actions instead of generic "interact" ([Gargron](https://github.com/tootsuite/mastodon/pull/9743)) +- Always re-fetch public key when signature verification fails to support blind key rotation ([ThibG](https://github.com/tootsuite/mastodon/pull/9667)) +- Make replies to boosts impossible, connect reply to original status instead ([valerauko](https://github.com/tootsuite/mastodon/pull/9129)) +- Change e-mail MX validation to check both A and MX records against blacklist ([Gargron](https://github.com/tootsuite/mastodon/pull/9489)) +- Hide floating action button on search and getting started pages ([tmm576](https://github.com/tootsuite/mastodon/pull/9826)) +- Redesign public hashtag page to use a masonry layout ([Gargron](https://github.com/tootsuite/mastodon/pull/9822)) +- Use `summary` as summary instead of content warning for converted ActivityPub objects ([Gargron](https://github.com/tootsuite/mastodon/pull/9823)) +- Display a double reply arrow on public pages for toots that are replies ([ThibG](https://github.com/tootsuite/mastodon/pull/9808)) +- Change admin UI right panel size to be wider ([Kjwon15](https://github.com/tootsuite/mastodon/pull/9768)) + +### Removed + +- Remove links to bridge.joinmastodon.org (non-functional) ([Gargron](https://github.com/tootsuite/mastodon/pull/9608)) +- Remove LD-Signatures from activities that do not need them ([ThibG](https://github.com/tootsuite/mastodon/pull/9659)) + +### Fixed + +- Remove unused computation of reblog references from updateTimeline ([ThibG](https://github.com/tootsuite/mastodon/pull/9244)) +- Fix loaded embeds resetting if a status arrives from API again ([ThibG](https://github.com/tootsuite/mastodon/pull/9270)) +- Fix race condition causing shallow status with only a "favourited" attribute ([ThibG](https://github.com/tootsuite/mastodon/pull/9272)) +- Remove intermediary arrays when creating hash maps from results ([Gargron](https://github.com/tootsuite/mastodon/pull/9291)) +- Extract counters from accounts table to account_stats table to improve performance ([Gargron](https://github.com/tootsuite/mastodon/pull/9295)) +- Change identities id column to a bigint ([Gargron](https://github.com/tootsuite/mastodon/pull/9371)) +- Fix conversations API pagination ([ThibG](https://github.com/tootsuite/mastodon/pull/9407)) +- Improve account suspension speed and completeness ([Gargron](https://github.com/tootsuite/mastodon/pull/9290)) +- Fix thread depth computation in statuses_controller ([ThibG](https://github.com/tootsuite/mastodon/pull/9426)) +- Fix database deadlocks by moving account stats update outside transaction ([ThibG](https://github.com/tootsuite/mastodon/pull/9437)) +- Escape HTML in profile name preview in profile settings ([pawelngei](https://github.com/tootsuite/mastodon/pull/9446)) +- Use same CORS policy for /@:username and /users/:username ([ThibG](https://github.com/tootsuite/mastodon/pull/9485)) +- Make custom emoji domains case insensitive ([Esteth](https://github.com/tootsuite/mastodon/pull/9474)) +- Various fixes to scrollable lists and media gallery ([ThibG](https://github.com/tootsuite/mastodon/pull/9501)) +- Fix bootsnap cache directory being declared relatively ([Gargron](https://github.com/tootsuite/mastodon/pull/9511)) +- Fix timeline pagination in the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/9516)) +- Fix padding on dropdown elements in preferences ([ThibG](https://github.com/tootsuite/mastodon/pull/9517)) +- Make avatar and headers respect GIF autoplay settings ([ThibG](https://github.com/tootsuite/mastodon/pull/9515)) +- Do no retry Web Push workers if the server returns a 4xx response ([Gargron](https://github.com/tootsuite/mastodon/pull/9434)) +- Minor scrollable list fixes ([ThibG](https://github.com/tootsuite/mastodon/pull/9551)) +- Ignore low-confidence CharlockHolmes guesses when parsing link cards ([ThibG](https://github.com/tootsuite/mastodon/pull/9510)) +- Fix `tootctl accounts rotate` not updating public keys ([Gargron](https://github.com/tootsuite/mastodon/pull/9556)) +- Fix CSP / X-Frame-Options for media players ([jomo](https://github.com/tootsuite/mastodon/pull/9558)) +- Fix unnecessary loadMore calls when the end of a timeline has been reached ([ThibG](https://github.com/tootsuite/mastodon/pull/9581)) +- Skip mailer job retries when a record no longer exists ([Gargron](https://github.com/tootsuite/mastodon/pull/9590)) +- Fix composer not getting focus after reply confirmation dialog ([ThibG](https://github.com/tootsuite/mastodon/pull/9602)) +- Fix signature verification stoplight triggering on non-timeout errors ([Gargron](https://github.com/tootsuite/mastodon/pull/9617)) +- Fix ThreadResolveWorker getting queued with invalid URLs ([Gargron](https://github.com/tootsuite/mastodon/pull/9628)) +- Fix crash when clearing uninitialized timeline ([ThibG](https://github.com/tootsuite/mastodon/pull/9662)) +- Avoid duplicate work by merging ReplyDistributionWorker into DistributionWorker ([ThibG](https://github.com/tootsuite/mastodon/pull/9660)) +- Skip full text search if it fails, instead of erroring out completely ([Kjwon15](https://github.com/tootsuite/mastodon/pull/9654)) +- Fix profile metadata links not verifying correctly sometimes ([shrft](https://github.com/tootsuite/mastodon/pull/9673)) +- Ensure blocked user unfollows blocker if Block/Undo-Block activities are processed out of order ([ThibG](https://github.com/tootsuite/mastodon/pull/9687)) +- Fix unreadable text color in report modal for some statuses ([Gargron](https://github.com/tootsuite/mastodon/pull/9716)) +- Stop GIFV timeline preview explicitly when it's opened in modal ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/9749)) +- Fix scrollbar width compensation ([ThibG](https://github.com/tootsuite/mastodon/pull/9824)) +- Fix race conditions when processing deleted toots ([ThibG](https://github.com/tootsuite/mastodon/pull/9815)) +- Fix SSO issues on WebKit browsers by disabling Same-Site cookie again ([moritzheiber](https://github.com/tootsuite/mastodon/pull/9819)) +- Fix empty OEmbed error ([renatolond](https://github.com/tootsuite/mastodon/pull/9807)) +- Fix drag & drop modal not disappearing sometimes ([hinaloe](https://github.com/tootsuite/mastodon/pull/9797)) +- Fix statuses with content warnings being displayed in web push notifications sometimes ([ThibG](https://github.com/tootsuite/mastodon/pull/9778)) +- Fix scroll-to-detailed status not working on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/9773)) +- Fix media modal loading indicator ([ThibG](https://github.com/tootsuite/mastodon/pull/9771)) +- Fix hashtag search results not having a permalink fallback in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/9810)) +- Fix slightly cropped font on settings page dropdowns when using system font ([ariasuni](https://github.com/tootsuite/mastodon/pull/9839)) +- Fix not being able to drag & drop text into forms ([tmm576](https://github.com/tootsuite/mastodon/pull/9840)) + +### Security + +- Sanitize and sandbox toot embeds in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/9552)) +- Add tombstones for remote statuses to prevent replay attacks ([ThibG](https://github.com/tootsuite/mastodon/pull/9830)) + +## [2.6.5] - 2018-12-01 +### Changed + +- Change lists to display replies to others on the list and list owner ([ThibG](https://github.com/tootsuite/mastodon/pull/9324)) + +### Fixed + +- Fix failures caused by commonly-used JSON-LD contexts being unavailable ([ThibG](https://github.com/tootsuite/mastodon/pull/9412)) + +## [2.6.4] - 2018-11-30 +### Fixed + +- Fix yarn dependencies not installing due to yanked event-stream package ([Gargron](https://github.com/tootsuite/mastodon/pull/9401)) + +## [2.6.3] - 2018-11-30 +### Added + +- Add hyphen to characters allowed in remote usernames ([ThibG](https://github.com/tootsuite/mastodon/pull/9345)) + +### Changed + +- Change server user count to exclude suspended accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/9380)) + +### Fixed + +- Fix ffmpeg processing sometimes stalling due to overfilled stdout buffer ([hugogameiro](https://github.com/tootsuite/mastodon/pull/9368)) +- Fix missing DNS records raising the wrong kind of exception ([Gargron](https://github.com/tootsuite/mastodon/pull/9379)) +- Fix already queued deliveries still trying to reach inboxes marked as unavailable ([Gargron](https://github.com/tootsuite/mastodon/pull/9358)) + +### Security + +- Fix TLS handshake timeout not being enforced ([Gargron](https://github.com/tootsuite/mastodon/pull/9381)) + +## [2.6.2] - 2018-11-23 +### Added + +- Add Page to whitelisted ActivityPub types ([mbajur](https://github.com/tootsuite/mastodon/pull/9188)) +- Add 20px to column width in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/9227)) +- Add amount of freed disk space in `tootctl media remove` ([Gargron](https://github.com/tootsuite/mastodon/pull/9229), [Gargron](https://github.com/tootsuite/mastodon/pull/9239), [mayaeh](https://github.com/tootsuite/mastodon/pull/9288)) +- Add "Show thread" link to self-replies ([Gargron](https://github.com/tootsuite/mastodon/pull/9228)) + +### Changed + +- Change order of Atom and RSS links so Atom is first ([Alkarex](https://github.com/tootsuite/mastodon/pull/9302)) +- Change Nginx configuration for Nanobox apps ([danhunsaker](https://github.com/tootsuite/mastodon/pull/9310)) +- Change the follow action to appear instant in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/9220)) +- Change how the ActiveRecord connection is instantiated in on_worker_boot ([Gargron](https://github.com/tootsuite/mastodon/pull/9238)) +- Change `tootctl accounts cull` to always touch accounts so they can be skipped ([renatolond](https://github.com/tootsuite/mastodon/pull/9293)) +- Change mime type comparison to ignore JSON-LD profile ([valerauko](https://github.com/tootsuite/mastodon/pull/9179)) + +### Fixed + +- Fix web UI crash when conversation has no last status ([sammy8806](https://github.com/tootsuite/mastodon/pull/9207)) +- Fix follow limit validator reporting lower number past threshold ([Gargron](https://github.com/tootsuite/mastodon/pull/9230)) +- Fix form validation flash message color and input borders ([Gargron](https://github.com/tootsuite/mastodon/pull/9235)) +- Fix invalid twitter:player cards being displayed ([ThibG](https://github.com/tootsuite/mastodon/pull/9254)) +- Fix emoji update date being processed incorrectly ([ThibG](https://github.com/tootsuite/mastodon/pull/9255)) +- Fix playing embed resetting if status is reloaded in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/9270), [Gargron](https://github.com/tootsuite/mastodon/pull/9275)) +- Fix web UI crash when favouriting a deleted status ([ThibG](https://github.com/tootsuite/mastodon/pull/9272)) +- Fix intermediary arrays being created for hash maps ([Gargron](https://github.com/tootsuite/mastodon/pull/9291)) +- Fix filter ID not being a string in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/9303)) + +### Security + +- Fix multiple remote account deletions being able to deadlock the database ([Gargron](https://github.com/tootsuite/mastodon/pull/9292)) +- Fix HTTP connection timeout of 10s not being enforced ([Gargron](https://github.com/tootsuite/mastodon/pull/9329)) + ## [2.6.1] - 2018-10-30 ### Fixed -- Fix resolving resources by URL not working due to a regression in #9132 (#9171) -- Fix reducer error in web UI when a conversation has no last status (#9173) +- Fix resolving resources by URL not working due to a regression in [valerauko](https://github.com/tootsuite/mastodon/pull/9132) ([Gargron](https://github.com/tootsuite/mastodon/pull/9171)) +- Fix reducer error in web UI when a conversation has no last status ([Gargron](https://github.com/tootsuite/mastodon/pull/9173)) ## [2.6.0] - 2018-10-30 ### Added -- Add link ownership verification (#8703) -- Add conversations API (#8832) -- Add limit for the number of people that can be followed from one account (#8807) -- Add admin setting to customize mascot (#8766) -- Add support for more granular ActivityPub audiences from other software, i.e. circles (#8950, #9093, #9150) -- Add option to block all reports from a domain (#8830) -- Add user preference to always expand toots marked with content warnings (#8762) -- Add user preference to always hide all media (#8569) -- Add `force_login` param to OAuth authorize page (#8655) -- Add `tootctl accounts backup` (#8642, #8811) -- Add `tootctl accounts create` (#8642, #8811) -- Add `tootctl accounts cull` (#8642, #8811) -- Add `tootctl accounts delete` (#8642, #8811) -- Add `tootctl accounts modify` (#8642, #8811) -- Add `tootctl accounts refresh` (#8642, #8811) -- Add `tootctl feeds build` (#8642, #8811) -- Add `tootctl feeds clear` (#8642, #8811) -- Add `tootctl settings registrations open` (#8642, #8811) -- Add `tootctl settings registrations close` (#8642, #8811) -- Add `min_id` param to REST API to support backwards pagination (#8736) -- Add a confirmation dialog when hitting reply and the compose box isn't empty (#8893) -- Add PostgreSQL disk space growth tracking in PGHero (#8906) -- Add button for disabling local account to report quick actions bar (#9024) -- Add Czech language (#8594) -- Add `same-site` (`lax`) attribute to cookies (#8626) -- Add support for styled scrollbars in Firefox Nightly (#8653) -- Add highlight to the active tab in web UI profiles (#8673) -- Add auto-focus for comment textarea in report modal (#8689) -- Add auto-focus for emoji picker's search field (#8688) -- Add nginx and systemd templates to `dist/` directory (#8770) -- Add support for `/.well-known/change-password` (#8828) -- Add option to override FFMPEG binary path (#8855) -- Add `dns-prefetch` tag when using different host for assets or uploads (#8942) -- Add `description` meta tag (#8941) -- Add `Content-Security-Policy` header (#8957) -- Add cache for the instance info API (#8765) -- Add suggested follows to search screen in mobile layout (#9010) -- Add CORS header to `/.well-known/*` routes (#9083) -- Add `card` attribute to statuses returned from REST API (#9120) -- Add in-stream link preview (#9120) -- Add support for ActivityPub `Page` objects (#9121) +- Add link ownership verification ([Gargron](https://github.com/tootsuite/mastodon/pull/8703)) +- Add conversations API ([Gargron](https://github.com/tootsuite/mastodon/pull/8832)) +- Add limit for the number of people that can be followed from one account ([Gargron](https://github.com/tootsuite/mastodon/pull/8807)) +- Add admin setting to customize mascot ([ashleyhull-versent](https://github.com/tootsuite/mastodon/pull/8766)) +- Add support for more granular ActivityPub audiences from other software, i.e. circles ([Gargron](https://github.com/tootsuite/mastodon/pull/8950), [Gargron](https://github.com/tootsuite/mastodon/pull/9093), [Gargron](https://github.com/tootsuite/mastodon/pull/9150)) +- Add option to block all reports from a domain ([Gargron](https://github.com/tootsuite/mastodon/pull/8830)) +- Add user preference to always expand toots marked with content warnings ([webroo](https://github.com/tootsuite/mastodon/pull/8762)) +- Add user preference to always hide all media ([fvh-P](https://github.com/tootsuite/mastodon/pull/8569)) +- Add `force_login` param to OAuth authorize page ([Gargron](https://github.com/tootsuite/mastodon/pull/8655)) +- Add `tootctl accounts backup` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl accounts create` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl accounts cull` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl accounts delete` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl accounts modify` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl accounts refresh` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl feeds build` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl feeds clear` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl settings registrations open` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `tootctl settings registrations close` ([Gargron](https://github.com/tootsuite/mastodon/pull/8642), [Gargron](https://github.com/tootsuite/mastodon/pull/8811)) +- Add `min_id` param to REST API to support backwards pagination ([Gargron](https://github.com/tootsuite/mastodon/pull/8736)) +- Add a confirmation dialog when hitting reply and the compose box isn't empty ([ThibG](https://github.com/tootsuite/mastodon/pull/8893)) +- Add PostgreSQL disk space growth tracking in PGHero ([Gargron](https://github.com/tootsuite/mastodon/pull/8906)) +- Add button for disabling local account to report quick actions bar ([Gargron](https://github.com/tootsuite/mastodon/pull/9024)) +- Add Czech language ([Aditoo17](https://github.com/tootsuite/mastodon/pull/8594)) +- Add `same-site` (`lax`) attribute to cookies ([sorin-davidoi](https://github.com/tootsuite/mastodon/pull/8626)) +- Add support for styled scrollbars in Firefox Nightly ([sorin-davidoi](https://github.com/tootsuite/mastodon/pull/8653)) +- Add highlight to the active tab in web UI profiles ([rhoio](https://github.com/tootsuite/mastodon/pull/8673)) +- Add auto-focus for comment textarea in report modal ([ThibG](https://github.com/tootsuite/mastodon/pull/8689)) +- Add auto-focus for emoji picker's search field ([ThibG](https://github.com/tootsuite/mastodon/pull/8688)) +- Add nginx and systemd templates to `dist/` directory ([Gargron](https://github.com/tootsuite/mastodon/pull/8770)) +- Add support for `/.well-known/change-password` ([Gargron](https://github.com/tootsuite/mastodon/pull/8828)) +- Add option to override FFMPEG binary path ([sascha-sl](https://github.com/tootsuite/mastodon/pull/8855)) +- Add `dns-prefetch` tag when using different host for assets or uploads ([Gargron](https://github.com/tootsuite/mastodon/pull/8942)) +- Add `description` meta tag ([Gargron](https://github.com/tootsuite/mastodon/pull/8941)) +- Add `Content-Security-Policy` header ([ThibG](https://github.com/tootsuite/mastodon/pull/8957)) +- Add cache for the instance info API ([ykzts](https://github.com/tootsuite/mastodon/pull/8765)) +- Add suggested follows to search screen in mobile layout ([Gargron](https://github.com/tootsuite/mastodon/pull/9010)) +- Add CORS header to `/.well-known/*` routes ([BenLubar](https://github.com/tootsuite/mastodon/pull/9083)) +- Add `card` attribute to statuses returned from REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/9120)) +- Add in-stream link preview ([Gargron](https://github.com/tootsuite/mastodon/pull/9120)) +- Add support for ActivityPub `Page` objects ([mbajur](https://github.com/tootsuite/mastodon/pull/9121)) ### Changed -- Change forms design (#8703) -- Change reports overview to group by target account (#8674) -- Change web UI to show "read more" link on overly long in-stream statuses (#8205) -- Change design of direct messages column (#8832, #9022) -- Change home timelines to exclude DMs (#8940) -- Change list timelines to exclude all replies (#8683) -- Change admin accounts UI default sort to most recent (#8813) -- Change documentation URL in the UI (#8898) -- Change style of success and failure messages (#8973) -- Change DM filtering to always allow DMs from staff (#8993) -- Change recommended Ruby version to 2.5.3 (#9003) -- Change docker-compose default to persist volumes in current directory (#9055) -- Change character counters on edit profile page to input length limit (#9100) -- Change notification filtering to always let through messages from staff (#9152) -- Change "hide boosts from user" function also hiding notifications about boosts (#9147) -- Change CSS `detailed-status__wrapper` class actually wrap the detailed status (#8547) +- Change forms design ([Gargron](https://github.com/tootsuite/mastodon/pull/8703)) +- Change reports overview to group by target account ([Gargron](https://github.com/tootsuite/mastodon/pull/8674)) +- Change web UI to show "read more" link on overly long in-stream statuses ([lanodan](https://github.com/tootsuite/mastodon/pull/8205)) +- Change design of direct messages column ([Gargron](https://github.com/tootsuite/mastodon/pull/8832), [Gargron](https://github.com/tootsuite/mastodon/pull/9022)) +- Change home timelines to exclude DMs ([Gargron](https://github.com/tootsuite/mastodon/pull/8940)) +- Change list timelines to exclude all replies ([cbayerlein](https://github.com/tootsuite/mastodon/pull/8683)) +- Change admin accounts UI default sort to most recent ([Gargron](https://github.com/tootsuite/mastodon/pull/8813)) +- Change documentation URL in the UI ([Gargron](https://github.com/tootsuite/mastodon/pull/8898)) +- Change style of success and failure messages ([Gargron](https://github.com/tootsuite/mastodon/pull/8973)) +- Change DM filtering to always allow DMs from staff ([qguv](https://github.com/tootsuite/mastodon/pull/8993)) +- Change recommended Ruby version to 2.5.3 ([zunda](https://github.com/tootsuite/mastodon/pull/9003)) +- Change docker-compose default to persist volumes in current directory ([Gargron](https://github.com/tootsuite/mastodon/pull/9055)) +- Change character counters on edit profile page to input length limit ([Gargron](https://github.com/tootsuite/mastodon/pull/9100)) +- Change notification filtering to always let through messages from staff ([Gargron](https://github.com/tootsuite/mastodon/pull/9152)) +- Change "hide boosts from user" function also hiding notifications about boosts ([ThibG](https://github.com/tootsuite/mastodon/pull/9147)) +- Change CSS `detailed-status__wrapper` class actually wrap the detailed status ([trwnh](https://github.com/tootsuite/mastodon/pull/8547)) ### Deprecated -- `GET /api/v1/timelines/direct` → `GET /api/v1/conversations` (#8832) -- `POST /api/v1/notifications/dismiss` → `POST /api/v1/notifications/:id/dismiss` (#8905) -- `GET /api/v1/statuses/:id/card` → `card` attributed included in status (#9120) +- `GET /api/v1/timelines/direct` → `GET /api/v1/conversations` ([Gargron](https://github.com/tootsuite/mastodon/pull/8832)) +- `POST /api/v1/notifications/dismiss` → `POST /api/v1/notifications/:id/dismiss` ([Gargron](https://github.com/tootsuite/mastodon/pull/8905)) +- `GET /api/v1/statuses/:id/card` → `card` attributed included in status ([Gargron](https://github.com/tootsuite/mastodon/pull/9120)) ### Removed -- Remove "on this device" label in column push settings (#8704) -- Remove rake tasks in favour of tootctl commands (#8675) +- Remove "on this device" label in column push settings ([rhoio](https://github.com/tootsuite/mastodon/pull/8704)) +- Remove rake tasks in favour of tootctl commands ([Gargron](https://github.com/tootsuite/mastodon/pull/8675)) ### Fixed -- Fix remote statuses using instance's default locale if no language given (#8861) -- Fix streaming API not exiting when port or socket is unavailable (#9023) -- Fix network calls being performed in database transaction in ActivityPub handler (#8951) -- Fix dropdown arrow position (#8637) -- Fix first element of dropdowns being focused even if not using keyboard (#8679) -- Fix tootctl requiring `bundle exec` invocation (#8619) -- Fix public pages not using animation preference for avatars (#8614) -- Fix OEmbed/OpenGraph cards not understanding relative URLs (#8669) -- Fix some dark emojis not having a white outline (#8597) -- Fix media description not being displayed in various media modals (#8678) -- Fix generated URLs of desktop notifications missing base URL (#8758) -- Fix RTL styles (#8764, #8767, #8823, #8897, #9005, #9007, #9018, #9021, #9145, #9146) -- Fix crash in streaming API when tag param missing (#8955) -- Fix hotkeys not working when no element is focused (#8998) -- Fix some hotkeys not working on detailed status view (#9006) -- Fix og:url on status pages (#9047) -- Fix upload option buttons only being visible on hover (#9074) -- Fix tootctl not returning exit code 1 on wrong arguments (#9094) -- Fix preview cards for appearing for profiles mentioned in toot (#6934, #9158) -- Fix local accounts sometimes being duplicated as faux-remote (#9109) -- Fix emoji search when the shortcode has multiple separators (#9124) -- Fix dropdowns sometimes being partially obscured by other elements (#9126) -- Fix cache not updating when reply/boost/favourite counters or media sensitivity update (#9119) -- Fix empty display name precedence over username in web UI (#9163) -- Fix td instead of th in sessions table header (#9162) -- Fix handling of content types with profile (#9132) +- Fix remote statuses using instance's default locale if no language given ([Kjwon15](https://github.com/tootsuite/mastodon/pull/8861)) +- Fix streaming API not exiting when port or socket is unavailable ([Gargron](https://github.com/tootsuite/mastodon/pull/9023)) +- Fix network calls being performed in database transaction in ActivityPub handler ([Gargron](https://github.com/tootsuite/mastodon/pull/8951)) +- Fix dropdown arrow position ([ThibG](https://github.com/tootsuite/mastodon/pull/8637)) +- Fix first element of dropdowns being focused even if not using keyboard ([ThibG](https://github.com/tootsuite/mastodon/pull/8679)) +- Fix tootctl requiring `bundle exec` invocation ([abcang](https://github.com/tootsuite/mastodon/pull/8619)) +- Fix public pages not using animation preference for avatars ([renatolond](https://github.com/tootsuite/mastodon/pull/8614)) +- Fix OEmbed/OpenGraph cards not understanding relative URLs ([ThibG](https://github.com/tootsuite/mastodon/pull/8669)) +- Fix some dark emojis not having a white outline ([ThibG](https://github.com/tootsuite/mastodon/pull/8597)) +- Fix media description not being displayed in various media modals ([ThibG](https://github.com/tootsuite/mastodon/pull/8678)) +- Fix generated URLs of desktop notifications missing base URL ([GenbuHase](https://github.com/tootsuite/mastodon/pull/8758)) +- Fix RTL styles ([mabkenar](https://github.com/tootsuite/mastodon/pull/8764), [mabkenar](https://github.com/tootsuite/mastodon/pull/8767), [mabkenar](https://github.com/tootsuite/mastodon/pull/8823), [mabkenar](https://github.com/tootsuite/mastodon/pull/8897), [mabkenar](https://github.com/tootsuite/mastodon/pull/9005), [mabkenar](https://github.com/tootsuite/mastodon/pull/9007), [mabkenar](https://github.com/tootsuite/mastodon/pull/9018), [mabkenar](https://github.com/tootsuite/mastodon/pull/9021), [mabkenar](https://github.com/tootsuite/mastodon/pull/9145), [mabkenar](https://github.com/tootsuite/mastodon/pull/9146)) +- Fix crash in streaming API when tag param missing ([Gargron](https://github.com/tootsuite/mastodon/pull/8955)) +- Fix hotkeys not working when no element is focused ([ThibG](https://github.com/tootsuite/mastodon/pull/8998)) +- Fix some hotkeys not working on detailed status view ([ThibG](https://github.com/tootsuite/mastodon/pull/9006)) +- Fix og:url on status pages ([ThibG](https://github.com/tootsuite/mastodon/pull/9047)) +- Fix upload option buttons only being visible on hover ([Gargron](https://github.com/tootsuite/mastodon/pull/9074)) +- Fix tootctl not returning exit code 1 on wrong arguments ([sascha-sl](https://github.com/tootsuite/mastodon/pull/9094)) +- Fix preview cards for appearing for profiles mentioned in toot ([ThibG](https://github.com/tootsuite/mastodon/pull/6934), [ThibG](https://github.com/tootsuite/mastodon/pull/9158)) +- Fix local accounts sometimes being duplicated as faux-remote ([Gargron](https://github.com/tootsuite/mastodon/pull/9109)) +- Fix emoji search when the shortcode has multiple separators ([ThibG](https://github.com/tootsuite/mastodon/pull/9124)) +- Fix dropdowns sometimes being partially obscured by other elements ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/9126)) +- Fix cache not updating when reply/boost/favourite counters or media sensitivity update ([Gargron](https://github.com/tootsuite/mastodon/pull/9119)) +- Fix empty display name precedence over username in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/9163)) +- Fix td instead of th in sessions table header ([Gargron](https://github.com/tootsuite/mastodon/pull/9162)) +- Fix handling of content types with profile ([valerauko](https://github.com/tootsuite/mastodon/pull/9132)) ## [2.5.2] - 2018-10-12 ### Security -- Fix XSS vulnerability (#8959) +- Fix XSS vulnerability ([Gargron](https://github.com/tootsuite/mastodon/pull/8959)) ## [2.5.1] - 2018-10-07 ### Fixed -- Fix database migrations for PostgreSQL below 9.5 (#8903) -- Fix class autoloading issue in ActivityPub Create handler (#8820) -- Fix cache statistics not being sent via statsd when statsd enabled (#8831) -- Bump puma from 3.11.4 to 3.12.0 (#8883) +- Fix database migrations for PostgreSQL below 9.5 ([Gargron](https://github.com/tootsuite/mastodon/pull/8903)) +- Fix class autoloading issue in ActivityPub Create handler ([Gargron](https://github.com/tootsuite/mastodon/pull/8820)) +- Fix cache statistics not being sent via statsd when statsd enabled ([ykzts](https://github.com/tootsuite/mastodon/pull/8831)) +- Bump puma from 3.11.4 to 3.12.0 ([dependabot[bot]](https://github.com/tootsuite/mastodon/pull/8883)) ### Security -- Fix some local images not having their EXIF metadata stripped on upload (#8714) -- Fix being able to enable a disabled relay via ActivityPub Accept handler (#8864) -- Bump nokogiri from 1.8.4 to 1.8.5 (#8881) -- Fix being able to report statuses not belonging to the reported account (#8916) +- Fix some local images not having their EXIF metadata stripped on upload ([ThibG](https://github.com/tootsuite/mastodon/pull/8714)) +- Fix being able to enable a disabled relay via ActivityPub Accept handler ([ThibG](https://github.com/tootsuite/mastodon/pull/8864)) +- Bump nokogiri from 1.8.4 to 1.8.5 ([dependabot[bot]](https://github.com/tootsuite/mastodon/pull/8881)) +- Fix being able to report statuses not belonging to the reported account ([ThibG](https://github.com/tootsuite/mastodon/pull/8916)) diff --git a/Dockerfile b/Dockerfile index 9c53b4145..190905337 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -FROM node:8.12.0-alpine as node -FROM ruby:2.4.5-alpine3.8 +FROM node:8.15-alpine as node +FROM ruby:2.6-alpine3.8 LABEL maintainer="https://github.com/tootsuite/mastodon" \ description="Your self-hosted, globally interconnected microblogging community" @@ -31,6 +31,8 @@ RUN apk -U upgrade \ libidn-dev \ libressl \ libtool \ + libxml2-dev \ + libxslt-dev \ postgresql-dev \ protobuf-dev \ python \ @@ -43,6 +45,8 @@ RUN apk -U upgrade \ imagemagick \ libidn \ libpq \ + libxml2 \ + libxslt \ protobuf \ tini \ tzdata \ @@ -64,7 +68,7 @@ RUN apk -U upgrade \ COPY Gemfile Gemfile.lock package.json yarn.lock .yarnclean /mastodon/ -RUN bundle config build.nokogiri --with-iconv-lib=/usr/local/lib --with-iconv-include=/usr/local/include \ +RUN bundle config build.nokogiri --use-system-libraries --with-iconv-lib=/usr/local/lib --with-iconv-include=/usr/local/include \ && bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without test development \ && yarn install --pure-lockfile --ignore-engines \ && yarn cache clean diff --git a/Gemfile b/Gemfile index bf23015e6..d17ff1a51 100644 --- a/Gemfile +++ b/Gemfile @@ -1,21 +1,21 @@ # frozen_string_literal: true source 'https://rubygems.org' -ruby '>= 2.3.0', '< 2.6.0' +ruby '>= 2.4.0', '< 2.7.0' gem 'pkg-config', '~> 1.3' gem 'puma', '~> 3.12' -gem 'rails', '~> 5.2.1' +gem 'rails', '~> 5.2.2' gem 'thor', '~> 0.20' gem 'hamlit-rails', '~> 0.2' gem 'pg', '~> 1.1' gem 'makara', '~> 0.4' gem 'pghero', '~> 2.2' -gem 'dotenv-rails', '~> 2.5' +gem 'dotenv-rails', '~> 2.6' -gem 'aws-sdk-s3', '~> 1.23', require: false +gem 'aws-sdk-s3', '~> 1.30', require: false gem 'fog-core', '<= 2.1.0' gem 'fog-openstack', '~> 0.3', require: false gem 'paperclip', '~> 6.0' @@ -29,7 +29,7 @@ gem 'browser' gem 'charlock_holmes', '~> 0.7.6' gem 'iso-639' gem 'chewy', '~> 5.0' -gem 'cld3', '~> 3.2.0' +gem 'cld3', '~> 3.2.3' gem 'devise', '~> 4.5' gem 'devise-two-factor', '~> 3.0' @@ -40,7 +40,7 @@ end gem 'net-ldap', '~> 0.10' gem 'omniauth-cas', '~> 1.1' gem 'omniauth-saml', '~> 1.10' -gem 'omniauth', '~> 1.2' +gem 'omniauth', '~> 1.9' gem 'doorkeeper', '~> 5.0' gem 'fast_blank', '~> 1.0' @@ -52,12 +52,12 @@ gem 'htmlentities', '~> 4.3' gem 'http', '~> 3.3' gem 'http_accept_language', '~> 2.1' gem 'http_parser.rb', '~> 0.6', git: 'https://github.com/tmm1/http_parser.rb', ref: '54b17ba8c7d8d20a16dfc65d1775241833219cf2' -gem 'httplog', '~> 1.1' +gem 'httplog', '~> 1.2' gem 'idn-ruby', require: 'idn' gem 'kaminari', '~> 1.1' gem 'link_header', '~> 0.0' gem 'mime-types', '~> 3.2', require: 'mime/types/columnar' -gem 'nokogiri', '~> 1.8' +gem 'nokogiri', '~> 1.10' gem 'nsa', '~> 0.2' gem 'oj', '~> 3.7' gem 'ostatus2', '~> 2.0' @@ -69,27 +69,28 @@ gem 'rack-attack', '~> 5.4' gem 'rack-cors', '~> 1.0', require: 'rack/cors' gem 'rails-i18n', '~> 5.1' gem 'rails-settings-cached', '~> 0.6' -gem 'redis', '~> 4.0', require: ['redis', 'redis/connection/hiredis'] +gem 'redis', '~> 4.1', require: ['redis', 'redis/connection/hiredis'] gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'rqrcode', '~> 0.10' gem 'sanitize', '~> 5.0' gem 'sidekiq', '~> 5.2' gem 'sidekiq-scheduler', '~> 3.0' -gem 'sidekiq-unique-jobs', '~> 5.0' -gem 'sidekiq-bulk', '~>0.1.1' +gem 'sidekiq-unique-jobs', '~> 6.0' +gem 'sidekiq-bulk', '~>0.2.0' gem 'simple-navigation', '~> 4.0' -gem 'simple_form', '~> 4.0' +gem 'simple_form', '~> 4.1' gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' gem 'stoplight', '~> 2.1.3' gem 'strong_migrations', '~> 0.3' gem 'tty-command', '~> 0.8', require: false -gem 'tty-prompt', '~> 0.17', require: false +gem 'tty-prompt', '~> 0.18', require: false gem 'twitter-text', '~> 1.14' gem 'tzinfo-data', '~> 1.2018' gem 'webpacker', '~> 3.5' gem 'webpush' -gem 'json-ld', '~> 2.2' +gem 'json-ld', '~> 3.0' +gem 'json-ld-preloaded', '~> 3.0' gem 'rdf-normalize', '~> 0.3' group :development, :test do @@ -106,15 +107,15 @@ group :production, :test do end group :test do - gem 'capybara', '~> 3.10' + gem 'capybara', '~> 3.12' gem 'climate_control', '~> 0.2' gem 'faker', '~> 1.9' gem 'microformats', '~> 4.0' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.0' gem 'simplecov', '~> 0.16', require: false - gem 'webmock', '~> 3.4' - gem 'parallel_tests', '~> 2.26' + gem 'webmock', '~> 3.5' + gem 'parallel_tests', '~> 2.27' end group :development do @@ -122,12 +123,12 @@ group :development do gem 'annotate', '~> 2.7' gem 'better_errors', '~> 2.5' gem 'binding_of_caller', '~> 0.7' - gem 'bullet', '~> 5.7' - gem 'letter_opener', '~> 1.4' + gem 'bullet', '~> 5.9' + gem 'letter_opener', '~> 1.7' gem 'letter_opener_web', '~> 1.3' gem 'memory_profiler' - gem 'rubocop', '~> 0.60', require: false - gem 'brakeman', '~> 4.3', require: false + gem 'rubocop', '~> 0.63', require: false + gem 'brakeman', '~> 4.4', require: false gem 'bundler-audit', '~> 0.6', require: false gem 'scss_lint', '~> 0.57', require: false @@ -144,3 +145,5 @@ group :production do gem 'lograge', '~> 0.10' gem 'redis-rails', '~> 5.0' end + +gem 'concurrent-ruby', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 91a2e8281..acb4b8dda 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,49 +15,49 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (5.2.1) - actionpack (= 5.2.1) + actioncable (5.2.2) + actionpack (= 5.2.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailer (5.2.1) - actionpack (= 5.2.1) - actionview (= 5.2.1) - activejob (= 5.2.1) + actionmailer (5.2.2) + actionpack (= 5.2.2) + actionview (= 5.2.2) + activejob (= 5.2.2) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (5.2.1) - actionview (= 5.2.1) - activesupport (= 5.2.1) + actionpack (5.2.2) + actionview (= 5.2.2) + activesupport (= 5.2.2) rack (~> 2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.2.1) - activesupport (= 5.2.1) + actionview (5.2.2) + activesupport (= 5.2.2) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - active_model_serializers (0.10.7) + active_model_serializers (0.10.8) actionpack (>= 4.1, < 6) activemodel (>= 4.1, < 6) case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.5.4) - activejob (5.2.1) - activesupport (= 5.2.1) + activejob (5.2.2) + activesupport (= 5.2.2) globalid (>= 0.3.6) - activemodel (5.2.1) - activesupport (= 5.2.1) - activerecord (5.2.1) - activemodel (= 5.2.1) - activesupport (= 5.2.1) + activemodel (5.2.2) + activesupport (= 5.2.2) + activerecord (5.2.2) + activemodel (= 5.2.2) + activesupport (= 5.2.2) arel (>= 9.0) - activestorage (5.2.1) - actionpack (= 5.2.1) - activerecord (= 5.2.1) + activestorage (5.2.2) + actionpack (= 5.2.2) + activerecord (= 5.2.2) marcel (~> 0.3.1) - activesupport (5.2.1) + activesupport (5.2.2) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) @@ -76,17 +76,17 @@ GEM av (0.9.0) cocaine (~> 0.5.3) aws-eventstream (1.0.1) - aws-partitions (1.106.0) - aws-sdk-core (3.35.0) + aws-partitions (1.131.0) + aws-sdk-core (3.45.0) aws-eventstream (~> 1.0) aws-partitions (~> 1.0) aws-sigv4 (~> 1.0) jmespath (~> 1.0) - aws-sdk-kms (1.11.0) - aws-sdk-core (~> 3, >= 3.26.0) + aws-sdk-kms (1.13.0) + aws-sdk-core (~> 3, >= 3.39.0) aws-sigv4 (~> 1.0) - aws-sdk-s3 (1.23.0) - aws-sdk-core (~> 3, >= 3.26.0) + aws-sdk-s3 (1.30.1) + aws-sdk-core (~> 3, >= 3.39.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.0) aws-sigv4 (1.0.3) @@ -100,14 +100,14 @@ GEM debug_inspector (>= 0.0.1) bootsnap (1.3.2) msgpack (~> 1.0) - brakeman (4.3.1) + brakeman (4.4.0) browser (2.5.3) builder (3.2.3) - bullet (5.7.6) + bullet (5.9.0) activesupport (>= 3.0.0) - uniform_notifier (~> 1.11.0) - bundler-audit (0.6.0) - bundler (~> 1.2) + uniform_notifier (~> 1.11) + bundler-audit (0.6.1) + bundler (>= 1.2.0, < 3) thor (~> 0.18) byebug (10.0.2) capistrano (3.11.0) @@ -126,7 +126,7 @@ GEM sshkit (~> 1.3) capistrano-yarn (2.0.2) capistrano (~> 3.0) - capybara (3.10.0) + capybara (3.12.0) addressable mini_mime (>= 0.1.3) nokogiri (~> 1.8) @@ -142,13 +142,13 @@ GEM elasticsearch (>= 2.0.0) elasticsearch-dsl chunky_png (1.3.10) - cld3 (3.2.2) + cld3 (3.2.3) ffi (>= 1.1.0, < 1.10.0) climate_control (0.2.0) cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) coderay (1.1.2) - concurrent-ruby (1.0.5) + concurrent-ruby (1.1.4) connection_pool (2.2.2) crack (0.4.3) safe_yaml (~> 1.0.0) @@ -185,9 +185,9 @@ GEM unf (>= 0.0.5, < 1.0.0) doorkeeper (5.0.2) railties (>= 4.2) - dotenv (2.5.0) - dotenv-rails (2.5.0) - dotenv (= 2.5.0) + dotenv (2.6.0) + dotenv-rails (2.6.0) + dotenv (= 2.6.0) railties (>= 3.2, < 6.0) elasticsearch (6.0.2) elasticsearch-api (= 6.0.2) @@ -200,7 +200,7 @@ GEM multi_json encryptor (3.0.0) equatable (0.5.0) - erubi (1.7.1) + erubi (1.8.0) et-orbi (1.1.6) tzinfo excon (0.62.0) @@ -210,7 +210,7 @@ GEM faraday (0.15.0) multipart-post (>= 1.2, < 3) fast_blank (1.0.0) - fastimage (2.1.4) + fastimage (2.1.5) ffi (1.9.25) fog-core (2.1.0) builder @@ -231,7 +231,7 @@ GEM fuubar (2.3.2) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - get_process_mem (0.2.2) + get_process_mem (0.2.3) globalid (0.4.1) activesupport (>= 4.2.0) goldfinger (2.1.0) @@ -251,11 +251,10 @@ GEM hamster (3.0.0) concurrent-ruby (~> 1.0) hashdiff (0.3.7) - hashie (3.5.7) + hashie (3.6.0) heapy (0.1.4) highline (2.0.0) - hiredis (0.6.1) - hitimes (1.3.0) + hiredis (0.6.3) hkdf (0.3.0) htmlentities (4.3.4) http (3.3.0) @@ -267,10 +266,10 @@ GEM domain_name (~> 0.5) http-form_data (2.1.1) http_accept_language (2.1.1) - httplog (1.1.1) + httplog (1.2.0) rack (>= 1.0) rainbow (>= 2.0.0) - i18n (1.1.1) + i18n (1.5.2) concurrent-ruby (~> 1.0) i18n-tasks (0.9.28) activesupport (>= 4.0.2) @@ -285,12 +284,16 @@ GEM idn-ruby (0.1.0) ipaddress (0.8.3) iso-639 (0.2.8) - jaro_winkler (1.5.1) + jaro_winkler (1.5.2) jmespath (1.4.0) json (2.1.0) - json-ld (2.2.1) + json-ld (3.0.2) multi_json (~> 1.12) rdf (>= 2.2.8, < 4.0) + json-ld-preloaded (3.0.0) + json-ld (>= 2.2, < 4.0) + multi_json (~> 1.12) + rdf (~> 3.0) jsonapi-renderer (0.2.0) jwt (2.1.0) kaminari (1.1.1) @@ -307,7 +310,7 @@ GEM kaminari-core (1.1.1) launchy (2.4.3) addressable (~> 2.3) - letter_opener (1.6.0) + letter_opener (1.7.0) launchy (~> 2.2) letter_opener_web (1.3.4) actionmailer (>= 3.2) @@ -322,16 +325,16 @@ GEM loofah (2.2.3) crass (~> 1.0.2) nokogiri (>= 1.5.9) - mail (2.7.0) + mail (2.7.1) mini_mime (>= 0.1.1) makara (0.4.0) activerecord (>= 3.0.0) - marcel (0.3.2) + marcel (0.3.3) mimemagic (~> 0.3.2) mario-redis-lock (1.2.1) redis (>= 3.0.5) memory_profiler (0.9.12) - method_source (0.9.0) + method_source (0.9.2) microformats (4.0.7) json nokogiri @@ -340,7 +343,7 @@ GEM mime-types-data (3.2018.0812) mimemagic (0.3.2) mini_mime (1.0.1) - mini_portile2 (2.3.0) + mini_portile2 (2.4.0) minitest (5.11.3) msgpack (1.2.4) multi_json (1.13.1) @@ -351,18 +354,18 @@ GEM net-ssh (>= 2.6.5) net-ssh (5.0.2) nio4r (2.3.1) - nokogiri (1.8.5) - mini_portile2 (~> 2.3.0) + nokogiri (1.10.1) + mini_portile2 (~> 2.4.0) nokogumbo (2.0.0) nokogiri (~> 1.8, >= 1.8.4) - nsa (0.2.4) + nsa (0.2.7) activesupport (>= 4.2, < 6) - concurrent-ruby (~> 1.0.0) - sidekiq (>= 3.5.0) - statsd-ruby (~> 1.2.0) - oj (3.7.0) - omniauth (1.8.1) - hashie (>= 3.4.6, < 3.6.0) + concurrent-ruby (~> 1.0, >= 1.0.2) + sidekiq (>= 3.5) + statsd-ruby (~> 1.4, >= 1.4.0) + oj (3.7.7) + omniauth (1.9.0) + hashie (>= 3.4.6, < 3.7.0) rack (>= 1.6.2, < 3) omniauth-cas (1.1.1) addressable (~> 2.3) @@ -387,17 +390,17 @@ GEM av (~> 0.9.0) paperclip (>= 2.5.2) parallel (1.12.1) - parallel_tests (2.26.0) + parallel_tests (2.27.1) parallel - parser (2.5.3.0) + parser (2.6.0.0) ast (~> 2.4.0) pastel (0.7.2) equatable (~> 0.5.0) tty-color (~> 0.4.0) - pg (1.1.3) + pg (1.1.4) pghero (2.2.0) activerecord - pkg-config (1.3.1) + pkg-config (1.3.2) powerpack (0.1.2) premailer (1.11.1) addressable @@ -407,46 +410,46 @@ GEM actionmailer (>= 3, < 6) premailer (~> 1.7, >= 1.7.9) private_address_check (0.5.0) - pry (0.11.3) + pry (0.12.2) coderay (~> 1.1.0) method_source (~> 0.9.0) pry-byebug (3.6.0) byebug (~> 10.0) pry (~> 0.10) - pry-rails (0.3.6) + pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (3.0.3) puma (3.12.0) pundit (2.0.0) activesupport (>= 3.0.0) raabro (1.1.6) - rack (2.0.5) - rack-attack (5.4.1) + rack (2.0.6) + rack-attack (5.4.2) rack (>= 1.0, < 3) rack-cors (1.0.2) - rack-protection (2.0.4) + rack-protection (2.0.5) rack rack-proxy (0.6.4) rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (5.2.1) - actioncable (= 5.2.1) - actionmailer (= 5.2.1) - actionpack (= 5.2.1) - actionview (= 5.2.1) - activejob (= 5.2.1) - activemodel (= 5.2.1) - activerecord (= 5.2.1) - activestorage (= 5.2.1) - activesupport (= 5.2.1) + rails (5.2.2) + actioncable (= 5.2.2) + actionmailer (= 5.2.2) + actionpack (= 5.2.2) + actionview (= 5.2.2) + activejob (= 5.2.2) + activemodel (= 5.2.2) + activerecord (= 5.2.2) + activestorage (= 5.2.2) + activesupport (= 5.2.2) bundler (>= 1.3.0) - railties (= 5.2.1) + railties (= 5.2.2) sprockets-rails (>= 2.0.0) - rails-controller-testing (1.0.2) - actionpack (~> 5.x, >= 5.0.1) - actionview (~> 5.x, >= 5.0.1) - activesupport (~> 5.x) + rails-controller-testing (1.0.4) + actionpack (>= 5.0.1.x) + actionview (>= 5.0.1.x) + activesupport (>= 5.0.1.x) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) @@ -457,23 +460,23 @@ GEM railties (>= 5.0, < 6) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (5.2.1) - actionpack (= 5.2.1) - activesupport (= 5.2.1) + railties (5.2.2) + actionpack (= 5.2.2) + activesupport (= 5.2.2) method_source rake (>= 0.8.7) thor (>= 0.19.0, < 2.0) rainbow (3.0.0) - rake (12.3.1) + rake (12.3.2) rb-fsevent (0.10.3) rb-inotify (0.9.10) ffi (>= 0.5.0, < 2) - rdf (3.0.2) + rdf (3.0.9) hamster (~> 3.0) link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.3.3) rdf (>= 2.2, < 4.0) - redis (4.0.2) + redis (4.1.0) redis-actionpack (5.0.2) actionpack (>= 4.0, < 6) redis-rack (>= 1, < 3) @@ -492,7 +495,7 @@ GEM redis-store (>= 1.2, < 2) redis-store (1.5.0) redis (>= 2.2, < 5) - regexp_parser (1.2.0) + regexp_parser (1.3.0) request_store (1.4.1) rack (>= 1.4) responders (2.4.0) @@ -522,7 +525,7 @@ GEM rspec-core (~> 3.0, >= 3.0.0) sidekiq (>= 2.4.0) rspec-support (3.8.0) - rubocop (0.60.0) + rubocop (0.63.0) jaro_winkler (~> 1.5.1) parallel (~> 1.10) parser (>= 2.5, != 2.5.1.1) @@ -548,24 +551,25 @@ GEM scss_lint (0.57.1) rake (>= 0.9, < 13) sass (~> 3.5, >= 3.5.5) - sidekiq (5.2.2) + sidekiq (5.2.5) connection_pool (~> 2.2, >= 2.2.2) + rack (>= 1.5.0) rack-protection (>= 1.5.0) redis (>= 3.3.5, < 5) - sidekiq-bulk (0.1.1) - activesupport + sidekiq-bulk (0.2.0) sidekiq sidekiq-scheduler (3.0.0) redis (>= 3, < 5) rufus-scheduler (~> 3.2) sidekiq (>= 3) tilt (>= 1.4.0) - sidekiq-unique-jobs (5.0.10) - sidekiq (>= 4.0, <= 6.0) + sidekiq-unique-jobs (6.0.8) + concurrent-ruby (~> 1.0, >= 1.0.5) + sidekiq (>= 4.0, < 6.0) thor (~> 0) simple-navigation (4.0.5) activesupport (>= 2.3.2) - simple_form (4.0.1) + simple_form (4.1.0) actionpack (>= 5.0) activemodel (>= 5.0) simplecov (0.16.1) @@ -584,7 +588,7 @@ GEM net-scp (>= 1.1.2) net-ssh (>= 2.8.0) stackprof (0.2.12) - statsd-ruby (1.2.1) + statsd-ruby (1.4.0) stoplight (2.1.3) streamio-ffmpeg (3.0.2) multi_json (~> 1.8) @@ -595,22 +599,21 @@ GEM unicode-display_width (~> 1.1, >= 1.1.1) terrapin (0.6.0) climate_control (>= 0.0.3, < 1.0) - thor (0.20.0) + thor (0.20.3) thread_safe (0.3.6) tilt (2.0.8) - timers (4.1.2) - hitimes + timers (4.2.0) tty-color (0.4.3) tty-command (0.8.2) pastel (~> 0.7.0) tty-cursor (0.6.0) - tty-prompt (0.17.1) + tty-prompt (0.18.1) necromancer (~> 0.4.0) pastel (~> 0.7.0) timers (~> 4.0) tty-cursor (~> 0.6.0) - tty-reader (~> 0.4.0) - tty-reader (0.4.0) + tty-reader (~> 0.5.0) + tty-reader (0.5.0) tty-cursor (~> 0.6.0) tty-screen (~> 0.6.4) wisper (~> 2.0.0) @@ -619,16 +622,16 @@ GEM unf (~> 0.1.0) tzinfo (1.2.5) thread_safe (~> 0.1) - tzinfo-data (1.2018.7) + tzinfo-data (1.2018.9) tzinfo (>= 1.0.0) unf (0.1.4) unf_ext unf_ext (0.0.7.5) - unicode-display_width (1.4.0) - uniform_notifier (1.11.0) + unicode-display_width (1.4.1) + uniform_notifier (1.12.1) warden (1.2.7) rack (>= 1.0) - webmock (3.4.2) + webmock (3.5.1) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff @@ -636,7 +639,7 @@ GEM activesupport (>= 4.2) rack-proxy (>= 0.6.1) railties (>= 4.2) - webpush (0.3.4) + webpush (0.3.6) hkdf (~> 0.2) jwt (~> 2.0) websocket-driver (0.7.0) @@ -654,29 +657,30 @@ DEPENDENCIES active_record_query_trace (~> 1.5) addressable (~> 2.5) annotate (~> 2.7) - aws-sdk-s3 (~> 1.23) + aws-sdk-s3 (~> 1.30) better_errors (~> 2.5) binding_of_caller (~> 0.7) bootsnap (~> 1.3) - brakeman (~> 4.3) + brakeman (~> 4.4) browser - bullet (~> 5.7) + bullet (~> 5.9) bundler-audit (~> 0.6) capistrano (~> 3.11) capistrano-rails (~> 1.4) capistrano-rbenv (~> 2.1) capistrano-yarn (~> 2.0) - capybara (~> 3.10) + capybara (~> 3.12) charlock_holmes (~> 0.7.6) chewy (~> 5.0) - cld3 (~> 3.2.0) + cld3 (~> 3.2.3) climate_control (~> 0.2) + concurrent-ruby derailed_benchmarks devise (~> 4.5) devise-two-factor (~> 3.0) devise_pam_authenticatable2 (~> 9.2) doorkeeper (~> 5.0) - dotenv-rails (~> 2.5) + dotenv-rails (~> 2.6) fabrication (~> 2.20) faker (~> 1.9) fast_blank (~> 1.0) @@ -691,13 +695,14 @@ DEPENDENCIES http (~> 3.3) http_accept_language (~> 2.1) http_parser.rb (~> 0.6)! - httplog (~> 1.1) + httplog (~> 1.2) i18n-tasks (~> 0.9) idn-ruby iso-639 - json-ld (~> 2.2) + json-ld (~> 3.0) + json-ld-preloaded (~> 3.0) kaminari (~> 1.1) - letter_opener (~> 1.4) + letter_opener (~> 1.7) letter_opener_web (~> 1.3) link_header (~> 0.0) lograge (~> 0.10) @@ -707,17 +712,17 @@ DEPENDENCIES microformats (~> 4.0) mime-types (~> 3.2) net-ldap (~> 0.10) - nokogiri (~> 1.8) + nokogiri (~> 1.10) nsa (~> 0.2) oj (~> 3.7) - omniauth (~> 1.2) + omniauth (~> 1.9) omniauth-cas (~> 1.1) omniauth-saml (~> 1.10) ostatus2 (~> 2.0) ox (~> 2.10) paperclip (~> 6.0) paperclip-av-transcoder (~> 0.6) - parallel_tests (~> 2.26) + parallel_tests (~> 2.27) pg (~> 1.1) pghero (~> 2.2) pkg-config (~> 1.3) @@ -730,26 +735,26 @@ DEPENDENCIES pundit (~> 2.0) rack-attack (~> 5.4) rack-cors (~> 1.0) - rails (~> 5.2.1) + rails (~> 5.2.2) rails-controller-testing (~> 1.0) rails-i18n (~> 5.1) rails-settings-cached (~> 0.6) rdf-normalize (~> 0.3) - redis (~> 4.0) + redis (~> 4.1) redis-namespace (~> 1.5) redis-rails (~> 5.0) rqrcode (~> 0.10) rspec-rails (~> 3.8) rspec-sidekiq (~> 3.0) - rubocop (~> 0.60) + rubocop (~> 0.63) sanitize (~> 5.0) scss_lint (~> 0.57) sidekiq (~> 5.2) - sidekiq-bulk (~> 0.1.1) + sidekiq-bulk (~> 0.2.0) sidekiq-scheduler (~> 3.0) - sidekiq-unique-jobs (~> 5.0) + sidekiq-unique-jobs (~> 6.0) simple-navigation (~> 4.0) - simple_form (~> 4.0) + simple_form (~> 4.1) simplecov (~> 0.16) sprockets-rails (~> 3.2) stackprof @@ -758,15 +763,15 @@ DEPENDENCIES strong_migrations (~> 0.3) thor (~> 0.20) tty-command (~> 0.8) - tty-prompt (~> 0.17) + tty-prompt (~> 0.18) twitter-text (~> 1.14) tzinfo-data (~> 1.2018) - webmock (~> 3.4) + webmock (~> 3.5) webpacker (~> 3.5) webpush RUBY VERSION - ruby 2.5.3p105 + ruby 2.6.0p0 BUNDLED WITH - 1.16.6 + 1.17.3 diff --git a/Vagrantfile b/Vagrantfile index 5e25efb80..f9839fffb 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -44,7 +44,7 @@ sudo apt-get install \ # Install rvm read RUBY_VERSION < .ruby-version -gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 +gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer | bash -s stable --ruby=$RUBY_VERSION source /home/vagrant/.rvm/scripts/rvm diff --git a/app/controllers/activitypub/collections_controller.rb b/app/controllers/activitypub/collections_controller.rb index 96bf901a7..995da9c55 100644 --- a/app/controllers/activitypub/collections_controller.rb +++ b/app/controllers/activitypub/collections_controller.rb @@ -31,7 +31,7 @@ class ActivityPub::CollectionsController < Api::BaseController when 'featured' @account.pinned_statuses.count else - raise ActiveRecord::NotFound + raise ActiveRecord::RecordNotFound end end @@ -42,7 +42,7 @@ class ActivityPub::CollectionsController < Api::BaseController scope.merge!(@account.pinned_statuses) end else - raise ActiveRecord::NotFound + raise ActiveRecord::RecordNotFound end end diff --git a/app/controllers/admin/account_actions_controller.rb b/app/controllers/admin/account_actions_controller.rb new file mode 100644 index 000000000..a2cea461e --- /dev/null +++ b/app/controllers/admin/account_actions_controller.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module Admin + class AccountActionsController < BaseController + before_action :set_account + + def new + @account_action = Admin::AccountAction.new(type: params[:type], report_id: params[:report_id], send_email_notification: true) + @warning_presets = AccountWarningPreset.all + end + + def create + account_action = Admin::AccountAction.new(resource_params) + account_action.target_account = @account + account_action.current_account = current_account + + account_action.save! + + if account_action.with_report? + redirect_to admin_reports_path + else + redirect_to admin_account_path(@account.id) + end + end + + private + + def set_account + @account = Account.find(params[:account_id]) + end + + def resource_params + params.require(:admin_account_action).permit(:type, :report_id, :warning_preset_id, :text, :send_email_notification) + end + end +end diff --git a/app/controllers/admin/account_moderation_notes_controller.rb b/app/controllers/admin/account_moderation_notes_controller.rb index 7d5b9bf52..44f6e34f8 100644 --- a/app/controllers/admin/account_moderation_notes_controller.rb +++ b/app/controllers/admin/account_moderation_notes_controller.rb @@ -14,6 +14,7 @@ module Admin else @account = @account_moderation_note.target_account @moderation_notes = @account.targeted_moderation_notes.latest + @warnings = @account.targeted_account_warnings.latest.custom render template: 'admin/accounts/show' end diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index 5d57fe361..562fba996 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -2,9 +2,9 @@ module Admin class AccountsController < BaseController - before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload, :remove_avatar, :enable, :disable, :memorialize] + before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload, :remove_avatar, :remove_header, :enable, :unsilence, :unsuspend, :memorialize] before_action :require_remote_account!, only: [:subscribe, :unsubscribe, :redownload] - before_action :require_local_account!, only: [:enable, :disable, :memorialize] + before_action :require_local_account!, only: [:enable, :memorialize] def index authorize :account, :index? @@ -13,8 +13,10 @@ module Admin def show authorize @account, :show? + @account_moderation_note = current_account.account_moderation_notes.new(target_account: @account) - @moderation_notes = @account.targeted_moderation_notes.latest + @moderation_notes = @account.targeted_moderation_notes.latest + @warnings = @account.targeted_account_warnings.latest.custom end def subscribe @@ -43,19 +45,25 @@ module Admin redirect_to admin_account_path(@account.id) end - def disable - authorize @account.user, :disable? - @account.user.disable! - log_action :disable, @account.user + def unsilence + authorize @account, :unsilence? + @account.unsilence! + log_action :unsilence, @account + redirect_to admin_account_path(@account.id) + end + + def unsuspend + authorize @account, :unsuspend? + @account.unsuspend! + log_action :unsuspend, @account redirect_to admin_account_path(@account.id) end def redownload authorize @account, :redownload? - @account.reset_avatar! - @account.reset_header! - @account.save! + @account.update!(last_webfingered_at: nil) + ResolveAccountService.new.call(@account) redirect_to admin_account_path(@account.id) end @@ -71,6 +79,17 @@ module Admin redirect_to admin_account_path(@account.id) end + def remove_header + authorize @account, :remove_header? + + @account.header = nil + @account.save! + + log_action :remove_header, @account.user + + redirect_to admin_account_path(@account.id) + end + private def set_account @@ -94,8 +113,8 @@ module Admin :local, :remote, :by_domain, + :active, :silenced, - :alphabetic, :suspended, :username, :display_name, diff --git a/app/controllers/admin/base_controller.rb b/app/controllers/admin/base_controller.rb index 8593b582a..7b81a2b01 100644 --- a/app/controllers/admin/base_controller.rb +++ b/app/controllers/admin/base_controller.rb @@ -15,5 +15,9 @@ module Admin def set_body_classes @body_classes = 'admin' end + + def set_user + @user = Account.find(params[:account_id]).user || raise(ActiveRecord::RecordNotFound) + end end end diff --git a/app/controllers/admin/confirmations_controller.rb b/app/controllers/admin/confirmations_controller.rb index 8d3477e66..efe7dcbd4 100644 --- a/app/controllers/admin/confirmations_controller.rb +++ b/app/controllers/admin/confirmations_controller.rb @@ -25,10 +25,6 @@ module Admin private - def set_user - @user = Account.find(params[:account_id]).user || raise(ActiveRecord::RecordNotFound) - end - def check_confirmation if @user.confirmed? flash[:error] = I18n.t('admin.accounts.resend_confirmation.already_confirmed') diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index 7be753c9b..bb923c185 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -28,6 +28,7 @@ module Admin @pam_enabled = ENV['PAM_ENABLED'] == 'true' @hidden_service = ENV['ALLOW_ACCESS_TO_HIDDEN_SERVICE'] == 'true' @trending_hashtags = TrendingTags.get(7) + @profile_directory = Setting.profile_directory end private diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb index 90c70275a..5f307ddee 100644 --- a/app/controllers/admin/domain_blocks_controller.rb +++ b/app/controllers/admin/domain_blocks_controller.rb @@ -4,14 +4,9 @@ module Admin class DomainBlocksController < BaseController before_action :set_domain_block, only: [:show, :destroy] - def index - authorize :domain_block, :index? - @domain_blocks = DomainBlock.page(params[:page]) - end - def new authorize :domain_block, :create? - @domain_block = DomainBlock.new + @domain_block = DomainBlock.new(domain: params[:_domain]) end def create @@ -22,7 +17,7 @@ module Admin if @domain_block.save DomainBlockWorker.perform_async(@domain_block.id) log_action :create, @domain_block - redirect_to admin_domain_blocks_path, notice: I18n.t('admin.domain_blocks.created_msg') + redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg') else render :new end @@ -36,7 +31,7 @@ module Admin authorize @domain_block, :destroy? UnblockDomainService.new.call(@domain_block, retroactive_unblock?) log_action :destroy, @domain_block - redirect_to admin_domain_blocks_path, notice: I18n.t('admin.domain_blocks.destroyed_msg') + redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.destroyed_msg') end private diff --git a/app/controllers/admin/followers_controller.rb b/app/controllers/admin/followers_controller.rb new file mode 100644 index 000000000..d826f47c5 --- /dev/null +++ b/app/controllers/admin/followers_controller.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Admin + class FollowersController < BaseController + before_action :set_account + + PER_PAGE = 40 + + def index + authorize :account, :index? + @followers = @account.followers.local.recent.page(params[:page]).per(PER_PAGE) + end + + def set_account + @account = Account.find(params[:account_id]) + end + end +end diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index 8ed0ea421..431ce6f4d 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -4,14 +4,21 @@ module Admin class InstancesController < BaseController def index authorize :instance, :index? + @instances = ordered_instances end - def resubscribe - authorize :instance, :resubscribe? - params.require(:by_domain) - Pubsubhubbub::SubscribeWorker.push_bulk(subscribeable_accounts.pluck(:id)) - redirect_to admin_instances_path + def show + authorize :instance, :show? + + @instance = Instance.new(Account.by_domain_accounts.find_by(domain: params[:id]) || DomainBlock.find_by!(domain: params[:id])) + @following_count = Follow.where(account: Account.where(domain: params[:id])).count + @followers_count = Follow.where(target_account: Account.where(domain: params[:id])).count + @reports_count = Report.where(target_account: Account.where(domain: params[:id])).count + @blocks_count = Block.where(target_account: Account.where(domain: params[:id])).count + @available = DeliveryFailureTracker.available?(Account.select(:shared_inbox_url).where(domain: params[:id]).first&.shared_inbox_url) + @media_storage = MediaAttachment.where(account: Account.where(domain: params[:id])).sum(:file_file_size) + @domain_block = DomainBlock.find_by(domain: params[:id]) end private @@ -27,17 +34,11 @@ module Admin helper_method :paginated_instances def ordered_instances - paginated_instances.map { |account| Instance.new(account) } - end - - def subscribeable_accounts - Account.with_followers.remote.where(domain: params[:by_domain]) + paginated_instances.map { |resource| Instance.new(resource) } end def filter_params - params.permit( - :domain_name - ) + params.permit(:limited) end end end diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb index e97ddb9b6..f138376b2 100644 --- a/app/controllers/admin/reports_controller.rb +++ b/app/controllers/admin/reports_controller.rb @@ -13,75 +13,42 @@ module Admin authorize @report, :show? @report_note = @report.notes.new - @report_notes = (@report.notes.latest + @report.history).sort_by(&:created_at) + @report_notes = (@report.notes.latest + @report.history + @report.target_account.targeted_account_warnings.latest.custom).sort_by(&:created_at) @form = Form::StatusBatch.new end - def update + def assign_to_self authorize @report, :update? - process_report + @report.update!(assigned_account_id: current_account.id) + log_action :assigned_to_self, @report + redirect_to admin_report_path(@report) + end - if @report.action_taken? - redirect_to admin_reports_path, notice: I18n.t('admin.reports.resolved_msg') - else - redirect_to admin_report_path(@report) - end + def unassign + authorize @report, :update? + @report.update!(assigned_account_id: nil) + log_action :unassigned, @report + redirect_to admin_report_path(@report) + end + + def reopen + authorize @report, :update? + @report.unresolve! + log_action :reopen, @report + redirect_to admin_report_path(@report) + end + + def resolve + authorize @report, :update? + @report.resolve!(current_account) + log_action :resolve, @report + redirect_to admin_reports_path, notice: I18n.t('admin.reports.resolved_msg') end private - def process_report - case params[:outcome].to_s - when 'assign_to_self' - @report.update!(assigned_account_id: current_account.id) - log_action :assigned_to_self, @report - when 'unassign' - @report.update!(assigned_account_id: nil) - log_action :unassigned, @report - when 'reopen' - @report.unresolve! - log_action :reopen, @report - when 'resolve' - @report.resolve!(current_account) - log_action :resolve, @report - when 'disable' - @report.resolve!(current_account) - @report.target_account.user.disable! - - log_action :resolve, @report - log_action :disable, @report.target_account.user - - resolve_all_target_account_reports - when 'silence' - @report.resolve!(current_account) - @report.target_account.update!(silenced: true) - - log_action :resolve, @report - log_action :silence, @report.target_account - - resolve_all_target_account_reports - else - raise ActiveRecord::RecordNotFound - end - - @report.reload - end - - def resolve_all_target_account_reports - unresolved_reports_for_target_account.update_all(action_taken: true, action_taken_by_account_id: current_account.id) - end - - def unresolved_reports_for_target_account - Report.where( - target_account: @report.target_account - ).unresolved - end - def filtered_reports - ReportFilter.new(filter_params).results.order(id: :desc).includes( - :account, - :target_account - ) + ReportFilter.new(filter_params).results.order(id: :desc).includes(:account, :target_account) end def filter_params diff --git a/app/controllers/admin/resets_controller.rb b/app/controllers/admin/resets_controller.rb index 3e27d01ac..db8f61d64 100644 --- a/app/controllers/admin/resets_controller.rb +++ b/app/controllers/admin/resets_controller.rb @@ -10,11 +10,5 @@ module Admin log_action :reset_password, @user redirect_to admin_accounts_path end - - private - - def set_user - @user = Account.find(params[:account_id]).user || raise(ActiveRecord::RecordNotFound) - end end end diff --git a/app/controllers/admin/roles_controller.rb b/app/controllers/admin/roles_controller.rb index af7ec0740..13f56e9be 100644 --- a/app/controllers/admin/roles_controller.rb +++ b/app/controllers/admin/roles_controller.rb @@ -17,11 +17,5 @@ module Admin log_action :demote, @user redirect_to admin_account_path(@user.account_id) end - - private - - def set_user - @user = Account.find(params[:account_id]).user || raise(ActiveRecord::RecordNotFound) - end end end diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index d9f261489..4a049fc23 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -26,6 +26,7 @@ module Admin show_known_fediverse_at_about_page preview_sensitive_media custom_css + profile_directory ).freeze BOOLEAN_SETTINGS = %w( @@ -37,6 +38,7 @@ module Admin peers_api_enabled show_known_fediverse_at_about_page preview_sensitive_media + profile_directory ).freeze UPLOAD_SETTINGS = %w( diff --git a/app/controllers/admin/silences_controller.rb b/app/controllers/admin/silences_controller.rb deleted file mode 100644 index 4c06a9c0c..000000000 --- a/app/controllers/admin/silences_controller.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SilencesController < BaseController - before_action :set_account - - def create - authorize @account, :silence? - @account.update!(silenced: true) - log_action :silence, @account - redirect_to admin_accounts_path - end - - def destroy - authorize @account, :unsilence? - @account.update!(silenced: false) - log_action :unsilence, @account - redirect_to admin_accounts_path - end - - private - - def set_account - @account = Account.find(params[:account_id]) - end - end -end diff --git a/app/controllers/admin/statuses_controller.rb b/app/controllers/admin/statuses_controller.rb index a69f12084..650195034 100644 --- a/app/controllers/admin/statuses_controller.rb +++ b/app/controllers/admin/statuses_controller.rb @@ -22,6 +22,15 @@ module Admin @form = Form::StatusBatch.new end + def show + authorize :status, :index? + + @statuses = @account.statuses.where(id: params[:id]) + authorize @statuses.first, :show? + + @form = Form::StatusBatch.new + end + def create authorize :status, :update? diff --git a/app/controllers/admin/suspensions_controller.rb b/app/controllers/admin/suspensions_controller.rb deleted file mode 100644 index f9bbf36fb..000000000 --- a/app/controllers/admin/suspensions_controller.rb +++ /dev/null @@ -1,60 +0,0 @@ -# frozen_string_literal: true - -module Admin - class SuspensionsController < BaseController - before_action :set_account - - def new - @suspension = Form::AdminSuspensionConfirmation.new(report_id: params[:report_id]) - end - - def create - authorize @account, :suspend? - - @suspension = Form::AdminSuspensionConfirmation.new(suspension_params) - - if suspension_params[:acct] == @account.acct - resolve_report! if suspension_params[:report_id].present? - perform_suspend! - mark_reports_resolved! - redirect_to admin_accounts_path - else - flash.now[:alert] = I18n.t('admin.suspensions.bad_acct_msg') - render :new - end - end - - def destroy - authorize @account, :unsuspend? - @account.unsuspend! - log_action :unsuspend, @account - redirect_to admin_accounts_path - end - - private - - def set_account - @account = Account.find(params[:account_id]) - end - - def suspension_params - params.require(:form_admin_suspension_confirmation).permit(:acct, :report_id) - end - - def resolve_report! - report = Report.find(suspension_params[:report_id]) - report.resolve!(current_account) - log_action :resolve, report - end - - def perform_suspend! - @account.suspend! - Admin::SuspensionWorker.perform_async(@account.id) - log_action :suspend, @account - end - - def mark_reports_resolved! - Report.where(target_account: @account).unresolved.update_all(action_taken: true, action_taken_by_account_id: current_account.id) - end - end -end diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb new file mode 100644 index 000000000..e9f4f2cfa --- /dev/null +++ b/app/controllers/admin/tags_controller.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +module Admin + class TagsController < BaseController + before_action :set_tags, only: :index + before_action :set_tag, except: :index + before_action :set_filter_params + + def index + authorize :tag, :index? + end + + def hide + authorize @tag, :hide? + @tag.account_tag_stat.update!(hidden: true) + redirect_to admin_tags_path(@filter_params) + end + + def unhide + authorize @tag, :unhide? + @tag.account_tag_stat.update!(hidden: false) + redirect_to admin_tags_path(@filter_params) + end + + private + + def set_tags + @tags = Tag.discoverable + @tags.merge!(Tag.hidden) if filter_params[:hidden] + end + + def set_tag + @tag = Tag.find(params[:id]) + end + + def set_filter_params + @filter_params = filter_params.to_hash.symbolize_keys + end + + def filter_params + params.permit(:hidden) + end + end +end diff --git a/app/controllers/admin/two_factor_authentications_controller.rb b/app/controllers/admin/two_factor_authentications_controller.rb index 022107203..2577a4b17 100644 --- a/app/controllers/admin/two_factor_authentications_controller.rb +++ b/app/controllers/admin/two_factor_authentications_controller.rb @@ -2,7 +2,7 @@ module Admin class TwoFactorAuthenticationsController < BaseController - before_action :set_user + before_action :set_target_user def destroy authorize @user, :disable_2fa? @@ -13,7 +13,7 @@ module Admin private - def set_user + def set_target_user @user = User.find(params[:user_id]) end end diff --git a/app/controllers/admin/warning_presets_controller.rb b/app/controllers/admin/warning_presets_controller.rb new file mode 100644 index 000000000..37be842c5 --- /dev/null +++ b/app/controllers/admin/warning_presets_controller.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +module Admin + class WarningPresetsController < BaseController + before_action :set_warning_preset, except: [:index, :create] + + def index + authorize :account_warning_preset, :index? + + @warning_presets = AccountWarningPreset.all + @warning_preset = AccountWarningPreset.new + end + + def create + authorize :account_warning_preset, :create? + + @warning_preset = AccountWarningPreset.new(warning_preset_params) + + if @warning_preset.save + redirect_to admin_warning_presets_path + else + @warning_presets = AccountWarningPreset.all + render :index + end + end + + def edit + authorize @warning_preset, :update? + end + + def update + authorize @warning_preset, :update? + + if @warning_preset.update(warning_preset_params) + redirect_to admin_warning_presets_path + else + render :edit + end + end + + def destroy + authorize @warning_preset, :destroy? + + @warning_preset.destroy! + redirect_to admin_warning_presets_path + end + + private + + def set_warning_preset + @warning_preset = AccountWarningPreset.find(params[:id]) + end + + def warning_preset_params + params.require(:account_warning_preset).permit(:text) + end + end +end diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index ac8de5fc0..a1dd30918 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -68,12 +68,14 @@ class Api::BaseController < ApplicationController end def require_user! - if current_user && !current_user.disabled? - set_user_activity - elsif current_user - render json: { error: 'Your login is currently disabled' }, status: 403 - else + if !current_user render json: { error: 'This method requires an authenticated user' }, status: 422 + elsif current_user.disabled? + render json: { error: 'Your login is currently disabled' }, status: 403 + elsif !current_user.confirmed? + render json: { error: 'Email confirmation is not completed' }, status: 403 + else + set_user_activity end end diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb index dcd41b35c..e77f57910 100644 --- a/app/controllers/api/v1/accounts/credentials_controller.rb +++ b/app/controllers/api/v1/accounts/credentials_controller.rb @@ -21,7 +21,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController private def account_params - params.permit(:display_name, :note, :avatar, :header, :locked, :bot, fields_attributes: [:name, :value]) + params.permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value]) end def user_settings_params diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index daa35769e..ec15debb0 100644 --- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb @@ -25,7 +25,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController end def default_accounts - Account.includes(:active_relationships).references(:active_relationships) + Account.includes(:active_relationships, :account_stat).references(:active_relationships) end def paginated_follows diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb index 6be97b87e..f3e112f2c 100644 --- a/app/controllers/api/v1/accounts/following_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb @@ -25,7 +25,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController end def default_accounts - Account.includes(:passive_relationships).references(:passive_relationships) + Account.includes(:passive_relationships, :account_stat).references(:passive_relationships) end def paginated_follows diff --git a/app/controllers/api/v1/accounts/statuses_controller.rb b/app/controllers/api/v1/accounts/statuses_controller.rb index b68a8805f..6c2a5c141 100644 --- a/app/controllers/api/v1/accounts/statuses_controller.rb +++ b/app/controllers/api/v1/accounts/statuses_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Api::V1::Accounts::StatusesController < Api::BaseController - before_action -> { doorkeeper_authorize! :read, :'read:statuses' } + before_action -> { authorize_if_got_token! :read, :'read:statuses' } before_action :set_account after_action :insert_pagination_headers @@ -28,13 +28,11 @@ class Api::V1::Accounts::StatusesController < Api::BaseController def account_statuses statuses = truthy_param?(:pinned) ? pinned_scope : permitted_account_statuses - statuses = statuses.paginate_by_id( - limit_param(DEFAULT_STATUSES_LIMIT), - params_slice(:max_id, :since_id, :min_id) - ) + statuses = statuses.paginate_by_id(limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id)) statuses.merge!(only_media_scope) if truthy_param?(:only_media) statuses.merge!(no_replies_scope) if truthy_param?(:exclude_replies) + statuses.merge!(no_reblogs_scope) if truthy_param?(:exclude_reblogs) statuses end @@ -65,6 +63,10 @@ class Api::V1::Accounts::StatusesController < Api::BaseController Status.without_replies end + def no_reblogs_scope + Status.without_reblogs + end + def pagination_params(core_params) params.slice(:limit, :only_media, :exclude_replies).permit(:limit, :only_media, :exclude_replies).merge(core_params) end diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 1d5372a8c..2ccbc3cbb 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -1,14 +1,16 @@ # frozen_string_literal: true class Api::V1::AccountsController < Api::BaseController - before_action -> { authorize_if_got_token! :read, :'read:accounts' }, except: [:follow, :unfollow, :block, :unblock, :mute, :unmute] + before_action -> { authorize_if_got_token! :read, :'read:accounts' }, except: [:create, :follow, :unfollow, :block, :unblock, :mute, :unmute] before_action -> { doorkeeper_authorize! :follow, :'write:follows' }, only: [:follow, :unfollow] before_action -> { doorkeeper_authorize! :follow, :'write:mutes' }, only: [:mute, :unmute] before_action -> { doorkeeper_authorize! :follow, :'write:blocks' }, only: [:block, :unblock] + before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:create] - before_action :require_user!, except: [:show] - before_action :set_account + before_action :require_user!, except: [:show, :create] + before_action :set_account, except: [:create] before_action :check_account_suspension, only: [:show] + before_action :check_enabled_registrations, only: [:create] respond_to :json @@ -16,8 +18,18 @@ class Api::V1::AccountsController < Api::BaseController render json: @account, serializer: REST::AccountSerializer end + def create + token = AppSignUpService.new.call(doorkeeper_token.application, account_params) + response = Doorkeeper::OAuth::TokenResponse.new(token) + + headers.merge!(response.headers) + + self.response_body = Oj.dump(response.body) + self.status = response.status + end + def follow - FollowService.new.call(current_user.account, @account.acct, reblogs: truthy_param?(:reblogs)) + FollowService.new.call(current_user.account, @account, reblogs: truthy_param?(:reblogs)) options = @account.locked? ? {} : { following_map: { @account.id => { reblogs: truthy_param?(:reblogs) } }, requested_map: { @account.id => false } } @@ -62,4 +74,12 @@ class Api::V1::AccountsController < Api::BaseController def check_account_suspension gone if @account.suspended? end + + def account_params + params.permit(:username, :email, :password, :agreement, :locale) + end + + def check_enabled_registrations + forbidden if single_user_mode? || !Setting.open_registrations + end end diff --git a/app/controllers/api/v1/blocks_controller.rb b/app/controllers/api/v1/blocks_controller.rb index 99c53d59a..4cff04cad 100644 --- a/app/controllers/api/v1/blocks_controller.rb +++ b/app/controllers/api/v1/blocks_controller.rb @@ -19,7 +19,7 @@ class Api::V1::BlocksController < Api::BaseController end def paginated_blocks - @paginated_blocks ||= Block.eager_load(:target_account) + @paginated_blocks ||= Block.eager_load(target_account: :account_stat) .where(account: current_account) .paginate_by_max_id( limit_param(DEFAULT_ACCOUNTS_LIMIT), diff --git a/app/controllers/api/v1/custom_emojis_controller.rb b/app/controllers/api/v1/custom_emojis_controller.rb index f8cd64455..7bac27da4 100644 --- a/app/controllers/api/v1/custom_emojis_controller.rb +++ b/app/controllers/api/v1/custom_emojis_controller.rb @@ -4,6 +4,8 @@ class Api::V1::CustomEmojisController < Api::BaseController respond_to :json def index - render json: CustomEmoji.local.where(disabled: false), each_serializer: REST::CustomEmojiSerializer + render_cached_json('api:v1:custom_emojis', expires_in: 1.minute) do + ActiveModelSerializers::SerializableResource.new(CustomEmoji.local.where(disabled: false), each_serializer: REST::CustomEmojiSerializer) + end end end diff --git a/app/controllers/api/v1/endorsements_controller.rb b/app/controllers/api/v1/endorsements_controller.rb index 0f04b488f..2770c7aef 100644 --- a/app/controllers/api/v1/endorsements_controller.rb +++ b/app/controllers/api/v1/endorsements_controller.rb @@ -27,7 +27,7 @@ class Api::V1::EndorsementsController < Api::BaseController end def endorsed_accounts - current_account.endorsed_accounts + current_account.endorsed_accounts.includes(:account_stat) end def insert_pagination_headers diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb index e9aca5f8a..e6888154e 100644 --- a/app/controllers/api/v1/follow_requests_controller.rb +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -33,7 +33,7 @@ class Api::V1::FollowRequestsController < Api::BaseController end def default_accounts - Account.includes(:follow_requests).references(:follow_requests) + Account.includes(:follow_requests, :account_stat).references(:follow_requests) end def paginated_follow_requests diff --git a/app/controllers/api/v1/lists/accounts_controller.rb b/app/controllers/api/v1/lists/accounts_controller.rb index ec4477034..23078263e 100644 --- a/app/controllers/api/v1/lists/accounts_controller.rb +++ b/app/controllers/api/v1/lists/accounts_controller.rb @@ -37,9 +37,9 @@ class Api::V1::Lists::AccountsController < Api::BaseController def load_accounts if unlimited? - @list.accounts.all + @list.accounts.includes(:account_stat).all else - @list.accounts.paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) + @list.accounts.includes(:account_stat).paginate_by_max_id(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id]) end end diff --git a/app/controllers/api/v1/scheduled_statuses_controller.rb b/app/controllers/api/v1/scheduled_statuses_controller.rb new file mode 100644 index 000000000..9950296f3 --- /dev/null +++ b/app/controllers/api/v1/scheduled_statuses_controller.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +class Api::V1::ScheduledStatusesController < Api::BaseController + include Authorization + + before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, except: [:update, :destroy] + before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:update, :destroy] + + before_action :set_statuses, only: :index + before_action :set_status, except: :index + + after_action :insert_pagination_headers, only: :index + + def index + render json: @statuses, each_serializer: REST::ScheduledStatusSerializer + end + + def show + render json: @status, serializer: REST::ScheduledStatusSerializer + end + + def update + @status.update!(scheduled_status_params) + render json: @status, serializer: REST::ScheduledStatusSerializer + end + + def destroy + @status.destroy! + render_empty + end + + private + + def set_statuses + @statuses = current_account.scheduled_statuses.paginate_by_id(limit_param(DEFAULT_STATUSES_LIMIT), params_slice(:max_id, :since_id, :min_id)) + end + + def set_status + @status = current_account.scheduled_statuses.find(params[:id]) + end + + def scheduled_status_params + params.permit(:scheduled_at) + end + + def pagination_params(core_params) + params.slice(:limit).permit(:limit).merge(core_params) + end + + def insert_pagination_headers + set_pagination_headers(next_path, prev_path) + end + + def next_path + if records_continue? + api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id) + end + end + + def prev_path + unless @statuses.empty? + api_v1_scheduled_statuses_url pagination_params(min_id: pagination_since_id) + end + end + + def records_continue? + @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT) + end + + def pagination_max_id + @statuses.last.id + end + + def pagination_since_id + @statuses.first.id + end +end diff --git a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb index 8f4070bc7..657e57831 100644 --- a/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb +++ b/app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb @@ -22,7 +22,7 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::BaseController def default_accounts Account - .includes(:favourites) + .includes(:favourites, :account_stat) .references(:favourites) .where(favourites: { status_id: @status.id }) end diff --git a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb index 93b83ce48..6851099f6 100644 --- a/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb +++ b/app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb @@ -21,11 +21,11 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::BaseController end def default_accounts - Account.includes(:statuses).references(:statuses) + Account.includes(:statuses, :account_stat).references(:statuses) end def paginated_statuses - Status.where(reblog_of_id: @status.id).paginate_by_max_id( + Status.where(reblog_of_id: @status.id).where(visibility: [:public, :unlisted]).paginate_by_max_id( limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:max_id], params[:since_id] diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 49a52f7a6..29b420c67 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -45,16 +45,17 @@ class Api::V1::StatusesController < Api::BaseController def create @status = PostStatusService.new.call(current_user.account, - status_params[:status], - status_params[:in_reply_to_id].blank? ? nil : Status.find(status_params[:in_reply_to_id]), + text: status_params[:status], + thread: status_params[:in_reply_to_id].blank? ? nil : Status.find(status_params[:in_reply_to_id]), media_ids: status_params[:media_ids], sensitive: status_params[:sensitive], spoiler_text: status_params[:spoiler_text], visibility: status_params[:visibility], + scheduled_at: status_params[:scheduled_at], application: doorkeeper_token.application, idempotency: request.headers['Idempotency-Key']) - render json: @status, serializer: REST::StatusSerializer + render json: @status, serializer: @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer end def destroy @@ -77,7 +78,7 @@ class Api::V1::StatusesController < Api::BaseController end def status_params - params.permit(:status, :in_reply_to_id, :sensitive, :spoiler_text, :visibility, media_ids: []) + params.permit(:status, :in_reply_to_id, :sensitive, :spoiler_text, :visibility, :scheduled_at, media_ids: []) end def pagination_params(core_params) diff --git a/app/controllers/api/v1/timelines/tag_controller.rb b/app/controllers/api/v1/timelines/tag_controller.rb index cf58d5cf4..92c32c178 100644 --- a/app/controllers/api/v1/timelines/tag_controller.rb +++ b/app/controllers/api/v1/timelines/tag_controller.rb @@ -45,7 +45,7 @@ class Api::V1::Timelines::TagController < Api::BaseController end def tag_timeline_statuses - Status.as_tag_timeline(@tag, current_account, truthy_param?(:local)) + HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none), current_account, truthy_param?(:local)) end def insert_pagination_headers diff --git a/app/controllers/api/web/embeds_controller.rb b/app/controllers/api/web/embeds_controller.rb index 987290a14..6231733b7 100644 --- a/app/controllers/api/web/embeds_controller.rb +++ b/app/controllers/api/web/embeds_controller.rb @@ -10,6 +10,7 @@ class Api::Web::EmbedsController < Api::Web::BaseController render json: status, serializer: OEmbedSerializer, width: 400 rescue ActiveRecord::RecordNotFound oembed = FetchOEmbedService.new.call(params[:url]) + oembed[:html] = Formatter.instance.sanitize(oembed[:html], Sanitize::Config::MASTODON_OEMBED) if oembed[:html].present? if oembed render json: oembed diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7bb14aa4c..b54e7b008 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -113,7 +113,7 @@ class ApplicationController < ActionController::Base klass.reload_stale_associations!(cached_keys_with_value.values) if klass.respond_to?(:reload_stale_associations!) unless uncached_ids.empty? - uncached = klass.where(id: uncached_ids).with_includes.map { |item| [item.id, item] }.to_h + uncached = klass.where(id: uncached_ids).with_includes.each_with_object({}) { |item, h| h[item.id] = item } uncached.each_value do |item| Rails.cache.write(item, item) diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb index 7af9cbe81..c28c7471c 100644 --- a/app/controllers/auth/confirmations_controller.rb +++ b/app/controllers/auth/confirmations_controller.rb @@ -6,9 +6,9 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController before_action :set_body_classes before_action :set_user, only: [:finish_signup] - # GET/PATCH /users/:id/finish_signup def finish_signup return unless request.patch? && params[:user] + if @user.update(user_params) @user.skip_reconfirmation! bypass_sign_in(@user) @@ -31,4 +31,12 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController def user_params params.require(:user).permit(:email) end + + def after_confirmation_path_for(_resource_name, user) + if user.created_by_application && truthy_param?(:redirect_to_app) + user.created_by_application.redirect_uri + else + super + end + end end diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 088832be3..f2a832542 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -26,6 +26,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController resource.locale = I18n.locale resource.invite_code = params[:invite_code] if resource.invite_code.blank? + resource.agreement = true resource.build_account if resource.account.nil? end diff --git a/app/controllers/concerns/remote_account_controller_concern.rb b/app/controllers/concerns/remote_account_controller_concern.rb deleted file mode 100644 index e17910642..000000000 --- a/app/controllers/concerns/remote_account_controller_concern.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -module RemoteAccountControllerConcern - extend ActiveSupport::Concern - - included do - layout 'public' - before_action :set_account - before_action :check_account_suspension - end - - private - - def set_account - @account = Account.find_remote!(params[:acct]) - end - - def check_account_suspension - gone if @account.suspended? - end -end diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb index e5d5e2ca6..91566c4fa 100644 --- a/app/controllers/concerns/signature_verification.rb +++ b/app/controllers/concerns/signature_verification.rb @@ -43,7 +43,13 @@ module SignatureVerification return end - account = account_from_key_id(signature_params['keyId']) + account_stoplight = Stoplight("source:#{request.ip}") { account_from_key_id(signature_params['keyId']) } + .with_fallback { nil } + .with_threshold(1) + .with_cool_off_time(5.minutes.seconds) + .with_error_handler { |error, handle| error.is_a?(HTTP::Error) ? handle.call(error) : raise(error) } + + account = account_stoplight.run if account.nil? @signature_verification_failure_reason = "Public key not found for key #{signature_params['keyId']}" @@ -54,23 +60,26 @@ module SignatureVerification signature = Base64.decode64(signature_params['signature']) compare_signed_string = build_signed_string(signature_params['headers']) - if account.keypair.public_key.verify(OpenSSL::Digest::SHA256.new, signature, compare_signed_string) - @signed_request_account = account - @signed_request_account - elsif account.possibly_stale? - account = account.refresh! + return account unless verify_signature(account, signature, compare_signed_string).nil? - if account.keypair.public_key.verify(OpenSSL::Digest::SHA256.new, signature, compare_signed_string) - @signed_request_account = account - @signed_request_account - else - @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri}" - @signed_request_account = nil - end - else - @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri}" + account_stoplight = Stoplight("source:#{request.ip}") { account.possibly_stale? ? account.refresh! : account_refresh_key(account) } + .with_fallback { nil } + .with_threshold(1) + .with_cool_off_time(5.minutes.seconds) + .with_error_handler { |error, handle| error.is_a?(HTTP::Error) ? handle.call(error) : raise(error) } + + account = account_stoplight.run + + if account.nil? + @signature_verification_failure_reason = "Public key not found for key #{signature_params['keyId']}" @signed_request_account = nil + return end + + return account unless verify_signature(account, signature, compare_signed_string).nil? + + @signature_verification_failure_reason = "Verification failed for #{account.username}@#{account.domain} #{account.uri}" + @signed_request_account = nil end def request_body @@ -79,6 +88,15 @@ module SignatureVerification private + def verify_signature(account, signature, compare_signed_string) + if account.keypair.public_key.verify(OpenSSL::Digest::SHA256.new, signature, compare_signed_string) + @signed_request_account = account + @signed_request_account + end + rescue OpenSSL::PKey::RSAError + nil + end + def build_signed_string(signed_headers) signed_headers = 'date' if signed_headers.blank? @@ -125,4 +143,9 @@ module SignatureVerification account end end + + def account_refresh_key(account) + return if account.local? || !account.activitypub? + ActivityPub::FetchRemoteAccountService.new.call(account.uri, only_key: true) + end end diff --git a/app/controllers/directories_controller.rb b/app/controllers/directories_controller.rb new file mode 100644 index 000000000..ff7ff4a42 --- /dev/null +++ b/app/controllers/directories_controller.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +class DirectoriesController < ApplicationController + layout 'public' + + before_action :check_enabled + before_action :set_instance_presenter + before_action :set_tag, only: :show + before_action :set_tags + before_action :set_accounts + + def index + render :index + end + + def show + render :index + end + + private + + def check_enabled + return not_found unless Setting.profile_directory + end + + def set_tag + @tag = Tag.discoverable.find_by!(name: params[:id].downcase) + end + + def set_tags + @tags = Tag.discoverable.limit(30).reject { |tag| tag.cached_sample_accounts.empty? } + end + + def set_accounts + @accounts = Account.discoverable.page(params[:page]).per(40).tap do |query| + query.merge!(Account.tagged_with(@tag.id)) if @tag + end + end + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end +end diff --git a/app/controllers/media_controller.rb b/app/controllers/media_controller.rb index 88c7232dd..8e1624ce1 100644 --- a/app/controllers/media_controller.rb +++ b/app/controllers/media_controller.rb @@ -6,12 +6,17 @@ class MediaController < ApplicationController before_action :set_media_attachment before_action :verify_permitted_status! + content_security_policy only: :player do |p| + p.frame_ancestors(false) + end + def show redirect_to @media_attachment.file.url(:original) end def player @body_classes = 'player' + response.headers['X-Frame-Options'] = 'ALLOWALL' raise ActiveRecord::RecordNotFound unless @media_attachment.video? || @media_attachment.gifv? end diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb index 6299a1e13..cc6993c52 100644 --- a/app/controllers/remote_interaction_controller.rb +++ b/app/controllers/remote_interaction_controller.rb @@ -5,6 +5,7 @@ class RemoteInteractionController < ApplicationController layout 'modal' + before_action :set_interaction_type before_action :set_status before_action :set_body_classes @@ -45,4 +46,8 @@ class RemoteInteractionController < ApplicationController @body_classes = 'modal-layout' @hide_header = true end + + def set_interaction_type + @interaction_type = %w(reply reblog favourite).include?(params[:type]) ? params[:type] : 'reply' + end end diff --git a/app/controllers/settings/applications_controller.rb b/app/controllers/settings/applications_controller.rb index a1a2c57fa..ed3f82a8e 100644 --- a/app/controllers/settings/applications_controller.rb +++ b/app/controllers/settings/applications_controller.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true -class Settings::ApplicationsController < ApplicationController +class Settings::ApplicationsController < Settings::BaseController layout 'admin' before_action :authenticate_user! before_action :set_application, only: [:show, :update, :destroy, :regenerate] before_action :prepare_scopes, only: [:create, :update] - before_action :set_body_classes def index @applications = current_user.applications.order(id: :desc).page(params[:page]) @@ -70,8 +69,4 @@ class Settings::ApplicationsController < ApplicationController scopes = params.fetch(:doorkeeper_application, {}).fetch(:scopes, nil) params[:doorkeeper_application][:scopes] = scopes.join(' ') if scopes.is_a? Array end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/base_controller.rb b/app/controllers/settings/base_controller.rb new file mode 100644 index 000000000..9bb14afa2 --- /dev/null +++ b/app/controllers/settings/base_controller.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Settings::BaseController < ApplicationController + before_action :set_body_classes + + private + + def set_body_classes + @body_classes = 'admin' + end +end diff --git a/app/controllers/settings/deletes_controller.rb b/app/controllers/settings/deletes_controller.rb index 97f3946c8..dd19aadf6 100644 --- a/app/controllers/settings/deletes_controller.rb +++ b/app/controllers/settings/deletes_controller.rb @@ -1,11 +1,10 @@ # frozen_string_literal: true -class Settings::DeletesController < ApplicationController +class Settings::DeletesController < Settings::BaseController layout 'admin' before_action :check_enabled_deletion before_action :authenticate_user! - before_action :set_body_classes def show @confirmation = Form::DeleteConfirmation.new @@ -30,8 +29,4 @@ class Settings::DeletesController < ApplicationController def delete_params params.require(:form_delete_confirmation).permit(:password) end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/exports/blocked_domains_controller.rb b/app/controllers/settings/exports/blocked_domains_controller.rb new file mode 100644 index 000000000..6676ce340 --- /dev/null +++ b/app/controllers/settings/exports/blocked_domains_controller.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Settings + module Exports + class BlockedDomainsController < ApplicationController + include ExportControllerConcern + + def index + send_export_file + end + + private + + def export_data + @export.to_blocked_domains_csv + end + end + end +end diff --git a/app/controllers/settings/exports/lists_controller.rb b/app/controllers/settings/exports/lists_controller.rb new file mode 100644 index 000000000..cf5a9de44 --- /dev/null +++ b/app/controllers/settings/exports/lists_controller.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Settings + module Exports + class ListsController < ApplicationController + include ExportControllerConcern + + def index + send_export_file + end + + private + + def export_data + @export.to_lists_csv + end + end + end +end diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index 3a2334ef0..0135f2189 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true -class Settings::ExportsController < ApplicationController +class Settings::ExportsController < Settings::BaseController include Authorization layout 'admin' before_action :authenticate_user! - before_action :set_body_classes def show @export = Export.new(current_account) @@ -21,10 +20,4 @@ class Settings::ExportsController < ApplicationController redirect_to settings_export_path end - - private - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/follower_domains_controller.rb b/app/controllers/settings/follower_domains_controller.rb index 9c39e66bb..ce8ec985d 100644 --- a/app/controllers/settings/follower_domains_controller.rb +++ b/app/controllers/settings/follower_domains_controller.rb @@ -1,10 +1,9 @@ # frozen_string_literal: true -class Settings::FollowerDomainsController < ApplicationController +class Settings::FollowerDomainsController < Settings::BaseController layout 'admin' before_action :authenticate_user! - before_action :set_body_classes def show @account = current_account @@ -26,8 +25,4 @@ class Settings::FollowerDomainsController < ApplicationController def bulk_params params.permit(select: []) end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/imports_controller.rb b/app/controllers/settings/imports_controller.rb index e9548ce62..38f2e39c1 100644 --- a/app/controllers/settings/imports_controller.rb +++ b/app/controllers/settings/imports_controller.rb @@ -1,11 +1,10 @@ # frozen_string_literal: true -class Settings::ImportsController < ApplicationController +class Settings::ImportsController < Settings::BaseController layout 'admin' before_action :authenticate_user! before_action :set_account - before_action :set_body_classes def show @import = Import.new @@ -32,8 +31,4 @@ class Settings::ImportsController < ApplicationController def import_params params.require(:import).permit(:data, :type) end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/migrations_controller.rb b/app/controllers/settings/migrations_controller.rb index bd4f9c87a..59eb48779 100644 --- a/app/controllers/settings/migrations_controller.rb +++ b/app/controllers/settings/migrations_controller.rb @@ -1,10 +1,9 @@ # frozen_string_literal: true -class Settings::MigrationsController < ApplicationController +class Settings::MigrationsController < Settings::BaseController layout 'admin' before_action :authenticate_user! - before_action :set_body_classes def show @migration = Form::Migration.new(account: current_account.moved_to_account) @@ -32,8 +31,4 @@ class Settings::MigrationsController < ApplicationController current_account.moved_to_account_id != @migration.account&.id && current_account.id != @migration.account&.id end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/notifications_controller.rb b/app/controllers/settings/notifications_controller.rb index d0754296c..da8a03d96 100644 --- a/app/controllers/settings/notifications_controller.rb +++ b/app/controllers/settings/notifications_controller.rb @@ -1,10 +1,9 @@ # frozen_string_literal: true -class Settings::NotificationsController < ApplicationController +class Settings::NotificationsController < Settings::BaseController layout 'admin' before_action :authenticate_user! - before_action :set_body_classes def show; end @@ -30,8 +29,4 @@ class Settings::NotificationsController < ApplicationController interactions: %i(must_be_follower must_be_following must_be_following_dm) ) end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb index 7bb5fb112..41df3bde2 100644 --- a/app/controllers/settings/preferences_controller.rb +++ b/app/controllers/settings/preferences_controller.rb @@ -1,10 +1,9 @@ # frozen_string_literal: true -class Settings::PreferencesController < ApplicationController +class Settings::PreferencesController < Settings::BaseController layout 'admin' before_action :authenticate_user! - before_action :set_body_classes def show; end @@ -48,12 +47,9 @@ class Settings::PreferencesController < ApplicationController :setting_noindex, :setting_theme, :setting_hide_network, + :setting_aggregate_reblogs, notification_emails: %i(follow follow_request reblog favourite mention digest report), interactions: %i(must_be_follower must_be_following) ) end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index 5b3bfd71f..db9081fdf 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -1,13 +1,12 @@ # frozen_string_literal: true -class Settings::ProfilesController < ApplicationController +class Settings::ProfilesController < Settings::BaseController include ObfuscateFilename layout 'admin' before_action :authenticate_user! before_action :set_account - before_action :set_body_classes obfuscate_filename [:account, :avatar] obfuscate_filename [:account, :header] @@ -29,14 +28,10 @@ class Settings::ProfilesController < ApplicationController private def account_params - params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, fields_attributes: [:name, :value]) + params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value]) end def set_account @account = current_user.account end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/sessions_controller.rb b/app/controllers/settings/sessions_controller.rb index 74cebc07b..11b150ffd 100644 --- a/app/controllers/settings/sessions_controller.rb +++ b/app/controllers/settings/sessions_controller.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true -class Settings::SessionsController < ApplicationController +class Settings::SessionsController < Settings::BaseController before_action :set_session, only: :destroy - before_action :set_body_classes def destroy @session.destroy! @@ -15,8 +14,4 @@ class Settings::SessionsController < ApplicationController def set_session @session = current_user.session_activations.find(params[:id]) end - - def set_body_classes - @body_classes = 'admin' - end end diff --git a/app/controllers/settings/two_factor_authentication/confirmations_controller.rb b/app/controllers/settings/two_factor_authentication/confirmations_controller.rb index ee567c2a7..d87117a50 100644 --- a/app/controllers/settings/two_factor_authentication/confirmations_controller.rb +++ b/app/controllers/settings/two_factor_authentication/confirmations_controller.rb @@ -2,12 +2,11 @@ module Settings module TwoFactorAuthentication - class ConfirmationsController < ApplicationController + class ConfirmationsController < BaseController layout 'admin' before_action :authenticate_user! before_action :ensure_otp_secret - before_action :set_body_classes def new prepare_two_factor_form @@ -44,10 +43,6 @@ module Settings def ensure_otp_secret redirect_to settings_two_factor_authentication_path unless current_user.otp_secret end - - def set_body_classes - @body_classes = 'admin' - end end end end diff --git a/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb b/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb index bfb103620..c78166c65 100644 --- a/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb +++ b/app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb @@ -2,11 +2,10 @@ module Settings module TwoFactorAuthentication - class RecoveryCodesController < ApplicationController + class RecoveryCodesController < BaseController layout 'admin' before_action :authenticate_user! - before_action :set_body_classes def create @recovery_codes = current_user.generate_otp_backup_codes! @@ -14,12 +13,6 @@ module Settings flash[:notice] = I18n.t('two_factor_authentication.recovery_codes_regenerated') render :index end - - private - - def set_body_classes - @body_classes = 'admin' - end end end end diff --git a/app/controllers/settings/two_factor_authentications_controller.rb b/app/controllers/settings/two_factor_authentications_controller.rb index e4d8aed41..e12c43074 100644 --- a/app/controllers/settings/two_factor_authentications_controller.rb +++ b/app/controllers/settings/two_factor_authentications_controller.rb @@ -1,12 +1,11 @@ # frozen_string_literal: true module Settings - class TwoFactorAuthenticationsController < ApplicationController + class TwoFactorAuthenticationsController < BaseController layout 'admin' before_action :authenticate_user! before_action :verify_otp_required, only: [:create] - before_action :set_body_classes def show @confirmation = Form::TwoFactorConfirmation.new @@ -44,9 +43,5 @@ module Settings current_user.validate_and_consume_otp!(confirmation_params[:code]) || current_user.invalidate_otp_backup_code!(confirmation_params[:code]) end - - def set_body_classes - @body_classes = 'admin' - end end end diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index 0f3fe198f..15d59fd89 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -65,12 +65,13 @@ class StatusesController < ApplicationController private - def create_descendant_thread(depth, statuses) + def create_descendant_thread(starting_depth, statuses) + depth = starting_depth + statuses.size if depth < DESCENDANTS_DEPTH_LIMIT - { statuses: statuses } + { statuses: statuses, starting_depth: starting_depth } else next_status = statuses.pop - { statuses: statuses, next_status: next_status } + { statuses: statuses, starting_depth: starting_depth, next_status: next_status } end end @@ -101,16 +102,19 @@ class StatusesController < ApplicationController @descendant_threads = [] if descendants.present? - statuses = [descendants.first] - depth = 1 + statuses = [descendants.first] + starting_depth = 0 descendants.drop(1).each_with_index do |descendant, index| if descendants[index].id == descendant.in_reply_to_id - depth += 1 statuses << descendant else - @descendant_threads << create_descendant_thread(depth, statuses) + @descendant_threads << create_descendant_thread(starting_depth, statuses) + # The thread is broken, assume it's a reply to the root status + starting_depth = 0 + + # ... unless we can find its ancestor in one of the already-processed threads @descendant_threads.reverse_each do |descendant_thread| statuses = descendant_thread[:statuses] @@ -119,18 +123,16 @@ class StatusesController < ApplicationController end if index.present? - depth += index - statuses.size + starting_depth = descendant_thread[:starting_depth] + index + 1 break end - - depth -= statuses.size end statuses = [descendant] end end - @descendant_threads << create_descendant_thread(depth, statuses) + @descendant_threads << create_descendant_thread(starting_depth, statuses) end @max_descendant_thread_id = @descendant_threads.pop[:statuses].first.id if descendants.size >= DESCENDANTS_LIMIT diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 8772509d5..4694c823a 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -3,6 +3,8 @@ class TagsController < ApplicationController PAGE_SIZE = 20 + layout 'public' + before_action :set_body_classes before_action :set_instance_presenter @@ -16,14 +18,15 @@ class TagsController < ApplicationController end format.rss do - @statuses = Status.as_tag_timeline(@tag).limit(PAGE_SIZE) + @statuses = HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none)).limit(PAGE_SIZE) @statuses = cache_collection(@statuses, Status) render xml: RSS::TagSerializer.render(@tag, @statuses) end format.json do - @statuses = Status.as_tag_timeline(@tag, current_account, params[:local]).paginate_by_max_id(PAGE_SIZE, params[:max_id]) + @statuses = HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none), current_account, params[:local]) + .paginate_by_max_id(PAGE_SIZE, params[:max_id]) @statuses = cache_collection(@statuses, Status) render json: collection_presenter, @@ -46,7 +49,7 @@ class TagsController < ApplicationController def collection_presenter ActivityPub::CollectionPresenter.new( - id: tag_url(@tag), + id: tag_url(@tag, params.slice(:any, :all, :none)), type: :ordered, size: @tag.statuses.count, items: @statuses.map { |s| ActivityPub::TagManager.instance.uri_for(s) } diff --git a/app/helpers/admin/account_moderation_notes_helper.rb b/app/helpers/admin/account_moderation_notes_helper.rb index 4d8f0352e..40b2a5289 100644 --- a/app/helpers/admin/account_moderation_notes_helper.rb +++ b/app/helpers/admin/account_moderation_notes_helper.rb @@ -24,7 +24,7 @@ module Admin::AccountModerationNotesHelper def name_tag_classes(account, inline = false) classes = [inline ? 'inline-name-tag' : 'name-tag'] - classes << 'suspended' if account.suspended? + classes << 'suspended' if account.suspended? || (account.local? && account.user.nil?) classes.join(' ') end end diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index c28f0be6b..359d60b60 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -23,6 +23,8 @@ module Admin::ActionLogsHelper link_to record.domain, "https://#{record.domain}" when 'Status' link_to record.account.acct, TagManager.instance.url_for(record) + when 'AccountWarning' + link_to record.target_account.acct, admin_account_path(record.target_account_id) end end @@ -34,6 +36,7 @@ module Admin::ActionLogsHelper link_to attributes['domain'], "https://#{attributes['domain']}" when 'Status' tmp_status = Status.new(attributes.except('reblogs_count', 'favourites_count')) + if tmp_status.account link_to tmp_status.account&.acct || "##{tmp_status.account_id}", admin_account_path(tmp_status.account_id) else @@ -81,6 +84,8 @@ module Admin::ActionLogsHelper 'envelope' when 'Status' 'pencil' + when 'AccountWarning' + 'warning' end end @@ -92,7 +97,7 @@ module Admin::ActionLogsHelper opposite_verbs?(log) ? 'negative' : 'positive' when :update, :reset_password, :disable_2fa, :memorialize, :change_email 'neutral' - when :demote, :silence, :disable, :suspend, :remove_avatar, :reopen + when :demote, :silence, :disable, :suspend, :remove_avatar, :remove_header, :reopen 'negative' when :destroy opposite_verbs?(log) ? 'positive' : 'negative' @@ -104,6 +109,6 @@ module Admin::ActionLogsHelper private def opposite_verbs?(log) - %w(DomainBlock EmailDomainBlock).include?(log.target_type) + %w(DomainBlock EmailDomainBlock AccountWarning).include?(log.target_type) end end diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb index 60e5142e3..97beb587f 100644 --- a/app/helpers/admin/filter_helper.rb +++ b/app/helpers/admin/filter_helper.rb @@ -1,12 +1,14 @@ # frozen_string_literal: true module Admin::FilterHelper - ACCOUNT_FILTERS = %i(local remote by_domain silenced suspended alphabetic username display_name email ip staff).freeze + ACCOUNT_FILTERS = %i(local remote by_domain active silenced suspended username display_name email ip staff).freeze REPORT_FILTERS = %i(resolved account_id target_account_id).freeze INVITE_FILTER = %i(available expired).freeze CUSTOM_EMOJI_FILTERS = %i(local remote by_domain shortcode).freeze + TAGS_FILTERS = %i(hidden).freeze + INSTANCES_FILTERS = %i(limited).freeze - FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS + FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS + TAGS_FILTERS + INSTANCES_FILTERS def filter_link_to(text, link_to_params, link_class_params = link_to_params) new_url = filtered_url_for(link_to_params) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c33975cac..5097a0953 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -69,8 +69,12 @@ module ApplicationHelper tag(:meta, content: content, property: property) end - def react_component(name, props = {}) - content_tag(:div, nil, data: { component: name.to_s.camelcase, props: Oj.dump(props) }) + def react_component(name, props = {}, &block) + if block.nil? + content_tag(:div, nil, data: { component: name.to_s.camelcase, props: Oj.dump(props) }) + else + content_tag(:div, data: { component: name.to_s.camelcase, props: Oj.dump(props) }, &block) + end end def body_classes diff --git a/app/helpers/home_helper.rb b/app/helpers/home_helper.rb index ba7c443c2..9b3f1380b 100644 --- a/app/helpers/home_helper.rb +++ b/app/helpers/home_helper.rb @@ -23,7 +23,7 @@ module HomeHelper else link_to(path || TagManager.instance.url_for(account), class: 'account__display-name') do content_tag(:div, class: 'account__avatar-wrapper') do - content_tag(:div, '', class: 'account__avatar', style: "width: #{size}px; height: #{size}px; background-size: #{size}px #{size}px; background-image: url(#{account.avatar.url})") + content_tag(:div, '', class: 'account__avatar', style: "width: #{size}px; height: #{size}px; background-size: #{size}px #{size}px; background-image: url(#{full_asset_url(current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url)})") end + content_tag(:span, class: 'display-name') do content_tag(:bdi) do diff --git a/app/helpers/mailer_helper.rb b/app/helpers/mailer_helper.rb deleted file mode 100644 index b7e3a8da3..000000000 --- a/app/helpers/mailer_helper.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -module MailerHelper -end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index ed873ceed..0e957e946 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -30,6 +30,7 @@ module SettingsHelper ja: '日本語', ka: 'ქართული', ko: '한국어', + ml: 'മലയാളം', nl: 'Nederlands', no: 'Norsk', oc: 'Occitan', diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb index ac655f622..033d435c4 100644 --- a/app/helpers/stream_entries_helper.rb +++ b/app/helpers/stream_entries_helper.rb @@ -34,12 +34,14 @@ module StreamEntriesHelper end end - def account_badge(account) + def account_badge(account, all: false) if account.bot? content_tag(:div, content_tag(:div, t('accounts.roles.bot'), class: 'account-role bot'), class: 'roles') - elsif Setting.show_staff_badge && account.user_staff? + elsif (Setting.show_staff_badge && account.user_staff?) || all content_tag(:div, class: 'roles') do - if account.user_admin? + if all && !account.user_staff? + content_tag(:div, t('admin.accounts.roles.user'), class: 'account-role') + elsif account.user_admin? content_tag(:div, t('accounts.roles.admin'), class: 'account-role admin') elsif account.user_moderator? content_tag(:div, t('accounts.roles.moderator'), class: 'account-role moderator') diff --git a/app/javascript/images/icon_flag.svg b/app/javascript/images/icon_flag.svg new file mode 100644 index 000000000..3939c9d2b --- /dev/null +++ b/app/javascript/images/icon_flag.svg @@ -0,0 +1,4 @@ + diff --git a/app/javascript/images/mailer/icon_warning.png b/app/javascript/images/mailer/icon_warning.png new file mode 100644 index 000000000..7baaac61c Binary files /dev/null and b/app/javascript/images/mailer/icon_warning.png differ diff --git a/app/javascript/images/screen_federation.svg b/app/javascript/images/screen_federation.svg new file mode 100644 index 000000000..7019a7356 --- /dev/null +++ b/app/javascript/images/screen_federation.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/screen_hello.svg b/app/javascript/images/screen_hello.svg new file mode 100644 index 000000000..7bcdd0afd --- /dev/null +++ b/app/javascript/images/screen_hello.svg @@ -0,0 +1 @@ + diff --git a/app/javascript/images/screen_interactions.svg b/app/javascript/images/screen_interactions.svg new file mode 100644 index 000000000..66a36f978 --- /dev/null +++ b/app/javascript/images/screen_interactions.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/javascript/mastodon/actions/accounts.js b/app/javascript/mastodon/actions/accounts.js index cbae62a0f..d4a824e2c 100644 --- a/app/javascript/mastodon/actions/accounts.js +++ b/app/javascript/mastodon/actions/accounts.js @@ -145,12 +145,14 @@ export function fetchAccountFail(id, error) { export function followAccount(id, reblogs = true) { return (dispatch, getState) => { const alreadyFollowing = getState().getIn(['relationships', id, 'following']); - dispatch(followAccountRequest(id)); + const locked = getState().getIn(['accounts', id, 'locked'], false); + + dispatch(followAccountRequest(id, locked)); api(getState).post(`/api/v1/accounts/${id}/follow`, { reblogs }).then(response => { dispatch(followAccountSuccess(response.data, alreadyFollowing)); }).catch(error => { - dispatch(followAccountFail(error)); + dispatch(followAccountFail(error, locked)); }); }; }; @@ -167,10 +169,12 @@ export function unfollowAccount(id) { }; }; -export function followAccountRequest(id) { +export function followAccountRequest(id, locked) { return { type: ACCOUNT_FOLLOW_REQUEST, id, + locked, + skipLoading: true, }; }; @@ -179,13 +183,16 @@ export function followAccountSuccess(relationship, alreadyFollowing) { type: ACCOUNT_FOLLOW_SUCCESS, relationship, alreadyFollowing, + skipLoading: true, }; }; -export function followAccountFail(error) { +export function followAccountFail(error, locked) { return { type: ACCOUNT_FOLLOW_FAIL, error, + locked, + skipLoading: true, }; }; @@ -193,6 +200,7 @@ export function unfollowAccountRequest(id) { return { type: ACCOUNT_UNFOLLOW_REQUEST, id, + skipLoading: true, }; }; @@ -201,6 +209,7 @@ export function unfollowAccountSuccess(relationship, statuses) { type: ACCOUNT_UNFOLLOW_SUCCESS, relationship, statuses, + skipLoading: true, }; }; @@ -208,6 +217,7 @@ export function unfollowAccountFail(error) { return { type: ACCOUNT_UNFOLLOW_FAIL, error, + skipLoading: true, }; }; diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js index 86d83122f..a4352faab 100644 --- a/app/javascript/mastodon/actions/compose.js +++ b/app/javascript/mastodon/actions/compose.js @@ -130,6 +130,12 @@ export function submitCompose(routerHistory) { 'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']), }, }).then(function (response) { + if (response.data.visibility === 'direct' && getState().getIn(['conversations', 'mounted']) <= 0 && routerHistory) { + routerHistory.push('/timelines/direct'); + } else if (routerHistory && routerHistory.location.pathname === '/statuses/new' && window.history.state) { + routerHistory.goBack(); + } + dispatch(insertIntoTagHistory(response.data.tags, status)); dispatch(submitComposeSuccess({ ...response.data })); @@ -142,9 +148,7 @@ export function submitCompose(routerHistory) { } }; - if (response.data.visibility === 'direct' && getState().getIn(['conversations', 'mounted']) <= 0 && routerHistory) { - routerHistory.push('/timelines/direct'); - } else if (response.data.visibility !== 'direct') { + if (response.data.visibility !== 'direct') { insertIfOnline('home'); } diff --git a/app/javascript/mastodon/actions/conversations.js b/app/javascript/mastodon/actions/conversations.js index aefd2fef7..3c2ea9680 100644 --- a/app/javascript/mastodon/actions/conversations.js +++ b/app/javascript/mastodon/actions/conversations.js @@ -38,7 +38,7 @@ export const expandConversations = ({ maxId } = {}) => (dispatch, getState) => { const params = { max_id: maxId }; if (!maxId) { - params.since_id = getState().getIn(['conversations', 0, 'last_status']); + params.since_id = getState().getIn(['conversations', 'items', 0, 'last_status']); } api(getState).get('/api/v1/conversations', { params }) diff --git a/app/javascript/mastodon/actions/custom_emojis.js b/app/javascript/mastodon/actions/custom_emojis.js index aa37bc423..7b7d0091b 100644 --- a/app/javascript/mastodon/actions/custom_emojis.js +++ b/app/javascript/mastodon/actions/custom_emojis.js @@ -19,6 +19,7 @@ export function fetchCustomEmojis() { export function fetchCustomEmojisRequest() { return { type: CUSTOM_EMOJIS_FETCH_REQUEST, + skipLoading: true, }; }; @@ -26,6 +27,7 @@ export function fetchCustomEmojisSuccess(custom_emojis) { return { type: CUSTOM_EMOJIS_FETCH_SUCCESS, custom_emojis, + skipLoading: true, }; }; @@ -33,5 +35,6 @@ export function fetchCustomEmojisFail(error) { return { type: CUSTOM_EMOJIS_FETCH_FAIL, error, + skipLoading: true, }; }; diff --git a/app/javascript/mastodon/actions/favourites.js b/app/javascript/mastodon/actions/favourites.js index 124cf8c44..9448b1efe 100644 --- a/app/javascript/mastodon/actions/favourites.js +++ b/app/javascript/mastodon/actions/favourites.js @@ -30,6 +30,7 @@ export function fetchFavouritedStatuses() { export function fetchFavouritedStatusesRequest() { return { type: FAVOURITED_STATUSES_FETCH_REQUEST, + skipLoading: true, }; }; @@ -38,6 +39,7 @@ export function fetchFavouritedStatusesSuccess(statuses, next) { type: FAVOURITED_STATUSES_FETCH_SUCCESS, statuses, next, + skipLoading: true, }; }; @@ -45,6 +47,7 @@ export function fetchFavouritedStatusesFail(error) { return { type: FAVOURITED_STATUSES_FETCH_FAIL, error, + skipLoading: true, }; }; diff --git a/app/javascript/mastodon/actions/lists.js b/app/javascript/mastodon/actions/lists.js index 12cb17159..d736bacef 100644 --- a/app/javascript/mastodon/actions/lists.js +++ b/app/javascript/mastodon/actions/lists.js @@ -42,6 +42,13 @@ export const LIST_EDITOR_REMOVE_REQUEST = 'LIST_EDITOR_REMOVE_REQUEST'; export const LIST_EDITOR_REMOVE_SUCCESS = 'LIST_EDITOR_REMOVE_SUCCESS'; export const LIST_EDITOR_REMOVE_FAIL = 'LIST_EDITOR_REMOVE_FAIL'; +export const LIST_ADDER_RESET = 'LIST_ADDER_RESET'; +export const LIST_ADDER_SETUP = 'LIST_ADDER_SETUP'; + +export const LIST_ADDER_LISTS_FETCH_REQUEST = 'LIST_ADDER_LISTS_FETCH_REQUEST'; +export const LIST_ADDER_LISTS_FETCH_SUCCESS = 'LIST_ADDER_LISTS_FETCH_SUCCESS'; +export const LIST_ADDER_LISTS_FETCH_FAIL = 'LIST_ADDER_LISTS_FETCH_FAIL'; + export const fetchList = id => (dispatch, getState) => { if (getState().getIn(['lists', id])) { return; @@ -316,3 +323,50 @@ export const removeFromListFail = (listId, accountId, error) => ({ accountId, error, }); + +export const resetListAdder = () => ({ + type: LIST_ADDER_RESET, +}); + +export const setupListAdder = accountId => (dispatch, getState) => { + dispatch({ + type: LIST_ADDER_SETUP, + account: getState().getIn(['accounts', accountId]), + }); + dispatch(fetchLists()); + dispatch(fetchAccountLists(accountId)); +}; + +export const fetchAccountLists = accountId => (dispatch, getState) => { + dispatch(fetchAccountListsRequest(accountId)); + + api(getState).get(`/api/v1/accounts/${accountId}/lists`) + .then(({ data }) => dispatch(fetchAccountListsSuccess(accountId, data))) + .catch(err => dispatch(fetchAccountListsFail(accountId, err))); +}; + +export const fetchAccountListsRequest = id => ({ + type:LIST_ADDER_LISTS_FETCH_REQUEST, + id, +}); + +export const fetchAccountListsSuccess = (id, lists) => ({ + type: LIST_ADDER_LISTS_FETCH_SUCCESS, + id, + lists, +}); + +export const fetchAccountListsFail = (id, err) => ({ + type: LIST_ADDER_LISTS_FETCH_FAIL, + id, + err, +}); + +export const addToListAdder = listId => (dispatch, getState) => { + dispatch(addToList(listId, getState().getIn(['listAdder', 'accountId']))); +}; + +export const removeFromListAdder = listId => (dispatch, getState) => { + dispatch(removeFromList(listId, getState().getIn(['listAdder', 'accountId']))); +}; + diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index ad6430b82..4c145febc 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -8,6 +8,7 @@ import { importFetchedStatuses, } from './importer'; import { defineMessages } from 'react-intl'; +import { List as ImmutableList } from 'immutable'; import { unescapeHTML } from '../utils/html'; import { getFilters, regexFromFilters } from '../selectors'; @@ -18,6 +19,8 @@ export const NOTIFICATIONS_EXPAND_REQUEST = 'NOTIFICATIONS_EXPAND_REQUEST'; export const NOTIFICATIONS_EXPAND_SUCCESS = 'NOTIFICATIONS_EXPAND_SUCCESS'; export const NOTIFICATIONS_EXPAND_FAIL = 'NOTIFICATIONS_EXPAND_FAIL'; +export const NOTIFICATIONS_FILTER_SET = 'NOTIFICATIONS_FILTER_SET'; + export const NOTIFICATIONS_CLEAR = 'NOTIFICATIONS_CLEAR'; export const NOTIFICATIONS_SCROLL_TOP = 'NOTIFICATIONS_SCROLL_TOP'; @@ -88,11 +91,18 @@ export function updateNotifications(notification, intlMessages, intlLocale) { const excludeTypesFromSettings = state => state.getIn(['settings', 'notifications', 'shows']).filter(enabled => !enabled).keySeq().toJS(); +const excludeTypesFromFilter = filter => { + const allTypes = ImmutableList(['follow', 'favourite', 'reblog', 'mention']); + return allTypes.filterNot(item => item === filter).toJS(); +}; + const noOp = () => {}; export function expandNotifications({ maxId } = {}, done = noOp) { return (dispatch, getState) => { + const activeFilter = getState().getIn(['settings', 'notifications', 'quickFilter', 'active']); const notifications = getState().get('notifications'); + const isLoadingMore = !!maxId; if (notifications.get('isLoading')) { done(); @@ -101,14 +111,16 @@ export function expandNotifications({ maxId } = {}, done = noOp) { const params = { max_id: maxId, - exclude_types: excludeTypesFromSettings(getState()), + exclude_types: activeFilter === 'all' + ? excludeTypesFromSettings(getState()) + : excludeTypesFromFilter(activeFilter), }; if (!maxId && notifications.get('items').size > 0) { - params.since_id = notifications.getIn(['items', 0]); + params.since_id = notifications.getIn(['items', 0, 'id']); } - dispatch(expandNotificationsRequest()); + dispatch(expandNotificationsRequest(isLoadingMore)); api(getState).get('/api/v1/notifications', { params }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); @@ -116,34 +128,37 @@ export function expandNotifications({ maxId } = {}, done = noOp) { dispatch(importFetchedAccounts(response.data.map(item => item.account))); dispatch(importFetchedStatuses(response.data.map(item => item.status).filter(status => !!status))); - dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null)); + dispatch(expandNotificationsSuccess(response.data, next ? next.uri : null, isLoadingMore)); fetchRelatedRelationships(dispatch, response.data); done(); }).catch(error => { - dispatch(expandNotificationsFail(error)); + dispatch(expandNotificationsFail(error, isLoadingMore)); done(); }); }; }; -export function expandNotificationsRequest() { +export function expandNotificationsRequest(isLoadingMore) { return { type: NOTIFICATIONS_EXPAND_REQUEST, + skipLoading: !isLoadingMore, }; }; -export function expandNotificationsSuccess(notifications, next) { +export function expandNotificationsSuccess(notifications, next, isLoadingMore) { return { type: NOTIFICATIONS_EXPAND_SUCCESS, notifications, next, + skipLoading: !isLoadingMore, }; }; -export function expandNotificationsFail(error) { +export function expandNotificationsFail(error, isLoadingMore) { return { type: NOTIFICATIONS_EXPAND_FAIL, error, + skipLoading: !isLoadingMore, }; }; @@ -163,3 +178,14 @@ export function scrollTopNotifications(top) { top, }; }; + +export function setFilter (filterType) { + return dispatch => { + dispatch({ + type: NOTIFICATIONS_FILTER_SET, + path: ['notifications', 'quickFilter', 'active'], + value: filterType, + }); + dispatch(expandNotifications()); + }; +}; diff --git a/app/javascript/mastodon/actions/onboarding.js b/app/javascript/mastodon/actions/onboarding.js index a161c50ef..a1dd3a731 100644 --- a/app/javascript/mastodon/actions/onboarding.js +++ b/app/javascript/mastodon/actions/onboarding.js @@ -1,14 +1,8 @@ -import { openModal } from './modal'; import { changeSetting, saveSettings } from './settings'; -export function showOnboardingOnce() { - return (dispatch, getState) => { - const alreadySeen = getState().getIn(['settings', 'onboarded']); +export const INTRODUCTION_VERSION = 20181216044202; - if (!alreadySeen) { - dispatch(openModal('ONBOARDING')); - dispatch(changeSetting(['onboarded'], true)); - dispatch(saveSettings()); - } - }; +export const closeOnboarding = () => dispatch => { + dispatch(changeSetting(['introductionVersion'], INTRODUCTION_VERSION)); + dispatch(saveSettings()); }; diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js index 8cf055540..cd319709d 100644 --- a/app/javascript/mastodon/actions/streaming.js +++ b/app/javascript/mastodon/actions/streaming.js @@ -12,7 +12,7 @@ import { getLocale } from '../locales'; const { messages } = getLocale(); -export function connectTimelineStream (timelineId, path, pollingRefresh = null) { +export function connectTimelineStream (timelineId, path, pollingRefresh = null, accept = null) { return connectStream (path, pollingRefresh, (dispatch, getState) => { const locale = getState().getIn(['meta', 'locale']); @@ -24,7 +24,7 @@ export function connectTimelineStream (timelineId, path, pollingRefresh = null) onReceive (data) { switch(data.event) { case 'update': - dispatch(updateTimeline(timelineId, JSON.parse(data.payload))); + dispatch(updateTimeline(timelineId, JSON.parse(data.payload), accept)); break; case 'delete': dispatch(deleteFromTimelines(data.payload)); @@ -51,6 +51,6 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => { export const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification); export const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`); export const connectPublicStream = ({ onlyMedia } = {}) => connectTimelineStream(`public${onlyMedia ? ':media' : ''}`, `public${onlyMedia ? ':media' : ''}`); -export const connectHashtagStream = tag => connectTimelineStream(`hashtag:${tag}`, `hashtag&tag=${tag}`); +export const connectHashtagStream = (id, tag, accept) => connectTimelineStream(`hashtag:${id}`, `hashtag&tag=${tag}`, null, accept); export const connectDirectStream = () => connectTimelineStream('direct', 'direct'); export const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`); diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index c4fc6448c..6e7bd027c 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -4,6 +4,7 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; export const TIMELINE_UPDATE = 'TIMELINE_UPDATE'; export const TIMELINE_DELETE = 'TIMELINE_DELETE'; +export const TIMELINE_CLEAR = 'TIMELINE_CLEAR'; export const TIMELINE_EXPAND_REQUEST = 'TIMELINE_EXPAND_REQUEST'; export const TIMELINE_EXPAND_SUCCESS = 'TIMELINE_EXPAND_SUCCESS'; @@ -13,9 +14,11 @@ export const TIMELINE_SCROLL_TOP = 'TIMELINE_SCROLL_TOP'; export const TIMELINE_DISCONNECT = 'TIMELINE_DISCONNECT'; -export function updateTimeline(timeline, status) { - return (dispatch, getState) => { - const references = status.reblog ? getState().get('statuses').filter((item, itemId) => (itemId === status.reblog.id || item.get('reblog') === status.reblog.id)).map((_, itemId) => itemId) : []; +export function updateTimeline(timeline, status, accept) { + return dispatch => { + if (typeof accept === 'function' && !accept(status)) { + return; + } dispatch(importFetchedStatus(status)); @@ -23,7 +26,6 @@ export function updateTimeline(timeline, status) { type: TIMELINE_UPDATE, timeline, status, - references, }); }; }; @@ -44,11 +46,24 @@ export function deleteFromTimelines(id) { }; }; +export function clearTimeline(timeline) { + return (dispatch) => { + dispatch({ type: TIMELINE_CLEAR, timeline }); + }; +}; + const noOp = () => {}; +const parseTags = (tags = {}, mode) => { + return (tags[mode] || []).map((tag) => { + return tag.value; + }); +}; + export function expandTimeline(timelineId, path, params = {}, done = noOp) { return (dispatch, getState) => { const timeline = getState().getIn(['timelines', timelineId], ImmutableMap()); + const isLoadingMore = !!params.max_id; if (timeline.get('isLoading')) { done(); @@ -59,15 +74,17 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { params.since_id = timeline.getIn(['items', 0]); } - dispatch(expandTimelineRequest(timelineId)); + const isLoadingRecent = !!params.since_id; + + dispatch(expandTimelineRequest(timelineId, isLoadingMore)); api(getState).get(path, { params }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedStatuses(response.data)); - dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.code === 206)); + dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.code === 206, isLoadingRecent, isLoadingMore)); done(); }).catch(error => { - dispatch(expandTimelineFail(timelineId, error)); + dispatch(expandTimelineFail(timelineId, error, isLoadingMore)); done(); }); }; @@ -79,31 +96,42 @@ export const expandCommunityTimeline = ({ maxId, onlyMedia } = {}, done = export const expandAccountTimeline = (accountId, { maxId, withReplies } = {}) => expandTimeline(`account:${accountId}${withReplies ? ':with_replies' : ''}`, `/api/v1/accounts/${accountId}/statuses`, { exclude_replies: !withReplies, max_id: maxId }); export const expandAccountFeaturedTimeline = accountId => expandTimeline(`account:${accountId}:pinned`, `/api/v1/accounts/${accountId}/statuses`, { pinned: true }); export const expandAccountMediaTimeline = (accountId, { maxId } = {}) => expandTimeline(`account:${accountId}:media`, `/api/v1/accounts/${accountId}/statuses`, { max_id: maxId, only_media: true }); -export const expandHashtagTimeline = (hashtag, { maxId } = {}, done = noOp) => expandTimeline(`hashtag:${hashtag}`, `/api/v1/timelines/tag/${hashtag}`, { max_id: maxId }, done); export const expandListTimeline = (id, { maxId } = {}, done = noOp) => expandTimeline(`list:${id}`, `/api/v1/timelines/list/${id}`, { max_id: maxId }, done); +export const expandHashtagTimeline = (hashtag, { maxId, tags } = {}, done = noOp) => { + return expandTimeline(`hashtag:${hashtag}`, `/api/v1/timelines/tag/${hashtag}`, { + max_id: maxId, + any: parseTags(tags, 'any'), + all: parseTags(tags, 'all'), + none: parseTags(tags, 'none'), + }, done); +}; -export function expandTimelineRequest(timeline) { +export function expandTimelineRequest(timeline, isLoadingMore) { return { type: TIMELINE_EXPAND_REQUEST, timeline, + skipLoading: !isLoadingMore, }; }; -export function expandTimelineSuccess(timeline, statuses, next, partial) { +export function expandTimelineSuccess(timeline, statuses, next, partial, isLoadingRecent, isLoadingMore) { return { type: TIMELINE_EXPAND_SUCCESS, timeline, statuses, next, partial, + isLoadingRecent, + skipLoading: !isLoadingMore, }; }; -export function expandTimelineFail(timeline, error) { +export function expandTimelineFail(timeline, error, isLoadingMore) { return { type: TIMELINE_EXPAND_FAIL, timeline, error, + skipLoading: !isLoadingMore, }; }; diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js index 0be08d7fd..4be3eadb0 100644 --- a/app/javascript/mastodon/api.js +++ b/app/javascript/mastodon/api.js @@ -1,6 +1,6 @@ import axios from 'axios'; +import LinkHeader from 'http-link-header'; import ready from './ready'; -import LinkHeader from './link_header'; export const getLinks = response => { const value = response.headers.link; diff --git a/app/javascript/mastodon/common.js b/app/javascript/mastodon/common.js index 2b10b8c30..fba21316a 100644 --- a/app/javascript/mastodon/common.js +++ b/app/javascript/mastodon/common.js @@ -4,5 +4,9 @@ export function start() { require('font-awesome/css/font-awesome.css'); require.context('../images/', true); - Rails.start(); + try { + Rails.start(); + } catch (e) { + // If called twice + } }; diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js index 2bcea8b67..206030c00 100644 --- a/app/javascript/mastodon/components/account.js +++ b/app/javascript/mastodon/components/account.js @@ -68,10 +68,10 @@ class Account extends ImmutablePureComponent { if (hidden) { return ( -
-
-
%{instance}
pot ser que no sigui el servidor on estàs registrat per tant primer hem de redirigir-te al teu servidor."
remote_interaction:
- proceed: Procedeix a interactuar
- prompt: 'Vols interactuar amb aquest toot:'
+ favourite:
+ proceed: Procedir a afavorir
+ prompt: 'Vols marcar com a favorit aquest toot:'
+ reblog:
+ proceed: Procedir a impulsar
+ prompt: 'Vols impulsar aquest toot:'
+ reply:
+ proceed: Procedir a respondre
+ prompt: 'Vols respondre a aquest toot:'
remote_unfollow:
error: Error
title: Títol
unfollowed: Sense seguir
+ scheduled_statuses:
+ over_daily_limit: Has superat el límit de %{limit} toots programats per a aquell dia
+ over_total_limit: Has superat el limit de %{limit} toots programats
+ too_soon: La data programada ha de ser futura
sessions:
activity: Última activitat
browser: Navegador
@@ -903,6 +957,22 @@ ca:
explanation: Has sol·licitat una copia completa del teu compte Mastodon. Ara ja està a punt per descàrrega!
subject: El teu arxiu està preparat per a descàrrega
title: Recollida del arxiu
+ warning:
+ explanation:
+ disable: Mentre el teu compte estigui congelat les dades romandran intactes però no pots dur a terme cap acció fins que no estigui desbloquejat.
+ silence: Mentre el teu compte estigui limitat només les persones que ja et segueixen veuen les teves dades en aquest servidor i pots ser exclòs de diverses llistes públiques. No obstant això, d'altres encara poden seguir-te manualment.
+ suspend: El teu compte s'ha suspès i tots els teus toots i fitxers multimèdia penjats s'han eliminat irreversiblement d'aquest servidor i dels servidors on tenies seguidors.
+ review_server_policies: Revisa les polítiques del servidor
+ subject:
+ disable: S'ha congelat el teu compte %{acct}
+ none: Avís per a %{acct}
+ silence: El teu compte %{acct} ha estat limitat
+ suspend: S'ha suspès el teu compte %{acct}
+ title:
+ disable: Compte congelat
+ none: Avís
+ silence: Compte limitat
+ suspend: Compte suspès
welcome:
edit_profile_action: Configurar perfil
edit_profile_step: Pots personalitzar el teu perfil penjant un avatar, un encapçalament, canviant el teu nom de visualització i molt més. Si prefereixes revisar els seguidors nous abans de que et puguin seguir, pots blocar el teu compte.
@@ -914,7 +984,6 @@ ca:
review_preferences_action: Canviar preferències
review_preferences_step: Assegura't d'establir les teves preferències, com ara els correus electrònics que vols rebre o el nivell de privadesa per defecte que t'agradaria que tinguin les teves entrades. Si no tens malaltia de moviment, pots optar per habilitar la reproducció automàtica de GIF.
subject: Benvingut/da a Mastodon
- tip_bridge_html: Si vens de Twitter, pots trobar els teus amics a Mastodon mitjançant l'aplicació bridge . Només funciona si també ells usen aquesta aplicació pont!
tip_federated_timeline: La línia de temps federada és el cabal principal de la xarxa Mastodon. Però només inclou les persones a les quals els teus veïns estan subscrits, de manera que no està complet.
tip_following: Per defecte segueixes als administradors del servidor. Per trobar més persones interessants, consulta les línies de temps local i federada.
tip_local_timeline: La línia de temps local és la vista del flux de publicacions dels usuaris de %{instance}. Aquests usuaris són els teus veïns més propers!
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 9306c6c33..a7264e754 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -48,6 +48,7 @@ co:
other: Abbunati
following: Abbunamenti
joined: Quì dapoi %{date}
+ last_active: ultima attività
link_verified_on: A pruprietà d'issu ligame hè stata verificata u %{date}
media: Media
moved_html: "%{name} hà cambiatu di contu, avà hè nant’à %{new_profile_link}:"
@@ -69,6 +70,9 @@ co:
moderator: Muderatore
unfollow: Ùn siguità più
admin:
+ account_actions:
+ action: Realizà un'azzione
+ title: Realizà un'azzione di muderazione nant'à %{acct}
account_moderation_notes:
create: Creà
created_msg: Nota di muderazione creata!
@@ -80,14 +84,15 @@ co:
by_domain: Duminiu
change_email:
changed_msg: Email di u contu cambiatu!
- current_email: Email attuale
- label: Mudificà l’Email
- new_email: Novu Email
- submit: Cambià Email
- title: Mudificà l’Email di %{username}
+ current_email: E-mail attuale
+ label: Mudificà l’e-mail
+ new_email: Novu e-mail
+ submit: Cambià l'e-mail
+ title: Mudificà l’e-mail di %{username}
confirm: Cunfirmà
confirmed: Cunfirmata
confirming: Cunfirmazione
+ deleted: Sguassatu
demote: Ritrugradà
disable: Disattivà
disable_two_factor_authentication: Disattivà l’identificazione à 2 fattori
@@ -96,15 +101,18 @@ co:
domain: Duminiu
edit: Mudificà
email: E-mail
- email_status: Statu di l’e-mail
+ email_status: Statutu di l’e-mail
enable: Attivà
enabled: Attivatu
feed_url: URL di u flussu
followers: Abbunati
followers_url: URL di l’abbunati
follows: Abbunamenti
+ header: Intistatura
inbox_url: URL di l’inbox
+ invited_by: Invitatu da
ip: IP
+ joined: Ghjuntu
location:
all: Tutti
local: Lucale
@@ -114,6 +122,7 @@ co:
media_attachments: Media aghjunti
memorialize: Trasfurmà in mimuriale
moderation:
+ active: Attivu
all: Tutti
silenced: Silenzati
suspended: Suspesi
@@ -123,10 +132,6 @@ co:
most_recent_ip: IP più ricente
no_limits_imposed: Nisuna limita imposta
not_subscribed: Micca abbunatu
- order:
- alphabetic: Alfabeticu
- most_recent: Più ricente
- title: Urdine
outbox_url: URL di l’outbox
perform_full_suspension: Suspende
profile_url: URL di u prufile
@@ -134,8 +139,9 @@ co:
protocol: Prutucollu
public: Pubblicu
push_subscription_expires: Spirata di l’abbunamentu PuSH
- redownload: Mette à ghjornu i ritratti
+ redownload: Mette à ghjornu u prufile
remove_avatar: Toglie l’avatar
+ remove_header: Toglie l'intistatura
resend_confirmation:
already_confirmed: St’utilizatore hè digià cunfirmatu
send: Rimandà un’e-mail di cunfirmazione
@@ -153,9 +159,8 @@ co:
search: Cercà
shared_inbox_url: URL di l’inbox spartuta
show:
- created_reports: Signalamenti creati da stu contu
- report: Signalamentu
- targeted_reports: Signalamenti creati contr’à stu contu
+ created_reports: Signalamenti fatti
+ targeted_reports: Signalatu da l'altri
silence: Silenzà
silenced: Silenzatu
statuses: Statuti
@@ -167,12 +172,14 @@ co:
undo_suspension: Ùn suspende più
unsubscribe: Disabbunassi
username: Cugnome
+ warn: Averte
web: Web
action_logs:
actions:
assigned_to_self_report: "%{name} s’hè assignatu u signalamentu %{target}"
change_email_user: "%{name} hà cambiatu l’indirizzu e-mail di %{target}"
confirm_user: "%{name} hà cunfirmatu l’indirizzu e-mail di %{target}"
+ create_account_warning: "%{name} hà mandatu un'avertimentu à %{target}"
create_custom_emoji: "%{name} hà caricatu una nov’emoji %{target}"
create_domain_block: "%{name} hà bluccatu u duminiu %{target}"
create_email_domain_block: "%{name} hà messu u duminiu e-mail %{target} nant’a lista nera"
@@ -231,6 +238,7 @@ co:
config: Cunfigurazione
feature_deletions: Sguassamenti di conti
feature_invites: Ligami d'invitazione
+ feature_profile_directory: Annuariu di i prufili
feature_registrations: Arregistramenti
feature_relay: Ripetitore di federazione
features: Funziunalità
@@ -248,7 +256,7 @@ co:
week_users_active: attivi sta settimana
week_users_new: utilizatori sta settimana
domain_blocks:
- add_new: Aghjustà
+ add_new: Aghjustà novu blucchime di duminiu
created_msg: U blucchime di u duminiu hè attivu
destroyed_msg: U blucchime di u duminiu ùn hè più attivu
domain: Duminiu
@@ -256,7 +264,7 @@ co:
create: Creà un blucchime
hint: U blucchime di duminiu ùn impedirà micca a creazione di conti indè a database, mà metudi di muderazione specifiche saranu applicati.
severity:
- desc_html: CùSilenzà, solu l’abbunati di u contu viderenu i so missaghji. Suspende sguassarà tutti i cuntenuti è dati di u contu. Utilizate Nisuna s’è voi vulete solu righjittà fugliali media.
+ desc_html: Cù Silenzà, solu l’abbunati di u contu viderenu i so missaghji. Suspende sguassarà tutti i cuntenuti è dati di u contu. Utilizate Nisuna s’è voi vulete solu righjittà fugliali media.
noop: Nisuna
silence: Silenzà
suspend: Suspende
@@ -265,11 +273,11 @@ co:
reject_media_hint: Sguassa tutti i media caricati è ricusa caricamenti futuri. Inutile per una suspensione
reject_reports: Righjittà i rapporti
reject_reports_hint: Ignurà tutti i signalamenti chì venenu d'issu duminiu. Senz'oghjettu pè e suspensione
- severities:
- noop: Nisuna
- silence: Silenzà
- suspend: Suspende
- severity: Severità
+ rejecting_media: righjettu di i fugliali media
+ rejecting_reports: righjettu di i signalamenti
+ severity:
+ silence: silenzatu
+ suspend: suspesu
show:
affected_accounts:
one: Un contu tuccatu indè a database
@@ -279,8 +287,7 @@ co:
suspend: Ùn suspende più i conti nant’à stu duminiu
title: Ùn bluccà più u duminiu %{domain}
undo: Annullà
- title: Blucchimi di duminiu
- undo: Annullà
+ undo: Annullà u blucchime di duminiu
email_domain_blocks:
add_new: Aghjustà
created_msg: U blucchime di u duminiu d’e-mail hè attivu
@@ -291,12 +298,24 @@ co:
create: Creà un blucchime
title: Nova iscrizzione nant’a lista nera e-mail
title: Lista nera e-mail
+ followers:
+ back_to_account: Rivene à u Contu
+ title: Abbunati à %{acct}
instances:
- account_count: Conti cunnisciuti
- domain_name: Duminiu
- reset: Riinizializà
- search: Cercà
- title: Istanze cunnisciute
+ delivery_available: Rimessa dispunibule
+ known_accounts:
+ one: "%{count} contu cunnisciutu"
+ other: "%{count} conti cunnisciuti"
+ moderation:
+ all: Tuttu
+ limited: Limitatu
+ title: Muderazione
+ title: Federazione
+ total_blocked_by_us: Bluccati da noi
+ total_followed_by_them: Siguitati da elli
+ total_followed_by_us: Siguitati da noi
+ total_reported: Rapporti nant'à elli
+ total_storage: Media aghjunti
invites:
deactivate_all: Disattivà tuttu
filter:
@@ -378,6 +397,9 @@ co:
preview_sensitive_media:
desc_html: E priviste di i ligami nant'à l'altri siti mustreranu una vignetta ancu s'ellu hè marcatu cum'è sensibile u media
title: Vede media sensibili in e viste OpenGraph
+ profile_directory:
+ desc_html: Auturizà a scuperta di l'utilizatori
+ title: Attivà l'annuariu di i prufili
registrations:
closed_message:
desc_html: Affissatu nant’a pagina d’accolta quandu l’arregistramenti sò chjosi. Pudete fà usu di u furmattu HTML
@@ -437,13 +459,21 @@ co:
last_delivery: Ultima arricata
title: WebSub
topic: Sughjettu
- suspensions:
- bad_acct_msg: U valore di cunfirmazione ùn era micca curretta. Site sicuru·a di suspende u bonu contu?
- hint_html: 'Per cunfirmà a suspensione di u contu, entrate %{value} quì sottu:'
- proceed: Cuntinuà
- title: Suspende %{acct}
- warning_html: 'A suspensione di u contu sguasserà di manera irreversibile i so dati, cum''è:'
+ tags:
+ accounts: Conti
+ hidden: Piattatu
+ hide: Piattà di l'annuariu
+ name: Hashtag
+ title: Hashtag
+ unhide: Mustrà in l'annuariu
+ visible: Visibile
title: Amministrazione
+ warning_presets:
+ add_new: Aghjustà nova
+ delete: Sguassà
+ edit: Cambià
+ edit_preset: Cambià a preselezzione d'avertimentu
+ title: Amministrà e preselezzione d'avertimentu
admin_mailer:
new_report:
body: "%{reporter} hà palisatu %{target}"
@@ -521,6 +551,13 @@ co:
success_msg: U vostru contu hè statu sguassatu
warning_html: Pudete esse sicuru·a solu chì u cuntenutu sarà sguassatu di st’istanza. S’ellu hè statu spartutu in altrò, sarà forse sempre quallà.
warning_title: Dispunibilità di i cuntenuti sparsi
+ directories:
+ directory: Annuariu di i prufili
+ explanation: Scopre utilizatori à partesi di i so centri d'interessu
+ explore_mastodon: Scopre à %{title}
+ people:
+ one: "%{count} persona"
+ other: "%{count} persone"
errors:
'403': Ùn site micca auturizatu·a à vede sta pagina.
'404': Sta pagina ùn esiste micca.
@@ -543,7 +580,9 @@ co:
size: Pesu
blocks: Bluccate
csv: CSV
+ domain_blocks: Blucchime di duminiu
follows: Seguitate
+ lists: Liste
mutes: Piattate
storage: I vostri media
filters:
@@ -692,13 +731,25 @@ co:
no_account_html: Ùn avete micca un contu? Pudete arregistravi quì
proceed: Cuntinuà per siguità
prompt: 'Avete da siguità:'
+ reason_html: "Perchè hè necessaria sta tappa? %{instance}
ùn hè forse micca u servore induve site arregistratu·a, allora primu duvemu riindirizzavi à u vostru servore."
remote_interaction:
- proceed: Cunfirmà l'interazzione
- prompt: 'Vulete interagisce cù u statutu:'
+ favourite:
+ proceed: Cuntinuà per favurisce
+ prompt: 'Vulete aghjustà stu statutu à i vostri favuriti:'
+ reblog:
+ proceed: Cuntinuà per sparte
+ prompt: 'Vulete sparte stu statutu:'
+ reply:
+ proceed: Cuntinuà per risponde
+ prompt: 'Vulete risponde à stu statutu:'
remote_unfollow:
error: Errore
title: Titulu
unfollowed: Disabbunatu
+ scheduled_statuses:
+ over_daily_limit: Avete trapassatu a limita di %{limit} statuti planificati per stu ghjornu
+ over_total_limit: Avete trapassatu a limita di %{limit} statuti planificati
+ too_soon: A data deve esse indè u futuru
sessions:
activity: Ultima attività
browser: Navigatore
@@ -789,7 +840,7 @@ co:
unlisted_long: Tuttu u mondu pò vede, mà micca indè e linee pubbliche
stream_entries:
pinned: Statutu puntarulatu
- reblogged: spartutu
+ reblogged: hà spartutu
sensitive_content: Cuntenutu sensibile
terms:
body_html: |
@@ -903,6 +954,22 @@ co:
explanation: Avete dumandatu un’archiviu cumpletu di u vostru contu Mastodon. Avà hè prontu per scaricà!
subject: U vostru archiviu hè prontu à scaricà
title: Archiviu prontu
+ warning:
+ explanation:
+ disable: Quandu u vostru contu hè ghjacciatu, i vostri dati stannu intatti, mà ùn pudete fà nunda fin'à ch'ellu sia sbluccatu.
+ silence: Quandu u vostru contu hè limitatu, solu quelli chì sò digià abbunati à u vostru contu viderenu i vostri statuti nant'à quessu servore, è puderete esse esclusu·a di parechje liste pubbliche. Però, altri conti puderenu sempre seguitavi.
+ suspend: U vostru contu hè statu suspesu, è tutti i vo statuti è fugliali media caricati sò stati sguassati di manera irreversibile di stu servore, è di i servori induve aviate abbunati.
+ review_server_policies: Leghje e pulitiche di u servore
+ subject:
+ disable: U vostru contu %{acct} hè statu ghjacciatu
+ none: Avertimentu pè %{acct}
+ silence: U vostru contu %{acct} hè statu limitatu
+ suspend: U vostru contu %{acct} hè statu suspesu
+ title:
+ disable: Contu ghjacciatu
+ none: Avertimentu
+ silence: Contu limitatu
+ suspend: Contu suspesu
welcome:
edit_profile_action: Cunfigurazione di u prufile
edit_profile_step: Pudete persunalizà u vostru prufile cù un ritrattu di prufile o di cuprendula, un nome pubblicu persunalizatu, etc. Pudete ancu rende u contu privatu per duvè cunfirmà ogni dumanda d’abbunamentu.
@@ -914,7 +981,6 @@ co:
review_preferences_action: Mudificà e priferenze
review_preferences_step: Quì pudete adattà u cumpurtamentu di Mastodon à e vostre priferenze, cum’è l’email che vulete riceve, u nivellu di cunfidenzialità predefinitu di i vostri statuti, o u cumpurtamentu di i GIF animati.
subject: Benvenutu·a nant’à Mastodon
- tip_bridge_html: S’è voi venite di Twitter, pudete truvà i vostri amichi da quallà chì sò nant’à Mastodon cù a bridge app. Mà ùn marchja chè s’elli l’anu ancu usata!
tip_federated_timeline: A linea pubblica glubale mostra i statuti da altre istanze nant’a rete Mastodon, mà ùn hè micca cumpleta perchè ci sò soli i conti à quelli sò abbunati membri di a vostr’istanza.
tip_following: Site digià abbunatu·a à l’amministratori di u vostru servore. Per truvà d’altre parsone da siguità, pudete pruvà e linee pubbliche.
tip_local_timeline: A linea pubblica lucale ghjè una vista crunulogica di i statuti di a ghjente nant’à %{instance}. Quessi sò i vostri cunvicini!
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 05f65653b..424ec3dab 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -2,7 +2,7 @@
cs:
about:
about_hashtag_html: Tohle jsou veřejné tooty označené hashtagem #%{hashtag}. Pokud máte účet kdekoliv na fediverse, můžete s nimi interagovat.
- about_mastodon_html: Mastodon je sociální síť založená na otevřených webových protokolech a svobodném, otevřeném softwaru. Je decentrovalizovaná jako e-mail.
+ about_mastodon_html: Mastodon je sociální síť založená na otevřených webových protokolech a svobodném, otevřeném softwaru. Je decentralizovaná jako e-mail.
about_this: O této instanci
administered_by: 'Instanci spravuje:'
api: API
@@ -30,28 +30,41 @@ cs:
other_instances: Seznam instancí
privacy_policy: Zásady soukromí
source_code: Zdrojový kód
- status_count_after: příspěvků
+ status_count_after:
+ few: příspěvky
+ one: příspěvek
+ other: příspěvků
status_count_before: Kteří napsali
terms: Podmínky používání
- user_count_after: uživatelů
+ user_count_after:
+ few: uživatelů
+ one: uživatele
+ other: uživatelů
user_count_before: Domov
what_is_mastodon: Co je Mastodon?
accounts:
choices_html: 'Volby uživatele %{name}:'
follow: Sledovat
- followers: Sledovatelé
- following: Sledovaní
+ followers:
+ few: Sledovatelé
+ one: Sledovatel
+ other: Sledovatelů
+ following: Sledovaných
joined: Připojil/a se v %{date}
+ last_active: naposledy aktivní
link_verified_on: Vlastnictví tohoto odkazu bylo zkontrolováno %{date}
media: Média
moved_html: 'Účet %{name} byl přesunut na %{new_profile_link}:'
network_hidden: Tato informace není k dispozici
nothing_here: Tady nic není!
- people_followed_by: Lidé, které %{name} sleduje
+ people_followed_by: Lidé, které sleduje %{name}
people_who_follow: Lidé, kteří sledují uživatele %{name}
pin_errors:
following: Musíte již sledovat osobu, kterou chcete podpořit
- posts: Tooty
+ posts:
+ few: Tooty
+ one: Toot
+ other: Tootů
posts_tab_heading: Tooty
posts_with_replies: Tooty a odpovědi
reserved_username: Toto uživatelské jméno je rezervováno
@@ -61,6 +74,9 @@ cs:
moderator: Moderátor
unfollow: Přestat sledovat
admin:
+ account_actions:
+ action: Vykonat akci
+ title: Vykonat moderační akci pro účet %{acct}
account_moderation_notes:
create: Zanechat poznámku
created_msg: Poznámka moderátora byla úspěšně vytvořena!
@@ -76,10 +92,11 @@ cs:
label: Změnit e-mail
new_email: Nový e-mail
submit: Změnit e-mail
- title: Změnit e-mail pro uživatele %{username}
+ title: Změnit e-mail uživateli %{username}
confirm: Potvrdit
confirmed: Potvrzeno
- confirming: Potvrzující
+ confirming: Potvrzuji
+ deleted: Smazáno
demote: Degradovat
disable: Zablokovat
disable_two_factor_authentication: Zakázat 2FA
@@ -94,9 +111,12 @@ cs:
feed_url: URL proudu
followers: Sledovatelé
followers_url: URL sledovatelů
- follows: Sleduje
+ follows: Sledovaní
+ header: Hlavička
inbox_url: URL přijatých zpráv
+ invited_by: Pozván/a uživatelem
ip: IP
+ joined: Připojil/a se
location:
all: Vše
local: Místní
@@ -106,28 +126,26 @@ cs:
media_attachments: Mediální přílohy
memorialize: Změnit na „in memoriam“
moderation:
+ active: Aktivní
all: Vše
silenced: Utišen/a
- suspended: Suspendován/a
+ suspended: Pozastaven/a
title: Moderace
moderation_notes: Moderační poznámky
most_recent_activity: Nejnovější aktivita
most_recent_ip: Nejnovější IP
no_limits_imposed: Nejsou nastavena žádná omezení
not_subscribed: Neodebírá
- order:
- alphabetic: Abecedně
- most_recent: Nejnovější
- title: Pořadí
outbox_url: URL odchozích zpráv
- perform_full_suspension: Suspendovat
+ perform_full_suspension: Pozastavit
profile_url: URL profilu
promote: Povýšit
protocol: Protokol
public: Veřejný
push_subscription_expires: Odebírání PuSH expiruje
- redownload: Obnovit avatar
+ redownload: Obnovit profil
remove_avatar: Odstranit avatar
+ remove_header: Odstranit hlavičku
resend_confirmation:
already_confirmed: Tento uživatel je již potvrzen
send: Znovu odeslat potvrzovací e-mail
@@ -143,28 +161,29 @@ cs:
user: Uživatel
salmon_url: URL Salmon
search: Hledat
- shared_inbox_url: URL sdílené schránky
+ shared_inbox_url: URL sdílených přijatých zpráv
show:
- created_reports: Nahlášení vytvořené z tohoto účtu
- report: nahlášení
- targeted_reports: Nahlášení vytvořena o tomto účtu
+ created_reports: Vytvořená nahlášení
+ targeted_reports: Nahlášeni ostatními
silence: Utišit
silenced: Utišen/a
statuses: Příspěvky
subscribe: Odebírat
- suspended: Suspendován/a
+ suspended: Pozastaven/a
title: Účty
unconfirmed_email: Nepotvrzený e-mail
undo_silenced: Zrušit utišení
- undo_suspension: Zrušit suspenzaci
+ undo_suspension: Zrušit pozastavení
unsubscribe: Přestat odebírat
username: Uživatelské jméno
+ warn: Varovat
web: Web
action_logs:
actions:
assigned_to_self_report: "%{name} přidělil/a hlášení %{target} sobě"
change_email_user: "%{name} změnil/a e-mailovou adresu uživatele %{target}"
confirm_user: "%{name} potvrdil/a e-mailovou adresu uživatele %{target}"
+ create_account_warning: "%{name} poslal/a varování uživateli %{target}"
create_custom_emoji: "%{name} nahrál/a nové emoji %{target}"
create_domain_block: "%{name} zablokoval/a doménu %{target}"
create_email_domain_block: "%{name} přidal/a e-mailovou doménu %{target} na černou listinu"
@@ -185,10 +204,10 @@ cs:
reset_password_user: "%{name} resetoval/a heslo uživatele %{target}"
resolve_report: "%{name} vyřešil/a nahlášení %{target}"
silence_account: "%{name} utišil/a účet uživatele %{target}"
- suspend_account: "%{name} suspendoval/a účet uživatele %{target}"
+ suspend_account: "%{name} pozastavil/a účet uživatele %{target}"
unassigned_report: "%{name} odebral/a nahlášení %{target}"
unsilence_account: "%{name} odtišil/a účet uživatele %{target}"
- unsuspend_account: "%{name} zrušil/a suspenzaci účtu uživatele %{target}"
+ unsuspend_account: "%{name} zrušil/a pozastavení účtu uživatele %{target}"
update_custom_emoji: "%{name} aktualizoval/a emoji %{target}"
update_status: "%{name} aktualizoval/a příspěvek uživatele %{target}"
deleted_status: "(smazaný příspěvek)"
@@ -222,7 +241,8 @@ cs:
backlog: opožděné úlohy
config: Konfigurace
feature_deletions: Smazání účtů
- feature_invites: Pozvánky
+ feature_invites: Odkazy pozvánek
+ feature_profile_directory: Adresář profilů
feature_registrations: Registrace
feature_relay: Federovací most
features: Vlastnosti
@@ -240,7 +260,7 @@ cs:
week_users_active: aktivních tento týden
week_users_new: uživatelů tento týden
domain_blocks:
- add_new: Přidat nové
+ add_new: Přidat novou blokaci domény
created_msg: Blokace domény se právě vyřizuje
destroyed_msg: Blokace domény byla zrušena
domain: Doména
@@ -248,29 +268,31 @@ cs:
create: Vytvořit blokaci
hint: Blokace domény nezakáže vytváření účtových záznamů v databázi, ale bude na tyto účty zpětně a automaticky aplikovat specifické metody moderace.
severity:
- desc_html: Funkce Utišit zneviditelní příspěvky z účtu komukoliv, kdo jej nesleduje. Funkce Suspendovat odstraní všechen obsah, média a profilová data účtu. Pro pouhé odmítnutí mediálních souborů použijte funkci Žádné.
+ desc_html: Funkce Utišit zneviditelní příspěvky z účtu komukoliv, kdo jej nesleduje. Funkce Pozastavit odstraní všechen obsah, média a profilová data účtu. Pro pouhé odmítnutí mediálních souborů použijte funkci Žádné.
noop: Žádné
silence: Utišit
- suspend: Suspendovat
+ suspend: Pozastavit
title: Nová doménová blokace
reject_media: Odmítat mediální soubory
- reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Irelevantní pro suspenzace
- reject_reports: Odmítnout nahlášení
- reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro suspenzace
- severities:
- noop: Žádné
- silence: Utišit
- suspend: Suspendovat
- severity: Přísnost
+ reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Nepodstatné pro pozastavení
+ reject_reports: Odmítat nahlášení
+ reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro pozastavení
+ rejecting_media: odmítají se mediální soubory
+ rejecting_reports: odmítají se nahlášení
+ severity:
+ silence: utišené
+ suspend: pozastavené
show:
- affected_accounts: "%{count} účtů v databázi byl ovlivněn"
+ affected_accounts:
+ few: "%{count} účty v databázi byly ovlivněny"
+ one: Jeden účet v databázi byl ovlivněn
+ other: "%{count} účtů v databázi bylo ovlivněno"
retroactive:
silence: Odtišit všechny existující účty z této domény
- suspend: Zrušit suspenzaci všech existujících účtů z této domény
+ suspend: Zrušit pozastavení všech existujících účtů z této domény
title: Zrušit blokaci domény %{domain}
undo: Odvolat
- title: Doménové blokace
- undo: Odvolat
+ undo: Odvolat blokaci domény
email_domain_blocks:
add_new: Přidat nový
created_msg: E-mailová doména úspěšně přidána na černou listinu
@@ -281,12 +303,25 @@ cs:
create: Přidat doménu
title: Nový e-mail pro zablokování
title: Černá listina e-mailů
+ followers:
+ back_to_account: Zpět na účet
+ title: Sledovatelé uživatele %{acct}
instances:
- account_count: Známé účty
- domain_name: Doména
- reset: Resetovat
- search: Hledat
- title: Známé instance
+ delivery_available: Doručení je k dispozici
+ known_accounts:
+ few: "%{count} známé účty"
+ one: "%{count} známý účet"
+ other: "%{count} známých účtů"
+ moderation:
+ all: Vše
+ limited: Omezené
+ title: Moderace
+ title: Federace
+ total_blocked_by_us: Blokované námi
+ total_followed_by_them: Sledované jím
+ total_followed_by_us: Sledované námi
+ total_reported: Nahlášení o něm
+ total_storage: Mediální přílohy
invites:
deactivate_all: Deaktivovat vše
filter:
@@ -349,7 +384,7 @@ cs:
title: Publikovat hromadné statistiky o uživatelské aktivitě
bootstrap_timeline_accounts:
desc_html: Je-li uživatelskch jmen více, oddělujte je čárkami. Lze zadat pouze místní a odemknuté účty. Je-li tohle prázdné, jsou výchozí hodnotou všichni místní administrátoři.
- title: Výchozí sledování pro nové uživatele
+ title: Výchozí sledovaní pro nové uživatele
contact_information:
email: Pracovní e-mail
username: Uživatelské jméno kontaktu
@@ -368,6 +403,9 @@ cs:
preview_sensitive_media:
desc_html: Náhledy odkazů na jiných stránkách budou zobrazeny i pokud jsou media označena jako citlivá
title: Zobrazovat v náhledech OpenGraph i citlivá média
+ profile_directory:
+ desc_html: Dovolit uživatelům být objevitelní
+ title: Povolit adresář profilů
registrations:
closed_message:
desc_html: Zobrazí se na hlavní stránce, jsou-li registrace uzavřeny. Můžete použít i HTML značky
@@ -379,7 +417,7 @@ cs:
disabled: Nikdo
title: Povolit pozvánky od
open:
- desc_html: Povolit každému vytvořit si účet
+ desc_html: Dovolit každému vytvořit si účet
title: Zpřístupnit registraci
show_known_fediverse_at_about_page:
desc_html: Je-li toto zapnuto, zobrazí se v náhledu tooty ze všech známých serverů na fediverse. Jinak budou zobrazeny pouze místní tooty.
@@ -427,13 +465,21 @@ cs:
last_delivery: Poslední doručení
title: WebSub
topic: Téma
- suspensions:
- bad_acct_msg: Hodnota pro potvrzení neodpovídá. Suspendujete správný účet?
- hint_html: 'Pro potvrzení suspenzace účtu prosím zadejte do pole níže %{value}:'
- proceed: Pokračovat
- title: Suspendovat účet %{acct}
- warning_html: 'Suspenzace tohoto účtu nenávratně smaže z tohoto účtu data, včetně:'
+ tags:
+ accounts: Účty
+ hidden: Skryté
+ hide: Skrýt z adresáře
+ name: Hashtag
+ title: Hashtagy
+ unhide: Zobrazit v adresáři
+ visible: Viditelné
title: Administrace
+ warning_presets:
+ add_new: Přidat nové
+ delete: Smazat
+ edit: Upravit
+ edit_preset: Upravit přednastavení pro varování
+ title: Spravovat přednastavení pro varování
admin_mailer:
new_report:
body: "%{reporter} nahlásil/a uživatele %{target}"
@@ -482,7 +528,7 @@ cs:
already_following: Tento účet již sledujete
error: Při hledání vzdáleného účtu bohužel nastala chyba
follow: Sledovat
- follow_request: 'Poslal/a jste žádost o sledování uživateli:'
+ follow_request: 'Poslal/a jste požadavek o sledování uživateli:'
following: 'Podařilo se! Nyní sledujete uživatele:'
post_follow:
close: Nebo můžete toto okno klidně zavřít.
@@ -506,11 +552,22 @@ cs:
deletes:
bad_password_msg: Dobrý pokus, hackeři! Nesprávné heslo
confirm_password: Zadejte svoje současné heslo pro ověření vaší identity
- description_html: Tímto trvale a nenávratně odstraníte obsah z vašeho účtu a deaktivuje ho. Vaše uživatelské jméno zůstane rezervované pro zabránění budoucím napodobováním.
+ description_html: Tímto trvale a nenávratně odstraníte obsah z vašeho účtu a deaktivujete ho. Vaše uživatelské jméno zůstane rezervované pro zabránění budoucím napodobováním.
proceed: Odstranit účet
success_msg: Váš účet byl úspěšně odstraněn
warning_html: Pouze vymazání obsahu z této konkrétní instance je zaručeno. Obsah, který byl široce sdílen, po sobě pravděpodobně zanechá stopy. U offline serverů a serverů, které vaše aktualizace již neodebírají, nebudou databáze aktualizovány.
warning_title: Dostupnost rozšířeného obsahu
+ directories:
+ directory: Adresář profilů
+ enabled: Aktuálně jste v adresáři uveden/a.
+ enabled_but_waiting: Přihlásil/a jste se k uvedení v adresáři, ale ještě nemáte minimální počet sledovatelů (%{min_followers}) pro uvedení.
+ explanation: Objevujte uživatele podle jejich zájmů
+ explore_mastodon: Prozkoumejte %{title}
+ how_to_enable: Aktuálně nejste přihlášen/a do adresáře. Přihlásit se můžete níže. Použijte ve svém popisu profilu hashtagy, abyste mohl/a být uveden/a pod konkrétními hashtagy!
+ people:
+ few: "%{count} lidé"
+ one: "%{count} člověk"
+ other: "%{count} lidí"
errors:
'403': Nemáte povolení zobrazit tuto stránku.
'404': Stránka, kterou hledáte, neexistuje.
@@ -533,9 +590,11 @@ cs:
size: Velikost
blocks: Blokujete
csv: CSV
+ domain_blocks: Blokace domén
follows: Sledujete
+ lists: Seznamy
mutes: Ignorujete
- storage: Úložisko médií
+ storage: Paměť médií
filters:
contexts:
home: Domovská časová osa
@@ -558,7 +617,10 @@ cs:
followers_count: Počet sledovatelů
lock_link: Zamkněte svůj účet
purge: Odstranit ze sledovatelů
- success: V průběhu utišování sledovatelů z %{count} domén...
+ success:
+ few: V průběhu blokování sledovatelů ze %{count} domén...
+ one: V průběhu blokování sledovatelů z jedné domény...
+ other: V průběhu blokování sledovatelů z %{count} domén...
true_privacy_html: Berte prosím na vědomí, že skutečného soukromí se dá dosáhnout pouze za pomoci end-to-end šifrování.
unlocked_warning_html: Kdokoliv vás může sledovat a okamžitě vidět vaše soukromé příspěvky. %{lock_link}, abyste mohl/a zkontrolovat a odmítnout sledovatele.
unlocked_warning_title: Váš účet není zamknutý
@@ -570,7 +632,10 @@ cs:
changes_saved_msg: Změny byly úspěšně uloženy!
copy: Kopírovat
save_changes: Uložit změny
- validation_errors: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
+ validation_errors:
+ few: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyby níže
+ one: Něco ještě není úplně v pořádku! Prosím zkontrolujte chybu níže
+ other: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
imports:
preface: Můžete importovat data, která jste exportoval/a z jiné instance, jako například seznam lidí, které sledujete či blokujete.
success: Vaše data byla úspěšně nahrána a nyní budou zpracována v daný čas
@@ -593,7 +658,10 @@ cs:
expires_in_prompt: Nikdy
generate: Vygenerovat
invited_by: 'Byl/a jste pozván/a uživatelem:'
- max_uses: "%{count} použití"
+ max_uses:
+ few: "%{count} použití"
+ one: 1 použití
+ other: "%{count} použití"
max_uses_prompt: Bez limitu
prompt: Vygenerujte a sdílejte s ostatními odkazy a umožněte jim přístup na tuto instanci
table:
@@ -619,8 +687,14 @@ cs:
action: Zobrazit všechna oznámení
body: Zde najdete stručný souhrn zpráv, které jste zmeškal/a od vaší poslední návštěvy %{since}
mention: "%{name} vás zmínil/a v:"
- new_followers_summary: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Hurá!
- subject: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
+ new_followers_summary:
+ few: Navíc jste získal/a %{count} nové sledovatele, zatímco jste byl/a pryč! Skvělé!
+ one: Navíc jste získal/a jednoho nového sledovatele, zatímco jste byl/a pryč! Hurá!
+ other: Navíc jste získal/a %{count} nových sledovatelů, zatímco jste byl/a pryč! Úžasné!
+ subject:
+ few: "%{count} nová oznámení od vaší poslední návštěvy \U0001F418"
+ one: "1 nové oznámení od vaší poslední návštěvy \U0001F418"
+ other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
title: Ve vaší nepřítomnosti...
favourite:
body: 'Váš příspěvek si oblíbil/a %{name}:'
@@ -631,10 +705,10 @@ cs:
subject: "%{name} vás nyní sleduje"
title: Nový sledovatel
follow_request:
- action: Spravovat žádosti o sledování
- body: "%{name} žádá o povolení vás následovat"
+ action: Spravovat požadavky o sledování
+ body: "%{name} požádal/a o povolení vás sledovat"
subject: 'Čekající sledovatel: %{name}'
- title: Nová žádost o sledování
+ title: Nový požadavek o sledování
mention:
action: Odpovědět
body: 'Byl/a jste zmíněn/a uživatelem %{name} v:'
@@ -656,7 +730,7 @@ cs:
trillion: bil
pagination:
newer: Novější
- next: Starší
+ next: Další
older: Starší
prev: Před
truncate: "…"
@@ -671,13 +745,25 @@ cs:
no_account_html: Ještě nemáte účet? Můžete se registrovat zde
proceed: Pokračovat ke sledování
prompt: 'Budete sledovat:'
+ reason_html: "Proč je tento krok nutný? %{instance}
nemusí být serverem, na kterém jste registrován/a, proto vás musíme nejdříve přesměrovat na váš domovský server."
remote_interaction:
- proceed: Pokračovat k interakci
- prompt: 'Chcete interagovat s tímto tootem:'
+ favourite:
+ proceed: Pokračovat k oblíbení
+ prompt: 'Chcete si oblíbit tento toot:'
+ reblog:
+ proceed: Pokračovat k boostnutí
+ prompt: 'Chcete boostnout tento toot:'
+ reply:
+ proceed: Pokračovat k odpovězení
+ prompt: 'Chcete odpovědět na tento toot:'
remote_unfollow:
error: Chyba
title: Nadpis
unfollowed: Už nesledujete
+ scheduled_statuses:
+ over_daily_limit: Překročil/a jste limit %{limit} plánovaných tootů pro tento den
+ over_total_limit: Překročil/a jste limit %{limit} plánovaných tootů
+ too_soon: Plánované datum musí být v budoucnosti
sessions:
activity: Nejnovější aktivita
browser: Prohlížeč
@@ -737,11 +823,20 @@ cs:
statuses:
attached:
description: 'Přiloženo: %{attached}'
- image: "%{count} obrázků"
- video: "%{count} videí"
+ image:
+ few: "%{count} obrázky"
+ one: "%{count} obrázek"
+ other: "%{count} obrázků"
+ video:
+ few: "%{count} videa"
+ one: "%{count} video"
+ other: "%{count} videí"
boosted_from_html: Boostnuto z %{acct_link}
content_warning: 'Varování o obsahu: %{warning}'
- disallowed_hashtags: 'obsahuje nepovolené hashtagy: %{tags}'
+ disallowed_hashtags:
+ few: 'obsahoval nepovolené hashtagy: %{tags}'
+ one: 'obsahoval nepovolený hashtag: %{tags}'
+ other: 'obsahoval nepovolené hashtagy: %{tags}'
language_detection: Zjistit jazyk automaticky
open_in_web: Otevřít na webu
over_character_limit: limit %{max} znaků byl překročen
@@ -772,7 +867,7 @@ cs:
Die erweiterte Beschreibung wurde noch nicht aufgesetzt.
features: - humane_approach_body: Mastodon hat von den Fehlern anderer Netzwerke gelernt und wurde mit dem Augenmerk darauf entwickelt, den Missbrauch sozialer Medien zu bekämpfen. + humane_approach_body: Aus den Fehlern anderer Netzwerke lernend, zielt Mastodon darauf ab, mit ethischen Design-Entscheidungen den Missbrauch sozialer Medien zu verhindern. humane_approach_title: Ein menschlicherer Ansatz not_a_product_body: Mastodon ist kein kommerzielles Netzwerk. Keine Werbung, kein Abgraben deiner Daten, keine geschlossene Plattform. Es gibt keine Zentrale. not_a_product_title: Du bist ein Mensch und keine Ware - real_conversation_body: Mit 500 Zeichen pro Beitrag und der Ermöglichung präziser Inhalts- und Bilderwarnungen kannst du dich so ausdrücken, wie du es möchtest. - real_conversation_title: Für das echte Gespräch gemacht - within_reach_body: Verschiedene Apps für iOS, Android und andere Plattformen erlauben dir, dank unseres blühenden API-Ökosystems, dich von überall auf dem Laufenden zu halten. + real_conversation_body: Mit 500 Zeichen pro Beitrag und Features wie Inhalts- und Bilderwarnungen kannst du dich so ausdrücken, wie du es möchtest. + real_conversation_title: Geschaffen für echte Gespräche + within_reach_body: Verschiedene Apps für iOS, Android und andere Plattformen erlauben es dir, dank unseres blühenden API-Ökosystems, dich von überall auf dem Laufenden zu halten. within_reach_title: Immer für dich da generic_description: "%{domain} ist ein Server im Netzwerk" hosted_on: Mastodon, beherbergt auf %{domain} @@ -44,10 +44,11 @@ de: choices_html: "%{name} empfiehlt:" follow: Folgen followers: - one: Folgende - other: Follower + one: Folgender + other: Folgende following: Folgt joined: Beigetreten am %{date} + last_active: zuletzt aktiv link_verified_on: Besitz des Links wurde überprüft am %{date} media: Medien moved_html: "%{name} ist auf %{new_profile_link} umgezogen:" @@ -69,6 +70,9 @@ de: moderator: Moderator unfollow: Entfolgen admin: + account_actions: + action: Aktion ausführen + title: Moderationsaktion auf %{acct} ausführen account_moderation_notes: create: Notiz erstellen created_msg: Moderationsnotiz erfolgreich erstellt! @@ -77,7 +81,7 @@ de: accounts: are_you_sure: Bist du sicher? avatar: Profilbild - by_domain: Domäne + by_domain: Domain change_email: changed_msg: E-Mail-Adresse des Kontos erfolgreich geändert! current_email: Aktuelle E-Mail-Adresse @@ -88,6 +92,7 @@ de: confirm: Bestätigen confirmed: Bestätigt confirming: Bestätigung + deleted: Gelöscht demote: Degradieren disable: Ausschalten disable_two_factor_authentication: 2FA abschalten @@ -100,11 +105,14 @@ de: enable: Freischalten enabled: Freigegeben feed_url: Feed-URL - followers: Folger + followers: Folgende followers_url: URL des Folgenden follows: Folgt + header: Header inbox_url: Posteingangs-URL + invited_by: Eingeladen von ip: IP-Adresse + joined: Beigetreten location: all: Alle local: Lokal @@ -114,6 +122,7 @@ de: media_attachments: Medienanhänge memorialize: In Gedenkmal verwandeln moderation: + active: Aktiv all: Alle silenced: Stummgeschaltet suspended: Gesperrt @@ -123,10 +132,6 @@ de: most_recent_ip: Letzte IP-Adresse no_limits_imposed: Keine Limits eingesetzt not_subscribed: Nicht abonniert - order: - alphabetic: Alphabetisch - most_recent: Neueste - title: Sortierung outbox_url: Postausgangs-URL perform_full_suspension: Sperren profile_url: Profil-URL @@ -134,8 +139,9 @@ de: protocol: Protokoll public: Öffentlich push_subscription_expires: PuSH-Abonnement läuft aus - redownload: Avatar neu laden + redownload: Profil neu laden remove_avatar: Profilbild entfernen + remove_header: Header entfernen resend_confirmation: already_confirmed: Diese:r Benutzer:in wurde bereits bestätigt send: Bestätigungsmail erneut senden @@ -151,11 +157,10 @@ de: user: Nutzer salmon_url: Salmon-URL search: Suche - shared_inbox_url: Geteilter Posteingang URL + shared_inbox_url: Geteilte Posteingang-URL show: - created_reports: Meldungen durch dieses Konto - report: Meldung - targeted_reports: Meldungen über dieses Konto + created_reports: Erstellte Beschwerdemeldungen + targeted_reports: Beschwerdemeldungen von anderen silence: Stummschalten silenced: Stummgeschaltet statuses: Beiträge @@ -167,12 +172,14 @@ de: undo_suspension: Sperre zurücknehmen unsubscribe: Abbestellen username: Profilname + warn: Warnen web: Web action_logs: actions: assigned_to_self_report: "%{name} hat sich die Meldung %{target} selbst zugewiesen" change_email_user: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert" confirm_user: "%{name} hat die E-Mail-Adresse von %{target} bestätigt" + create_account_warning: "%{name} hat eine Warnung an %{target} gesendet" create_custom_emoji: "%{name} hat neues Emoji %{target} hochgeladen" create_domain_block: "%{name} hat die Domain %{target} blockiert" create_email_domain_block: "%{name} hat die E-Mail-Domain %{target} geblacklistet" @@ -186,17 +193,17 @@ de: disable_user: "%{name} hat den Login für Benutzer:in %{target} deaktiviert" enable_custom_emoji: "%{name} hat das %{target} Emoji aktiviert" enable_user: "%{name} hat die Anmeldung für di:en Benutzer:in %{target} aktiviert" - memorialize_account: "%{name} hat %{target}s Profil in eine Gedenkseite umgewandelt" + memorialize_account: "%{name} hat %{target}s Konto in eine Gedenkseite umgewandelt" promote_user: "%{name} hat %{target} befördert" remove_avatar_user: "%{name} hat das Profilbild von %{target} entfernt" reopen_report: "%{name} hat die Meldung %{target} wieder geöffnet" reset_password_user: "%{name} hat das Passwort für di:en Benutzer:in %{target} zurückgesetzt" resolve_report: "%{name} hat die Meldung %{target} bearbeitet" - silence_account: "%{name} hat %{target}s Account stummgeschaltet" - suspend_account: "%{name} hat %{target}s Account gesperrt" + silence_account: "%{name} hat %{target}s Konto stummgeschaltet" + suspend_account: "%{name} hat %{target}s Konto gesperrt" unassigned_report: "%{name} hat die Zuweisung der Meldung %{target} entfernt" - unsilence_account: "%{name} hat die Stummschaltung von %{target}s Account aufgehoben" - unsuspend_account: "%{name} hat die Sperrung von %{target}s Account aufgehoben" + unsilence_account: "%{name} hat die Stummschaltung von %{target}s Konto aufgehoben" + unsuspend_account: "%{name} hat die Sperrung von %{target}s Konto aufgehoben" update_custom_emoji: "%{name} hat das %{target} Emoji aktualisiert" update_status: "%{name} hat den Status von %{target} aktualisiert" deleted_status: "(gelöschter Beitrag)" @@ -231,6 +238,7 @@ de: config: Konfiguration feature_deletions: Kontolöschung feature_invites: Einladungslinks + feature_profile_directory: Profilverzeichnis feature_registrations: Registrierung feature_relay: Föderations-Relay features: Eigenschaften @@ -248,7 +256,7 @@ de: week_users_active: Aktiv diese Woche week_users_new: Benutzer:innen diese Woche domain_blocks: - add_new: Neu hinzufügen + add_new: Neue Domainblockade hinzufügen created_msg: Die Domain-Blockade wird nun durchgeführt destroyed_msg: Die Domain-Blockade wurde rückgängig gemacht domain: Domain @@ -265,11 +273,11 @@ de: reject_media_hint: Entfernt lokal gespeicherte Mediendateien und verhindert deren künftiges Herunterladen. Für Sperren irrelevant reject_reports: Meldungen ablehnen reject_reports_hint: Ignoriere alle Meldungen von dieser Domain. Irrelevant für Sperrungen - severities: - noop: Kein - silence: Stummschaltung - suspend: Sperren - severity: Schweregrad + rejecting_media: Mediendateien ablehnen + rejecting_reports: Beschwerdemeldungen ablehnen + severity: + silence: stummgeschaltet + suspend: gesperrt show: affected_accounts: one: Ein Konto in der Datenbank betroffen @@ -279,8 +287,7 @@ de: suspend: Alle existierenden Konten dieser Domain entsperren title: Domain-Blockade für %{domain} zurücknehmen undo: Zurücknehmen - title: Domain-Blockaden - undo: Zurücknehmen + undo: Domainblockade zurücknehmen email_domain_blocks: add_new: Neue hinzufügen created_msg: E-Mail-Domain-Blockade erfolgreich erstellt @@ -291,12 +298,24 @@ de: create: Blockade erstellen title: Neue E-Mail-Domain-Blockade title: E-Mail-Domain-Blockade + followers: + back_to_account: Zurück zum Konto + title: "%{acct}'s Follower" instances: - account_count: Bekannte Konten - domain_name: Domain - reset: Zurücksetzen - search: Suchen - title: Bekannte Instanzen + delivery_available: Zustellung ist verfügbar + known_accounts: + one: "%{count} bekanntes Konto" + other: "%{count} bekannte Accounts" + moderation: + all: Alle + limited: Limitiert + title: Moderation + title: Föderation + total_blocked_by_us: Von uns gesperrt + total_followed_by_them: Gefolgt von denen + total_followed_by_us: Gefolgt von uns + total_reported: Beschwerdemeldungen über sie + total_storage: Medienanhänge invites: deactivate_all: Alle deaktivieren filter: @@ -378,6 +397,9 @@ de: preview_sensitive_media: desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als heikel gekennzeichnet sind title: Heikle Medien in OpenGraph-Vorschauen anzeigen + profile_directory: + desc_html: Erlaube Benutzer auffindbar zu sein + title: Aktiviere Profilverzeichnis registrations: closed_message: desc_html: Wird auf der Frontseite angezeigt, wenn die Registrierung geschlossen ist. Du kannst HTML-Tags benutzen @@ -437,13 +459,21 @@ de: last_delivery: Letzte Zustellung title: WebSub topic: Thema - suspensions: - bad_acct_msg: Der Bestätigungswert stimmt nicht überein. Sperrst du das richtige Benutzerkonto? - hint_html: 'Um die Sperrung des Benutzerkontos zu genehmigen tippe %{value} in das Feld unten ein:' - proceed: Fortfahren - title: "%{acct} sperren" - warning_html: 'Die Sperrung des Benutzerkontos wird unwiederrufliche Schäden hervorrufen und alle Daten löschen, die folgendes beinhalten:' + tags: + accounts: Konten + hidden: Versteckt + hide: Vor Verzeichnis verstecken + name: Hashtag + title: Hashtags + unhide: Zeige in Verzeichnis + visible: Sichtbar title: Administration + warning_presets: + add_new: Neu hinzufügen + delete: Löschen + edit: Bearbeiten + edit_preset: Warnungsvorlage bearbeiten + title: Warnungsvorlagen verwalten admin_mailer: new_report: body: "%{reporter} hat %{target} gemeldet" @@ -475,8 +505,8 @@ de: invalid_reset_password_token: Das Token zum Zurücksetzen des Passworts ist ungültig oder abgelaufen. Bitte fordere ein neues an. login: Anmelden logout: Abmelden - migrate_account: Ziehe zu einem anderen Account um - migrate_account_html: Wenn du es wünschst diesen Account zu einem anderen umzuziehen, dann kannst du es hier einstellen. + migrate_account: Ziehe zu einem anderen Konto um + migrate_account_html: Wenn du wünschst, dieses Konto zu einem anderen umzuziehen, kannst du dies hier einstellen. or: oder or_log_in_with: Oder anmelden mit providers: @@ -490,7 +520,7 @@ de: set_new_password: Neues Passwort setzen authorize_follow: already_following: Du folgst diesem Konto bereits - error: Das Profil konnte nicht geladen werden + error: Das Remote-Konto konnte nicht geladen werden follow: Folgen follow_request: 'Du hast eine Folgeanfrage gesendet an:' following: 'Erfolg! Du folgst nun:' @@ -521,6 +551,16 @@ de: success_msg: Dein Konto wurde erfolgreich gelöscht warning_html: Wir können nur dafür garantieren, dass die Inhalte auf dieser einen Instanz gelöscht werden. Bei Inhalten, die weit verbreitet wurden, ist es wahrscheinlich, dass Spuren bleiben werden. Server, die offline sind oder keine Benachrichtigungen von deinem Konto mehr empfangen, werden ihre Datenbanken nicht bereinigen. warning_title: Verfügbarkeit verstreuter Inhalte + directories: + directory: Profilverzeichnis + enabled: Du bist gerade in dem Verzeichnis gelistet. + enabled_but_waiting: Du bist damit einverstanden im Verzeichnis gelistet zu werden, aber du hast nicht die minimale Anzahl an Folgenden (%{min_followers}), damit es passiert. + explanation: Entdecke Benutzer basierend auf deren Interessen + explore_mastodon: Entdecke %{title} + how_to_enable: Du hast dich gerade nicht dazu entschieden im Verzeichnis gelistet zu werden. Du kannst dich unten dafür eintragen. Benutze Hashtags in deiner Profilbeschreibung, um unter spezifischen Hashtags gelistet zu werden! + people: + one: "%{count} Person" + other: "%{count} Leute" errors: '403': Dir fehlt die Befugnis, diese Seite sehen zu können. '404': Diese Seite existiert nicht. @@ -543,7 +583,9 @@ de: size: Größe blocks: Du hast blockiert csv: CSV + domain_blocks: Domainblockaden follows: Du folgst + lists: Listen mutes: Du hast stummgeschaltet storage: Medienspeicher filters: @@ -615,7 +657,7 @@ de: table: expires_at: Läuft ab uses: Verwendungen - title: Leute Einladen + title: Leute einladen lists: errors: limit: Du hast die maximale Anzahl an Listen erreicht @@ -624,10 +666,10 @@ de: images_and_video: Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden too_many: Es können nicht mehr als 4 Bilder angehängt werden migrations: - acct: benutzername@domain des neuen Accounts + acct: benutzername@domain des neuen Kontos currently_redirecting: 'Deine Profilweiterleitung wurde gesetzt auf:' proceed: Speichern - updated_msg: Deine Account-Migrationseinstellungen wurden erfolgreich aktualisiert! + updated_msg: Deine Konto-Migrationseinstellungen wurden erfolgreich aktualisiert! moderation: title: Moderation notification_mailer: @@ -689,16 +731,28 @@ de: remote_follow: acct: Profilname@Domain, von wo aus du dieser Person folgen möchtest missing_resource: Die erforderliche Weiterleitungs-URL für dein Konto konnte nicht gefunden werden - no_account_html: Noch keinen Account? Du kannst dich hier anmelden + no_account_html: Noch kein Konto? Du kannst dich hier anmelden proceed: Weiter prompt: 'Du wirst dieser Person folgen:' + reason_html: "Warum ist dieser Schritt erforderlich?%{instance}
ist möglicherweise nicht der Server auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten."
remote_interaction:
- proceed: Fortfahren zum Interagieren
- prompt: 'Du wirst mit diesem Beitrag interagieren:'
+ favourite:
+ proceed: Fortfahren zum Favorisieren
+ prompt: 'Du möchtest diesen Beitrag favorisieren:'
+ reblog:
+ proceed: Fortfahren zum Teilen
+ prompt: 'Du möchtest diesen Beitrag teilen:'
+ reply:
+ proceed: Fortfahren zum Antworten
+ prompt: 'Du möchtest auf diesen Beitrag antworten:'
remote_unfollow:
error: Fehler
title: Titel
unfollowed: Entfolgt
+ scheduled_statuses:
+ over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht
+ over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht
+ too_soon: Das geplante Datum muss in der Zukunft liegen
sessions:
activity: Letzte Aktivität
browser: Browser
@@ -722,7 +776,7 @@ de:
weibo: Weibo
current_session: Aktuelle Sitzung
description: "%{browser} auf %{platform}"
- explanation: Dies sind die Webbrowser, die derzeit in dein Mastodon-Konto eingeloggt sind.
+ explanation: Dies sind die Webbrowser, die derzeit in deinem Mastodon-Konto eingeloggt sind.
ip: IP-Adresse
platforms:
adobe_air: Adobe Air
@@ -749,7 +803,7 @@ de:
export: Datenexport
followers: Autorisierte Folgende
import: Datenimport
- migrate: Account-Umzug
+ migrate: Konto-Umzug
notifications: Benachrichtigungen
preferences: Einstellungen
settings: Einstellungen
@@ -790,7 +844,7 @@ de:
stream_entries:
pinned: Angehefteter Beitrag
reblogged: teilte
- sensitive_content: Heikle Inhalte
+ sensitive_content: Sensible Inhalte
terms:
body_html: |
Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.
+Wir implementieren eine Reihe von Sicherheitsmaßnahmen, um die Sicherheit deiner persönlichen Information sicherzustellen, wenn du persönliche Informationen eingibst, übermittelst oder auf sie zugreifst. Neben anderen Dingen, wird sowohl deine Browsersitzung, als auch der Datenverkehr zwischen deinen Anwendungen und der Programmierschnittstelle (API) mit SSL gesichert, dein Passwort wird mit einem starken Einwegalgorithmus gehasht. Du kannst Zwei-Faktor-Authentifizierung aktivieren, um den Zugriff auf dein Konto zusätzlich abzusichern.
Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.
-Du kannst dein Konto unwiderruflich jederzeit löschen.
+Du kannst dein Konto jederzeit unwiderruflich löschen.
Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wird diese Änderungen auf dieser Seite bekannt geben.
+Wenn wir uns entscheiden, Änderungen an unserer Datenschutzerklärung vorzunehmen, werden wird diese Änderungen auf dieser Seite bekannt gegeben.
-Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion
+Dies ist eine Übersetzung, Irrtümer und Übersetzungsfehler vorbehalten. Im Zweifelsfall gilt die englische Originalversion.
Dieses Dokument ist CC-BY-SA. Es wurde zuletzt aktualisiert am 7. März 2018.
@@ -897,17 +951,33 @@ de: manual_instructions: 'Wenn du den QR-Code nicht einlesen kannst und ihn manuell eingeben musst, ist hier das Klartext-Geheimnis:' recovery_codes: Wiederherstellungs-Codes sichern recovery_codes_regenerated: Wiederherstellungscodes erfolgreich neu generiert - recovery_instructions_html: Wenn du den Zugang zu deinem Telefon verlieren solltest, kannst du einen untenstehenden Wiederherstellungscodes benutzen, um wieder auf dein Konto zugreifen zu können. Bewahre die Wiederherstellungscodes gut auf. Du könntest sie beispielsweise ausdrucken und bei deinen restlichen wichtigen Dokumenten aufbewahren. + recovery_instructions_html: Wenn du den Zugang zu deinem Telefon verlieren solltest, kannst du einen untenstehenden Wiederherstellungscode benutzen, um wieder auf dein Konto zugreifen zu können. Bewahre die Wiederherstellungscodes gut auf. Du könntest sie beispielsweise ausdrucken und bei deinen restlichen wichtigen Dokumenten aufbewahren. setup: Einrichten wrong_code: Der eingegebene Code war ungültig! Stimmen Serverzeit und Gerätezeit? user_mailer: backup_ready: - explanation: Du hast ein vollständiges Backup von deinem Mastodon-Account angefragt. Es kann jetzt heruntergeladen werden! + explanation: Du hast ein vollständiges Backup von deinem Mastodon-Konto angefragt. Es kann jetzt heruntergeladen werden! subject: Dein Archiv ist bereit zum Download title: Archiv-Download + warning: + explanation: + disable: Solange dein Konto eingefroren ist, sind deine Benutzerdaten intakt; aber du kannst nichts tun, bis dein Konto entsperrt wurde. + silence: Solange dein Konto limitiert ist, können nur die Leute, die dir bereits folgen, deine Beiträge auf dem Server sehen und es könnte sein, dass du von verschiedenen öffentlichen Listungen ausgeschlossen wirst. Andererseits können andere dir manuell folgen. + suspend: Dein Konto wurde gesperrt und alle deine Beiträge und hochgeladenen Medien wurden unwiderruflich vom Server und anderen Servern, bei denen du Folgende hattest, gelöscht. + review_server_policies: Serverrichtlinien ansehen + subject: + disable: Dein Konto %{acct} wurde eingefroren + none: Warnung für %{acct} + silence: Dein Konto %{acct} wurde limitiert + suspend: Dein Konto %{acct} wurde gesperrt + title: + disable: Konto eingefroren + none: Warnung + silence: Konto limitiert + suspend: Konto gesperrt welcome: edit_profile_action: Profil einstellen - edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Follower vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. + edit_profile_step: Du kannst dein Profil anpassen, indem du einen Avatar oder ein Titelbild hochlädst oder deinen Anzeigenamen änderst und mehr. Wenn du deine Folgenden vorher überprüfen möchtest, bevor sie dir folgen können, dann kannst du dein Profil sperren. explanation: Hier sind ein paar Tipps, um loszulegen final_action: Fang an zu posten final_step: 'Fang an zu posten! Selbst ohne Follower werden deine öffentlichen Beitrage von anderen gesehen, zum Beispiel auf der lokalen Zeitleiste oder in Hashtags. Vielleicht möchtest du dich vorstellen mit dem #introductions-Hashtag.' @@ -916,7 +986,6 @@ de: review_preferences_action: Einstellungen ändern review_preferences_step: Stelle sicher, dass du deine Einstellungen einstellst, wie zum Beispiel welche E-Mails du gerne erhalten möchtest oder was für Privatsphäreneinstellungen voreingestellt werden sollten. Wenn dir beim Ansehen von GIFs nicht schwindelig wird, dann kannst du auch das automatische Abspielen dieser aktivieren. subject: Willkommen bei Mastodon - tip_bridge_html: Wenn du gerade von Twitter kommst, dann kannst du deine Freunde auf Mastodon mithilfe der Bridge-App finden. Es funktioniert aber auch nur, wenn diese die Bridge-App vorher verwendet haben! tip_federated_timeline: Die föderierte Zeitleiste ist die sehr große Ansicht vom Mastodon-Netzwerk. Sie enthält aber auch nur Leute, denen du und deine Nachbarn folgen, sie ist also nicht komplett. tip_following: Du folgst standardmäßig deinen Server-Admin(s). Um mehr interessante Leute zu finden, kannst du die lokale oder öffentliche Zeitleiste durchsuchen. tip_local_timeline: Die lokale Zeitleiste ist eine Ansicht aller Leute auf %{instance}. Diese sind deine Nachbarn! @@ -931,5 +1000,5 @@ de: seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind. signed_in_as: 'Angemeldet als:' verification: - explanation_html: 'Du kannst bestätigen, dass die Links in deinen Profil-Metadaten dir gehören. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. Dieser Link muss einrel="me"
-Attribut enthalten. Der Linktext is dabei egal. Hier ist ein Beispiel:'
+ explanation_html: 'Du kannst bestätigen, dass die Links in deinen Profil-Metadaten dir gehören. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. Dieser Link muss ein rel="me"
-Attribut enthalten. Der Linktext ist dabei egal. Hier ist ein Beispiel:'
verification: Verifizierung
diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml
index 4d80176c6..927eeee5a 100644
--- a/config/locales/devise.ar.yml
+++ b/config/locales/devise.ar.yml
@@ -18,6 +18,7 @@ ar:
mailer:
confirmation_instructions:
action: للتحقق من عنوان البريد الإلكتروني
+ action_with_app: تأكيد ثم العودة إلى %{app}
explanation: لقد قمت بإنشاء حساب على %{host} بواسطة عنوان البريد الإلكتروني الحالي. إنك على بعد خطوات قليلة من تفعليه. إن لم تكن من طلب ذلك، يرجى ألّا تولي إهتماما بهذه الرسالة.
extra_html: ندعوك إلى الإطلاع على القواعد الخاصة بمثيل الخادوم هذا and و شروط الخدمة الخاصة بنا.
subject: 'ماستدون : تعليمات التأكيد لمثيل الخادوم %{instance}'
@@ -77,4 +78,10 @@ ar:
expired: إنتهت مدة صلاحيته، الرجاء طلب واحد جديد
not_found: لا يوجد
not_locked: ليس مقفلاً
- not_saved: "%{count} أخطاء منعت %{resource} مِن القيام بالإحتفاظ :"
+ not_saved:
+ few: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
+ many: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
+ one: 'خطأ واحد منع هذا %{resource} من الحفظ:'
+ other: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
+ two: 'أخطاء منعت هذا %{resource} من الحفظ:'
+ zero: 'أخطاء منعت هذا %{resource} من الحفظ:'
diff --git a/config/locales/devise.ast.yml b/config/locales/devise.ast.yml
index 6e32cbc2f..49b0c8daf 100644
--- a/config/locales/devise.ast.yml
+++ b/config/locales/devise.ast.yml
@@ -1,2 +1,30 @@
---
-ast: {}
+ast:
+ devise:
+ failure:
+ already_authenticated: Yá aniciesti sesión.
+ inactive: Entá nun s'activó la cuenta.
+ last_attempt: Tienes un intentu más enantes de bloquiar la cuenta.
+ locked: La cuenta ta bloquiada.
+ timeout: La sesión caducó. Volvi aniciar sesión pa siguir, por favor.
+ unauthenticated: Precises aniciar sesión o rexistrate enantes de siguir.
+ mailer:
+ confirmation_instructions:
+ explanation: Creesti una cuenta en %{host} con esta direición de corréu. Tas a un clic d'activala. Si nun fuisti tu, inora esti corréu.
+ email_changed:
+ title: Direición de corréu nueva
+ reset_password_instructions:
+ explanation: Solicitesti una contraseña nueva pa la cuenta.
+ extra: Si nun solicitesti esto, inora esti corréu. La contraseña nun va camudar hasta que nun accedas al enllaz d'enriba y crees una nueva.
+ registrations:
+ signed_up: "¡Afáyate! Rexistréstite con ésitu."
+ signed_up_but_unconfirmed: Unvióse un mensaxe de confirmación a la direición de corréu. Sigui l'enllaz p'activar la cuenta. Comprueba la carpeta Puxarra si nun recibiesti esti corréu, por favor.
+ updated: La cuenta anovóse con ésitu.
+ unlocks:
+ send_instructions: Nunos minutos vas recibir un corréu coles instrucciones pa cómo desbloquiar la cuenta. Comprueba la carpeta Puxarra si nun lu recibiesti.
+ send_paranoid_instructions: Si esiste la cuenta, nun momentu vas recibir un corréu coles instrucciones pa cómo desbloquiala. Comprueba la carpeta Puxarra si nun recibiesti esti corréu.
+ unlocked: La cuenta desbloquióse con ésitu. Anicia sesión pa siguir, por favor.
+ errors:
+ messages:
+ already_confirmed: yá se confirmó, volvi aniciar sesión
+ not_found: nun s'alcontró
diff --git a/config/locales/devise.ca.yml b/config/locales/devise.ca.yml
index 4c17f3378..c41a218e1 100644
--- a/config/locales/devise.ca.yml
+++ b/config/locales/devise.ca.yml
@@ -18,6 +18,7 @@ ca:
mailer:
confirmation_instructions:
action: Verifica l'adreça de correu
+ action_with_app: Confirma i torna a %{app}
explanation: Has creat un compte a %{host} amb aquesta adreça de correu electrònic. Estàs a un sol clic de l'activació. Si no fos així, ignora aquest correu electrònic.
extra_html: Si us plau consulta també les regles de la instància i les nostres condicions de servei.
subject: 'Mastodon: Instruccions de confirmació %{instance}'
diff --git a/config/locales/devise.co.yml b/config/locales/devise.co.yml
index 2471f857b..108a4ef11 100644
--- a/config/locales/devise.co.yml
+++ b/config/locales/devise.co.yml
@@ -18,6 +18,7 @@ co:
mailer:
confirmation_instructions:
action: Verificà l’indirizzu email
+ action_with_app: Cunfirmà è rivene à %{app}
explanation: Avete creatu un contu nant’à %{host} cù st’indirizzu email. Pudete attivallu cù un clic, o ignurà quessu missaghji s’ellu un era micca voi.
extra_html: Pensate à leghje e regule di l’istanza è i termini d’usu.
subject: 'Mastodon: Istruzzione di cunfirmazione per %{instance}'
@@ -55,7 +56,7 @@ co:
updated: A vostra chjave d’accessu hè stata cambiata, è site cunnettatu·a.
updated_not_active: A vostra chjave d’accessu hè stata cambiata.
registrations:
- destroyed: U vostru contu hè statu sguassatu. Avvedeci!
+ destroyed: Avvedeci! U vostru contu hè statu sguassatu. Speremu di vi rivede da prestu.
signed_up: Benvinutu! Site cunnettatu·a.
signed_up_but_inactive: Site arregistratu·a, mà ùn pudete micca cunnettavi perchè u vostru contu deve esse attivatu.
signed_up_but_locked: Site arregistratu·a, mà ùn pudete micca cunnettavi perchè u vostru contu hè chjosu.
diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml
index 4268dc0ad..850ff1fe8 100644
--- a/config/locales/devise.cs.yml
+++ b/config/locales/devise.cs.yml
@@ -18,6 +18,7 @@ cs:
mailer:
confirmation_instructions:
action: Potvrdit e-mailovou adresu
+ action_with_app: Potvrdit a navrátit se do %{app}
explanation: S touto e-mailovou adresou jste si vytvořil/a účet na %{host}. K jeho aktivaci vám zbývá jedno kliknutí. Pokud jste to nebyl/a vy, ignorujte této e-mail.
extra_html: Prosím podívejte se také na pravidla této instance a naše podmínky používání.
subject: 'Mastodon: Potvrzovací instrukce pro %{instance}'
@@ -46,7 +47,7 @@ cs:
unlock_instructions:
subject: 'Mastodon: Instrukce pro odemčení účtu'
omniauth_callbacks:
- failure: Nelze vás ověřit z %{kind}, protože "%{reason}".
+ failure: Nelze vás ověřit z %{kind}, protože „%{reason}“.
success: Úspěšně ověřeno z účtu %{kind}.
passwords:
no_token: Tuto stránku nemůžete navštívit, pokud nepřicházíte z e-mailu pro obnovu hesla. Pokud jste z něj přišel/la, ujistěte se, že jste použil/a celé URL z e-mailu.
@@ -77,4 +78,7 @@ cs:
expired: vypršel, prosím vyžádejte si nový
not_found: nenalezen
not_locked: nebyl uzamčen
- not_saved: "%{count} chyb zabránila uložení tohoto %{resource}:"
+ not_saved:
+ few: "%{count} chyby zabránily uložení tohoto %{resource}:"
+ one: '1 chyba zabránila uložení tohoto %{resource}:'
+ other: "%{count} chyb zabránilo uložení tohoto %{resource}:"
diff --git a/config/locales/devise.da.yml b/config/locales/devise.da.yml
index b201b7ca8..56ae5183b 100644
--- a/config/locales/devise.da.yml
+++ b/config/locales/devise.da.yml
@@ -18,6 +18,7 @@ da:
mailer:
confirmation_instructions:
action: Bekræft email adresse
+ action_with_app: Bekræft og vend tilbage til %{app}
explanation: Du har oprettet en konto på %{host} med denne email adresse. Du er et klik fra at aktivere din konto. Hvis du ikke har oprettet dig, ignorer venligst denne email.
extra_html: Tjek også reglerne for instansen og vores betingelser.
subject: 'Mastodon: Bekræftelses instrukser for %{instance}'
diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml
index 0d33af6f1..fc41c9db5 100644
--- a/config/locales/devise.de.yml
+++ b/config/locales/devise.de.yml
@@ -18,6 +18,7 @@ de:
mailer:
confirmation_instructions:
action: E-Mail-Adresse verifizieren
+ action_with_app: Bestätigen und zu %{app} zurückkehren
explanation: Du hast einen Account auf %{host} mit dieser E-Mail-Adresse erstellt. Du bist nun einen Klick entfernt vor der Aktivierung. Wenn du das nicht warst, kannst du diese E-Mail ignorieren.
extra_html: Bitte lies auch die Regeln dieser Instanz und unsere Nutzungsbedingungen.
subject: 'Mastodon: Bestätigung deines Kontos bei %{instance}'
diff --git a/config/locales/devise.el.yml b/config/locales/devise.el.yml
index 523d1fb88..e9725d96b 100644
--- a/config/locales/devise.el.yml
+++ b/config/locales/devise.el.yml
@@ -18,6 +18,7 @@ el:
mailer:
confirmation_instructions:
action: Επιβεβαίωσε διεύθυνση email
+ action_with_app: Επιβεβαίωση και επιστροφή στο %{app}
explanation: Δημιούργησες έναν λογαριασμό στο %{host} με αυτή τη διεύθυνση email. Με ένα κλικ θα τον ενεργοποιήσεις. Αν δεν το έκανες εσύ, παρακαλούμε αγνόησε αυτό το email.
extra_html: Παρακαλούμε να διαβάσεις του κανόνες αυτού του κόμβου και τους όρους χρήσης της υπηρεσίας μας.
subject: 'Mastodon: Οδηγίες επιβεβαίωσης για %{instance}'
diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml
index 20938e47b..bd0642b25 100644
--- a/config/locales/devise.en.yml
+++ b/config/locales/devise.en.yml
@@ -18,6 +18,7 @@ en:
mailer:
confirmation_instructions:
action: Verify email address
+ action_with_app: Confirm and return to %{app}
explanation: You have 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.
extra_html: Please also check out the rules of the instance and our terms of service.
subject: 'Mastodon: Confirmation instructions for %{instance}'
diff --git a/config/locales/devise.eu.yml b/config/locales/devise.eu.yml
index 8905822a7..9893f5ba3 100644
--- a/config/locales/devise.eu.yml
+++ b/config/locales/devise.eu.yml
@@ -18,6 +18,7 @@ eu:
mailer:
confirmation_instructions:
action: Baieztatu e-mail helbidea
+ action_with_app: Berretsi eta itzuli %{app} aplikaziora
explanation: Kontu bat sortu duzu %{host} ostalarian e-mail helbide honekin. Aktibatzeko klik bat falta zaizu. Ez baduzu zuk sortu, ez egin ezer e-mail honekin.
extra_html: Egiaztatu instantziaren arauak eta zerbitzuaren erabilera baldintzak.
subject: 'Mastodon: %{instance} instantziaren argibideak baieztapenerako'
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index b6c9e5bd8..718b4056e 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -8,7 +8,7 @@ fr:
failure:
already_authenticated: Vous êtes déjà connecté⋅e.
inactive: Votre compte n’est pas encore activé.
- invalid: "%{authentication_keys} incorrect."
+ invalid: "%{authentication_keys} invalide."
last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé.
locked: Votre compte est verrouillé.
not_found_in_database: "%{authentication_keys} invalide."
@@ -18,6 +18,7 @@ fr:
mailer:
confirmation_instructions:
action: Vérifier l’adresse courriel
+ action_with_app: Confirmer et retourner à %{app}
explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l’activer. Si ce n’était pas vous, veuillez ignorer ce courriel.
extra_html: Merci de consultez également les règles de l’instance et nos conditions d’utilisation.
subject: Merci de confirmer votre inscription sur %{instance}
diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml
index a8fe6a2a5..9f60747a6 100644
--- a/config/locales/devise.gl.yml
+++ b/config/locales/devise.gl.yml
@@ -18,6 +18,7 @@ gl:
mailer:
confirmation_instructions:
action: Validar enderezo de correo-e
+ action_with_app: Confirmar e voltar a %{app}
explanation: Creou unha conta en %{host} con este enderezo de correo. Está a punto de activalo, si non foi vostede quen fixo a petición, por favor ignore este correo.
extra_html: Por favor, lea tamén as normas da instancia e os termos do servizo.
subject: 'Mastodon: Instruccións de confirmación para %{instance}'
diff --git a/config/locales/devise.hr.yml b/config/locales/devise.hr.yml
index 276d26cad..2a859054a 100644
--- a/config/locales/devise.hr.yml
+++ b/config/locales/devise.hr.yml
@@ -8,7 +8,7 @@ hr:
invalid: Nevaljan %{authentication_keys} ili lozinka.
last_attempt: Imaš još jedan pokušaj prije no što ti se račun zaključa.
locked: Tvoj račun je zaključan.
- not_found_in_database: Nevaljani %{authentication_keys} ili lozinka.
+ not_found_in_database: Nevaljan %{authentication_keys} ili lozinka.
send_instructions: Primit ćeš email sa uputama kako potvrditi svoju email adresu za nekoliko minuta.
send_paranoid_instructions: Ako tvoja email adresa postoji u našoj bazi podataka, primit ćeš email sa uputama kako ju potvrditi za nekoliko minuta.
timeout: Tvoja sesija je istekla. Molimo te, prijavi se ponovo kako bi nastavio.
diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml
index 0c5d8963c..30266e46b 100644
--- a/config/locales/devise.it.yml
+++ b/config/locales/devise.it.yml
@@ -18,6 +18,7 @@ it:
mailer:
confirmation_instructions:
action: Verifica indirizzo email
+ action_with_app: Conferma e torna a %{app}
explanation: Hai creato un account su %{host} con questo indirizzo email. Sei lonatno solo un clic dall'attivarlo. Se non sei stato tu, per favore ignora questa email.
extra_html: Per favore controllale regole dell'istanza e i nostri termini di servizio.
subject: 'Mastodon: Istruzioni di conferma per %{instance}'
diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml
index 9df0c7332..cae76d493 100644
--- a/config/locales/devise.ja.yml
+++ b/config/locales/devise.ja.yml
@@ -18,6 +18,7 @@ ja:
mailer:
confirmation_instructions:
action: メールアドレスの確認
+ action_with_app: 確認し %{app} に戻る
explanation: このメールアドレスで%{host}にアカウントを作成しました。有効にするまであと一歩です。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。
extra_html: また インスタンスのルール と 利用規約 もお読みください。
subject: 'Mastodon: メールアドレスの確認 %{instance}'
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index 637b1e731..a768d3c1d 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -8,17 +8,18 @@ nl:
failure:
already_authenticated: Je bent al ingelogd.
inactive: Jouw account is nog niet geactiveerd.
- invalid: Ongeldig %{authentication_keys}.
+ invalid: "%{authentication_keys} of wachtwoord ongeldig."
invalid_token: Ongeldige bevestigingscode.
last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort.
locked: Jouw account is opgeschort.
- not_found_in_database: Ongeldig %{authentication_keys}.
+ not_found_in_database: "%{authentication_keys} of wachtwoord ongeldig."
timeout: Jouw sessie is verlopen, log opnieuw in.
unauthenticated: Je dient in te loggen of te registreren.
unconfirmed: Je dient eerst jouw account te bevestigen.
mailer:
confirmation_instructions:
action: E-mailadres verifiëren
+ action_with_app: Bevestigen en naar %{app} teruggaan
explanation: Je hebt een account op %{host} aangemaakt en met één klik kun je deze activeren. Wanneer jij dit account niet hebt aangemaakt, mag je deze e-mail negeren.
extra_html: Bekijk ook de regels van de Mastodonserver en onze gebruiksvoorwaarden.
subject: 'Mastodon: E-mail bevestigen voor %{instance}'
@@ -47,8 +48,8 @@ nl:
unlock_instructions:
subject: 'Mastodon: Instructies om opschorten account ongedaan te maken'
omniauth_callbacks:
- failure: Kon je niet aanmelden met jouw %{kind} account, omdat "%{reason}".
- success: Successvol aangemeld met jouw %{kind} account.
+ failure: Kon je niet inloggen met jouw %{kind} account, omdat "%{reason}".
+ success: Succesvol met jouw %{kind} account ingelogd.
passwords:
no_token: Je kunt deze pagina niet benaderen zonder dat je een e-mail om je wachtwoord opnieuw in te stellen hebt ontvangen.
send_instructions: Je ontvangt via e-mail instructies hoe je jouw wachtwoord opnieuw moet instellen. Kijk tussen je spam wanneer niks werd ontvangen.
diff --git a/config/locales/devise.oc.yml b/config/locales/devise.oc.yml
index 16633e233..99809b858 100644
--- a/config/locales/devise.oc.yml
+++ b/config/locales/devise.oc.yml
@@ -18,6 +18,7 @@ oc:
mailer:
confirmation_instructions:
action: Verificar l’adreça de corrièl
+ action_with_app: Confirmar e tornar a %{app}
explanation: Venètz de crear un compte sus %{host} amb aquesta adreça de corrièl. Vos manca pas qu’un clic per l’activar. S’èra pas vosautre mercés de far pas cas a aqueste messatge.
extra_html: Pensatz tanben de gaitar las règlas de l’instància e nòstres tèrmes e condicions d’utilizacion.
subject: 'Mastodon : consignas de confirmacion per %{instance}'
@@ -50,8 +51,8 @@ oc:
success: Sètz ben autentificat dempuèi lo compte %{kind}.
passwords:
no_token: Podètz pas accedir a aquesta pagina sens venir d’un corriel de reïnicializacion de senhal. S’es lo cas, mercés de verificar qu’avètz ben utilizat l’URL donada de manièra complèta.
- send_instructions: Recebretz un corrièl amb las consignas per reĩnicializar vòstre senhal dins una estona. Mercés de verificar tanben vòstre dorsièr de corrièls indesirables.
- send_paranoid_instructions: Se vòstra adreça de corrièl existís dins nòstra basa de donadas, recebretz un ligam per reĩnicializar vòstre senhal dins una estona. Mercés de verificar tanben vòstre dorsièr de corrièls indesirables.
+ send_instructions: Recebretz un corrièl amb las consignas per reïnicializar vòstre senhal dins una estona. Mercés de verificar tanben vòstre dorsièr de corrièls indesirables.
+ send_paranoid_instructions: Se vòstra adreça de corrièl existís dins nòstra basa de donadas, recebretz un ligam per reïnicializar vòstre senhal dins una estona. Mercés de verificar tanben vòstre dorsièr de corrièls indesirables.
updated: Vòstre senhal es ben estat cambiat. Sètz ara connectat.
updated_not_active: Vòstre senhal es ben estat cambiat.
registrations:
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index 54bae2925..57c21437b 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -18,6 +18,7 @@ pl:
mailer:
confirmation_instructions:
action: Zweryfikuj adres e-mail
+ action_with_app: Potwierdź i wróć do %{app}
explanation: Utworzyłeś(-aś) konto na %{host} podając ten adres e-mail. Jedno kliknięcie dzieli Cię od aktywacji tego konta. Jeżeli to nie Ty, zignoruj ten e-mail.
extra_html: Przeczytaj też regulamin instancji i nasze zasady użytkowania.
subject: 'Mastodon: Instrukcje weryfikacji adresu e-mail na %{instance}'
@@ -77,4 +78,8 @@ pl:
expired: wygasło, poproś o nowe
not_found: nie znaleziono
not_locked: było zablokowane
- not_saved: 'Błędy (%{count}) uniemożliwiły zapisanie zasobu %{resource}:'
+ not_saved:
+ few: 'Błędy (%{count}) uniemożliwiły zapisanie tego %{resource}:'
+ many: 'Błędy (%{count}) uniemożliwiły zapisanie tego %{resource}:'
+ one: '1 błąd nie uniemożliwił zapisanie %{resource}:'
+ other: 'Błędy (%{count}) uniemożliwiły zapisanie tego %{resource}:'
diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml
index 051329c20..ede004892 100644
--- a/config/locales/devise.pt-BR.yml
+++ b/config/locales/devise.pt-BR.yml
@@ -18,6 +18,7 @@ pt-BR:
mailer:
confirmation_instructions:
action: Verificar endereço de e-mail
+ action_with_app: Confirmar e voltar para %{app}
explanation: Você criou uma conta em %{host} com esse endereço de e-mail. Você está a um clique de ativá-la. Se não foi você, por favor ignore esse e-mail.
extra_html: Por favor confira também as regras da instância e nossos termos de serviço.
subject: 'Mastodon: Instruções de confirmação para %{instance}'
diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml
index f80f7ad05..2186066c9 100644
--- a/config/locales/devise.ru.yml
+++ b/config/locales/devise.ru.yml
@@ -24,7 +24,7 @@ ru:
title: Подтвердите e-mail адрес
email_changed:
explanation: 'E-mail адрес Вашей учётной записи будет изменён на:'
- extra: Если Вы не меняли адрес e-mail, возможно кто-то получил доступ к Вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у Вас нет доступа к учётной записи
+ extra: Если Вы не меняли адрес e-mail, возможно кто-то получил доступ к Вашей учётной записи. Пожалуйста, срочно смените пароль или свяжитесь с администратором узла, если у Вас нет доступа к учётной записи.
subject: 'Mastodon: Адрес e-mail изменён'
title: Новый адрес e-mail
password_change:
diff --git a/config/locales/devise.sk.yml b/config/locales/devise.sk.yml
index a32fbe03b..16cd9262e 100644
--- a/config/locales/devise.sk.yml
+++ b/config/locales/devise.sk.yml
@@ -18,6 +18,7 @@ sk:
mailer:
confirmation_instructions:
action: Potvŕď emailovú adresu
+ action_with_app: Potvrď a vráť sa na %{app}
explanation: S touto emailovou adresou si si vytvoril/a účet na %{host}. Si iba jeden klik od jeho aktivácie. Pokiaľ si to ale nebol/a ty, prosím ignoruj tento email.
extra_html: Prosím pozri sa aj na pravidlá tohto servera, a naše užívaťeľské podiemky.
subject: 'Mastodon: Potvrdzovacie inštrukcie pre %{instance}'
@@ -29,7 +30,7 @@ sk:
title: Nová emailová adresa
password_change:
explanation: Heslo k tvojmu účtu bolo zmenené.
- extra: Pokiaľ si nezmenil/a svoje heslo, je pravdepodobné že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru pokiaľ si vymknutý/á zo svojho účtu.
+ extra: Ak si heslo nezmenil/a, je pravdepodobné že niekto iný získal prístup k tvojmu účtu. Naliehavo preto prosím zmeň svoje heslo, alebo kontaktuj administrátora tohto serveru pokiaľ si vymknutý/á zo svojho účtu.
subject: 'Mastodon: Heslo bolo zmenené'
title: Heslo bolo zmenené
reconfirmation_instructions:
@@ -59,22 +60,22 @@ sk:
signed_up: Vitaj! Tvoja registrácia bola úspešná.
signed_up_but_inactive: Registrácia bola úspešná. Avšak, účet ešte nebol aktivovaný, takže ťa nemôžeme prihlásiť.
signed_up_but_locked: Prihlasovanie úspešné. Avšak tvoj účet je zamknutý, takže ťa nieje možné prihlásiť.
- signed_up_but_unconfirmed: Správa s odkazom potvrdzujúcim registráciu bola poslaná na váš email. Pre aktváciu účtu, kliknite na daný odkaz.
- update_needs_confirmation: Účet bol úspešne zmenený ale ešte potrebujeme overiť vašu novú emailovú adresu. Pre overenie prosím kliknite na link v správe ktorú sme vám poslali na email.
- updated: Váš účet bol úspešne aktualizovaný.
+ signed_up_but_unconfirmed: Správa s odkazom na potvrdenie registrácie bola odoslaná na tvoj email. Pre aktváciu účtu, klikni prosím na daný odkaz. Takisto ale skontroluj aj svoju spam zložku, pokiaľ sa ti zdá, že si tento email nedostal/a.
+ update_needs_confirmation: Účet bol úspešne zmenený ale ešte potrebujeme overiť tvoju novú emailovú adresu. Pre overenie prosím klikni na link v správe ktorú si dostal/a na email. Takisto ale skontroluj aj svoju spam zložku, ak sa ti zdá, že si tento email nedostal/a.
+ updated: Tvoj účet bol úspešne aktualizovaný.
sessions:
- already_signed_out: Odhlásenie bolo úspešné.
- signed_in: Prihlásenie úspešné.
- signed_out: Odhlásenie úspešné.
+ already_signed_out: Odhlásil/a si sa úspešné.
+ signed_in: Prihlásil/a si sa úspešné.
+ signed_out: Odhlásil/a si sa úspešné.
unlocks:
- send_instructions: O niekoľko minút obdržíte email s inštrukciami ako nastaviť nové heslo.
- send_paranoid_instructions: Ak váš účet existuje, o niekoľko minút obdržíte email s inštrukciami ako ho odomknúť.
- unlocked: Váš účet bol úspešne odomknutý. Prosím prihláste sa.
+ send_instructions: O niekoľko minút obdržíš email s pokynmi, ako nastaviť nové heslo. Prosím, skontroluj ale aj svoju spam zložku, pokiaľ sa ti zdá, že si tento email nedostal/a.
+ send_paranoid_instructions: Ak tvoj účet existuje, o niekoľko minút obdržíš email s pokynmi ako si ho odomknúť. Prosím, skontroluj ale aj svoju spam zložku, pokiaľ sa ti zdá, že si tento email nedostal/a.
+ unlocked: Tvoj účet bol úspešne odomknutý. Pre pokračovanie sa prosím prihlás.
errors:
messages:
- already_confirmed: bol už potvrdený, skúste sa prihlásiť
- confirmation_period_expired: musí byť potvrdený do %{period}, prosím požiadajte o nový
- expired: expiroval, prosím, vyžiadajte si nový
+ already_confirmed: bol už potvrdený, skús sa prihlásiť
+ confirmation_period_expired: musí byť potvrdený do %{period}, prosím požiadaj o nový
+ expired: vypŕšal, prosím, vyžiadaj si nový
not_found: nenájdený
not_locked: nebol uzamknutý
not_saved:
diff --git a/config/locales/devise.sr.yml b/config/locales/devise.sr.yml
index 9d1359695..475d1e2a5 100644
--- a/config/locales/devise.sr.yml
+++ b/config/locales/devise.sr.yml
@@ -17,11 +17,33 @@ sr:
unconfirmed: Пре наставка морате потврдити свој налог.
mailer:
confirmation_instructions:
+ action: Потврдите адресу е-поште
+ action_with_app: Потврди и врати се на %{app}
+ explanation: Направили сте налог на %{host} са адресом ове е-поште. На један клик сте удаљени од активирања. Ако ово нисте ви, молимо игноришите ову е-пошту.
+ extra_html: Молимо да такође проверите правила ове инстанце и наше услове коришћења.
subject: 'Мастодонт: Упутство за потврду корисничког налога на инстанци %{instance}'
+ title: Потврдите адресу е-поште
+ email_changed:
+ explanation: 'Адреса ове е-поште за ваш налог ће бити промењена у:'
+ extra: Ако нисте променили вашу е-пошту, сасвим је могуће да је неко други добио приступ вашем налогу. Молимо промените лозинку одмах или контактирајте администратора инстанце ако сте закључани изван вашег налога.
+ subject: 'Мастодон: Е-пошта промењена'
+ title: Нова адреса е-поште
password_change:
+ explanation: Лозинка вашег налога је промењена.
+ extra: Ако нисте променили вашу е-пошту, сасвим је могуће да је неко други добио приступ вашем налогу. Молимо промените лозинку одмах или контактирајте администратора инстанце ако сте закључани изван вашег налога.
subject: 'Мастодонт: Лозинка промењена'
+ title: Лозинка промењена
+ reconfirmation_instructions:
+ explanation: Потврдите нову адресу да бисте променили е-пошту.
+ extra: Ако ова промена није иницирана са ваше стране, молимо игноришите ову е-пошту. Адреса е-пошта за овај Мастодон налог неће бити промењена док не приступите повезници/линку изнад.
+ subject: 'Мастодон: Потврдите е-пошту за %{instance}'
+ title: Потврдите адресу е-поште
reset_password_instructions:
+ action: Лозинка промењена
+ explanation: Затражили сте нову лозинку за ваш налог.
+ extra: Ако нисте затражили ово, молимо игноришите ову е-пошту. Ваша лозинка неће бити промењена док не приступите повезници/вези изнад и не направите нову.
subject: 'Мастодонт: Упутство за ресетовање лозинке'
+ title: Лозинка ресетована
unlock_instructions:
subject: 'Мастодонт: Упутство за откључавање корисничког налога'
omniauth_callbacks:
diff --git a/config/locales/devise.uk.yml b/config/locales/devise.uk.yml
index 149fc6ce5..6ec01b3d7 100644
--- a/config/locales/devise.uk.yml
+++ b/config/locales/devise.uk.yml
@@ -11,7 +11,7 @@ uk:
invalid: Неправильний %{authentication_keys} або пароль.
last_attempt: У вас є остання спроба, після якої вхід буде заблокований.
locked: Ваш акаунт заблокований.
- not_found_in_database: Неправильні %{authentication_keys} або пароль.
+ not_found_in_database: Неправильний %{authentication_keys} або пароль.
timeout: Ваша сесія вичерпана. Будь ласка, зайдіть знову, щоб продовжити.
unauthenticated: Для продовження Вам потрібно увійти або зареєструватися.
unconfirmed: Для продовження Вам потрібно підтвердити Вашу поштову скриньку.
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index 6dec562e1..abbe45942 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -77,4 +77,6 @@ zh-TW:
expired: 已經過期,請重新申請
not_found: 找不到
not_locked: 並未被鎖定
- not_saved: "%{count} 個錯誤使 %{resource} 無法被儲存︰"
+ not_saved:
+ one: 有 1 個錯誤讓此 %{resource} 無法儲存:
+ other: 有 %{count} 個錯誤讓此 %{resource} 無法儲存:
diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml
index 6e32cbc2f..ce88af797 100644
--- a/config/locales/doorkeeper.ast.yml
+++ b/config/locales/doorkeeper.ast.yml
@@ -1,2 +1,72 @@
---
-ast: {}
+ast:
+ activerecord:
+ attributes:
+ doorkeeper/application:
+ name: Nome de l'aplicación
+ website: Sitiu web de l'aplicación
+ errors:
+ models:
+ doorkeeper/application:
+ attributes:
+ redirect_uri:
+ invalid_uri: ha ser una URI válida.
+ relative_uri: ha ser una URI absoluta.
+ doorkeeper:
+ applications:
+ buttons:
+ cancel: Encaboxar
+ destroy: Destruyir
+ edit: Editar
+ submit: Unviar
+ index:
+ name: Nome
+ show:
+ actions: Aiciones
+ title: 'Aplicación: %{name}'
+ authorizations:
+ error:
+ title: Asocedió un fallu
+ new:
+ able_to: Va ser a
+ prompt: L'aplicación %{client_name} solicitó l'accesu a la to cuenta
+ show:
+ title: Copia esti códigu d'autorización y apégalu na aplicación.
+ authorized_applications:
+ buttons:
+ revoke: Revocar
+ index:
+ date_format: "%H:%M:%S %d-%m-%Y"
+ title: Les aplicaciones qu'autoricesti
+ errors:
+ messages:
+ invalid_token:
+ expired: Caducó'l pase d'accesu
+ revoked: Revocóse'l pase d'accesu
+ unknown: El pase d'accesu nun ye válidu
+ unauthorized_client: El veceru nun ta autorizáu pa facer esta solicitú usando esti métodu.
+ unsupported_response_type: El sirvidor d'autorización nun sofita esta triba de rempuesta.
+ layouts:
+ admin:
+ nav:
+ applications: Aplicaciones
+ oauth2_provider: Fornidor d'OAuth2
+ scopes:
+ read:accounts: ver información de cuentes
+ read:blocks: ver quién bloquies
+ read:filters: ver les tos peñeres
+ read:follows: ver quién sigues
+ read:lists: ver les tos llistes
+ read:mutes: ver quién silencies
+ read:notifications: ver los tos avisos
+ read:statuses: ver tolos estaos
+ write: modificar los datos de la to cuenta
+ write:accounts: modificar el to perfil
+ write:blocks: bloquiar cuentes y dominios
+ write:filters: crear peñeres
+ write:follows: siguir a xente
+ write:lists: crear llistes
+ write:media: xubir ficheros de medios
+ write:mutes: silenciar xente y conversaciones
+ write:notifications: llimpiar los tos avisos
+ write:statuses: espublizar estaos
diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml
index 352b31895..b9e9bc034 100644
--- a/config/locales/doorkeeper.cs.yml
+++ b/config/locales/doorkeeper.cs.yml
@@ -72,7 +72,7 @@ cs:
index:
application: Aplikace
created_at: Autorizováno
- date_format: "%d.%m.%Y %H:%M:%S"
+ date_format: "%d. %m. %Y %H:%M:%S"
scopes: Rozsahy
title: Vaše autorizované aplikace
errors:
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 8f718a849..c29b8301e 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -4,7 +4,7 @@ el:
about_hashtag_html: Αυτά είναι κάποια από τα δημόσια τουτ σημειωμένα με #%{hashtag}. Μπορείς να αλληλεπιδράσεις με αυτά αν έχεις λογαριασμό οπουδήποτε στο fediverse.
about_mastodon_html: Το Mastodon είναι ένα κοινωνικό δίκτυο που βασίζεται σε ανοιχτά δικτυακά πρωτόκολλα και ελεύθερο λογισμικό ανοιχτού κώδικα. Είναι αποκεντρωμένο όπως το e-mail.
about_this: Σχετικά
- administered_by: 'Διαχειρίζεται από:'
+ administered_by: 'Διαχειριστής:'
api: API
apps: Εφαρμογές κινητών
closed_registrations: Αυτή τη στιγμή οι εγγραφές σε αυτό τον κόμβο είναι κλειστές. Αλλά! Μπορείς να βρεις έναν άλλο κόμβο για να ανοίξεις λογαριασμό και να έχεις πρόσβαση από εκεί στο ίδιο ακριβώς δίκτυο.
@@ -19,7 +19,7 @@ el:
humane_approach_body: Μαθαίνοντας από τις αποτυχίες άλλων δικτύων, το Mastodon στοχεύει να κάνει σχεδιαστικά ηθικές επιλογές για να καταπολεμήσει την κακόβουλη χρήση των κοινωνικών δικτύων.
humane_approach_title: Μια πιο ανθρώπινη προσέγγιση
not_a_product_body: Το Mastodon δεν είναι ένα εμπορικό δίκτυο. Δεν έχει διαφημίσεις, δεν έχει εξόρυξη δεδομένων, δεν έχει περιφραγμένους κήπους. Δεν υπάρχει κεντρικό σημείο ελέγχου.
- not_a_product_title: Είσαι ένας άνθρωπος, όχι κάποιο προϊόν
+ not_a_product_title: Είσαι άνθρωπος, όχι προϊόν
real_conversation_body: Με 500 χαρακτήρες στη διάθεσή σου και υποστήριξη για λεπτομερή έλεγχο και προειδοποιήσεις πολυμέσων, μπορείς να εκφραστείς με τον τρόπο που θέλεις.
real_conversation_title: Φτιαγμένο για αληθινή συζήτηση
within_reach_body: Οι πολλαπλές εφαρμογές για το iOS, το Android και τις υπόλοιπες πλατφόρμες, χάρη σε ένα φιλικό προς τους προγραμματιστές οικοσύστημα API, σου επιτρέπουν να κρατάς επαφή με τους φίλους και τις φίλες σου οπουδήποτε.
@@ -48,6 +48,7 @@ el:
other: Ακόλουθοι
following: Ακολουθεί
joined: Εγγράφηκε στις %{date}
+ last_active: τελευταία ενεργός/ή
link_verified_on: Η κυριότητα αυτού του συνδέσμου ελέγχθηκε στις %{date}
media: Πολυμέσα
moved_html: 'Ο/Η %{name} μετακόμισε στο %{new_profile_link}:'
@@ -69,6 +70,9 @@ el:
moderator: Μεσολαβητής
unfollow: Διακοπή παρακολούθησης
admin:
+ account_actions:
+ action: Εκτέλεση ενέργειας
+ title: Εκτέλεση ενέργειας διαχείρισης στο %{acct}
account_moderation_notes:
create: Άφησε σημείωση
created_msg: Επιτυχής δημιουργία σημειώματος μεσολάβησης!
@@ -88,6 +92,7 @@ el:
confirm: Επιβεβαίωση
confirmed: Επιβεβαιώθηκε
confirming: Προς επιβεβαίωση
+ deleted: Διαγραμμένοι
demote: Υποβίβαση
disable: Απενεργοποίηση
disable_two_factor_authentication: Απενεργοποίηση 2FA
@@ -103,8 +108,11 @@ el:
followers: Ακόλουθοι
followers_url: URL ακολούθων
follows: Ακολουθεί
+ header: Επικεφαλίδα
inbox_url: URL εισερχομένων
+ invited_by: Προσκλήθηκε από
ip: IP
+ joined: Γράφτηκε
location:
all: Όλες
local: Τοπικά
@@ -114,6 +122,7 @@ el:
media_attachments: Συνημμένα πολυμέσα
memorialize: Μετατροπή σε νεκρολογία
moderation:
+ active: Ενεργός/ή
all: Όλα
silenced: Αποσιωπημένα
suspended: Σε αναστολή
@@ -123,12 +132,8 @@ el:
most_recent_ip: Πιο πρόσφατη IP
no_limits_imposed: Χωρίς όρια
not_subscribed: Άνευ συνδρομής
- order:
- alphabetic: Αλφαβητικά
- most_recent: Πιο πρόσφατα
- title: Ταξινόμηση
outbox_url: URL εξερχομένων
- perform_full_suspension: Κάνε πλήρη αναστολή
+ perform_full_suspension: Αναστολή
profile_url: URL προφίλ
promote: Προβίβασε
protocol: Πρωτόκολλο
@@ -136,6 +141,7 @@ el:
push_subscription_expires: Η εγγραφή PuSH λήγει
redownload: Ανανέωση αβατάρ
remove_avatar: Απομακρυσμένο αβατάρ
+ remove_header: Αφαίρεση επικεφαλίδας
resend_confirmation:
already_confirmed: Ήδη επιβεβαιωμένος χρήστης
send: Επανάληψη αποστολής email επιβεβαίωσης
@@ -154,7 +160,6 @@ el:
shared_inbox_url: URL κοινόχρηστων εισερχομένων
show:
created_reports: Αναφορές από αυτόν το λογαριασμό
- report: καταγγελία
targeted_reports: Αναφορές για αυτόν το λογαριασμό
silence: Αποσιώπησε
silenced: Αποσιωπημένοι
@@ -167,12 +172,14 @@ el:
undo_suspension: Αναίρεση παύσης
unsubscribe: Κατάργηση εγγραφής
username: Όνομα χρήστη
+ warn: Προειδοποίηση
web: Διαδίκτυο
action_logs:
actions:
assigned_to_self_report: Ο/Η %{name} ανάθεσε την καταγγελία %{target} στον εαυτό του/της
change_email_user: Ο/Η %{name} άλλαξε τη διεύθυνση email του χρήστη %{target}
confirm_user: Ο/Η %{name} επιβεβαίωσε τη διεύθυνση email του χρήστη %{target}
+ create_account_warning: Ο/Η %{name} έστειλε προειδοποίηση προς %{target}
create_custom_emoji: Ο/Η %{name} ανέβασε νέο emoji %{target}
create_domain_block: Ο/Η %{name} μπλόκαρε τον τομέα %{target}
create_email_domain_block: Ο/Η %{name} έβαλε τον τομέα email %{target} σε μαύρη λίστα
@@ -224,13 +231,14 @@ el:
title: Προσαρμοσμένα emoji
unlisted: Μη καταχωρημένα
update_failed_msg: Αδυναμία ενημέρωσης του emoji
- updated_msg: Επιτυχής ενημέρωση του Emoji!
+ updated_msg: Επιτυχής ενημέρωση του emoji!
upload: Ανέβασμα
dashboard:
backlog: χρονοκαθυστερημένες εργασίες
config: Διαμόρφωση
feature_deletions: Διαγραφή λογαριασμών
feature_invites: Σύνδεσμοι προσκλήσεων
+ feature_profile_directory: Κατάλογος χρηστών
feature_registrations: Εγγραφές
feature_relay: Ανταποκριτής ομοσπονδίας
features: Λειτουργίες
@@ -265,11 +273,11 @@ el:
reject_media_hint: Αφαιρεί τα τοπικά αποθηκευμένα αρχεία πολυμέσων και αποτρέπει τη λήψη άλλων στο μέλλον. Δεν έχει σημασία για τις αναστολές
reject_reports: Απόρριψη καταγγελιών
reject_reports_hint: Αγνόηση όσων καταγγελιών προέρχονται από αυτό τον τομέα. Δεν σχετίζεται με τις παύσεις
- severities:
- noop: Κανένα
- silence: Αποσιώπηση
- suspend: Αναστολή
- severity: Αυστηρότητα
+ rejecting_media: απορρίπτουν αρχεία πολυμέσων
+ rejecting_reports: απορρίπτουν καταγγελίες
+ severity:
+ silence: αποσιωπημένοι
+ suspend: ανεσταλμένοι
show:
affected_accounts:
one: Επηρεάζεται ένας λογαριασμός στη βάση δεδομένων
@@ -279,7 +287,6 @@ el:
suspend: Αναίρεση αναστολής όλων των λογαριασμών του τομέα
title: Αναίρεση αποκλεισμού για τον τομέα %{domain}
undo: Αναίρεση
- title: Αποκλεισμένοι τομείς
undo: Αναίρεση
email_domain_blocks:
add_new: Πρόσθεση νέου
@@ -291,12 +298,24 @@ el:
create: Πρόσθεση τομέα
title: Νέα εγγραφή email στη μαύρη λίστα
title: Μαύρη λίστα email
+ followers:
+ back_to_account: Επιστροφή στον λογαριασμό
+ title: Ακόλουθοι του/της %{acct}
instances:
- account_count: Γνωστοί λογαριασμοί
- domain_name: Τομέας
- reset: Επαναφορά
- search: Αναζήτηση
+ delivery_available: Διαθέσιμη παράδοση
+ known_accounts:
+ one: "%{count} γνωστός λογαριασμός"
+ other: "%{count} γνωστοί λογαριασμοί"
+ moderation:
+ all: Όλα
+ limited: Περιορισμένα
+ title: Διαμεσολάβηση
title: Γνωστοί κόμβοι
+ total_blocked_by_us: Μπλοκάρονται από εμάς
+ total_followed_by_them: Ακολουθούνται από εκείνους
+ total_followed_by_us: Ακολουθούνται από εμάς
+ total_reported: Καταγγελίες προς εκείνους
+ total_storage: Συνημμένα πολυμέσα
invites:
deactivate_all: Απενεργοποίηση όλων
filter:
@@ -333,14 +352,14 @@ el:
assigned: Αρμόδιος συντονιστής
comment:
none: Κανένα
- created_at: Αναφέρθηκε
+ created_at: Καταγγέλθηκε
mark_as_resolved: Σημειωμένο ως επιλυμένο
mark_as_unresolved: Σημειωμένο ως ανεπίλυτο
notes:
create: Πρόσθεσε σημείωση
create_and_resolve: Επίλυσε με σημείωση
create_and_unresolve: Ξανάνοιξε με σημείωση
- delete: Διέγραψε
+ delete: Διαγραφή
placeholder: Περιέγραψε τις ενέργειες που έγιναν, ή οποιαδήποτε άλλη ενημέρωση...
reopen: Ξανάνοιξε την καταγγελία
report: 'Καταγγελία #%{id}'
@@ -378,6 +397,9 @@ el:
preview_sensitive_media:
desc_html: Οι προεπισκοπήσεις συνδέσμων σε τρίτους ιστότοπους θα είναι ορατές ακόμα κι όταν το πολυμέσο έχει σημειωθεί ως ευαίσθητο
title: Εμφάνιση ευαίσθητων πολυμέσων στις προεπισκοπήσεις OpenGraph
+ profile_directory:
+ desc_html: Να επιτρέπεται η ανακάλυψη χρηστών
+ title: Ενεργοποίηση του καταλόγου χρηστών
registrations:
closed_message:
desc_html: Εμφανίζεται στην εισαγωγική σελίδα όταν οι εγγραφές είναι κλειστές. Μπορείς να χρησιμοποιήσεις HTML tags
@@ -437,13 +459,21 @@ el:
last_delivery: Τελευταία παράδοση
title: WebSub
topic: Θέμα
- suspensions:
- bad_acct_msg: Η τιμή επιβεβαίωσης δεν ταιριάζει. Σίγουρα αναστέλλεις το σωστό λογαριασμό;
- hint_html: 'Για να επιβεβαιώσεις την αναστολή του λογαριασμού, γράψε %{value} στο ακόλουθο πεδίο:'
- proceed: Συνέχεια
- title: Αναστολή %{acct}
- warning_html: 'Αναστέλλοντας αυτό το λογαριασμό θα διαγραφούν αμετάκλητα δεδομένα του, μεταξύ των οποίων:'
+ tags:
+ accounts: Λογαριασμοί
+ hidden: Κρυμμένες
+ hide: Απόκρυψη από κατάλογο
+ name: Ταμπέλα
+ title: Ταμπέλες
+ unhide: Εμφάνιση σε κατάλογο
+ visible: Εμφανείς
title: Διαχείριση
+ warning_presets:
+ add_new: Πρόσθεση νέου
+ delete: Διαγραφή
+ edit: Ενημέρωση
+ edit_preset: Ενημέρωση προκαθορισμένης προειδοποίησης
+ title: Διαχείριση προκαθορισμένων προειδοποιήσεων
admin_mailer:
new_report:
body: Ο/Η %{reporter} κατήγγειλε τον/την %{target}
@@ -465,7 +495,7 @@ el:
warning: Μεγάλη προσοχή με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν!
your_token: Το διακριτικό πρόσβασής σου (access token)
auth:
- agreement_html: Με την εγγραφή σου, συμφωνείς να ακολουθείς τους κανόνες αυτού του κόμβου και τους όρους χρήσης του.
+ agreement_html: Επιλέγοντας το "Εγγραφή", συμφωνείς πως δέχεσαι τους κανόνες αυτού του κόμβου και τους όρους χρήσης του.
change_password: Συνθηματικό
confirm_email: Επιβεβαίωση email
delete_account: Διαγραφή email
@@ -502,7 +532,7 @@ el:
datetime:
distance_in_words:
about_x_hours: "%{count}ω"
- about_x_months: "%{count}μη"
+ about_x_months: "%{count}μ"
about_x_years: "%{count}ε"
almost_x_years: "%{count}ε"
half_a_minute: Μόλις τώρα
@@ -521,6 +551,16 @@ el:
success_msg: Ο λογαριασμός σου διαγράφηκε με επιτυχία
warning_html: Μόνο η διαγραφή περιεχομένου από αυτό τον συγκεκριμένο κόμβο είναι εγγυημένη. Το περιεχόμενο που έχει διαμοιραστεί ευρέως είναι πιθανό να αφήσει ίχνη. Όσοι διακομιστές είναι εκτός σύνδεσης και όσοι έχουν διακόψει τη λήψη των ενημερώσεων του κόμβου σου, δε θα ενημερώσουν τις βάσεις δεδομένων τους.
warning_title: Διαθεσιμότητα ήδη διανεμημένου περιεχομένου
+ directories:
+ directory: Κατάλογος λογαριασμών
+ enabled: Περιλαμβάνεσαι στον κατάλογο.
+ enabled_but_waiting: Έχεις επιλέξει να εμφανίζεσαι στον κατάλογο μεν, αλλά ακόμα δεν έχεις τον ελάχιστο αριθμό ακόλουθων (%{min_followers}) που απαιτείται για να συμπεριληφθείς.
+ explanation: Βρες χρήστες βάσει των ενδιαφερόντων τους
+ explore_mastodon: Εξερεύνησε %{title}
+ how_to_enable: Δεν έχεις επιλέξει να συμπεριληφθείς στον καταλογο. Μπορείς να επιλέξεις παρακάτω. Χρησιμοποίησε ταμπέλες στο κείμενο του βιογραφικού σου για να εμφανίζεσαι κάτω από συγκεκριμένες ταμπέλες!
+ people:
+ one: "%{count} άτομο"
+ other: "%{count} άτομα"
errors:
'403': Δεν έχεις δικαίωμα πρόσβασης σε αυτή τη σελίδα.
'404': Η σελίδα που ψάχνεις δεν υπάρχει.
@@ -543,7 +583,9 @@ el:
size: Μέγεθος
blocks: Μπλοκάρεις
csv: CSV
+ domain_blocks: Μπλοκαρίσματα κόμβων
follows: Ακολουθείς
+ lists: Λίστες
mutes: Αποσιωπάς
storage: Αποθήκευση πολυμέσων
filters:
@@ -690,14 +732,26 @@ el:
missing_resource: Δεν βρέθηκε το απαιτούμενο URL ανακατεύθυνσης για το λογαριασμό σου
no_account_html: Δεν έχεις λογαριασμό; Μπορείς να γραφτείς εδώ
proceed: Συνέχισε για να ακολουθήσεις
- prompt: 'Θα ακολουθήσεις:'
+ prompt: 'Ετοιμάζεσαι να ακολουθήσεις:'
+ reason_html: "Γιατί χρειάζεται αυτό το βήμα; Το %{instance}
πορεία να μην είναι ο κόμβος που είσαι γραμμένος, έτσι πρέπει να σε ανακατευθύνουμε στο δικό σου."
remote_interaction:
- proceed: Συνέχισε για να αλληλεπιδράσεις
- prompt: 'Θέλεις να αλληλεπιδράσεις με αυτό το τουτ:'
+ favourite:
+ proceed: Συνέχισε για σημείωση ως αγαπημένου
+ prompt: 'Θέλεις να σημειώσεις ως αγαπημένο αυτό το τουτ:'
+ reblog:
+ proceed: Συνέχισε για προώθηση
+ prompt: 'Θέλεις να προωθήσεις αυτό το τουτ:'
+ reply:
+ proceed: Συνέχισε για να απαντήσεις
+ prompt: 'Θέλεις να απαντήσεις σε αυτό το τουτ:'
remote_unfollow:
error: Σφάλμα
title: Τίτλος
unfollowed: Σταμάτησες να ακολουθείς
+ scheduled_statuses:
+ over_daily_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ για εκείνη τη μέρα
+ over_total_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ
+ too_soon: Η προγραμματισμένη ημερομηνία πρέπει να είναι στο μέλλον
sessions:
activity: Τελευταία δραστηριότητα
browser: Φυλλομετρητής (Browser)
@@ -902,6 +956,22 @@ el:
explanation: Ζήτησες ένα εφεδρικό αντίγραφο του λογαριασμού σου στο Mastodon. Είναι έτοιμο για κατέβασμα!
subject: Το εφεδρικό αντίγραφό σου είναι έτοιμο για κατέβασμα
title: Λήψη εφεδρικού αρχείου
+ warning:
+ explanation:
+ disable: Όσο ο λογαριασμός σου είναι παγωμένος, τα στοιχεία του παραμένουν άθικτα αλλά δεν μπορείς να κανείς καμία ενέργεια μέχρι να ξεκλειδωθείς.
+ silence: Όσο ο λογαριασμός σου είναι περιορισμένος, μόνο όσοι σε ακολουθούν ήδη θα βλέπουν τα τουτ σου σε αυτό τον κόμβο ενώ μπορεί να εξαιρεθείς από διάφορες δημόσιες απαριθμήσεις. Πάντως, θα μπορούν να σε ακολουθήσουν χειροκίνητα.
+ suspend: Ο λογαριασμός σου αναστάλθηκε μόνιμα, όλα τα τουτ και τα ανεβασμένα πολυμέσα σου διαγράφηκαν αμετάκλητα από αυτόν τον κόμβο και σε όσους άλλους είχες ακόλουθους.
+ review_server_policies: Αναθεώρηση πολιτικής του κόμβου
+ subject:
+ disable: Ο λογαριασμός σου %{acct} έχει παγώσει
+ none: Προειδοποίηση προς %{acct}
+ silence: Ο λογαριασμός σου %{acct} έχει περιοριστεί
+ suspend: Ο λογαριασμός σου %{acct} έχει ανασταλεί
+ title:
+ disable: Παγωμένος λογαριασμός
+ none: Προειδοποίηση
+ silence: Περιορισμένος λογαριασμός
+ suspend: Ανασταλμένος λογαριασμός
welcome:
edit_profile_action: Στήσιμο προφίλ
edit_profile_step: Μπορείς να προσαρμόσεις το προφίλ σου ανεβάζοντας μια εικόνα εμφάνισης & επικεφαλίδας, αλλάζοντας το εμφανιζόμενο όνομά σου και άλλα. Αν θες να ελέγχεις τους νέου σου ακόλουθους πριν αυτοί σε ακολουθήσουν, μπορείς να κλειδώσεις το λογαριασμό σου.
@@ -913,7 +983,6 @@ el:
review_preferences_action: Αλλαγή προτιμήσεων
review_preferences_step: Σιγουρέψου πως έχεις ορίσει τις προτιμήσεις σου, όπως το ποια email θέλεις να λαμβάνεις, ή ποιο επίπεδο ιδιωτικότητας θέλεις να έχουν οι δημοσιεύσεις σου. Αν δεν σε πιάνει ναυτία, μπορείς να ενεργοποιήσεις την αυτόματη αναπαραγωγή των GIF.
subject: Καλώς ήρθες στο Mastodon
- tip_bridge_html: Αν έχεις έρθει από το Twitter, μπορείς να βρεις τους φίλους και τις φίλες σου στο Mastodon χρησιμοποιώντας την βοηθητική εφαρμογή. Υπόψιν πως δουλεύει μόνο αν την έχουν χρησιμοποιήσει και εκείνοι!
tip_federated_timeline: Η ομοσπονδιακή ροή είναι μια όψη πραγματικού χρόνου στο δίκτυο του Mastodon. Παρόλα αυτά, περιλαμβάνει μόνο όσους ακολουθούν οι γείτονές σου, άρα δεν είναι πλήρης.
tip_following: Ακολουθείς το διαχειριστή του διακομιστή σου αυτόματα. Για να βρεις περισσότερους ενδιαφέροντες ανθρώπους, έλεγξε την τοπική και την ομοσπονδιακή ροή.
tip_local_timeline: Η τοπική ροή είναι η όψη πραγματικού χρόνου των ανθρώπων στον κόμβο %{instance}. Αυτοί είναι οι άμεσοι γείτονές σου!
@@ -928,5 +997,5 @@ el:
seamless_external_login: Επειδή έχεις συνδεθεί μέσω τρίτης υπηρεσίας, οι ρυθμίσεις συνθηματικού και email δεν είναι διαθέσιμες.
signed_in_as: 'Έχεις συνδεθεί ως:'
verification:
- explanation_html: 'Μπορείς να πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει περιέχει την ιδιότητα (attribute) rel="me"
. Το κείμενο κειμένου δεν έχει σημασία. Για παράδειγμα:'
+ explanation_html: 'Μπορείς να πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής πρέπει περιέχει την ιδιότητα (attribute) rel="me"
. Το περιεχόμενο του κειμένου δεν έχει σημασία. Για παράδειγμα:'
verification: Πιστοποίηση
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 96fbb88ed..fd4667573 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -48,6 +48,7 @@ en:
other: Followers
following: Following
joined: Joined %{date}
+ last_active: last active
link_verified_on: Ownership of this link was checked on %{date}
media: Media
moved_html: "%{name} has moved to %{new_profile_link}:"
@@ -69,6 +70,9 @@ en:
moderator: Mod
unfollow: Unfollow
admin:
+ account_actions:
+ action: Perform action
+ title: Perform moderation action on %{acct}
account_moderation_notes:
create: Leave note
created_msg: Moderation note successfully created!
@@ -80,14 +84,15 @@ en:
by_domain: Domain
change_email:
changed_msg: Account email successfully changed!
- current_email: Current Email
- label: Change Email
- new_email: New Email
- submit: Change Email
- title: Change Email for %{username}
+ current_email: Current email
+ label: Change email
+ new_email: New email
+ submit: Change email
+ title: Change email for %{username}
confirm: Confirm
confirmed: Confirmed
confirming: Confirming
+ deleted: Deleted
demote: Demote
disable: Disable
disable_two_factor_authentication: Disable 2FA
@@ -95,16 +100,19 @@ en:
display_name: Display name
domain: Domain
edit: Edit
- email: E-mail
- email_status: E-mail Status
+ email: Email
+ email_status: Email status
enable: Enable
enabled: Enabled
feed_url: Feed URL
followers: Followers
followers_url: Followers URL
follows: Follows
+ header: Header
inbox_url: Inbox URL
+ invited_by: Invited by
ip: IP
+ joined: Joined
location:
all: All
local: Local
@@ -114,6 +122,7 @@ en:
media_attachments: Media attachments
memorialize: Turn into memoriam
moderation:
+ active: Active
all: All
silenced: Silenced
suspended: Suspended
@@ -123,10 +132,6 @@ en:
most_recent_ip: Most recent IP
no_limits_imposed: No limits imposed
not_subscribed: Not subscribed
- order:
- alphabetic: Alphabetic
- most_recent: Most recent
- title: Order
outbox_url: Outbox URL
perform_full_suspension: Suspend
profile_url: Profile URL
@@ -134,8 +139,9 @@ en:
protocol: Protocol
public: Public
push_subscription_expires: PuSH subscription expires
- redownload: Refresh avatar
+ redownload: Refresh profile
remove_avatar: Remove avatar
+ remove_header: Remove header
resend_confirmation:
already_confirmed: This user is already confirmed
send: Resend confirmation email
@@ -151,28 +157,29 @@ en:
user: User
salmon_url: Salmon URL
search: Search
- shared_inbox_url: Shared Inbox URL
+ shared_inbox_url: Shared inbox URL
show:
- created_reports: Reports created by this account
- report: report
- targeted_reports: Reports made about this account
+ created_reports: Made reports
+ targeted_reports: Reported by others
silence: Silence
silenced: Silenced
statuses: Statuses
subscribe: Subscribe
suspended: Suspended
title: Accounts
- unconfirmed_email: Unconfirmed E-mail
+ unconfirmed_email: Unconfirmed email
undo_silenced: Undo silence
undo_suspension: Undo suspension
unsubscribe: Unsubscribe
username: Username
+ warn: Warn
web: Web
action_logs:
actions:
assigned_to_self_report: "%{name} assigned report %{target} to themselves"
change_email_user: "%{name} changed the e-mail address of user %{target}"
confirm_user: "%{name} confirmed e-mail address of user %{target}"
+ create_account_warning: "%{name} sent a warning to %{target}"
create_custom_emoji: "%{name} uploaded new emoji %{target}"
create_domain_block: "%{name} blocked domain %{target}"
create_email_domain_block: "%{name} blacklisted e-mail domain %{target}"
@@ -231,6 +238,7 @@ en:
config: Configuration
feature_deletions: Account deletions
feature_invites: Invite links
+ feature_profile_directory: Profile directory
feature_registrations: Registrations
feature_relay: Federation relay
features: Features
@@ -248,7 +256,7 @@ en:
week_users_active: active this week
week_users_new: users this week
domain_blocks:
- add_new: Add new
+ add_new: Add new domain block
created_msg: Domain block is now being processed
destroyed_msg: Domain block has been undone
domain: Domain
@@ -265,11 +273,11 @@ en:
reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions
reject_reports: Reject reports
reject_reports_hint: Ignore all reports coming from this domain. Irrelevant for suspensions
- severities:
- noop: None
- silence: Silence
- suspend: Suspend
- severity: Severity
+ rejecting_media: rejecting media files
+ rejecting_reports: rejecting reports
+ severity:
+ silence: silenced
+ suspend: suspended
show:
affected_accounts:
one: One account in the database affected
@@ -279,8 +287,7 @@ en:
suspend: Unsuspend all existing accounts from this domain
title: Undo domain block for %{domain}
undo: Undo
- title: Domain blocks
- undo: Undo
+ undo: Undo domain block
email_domain_blocks:
add_new: Add new
created_msg: Successfully added e-mail domain to blacklist
@@ -291,12 +298,24 @@ en:
create: Add domain
title: New e-mail blacklist entry
title: E-mail blacklist
+ followers:
+ back_to_account: Back To Account
+ title: "%{acct}'s Followers"
instances:
- account_count: Known accounts
- domain_name: Domain
- reset: Reset
- search: Search
- title: Known instances
+ delivery_available: Delivery is available
+ known_accounts:
+ one: "%{count} known account"
+ other: "%{count} known accounts"
+ moderation:
+ all: All
+ limited: Limited
+ title: Moderation
+ title: Federation
+ total_blocked_by_us: Blocked by us
+ total_followed_by_them: Followed by them
+ total_followed_by_us: Followed by us
+ total_reported: Reports about them
+ total_storage: Media attachments
invites:
deactivate_all: Deactivate all
filter:
@@ -378,6 +397,9 @@ en:
preview_sensitive_media:
desc_html: Link previews on other websites will display a thumbnail even if the media is marked as sensitive
title: Show sensitive media in OpenGraph previews
+ profile_directory:
+ desc_html: Allow users to be discoverable
+ title: Enable profile directory
registrations:
closed_message:
desc_html: Displayed on frontpage when registrations are closed. You can use HTML tags
@@ -437,13 +459,21 @@ en:
last_delivery: Last delivery
title: WebSub
topic: Topic
- suspensions:
- bad_acct_msg: The confirmation value didn't match up. Are you suspending the right account?
- hint_html: 'To confirm the suspension of the account, please enter %{value} into the field below:'
- proceed: Proceed
- title: Suspend %{acct}
- warning_html: 'Suspending this account will irreversibly delete data from this account, which includes:'
+ tags:
+ accounts: Accounts
+ hidden: Hidden
+ hide: Hide from directory
+ name: Hashtag
+ title: Hashtags
+ unhide: Show in directory
+ visible: Visible
title: Administration
+ warning_presets:
+ add_new: Add new
+ delete: Delete
+ edit: Edit
+ edit_preset: Edit warning preset
+ title: Manage warning presets
admin_mailer:
new_report:
body: "%{reporter} has reported %{target}"
@@ -521,6 +551,16 @@ en:
success_msg: Your account was successfully deleted
warning_html: Only deletion of content from this particular instance is guaranteed. Content that has been widely shared is likely to leave traces. Offline servers and servers that have unsubscribed from your updates will not update their databases.
warning_title: Disseminated content availability
+ directories:
+ directory: Profile directory
+ enabled: You are currently listed in the directory.
+ enabled_but_waiting: You have opted-in to be listed in the directory, but you do not have the minimum number of followers (%{min_followers}) to be listed yet.
+ explanation: Discover users based on their interests
+ explore_mastodon: Explore %{title}
+ how_to_enable: You are not currently opted-in to the directory. You can opt-in below. Use hashtags in your bio text to be listed under specific hashtags!
+ people:
+ one: "%{count} person"
+ other: "%{count} people"
errors:
'403': You don't have permission to view this page.
'404': The page you were looking for doesn't exist.
@@ -543,7 +583,9 @@ en:
size: Size
blocks: You block
csv: CSV
+ domain_blocks: Domain blocks
follows: You follow
+ lists: Lists
mutes: You mute
storage: Media storage
filters:
@@ -692,13 +734,25 @@ en:
no_account_html: Don't have an account? You can sign up here
proceed: Proceed to follow
prompt: 'You are going to follow:'
+ reason_html: "Why is this step necessary? %{instance}
might not be the server where you are registered, so we need to redirect you to your home server first."
remote_interaction:
- proceed: Proceed to interact
- prompt: 'You want to interact with this toot:'
+ favourite:
+ proceed: Proceed to favourite
+ prompt: 'You want to favourite this toot:'
+ reblog:
+ proceed: Proceed to boost
+ prompt: 'You want to boost this toot:'
+ reply:
+ proceed: Proceed to reply
+ prompt: 'You want to reply to this toot:'
remote_unfollow:
error: Error
title: Title
unfollowed: Unfollowed
+ scheduled_statuses:
+ over_daily_limit: You have exceeded the limit of %{limit} scheduled toots for that day
+ over_total_limit: You have exceeded the limit of %{limit} scheduled toots
+ too_soon: The scheduled date must be in the future
sessions:
activity: Last activity
browser: Browser
@@ -903,6 +957,22 @@ en:
explanation: You requested a full backup of your Mastodon account. It's now ready for download!
subject: Your archive is ready for download
title: Archive takeout
+ warning:
+ explanation:
+ disable: While your account is frozen, your account data remains intact, but you cannot perform any actions until it is unlocked.
+ silence: While your account is limited, only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follow you.
+ suspend: Your account has been suspended, and all of your toots and your uploaded media files have been irreversibly removed from this server, and servers where you had followers.
+ review_server_policies: Review server policies
+ subject:
+ disable: Your account %{acct} has been frozen
+ none: Warning for %{acct}
+ silence: Your account %{acct} has been limited
+ suspend: Your account %{acct} has been suspended
+ title:
+ disable: Account frozen
+ none: Warning
+ silence: Account limited
+ suspend: Account suspended
welcome:
edit_profile_action: Setup profile
edit_profile_step: You can customize your profile by uploading an avatar, header, changing your display name and more. If you’d like to review new followers before they’re allowed to follow you, you can lock your account.
@@ -914,7 +984,6 @@ en:
review_preferences_action: Change preferences
review_preferences_step: Make sure to set your preferences, such as which emails you'd like to receive, or what privacy level you’d like your posts to default to. If you don’t have motion sickness, you could choose to enable GIF autoplay.
subject: Welcome to Mastodon
- tip_bridge_html: If you are coming from Twitter, you can find your friends on Mastodon by using the bridge app. It only works if they also used the bridge app though!
tip_federated_timeline: The federated timeline is a firehose view of the Mastodon network. But it only includes people your neighbours are subscribed to, so it's not complete.
tip_following: You follow your server's admin(s) by default. To find more interesting people, check the local and federated timelines.
tip_local_timeline: The local timeline is a firehose view of people on %{instance}. These are your immediate neighbours!
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 72628a944..b7dd7ca8b 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -30,18 +30,26 @@ eo:
other_instances: Listo de nodoj
privacy_policy: Privateca politiko
source_code: Fontkodo
- status_count_after: mesaĝoj
+ status_count_after:
+ one: mesaĝo
+ other: mesaĝoj
status_count_before: Kie skribiĝis
terms: Uzkondiĉoj
- user_count_after: uzantoj
+ user_count_after:
+ one: uzanto
+ other: uzantoj
user_count_before: Hejmo de
what_is_mastodon: Kio estas Mastodon?
accounts:
choices_html: 'Proponoj de %{name}:'
follow: Sekvi
- followers: Sekvantoj
+ followers:
+ one: Sekvanto
+ other: Sekvantoj
following: Sekvatoj
joined: Aliĝis je %{date}
+ last_active: laste aktiva
+ link_verified_on: Proprieto de ĉi tiu ligilo estis kontrolita je %{date}
media: Aŭdovidaĵoj
moved_html: "%{name} moviĝis al %{new_profile_link}:"
network_hidden: Tiu informo ne estas disponebla
@@ -50,7 +58,10 @@ eo:
people_who_follow: Sekvantoj de %{name}
pin_errors:
following: Vi devas sekvi la homon, kiun vi volas proponi
- posts: Mesaĝoj
+ posts:
+ one: Mesaĝo
+ other: Mesaĝoj
+ posts_tab_heading: Mesaĝoj
posts_with_replies: Mesaĝoj kaj respondoj
reserved_username: La uzantnomo estas rezervita
roles:
@@ -104,6 +115,7 @@ eo:
media_attachments: Ligitaj aŭdovidaĵoj
memorialize: Ŝanĝi al memoro
moderation:
+ active: Aktiva
all: Ĉio
silenced: Silentigitaj
suspended: Haltigitaj
@@ -111,13 +123,10 @@ eo:
moderation_notes: Kontrolaj notoj
most_recent_activity: Lasta ago
most_recent_ip: Lasta IP
+ no_limits_imposed: Neniu limito trudita
not_subscribed: Ne abonita
- order:
- alphabetic: Laŭalfabete
- most_recent: Plej lastatempa
- title: Ordo
outbox_url: Elira URL
- perform_full_suspension: Tute haltigi
+ perform_full_suspension: Haltigi
profile_url: Profila URL
promote: Plirangigi
protocol: Protokolo
@@ -143,11 +152,12 @@ eo:
shared_inbox_url: URL de kunhavigita leterkesto
show:
created_reports: Signaloj kreitaj de ĉi tiu konto
- report: signalo
targeted_reports: Signaloj kreitaj de ĉi tiu konto
silence: Kaŝi
+ silenced: Silentigita
statuses: Mesaĝoj
subscribe: Aboni
+ suspended: Haltigita
title: Kontoj
unconfirmed_email: Nekonfirmita retadreso
undo_silenced: Malfari kaŝon
@@ -164,6 +174,7 @@ eo:
create_domain_block: "%{name} blokis domajnon %{target}"
create_email_domain_block: "%{name} metis en nigran liston domajnon %{target}"
demote_user: "%{name} degradis uzanton %{target}"
+ destroy_custom_emoji: "%{name} neniigis la emoĝion %{target}"
destroy_domain_block: "%{name} malblokis domajnon %{target}"
destroy_email_domain_block: "%{name} metis en blankan liston domajnon %{target}"
destroy_status: "%{name} forigis mesaĝojn de %{target}"
@@ -217,6 +228,7 @@ eo:
config: Agordado
feature_deletions: Forigo de kontoj
feature_invites: Invitaj ligiloj
+ feature_profile_directory: Profilujo
feature_registrations: Registriĝoj
feature_relay: Federacia ripetilo
features: Funkcioj
@@ -249,11 +261,6 @@ eo:
title: Nova domajna blokado
reject_media: Malakcepti aŭdovidajn dosierojn
reject_media_hint: Forigas aŭdovidaĵojn loke konservitajn kaj rifuzas alŝuti ajnan estonte. Senzorge pri haltigoj
- severities:
- noop: Nenio
- silence: Kaŝi
- suspend: Haltigi
- severity: Severeco
show:
affected_accounts:
one: Unu konto en la datumbazo esta influita
@@ -263,7 +270,6 @@ eo:
suspend: Malhaltigi ĉiujn kontojn, kiuj ekzistas en ĉi tiu domajno
title: Malfari domajnan blokadon por %{domain}
undo: Malfari
- title: Domajnaj blokadoj
undo: Malfari
email_domain_blocks:
add_new: Aldoni novan
@@ -276,10 +282,6 @@ eo:
title: Nova blokado de retadresa domajno
title: Nigra listo de retadresaj domajnoj
instances:
- account_count: Konataj kontoj
- domain_name: Domajno
- reset: Restarigi
- search: Serĉi
title: Konataj nodoj
invites:
deactivate_all: Malaktivigi ĉion
@@ -291,9 +293,15 @@ eo:
title: Invitoj
relays:
add_new: Aldoni novan ripetilon
+ delete: Forigi
description_html: "Fratara ripetilo estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi. Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj."
+ disable: Malebligi
+ disabled: Malebligita
+ enable: Ebligi
enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi.
+ enabled: Malebligita
inbox_url: URL de la ripetilo
+ save_and_enable: Konservi kaj ebligi
setup: Agordi konekton al ripetilo
status: Stato
title: Ripetiloj
@@ -340,6 +348,9 @@ eo:
contact_information:
email: Publika retadreso
username: Kontakta uzantnomo
+ custom_css:
+ desc_html: Ŝanĝi la aspekton per CSS ŝargita en ĉiu pago
+ title: Propra CSS
hero:
desc_html: Montrata en la ĉefpaĝo. Almenaŭ 600x100px rekomendita. Kiam ne agordita, la bildeto de la nodo estos uzata
title: Kapbildo
@@ -349,6 +360,9 @@ eo:
preview_sensitive_media:
desc_html: Antaŭvido de ligiloj en aliaj retejoj montros bildeton eĉ se la aŭdovidaĵo estas markita kiel tikla
title: Montri tiklajn aŭdovidaĵojn en la antaŭvidoj de OpenGraph
+ profile_directory:
+ desc_html: Permesi al uzantoj esti troveblaj
+ title: Ebligi la profilujon
registrations:
closed_message:
desc_html: Montrita sur la hejma paĝo kiam registriĝoj estas fermitaj. Vi povas uzi HTML-etikedojn
@@ -408,6 +422,12 @@ eo:
last_delivery: Lasta livero
title: WebSub
topic: Temo
+ tags:
+ hide: Kaŝi de la profilujo
+ name: Kradvorto
+ title: Kradvortoj
+ unhide: Montri en la profilujo
+ visible: Videbla
title: Administrado
admin_mailer:
new_report:
@@ -430,7 +450,7 @@ eo:
warning: Estu tre atenta kun ĉi tiu datumo. Neniam diskonigu ĝin al iu ajn!
your_token: Via alira ĵetono
auth:
- agreement_html: Per registriĝo, vi konsentas kun la reguloj de nia nodo kaj niaj uzkondiĉoj.
+ agreement_html: Klakante “Registriĝi” sube, vi konsentas kun la reguloj de la nodo kaj niaj uzkondiĉoj.
change_password: Pasvorto
confirm_email: Konfirmi retadreson
delete_account: Forigi konton
@@ -486,6 +506,13 @@ eo:
success_msg: Via konto estis sukcese forigita
warning_html: La forigo de la enhavo estas certa nur por ĉi tiu aparta nodo. Enhavo, kiu estis disvastigita verŝajne lasos spurojn. Eksterretaj serviloj kaj serviloj, kiuj ne abonas viajn ĝisdatigojn ne ĝisdatigos siajn datumbazojn.
warning_title: Disponebleco de disvastigita enhavo
+ directories:
+ directory: Profilujo
+ explanation: Malkovru uzantojn per iliaj interesoj
+ explore_mastodon: Esplori %{title}
+ people:
+ one: "%{count} personoj"
+ other: "%{count} personoj"
errors:
'403': Vi ne havas la rajton por vidi ĉi tiun paĝon.
'404': La paĝo, kiun vi serĉas, ne ekzistas.
@@ -547,6 +574,7 @@ eo:
resources: Rimedoj
generic:
changes_saved_msg: Ŝanĝoj sukcese konservitaj!
+ copy: Kopii
save_changes: Konservi ŝanĝojn
validation_errors:
one: Io mise okazis! Bonvolu konsulti la suban erar-raporton
@@ -658,9 +686,6 @@ eo:
no_account_html: Ĉu vi ne havas konton? Vi povas registriĝi tie
proceed: Daŭrigi por eksekvi
prompt: 'Vi eksekvos:'
- remote_interaction:
- proceed: Efektivigi la interagon
- prompt: 'Vi volas interagi kun ĉi tiu mesaĝo:'
remote_unfollow:
error: Eraro
title: Titolo
@@ -766,6 +791,7 @@ eo:
time:
formats:
default: "%Y-%m-%d %H:%M"
+ month: "%b %Y"
two_factor_authentication:
code_hint: Enmetu la kodon kreitan de via aŭtentiga aplikaĵo por konfirmi
description_html: Se vi ebligas dufaktoran aŭtentigon, vi bezonos vian poŝtelefonon por ensaluti, ĉar ĝi kreos nombrojn, kiujn vi devos enmeti.
@@ -798,7 +824,6 @@ eo:
review_preferences_action: Ŝanĝi preferojn
review_preferences_step: Estu certa ke vi agordis viajn preferojn, kiel kiujn retmesaĝojn vi ŝatus ricevi, aŭ kiun dekomencan privatecan nivelon vi ŝatus ke viaj mesaĝoj havu. Se tio ne ĝenas vin, vi povas ebligi aŭtomatan ekigon de GIF-oj.
subject: Bonvenon en Mastodon
- tip_bridge_html: Se vi venas de Twitter, vi povas trovi viajn amikojn en Mastodon per uzo de la ponta aplikaĵo. Tamen, tio funkcias nur se ankaŭ ili uzis la pontan aplikaĵon!
tip_federated_timeline: La fratara tempolinio estas antaŭvido de la reto de Mastodon. Sed ĝi enhavas nur homojn, kiuj estas sekvataj de aliaj homoj de via nodo, do ĝi ne estas kompleta.
tip_following: Vi dekomence sekvas la administrantojn de via servilo. Por trovi pli da interesaj homoj, rigardu la lokan kaj frataran tempoliniojn.
tip_local_timeline: La loka tempolinio estas antaŭvido de la homoj en %{instance}. Ĉi tiuj estas viaj apudaj najbaroj!
@@ -806,8 +831,11 @@ eo:
tips: Konsiloj
title: Bonvenon, %{name}!
users:
+ follow_limit_reached: Vi ne povas sekvi pli da %{limit} homojn
invalid_email: La retadreso estas nevalida
invalid_otp_token: Nevalida kodo de dufaktora aŭtentigo
otp_lost_help_html: Se vi perdas aliron al ambaŭ, vi povas kontakti %{email}
seamless_external_login: Vi estas ensalutinta per ekstera servo, do pasvortaj kaj retadresaj agordoj ne estas disponeblaj.
signed_in_as: 'Ensalutinta kiel:'
+ verification:
+ verification: Kontrolo
diff --git a/config/locales/es.yml b/config/locales/es.yml
index f7531161c..b221989e8 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -123,10 +123,6 @@ es:
most_recent_ip: IP más reciente
no_limits_imposed: Sin límites impuestos
not_subscribed: No se está suscrito
- order:
- alphabetic: Alfabético
- most_recent: Más reciente
- title: Orden
outbox_url: URL de bandeja de salida
perform_full_suspension: Suspender
profile_url: URL del perfil
@@ -154,7 +150,6 @@ es:
shared_inbox_url: URL de bandeja compartida
show:
created_reports: Reportes hechos por esta cuenta
- report: reportar
targeted_reports: Reportes hechos sobre esta cuenta
silence: Silenciar
silenced: Silenciado
@@ -265,11 +260,6 @@ es:
reject_media_hint: Remueve localmente archivos multimedia almacenados para descargar cualquiera en el futuro. Irrelevante para suspensiones
reject_reports: Rechazar informes
reject_reports_hint: Ignore todos los reportes de este dominio. Irrelevante para suspensiones
- severities:
- noop: Ninguno
- silence: Silenciar
- suspend: Suspender
- severity: Severidad
show:
affected_accounts:
one: Una cuenta en la base de datos afectada
@@ -279,7 +269,6 @@ es:
suspend: Des-suspender todas las cuentas existentes de este dominio
title: Deshacer bloque de dominio para %{domain}
undo: Deshacer
- title: Bloques de Dominio
undo: Deshacer
email_domain_blocks:
add_new: Añadir nuevo
@@ -292,10 +281,6 @@ es:
title: Nueva entrada en la lista negra de correo
title: Lista negra de correo
instances:
- account_count: Cuentas conocidas
- domain_name: Dominio
- reset: Reiniciar
- search: Buscar
title: Instancias conocidas
invites:
deactivate_all: Desactivar todos
@@ -437,12 +422,6 @@ es:
last_delivery: Última entrega
title: WebSub
topic: Tópico
- suspensions:
- bad_acct_msg: El valor de confirmación no cuadra. ¿Estás suspendiendo la cuenta correcta?
- hint_html: 'Para confirmar las suspensión de la cuenta, por favor introduce %{value} en el campo de abajo:'
- proceed: Proceder
- title: Suspender %{acct}
- warning_html: 'Suspender esta cuenta borrará irreversiblemente los datos de stra cuenta que incluyen:'
title: Administración
admin_mailer:
new_report:
@@ -692,9 +671,6 @@ es:
no_account_html: "¿No tienes una cuenta? Puedes registrarte aqui"
proceed: Proceder a seguir
prompt: 'Vas a seguir a:'
- remote_interaction:
- proceed: Proceder para interactuar
- prompt: 'Quieres interactuar con este toot:'
remote_unfollow:
error: Error
title: Título
@@ -833,7 +809,6 @@ es:
review_preferences_action: Cambiar preferencias
review_preferences_step: Asegúrate de poner tus preferencias, como que correos te gustaría recibir, o que nivel de privacidad te gustaría que tus publicaciones tengan por defecto. Si no tienes mareos, podrías elegir habilitar la reproducción automática de "GIFs".
subject: Bienvenido a Mastodon
- tip_bridge_html: Si esta viniendo desde Twitter, puedes encontrar a tus amigos en Mastodon usando la aplicación puente. Aunque solo funciona si ellos también usaron la aplicación puente!
tip_federated_timeline: La línea de tiempo federada es una vista de la red de Mastodon. Pero solo incluye gente que tus vecinos están siguiendo, así que no está completa.
tip_following: Sigues a tus administradores de servidor por defecto. Para encontrar más gente interesante, revisa las lineas de tiempo local y federada.
tip_local_timeline: La linea de tiempo local is una vista de la gente en %{instance}. Estos son tus vecinos inmediatos!
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 206b439b0..6abf15201 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -48,6 +48,7 @@ eu:
other: jarraitzaile
following: Jarraitzen
joined: "%{date}(e)an elkartua"
+ last_active: azkenekoz aktiboa
link_verified_on: 'Esteka honen jabetzaren egiaztaketa data: %{date}'
media: Multimedia
moved_html: "%{name} hona lekualdatu da %{new_profile_link}:"
@@ -69,6 +70,9 @@ eu:
moderator: Moderatzailea
unfollow: Utzi jarraitzeari
admin:
+ account_actions:
+ action: Burutu ekintza
+ title: Burutu moderazio ekintza %{acct} kontuan
account_moderation_notes:
create: Sortu oharra
created_msg: Moderazio oharra ongi sortu da!
@@ -103,6 +107,7 @@ eu:
followers: Jarraitzaileak
followers_url: Jarraitzaileen URL-a
follows: Jarraitzen du
+ header: Goiburua
inbox_url: Sarrera ontziaren URL-a
ip: IP
location:
@@ -114,6 +119,7 @@ eu:
media_attachments: Multimedia eranskinak
memorialize: Bihurtu memoriala
moderation:
+ active: Aktiboa
all: Denak
silenced: Isilarazita
suspended: Kanporatua
@@ -123,10 +129,6 @@ eu:
most_recent_ip: Azken IP-a
no_limits_imposed: Ez da mugarik ezarri
not_subscribed: Harpidetu gabe
- order:
- alphabetic: Alfabetikoa
- most_recent: Azkena
- title: Ordena
outbox_url: Irteera ontziaren URL-a
perform_full_suspension: Kanporatu
profile_url: Profilaren URL-a
@@ -136,6 +138,7 @@ eu:
push_subscription_expires: Push harpidetzaren iraugitzea
redownload: Freskatu abatarra
remove_avatar: Kendu abatarra
+ remove_header: Kendu goiburua
resend_confirmation:
already_confirmed: Erabiltzaile hau berretsita dago
send: Birbidali baieztapen e-maila
@@ -154,7 +157,6 @@ eu:
shared_inbox_url: Partekatutako sarrera ontziaren URL-a
show:
created_reports: Kontu honek sortutako txostenak
- report: salatu
targeted_reports: Kontu honek egindako salaketak
silence: Isilarazi
silenced: Isilarazita
@@ -173,6 +175,7 @@ eu:
assigned_to_self_report: "%{name}(e)k %{target} salaketa bere buruari esleitu dio"
change_email_user: "%{name}(e)k %{target}(r)en e-mail helbidea aldatu du"
confirm_user: "%{name}(e)k %{target}(r)en e-mail helbidea berretsi du"
+ create_account_warning: "%{name}-k abisua bidali dio %{target}-ri"
create_custom_emoji: "%{name}(e)k emoji berria kargatu du %{target}"
create_domain_block: "%{name}(e)k %{target} domeinua blokeatu du"
create_email_domain_block: "%{name}(e)k %{target} e-mail helbideen domeinua zerrenda beltzean sartu du"
@@ -231,6 +234,7 @@ eu:
config: Konfigurazioa
feature_deletions: Kontu ezabaketak
feature_invites: Gonbidapen estekak
+ feature_profile_directory: Profil-direktorioa
feature_registrations: Izen emateak
feature_relay: Federazio haria
features: Ezaugarriak
@@ -265,11 +269,6 @@ eu:
reject_media_hint: Lokalki gordetako multimedia fitxategiak ezabatzen ditu eta etorkizunean fitxategi berriak deskargatzeari uko egingo dio. Ez du garrantzirik kanporaketetan
reject_reports: Errefusatu salaketak
reject_reports_hint: Ezikusi domeinu honetatik jasotako salaketak. Kanporatzeentzako garrantzirik gabekoa
- severities:
- noop: Bat ere ez
- silence: Isilarazi
- suspend: Kanporatu
- severity: Larritasuna
show:
affected_accounts:
one: Datu-baseko kontu bati eragiten dio
@@ -279,7 +278,6 @@ eu:
suspend: Kendu kanporatzeko agindua domeinu honetako kontu guztiei
title: Desegin %{domain} domeinuko blokeoa
undo: Desegin
- title: Domeinuen blokeoak
undo: Desegin
email_domain_blocks:
add_new: Gehitu berria
@@ -291,11 +289,10 @@ eu:
create: Gehitu domeinua
title: Sarrera berria e-mail zerrenda beltzean
title: E-mail zerrenda beltza
+ followers:
+ back_to_account: Itzuli kontura
+ title: "%{acct} kontuaren jarraitzaileak"
instances:
- account_count: Kontu ezagunak
- domain_name: Domeinua
- reset: Berrezarri
- search: Bilatu
title: Instantzia ezagunak
invites:
deactivate_all: Desgaitu guztiak
@@ -378,6 +375,9 @@ eu:
preview_sensitive_media:
desc_html: Beste webguneetako esteken aurrebistak iruditxoa izango du multimedia hunkigarri gisa markatzen bada ere
title: Erakutsi multimedia hunkigarria OpenGraph aurrebistetan
+ profile_directory:
+ desc_html: Baimendu erabiltzaileak aurkigarriak izatea
+ title: Gaitu profil-direktorioa
registrations:
closed_message:
desc_html: Azaleko orrian bistaratua izen ematea ixten denean. HTML etiketak erabili ditzakezu
@@ -437,13 +437,21 @@ eu:
last_delivery: Azken bidalketa
title: WebSub
topic: Mintzagaia
- suspensions:
- bad_acct_msg: Berrespen balioa ez dator bat. Dagokion kontua kanporatzen ari zara?
- hint_html: 'Kontuaren kanporatzea berresteko, sartu %{value} beheko eremuan:'
- proceed: Jarraitu
- title: Kanporatu %{acct}
- warning_html: 'Kontu hau kanporatzeak behin betiko ezabatuko ditu kontu honetako datuak, hauek barne:'
+ tags:
+ accounts: Kontuak
+ hidden: Ezkutatuta
+ hide: Ezkutatu direktoriotik
+ name: Traola
+ title: Traolak
+ unhide: Erakutsi direktorioan
+ visible: Ikusgai
title: Administrazioa
+ warning_presets:
+ add_new: Gehitu berria
+ delete: Ezabatu
+ edit: Editatu
+ edit_preset: Editatu abisu aurre-ezarpena
+ title: Kudeatu abisu aurre-ezarpenak
admin_mailer:
new_report:
body: "%{reporter}(e)k %{target} salatu du"
@@ -521,6 +529,13 @@ eu:
success_msg: Zure kontua ongi ezabatu da
warning_html: Instantzia honetako edukiak ezabatzea besterik ezin da bermatu. Asko partekatu den edukiaren arrastoak geratzea izan liteke. Deskonektatuta dauden zerbitzariak edo zure eguneraketetatik harpidetza kendu duten zerbitzariek ez dituzte beraien datu-baseak eguneratuko.
warning_title: Sakabanatutako edukiaren eskuragarritasuna
+ directories:
+ directory: Profilen direktorioa
+ explanation: Deskubritu erabiltzaileak interesen arabera
+ explore_mastodon: Esploratu %{title}
+ people:
+ one: pertsona %{count}
+ other: "%{count} pertsona"
errors:
'403': Ez duzu orri hau ikusteko baimenik.
'404': Bilatu duzun orria ez da existitzen.
@@ -692,9 +707,6 @@ eu:
no_account_html: Ez duzu konturik? Izena eman dezakezu
proceed: Ekin jarraitzeari
prompt: 'Hau jarraituko duzu:'
- remote_interaction:
- proceed: Jarraitu interakziora
- prompt: 'Toot honekin interakzioa nahi duzu:'
remote_unfollow:
error: Errorea
title: Izenburua
@@ -790,7 +802,7 @@ eu:
stream_entries:
pinned: Finkatutako toot-a
reblogged: "(r)en bultzada"
- sensitive_content: Eduki hunkigarria
+ sensitive_content: 'Kontuz: Eduki hunkigarria'
terms:
body_html: |
rel="me"
را به عنوان attribute در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
+ explanation_html: 'شما میتوانید خود را به عنوان مالک صفحهای که در نمایهتان به آن پیوند دادهاید تأیید کنید. برای این کار، صفحهای که به آن پیوند دادهاید، خودش باید پیوندی به نمایهٔ ماستدون شما داشته باشد. پیوند در آن صفحه باید عبارت rel="me"
را به عنوان attribute در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
verification: تأیید
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index c90490212..e7b8b18ae 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -102,10 +102,6 @@ fi:
most_recent_activity: Viimeisin toiminta
most_recent_ip: Viimeisin IP
not_subscribed: Ei tilaaja
- order:
- alphabetic: Aakkosjärjestys
- most_recent: Uusin
- title: Järjestys
outbox_url: Lähtevän postilaatikon osoite
perform_full_suspension: Siirrä kokonaan jäähylle
profile_url: Profiilin osoite
@@ -133,7 +129,6 @@ fi:
shared_inbox_url: Jaetun saapuvan postilaatikon osoite
show:
created_reports: Tämän tilin luomat raportit
- report: raportti
targeted_reports: Tästä tilistä tehdyt raportit
silence: Hiljennä
statuses: Tilat
@@ -216,11 +211,6 @@ fi:
title: Uusi verkkotunnuksen esto
reject_media: Hylkää mediatiedostot
reject_media_hint: Poistaa paikallisesti tallennetut mediatiedostot eikä lataa niitä enää jatkossa. Ei merkitystä jäähyn kohdalla
- severities:
- noop: Ei mitään
- silence: Hiljennys
- suspend: Jäähy
- severity: Vakavuus
show:
affected_accounts:
one: Vaikuttaa yhteen tiliin tietokannassa
@@ -230,7 +220,6 @@ fi:
suspend: Peru kaikkien tässä verkkotunnuksessa jo olemassa olevien tilien jäähy
title: Peru verkkotunnuksen %{domain} esto
undo: Peru
- title: Verkkotunnusten estot
undo: Peru
email_domain_blocks:
add_new: Lisää uusi
@@ -243,10 +232,6 @@ fi:
title: Uusi sähköpostiestolistan merkintä
title: Sähköpostiestolista
instances:
- account_count: Tiedossa olevat tilit
- domain_name: Verkkotunnus
- reset: Palauta
- search: Hae
title: Tiedossa olevat instanssit
invites:
filter:
@@ -713,7 +698,6 @@ fi:
review_preferences_action: Muuta asetuksia
review_preferences_step: Käy tarkistamassa, että asetukset ovat haluamallasi tavalla. Voit valita, missä tilanteissa haluat saada sähköpostia, mikä on julkaisujesi oletusnäkyvyys jne. Jos et saa helposti pahoinvointia, voit valita, että GIF-animaatiot toistetaan automaattisesti.
subject: Tervetuloa Mastodoniin
- tip_bridge_html: Jos tulet Twitteristä, voit etsiä ystäviäsi Mastodonista siltasovelluksen avulla. Se kuitenkin löytää heidät vain, jos hekin käyttävät sitä!
tip_federated_timeline: Yleinen aikajana näyttää sisältöä koko Mastodon-verkostosta. Siinä näkyvät kuitenkin vain ne henkilöt, joita oman instanssisi käyttäjät seuraavat. Siinä ei siis näytetä aivan kaikkea.
tip_following: Oletusarvoisesti seuraat oman palvelimesi ylläpitäjiä. Etsi lisää kiinnostavia ihmisiä paikalliselta ja yleiseltä aikajanalta.
tip_local_timeline: Paikallinen aikajana näyttää instanssin %{instance} käyttäjien julkaisut. He ovat naapureitasi!
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index e3128b569..7fa041872 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -48,6 +48,7 @@ fr:
other: Abonné⋅e⋅s
following: Abonnements
joined: Inscrit·e en %{date}
+ last_active: actif dernièrement
link_verified_on: La propriété de ce lien a été vérifiée le %{date}
media: Médias
moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
@@ -69,6 +70,9 @@ fr:
moderator: Modérateur·trice
unfollow: Ne plus suivre
admin:
+ account_actions:
+ action: Effectuer une action
+ title: Effectuer une action de modération sur %{acct}
account_moderation_notes:
create: Laisser un commentaire
created_msg: Note de modération créée avec succès !
@@ -88,6 +92,7 @@ fr:
confirm: Confirmer
confirmed: Confirmé
confirming: Confirmation
+ deleted: Effacé
demote: Rétrograder
disable: Désactiver
disable_two_factor_authentication: Désactiver l’authentification à deux facteurs
@@ -103,7 +108,9 @@ fr:
followers: Abonné⋅e⋅s
followers_url: URL des abonné·e·s
follows: Abonnements
+ header: Entête
inbox_url: URL d’entrée
+ invited_by: Invité par
ip: Adresse IP
location:
all: Tous
@@ -114,6 +121,7 @@ fr:
media_attachments: Fichiers médias
memorialize: Convertir en mémorial
moderation:
+ active: Actif
all: Tous
silenced: Masqués
suspended: Suspendus
@@ -123,10 +131,6 @@ fr:
most_recent_ip: Adresse IP la plus récente
no_limits_imposed: Aucune limite imposée
not_subscribed: Non abonné
- order:
- alphabetic: Alphabétique
- most_recent: Plus récent
- title: Tri
outbox_url: URL de sortie
perform_full_suspension: Suspendre
profile_url: URL du profil
@@ -134,8 +138,9 @@ fr:
protocol: Protocole
public: Publique
push_subscription_expires: Expiration de l’abonnement PuSH
- redownload: Rafraîchir les avatars
+ redownload: Rafraîchir le profil
remove_avatar: Supprimer l’avatar
+ remove_header: Supprimer l'entête
resend_confirmation:
already_confirmed: Cet·te utilisateur·ice est déjà confirmé·e
send: Renvoyer un courriel de confirmation
@@ -153,9 +158,8 @@ fr:
search: Rechercher
shared_inbox_url: URL de la boite de réception partagée
show:
- created_reports: Signalements créés par ce compte
- report: signalement
- targeted_reports: Signalements créés visant ce compte
+ created_reports: Signalements faits
+ targeted_reports: Signalés par d'autres
silence: Masquer
silenced: Silencié
statuses: Statuts
@@ -173,6 +177,7 @@ fr:
assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}"
change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}"
confirm_user: "%{name} adresse courriel confirmée de l’utilisateur·ice %{target}"
+ create_account_warning: "%{name} a envoyé une attention à %{target}"
create_custom_emoji: "%{name} a importé de nouveaux émojis %{target}"
create_domain_block: "%{name} a bloqué le domaine %{target}"
create_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste noire"
@@ -191,7 +196,7 @@ fr:
remove_avatar_user: "%{name} a supprimé l’avatar de %{target}"
reopen_report: "%{name} a rouvert le signalement %{target}"
reset_password_user: "%{name} a réinitialisé le mot de passe de %{target}"
- resolve_report: "%{name} a résolu la dénonciation de %{target}"
+ resolve_report: "%{name} a résolu le signalement %{target}"
silence_account: "%{name} a mis le compte %{target} en mode silence"
suspend_account: "%{name} a suspendu le compte %{target}"
unassigned_report: "%{name} a désassigné le signalement %{target}"
@@ -231,6 +236,7 @@ fr:
config: Configuration
feature_deletions: Suppressions de comptes
feature_invites: Liens d’invitation
+ feature_profile_directory: Annuaire des profils
feature_registrations: Inscriptions
feature_relay: Relais de fédération
features: Fonctionnalités
@@ -248,7 +254,7 @@ fr:
week_users_active: actif·ve·s cette semaine
week_users_new: utilisateur·rice·s cette semaine
domain_blocks:
- add_new: Ajouter
+ add_new: Ajouter un nouveau bloqueur de domaine
created_msg: Le blocage de domaine est désormais activé
destroyed_msg: Le blocage de domaine a été désactivé
domain: Domaine
@@ -265,11 +271,11 @@ fr:
reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions
reject_reports: Rapports de rejet
reject_reports_hint: Ignorez tous les rapports provenant de ce domaine. Sans objet pour les suspensions
- severities:
- noop: Aucune
- silence: Masquer
- suspend: Suspendre
- severity: Séverité
+ rejecting_media: rejet des fichiers multimédia
+ rejecting_reports: rejet de rapports
+ severity:
+ silence: silencié
+ suspend: suspendu
show:
affected_accounts:
one: Un compte affecté dans la base de données
@@ -279,8 +285,7 @@ fr:
suspend: Annuler la suspension sur tous les comptes existants pour ce domaine
title: Annuler le blocage de domaine pour %{domain}
undo: Annuler
- title: Blocage de domaines
- undo: Annuler
+ undo: Annuler le bloqueur de domaine
email_domain_blocks:
add_new: Ajouter
created_msg: Le blocage de domaine de courriel est désormais activé
@@ -291,12 +296,23 @@ fr:
create: Créer le blocage
title: Nouveau blocage de domaine de courriel
title: Blocage de domaines de courriel
+ followers:
+ back_to_account: Retour au compte
+ title: Abonné⋅e⋅s de %{acct}
instances:
- account_count: Comptes connus
- domain_name: Domaine
- reset: Réinitialiser
- search: Rechercher
- title: Instances connues
+ known_accounts:
+ one: "%{count} compte connu"
+ other: "%{count} comptes connus"
+ moderation:
+ all: Tout
+ limited: Limité
+ title: Modération
+ title: Fédération
+ total_blocked_by_us: Bloqués par nous
+ total_followed_by_them: Suivi par eux
+ total_followed_by_us: Suivi par nous
+ total_reported: Signalements à leurs propos
+ total_storage: Attachements de média
invites:
deactivate_all: Tout désactiver
filter:
@@ -378,6 +394,9 @@ fr:
preview_sensitive_media:
desc_html: Les liens de prévisualisation sur les autres sites web afficheront une vignette même si le média est sensible
title: Afficher les médias sensibles dans les prévisualisations OpenGraph
+ profile_directory:
+ desc_html: Permettre aux utilisateurs d'être découverts
+ title: Activer l'annuaire des profils
registrations:
closed_message:
desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées%{instance}
pourrait ne pas être le serveur où vous vous êtes inscrit, et nous devons donc vous rediriger vers votre serveur de base en premier."
remote_interaction:
- proceed: Confirmer l’interaction
- prompt: 'Vous désirez interagir avec ce pouet :'
+ favourite:
+ prompt: 'Vous souhaitez mettre ce pouet en favori :'
+ reblog:
+ prompt: 'Vous souhaitez repartager ce pouet :'
+ reply:
+ prompt: 'Vous souhaitez répondre à ce pouet :'
remote_unfollow:
error: Erreur
title: Titre
unfollowed: Non-suivi
+ scheduled_statuses:
+ over_daily_limit: Vous avez dépassé la limite de %{limit} pouets planifiés pour ce jour
+ over_total_limit: Vous avez dépassé la limite de %{limit} pouets planifiés
+ too_soon: La date planifiée doit être dans le futur
sessions:
activity: Dernière activité
browser: Navigateur
@@ -903,6 +951,22 @@ fr:
explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
subject: Votre archive est prête à être téléchargée
title: Récupération de l’archive
+ warning:
+ explanation:
+ disable: Lorsque votre compte est gelé, les données de votre compte demeurent intactes, mais vous ne pouvez effectuer aucune action jusqu'à ce qu'il soit débloqué.
+ silence: Lorsque votre compte est limité, seulement les utilisateurs qui vous suivent déjà verront vos pouets sur ce serveur, et vous pourriez être exclu de plusieurs listes publiques. Néanmoins, d'autres utilisateurs peuvent vous suivre manuellement.
+ suspend: Votre compte a été suspendu, et tous vos pouets et vos fichiers multimédia téléversés ont été supprimés irréversiblement de ce serveur, et des serveurs où vous aviez des abonné⋅e⋅s.
+ review_server_policies: Passer en revue les politiques du serveur
+ subject:
+ disable: Votre compte %{acct} a été gelé
+ none: Avertissement pour %{acct}
+ silence: Votre compte %{acct} a été limité
+ suspend: Votre compte %{acct} a été suspendu
+ title:
+ disable: Compte gelé
+ none: Avertissement
+ silence: Compte limité
+ suspend: Compte suspendu
welcome:
edit_profile_action: Configuration du profil
edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’il·elle·s ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte.
@@ -914,7 +978,6 @@ fr:
review_preferences_action: Modifier les préférences
review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous aimeriez que vos messages soient soumis par défaut. Si vous n’avez pas le mal des transports, vous pouvez choisir d’activer la lecture automatique des GIF.
subject: Bienvenue sur Mastodon
- tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos ami·e·s sur Mastodon en utilisant l’application de mise en relation. Cela ne fonctionne que s’il·elle·s ont aussi utilisé cette application !
tip_federated_timeline: La fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisin·es sont abonné·e·s, donc elle n’est pas complète.
tip_following: Vous suivez les administrateur·rice·s de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global.
tip_local_timeline: Le fil public local est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index b9b9a37ad..57e150d49 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -48,6 +48,7 @@ gl:
other: Seguidoras
following: Seguindo
joined: Uneuse %{date}
+ last_active: última actividade
link_verified_on: A propiedade de esta ligazón foi comprobada en %{date}
media: Medios
moved_html: "%{name} mudouse a %{new_profile_link}:"
@@ -69,6 +70,9 @@ gl:
moderator: Mod
unfollow: Deixar de seguir
admin:
+ account_actions:
+ action: Realizar acción
+ title: Realizar acción de moderación sobre %{acct}
account_moderation_notes:
create: Deixar nota
created_msg: Nota a moderación creada con éxito!
@@ -80,14 +84,15 @@ gl:
by_domain: Dominio
change_email:
changed_msg: Cambiouse correctamente o correo-e da conta!
- current_email: Correo-e actual
- label: Cambiar correo-e
- new_email: Novo correo-e
- submit: Cambiar correo-e
- title: Cambiar o correo-e de %{username}
+ current_email: Correo actual
+ label: Cambiar correo
+ new_email: Novo correo
+ submit: Cambiar correo
+ title: Cambiar o correo de %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Confirmar
+ deleted: Eliminado
demote: Degradar
disable: Deshabilitar
disable_two_factor_authentication: Deshabilitar 2FA
@@ -95,16 +100,19 @@ gl:
display_name: Mostrar nome
domain: Dominio
edit: Editar
- email: E-mail
- email_status: Estado del correo electrónico
+ email: Email
+ email_status: Estado do correo
enable: Habilitar
enabled: Habilitado
feed_url: URL fonte
followers: Seguidoras
followers_url: URL das seguidoras
follows: Segue
+ header: Cabeceira
inbox_url: URL da Caixa de entrada
+ invited_by: Convidada por
ip: IP
+ joined: Uniuse
location:
all: Todo
local: Local
@@ -114,6 +122,7 @@ gl:
media_attachments: Anexos de medios
memorialize: Convertir a lembranza
moderation:
+ active: Activa
all: Todo
silenced: Acalado
suspended: Suspendido
@@ -123,10 +132,6 @@ gl:
most_recent_ip: IP máis recente
no_limits_imposed: Sen límites impostos
not_subscribed: Non suscrita
- order:
- alphabetic: Alfabética
- most_recent: Máis recente
- title: Orde
outbox_url: URL caixa de saída
perform_full_suspension: Suspender
profile_url: URL do perfil
@@ -134,8 +139,9 @@ gl:
protocol: Protocolo
public: Público
push_subscription_expires: A suscrición PuSH caduca
- redownload: Actualizar avatar
+ redownload: Actualizar perfil
remove_avatar: Eliminar avatar
+ remove_header: Eliminar cabeceira
resend_confirmation:
already_confirmed: Este usuario ya está confirmado
send: Reenviar el correo electrónico de confirmación
@@ -153,26 +159,27 @@ gl:
search: Busca
shared_inbox_url: URL da caixa de entrada compartida
show:
- created_reports: Informes creados por esta conta
- report: informar
- targeted_reports: Informes feitos sobre esta conta
+ created_reports: Informes creados
+ targeted_reports: Informes feitos por outros
silence: Acalar
silenced: Acalada
statuses: Estados
subscribe: Subscribir
suspended: Suspendida
title: Contas
- unconfirmed_email: Correo-e non confirmado
+ unconfirmed_email: Correo non confirmado
undo_silenced: Desfacer acalar
undo_suspension: Desfacer suspensión
unsubscribe: Non subscribir
username: Nome de usuaria
+ warn: Aviso
web: Web
action_logs:
actions:
assigned_to_self_report: "%{name} asignou o informe %{target} a ela misma"
change_email_user: "%{name} cambiou o enderezo de correo-e da usuaria %{target}"
confirm_user: "%{name} comfirmou o enderezo de correo da usuaria %{target}"
+ create_account_warning: "%{name} enviou un aviso sobre %{target}"
create_custom_emoji: "%{name} subeu un novo emoji %{target}"
create_domain_block: "%{name} bloqueou o dominio %{target}"
create_email_domain_block: "%{name} engadeu a lista negra o dominio de correo %{target}"
@@ -217,20 +224,21 @@ gl:
image_hint: PNG ate 50KB
listed: Listado
new:
- title: Engadir novo emoji personalizado
+ title: Engadir novo emoji persoalizado
overwrite: Sobrescribir
shortcode: Código corto
shortcode_hint: Cando menos 2 caracteres, só caracteres alfanuméricos e subliñados
- title: Emojis personalizados
+ title: Emojis persoalizados
unlisted: Non listado
update_failed_msg: Non se puido actualizar ese emoji
updated_msg: Actualizouse correctamente o emoji!
upload: Subir
dashboard:
- backlog: backlogged jobs
+ backlog: traballos respaldados
config: Axustes
feature_deletions: Borrado de contas
feature_invites: Ligazóns de convite
+ feature_profile_directory: Directorio do perfil
feature_registrations: Rexistros
feature_relay: Repetidores de federación
features: Características
@@ -248,7 +256,7 @@ gl:
week_users_active: activas estas semana
week_users_new: usuarias esta semana
domain_blocks:
- add_new: Engadir novo
+ add_new: Engadir novo bloqueo de dominio
created_msg: Estase a procesar o bloqueo do dominio
destroyed_msg: Desfixose a acción de bloqueo de dominio
domain: Dominio
@@ -265,11 +273,11 @@ gl:
reject_media_hint: Eliminar ficheiros de medios almacenados localmente e rexeita descargalos no futuro. Irrelevante para as suspensións
reject_reports: Rexeitar informes
reject_reports_hint: Ignorar todos os informes procedentes de este dominio. Irrelevante para as suspensións
- severities:
- noop: Ningún
- silence: Silenciar
- suspend: Suspender
- severity: Severidade
+ rejecting_media: rexeitando ficheiros de medios
+ rejecting_reports: rexeitando informes
+ severity:
+ silence: acalado
+ suspend: suspendido
show:
affected_accounts:
one: Afectoulle a unha conta na base de datos
@@ -279,8 +287,7 @@ gl:
suspend: Non suspender todas as contas existentes de este dominio
title: Desfacer o bloqueo de dominio para %{domain}
undo: Desfacer
- title: Bloqueos de domino
- undo: Desfacer
+ undo: Desfacer bloqueo de dominio
email_domain_blocks:
add_new: Engadir novo
created_msg: Engadeuse correctamente o dominio de email a lista negra
@@ -291,12 +298,24 @@ gl:
create: Engadir dominio
title: Nova entrada la lista negra de e-mail
title: Lista negra de E-mail
+ followers:
+ back_to_account: Voltar a Conta
+ title: Seguidoras de %{acct}
instances:
- account_count: Contas coñecidas
- domain_name: Dominio
- reset: Restablecer
- search: Buscar
- title: Instancias coñecidas
+ delivery_available: A entrega está dispoñible
+ known_accounts:
+ one: "%{count} conta coñecida"
+ other: "%{count} contas coñecidas"
+ moderation:
+ all: Todo
+ limited: Limitado
+ title: Moderación
+ title: Federación
+ total_blocked_by_us: Bloqueado por nós
+ total_followed_by_them: Seguidas por eles
+ total_followed_by_us: Seguidas por nós
+ total_reported: Informes sobre elas
+ total_storage: Anexos de medios
invites:
deactivate_all: Desactivar todo
filter:
@@ -365,7 +384,7 @@ gl:
username: Nome de usuaria de contacto
custom_css:
desc_html: Modificar o aspecto con CSS cargado en cada páxina
- title: CSS personalizado
+ title: CSS persoalizado
hero:
desc_html: Mostrado na portada. Recoméndase 600x100px como mínimo. Si non se establece, mostrará a imaxe por omisión da instancia
title: Imáxe Heróe
@@ -378,6 +397,9 @@ gl:
preview_sensitive_media:
desc_html: A vista previa de ligazóns de outros sitios web mostrará unha imaxe incluso si os medios están marcados como sensibles
title: Mostrar medios sensibles con vista previa OpenGraph
+ profile_directory:
+ desc_html: Permitir que as usuarias poidan ser descubertas
+ title: Activar o directorio de perfil
registrations:
closed_message:
desc_html: Mostrado na páxina de portada cando o rexistro está pechado. Pode utilizar etiquetas HTML
@@ -402,13 +424,13 @@ gl:
title: Descrición da instancia
site_description_extended:
desc_html: Un bo lugar para o seu código de conducta, regras, guías e outras cousas que distingan a súa instancia. Pode utilizar etiquetas HTML
- title: Información extendida da personalización
+ title: Información extendida da persoalización
site_short_description:
desc_html: Mostrado na barra lateral e nas etiquetas meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Si está baldeiro, mostrará a descrición da instancia.
title: Descrición curta da instancia
site_terms:
desc_html: Pode escribir a súa propia política de intimidade, termos de servizo ou aclaracións legais. Pode utilizar etiquetas HTML
- title: Termos de servizo personalizados
+ title: Termos de servizo persoalizados
site_title: Nome da instancia
thumbnail:
desc_html: Utilizado para vistas previsas vía OpenGraph e API. Recoméndase 1200x630px
@@ -437,13 +459,21 @@ gl:
last_delivery: Última entrega
title: WebSub
topic: Asunto
- suspensions:
- bad_acct_msg: O valor de confirmación non é coincidente. Está a suspender a conta correcta?
- hint_html: 'Para confirmar a suspensión da conta introduza %{value} no campo inferior:'
- proceed: Proceder
- title: Suspender %{acct}
- warning_html: 'Ao suspender esta conta eliminará de xeito irreversible os datos de esta conta, que inclúe:'
+ tags:
+ accounts: Contas
+ hidden: Ocultas
+ hide: Ocultar do directorio
+ name: Etiqueta
+ title: Etiquetas
+ unhide: Mostrar en directorio
+ visible: Visible
title: Administración
+ warning_presets:
+ add_new: Engadir novo
+ delete: Eliminar
+ edit: Editar
+ edit_preset: Editar aviso preestablecido
+ title: Xestionar avisos preestablecidos
admin_mailer:
new_report:
body: "%{reporter} informou sobre %{target}"
@@ -521,6 +551,16 @@ gl:
success_msg: A súa conta eliminouse correctamente
warning_html: Só se garantiza a eliminación de contido de esta instancia. O contido que foi compartido con outras instancias é probable que deixe rastros. O servidores fora de liña e servidores que se desuscribiron das súas actualizacións non actualizarán as súas bases de datos.
warning_title: Dispoñibilidade do contido espallado
+ directories:
+ directory: Directorio de perfil
+ enabled: Vostede está actualmente na lista do directorio.
+ enabled_but_waiting: Vostede optou por ser incluída no directorio, mais por agora non ten o número mínimo de seguidoras (%{min_followers}) para aparecer.
+ explanation: Descubra usuarias según o seu interese
+ explore_mastodon: Explorar %{title}
+ how_to_enable: Actualmente non solicitou ser incluída no directorio, pode facelo abaixo. Utilice etiquetas no texto de biografía para ser incluída baixo etiquetas específicas!
+ people:
+ one: "%{count} persoa"
+ other: "%{count} persoas"
errors:
'403': Non ten permiso para ver esta páxina.
'404': A páxina que está a buscar non existe.
@@ -543,7 +583,9 @@ gl:
size: Tamaño
blocks: A bloquear
csv: CSV
+ domain_blocks: Bloqueos de dominio
follows: A seguir
+ lists: Listas
mutes: Acalou
storage: Almacenamento de medios
filters:
@@ -692,13 +734,25 @@ gl:
no_account_html: Non ten unha conta? Pode rexistrarse aquí
proceed: Proceda para seguir
prompt: 'Vostede vai seguir:'
+ reason_html: "Por que é necesario este paso?%{instance}
podería non ser o servidor onde se rexistrou, así que precisamo redirixila primeiro ao seu servidor de orixe."
remote_interaction:
- proceed: Proceda para interactuar
- prompt: 'Vostede quere interactuar con este toot:'
+ favourite:
+ proceed: Darlle a favorito
+ prompt: 'Vostede quere favorecer este toot:'
+ reblog:
+ proceed: Darlle a promocionar
+ prompt: 'Vostede quere promocionar este toot:'
+ reply:
+ proceed: Respostar
+ prompt: 'Vostede quere respostar a este toot:'
remote_unfollow:
error: Fallo
title: Título
unfollowed: Deixou de seguir
+ scheduled_statuses:
+ over_daily_limit: Excedeu o límite de %{limit} toots programados para ese día
+ over_total_limit: Excedeu o límite de %{limit} toots programados
+ too_soon: A data de programación debe estar no futuro
sessions:
activity: Última actividade
browser: Navegador
@@ -810,7 +864,7 @@ gl:
Toda a información que recollemos podería ser utilizada dos seguintes xeitos:
Implementamos varias medidas de seguridade para protexer os seus datos personais cando introduce, envía ou accede a súa información personal. Entre outras medidas, a súa sesión de navegación, así como o tráfico entre os seus aplicativos e o API están aseguradas mediante SSL, e o seu contrasinal está camuflado utilizando un algoritmo potente de unha sóa vía. Pode habilitar a autenticación de doble factor para protexer o acceso a súa conta aínda máis.
+Implementamos varias medidas de seguridade para protexer os seus datos personais cando introduce, envía ou accede a súa información persoal. Entre outras medidas, a súa sesión de navegación, así como o tráfico entre os seus aplicativos e o API están aseguradas mediante SSL, e o seu contrasinal está camuflado utilizando un algoritmo potente de unha sóa vía. Pode habilitar a autenticación de doble factor para protexer o acceso a súa conta aínda máis.
Deskripsi lainnya belum diset.
+ features: + humane_approach_body: Belajar dari kegagalan jaringan lain, Mastodon berupaya untuk membuat pilihan desain yang etis untuk melawan penyalahgunaan media sosial. + humane_approach_title: Pendekatan yang lebih manusiawi + not_a_product_body: Mastodon bukanlah jaringan komersil. Tidak ada iklan, tidak ada pengumpulan data, tidak ada batasan vendor. Tidak ada otoritas terpusat. + not_a_product_title: Anda adalah orang, bukanlah sebuah produk + real_conversation_body: Dengan 500 karakter dan dukungan konten granular dan peringatan media, anda dapat mengekspresikan diri anda sendiri sesuai yang anda mau. + real_conversation_title: Dibangun untuk percakapan yang sebenarnya + within_reach_body: Berbagai aplikasi untuk iOS, Android, dan platform lainnya berkat ekosistem API yang ramah pada pengembang untuk tetap terhubung dengan teman-teman anda dimanapun. + within_reach_title: Selalu dalam jangkauan + generic_description: "%{domain} adalah satu server dalam jaringan" + hosted_on: Mastodon dihosting di %{domain} + learn_more: Pelajari selengkapnya + other_instances: Daftar Server + privacy_policy: Kebijakan Privasi source_code: Kode sumber - status_count_after: status + status_count_after: + one: status + other: status status_count_before: Yang telah menulis - user_count_after: pengguna + terms: Kebijakan layanan + user_count_after: + one: pengguna + other: pengguna user_count_before: Tempat bernaung bagi + what_is_mastodon: Apa itu Mastodon? accounts: follow: Ikuti - followers: Pengikut - following: Mengikut + followers: + one: Pengikut + other: Pengikut + following: Mengikuti + joined: Bergabung pada %{date} + last_active: terakhir aktif + link_verified_on: Kepemilikan tautan ini telah dicek pada %{date} + media: Media + moved_html: "%{name} telah pindah ke %{new_profile_link}:" + network_hidden: Informasi ini tidak tersedia nothing_here: Tidak ada apapun disini! people_followed_by: Orang yang diikuti %{name} people_who_follow: Orang-orang yang mengikuti %{name} + pin_errors: + following: Anda harus mengikuti orang yang ingin anda endorse posts: one: Toot - other: Toots + other: Toot + posts_tab_heading: Toot + posts_with_replies: Toot dan balasan + reserved_username: Nama pengguna telah dipesan + roles: + admin: Admin + bot: Bot + moderator: Moderator unfollow: Berhenti mengikuti admin: + account_actions: + action: Lakukan aksi accounts: are_you_sure: Anda yakin? confirm: Konfirmasi @@ -50,10 +97,6 @@ id: most_recent_activity: Aktivitas terbaru most_recent_ip: IP terbaru not_subscribed: Tidak berlangganan - order: - alphabetic: Alfabetik - most_recent: Terbaru - title: Urutan perform_full_suspension: Lakukan suspen penuh profile_url: URL profil public: Publik @@ -66,7 +109,6 @@ id: salmon_url: URL Salmon show: created_reports: Laporan yang dibuat oleh akun ini - report: laporan targeted_reports: Laporan yang dibuat tentang akun ini silence: Diam statuses: Status @@ -90,10 +132,6 @@ id: title: Pemblokiran domain baru reject_media: Tolak berkas media reject_media_hint: Hapus file media yang tersimpan dan menolak semua unduhan nantinya. Tidak terpengaruh dengan suspen - severities: - silence: Diamkan - suspend: Suspen - severity: Keparahan show: affected_accounts: one: Satu akun di dalam database terpengaruh @@ -103,10 +141,7 @@ id: suspend: Hapus suspen terhadap akun pada domain ini title: Hapus pemblokiran domain %{domain} undo: Undo - title: Pemblokiran Domain instances: - account_count: Akun yang diketahui - domain_name: Domain title: Server yang diketahui reports: comment: @@ -221,7 +256,7 @@ id: too_many: Tidak dapat melampirkan lebih dari 4 file notification_mailer: digest: - body: 'Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since}:' + body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since} mention: "%{name} menyebut anda di:" new_followers_summary: one: Anda mendapatkan satu pengikut baru! Hore! diff --git a/config/locales/io.yml b/config/locales/io.yml index 0c1e6520b..73c981a98 100644 --- a/config/locales/io.yml +++ b/config/locales/io.yml @@ -44,10 +44,6 @@ io: most_recent_activity: Most recent activity most_recent_ip: Most recent IP not_subscribed: Not subscribed - order: - alphabetic: Alphabetic - most_recent: Most recent - title: Order perform_full_suspension: Perform full suspension profile_url: Profile URL public: Public @@ -56,7 +52,6 @@ io: salmon_url: Salmon URL show: created_reports: Reports created by this account - report: report targeted_reports: Reports made about this account silence: Silence statuses: Statuses @@ -80,10 +75,6 @@ io: title: New domain block reject_media: Reject media files reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions - severities: - silence: Silence - suspend: Suspend - severity: Severity show: affected_accounts: one: One account in the database affected @@ -93,11 +84,8 @@ io: suspend: Unsuspend all existing accounts from this domain title: Undo domain block for %{domain} undo: Undo - title: Domain Blocks undo: Undo instances: - account_count: Known accounts - domain_name: Domain title: Known Instances reports: comment: @@ -201,7 +189,7 @@ io: too_many: Cannot attach more than 4 files notification_mailer: digest: - body: 'Yen mikra rezumo di to, depos ke tu laste vizitis en %{since}:' + body: Yen mikra rezumo di to, depos ke tu laste vizitis en %{since} mention: "%{name} mencionis tu en:" new_followers_summary: one: Tu obtenis nova sequanto! Yey! diff --git a/config/locales/it.yml b/config/locales/it.yml index 4fffded5f..339dadaf4 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -123,10 +123,6 @@ it: most_recent_ip: IP più recenti no_limits_imposed: Nessun limite imposto not_subscribed: Non sottoscritto - order: - alphabetic: Alfabetico - most_recent: Più recente - title: Ordine outbox_url: URL outbox perform_full_suspension: Sospendi profile_url: URL profilo @@ -154,7 +150,6 @@ it: shared_inbox_url: URL Inbox Condiviso show: created_reports: Rapporti creati da questo account - report: segnala targeted_reports: Rapporti che riguardano questo account silence: Silenzia silenced: Silenziato @@ -265,11 +260,6 @@ it: reject_media_hint: Rimuovi i file media salvati in locale e blocca i download futuri. Irrilevante per le sospensioni reject_reports: Respingi rapporti reject_reports_hint: Ignora tutti i rapporti provenienti da questo dominio. Irrilevante per sospensioni - severities: - noop: Nessuno - silence: Silenzia - suspend: Sospendi - severity: Severità show: affected_accounts: one: Interessato un solo account nel database @@ -279,7 +269,6 @@ it: suspend: Annulla la sospensione di tutti gli account esistenti da questo dominio title: Annulla il blocco del dominio per %{domain} undo: Annulla - title: Blocchi dominio undo: Annulla email_domain_blocks: add_new: Aggiungi nuovo @@ -292,10 +281,6 @@ it: title: Nuova voce della lista nera delle email title: Lista nera email instances: - account_count: Accounts conosciuti - domain_name: Dominio - reset: Reimposta - search: Cerca title: Istanze conosciute invites: deactivate_all: Disattiva tutto @@ -433,12 +418,6 @@ it: confirmed: Confermato expires_in: Scade in topic: Argomento - suspensions: - bad_acct_msg: Il valore di conferma non corrisponde. Stai sospendendo l'account giusto? - hint_html: 'Per confermare la sospensione dell''account, inserisci %{value} nel campo qui sotto:' - proceed: Continua - title: Sospendi %{acct} - warning_html: 'La sospensione dell''account comporta la cancellazione irreversibile dei suoi dati, che comprendono:' title: Amministrazione application_mailer: notification_preferences: Cambia preferenze email @@ -671,9 +650,6 @@ it: no_account_html: Non hai un account? Puoi iscriverti qui proceed: Conferma prompt: 'Stai per seguire:' - remote_interaction: - proceed: Continua per interagire - prompt: 'Vuoi interagire con questo toot:' remote_unfollow: error: Errore title: Titolo @@ -796,7 +772,6 @@ it: review_preferences_action: Cambia preferenze review_preferences_step: Dovresti impostare le tue preferenze, ad esempio quali email vuoi ricevere oppure il livello predefinito di privacy per i tuoi post. Se le immagini in movimento non ti danno fastidio, puoi abilitare l'animazione automatica delle GIF. subject: Benvenuto/a su Mastodon - tip_bridge_html: Se vieni da Twitter, puoi trovare i tuoi amici su Mastodon usando laapp bridge. Ma funziona solo se anche loro la usano! tip_federated_timeline: La timeline federata visualizza uno dopo l'altro i messaggi pubblicati su Mastodon. Ma comprende solo gli utenti seguiti dai tuoi vicini, quindi non è completa. tip_following: Per impostazione predefinita, segui l'amministratore/i del tuo server. Per trovare utenti più interessanti, dà un'occhiata alle timeline locale e federata. tip_local_timeline: La timeline locale visualizza uno dopo l'altro i messaggi degli utenti di %{instance}. Questi sono i tuoi vicini! diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 90ff66acb..7ccb2f21c 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -18,7 +18,7 @@ ja: features: humane_approach_body: 他の SNS の失敗から学び、Mastodon はソーシャルメディアが誤った使い方をされることの無いように倫理的な設計を目指しています。 humane_approach_title: より思いやりのある設計 - not_a_product_body: Mastodon は営利的な SNS ではありません。広告や、データの収集・解析は無く、またユーザーの囲い込みもありません。ここには中央権力はありません。 + not_a_product_body: Mastodon は営利的な SNS ではありません。広告や、データの収集・解析によるターゲティングは無く、またユーザーの囲い込みもありません。ここには中央権力はありません。 not_a_product_title: あなたは人間であり、商品ではありません real_conversation_body: 好きなように書ける500文字までの投稿や、文章やメディアの内容に警告をつけられる機能で、思い通りに自分自身を表現することができます。 real_conversation_title: 本当のコミュニケーションのために @@ -48,6 +48,7 @@ ja: other: フォロワー following: フォロー中 joined: "%{date} に登録" + last_active: 最後の活動 link_verified_on: このリンクの所有権は %{date} に確認されました media: メディア moved_html: "%{name} さんは引っ越しました %{new_profile_link}:" @@ -69,6 +70,9 @@ ja: moderator: Mod unfollow: フォロー解除 admin: + account_actions: + action: アクションを実行 + title: "%{acct}さんに対してアクションを実行" account_moderation_notes: create: 書き込む created_msg: モデレーションメモを書き込みました! @@ -88,6 +92,7 @@ ja: confirm: 確認 confirmed: 確認済み confirming: 確認中 + deleted: 削除済み demote: 降格 disable: 無効化 disable_two_factor_authentication: 二段階認証を無効にする @@ -103,8 +108,11 @@ ja: followers: フォロワー数 followers_url: Followers URL follows: フォロー数 + header: ヘッダー inbox_url: Inbox URL + invited_by: 招待した人 ip: IP + joined: 登録日 location: all: すべて local: ローカル @@ -114,21 +122,18 @@ ja: media_attachments: 添付されたメディア memorialize: 追悼アカウント化 moderation: + active: アクティブ all: すべて - silenced: サイレンス中 - suspended: 停止中 + silenced: サイレンス済み + suspended: 停止済み title: モデレーション moderation_notes: モデレーションメモ most_recent_activity: 直近の活動 most_recent_ip: 直近のIP no_limits_imposed: 制限なし not_subscribed: 購読していない - order: - alphabetic: アルファベット順 - most_recent: 直近の活動順 - title: 順序 outbox_url: Outbox URL - perform_full_suspension: 完全に活動停止させる + perform_full_suspension: 活動を完全に停止させる profile_url: プロフィールURL promote: 昇格 protocol: プロトコル @@ -136,6 +141,7 @@ ja: push_subscription_expires: PuSH購読期限 redownload: アバターの更新 remove_avatar: アイコンを削除 + remove_header: ヘッダーを削除 resend_confirmation: already_confirmed: メールアドレスは確認済みです send: 確認メールを再送 @@ -151,10 +157,9 @@ ja: user: ユーザー salmon_url: Salmon URL search: 検索 - shared_inbox_url: Shared Inbox URL + shared_inbox_url: Shared inbox URL show: created_reports: このアカウントで作られたレポート - report: レポート targeted_reports: このアカウントについてのレポート silence: サイレンス silenced: サイレンス済み @@ -167,12 +172,14 @@ ja: undo_suspension: 停止から戻す unsubscribe: 購読の解除 username: ユーザー名 + warn: 警告 web: Web action_logs: actions: assigned_to_self_report: "%{name} さんがレポート %{target} を自身の担当に割り当てました" change_email_user: "%{name} さんが %{target} さんのメールアドレスを変更しました" confirm_user: "%{name} さんが %{target} さんのメールアドレスを確認済みにしました" + create_account_warning: "%{name} さんが %{target} さんに警告メールを送信しました" create_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を追加しました" create_domain_block: "%{name} さんがドメイン %{target} をブロックしました" create_email_domain_block: "%{name} さんがドメイン %{target} をメールアドレス用ブラックリストに追加しました" @@ -231,6 +238,7 @@ ja: config: 構成 feature_deletions: アカウント削除 feature_invites: 招待リンク + feature_profile_directory: ディレクトリ feature_registrations: 新規登録 feature_relay: 連合リレー features: 機能 @@ -248,7 +256,7 @@ ja: week_users_active: 今週活動した人数 week_users_new: 今週登録した人数 domain_blocks: - add_new: 新規追加 + add_new: ドメインブロックを追加 created_msg: ドメインブロック処理を完了しました destroyed_msg: ドメインブロックを外しました domain: ドメイン @@ -256,7 +264,7 @@ ja: create: ブロックを作成 hint: ドメインブロックはデータベース中のアカウント項目の作成を妨げませんが、遡って自動的に指定されたモデレーションをそれらのアカウントに適用します。 severity: - desc_html: "サイレンスはアカウントのトゥートをフォローしていない人から隠します。停止はそのアカウントのコンテンツ、メディア、プロフィールデータをすべて削除します。メディアファイルの拒否はなしを使います。" + desc_html: "サイレンスはアカウントのトゥートをフォローしていない人から隠します。停止はそのアカウントのコンテンツ、メディア、プロフィールデータをすべて削除します。メディアファイルを拒否したいだけの場合はなしを使います。" noop: なし silence: サイレンス suspend: 停止 @@ -264,12 +272,12 @@ ja: reject_media: メディアファイルを拒否 reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です reject_reports: レポートを拒否 - reject_reports_hint: このドメインからのすべてのレポートを無視します。停止とは無関係です - severities: - noop: なし - silence: サイレンス - suspend: 停止 - severity: 深刻度 + reject_reports_hint: このドメインからのレポートをすべて無視します。停止とは無関係です + rejecting_media: メディアファイルを拒否中 + rejecting_reports: レポートを拒否中 + severity: + silence: サイレンス中 + suspend: 停止中 show: affected_accounts: one: データベース中の一つのアカウントに影響します @@ -279,7 +287,6 @@ ja: suspend: このドメインからの存在するすべてのアカウントの停止を戻す title: "%{domain}のドメインブロックを戻す" undo: 元に戻す - title: ドメインブロック undo: 元に戻す email_domain_blocks: add_new: 新規追加 @@ -291,12 +298,24 @@ ja: create: ドメインを追加 title: メールアドレス用ブラックリスト新規追加 title: メールブラックリスト + followers: + back_to_account: 戻る + title: "%{acct}さんのフォロワー" instances: - account_count: 既知のアカウント数 - domain_name: ドメイン名 - reset: リセット - search: 検索 + delivery_available: 配送可能 + known_accounts: + one: 既知のアカウント数 %{count} + other: 既知のアカウント数 %{count} + moderation: + all: すべて + limited: 制限あり + title: モデレーション title: 既知のインスタンス + total_blocked_by_us: ブロック合計 + total_followed_by_them: 被フォロー合計 + total_followed_by_us: フォロー合計 + total_reported: レポート合計 + total_storage: 添付されたメディア invites: deactivate_all: すべて無効化 filter: @@ -367,7 +386,7 @@ ja: desc_html: 全ページに適用されるCSSの編集 title: カスタムCSS hero: - desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、インスタンスのサムネイルが使用されます + desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、標準のサムネイルが使用されます title: ヒーローイメージ mascot: desc_html: 複数のページに表示されます。サイズは293x205px以上推奨です。未設定の場合、標準のマスコットが使用されます @@ -378,6 +397,9 @@ ja: preview_sensitive_media: desc_html: 他のウェブサイトにリンクを貼った際、メディアが閲覧注意としてマークされていてもサムネイルが表示されます title: OpenGraphによるプレビューで閲覧注意のメディアも表示する + profile_directory: + desc_html: ユーザーが見つかりやすくできるようになります + title: ディレクトリを有効にする registrations: closed_message: desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます @@ -437,13 +459,21 @@ ja: last_delivery: 最終配送 title: WebSub topic: トピック - suspensions: - bad_acct_msg: 値が一致しませんでした。停止しようとしているアカウントに間違いはありませんか? - hint_html: 'アカウントの停止を確認するには、以下のフィールドに %{value} と入力してください:' - proceed: 完全に活動停止させる - title: "%{acct} を停止" - warning_html: 'このアカウントを停止すると、このアカウントから次のようなデータが不可逆的に削除されます:' + tags: + accounts: アカウント + hidden: 非表示 + hide: ディレクトリから隠す + name: ハッシュタグ + title: ハッシュタグ + unhide: ディレクトリに表示する + visible: 表示 title: 管理 + warning_presets: + add_new: 追加 + delete: 削除 + edit: 編集 + edit_preset: プリセット警告文を編集 + title: プリセット警告文を管理 admin_mailer: new_report: body: "%{reporter} が %{target} を通報しました" @@ -521,6 +551,16 @@ ja: success_msg: アカウントは正常に削除されました warning_html: 削除が保証されるのはこのインスタンス上のコンテンツのみです。他のインスタンス等、外部に広く共有されたコンテンツについては痕跡が残ることがあります。また、現在接続できないサーバーや、あなたの更新を受け取らなくなったサーバーに対しては、削除は反映されません。 warning_title: 共有されたコンテンツについて + directories: + directory: ディレクトリ + enabled: あなたはディレクトリに掲載されています。 + enabled_but_waiting: あなたはディレクトリへの掲載を選択しましたが、掲載に必要な最小フォロワー数 (%{min_followers} 人) を満たしていません。 + explanation: 関心を軸にユーザーを発見しよう + explore_mastodon: "%{title}を探索" + how_to_enable: あなたはディレクトリへの掲載を選択していません。下記から選択できます。ハッシュタグカラムに掲載するにはプロフィール文にハッシュタグを使用してください。 + people: + one: "%{count} 人" + other: "%{count} 人" errors: '403': このページを表示する権限がありません。 '404': お探しのページは見つかりませんでした。 @@ -543,7 +583,9 @@ ja: size: 容量 blocks: ブロック csv: CSV + domain_blocks: 非表示にしたドメイン follows: フォロー + lists: リスト mutes: ミュート storage: メディア filters: @@ -691,13 +733,25 @@ ja: no_account_html: アカウントをお持ちではないですか?こちらからサインアップできます proceed: フォローする prompt: 'フォローしようとしています:' + reason_html: "なぜこの手順が必要でしょうか?%{instance}
はあなたが登録されているサーバーではないかもしれないので、まずあなたのサーバーに転送する必要があります。"
remote_interaction:
- proceed: 進む
- prompt: 'このトゥートに返信しようとしています:'
+ favourite:
+ proceed: お気に入り登録する
+ prompt: 'お気に入り登録しようとしています:'
+ reblog:
+ proceed: ブーストする
+ prompt: 'ブーストしようとしています:'
+ reply:
+ proceed: 返信する
+ prompt: '返信しようとしています:'
remote_unfollow:
error: エラー
title: タイトル
unfollowed: フォロー解除しました
+ scheduled_statuses:
+ over_daily_limit: その日予約できる投稿数 %{limit} を超えています
+ over_total_limit: 予約できる投稿数 %{limit} を超えています
+ too_soon: より先の時間を指定してください
sessions:
activity: 最後のアクティビティ
browser: ブラウザ
@@ -902,6 +956,22 @@ ja:
explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます!
subject: アーカイブの準備ができました
title: アーカイブの取り出し
+ warning:
+ explanation:
+ disable: アカウントが凍結されている間、データはそのまま残りますが、凍結が解除されるまでは何の操作もできません。
+ silence: あなたのアカウントは制限されていますが、あなたをフォローしているユーザーのみ、このサーバー上の投稿を見ることができます。そしてあなたは様々な公開リストから除外されるかもしれません。ただし、他のユーザーは手動であなたをフォローすることができます。
+ suspend: あなたのアカウントは停止されています。あなたの投稿とアップロードされたメディアファイルは、このサーバーとあなたのフォロワーが参加していたサーバーから完全に削除されました。
+ review_server_policies: サーバーのポリシーを確認
+ subject:
+ disable: あなたのアカウント %{acct} は凍結されています
+ none: "%{acct} に対する警告"
+ silence: あなたのアカウント %{acct} はサイレンスにされています
+ suspend: あなたのアカウント %{acct} は停止されています
+ title:
+ disable: アカウントが凍結されました
+ none: 警告
+ silence: アカウントがサイレンスにされました
+ suspend: アカウントが停止されました
welcome:
edit_profile_action: プロフィールを設定
edit_profile_step: アバター画像やヘッダー画像をアップロードしたり、表示名やその他プロフィールを変更しカスタマイズすることができます。新しいフォロワーからのフォローを許可する前に検討したい場合、アカウントを承認制にすることができます。
@@ -913,7 +983,6 @@ ja:
review_preferences_action: 設定の変更
review_preferences_step: 受け取りたいメールや投稿の公開範囲などの設定を必ず行ってください。不快でないならアニメーション GIF の自動再生を有効にすることもできます。
subject: Mastodon へようこそ
- tip_bridge_html: もし Twitter から来られたのであれば、bridge app を使用することで Mastodon での友達のアカウントを探すこともできます。ただし bridge app を使用したことのある相手に限ります!
tip_federated_timeline: 連合タイムラインは Mastodon ネットワークの流れを見られるものです。ただしあなたと同じインスタンスの人がフォローしている人だけが含まれるので、それが全てではありません。
tip_following: 標準では自動でインスタンスの管理者をフォローしています。もっと興味のある人たちを見つけるには、ローカルタイムラインと連合タイムラインを確認してください。
tip_local_timeline: ローカルタイムラインは %{instance} にいる人々の流れを見られるものです。彼らはあなたと同じインスタンスにいる隣人のようなものです!
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 1b74405d2..056942ecd 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -112,10 +112,6 @@ ka:
most_recent_activity: უახლესი აქტივობა
most_recent_ip: უახლესი აი-პი
not_subscribed: გამოუწერელი
- order:
- alphabetic: ანბანური
- most_recent: უახლესი
- title: წესრიგი
outbox_url: აუთბოქსის ურლ
perform_full_suspension: მოახდინეთ სრული შეჩერება
profile_url: პროფილის ურლ
@@ -143,7 +139,6 @@ ka:
shared_inbox_url: გაზიარებული ინბოქსის ურლ
show:
created_reports: ამ ანგარიშის მიერ შექმნილი რეპორტები
- report: რეპორტი
targeted_reports: ამ ანგარიშზე მიღებული რეპორტები
silence: სიჩუმე
statuses: სტატუსები
@@ -249,11 +244,6 @@ ka:
title: ახალი დომენის ბლოკი
reject_media: მედია ფაილების უარყოფა
reject_media_hint: შლის ლოკალურად შენახულ მედია ფაილებს და უარყოფს სამომავლო გადმოტვირთებს. შეუსაბამო შეჩერებებისთვის
- severities:
- noop: არც ერთი
- silence: გაჩუმება
- suspend: შეჩერება
- severity: სიმძიმე
show:
affected_accounts:
one: გავლენა იქონია მონაცემთა ბაზაში ერთ ანგარიშზე
@@ -263,7 +253,6 @@ ka:
suspend: ამ დომენში ყველა არსებულ ანგარიშზე შეჩერების მოშორება
title: უკუაქციეთ დომენის ბლოკი %{domain} დომენზე
undo: უკუქცევა
- title: დომენის ბლოკები
undo: უკუქცევა
email_domain_blocks:
add_new: ახლის დამატება
@@ -276,10 +265,6 @@ ka:
title: ელ-ფოსტის ახალი შენატანი შავ სიაში
title: ელ-ფოსტის შავი სია
instances:
- account_count: ცნობილი ანგარიშები
- domain_name: დომენი
- reset: გადატვირთვა
- search: ძებნა
title: ცნობილი ინსტანციები
invites:
deactivate_all: ყველას დეაქტივაცია
@@ -656,9 +641,6 @@ ka:
no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ დარეგისტრირდეთ აქ
proceed: გააგრძელეთ გასაყოლად
prompt: 'თქვენ გაჰყვებით:'
- remote_interaction:
- proceed: გააგრძელეთ ურთიერთქმედება
- prompt: 'თქვენ გსურთ ურთიერთქმედება ამ ტუტთან:'
remote_unfollow:
error: შეცდომა
title: სათაური
@@ -878,7 +860,6 @@ ka:
review_preferences_action: შეცვალეთ პრეფერენსიები
review_preferences_step: დარწმუნდით რომ აყენებთ თქვენს პრეფერენსიებს, მაგალითად რა ელ-ფოსტის წერილების მიღება გსურთ, ან კონფიდენციალურობის რა დონე გსურთ ჰქონდეთ თქვენს პოსტებს საწყისად. თუ არ გაღიზიანებთ მოძრაობა, შეგიძლიათ ჩართოთ გიფის ავტო-დაკვრა.
subject: კეთილი იყოს თქვენი მობრძანება მასტოდონში
- tip_bridge_html: თუ მოდიხართ ტვიტერიდან, შეგიძლიათ იპოვოთ მეგობრები მასტოდონში ხიდის აპლიკაციით. თუმცა, ეს მუშაობს მხოლოდ მაშინ თუ მათაც მოიხმარეს ხიდის აპლიკაცია!
tip_federated_timeline: ფედერალური თაიმლაინი მასტოდონის ქსელის ცეცხლოვანი ხედია. ის მოიცავს მხოლოდ იმ ადამიანებს, რომელთაგანაც გამოიწერეს თქვენმა მეზობლებმა, ასე რომ ეს არაა სრული.
tip_following: თქვენ საწყისად მიჰყვებით თქვენი სერვერის ადმინისტრატორ(ებ)ს. უფრო საინტერესო ადამიანების მოსაძებნად იხილეთ ლოკალური და ფედერალური თაიმლაინები.
tip_local_timeline: ლოკალური თაიმლაინი ცეცხლოვანი ხედია ადამიანებისთვის %{instance}-ზე. ისინი არიან თქვენი უსიტყვო მეზობლები!
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index e1cb350d1..bf6a8b770 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -48,6 +48,7 @@ ko:
other: 팔로워
following: 팔로잉
joined: "%{date}에 가입함"
+ last_active: 최근 활동
link_verified_on: "%{date}에 이 링크의 소유가 확인되었습니다"
media: 미디어
moved_html: "%{name}은 %{new_profile_link}으로 이동되었습니다:"
@@ -69,6 +70,9 @@ ko:
moderator: 모더레이터
unfollow: 팔로우 해제
admin:
+ account_actions:
+ action: 조치 취하기
+ title: "%{acct} 계정에 조정 취하기"
account_moderation_notes:
create: 모더레이션 노트 작성하기
created_msg: 모더레이션 기록이 성공적으로 작성되었습니다!
@@ -88,6 +92,7 @@ ko:
confirm: 확인
confirmed: 확인됨
confirming: 확인 중
+ deleted: 삭제됨
demote: 모더레이터 강등
disable: 비활성화
disable_two_factor_authentication: 2단계 인증을 비활성화
@@ -95,16 +100,19 @@ ko:
display_name: 이름
domain: 도메인
edit: 편집
- email: E-mail
+ email: 이메일
email_status: 이메일 상태
enable: 활성화
- enabled: 활성화된
+ enabled: 활성
feed_url: 피드 URL
followers: 팔로워 수
followers_url: 팔로워 URL
follows: 팔로잉 수
+ header: 헤더
inbox_url: 수신함 URL
+ invited_by: 초대자
ip: IP
+ joined: 가입
location:
all: 전체
local: 로컬
@@ -114,6 +122,7 @@ ko:
media_attachments: 첨부된 미디어
memorialize: 메모리엄으로 전환
moderation:
+ active: 활동
all: 전체
silenced: 침묵 중
suspended: 정지 중
@@ -123,10 +132,6 @@ ko:
most_recent_ip: 최근 IP
no_limits_imposed: 제한 없음
not_subscribed: 구독하지 않음
- order:
- alphabetic: 알파벳 순
- most_recent: 최근 순
- title: 순서
outbox_url: 발신함 URL
perform_full_suspension: 정지시키기
profile_url: 프로필 URL
@@ -134,8 +139,9 @@ ko:
protocol: 프로토콜
public: 전체 공개
push_subscription_expires: PuSH 구독 기간 만료
- redownload: 아바타 업데이트
+ redownload: 프로필 업데이트
remove_avatar: 아바타 지우기
+ remove_header: 헤더 삭제
resend_confirmation:
already_confirmed: 이 사용자는 이미 확인되었습니다
send: 다시 확인 이메일
@@ -154,7 +160,6 @@ ko:
shared_inbox_url: 공유된 inbox URL
show:
created_reports: 이 계정에서 제출된 신고
- report: 신고
targeted_reports: 이 계정에 대한 신고
silence: 침묵
silenced: 침묵 됨
@@ -167,12 +172,14 @@ ko:
undo_suspension: 정지 해제
unsubscribe: 구독 해제
username: 아이디
+ warn: 경고
web: 웹
action_logs:
actions:
assigned_to_self_report: "%{name}이 리포트 %{target}을 자신에게 할당했습니다"
change_email_user: "%{name}이 %{target}의 이메일 주소를 변경했습니다"
confirm_user: "%{name}이 %{target}의 이메일 주소를 컨펌했습니다"
+ create_account_warning: "%{name}가 %{target}에게 경고 보냄"
create_custom_emoji: "%{name}이 새로운 에모지 %{target}를 추가했습니다"
create_domain_block: "%{name}이 도메인 %{target}를 차단했습니다"
create_email_domain_block: "%{name}이 이메일 도메인 %{target}를 차단했습니다"
@@ -231,6 +238,7 @@ ko:
config: 설정
feature_deletions: 계정 삭제
feature_invites: 초대 링크
+ feature_profile_directory: 프로필 디렉토리
feature_registrations: 가입
feature_relay: 연합 릴레이
features: 기능
@@ -248,7 +256,7 @@ ko:
week_users_active: 이번 주의 활성 사용자
week_users_new: 이번 주의 신규 유저
domain_blocks:
- add_new: 추가하기
+ add_new: 도메인 차단 추가하기
created_msg: 도메인 차단 처리를 완료했습니다
destroyed_msg: 도메인 차단이 해제되었습니다
domain: 도메인
@@ -267,11 +275,11 @@ ko:
reject_media_hint: 로컬에 저장된 미디어 파일을 삭제하고, 이후로도 다운로드를 거부합니다. 정지와는 관계 없습니다
reject_reports: 신고 거부
reject_reports_hint: 이 도메인으로부터의 모든 신고를 무시합니다. 정지와는 무관합니다
- severities:
- noop: 없음
+ rejecting_media: 미디어 거부
+ rejecting_reports: 신고 거부
+ severity:
silence: 침묵
suspend: 정지
- severity: 심각도
show:
affected_accounts:
one: 데이터베이스 중 1개의 계정에 영향을 끼칩니다
@@ -281,8 +289,7 @@ ko:
suspend: 이 도메인에 존재하는 모든 계정의 계정 정지를 해제
title: "%{domain}의 도메인 차단을 해제"
undo: 실행 취소
- title: 도메인 차단
- undo: 실행 취소
+ undo: 도메인 차단 취소
email_domain_blocks:
add_new: 새로 추가
created_msg: 이메일 도메인 차단 규칙을 생성했습니다
@@ -293,12 +300,24 @@ ko:
create: 차단 규칙 생성
title: 새 이메일 도메인 차단
title: Email 도메인 차단
+ followers:
+ back_to_account: 계정으로 돌아가기
+ title: "%{acct}의 팔로워"
instances:
- account_count: 알려진 계정의 수
- domain_name: 도메인 이름
- reset: 리셋
- search: 검색
- title: 알려진 인스턴스들
+ delivery_available: 전송 가능
+ known_accounts:
+ one: 알려진 계정 %{count}개
+ other: 알려진 계정 %{count}개
+ moderation:
+ all: 모두
+ limited: 제한됨
+ title: 모더레이션
+ title: 연합
+ total_blocked_by_us: 우리에게 차단 됨
+ total_followed_by_them: 우리를 팔로우
+ total_followed_by_us: 우리가 한 팔로우
+ total_reported: 이들에 대한 신고
+ total_storage: 미디어 첨부
invites:
deactivate_all: 전부 비활성화
filter:
@@ -380,6 +399,9 @@ ko:
preview_sensitive_media:
desc_html: 민감한 미디어로 설정되었더라도 다른 웹사이트에서 링크 미리보기에 썸네일을 보여줍니다
title: 민감한 미디어를 오픈그래프 미리보기에 보여주기
+ profile_directory:
+ desc_html: 유저들이 발견 될 수 있도록 허용
+ title: 프로필 디렉토리 활성화
registrations:
closed_message:
desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다
@@ -439,13 +461,21 @@ ko:
last_delivery: 최종 발송
title: WebSub
topic: 토픽
- suspensions:
- bad_acct_msg: 확인값이 일치하지 않습니다. 정지하려는 계정이 맞습니까?
- hint_html: '이 계정을 정지하려면 %{value}를 아래 입력칸에 입력하세요:'
- proceed: 완전히 정지시키기
- title: "%{acct} 정지하기"
- warning_html: '이 계정을 정지하면 계정의 데이터를 모두 삭제하며 되돌릴 수 없습니다. 이것은 다음을 포함합니다:'
+ tags:
+ accounts: 계정들
+ hidden: 숨겨짐
+ hide: 디렉토리에서 숨기기
+ name: 해시태그
+ title: 해시태그
+ unhide: 디렉토리에 표시
+ visible: 보여짐
title: 관리
+ warning_presets:
+ add_new: 새로 추가
+ delete: 삭제
+ edit: 편집
+ edit_preset: 경고 틀 수정
+ title: 경고 틀 관리
admin_mailer:
new_report:
body: "%{reporter} 가 %{target} 를 신고했습니다"
@@ -523,6 +553,16 @@ ko:
success_msg: 계정이 성공적으로 삭제되었습니다
warning_html: 삭제가 보장되는 것은 이 인스턴스 상에서의 컨텐츠에 한합니다. 타 인스턴스 등, 외부에 멀리 공유된 컨텐츠는 흔적이 남아 삭제되지 않는 경우도 있습니다. 그리고 현재 접속이 불가능한 서버나, 업데이트를 받지 않게 된 서버에 대해서는 삭제가 반영되지 않을 수도 있습니다.
warning_title: 공유된 컨텐츠에 대해서
+ directories:
+ directory: 프로필 디렉토리
+ enabled: 당신은 디렉터리에 표시 되고 있습니다.
+ enabled_but_waiting: 디렉터리에 표시 되기 위해서는 수동으로 참여해야 합니다, 하지만 디렉터리에 표시 되기 위한 최소 팔로워(%{min_followers})수에 미치지 못했습니다.
+ explanation: 관심사에 대한 유저들을 발견합니다
+ explore_mastodon: "%{title} 탐사하기"
+ how_to_enable: 아직 디렉터리에 참여하지 않았습니다. 아래에서 참여할 수 있습니다. 바이오 텍스트에 해시태그를 사용해 특정 해시태그 디렉터리에 표시 될 수 있습니다!
+ people:
+ one: "%{count}명"
+ other: "%{count}명"
errors:
'403': 이 페이지를 표시할 권한이 없습니다.
'404': 당신이 찾으려는 페이지는 존재하지 않습니다.
@@ -545,7 +585,9 @@ ko:
size: 크기
blocks: 차단
csv: CSV
+ domain_blocks: 도메인 차단
follows: 팔로우
+ lists: 리스트
mutes: 뮤트
storage: 미디어
filters:
@@ -694,13 +736,25 @@ ko:
no_account_html: 계정이 없나요? 여기에서 가입 할 수 있습니다
proceed: 팔로우 하기
prompt: '팔로우 하려 하고 있습니다:'
+ reason_html: "왜 이 과정이 필요하죠?%{instance}
는 당신이 가입한 서버가 아닐 것입니다, 당신의 홈 서버로 먼저 가야 합니다."
remote_interaction:
- proceed: 진행
- prompt: '이 게시물에 상호작용하려 하고 있습니다:'
+ favourite:
+ proceed: 즐겨찾기 진행
+ prompt: '이 툿을 즐겨찾기 하려고 합니다:'
+ reblog:
+ proceed: 부스트 진행
+ prompt: '이 툿을 부스트 하려 합니다:'
+ reply:
+ proceed: 답장 진행
+ prompt: '이 툿에 답장을 하려 합니다:'
remote_unfollow:
error: 에러
title: 타이틀
unfollowed: 언팔로우됨
+ scheduled_statuses:
+ over_daily_limit: 그 날짜에 대한 %{limit}개의 예약 툿 제한을 초과합니다
+ over_total_limit: 예약 툿 제한 %{limit}을 초과합니다
+ too_soon: 예약 날짜는 미래여야 합니다
sessions:
activity: 마지막 활동
browser: 브라우저
@@ -905,6 +959,22 @@ ko:
explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다!
subject: 당신의 아카이브를 다운로드 가능합니다
title: 아카이브 테이크 아웃
+ warning:
+ explanation:
+ disable: 당신의 계정이 동결 된 동안 당신의 계정은 유지 됩니다. 하지만 잠금이 풀릴 때까지 당신은 아무 것도 할 수 없습니다.
+ silence: 당신의 계정이 제한 된 동안엔 당신의 팔로워 이외엔 툿을 받아 볼 수 없고 공개 리스팅에서 제외 됩니다. 하지만 다른 사람들은 여전히 당신을 팔로우 가능합니다.
+ suspend: 당신의 계정은 정지 되었으며, 모든 툿과 업로드 한 미디어가 서버에서 삭제 되어 되돌릴 수 없습니다.
+ review_server_policies: 서버 정책 검토하기
+ subject:
+ disable: 당신의 계정 %{acct}가 동결 되었습니다
+ none: "%{acct}에게의 경고"
+ silence: 당신의 계정 %{acct}가 제한 되었습니다
+ suspend: 당신의 계정 %{acct}가 정지 되었습니다
+ title:
+ disable: 계정 동결 됨
+ none: 경고
+ silence: 계정 제한 됨
+ suspend: 계정 정지 됨
welcome:
edit_profile_action: 프로필 설정
edit_profile_step: 아바타, 헤더를 업로드하고, 사람들에게 표시 될 이름을 바꾸는 것으로 당신의 프로필을 커스텀 할 수 있습니다. 사람들이 당신을 팔로우 하기 전에 리뷰를 거치게 하고 싶다면 계정을 잠그면 됩니다.
@@ -916,7 +986,6 @@ ko:
review_preferences_action: 설정 바꾸기
review_preferences_step: 당신의 설정을 확인하세요. 어떤 이메일로 알림을 받을 것인지, 기본적으로 어떤 프라이버시 설정을 사용할 것인지, 멀미가 없다면 GIF를 자동 재생하도록 설정할 수도 있습니다.
subject: 마스토돈에 오신 것을 환영합니다
- tip_bridge_html: 만약 트위터에서 오셨다면 브리지 앱을 통해 마스토돈에 있는 친구들을 찾을 수 있습니다. 친구들도 이 앱을 사용했을 때만 작동합니다!
tip_federated_timeline: 연합 타임라인은 마스토돈 네트워크의 소방호스입니다. 다만 여기엔 당신의 이웃들이 구독 중인 것만 뜹니다, 모든 것이 다 오는 것은 아니예요.
tip_following: 기본적으로 서버의 관리자를 팔로우 하도록 되어 있습니다. 흥미로운 사람들을 더 찾으려면 로컬과 연합 타임라인을 확인해 보세요.
tip_local_timeline: 로컬 타임라인은 %{instance}의 소방호스입니다. 여기 있는 사람들은 당신의 이웃들이에요!
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/config/locales/lv.yml
@@ -0,0 +1 @@
+{}
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index 2eff09e1b..e3c901eff 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -1,6 +1,339 @@
---
ms:
about:
- about_this: Mengenai
+ about_hashtag_html: Terdapat toot awam yang ditanda dengan #%{hashtag}. Anda boleh berinteraksi dengan mereka jika anda mempunyai akaun di mana-mana dunia persekutuan Mastodon.
+ about_mastodon_html: Mastodon ialah rangkaian sosial berasaskan protokol web terbuka dan perisian percuma bersumber terbuka. Ianya tak terpusat seperti emel.
+ about_this: Mengenai Kami
administered_by: 'Ditadbir oleh:'
- contact: Hubungi
+ api: API
+ apps: Aplikasi mudah alih
+ closed_registrations: Pendaftaran ditutup di tika ini. Tetapi! Anda boleh mencari tika lain untuk mencipta akaun dan capai ke rangkaian yang sama daripada sana.
+ contact: Hubungi kami
+ contact_missing: Tidak ditetapkan
+ contact_unavailable: Tidak tersedia
+ documentation: Pendokumenan
+ extended_description_html: |
+ Kenyataan penuh masih belum ditetapkan.
+ features: + humane_approach_body: Belajar daripada kegagalan rangkaian lain, Mastodon berazam untuk membuat pilihan reka cipta beretika untuk mengatasi penyalahgunaan media sosial. + humane_approach_title: Pendekatan yang lebih berperikemanusiaan + not_a_product_body: Mastodon bukannya rangkaian komersial. Tiada iklan, tiada perlombongan data, tiada kurungan atau tapisan. Tiada pihak berkuasa pusat. + not_a_product_title: Anda seorang manusia, bukannya sebuah produk + real_conversation_body: Dengan had 500 aksara dan sokongan kandungan berbutir serta pemberi amaran media, anda boleh meluahkan diri anda dengan cara yang anda inginkan. + real_conversation_title: Dibina untuk perbualan sebenar + within_reach_body: Pelbagai aplikasi untuk iOS, Android, dan platform lain telah dibangunkan dengan ekosistem API mesra-pembangun membolehkan anda terus berhubung dengan rakan anda di mana-mana sahaja. + within_reach_title: Sentiasa dalam jangkauan + generic_description: "%{domain} ialah salah sebuah pelayan dalam rangkaian Mastodon" + hosted_on: Mastodon dihoskan di %{domain} + learn_more: Ketahui lebih lanjut + other_instances: Senarai tika + privacy_policy: Polisi privasi + source_code: Kod sumber + status_count_after: + one: status + other: status + status_count_before: Telah menulis + terms: Terma perkhidmatan + user_count_after: + one: pengguna + other: pengguna + user_count_before: Rumah kepada + what_is_mastodon: Apakah itu Mastodon? + accounts: + choices_html: 'Pilihan %{name}:' + follow: Ikut + followers: + one: Pengikut + other: Pengikut + following: Mengikuti + joined: Sertai pada %{date} + link_verified_on: Pemilikan pautan ini diperiksa pada %{date} + media: Media + moved_html: "%{name} telah berpindah ke %{new_profile_link}:" + network_hidden: Maklumat ini tidak tersedia + nothing_here: Tiada apa-apa di sini! + people_followed_by: Orang yang %{name} ikuti + people_who_follow: Orang yang mengikut %{name} + pin_errors: + following: Anda mestilah sudah mengikuti orang yang anda ingin syorkan + posts: + one: Toot + other: Toot + posts_tab_heading: Toot + posts_with_replies: Toot dan maklum balas + reserved_username: Nama pengguna ini terpelihara + roles: + admin: Admin + bot: Bot + moderator: Pengawal + unfollow: Nyahikut + admin: + account_moderation_notes: + create: Tinggalkan nota + created_msg: Nota kawalan telah berjaya dicipta! + delete: Padam + destroyed_msg: Nota kawalan telah berjaya dipadam! + accounts: + are_you_sure: Anda pasti? + avatar: Avatar + by_domain: Domain + change_email: + changed_msg: Emel akaun telah berjaya ditukar! + current_email: Emel Semasa + label: Tukar Emel + new_email: Emel Baru + submit: Tukar Emel + title: Tukar Emel untuk %{username} + confirm: Sahkan + confirmed: Disahkan + confirming: Mengesahkan + demote: Turunkan pangkat + disable: Lumpuhkan + disable_two_factor_authentication: Lumpuhkan 2FA + disabled: Dilumpuhkan + display_name: Nama paparan + domain: Domain + edit: Tukar + email: Emel + email_status: Status Emel + enable: Bolehkan + enabled: Dibolehkan + feed_url: Suapan URL + followers: Pengikut + followers_url: URL Pengikut + follows: Mengikuti + inbox_url: URL mesej masuk + ip: Alamat IP + location: + all: Semua + local: Tempatan + remote: Jarak Jauh + title: Kedudukan + login_status: Status log masuk + media_attachments: Lampiran media + memorialize: Tukarkan menjadi akaun peringatan + moderation: + all: Semua + silenced: Disenyapkan + suspended: Digantungkan + title: Kawalan + moderation_notes: Nota kawalan + most_recent_activity: Aktiviti terbaru + most_recent_ip: IP terbaru + no_limits_imposed: Tiada had dikuatkuasakan + not_subscribed: Tiada langganan + outbox_url: URL mesej keluar + perform_full_suspension: Gantung + profile_url: URL profil + promote: Naikkan pangkat + protocol: Protokol + public: Awam + push_subscription_expires: Langganan PuSH tamat tempoh + redownload: Segarkan semula avatar + remove_avatar: Buang avatar + resend_confirmation: + already_confirmed: Pengguna ini telah disahkan + send: Hantar semula emel pengesahan + success: Emel pengesahan telah berjaya dihantar! + reset: Set semula + reset_password: Set semula kata laluan + resubscribe: Langgan semula + role: Kebenaran + roles: + admin: Pentadbir + moderator: Pengawal + staff: Kakitangan + user: Pengguna + salmon_url: URL Salmon + search: Cari + shared_inbox_url: URL Peti Masuk Berkongsi + show: + created_reports: Laporan yang dicipta oleh akaun ini + targeted_reports: Laporan yang dicipta berkaitan akaun ini + silence: Senyap + silenced: Disenyapkan + statuses: Status + subscribe: Langgan + suspended: Digantung + title: Akaun + unconfirmed_email: Emel Belum Disahkan + undo_silenced: Buang senyap + undo_suspension: Buang penggantungan + unsubscribe: Buang langganan + username: Nama pengguna + web: Web + action_logs: + actions: + assigned_to_self_report: "%{name} memberikan laporan %{target} kepada diri mereka sendiri" + change_email_user: "%{name} menukar alamat emel pengguna %{target}" + confirm_user: "%{name} mengesahkan alamat emel pengguna %{target}" + create_custom_emoji: "%{name} memuat naik emoji baru %{target}" + create_domain_block: "%{name} menyekat domain %{target}" + create_email_domain_block: "%{name} menyenaraihitamkan domain emel %{target}" + demote_user: "%{name} menurunkan pangkat pengguna %{target}" + destroy_custom_emoji: "%{name} membuang emoji %{target}" + destroy_domain_block: "%{name} membuang sekatan domain %{target}" + destroy_email_domain_block: "%{name} menyenaraiputihkan domain emel %{target}" + destroy_status: "%{name} membuang status oleh %{target}" + disable_2fa_user: "%{name} melumpuhkan keperluan dua faktor untuk pengguna %{target}" + disable_custom_emoji: "%{name} melumpuhkan emoji %{target}" + disable_user: "%{name} melumpuhkan log masuk untuk pengguna %{target}" + enable_custom_emoji: "%{name} membolehkan emoji %{target}" + enable_user: "%{name} membolehkan log masuk untuk pengguna %{target}" + memorialize_account: "%{name} menukarkan akaun %{target} menjadi halaman peringatan" + promote_user: "%{name} menaikkan pangkat pengguna %{target}" + remove_avatar_user: "%{name} membuang avatar pengguna %{target}" + reopen_report: "%{name} membuka semula laporan %{target}" + reset_password_user: "%{name} set semula kata laluan pengguna %{target}" + resolve_report: "%{name} menyelesaikan laporan %{target}" + silence_account: "%{name} menyenyapkan akaun %{target}" + suspend_account: "%{name} menggantung akaun %{target}" + unassigned_report: "%{name} menyahtugaskan laporan %{target}" + unsilence_account: "%{name} menyahsenyapkan akaun %{target}" + unsuspend_account: "%{name} menyahgantungkan akaun %{target}" + update_custom_emoji: "%{name} mengemaskini emoji %{target}" + update_status: "%{name} mengemaskini status oleh %{target}" + deleted_status: "(status telah dipadam)" + title: Log audit + custom_emojis: + by_domain: Domain + copied_msg: Telah berjaya mencipta salinan tempatan emoji + copy: Salin + copy_failed_msg: Tidak dapat membuat salinan tempatan emoji tersebut + created_msg: Emoji berjaya dicipta! + delete: Padam + destroyed_msg: Emoji berjaya dipadam! + disable: Lumpuhkan + disabled_msg: Emoji tersebut berjaya dilumpuhkan + emoji: Emoji + enable: Bolehkan + enabled_msg: Emoji tersebut berjaya dibolehkan + image_hint: PNG, maksimum 50KB + listed: Disenaraikan + new: + title: Tambah emoji sendiri baru + overwrite: Tulis ganti + shortcode: Kod pendek + shortcode_hint: Sekurang-kurangnya 2 aksara, hanya aksara angka abjad dan garis bawah + title: Emoji sendiri + unlisted: Tidak disenaraikan + update_failed_msg: Tidak boleh mengemaskini emoji tersebut + updated_msg: Emoji berjaya dikemaskini! + upload: Muat naik + dashboard: + backlog: tugasan tunggakan + config: Tatarajah + feature_deletions: Pemadaman akaun + feature_invites: Pautan undangan + feature_registrations: Pendaftaran + feature_relay: Geganti persekutuan + features: Ciri-ciri + hidden_service: Persekutuan dengan perkhidmatan tersembunyi + open_reports: laporan belum selesai + recent_users: Pengguna terbaru + search: Carian teks penuh + single_user_mode: Mod pengguna tunggal + software: Perisian + space: Kegunaan ruang + title: Papan pemuka + total_users: pengguna keseluruhannya + trends: Trend + week_interactions: interaksi minggu ini + week_users_active: aktif minggu ini + week_users_new: pengguna minggu ini + domain_blocks: + add_new: Tambah + created_msg: Sekatan domain sedang diproses + destroyed_msg: Sekatan domain telah dibatalkan + domain: Domain + new: + create: Cipta sekatan + hint: Sekatan domain tidak akan menghindarkan penciptaan entri akaun dalam pangkalan data, tetapi akan diberikan kaedah kawalan khusus tertentu pada akaun-akaun tersebut secara retroaktif dan automatik. + severity: + desc_html: "Senyapkan akan membuatkan hantaran akaun tidak kelihatan kepada sesiapa yang tidak mengikut mereka. Gantungkan akan membuang semua kandungan, media, dan data profil akaun tersebut. Gunakan Tiada jika anda hanya ingin menolak fail media." + noop: Tiada + silence: Senyapkan + suspend: Gantungkan + title: Sekatan domain baru + reject_media: Tolak fail media + reject_media_hint: Buang fail media yang disimpan di sini dan menolak sebarang muat turun pada masa depan. Tidak berkaitan dengan penggantungan + reject_reports: Tolak laporan + reject_reports_hint: Abaikan semua laporan daripada domain ini. Tidak dikira untuk penggantungan + show: + affected_accounts: + one: Satu akaun dalam pangkalan data menerima kesan + other: "%{count} akaun dalam pangkalan data menerima kesan" + retroactive: + silence: Buang penyenyapan semua akaun sedia ada daripada domain ini + suspend: Buang penggantungan semua akaun sedia ada daripada domain ini + title: Buang sekatan domain %{domain} + undo: Buang + undo: Buang + email_domain_blocks: + add_new: Tambah + created_msg: Berjaya menambah domain emel ke dalam senarai hitam + delete: Padam + destroyed_msg: Berjaya memadam domain emel daripada senarai hitam + domain: Domain + new: + create: Tambah domain + title: Entri senarai hitam emel baru + title: Senarai hitam emel + instances: + title: Tika diketahui + invites: + deactivate_all: Nyahaktifkan semua + filter: + all: Semua + available: Tersedia + expired: Tamat tempoh + title: Tapis + title: Undangan + relays: + add_new: Tambah geganti baru + delete: Padam + description_html: "Geganti persekutuan ialah pelayan perantara yang saling menukar toot awam dalam jumlah yang banyak di antara pelayan yang melanggan ia dan menerbitkan kepada ia. Ia boleh bantu pelayan kecil dan sederhana untuk menemui kandungan daripada dunia persekutuan Mastodon, yang mana jika tidak digunakan akan memerlukan pengguna tempatan mengikut orang lain di pelayan jarak jauh secara manual." + disable: Lumpuhkan + disabled: Dilumpuhkan + enable: Bolehkan + enable_hint: Apabila dibolehkan, pelayan anda akan melanggan kesemua toot awam daripada geganti ini, dan akan mula menghantar toot awam pelayan ini kepada ia. + enabled: Dibolehkan + inbox_url: URL geganti + pending: Menunggu persetujuan geganti + save_and_enable: Simpan dan bolehkan + setup: Tetapkan sambungan geganti + status: Status + title: Geganti + report_notes: + created_msg: Nota laporan berjaya dicipta! + destroyed_msg: Nota laporan berjaya dipadam! + reports: + account: + note: nota + report: laporan + action_taken_by: Tindakan oleh + are_you_sure: Anda pasti? + assign_to_self: Berikan pada saya + assigned: Pengawal yang menerima + comment: + none: Tiada + created_at: Dilaporkan + mark_as_resolved: Tanda sebagai sudah selesai + mark_as_unresolved: Tanda sebagai belum selesai + notes: + create: Tambah nota + create_and_resolve: Selesaikan dengan nota + placeholder: Terangkan tindakan apa yang telah diambil, atau sebarang kemas kini lain yang berkaitan... + exports: + archive_takeout: + in_progress: Mengkompil arkib anda... + followers: + success: + one: Dalam proses menyekat-lembut pengikut daripada satu domain... + other: Dalam proses menyekat-lembut pengikut daripada %{count} domain... + notification_mailer: + digest: + title: Ketika anda tiada di sini... + users: + follow_limit_reached: Anda tidak boleh mengikut lebih daripada %{limit} orang diff --git a/config/locales/nl.yml b/config/locales/nl.yml index ab5a72a66..e0d7a4a02 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -48,6 +48,7 @@ nl: other: Volgers following: Volgend joined: Geregistreerd in %{date} + last_active: laatst actief link_verified_on: Eigendom van deze link is gecontroleerd op %{date} media: Media moved_html: "%{name} is verhuisd naar %{new_profile_link}:" @@ -69,6 +70,9 @@ nl: moderator: Moderator unfollow: Ontvolgen admin: + account_actions: + action: Actie uitvoeren + title: Moderatieactie op %{acct} uitvoeren account_moderation_notes: create: Laat een opmerking achter created_msg: Aanmaken van opmerking voor moderatoren geslaagd! @@ -88,6 +92,7 @@ nl: confirm: Bevestigen confirmed: Bevestigd confirming: Bevestiging + deleted: Verwijderd demote: Degraderen disable: Uitschakelen disable_two_factor_authentication: 2FA uitschakelen @@ -96,15 +101,18 @@ nl: domain: Domein edit: Bewerken email: E-mail - email_status: E-mail Status + email_status: E-mailstatus enable: Inschakelen enabled: Ingeschakeld feed_url: Feed-URL followers: Volgers followers_url: Volgers-URL follows: Volgt + header: Omslagfoto inbox_url: Inbox-URL + invited_by: Uitgenodigd door ip: IP + joined: Geregistreerd in location: all: Alles local: Lokaal @@ -114,6 +122,7 @@ nl: media_attachments: Mediabijlagen memorialize: In gedenkpagina veranderen moderation: + active: Actief all: Alles silenced: Genegeerd suspended: Opgeschort @@ -123,10 +132,6 @@ nl: most_recent_ip: Laatst gebruikt IP-adres no_limits_imposed: Geen limieten ingesteld not_subscribed: Niet geabonneerd - order: - alphabetic: Alfabetisch - most_recent: Meest recent - title: Sorteren outbox_url: Outbox-URL perform_full_suspension: Opschorten profile_url: Profiel-URL @@ -134,8 +139,9 @@ nl: protocol: Protocol public: Openbaar push_subscription_expires: PuSH-abonnement verloopt op - redownload: Avatar vernieuwen + redownload: Profiel vernieuwen remove_avatar: Avatar verwijderen + remove_header: Omslagfoto verwijderen resend_confirmation: already_confirmed: Deze gebruiker is al bevestigd send: Verzend bevestigingsmail opnieuw @@ -153,9 +159,8 @@ nl: search: Zoeken shared_inbox_url: Gedeelde inbox-URL show: - created_reports: Door dit account aangemaakte rapportages - report: gerapporteerd - targeted_reports: Over dit account aangemaakte rapportages + created_reports: Aangemaakte rapportages + targeted_reports: Door anderen gerapporteerd silence: Negeren silenced: Genegeerd statuses: Toots @@ -167,12 +172,14 @@ nl: undo_suspension: Niet langer opschorten unsubscribe: Opzeggen username: Gebruikersnaam + warn: Waarschuwen web: Webapp action_logs: actions: assigned_to_self_report: "%{name} heeft rapportage %{target} aan zichzelf toegewezen" change_email_user: "%{name} veranderde het e-mailadres van gebruiker %{target}" confirm_user: E-mailadres van gebruiker %{target} is door %{name} bevestigd + create_account_warning: "%{name} verzond een waarschuwing naar %{target}" create_custom_emoji: Nieuwe emoji %{target} is door %{name} geüpload create_domain_block: Domein %{target} is door %{name} geblokkeerd create_email_domain_block: E-maildomein %{target} is door %{name} op de zwarte lijst geplaatst @@ -183,7 +190,7 @@ nl: destroy_status: Toot van %{target} is door %{name} verwijderd disable_2fa_user: Vereisten tweestapsverificatie van %{target} zijn door %{name} uitgeschakeld disable_custom_emoji: Emoji %{target} is door %{name} uitgeschakeld - disable_user: Aanmelden voor %{target} is door %{name} uitgeschakeld + disable_user: Inloggen voor %{target} is door %{name} uitgeschakeld enable_custom_emoji: Emoji %{target} is door %{name} ingeschakeld enable_user: Inloggen voor %{target} is door %{name} ingeschakeld memorialize_account: Account %{target} is door %{name} in een gedenkpagina veranderd @@ -231,6 +238,7 @@ nl: config: Configuratie feature_deletions: Verwijderen van account feature_invites: Uitnodigingen + feature_profile_directory: Gebruikersgids feature_registrations: Registraties feature_relay: Federatierelay features: Functies @@ -248,7 +256,7 @@ nl: week_users_active: actieve gebruikers deze week week_users_new: nieuwe gebruikers deze week domain_blocks: - add_new: Nieuwe toevoegen + add_new: Nieuwe domeinblokkade toevoegen created_msg: Domeinblokkade wordt nu verwerkt destroyed_msg: Domeinblokkade is ongedaan gemaakt domain: Domein @@ -261,15 +269,15 @@ nl: silence: Negeren suspend: Opschorten title: Nieuwe domeinblokkade - reject_media: Mediabestanden verwerpen + reject_media: Mediabestanden weigeren reject_media_hint: Verwijderd lokaal opgeslagen mediabestanden en weigert deze in de toekomst te downloaden. Irrelevant voor opgeschorte domeinen reject_reports: Rapportages weigeren reject_reports_hint: Alle rapportages die vanaf dit domein komen negeren. Irrelevant voor opgeschorte domeinen - severities: - noop: Geen - silence: Negeren - suspend: Opschorten - severity: Zwaarte + rejecting_media: mediabestanden worden geweigerd + rejecting_reports: rapportages worden geweigerd + severity: + silence: genegeerd + suspend: opgeschort show: affected_accounts: one: Eén account in de database aangepast @@ -279,8 +287,7 @@ nl: suspend: Alle opgeschorte accounts van dit domein niet langer opschorten title: Domeinblokkade voor %{domain} ongedaan maken undo: Ongedaan maken - title: Domeinblokkades - undo: Ongedaan maken + undo: domeinblokkade ongedaan maken email_domain_blocks: add_new: Nieuwe toevoegen created_msg: Blokkeren e-maildomein geslaagd @@ -291,12 +298,24 @@ nl: create: Blokkeren title: Nieuw e-maildomein blokkeren title: E-maildomeinen blokkeren + followers: + back_to_account: Terug naar account + title: Volgers van %{acct} instances: - account_count: Bekende accounts - domain_name: Domein - reset: Opnieuw - search: Zoeken - title: Bekende servers + delivery_available: Bezorging is mogelijk + known_accounts: + one: "%{count} bekend account" + other: "%{count} bekende accounts" + moderation: + all: Alles + limited: Beperkt + title: Moderatie + title: Andere domeinen + total_blocked_by_us: Door ons geblokkeerd + total_followed_by_them: Door hun gevolgd + total_followed_by_us: Door ons gevolgd + total_reported: Rapportages over hun + total_storage: Mediabijlagen invites: deactivate_all: Alles deactiveren filter: @@ -378,6 +397,9 @@ nl: preview_sensitive_media: desc_html: Linkvoorvertoningen op andere websites hebben een thumbnail, zelfs als een afbeelding of video als gevoelig is gemarkeerd title: Gevoelige afbeeldingen en video's in OpenGraph-voorvertoningen tonen + profile_directory: + desc_html: Gebruikers toestaan om vindbaar te zijn + title: Gebruikersgids inschakelen registrations: closed_message: desc_html: Wordt op de voorpagina weergegeven wanneer registratie van nieuwe accounts is uitgeschakeld%{instance}
is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server."
remote_interaction:
- proceed: Ga de interactie aan
- prompt: 'Jij wilt de interactie aangaan met deze toot:'
+ favourite:
+ proceed: Doorgaan met toevoegen aan jouw favorieten
+ prompt: 'Je wilt de volgende toot aan jouw favorieten toevoegen:'
+ reblog:
+ proceed: Doorgaan met boosten
+ prompt: 'Je wilt de volgende toot boosten:'
+ reply:
+ proceed: Doorgaan met reageren
+ prompt: 'Je wilt op de volgende toot reageren:'
remote_unfollow:
error: Fout
title: Titel
unfollowed: Ontvolgd
+ scheduled_statuses:
+ over_daily_limit: Je hebt de limiet van %{limit} in te plannen toots voor die dag overschreden
+ over_total_limit: Je hebt de limiet van %{limit} in te plannen toots overschreden
+ too_soon: De datum voor de ingeplande toot moet in de toekomst liggen
sessions:
activity: Laatst actief
browser: Webbrowser
@@ -884,13 +938,13 @@ nl:
month: "%b %Y"
two_factor_authentication:
code_hint: Voer de code in die door de authenticatie-app gegenereerd is
- description_html: Na het instellen van tweestapsverificatie, kun jij je alleen aanmelden als je jouw mobiele telefoon bij je hebt. Hiermee genereer je namelijk de in te voeren aanmeldcode.
+ description_html: Na het instellen van tweestapsverificatie, kun je alleen inloggen als je jouw mobiele telefoon bij je hebt. Hiermee genereer je namelijk de in te voeren aanmeldcode.
disable: Uitschakelen
enable: Inschakelen
enabled: Tweestapsverificatie is ingeschakeld
enabled_success: Inschakelen tweestapsverificatie geslaagd
generate_recovery_codes: Herstelcodes genereren
- instructions_html: "Scan deze QR-code in Google Authenticator of een soortgelijke app op jouw mobiele telefoon. Van nu af aan genereert deze app aanmeldcodes die je bij het aanmelden moet invoeren."
+ instructions_html: "Scan deze QR-code in Google Authenticator of een soortgelijke app op jouw mobiele telefoon. Van nu af aan genereert deze app aanmeldcodes die je bij het inloggen moet invoeren."
lost_recovery_codes: Met herstelcodes kun je toegang tot jouw account krijgen wanneer je jouw telefoon bent kwijtgeraakt. Wanneer je jouw herstelcodes bent kwijtgeraakt, kan je ze hier opnieuw genereren. Jouw oude herstelcodes zijn daarna ongeldig.
manual_instructions: Voor het geval je de QR-code niet kunt scannen en het handmatig moet invoeren, vind je hieronder geheime code in gewone tekst.
recovery_codes: Herstelcodes back-uppen
@@ -903,6 +957,22 @@ nl:
explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload!
subject: Jouw archief staat klaar om te worden gedownload
title: Archief ophalen
+ warning:
+ explanation:
+ disable: Zolang jouw account is bevroren blijven jouw accountgegevens intact, maar kun je geen handelingen uitvoeren totdat het account is vrijgegeven.
+ silence: Zolang jouw account wordt beperkt, kunnen alleen mensen die jou al volgen jouw toots op deze server zien. Tevens ben je niet zichtbaar in meldingen, gesprekken en op openbare tijdlijnen. Anderen kunnen je echter wel handmatig volgen.
+ suspend: Jouw account is opgeschort. Jouw toots en geüploade media zijn onomkeerbaar van deze server verwijderd, en ook o.a. van de servers waar jij volgers had.
+ review_server_policies: Serverbeleid bekijken
+ subject:
+ disable: Jouw account %{acct} is bevroren
+ none: Waarschuwing voor %{acct}
+ silence: Jouw account %{acct} is nu beperkt
+ suspend: Jouw account %{acct} is opgeschort
+ title:
+ disable: Account bevroren
+ none: Waarschuwing
+ silence: Account beperkt
+ suspend: Account opgeschort
welcome:
edit_profile_action: Profiel instellen
edit_profile_step: Je kunt jouw profiel aanpassen door een avatar (profielfoto) en omslagfoto te uploaden, jouw weergavenaam in te stellen en iets over jezelf te vertellen. Wanneer je nieuwe volgers eerst wilt goedkeuren, kun je jouw account besloten maken.
@@ -914,7 +984,6 @@ nl:
review_preferences_action: Instellingen veranderen
review_preferences_step: Zorg dat je jouw instellingen naloopt, zoals welke e-mails je wilt ontvangen of voor wie jouw berichten standaard zichtbaar moeten zijn. Wanneer je geen last hebt van bewegende beelden, kun je het afspelen van geanimeerde GIF's inschakelen.
subject: Welkom op Mastodon
- tip_bridge_html: Wanneer je hiervoor op Twitter zat, kun je jouw vrienden op Mastodon vinden door gebruik te maken van de bridge-app. Het werkt echter alleen wanneer zij ook deze bridge-app hebben gebruikt!
tip_federated_timeline: De globale tijdlijn toont berichten in het Mastodonnetwerk. Het bevat echter alleen berichten van mensen waar jouw buren mee zijn verbonden, dus het is niet compleet.
tip_following: Je volgt standaard de beheerder(s) van jouw Mastodonserver. Bekijk de lokale en de globale tijdlijnen om meer interessante mensen te vinden.
tip_local_timeline: De lokale tijdlijn toont berichten van mensen op %{instance}. Dit zijn jouw naaste buren!
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 61466fa20..cf8f77b4c 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -92,10 +92,6 @@
most_recent_activity: Nyligste aktivitet
most_recent_ip: Nyligste IP
not_subscribed: Ikke abonnért
- order:
- alphabetic: Alfabetisk
- most_recent: Nyligst
- title: Rekkefølge
outbox_url: Utboks URL
perform_full_suspension: Utfør full utvisning
profile_url: Profil-URL
@@ -122,7 +118,6 @@
shared_inbox_url: Delt Innboks URL
show:
created_reports: Rapporter laget av denne kontoen
- report: rapport
targeted_reports: Rapporter laget om denne kontoen
silence: Målbind
statuses: Statuser
@@ -200,11 +195,6 @@
title: Ny domeneblokkering
reject_media: Avvis mediefiler
reject_media_hint: Fjerner lokalt lagrede mediefiler og nekter å laste dem ned i fremtiden. Irrelevant for utvisninger
- severities:
- noop: Ingen
- silence: Målbind
- suspend: Utvis
- severity: Alvorlighet
show:
affected_accounts:
one: En konto i databasen påvirket
@@ -214,7 +204,6 @@
suspend: Avutvis alle eksisterende kontoer fra dette domenet
title: Angre domeneblokkering for %{domain}
undo: Angre
- title: Domeneblokkeringer
undo: Angre
email_domain_blocks:
add_new: Lag ny
@@ -227,10 +216,6 @@
title: Ny blokkeringsoppføring av e-postdomene
title: Blokkering av e-postdomene
instances:
- account_count: Kjente kontoer
- domain_name: Domene
- reset: Tilbakestill
- search: Søk
title: Kjente instanser
invites:
filter:
@@ -635,7 +620,6 @@
review_preferences_action: Endre innstillinger
review_preferences_step: Husk å justere dine innstillinger, som hvilke e-poster du ønsker å motta, eller hvor private du ønsker at dine poster skal være som standard. Hvis du ikke har bevegelsessyke kan du skru på automatisk avspilling av GIF-animasjoner.
subject: Velkommen til Mastodon
- tip_bridge_html: Hvis du kommer fra Twitter kan du finne dine venner på Mastodon ved å bruke en bro app. Men det fungerer kun dersom de også bruker bro-appen!
tip_federated_timeline: Den forente tidslinjen blir konstant matet med meldinger fra Mastodon-nettverket. Men den inkluderer bare personer dine naboer abbonerer på, så den er ikke komplett.
tip_following: Du følger din tjeners administrator(er) som standard. For å finne mer interessante personer, sjekk den lokale og forente tidslinjen.
tip_local_timeline: Den lokale tidslinjen blir kontant matet med meldinger fra personer på %{instance}. Dette er dine nærmeste naboer!
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 428bbfffe..7bedded41 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -48,6 +48,7 @@ oc:
other: Seguidors
following: Abonaments
joined: Arribèt en %{date}
+ last_active: darrièra activitat
link_verified_on: La proprietat d’aqueste ligam foguèt verificada lo %{date}
media: Mèdias
moved_html: "%{name} a mudat a %{new_profile_link} :"
@@ -69,6 +70,9 @@ oc:
moderator: Moderador
unfollow: Quitar de sègre
admin:
+ account_actions:
+ action: Realizar una accion
+ title: Realizar una accion de moderacion sus %{acct}
account_moderation_notes:
create: Crear una nòta
created_msg: Nòta de moderacion ben creada !
@@ -83,11 +87,12 @@ oc:
current_email: Adreça actuala
label: Cambiar d’adreça
new_email: Novèla adreça
- submit: Cambiar
+ submit: Cambiar l’adreça
title: Cambiar l’adreça a %{username}
confirm: Confirmar
confirmed: Confirmat
confirming: Confirmacion
+ deleted: Suprimits
demote: Retrogradar
disable: Desactivar
disable_two_factor_authentication: Desactivar 2FA
@@ -103,30 +108,30 @@ oc:
followers: Seguidors
followers_url: URL dels seguidors
follows: Abonaments
+ header: Bandièra
inbox_url: URL de recepcion
+ invited_by: Convidat per
ip: IP
+ joined: Venguèt
location:
all: Totes
local: Locals
remote: Alonhats
title: Emplaçament
login_status: Estat formulari de connexion
- media_attachments: Mèdias ajustats
+ media_attachments: Mèdias enviats
memorialize: Passar en memorial
moderation:
- all: Tot
- silenced: Rescondut
- suspended: Suspendut
+ active: Actius
+ all: Totes
+ silenced: Resconduts
+ suspended: Suspenduts
title: Moderacion
moderation_notes: Nòtas de moderacion
most_recent_activity: Activitat mai recenta
most_recent_ip: IP mai recenta
no_limits_imposed: Cap de limit impausat
not_subscribed: Pas seguidor
- order:
- alphabetic: Alfabetic
- most_recent: Mai recent
- title: Ordre
outbox_url: URL Outbox
perform_full_suspension: Suspendre
profile_url: URL del perfil
@@ -134,8 +139,9 @@ oc:
protocol: Protocòl
public: Public
push_subscription_expires: Fin de l’abonament PuSH
- redownload: Actualizar los avatars
+ redownload: Actualizar lo perfil
remove_avatar: Supriir l’avatar
+ remove_header: Levar la bandièra
resend_confirmation:
already_confirmed: Aqueste utilizaire es ja confirmat
send: Tornar mandar lo corrièl de confirmacion
@@ -153,9 +159,8 @@ oc:
search: Cercar
shared_inbox_url: URL de recepcion partejada
show:
- created_reports: Rapòrts creat per aqueste compte
- report: rapòrt
- targeted_reports: Rapòrts faches tocant aqueste compte
+ created_reports: Senhalaments creats
+ targeted_reports: Senhalaments dels autres
silence: Silenci
silenced: Rescondut
statuses: Estatuts
@@ -167,12 +172,14 @@ oc:
undo_suspension: Levar la suspension
unsubscribe: Se desabonar
username: Nom d’utilizaire
+ warn: Avisar
web: Web
action_logs:
actions:
assigned_to_self_report: "%{name} s’assignèt lo rapòrt %{target}"
change_email_user: "%{name} cambièt l’adreça de corrièl de %{target}"
confirm_user: "%{name} confirmèt l’adreça a %{target}"
+ create_account_warning: "%{name} mandèt un avertiment a %{target}"
create_custom_emoji: "%{name} mandèt un nòu emoji %{target}"
create_domain_block: "%{name} bloquèt lo domeni %{target}"
create_email_domain_block: "%{name} botèt a la lista nègra lo domeni de corrièl %{target}"
@@ -231,6 +238,7 @@ oc:
config: Configuracion
feature_deletions: Supressions de comptes
feature_invites: Ligams convidat
+ feature_profile_directory: Annuari de perfils
feature_registrations: Inscripcions
feature_relay: Relai de federacion
features: Foncionalitats
@@ -248,7 +256,7 @@ oc:
week_users_active: actius aquesta setmana
week_users_new: utilizaires aquesta setmana
domain_blocks:
- add_new: Ajustar
+ add_new: Ajustar un novèl blocatge de domeni
created_msg: Domeni blocat es a èsser tractat
destroyed_msg: Lo blocatge del domeni es estat levat
domain: Domeni
@@ -264,12 +272,12 @@ oc:
reject_media: Regetar los fichièrs mèdias
reject_media_hint: Lèva los fichièrs gardats localament e regèta las demandas de telecargament dins lo futur. Servís pas a res per las suspensions
reject_reports: Regetar los senhalaments
- reject_reports_hint: Ignorer totes los senhalaments que venon d’aqueste domeni. Pas pertiment per las suspensions
- severities:
- noop: Cap
- silence: Silenci
- suspend: Suspendre
- severity: Severitat
+ reject_reports_hint: Ignorar totes los senhalaments que venon d’aqueste domeni. Pas pertiment per las suspensions
+ rejecting_media: regeta los fichièrs multimèdias
+ rejecting_reports: regeta los senhalements
+ severity:
+ silence: mes en silenci
+ suspend: suspendut
show:
affected_accounts:
one: Un compte de la basa de donadas tocat
@@ -279,7 +287,6 @@ oc:
suspend: Levar la suspension de totes los comptes d’aqueste domeni
title: Restablir lo blocatge de domeni de %{domain}
undo: Restablir
- title: Blòc de domeni
undo: Restablir
email_domain_blocks:
add_new: Ajustar
@@ -291,12 +298,24 @@ oc:
create: Crear un blocatge
title: Nòu blocatge de domeni de corrièl
title: Blocatge de domeni de corrièl
+ followers:
+ back_to_account: Tornar al compte
+ title: Seguidors de %{acct}
instances:
- account_count: Comptes coneguts
- domain_name: Domeni
- reset: Reïnicializar
- search: Cercar
- title: Instàncias conegudas
+ delivery_available: Liurason disponibla
+ known_accounts:
+ one: "%{count} compte conegut"
+ other: "%{count} comptes coneguts"
+ moderation:
+ all: Totas
+ limited: Limitat
+ title: Moderacion
+ title: Federacion
+ total_blocked_by_us: Avèm blocat
+ total_followed_by_them: Sègon
+ total_followed_by_us: Seguèm
+ total_reported: Senhalament a prepaus d’eles
+ total_storage: Fichièrs junts
invites:
deactivate_all: O desactivar tot
filter:
@@ -347,7 +366,7 @@ oc:
reported_account: Compte senhalat
reported_by: Senhalat per
resolved: Resolgut
- resolved_msg: Rapòrt corrèctament resolgut !
+ resolved_msg: Rapòrt corrèctament resolgut !
status: Estatut
title: Senhalament
unassign: Levar
@@ -356,7 +375,7 @@ oc:
settings:
activity_api_enabled:
desc_html: Nombre d’estatuts publicats, d’utilizaires actius e de novèlas inscripcions en rapòrt setmanièr
- title: Publica las estatisticas totalas de l’activitat dels utilizaires
+ title: Publicar las estatisticas totalas de l’activitat dels utilizaires
bootstrap_timeline_accounts:
desc_html: Separatz los noms d’utilizaire amb de virgula. Pas que los comptes locals e pas clavats foncionaràn. Se lo camp es void los admins seràn selecionats.
title: Per defaut los nòuvenguts sègon
@@ -374,13 +393,16 @@ oc:
title: Imatge de la mascòta
peers_api_enabled:
desc_html: Noms de domeni qu’aquesta instància a trobats pel fediverse
- title: Publica la lista de las instàncias conegudas
+ title: Publicar la lista de las instàncias conegudas
preview_sensitive_media:
desc_html: Los apercebuts dels ligams sus los autres sites mostraràn una vinheta encara que lo mèdia siá marcat coma sensible
title: Mostrar los mèdias sensibles dins los apercebuts OpenGraph
+ profile_directory:
+ desc_html: Permet als utilizaires d’èsser trobats
+ title: Activar l’annuari de perfils
registrations:
closed_message:
- desc_html: Afichat sus las pagina d’acuèlh quand las inscripcions son tampadas.%{instance}
es benlèu pas lo servidor ont vos marquèretz, doncas nos cal vos redirigir cap a vòstre prim servidor per començar."
remote_interaction:
- proceed: Confirmar l’interaccion
- prompt: 'Volètz interagir amb aqueste tut :'
+ favourite:
+ proceed: Contunhar per metre en favorit
+ prompt: 'Volètz metre en favorit aqueste tut :'
+ reblog:
+ proceed: Contunhar per repartejar
+ prompt: 'Volètz repartejar aqueste tut :'
+ reply:
+ proceed: Contunhar per respondre
+ prompt: 'Volètz respondre a aqueste tut :'
remote_unfollow:
error: Error
title: Títol
unfollowed: Pas mai seguit
+ scheduled_statuses:
+ over_daily_limit: Avètz passat la limita de %{limit} tuts programats per aquel jorn
+ over_total_limit: Avètz passat la limita de %{limit} tuts programats
+ too_soon: La data planificada deu èsser dins lo futur
sessions:
activity: Darrièra activitat
browser: Navigator
@@ -961,6 +1015,22 @@ oc:
explanation: Avètz demandat una salvagarda complèta de vòstre compte Mastodon. Es prèsta per telecargament !
subject: Vòstre archiu es prèst per telecargament
title: Archiu per emportar
+ warning:
+ explanation:
+ disable: Quand vòstre compte es gelat, las donadas d’aqueste demòran senceras, mas podètz pas realizar cap d’accion fins que siá desblocat.
+ silence: Del temps que vòstre compte es limitat, solament lo monde que vos sègon veiràn vòstres tuts sus aqueste servidor, e poiriatz èsser tirat de mantunas listas publicas. Pasmens, d’autres vos pòdon sègre manualament.
+ suspend: Vòstre compte es suspendut e totes vòstres tuts e fichièrs enviats son estats suprimits sens retorn possible d’aqueste servidor e los de vòstres seguidors.
+ review_server_policies: Repassar las politicas del servidor
+ subject:
+ disable: Vòstre compte %{acct} es gelat
+ none: Avertiment per %{acct}
+ silence: Vòstre compte %{acct} es limitat
+ suspend: Vòstre compte %{acct} es suspendut
+ title:
+ disable: Compte gelat
+ none: Avertiment
+ silence: Compte limitat
+ suspend: Compte suspendut
welcome:
edit_profile_action: Configuracion del perfil
edit_profile_step: Podètz personalizar lo perfil en mandar un avatard, cambiar l’escais-nom e mai. Se volètz repassar las demandas d’abonaments abans que los nòus seguidors pòscan veire vòstre perfil, podètz clavar vòstre compte.
@@ -972,7 +1042,6 @@ oc:
review_preferences_action: Cambiar las preferéncias
review_preferences_step: Pensatz de configurar vòstras preferéncias, tal coma los corrièls que volètz recebrer o lo nivèl de confidencialitat de vòstres tuts per defaut. O se l’animacion vos dòna pas enveja de rendre, podètz activar la lectura automatica dels GIF.
subject: Benvengut a Mastodon
- tip_bridge_html: Se venètz de Twitter, podètz trobar vòstres amics sus Mastodon en utilizant l‘aplicacion de Pont. Aquò fonciona pas que s’utilizan lo Pont tanben !
tip_federated_timeline: Lo flux d’actualitat federat es una vista generala del malhum Mastodon. Mas aquò inclutz solament lo monde que vòstres vesins sègon, doncas es pas complèt.
tip_following: Seguètz l’administrator del servidor per defaut. Per trobar de monde mai interessant, agachatz lo flux d’actualitat local e lo global.
tip_local_timeline: Lo flux d’actualitat local es una vista del monde de %{instance}. Son vòstres vesins dirèctes !
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 9c893b605..beadae14d 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -54,6 +54,7 @@ pl:
other: Śledzących
following: Śledzonych
joined: Dołączył(a) %{date}
+ last_active: ostatnio aktywny(-a)
link_verified_on: Własność tego odnośnika została sprawdzona %{date}
media: Zawartość multimedialna
moved_html: "%{name} korzysta teraz z konta %{new_profile_link}:"
@@ -77,6 +78,9 @@ pl:
moderator: Moderator
unfollow: Przestań śledzić
admin:
+ account_actions:
+ action: Wykonaj działanie
+ title: Wykonaj działanie moderacyjne na %{acct}
account_moderation_notes:
create: Pozostaw notatkę
created_msg: Pomyślnie dodano notatkę moderacyjną!
@@ -96,6 +100,7 @@ pl:
confirm: Potwierdź
confirmed: Potwierdzono
confirming: Potwierdzanie
+ deleted: Usunięto
demote: Degraduj
disable: Dezaktywuj
disable_two_factor_authentication: Wyłącz uwierzytelnianie dwuetapowe
@@ -111,8 +116,11 @@ pl:
followers: Śledzący
followers_url: Adres śledzących
follows: Śledzeni
+ header: Nagłówek
inbox_url: Adres skrzynki
+ invited_by: Zaproszony(-a) przez
ip: Adres IP
+ joined: Dołączył(-a)
location:
all: Wszystkie
local: Lokalne
@@ -122,6 +130,7 @@ pl:
media_attachments: Załączniki multimedialne
memorialize: Przełącz na „In Memoriam”
moderation:
+ active: Aktywne
all: Wszystkie
silenced: Wyciszone
suspended: Zawieszone
@@ -131,10 +140,6 @@ pl:
most_recent_ip: Ostatnie IP
no_limits_imposed: Nie nałożono ograniczeń
not_subscribed: Nie zasubskrybowano
- order:
- alphabetic: Alfabetycznie
- most_recent: Najnowsze
- title: Kolejność
outbox_url: Adres skrzynki nadawczej
perform_full_suspension: Zawieś
profile_url: Adres profilu
@@ -142,8 +147,9 @@ pl:
protocol: Protokół
public: Publiczne
push_subscription_expires: Subskrypcja PuSH wygasa
- redownload: Odśwież awatar
+ redownload: Odśwież profil
remove_avatar: Usun awatar
+ remove_header: Usuń nagłówek
resend_confirmation:
already_confirmed: To konto zostało już potwierdzone
send: Wyślij ponownie e-mail z potwierdzeniem
@@ -162,7 +168,6 @@ pl:
shared_inbox_url: Adres udostępnianej skrzynki
show:
created_reports: Zgłoszenia tego użytkownika
- report: zgłoszeń
targeted_reports: Zgłoszenia dotyczące tego użytkownika
silence: Wycisz
silenced: Wyciszono
@@ -175,12 +180,14 @@ pl:
undo_suspension: Cofnij zawieszenie
unsubscribe: Przestań subskrybować
username: Nazwa użytkownika
+ warn: Ostrzeż
web: Sieć
action_logs:
actions:
assigned_to_self_report: "%{name} przypisał(a) sobie zgłoszenie %{target}"
change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}"
+ create_account_warning: "%{name} wysłał(a) ostrzeżenie do %{target}"
create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}"
create_domain_block: "%{name} zablokował(a) domenę %{target}"
create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę"
@@ -239,6 +246,7 @@ pl:
config: Konfiguracja
feature_deletions: Usuwanie kont
feature_invites: Zaproszenia
+ feature_profile_directory: Katalog profilów
feature_registrations: Rejestracja
feature_relay: Przekazywanie federacji
features: Możliwości
@@ -273,19 +281,22 @@ pl:
reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu
reject_reports: Odrzucaj zgłoszenia
reject_reports_hint: Zgłoszenia z tej instancji będą ignorowane. Nieprzydatne przy zawieszeniu
- severities:
- noop: Nic nie rób
- silence: Wycisz
- suspend: Zawieś
- severity: Priorytet
+ rejecting_media: pliki multimedialne są odrzucane
+ rejecting_reports: zgłoszenia są odrzucane
+ severity:
+ silence: wyciszono
+ suspend: zawieszono
show:
- affected_accounts: Dotyczy %{count} kont w bazie danych
+ affected_accounts:
+ few: Dotknęło %{count} kont w bazie danych
+ many: Dotknęło %{count} kont w bazie danych
+ one: Dotknęło jedno konto w bazie danych
+ other: Dotknęło %{count} kont w bazie danych
retroactive:
silence: Odwołaj wyciszenie wszystkich kont w tej domenie
suspend: Odwołaj zawieszenie wszystkich kont w tej domenie
title: Odwołaj blokadę dla domeny %{domain}
undo: Cofnij
- title: Zablokowane domeny
undo: Cofnij
email_domain_blocks:
add_new: Dodaj nową
@@ -297,12 +308,26 @@ pl:
create: Utwórz blokadę
title: Nowa blokada domeny e-mail
title: Blokowanie domen e-mail
+ followers:
+ back_to_account: Wróć do konta
+ title: Śledzący %{acct}
instances:
- account_count: Znane konta
- domain_name: Domena
- reset: Przywróć
- search: Szukaj
+ delivery_available: Doręczanie jest dostępne
+ known_accounts:
+ few: "%{count} znane konta"
+ many: "%{count} znane konta"
+ one: "%{count} znane konto"
+ other: "%{count} znane konta"
+ moderation:
+ all: Wszystkie
+ limited: Ograniczone
+ title: Moderacja
title: Znane instancje
+ total_blocked_by_us: Zablokowane przez nas
+ total_followed_by_them: Śledzeni przez nich
+ total_followed_by_us: Śledzeni przez nas
+ total_reported: Zgłoszenia dotyczące ich
+ total_storage: Załączniki multimedialne
invites:
deactivate_all: Unieważnij wszystkie
filter:
@@ -376,7 +401,7 @@ pl:
desc_html: Wyświetlany na stronie głównej. Zalecany jest rozmiar przynajmniej 600x100 pikseli. Jeżeli nie ustawiony, zostanie użyta miniatura instancji
title: Obraz bohatera
mascot:
- desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna.
+ desc_html: Wyświetlany na wielu stronach. Zalecany jest rozmiar przynajmniej 293px × 205px. Jeżeli nie ustawiono, zostanie użyta domyślna
title: Obraz maskotki
peers_api_enabled:
desc_html: Nazwy domen, z którymi ta instancja wchodziła w interakcje
@@ -384,6 +409,9 @@ pl:
preview_sensitive_media:
desc_html: Podgląd odnośników na innych instancjach będzie wyświetlał miniaturę nawet jeśli zawartość multimedialna zostanie oznaczona jako wrażliwa
title: Wyświetlaj zawartość wrażliwą w podglądzie OpenGraph
+ profile_directory:
+ desc_html: Pozwalaj na poznawanie użytkowników
+ title: Włącz katalog profilów
registrations:
closed_message:
desc_html: Wyświetlana na stronie głównej, gdy możliwość otwarej rejestracji nie jest dostępna. Możesz korzystać z tagów HTML
@@ -443,13 +471,21 @@ pl:
last_delivery: Ostatnio doręczono
title: WebSub
topic: Temat
- suspensions:
- bad_acct_msg: Zawartość potwierdzenia nie zgadza się. Czy próbujesz zawiesić właściwe konto?
- hint_html: 'Aby potwierdzić zawieszenie konta, wprowadź %{value} w poniższe pole:'
- proceed: Przejdź
- title: Zawieś %{acct}
- warning_html: 'Zawieszenie konta będzie skutkowało nieodwracalnym usunięciem danych z tego konta, wliczając:'
+ tags:
+ accounts: Konta
+ hidden: Ukryte
+ hide: Ukryj w katalogu
+ name: Hashtag
+ title: Hashtagi
+ unhide: Pokazuj w katalogu
+ visible: Widoczne
title: Administracja
+ warning_presets:
+ add_new: Dodaj nowy
+ delete: Usuń
+ edit: Edytuj
+ edit_preset: Edytuj szablon ostrzeżenia
+ title: Zarządzaj szablonami ostrzeżeń
admin_mailer:
new_report:
body: Użytkownik %{reporter} zgłosił(a) %{target}
@@ -527,6 +563,15 @@ pl:
success_msg: Twoje konto zostało pomyślnie usunięte
warning_html: Możemy usunąć zawartość jedynie w obrębie tej instancji. Zawartość udostępniona publicznie pozostawia trwałe ślady. Serwery niepodłączone do sieci bądź nieśledzące Twoich aktualizacji mogą zachować Twoje dane.
warning_title: Dostępność usuniętej zawartości
+ directories:
+ directory: Katalog profilów
+ explanation: Poznaj profile na podstawie zainteresowań
+ explore_mastodon: Odkrywaj %{title}
+ people:
+ few: "%{count} osoby"
+ many: "%{count} osób"
+ one: "%{count} osoba"
+ other: "%{count} osób"
errors:
'403': Nie masz uprawnień, aby wyświetlić tę stronę.
'404': Strona, którą próbujesz odwiedzić, nie istnieje.
@@ -549,7 +594,9 @@ pl:
size: Rozmiar
blocks: Zablokowani
csv: CSV
+ domain_blocks: Blokady domen
follows: Śledzeni
+ lists: Listy
mutes: Wyciszeni
storage: Urządzenie przechowujące dane
filters:
@@ -703,9 +750,6 @@ pl:
no_account_html: Nie masz konta? Możesz zarejestrować się tutaj
proceed: Śledź
prompt: 'Zamierzasz śledzić:'
- remote_interaction:
- proceed: Przejdź do interakcji
- prompt: 'Chcesz dokonać interakcji z tym wpisem:'
remote_unfollow:
error: Błąd
title: Tytuł
@@ -916,6 +960,22 @@ pl:
explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania!
subject: Twoje archiwum jest gotowe do pobrania
title: Odbiór archiwum
+ warning:
+ explanation:
+ disable: Kiedy Twoje konto jest wyłączone, Twoje dane pozostają na serwerze, ale nie możesz wykonywać żadnych działań, zanim zostanie odblokowane.
+ silence: Kiedy Twoje konto jest ograniczone, tylko osoby które je śledzą będą widzieć Twoje wpisy. Może ono też przestać być widoczne na publicznych listach. Inni wciąż mogą zacząć Cię śledzić.
+ suspend: Twoje konto zostało zawieszone i wszystkie Twoje wpisy wraz z zawartością multimedialną zostały nieodwracalnie usunięte z tego serwera i serwerów, których użytkownicy śledzili Cię.
+ review_server_policies: Przejrzyj zasady serwera
+ subject:
+ disable: Twoje konto %{acct} zostało wyłączone
+ none: Ostrzeżenie dla %{acct}
+ silence: Twoje konto %{acct} zostało ograniczone
+ suspend: Twoje konto %{acct} zostało zawieszone
+ title:
+ disable: Konto wyłączone
+ none: Ostrzeżenie
+ silence: Konto ograniczone
+ suspend: Konto zawieszone
welcome:
edit_profile_action: Skonfiguruj profil
edit_profile_step: Możesz dostować profil wysyłając awatar, obraz nagłówka, zmieniając wyświetlaną nazwę i wiele więcej. Jeżeli chcesz, możesz zablokować konto, aby kontrolować, kto może Cię śledzić.
@@ -927,7 +987,6 @@ pl:
review_preferences_action: Zmień ustawienia
review_preferences_step: Upewnij się, że zmieniłeś(-aś) ustawienia, takie jak maile, które chciałbyś otrzymywać lub domyślne opcje prywatności. Jeżeli nie masz choroby lokomocyjnej, możesz włączyć automatyczne odtwarzanie animacji GIF.
subject: Witaj w Mastodonie
- tip_bridge_html: Jeżeli przybywasz z Twittera, możesz znaleźć znajomych na Mastodonie używając aplikacji mostku. Działa to tylko, jeżeli oni również z niej korzystali!
tip_federated_timeline: Oś czasu federacji przedstawia całą sieć Mastodona. Wyświetla tylko wpisy osób, które śledzą użytkownicy Twojej instancji, więc nie jest kompletna.
tip_following: Domyślnie śledzisz administratora/ów swojej instancji. Aby znaleźć więcej ciekawych ludzi, zajrzyj na lokalną i federalną oś czasu.
tip_local_timeline: Lokalna oś czasu przedstawia osoby z %{instance}. To Twoi najbliżsi sąsiedzi!
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 2b9bf747d..d44d1a045 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -10,7 +10,7 @@ pt-BR:
closed_registrations: Os cadastros estão atualmente fechados nesta instância. No entanto, você pode procurar uma instância diferente na qual possa criar uma conta e acessar a mesma rede por lá.
contact: Contato
contact_missing: Não definido
- contact_unavailable: N/A
+ contact_unavailable: Não disponível
documentation: Documentação
extended_description_html: |
%{instance}
pode não ser o servidor onde você se registrou, então precisamos redirecionar você para o seu servidor primeiro."
remote_interaction:
- proceed: Continue para interagir
- prompt: 'Você quer interagir com este toot:'
+ favourite:
+ proceed: Proceder para favoritar
+ prompt: 'Você quer favoritar este toot:'
+ reblog:
+ proceed: Proceder para compartilhar
+ prompt: 'Você quer compartilhar esse toot:'
+ reply:
+ proceed: Proceder para responder
+ prompt: 'Você quer responder à esse toot:'
remote_unfollow:
error: Erro
title: Título
unfollowed: Deixou de seguir
+ scheduled_statuses:
+ over_daily_limit: Você excedeu o limite de %{limit} toots planejados para esse dia
+ over_total_limit: Você excedeu o limite de %{limit} toots planejados
+ too_soon: A data planejada precisa ser no futuro
sessions:
activity: Última atividade
browser: Navegador
@@ -903,6 +954,22 @@ pt-BR:
explanation: Você pediu um backup completo da sua conta no Mastodon. E agora está pronto para ser baixado!
subject: Seu arquivo está pronto para ser baixado
title: Baixar arquivo
+ warning:
+ explanation:
+ disable: Enquanto sua conta está congelada, seus dados estão intactos, mas você não pode realizar nenhuma ação até que sua conta seja desbloqueada.
+ silence: Enquanto sua conta está limitada, somente pessoas que já estão seguindo você poderão ver seus toots nesse servidor, e você pode ser excluído de diversas listagens públicas. No entanto, outros ainda podem seguir você manualmente.
+ suspend: Sua conta está suspensa e todos os seus toots e mídias foram irreversivelmente removidas desse servidor e de servidores onde você tinha seguidores.
+ review_server_policies: Revisar as políticas do servidor
+ subject:
+ disable: Sua conta %{acct} foi congelada
+ none: Aviso para %{acct}
+ silence: Sua conta %{acct} foi limitada
+ suspend: Sua conta %{acct} foi suspensa
+ title:
+ disable: Conta congelada
+ none: Aviso
+ silence: Conta limitada
+ suspend: Conta suspensa
welcome:
edit_profile_action: Configurar perfil
edit_profile_step: Você pode customizar o seu perfil enviando um avatar, uma imagem de topo, mudando seu nome de exibição, dentre outros. Se você gostaria de aprovar novos seguidores antes que eles possam seguir você, você pode trancar a sua conta.
@@ -914,7 +981,6 @@ pt-BR:
review_preferences_action: Mudar as preferências
review_preferences_step: Não se esqueça de configurar suas preferências, como quais e-mails você gostaria de receber, que nível de privacidade você gostaria que seus posts tenham por padrão. Se você não sofre de enjôo com movimento, você pode habilitar GIFs animando automaticamente.
subject: Boas-vindas ao Mastodon
- tip_bridge_html: Se você está vindo do Twitter, você pode encontrar pessoas conhecidas que estão no Mastodon usando app de associação. Mas só funciona se as pessoas também estiverem usando o app!
tip_federated_timeline: A timeline global é uma visão contínua da rede do Mastodon. Mas ela só inclui pessoas que outras pessoas da sua instância estão seguindo, então não é a rede completa.
tip_following: Você vai seguir administrador(es) da sua instância por padrão. Para encontrar mais gente interessante, confira as timelines local e global.
tip_local_timeline: A timeline local é uma visão contínua das pessoas que estão em %{instance}. Esses são seus vizinhos próximos!
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index b68ffbd7f..037582f34 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -92,10 +92,6 @@ pt:
most_recent_activity: Actividade mais recente
most_recent_ip: IP mais recente
not_subscribed: Não inscrito
- order:
- alphabetic: Alfabética
- most_recent: Mais recente
- title: Ordem
outbox_url: URL da caixa de saída
perform_full_suspension: Fazer suspensão completa
profile_url: URL do perfil
@@ -122,7 +118,6 @@ pt:
shared_inbox_url: URL da caixa de entrada compartilhada
show:
created_reports: Relatórios gerados por esta conta
- report: relatórios
targeted_reports: Relatórios feitos sobre esta conta
silence: Silêncio
statuses: Status
@@ -200,11 +195,6 @@ pt:
title: Novo bloqueio de domínio
reject_media: Rejeitar ficheiros de media
reject_media_hint: Remove localmente arquivos armazenados e rejeita fazer guardar novos no futuro. Irrelevante na suspensão
- severities:
- noop: Nenhum
- silence: Silenciar
- suspend: Suspender
- severity: Severidade
show:
affected_accounts:
one: Uma conta na base de dados afectada
@@ -214,7 +204,6 @@ pt:
suspend: Não suspender todas as contas existentes nesse domínio
title: Remover o bloqueio de domínio de %{domain}
undo: Anular
- title: Bloqueio de domínio
undo: Anular
email_domain_blocks:
add_new: Adicionar novo
@@ -227,10 +216,6 @@ pt:
title: Novo bloqueio de domínio de email
title: Bloqueio de Domínio de Email
instances:
- account_count: Contas conhecidas
- domain_name: Domínio
- reset: Restaurar
- search: Pesquisar
title: Instâncias conhecidas
invites:
filter:
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index 3a104e1d0..aa4d3c967 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -1,7 +1,121 @@
---
ro:
+ about:
+ features:
+ not_a_product_title: Ești o persoană, nu un produs
+ hosted_on: Mastodon găzduit de %{domain}
accounts:
posts:
few: Toots
one: Toot
other: Toots
+ auth:
+ agreement_html: Prin apăsarea butonului Înscriere de mai jos ești deacord cu regulile acestei instanțe și termenii de utilizare al acestui serviciu.
+ change_password: Parolă
+ confirm_email: Confirmă email
+ delete_account: Șterge contul
+ delete_account_html: Dacă vrei să ștergi acest cont poți începe aici. Va trebui să confirmi această acțiune.
+ didnt_get_confirmation: Nu ai primit instrucțiunile de confirmare?
+ forgot_password: Ai uitat parola?
+ invalid_reset_password_token: Această cerere este invalidă sau a expirat. Încearcă resetarea parolei din nou.
+ login: Conectare
+ logout: Deconectare
+ migrate_account: Transfer către un alt cont
+ migrate_account_html: Dacă dorești să redirecționezi acest cont către un altul, poți configura asta aici.
+ or: sau
+ or_log_in_with: Sau conectează-te cu
+ providers:
+ cas: CAS
+ saml: SAML
+ register: Înregistrare
+ register_elsewhere: Înregistrează-te pe un alt server
+ resend_confirmation: Retrimite instrucțiunile de confirmare
+ reset_password: Resetare parolă
+ security: Securitate
+ set_new_password: Setează o nouă parolă
+ authorize_follow:
+ already_following: Urmărești deja acest cont
+ error: Din păcate a apărut o eroare
+ follow: Urmărește
+ follow_request: 'Ai trimis o cerere de urmărire către:'
+ following: 'Gata! De acum urmărești:'
+ post_follow:
+ close: Sau, poți închide această fereastră.
+ return: Arată profilul utilizatorului
+ web: Mergi la web
+ title: Urmărește %{acct}
+ datetime:
+ distance_in_words:
+ about_x_hours: "%{count}o"
+ about_x_months: "%{count}l"
+ about_x_years: "%{count}ani"
+ almost_x_years: "%{count}ani"
+ half_a_minute: Chiar acum
+ less_than_x_minutes: "%{count}l"
+ less_than_x_seconds: Chiar acum
+ over_x_years: "%{count}ani"
+ x_days: "%{count}z"
+ x_minutes: "%{count}m"
+ x_months: "%{count}l"
+ x_seconds: "%{count}s"
+ deletes:
+ bad_password_msg: Bună încercare, hackere! Parolă incorectă
+ confirm_password: Introdu parola curentă pentru a-ți verifica identitatea
+ description_html: Această acțiune este permanentă și ireversibilă, elimină conținutul și dezactivează contul tău. Acest username va rămâne permanent rezervat pentru a evita furtul de identitate.
+ proceed: Șterge contul
+ success_msg: Contul tău a fost șterg. Nu mai poate fi recuperat :D
+ warning_html: Doar ștergerea conținutului de pe acest server este garantată. Conținutul tău care a fost redistribuit în alte instațe e posibil să lase urme. Serverele deconecate sau care nu mai sunt abonate la actualizările contului tău nu își vor mai actualiza baza de date.
+ directories:
+ explanation: Descoperă oameni și companii în funcție de interesele lor
+ explore_mastodon: Explorează %{title}
+ people:
+ few: "%{count} persoană"
+ one: "%{count} persoană"
+ other: "%{count} oameni"
+ errors:
+ '403': Nu ai permisiunea să vizitezi această pagină.
+ '404': Pagina pe care o cauți nu există.
+ '410': Pagina pe care o cauți nu mai există.
+ '422':
+ content: Verificarea securității a eșuat. Ai blocat cookiurile?
+ title: Verificarea securității a eșuat
+ '429': Strangulat
+ '500':
+ content: Ne pare rău, dar ceva a funcționat greșit. Încercați din nou!?
+ title: Această pagină nu este corectă
+ noscript_html: Pentru a utiliza o aplicație web Mastodon, te rog activează JavaScript. Alternativ, încearcă una din aplicațiile native Mastodon pentru platforma ta.
+ exports:
+ archive_takeout:
+ date: Data
+ download: Descarcă arhiva contului tău
+ hint_html: Poți solicita arhivapostărilor și conținutul media a contului tău. Datele furnizate sunt în formatul ActivityPub. Poți solicita cate o arhivă la 7 zile.
+ in_progress: Pregătim arhiva ta...
+ request: Cere arhiva ta
+ size: Dimensiune
+ blocks: Blocați
+ csv: CSV
+ follows: Tu urmărești
+ mutes: Opriți
+ storage: Depozitare media
+ filters:
+ contexts:
+ home: Fluxul Acasă
+ notifications: Notificări
+ public: Fluxul public
+ thread: Conversații
+ edit:
+ title: Editează filtru
+ errors:
+ invalid_context: Lipsa conținut sau acesta este invalid
+ invalid_irreversible: Filtrarea ireversibilă funcționează dor cu context din fluxul Acasă și notificări
+ index:
+ delete: Șterge
+ title: Filtre
+ new:
+ title: Adaugă un filtru nou
+ followers:
+ domain: Domeniu
+ explanation_html: Dacă vrei să fi sigur de confidențialitatea statusurilor tale, ar trebui să fi conștient de cine te urmărește. Statusurile tale private sunt livrate către toate instanțele unde ai urmăritori. Este recomandabil să verifici și să ștergi urmăritorii în care nu ai încredere că îți vor respecta intimitatea.
+ followers_count: Numărul de urmăritori
+ lock_link: Privează contul tău
+ purge: Elimină de la urmăritori
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index a3ac754f2..3e37391a8 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -128,10 +128,6 @@ ru:
most_recent_activity: Последняя активность
most_recent_ip: Последний IP
not_subscribed: Не подписаны
- order:
- alphabetic: По алфавиту
- most_recent: По дате
- title: Порядок
outbox_url: URL исходящих
perform_full_suspension: Полная блокировка
profile_url: URL профиля
@@ -159,7 +155,6 @@ ru:
shared_inbox_url: URL общих входящих
show:
created_reports: Жалобы, отправленные этим аккаунтом
- report: жалоба
targeted_reports: Жалобы на этот аккаунт
silence: Глушение
statuses: Статусы
@@ -265,11 +260,6 @@ ru:
title: Новая доменная блокировка
reject_media: Запретить медиаконтент
reject_media_hint: Удаляет локально хранимый медиаконтент и запрещает его загрузку в будущем. Не имеет значения в случае блокировки
- severities:
- noop: Ничего
- silence: Глушение
- suspend: Блокировка
- severity: Строгость
show:
affected_accounts:
few: Влияет на %{count} аккаунта в базе данных
@@ -281,7 +271,6 @@ ru:
suspend: Снять блокировку со всех существующих аккаунтов этого домена
title: Снять блокировку с домена %{domain}
undo: Отменить
- title: Доменные блокировки
undo: Отменить
email_domain_blocks:
add_new: Добавить новую
@@ -294,10 +283,6 @@ ru:
title: Новая доменная блокировка еmail
title: Доменная блокировка email
instances:
- account_count: Известных аккаунтов
- domain_name: Домен
- reset: Сбросить
- search: Поиск
title: Известные узлы
invites:
deactivate_all: Отключить все
@@ -431,12 +416,6 @@ ru:
last_delivery: Последняя доставка
title: WebSub
topic: Тема
- suspensions:
- bad_acct_msg: Не удалось найти такое число подтверждения. Вы уверены, что замораживаете нужный аккаунт?
- hint_html: 'Чтобы подтвердить заморозку аккаунта, пожалуйста, введите %{value} в поле ниже:'
- proceed: Продолжить
- title: Заморозить %{acct}
- warning_html: 'Заморозка этого аккаунта приведёт к необратимому удалению данных с этого аккаунта, включая:'
title: Администрирование
admin_mailer:
new_report:
@@ -694,9 +673,6 @@ ru:
no_account_html: Нет учётной записи? Вы можете зарегистрироваться здесь
proceed: Продолжить подписку
prompt: 'Вы хотите подписаться на:'
- remote_interaction:
- proceed: Продолжить
- prompt: 'Вы собираетесь взаимодействовать со статусом:'
remote_unfollow:
error: Ошибка
title: Заголовок
@@ -917,7 +893,6 @@ ru:
review_preferences_action: Изменить настройки
review_preferences_step: Проверьте все настройки, например, какие письма Вы хотите получать или уровень приватности статусов по умолчанию. Если Вы не страдаете морской болезнь, можете включить автовоспроизведение GIF.
subject: Добро пожаловать в Mastodon
- tip_bridge_html: Если Вы пришли из Twitter, можете поискать своих друзей в Mastodon, используя приложение-мост. Но это работает только если они тоже использовали это приложение!
tip_federated_timeline: В глобальной ленте отображается сеть Mastodon. Но в ней показаны посты только от людей, на которых подписаны Вы и Ваши соседи, поэтому лента может быть неполной.
tip_following: По умолчанию Вы подписаны на администратора(-ов) Вашего узла. Чтобы найти других интересных людей, проверьте локальную и глобальную ленты.
tip_local_timeline: В локальной ленте показаны посты от людей с %{instance}. Это Ваши непосредственные соседи!
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index cdd3ddf25..ef1d269ee 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -2,6 +2,12 @@
ar:
simple_form:
hints:
+ account_warning_preset:
+ text: بإمكانك استخدام نفس القواعد التي نجدها في التبويقات كعناوين الروابط والوسوم والإشارات
+ admin_account_action:
+ send_email_notification: سوف يتلقى المستخدم رسالة تُفسِّر ما حدث على حسابه
+ type_html: اختر ما تود إجراؤه على %{acct}
+ warning_preset_id: اختياري. يمكنك إضافة نص مخصص إلى نهاية النموذج
defaults:
autofollow: سوف يتابعك تلقائيًا الأشخاص الذين يقومون بالتسجيل من خلال الدعوة
avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
@@ -18,6 +24,7 @@ ar:
password: يُنصح باستخدام 8 أحرف على الأقل
phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى
scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الإستغناء عن الخَيار اليدوي.
+ setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لتبويقات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها)
setting_default_language: يمكن الكشف التلقائي للّغة اللتي استخدمتها في تحرير تبويقاتك ، غيرَ أنّ العملية ليست دائما دقيقة
setting_display_media_default: إخفاء الوسائط المُعيَّنة كحساسة
setting_display_media_hide_all: إخفاء كافة الوسائط دائمًا
@@ -37,6 +44,18 @@ ar:
fields:
name: التسمية
value: المحتوى
+ account_warning_preset:
+ text: نموذج نصي
+ admin_account_action:
+ send_email_notification: إشعار المستخدِم عبر البريد الإلكتروني
+ text: تحذير مخصص
+ type: الإجراء
+ types:
+ disable: تعطيل
+ none: لا تفعل شيئا
+ silence: كتم
+ suspend: تعليق و حذف كافة بيانات الحساب
+ warning_preset_id: استخدم نموذج تنبيه
defaults:
autofollow: إرسال دعوة لمتابعة حسابك
avatar: الصورة الرمزية
@@ -47,6 +66,7 @@ ar:
context: تصفية السياقات
current_password: كلمة السر الحالية
data: البيانات
+ discoverable: القيام بإدراج هذا الحساب في قائمة دليل الحسابات
display_name: الإسم المعروض
email: عنوان البريد الإلكتروني
expires_in: تنتهي مدة صلاحيته بعد
@@ -62,6 +82,7 @@ ar:
otp_attempt: رمز المصادقة بخطوتين
password: كلمة السر
phrase: كلمة مفتاح أو عبارة
+ setting_aggregate_reblogs: جمع الترقيات في خيوط زمنية
setting_auto_play_gif: تشغيل تلقائي لِوَسائط جيف المتحركة
setting_boost_modal: إظهار مربع حوار للتأكيد قبل ترقية أي تبويق
setting_default_language: لغة النشر
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index 0d78f419f..b91d5780a 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -6,9 +6,14 @@ ast:
autofollow: La xente que se rexistre pente la invitación va siguite automáticamente
bot: Esta cuenta fai principalmente aiciones automatizaes y podría nun supervisase
digest: Namái s'unvia tres un periodu llargu d'inactividá y namái si recibiesti cualesquier mensaxe personal na to ausencia
+ email: Vamos unviate un corréu de confirmación
irreversible: Los toots peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués
+ password: Usa 8 caráuteres polo menos
setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil
setting_theme: Afeuta al aspeutu de Mastodon cuando anicies sesión dende cualesquier preséu.
+ username: El nome d'usuariu va ser únicu en %{domain}
+ imports:
+ data: El ficheru CSV esportáu dende otra instancia de Mastodon
labels:
account:
fields:
@@ -22,18 +27,27 @@ ast:
current_password: Contraseña actual
data: Datos
display_name: Nome a amosar
+ email: Direición de corréu
+ expires_in: Caduca tres
fields: Datos meta del perfil
header: Testera
+ irreversible: Escartar en cuentes d'anubrir
locale: Llingua de la interfaz
locked: Bloquiar cuenta
+ max_uses: Númberu máximu d'usos
new_password: Contraseña nueva
note: Bio
otp_attempt: Códigu de verificación en dos pasos
password: Contraseña
+ phrase: Pallabra clave o fras
setting_auto_play_gif: Reproducir GIFs automáticamente
- setting_default_language: Llingua d'espublización
+ setting_default_language: Llingua de les espublizaciones
setting_default_privacy: Privacidá d'espublizaciones
+ setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un toot
+ setting_system_font_ui: Usar la fonte predeterminada del sistema
+ setting_unfollow_modal: Amosar el diálogu de confirmación enantes de dexar de siguir a daquién
severity: Severidá
+ type: Triba de la importación
username: Nome d'usuariu
username_or_email: Nome d'usuariu o corréu
interactions:
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 546a5bd14..4c2b1636d 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -2,12 +2,20 @@
ca:
simple_form:
hints:
+ account_warning_preset:
+ text: Pots utilitzar totes les sintaxi com ara URL, etiquetes i mencions
+ admin_account_action:
+ send_email_notification: L'usuari rebrà una explicació del que ha passat amb el seu compte
+ text_html: Opcional. Pots utilitzar tota la sintaxi. Pots afegir configuracions predefinides d'avís per a estalviar temps
+ type_html: Tria què fer amb %{acct}
+ warning_preset_id: Opcional. Encara pots afegir text personalitzat al final de la configuració predefinida
defaults:
autofollow: Les persones que es registrin a través de la invitació et seguiran automàticament
avatar: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px
bot: Aquest compte realitza principalment accions automatitzades i pot no estar controlat per cap persona
context: Un o diversos contextos on s'ha d'aplicar el filtre
digest: Només s'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència
+ discoverable_html: El directori permet trobar usuaris en funció dels interessos i activitat. Requereix almenys %{min_followers} seguidors
email: Se t'enviarà un correu electrònic de confirmació
fields: Pots tenir fins a 4 elements que es mostren com a taula al teu perfil
header: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px
@@ -18,6 +26,7 @@ ca:
password: Utilitza com a mínim 8 caràcters
phrase: Es combinarà independentment del format en el text o l'avís de contingut d'un toot
scopes: A quines API es permetrà l'accés a l'aplicació. Si selecciones un àmbit d'alt nivell, no cal que seleccionis un d'individual.
+ setting_aggregate_reblogs: No mostra els nous impulsos dels toots que ja s'han impulsat recentment (només afecta als impulsos nous rebuts)
setting_default_language: La llengua dels teus toots pot ser detectada automàticament però no sempre acuradament
setting_display_media_default: Amaga els multimèdia marcats com a sensibles
setting_display_media_hide_all: Sempre oculta tots els multimèdia
@@ -38,6 +47,18 @@ ca:
fields:
name: Etiqueta
value: Contingut
+ account_warning_preset:
+ text: Text predefinit
+ admin_account_action:
+ send_email_notification: Notifica l'usuari per correu electrònic
+ text: Avís personalitzat
+ type: Acció
+ types:
+ disable: Inhabilita
+ none: No fer res
+ silence: Silenci
+ suspend: Suspèn i elimina irreversiblement les dades del compte
+ warning_preset_id: Utilitza una configuració predefinida d'avís
defaults:
autofollow: Convida a seguir el teu compte
avatar: Avatar
@@ -48,6 +69,7 @@ ca:
context: Filtre els contextos
current_password: Contrasenya actual
data: Informació
+ discoverable: Mostra aquest compte en el directori
display_name: Nom visible
email: Adreça de correu electrònic
expires_in: Expira després
@@ -63,8 +85,9 @@ ca:
otp_attempt: Codi de dos factors
password: Contrasenya
phrase: Paraula clau o frase
+ setting_aggregate_reblogs: Agrupa impulsos en les línies de temps
setting_auto_play_gif: Reproducció automàtica de GIFs animats
- setting_boost_modal: Mostra la finestra de confirmació abans d'un retoot
+ setting_boost_modal: Mostra la finestra de confirmació abans d'impulsar
setting_default_language: Llengua de les publicacions
setting_default_privacy: Privacitat de les publicacions
setting_default_sensitive: Marca sempre els elements multimèdia com a sensibles
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index b200dfb48..2fb035556 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -2,12 +2,20 @@
co:
simple_form:
hints:
+ account_warning_preset:
+ text: Pudete utilizà a sintassa di i statuti, per esempiu l'URL, hashtag, minzione
+ admin_account_action:
+ send_email_notification: L'utilizatore hà da riceve una spiegazione di cio chì hè accadutu à u so contu
+ text_html: In uzzione. Pudete utilizà a sintassa di i statuti. Pudete ancu aghjustà preselezzione d'avertimentu per piglià tempu
+ type_html: Sceglie chì fà cù %{acct}
+ warning_preset_id: In uzzione. Pudete sempre aghjustà un testu persunalizatu à a fine di a preselezzione
defaults:
autofollow: Quelli·e chì s'arregistranu cù l'invitazione saranu autumaticamente abbunati·e à voi
avatar: Furmatu PNG, GIF o JPG. %{size} o menu. Sarà ridottu à %{dimensions}px
bot: Stu contu hè autumatizatu è ùn hè forse micca survegliatu
context: Cuntestu·i induve u filtru deve esse applicatu
digest: Solu mandatu dopu à una longa perioda d’inattività, è solu s’elli ci sò novi missaghji diretti
+ discoverable_html: L'annuariu permette à a ghjente di truvà conti à partesi d'interessi è d'attività. Ci vole à avè almenu %{min_followers} abbunati
email: Avete da riceve un'e-mail di cunfirmazione
fields: Pudete avè fin’à 4 elementi mustrati cum’un tavulone nant’à u vostru prufile
header: Furmatu PNG, GIF o JPG. %{size} o menu. Sarà ridottu à %{dimensions}px
@@ -18,6 +26,7 @@ co:
password: Ci volenu almenu 8 caratteri
phrase: Sarà trovu senza primura di e maiuscule o di l'avertimenti
scopes: L'API à quelle l'applicazione averà accessu. S'è voi selezziunate un parametru d'altu livellu, un c'hè micca bisognu di selezziunà quell'individuali.
+ setting_aggregate_reblogs: Ùn mustrà micca e nove spartere per i statuti chì sò stati spartuti da pocu (tocca solu e spartere più ricente)
setting_default_language: A lingua di i vostri statuti pò esse induvinata autumaticamente, mà ùn marchja micca sempre bè
setting_display_media_default: Piattà i media marcati cum'è sensibili
setting_display_media_hide_all: Sempre piattà tutti i media
@@ -38,6 +47,18 @@ co:
fields:
name: Label
value: Cuntinutu
+ account_warning_preset:
+ text: Testu preselezziunatu
+ admin_account_action:
+ send_email_notification: Nutificà l'utilizatore cù un'e-mail
+ text: Avertimentu persunalizatu
+ type: Azzione
+ types:
+ disable: Disattivà
+ none: Ùn fà nunda
+ silence: Silenzà
+ suspend: Suspende è sguassà i dati di u contu di manera irreversibile
+ warning_preset_id: Utilizà un'avertimentu preselezziunatu
defaults:
autofollow: Invità à siguità u vostru contu
avatar: Ritrattu di prufile
@@ -48,6 +69,7 @@ co:
context: Cuntesti di u filtru
current_password: Chjave d’accessu attuale
data: Dati
+ discoverable: Arregistrà stu contu indè l'annuariu
display_name: Nome pubblicu
email: Indirizzu e-mail
expires_in: Spira dopu à
@@ -63,6 +85,7 @@ co:
otp_attempt: Codice d’identificazione à dui fattori
password: Chjave d’accessu
phrase: Parolla-chjave o frasa
+ setting_aggregate_reblogs: Gruppà e spartere indè e linee
setting_auto_play_gif: Lettura autumatica di i GIF animati
setting_boost_modal: Mustrà una cunfirmazione per sparte un statutu
setting_default_language: Lingua di pubblicazione
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index c2fd93ee1..0e255e4dc 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -2,15 +2,23 @@
cs:
simple_form:
hints:
+ account_warning_preset:
+ text: Můžete používat syntaxi tootů, jako například URL, hashtagy a zmínky
+ admin_account_action:
+ send_email_notification: Uživatel obdrží vysvětlení toho, co se stalo s jeho účtem
+ text_html: Volitelné. Můžete používat syntaxi tootů. Pro ušetření času si můžete přidat přednastavení pro varování
+ type_html: Vyberte, co chcete udělat s účtem %{acct}
+ warning_preset_id: Volitelné. Můžete stále vložit na konec přednastavení vlastní text
defaults:
autofollow: Lidé, kteří se zaregistrují přes pozvání, vás budou automaticky sledovat
- avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
bot: Tento účet provádí hlavně automatizované akce a nemusí být spravován
context: Jedno či více kontextů, ve kterých má být filtr uplatněn
digest: Odesíláno pouze po dlouhé době nečinnosti a pouze, pokud jste při své nepřítomnosti obdržel/a osobní zprávy
+ discoverable_html: Adresář dovoluje lidem najít účty podle zájmů a aktivity. Vyžaduje alespoň %{min_followers} sledovatelů
email: Bude vám poslán potvrzovací e-mail
fields: Na profilu můžete mít až 4 položky zobrazené jako tabulka
- header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšena na %{dimensions} px
+ header: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
inbox_url: Zkopírujte URL z hlavní stránky mostu, který chcete použít
irreversible: Filtrované tooty nenávratně zmizí, i pokud bude filtr později odstraněn
locale: Jazyk uživatelského rozhraní, e-mailů a oznámení push
@@ -18,6 +26,7 @@ cs:
password: Použijte alespoň 8 znaků
phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu
scopes: Které API bude aplikace povolena používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat po jednom.
+ setting_aggregate_reblogs: Nezobrazovat nové boosty pro tooty, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty)
setting_default_language: Jazyk vašich tootů může být detekován automaticky, není to však vždy přesné
setting_display_media_default: Skrývat média označená jako citlivá
setting_display_media_hide_all: Vždy skrývat všechna média
@@ -38,8 +47,20 @@ cs:
fields:
name: Označení
value: Obsah
+ account_warning_preset:
+ text: Text přednastavení
+ admin_account_action:
+ send_email_notification: Informovat uživatele e-mailem
+ text: Vlastní varování
+ type: Akce
+ types:
+ disable: Deaktivovat
+ none: Nic nedělat
+ silence: Utišit
+ suspend: Pozastavit a nenávratně smazat data účtu
+ warning_preset_id: Použít přednastavení pro varování
defaults:
- autofollow: Pozvěte ke sledování vašeho účtu
+ autofollow: Pozvat ke sledování vašeho účtu
avatar: Avatar
bot: Tohle je účet robota
chosen_languages: Filtrovat jazyky
@@ -48,6 +69,7 @@ cs:
context: Kontexty filtrů
current_password: Současné heslo
data: Data
+ discoverable: Zveřejnit tento účet v adresáři
display_name: Zobrazované jméno
email: E-mailová adresa
expires_in: Expirovat po
@@ -63,6 +85,7 @@ cs:
otp_attempt: Dvoufaktorový kód
password: Heslo
phrase: Klíčové slovo či fráze
+ setting_aggregate_reblogs: Seskupovat boosty v časových osách
setting_auto_play_gif: Automaticky přehrávat animace GIF
setting_boost_modal: Zobrazovat před boostnutím potvrzovací okno
setting_default_language: Jazyk příspěvků
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 1063466ca..f73dbac96 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -2,6 +2,8 @@
da:
simple_form:
hints:
+ admin_account_action:
+ type_html: Vælg hvad du vil gøre med %{acct}
defaults:
autofollow: Folk der har oprettet sig gennem invitationen vil automatisk følge dig
avatar: PNG, GIF eller JPG. Højest %{size}. Vil blive skaleret ned til %{dimensions}px
@@ -19,9 +21,12 @@ da:
phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut
scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående.
setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist
+ setting_display_media_default: Skjul medier markeret som følsomt
+ setting_display_media_hide_all: Skjul altid alle medier
setting_hide_network: Hvem du følger og hvem der følger dig vil ikke blive vist på din profil
setting_noindex: Påvirker din offentlige profil og status sider
setting_theme: Påvirker hvordan Mastodon ser ud når du er logget ind via en hvilken som helst enhed.
+ username: Dit brugernavn vil være unikt på %{domain}
whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet
imports:
data: CSV fil eksporteret fra en anden Mastodon instans
@@ -34,6 +39,11 @@ da:
fields:
name: Etiket
value: Indhold
+ admin_account_action:
+ type: Handling
+ types:
+ disable: Deaktiver
+ none: Gør intet
defaults:
autofollow: Inviter til at følge din konto
avatar: Profilbillede
@@ -65,6 +75,11 @@ da:
setting_default_privacy: Privatliv
setting_default_sensitive: Marker altid medier som værende følsomt
setting_delete_modal: Vis bekræftelses dialog før du sletter et trut
+ setting_display_media: Visning af medier
+ setting_display_media_default: Standard
+ setting_display_media_hide_all: Skjul alle
+ setting_display_media_show_all: Vis alle
+ setting_expand_spoilers: Udvid altid trut der er markeret med indholdsadvarsler
setting_hide_network: Skjul dit netværk
setting_noindex: Frameld dig søgemaskiners indeksering
setting_reduce_motion: Reducer animationers bevægelse
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 9c2defd9e..3958e315f 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -2,14 +2,22 @@
de:
simple_form:
hints:
+ account_warning_preset:
+ text: Du kannst Toot-Syntax benutzen, wie zum Beispiel URLs, Hashtags und Erwähnungen
+ admin_account_action:
+ send_email_notification: Der Benutzer erhält eine Erklärung, was mit seinem Account geschehen ist
+ text_html: Optional. Du kannst Toot-Syntax benutzen. Du kannst Warnungsvorlagen benutzen um Zeit zu sparen
+ type_html: Wähle aus, was du mit %{acct} machen möchtest
+ warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen
defaults:
- autofollow: Leute die sich über deine Einladung registrieren werden dir automatisch folgen
+ autofollow: Leute, die sich über deine Einladung registrieren, werden dir automatisch folgen
avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert
bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht
context: Ein oder mehrere Aspekte, wo der Filter greifen soll
digest: Wenn du lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen in deiner Abwesenheit zugeschickt
- email: Du wirst ein Bestätigungs-E-Mail erhalten
- fields: Du kannst bis zu 4 Elemente als Tabelle dargestellt auf deinem Profil anzeigen lassen
+ discoverable_html: Das Verzeichnis lässt dich basierend auf Interessen und Aktivitäten neue Benutzerkonten finden. Dies benötigt mindestens %{min_followers} Follower
+ email: Du wirst eine Bestätigungs-E-Mail erhalten
+ fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden
header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert
inbox_url: Kopiere die URL von der Startseite des gewünschten Relays
irreversible: Gefilterte Beiträge werden unwiderruflich gefiltert, selbst wenn der Filter später entfernt wurde
@@ -18,15 +26,16 @@ de:
password: Verwende mindestens 8 Zeichen
phrase: Wird unabhängig vom umgebenen Text oder Inhaltswarnung eines Beitrags verglichen
scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen.
+ setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge)
setting_default_language: Die Sprache der Beiträge kann automatisch erkannt werden, aber dies ist nicht immer genau
setting_display_media_default: Verstecke Medien, die als sensibel markiert sind
setting_display_media_hide_all: Alle Medien immer verstecken
setting_display_media_show_all: Medien, die als sensibel markiert sind, immer anzeigen
- setting_hide_network: Wem du folgst und wer dir folgt wird in deinem Profil nicht angezeigt
+ setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt
setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge
setting_theme: Wirkt sich darauf aus, wie Mastodon aussieht, egal auf welchem Gerät du eingeloggt bist.
username: Dein Benutzer:innen-Name wird auf %{domain} nur einmal vorkommen
- whole_word: Wenn das Schlüsselwort oder -phrase nur Buchstaben und Zahlen enthält, wird es nur angewendet werden, wenn es dem ganzen Wort entspricht
+ whole_word: Wenn das Schlagwort oder die Phrase nur Buchstaben und Zahlen enthält, wird es nur angewendet, wenn es dem ganzen Wort entspricht
imports:
data: CSV-Datei, die aus einer anderen Mastodon-Instanz exportiert wurde
sessions:
@@ -38,8 +47,20 @@ de:
fields:
name: Bezeichnung
value: Inhalt
+ account_warning_preset:
+ text: Vorlagentext
+ admin_account_action:
+ send_email_notification: Benachrichtige den Nutzer per E-Mail
+ text: Eigene Warnung
+ type: Aktion
+ types:
+ disable: Deaktivieren
+ none: Nichts tun
+ silence: Stummschalten
+ suspend: Deaktivieren und unwiderruflich Benutzerdaten löschen
+ warning_preset_id: Benutze eine Warnungsvorlage
defaults:
- autofollow: Einladen, um deinen Account zu folgen
+ autofollow: Einladen, um deinem Account zu folgen
avatar: Profilbild
bot: Dieser Benutzer ist ein Bot
chosen_languages: Sprachen filtern
@@ -48,13 +69,14 @@ de:
context: Aspekte filtern
current_password: Derzeitiges Passwort
data: Daten
+ discoverable: Dieses Benutzerkonto im Verzeichnis auflisten
display_name: Anzeigename
email: E-Mail-Adresse
expires_in: Läuft ab
fields: Profil-Metadaten
header: Kopfbild
inbox_url: Inbox-URL des Relays
- irreversible: Fallen lassen anstatt es zu verstecken
+ irreversible: Verwerfen statt verstecken
locale: Sprache der Benutzeroberfläche
locked: Gesperrtes Profil
max_uses: Maximale Verwendungen
@@ -63,32 +85,33 @@ de:
otp_attempt: Zwei-Faktor-Authentisierungs-Code
password: Passwort
phrase: Schlagwort oder Phrase
+ setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge in Zeitleisten
setting_auto_play_gif: Animierte GIFs automatisch abspielen
setting_boost_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag geteilt wird
setting_default_language: Beitragssprache
setting_default_privacy: Beitragssichtbarkeit
- setting_default_sensitive: Medien immer als heikel markieren
+ setting_default_sensitive: Medien immer als sensibel markieren
setting_delete_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag gelöscht wird
setting_display_media: Medien-Anzeige
setting_display_media_default: Standard
setting_display_media_hide_all: Alle verstecken
setting_display_media_show_all: Alle anzeigen
- setting_expand_spoilers: Toots mit Inhaltswarnungen immer ausklappen
+ setting_expand_spoilers: Beiträge mit Inhaltswarnungen immer ausklappen
setting_hide_network: Blende dein Netzwerk aus
setting_noindex: Suchmaschinen-Indexierung verhindern
setting_reduce_motion: Bewegung in Animationen verringern
setting_system_font_ui: Standardschriftart des Systems verwenden
setting_theme: Theme der Website
- setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemand entfolgt wird
+ setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemandem entfolgt wird
severity: Schweregrad
type: Importtyp
username: Profilname
- username_or_email: Profilname oder Email
+ username_or_email: Profilname oder E-Mail
whole_word: Ganzes Wort
interactions:
must_be_follower: Benachrichtigungen von Nicht-Folgenden blockieren
must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
- must_be_following_dm: Private Nachrichten von Profilen denen ich nicht folge blockieren
+ must_be_following_dm: Private Nachrichten von Profilen, denen ich nicht folge, blockieren
notification_emails:
digest: Schicke Übersichts-E-Mails
favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index a13b44237..fecddd11f 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -2,12 +2,20 @@
el:
simple_form:
hints:
+ account_warning_preset:
+ text: Μπορεις να χρησιμοποιήσεις συντακτικό ενός τουτ όπως διευθύνσεις URL, ταμπέλες και αναφορές
+ admin_account_action:
+ send_email_notification: Ο χρήστης θα λάβει μια εξήγηση του τι συνέβη με τον λογαριασμό του
+ text_html: Προαιρετικό. Μπορείς να χρησιμοποιήσεις συντακτικό ενός τουτ. Μπορείς να ορίσεις προκαθορισμένες προειδοποιήσεις για να γλυτώσεις χρόνο
+ type_html: Διάλεξε τι θα κανείς με τον %{acct}
+ warning_preset_id: Προαιρετικό. Μπορείς να προσθέσεις επιπλέον κείμενο μετά το προκαθορισμένο κείμενο
defaults:
autofollow: Όσοι εγγραφούν μέσω της πρόσκλησης θα σε ακολουθούν αυτόματα
avatar: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px
bot: Ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται
context: Ένα ή περισσότερα πλαίσια στα οποία μπορεί να εφαρμόζεται αυτό το φίλτρο
digest: Αποστέλλεται μόνο μετά από μακρά περίοδο αδράνειας και μόνο αν έχεις λάβει προσωπικά μηνύματα κατά την απουσία σου
+ discoverable_html: "Ο κατάλογος \nσου επιτρέπει να βρεις λογαριασμούς βάσει ενδιαφερόντων και δραστηριότητας. Απαιτεί τουλάχιστον %{min_followers} ακόλουθους"
email: Θα σου σταλεί email επιβεβαίωσης
fields: Μπορείς να έχεις έως 4 σημειώσεις σε μορφή πίνακα στο προφίλ σου
header: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px
@@ -18,6 +26,7 @@ el:
password: Χρησιμοποίησε τουλάχιστον 8 χαρακτήρες
phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ
scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα.
+ setting_aggregate_reblogs: Απόκρυψη των νέων προωθήσεωνγια τα τουτ που έχουν προωθηθεί πρόσφατα (επηρεάζει μόνο τις νέες προωθήσεις)
setting_default_language: Η γλώσσα των τουτ σου μπορεί να ανιχνευτεί αυτόματα αλλά δεν είναι πάντα ακριβές
setting_display_media_default: Απόκρυψη ευαίσθητων πολυμέσων
setting_display_media_hide_all: Μόνιμη απόκρυψη όλων των πολυμέσων
@@ -38,6 +47,18 @@ el:
fields:
name: Ταμπέλα
value: Περιεχόμενο
+ account_warning_preset:
+ text: Προκαθορισμένο κείμενο
+ admin_account_action:
+ send_email_notification: Ενημέρωση χρήστη μέσω email
+ text: Προσαρμοσμένη προειδοποίηση
+ type: Ενέργεια
+ types:
+ disable: Απενεργοποίηση
+ none: Καμία ενέργεια
+ silence: Αποσιώπηση
+ suspend: Αναστολή και αμετάκλητη διαγραφή στοιχείων λογαριασμού
+ warning_preset_id: Χρήση προκαθορισμένης προειδοποίησης
defaults:
autofollow: Προσκάλεσε για να ακολουθήσουν το λογαριασμό σου
avatar: Αβατάρ
@@ -48,6 +69,7 @@ el:
context: Πλαίσια φιλτραρίσματος
current_password: Τρέχον συνθηματικό
data: Δεδομένα
+ discoverable: Εμφάνιση αυτού του λογαριασμού στον κατάλογο
display_name: Όνομα εμφάνισης
email: Διεύθυνση email
expires_in: Λήξη μετά από
@@ -63,6 +85,7 @@ el:
otp_attempt: Κωδικός δυο παραγόντων
password: Συνθηματικό
phrase: Λέξη ή φράση κλειδί
+ setting_aggregate_reblogs: Ομαδοποίηση προωθήσεων στις ροές
setting_auto_play_gif: Αυτόματη αναπαραγωγή των GIF
setting_boost_modal: Εμφάνιση ερώτησης επιβεβαίωσης πριν την προώθηση
setting_default_language: Γλώσσα δημοσιεύσεων
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index d34ec79cc..4363c59e4 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -2,12 +2,20 @@
en:
simple_form:
hints:
+ account_warning_preset:
+ text: You can use toot syntax, such as URLs, hashtags and mentions
+ admin_account_action:
+ send_email_notification: The user will receive an explanation of what happened with their account
+ text_html: Optional. You can use toot syntax. You can add warning presets to save time
+ type_html: Choose what to do with %{acct}
+ warning_preset_id: Optional. You can still add custom text to end of the preset
defaults:
autofollow: People who sign up through the invite will automatically follow you
avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
bot: This account mainly performs automated actions and might not be monitored
context: One or multiple contexts where the filter should apply
digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence
+ discoverable_html: The directory lets people find accounts based on interests and activity. Requires at least %{min_followers} followers
email: You will be sent a confirmation e-mail
fields: You can have up to 4 items displayed as a table on your profile
header: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px
@@ -18,6 +26,7 @@ en:
password: Use at least 8 characters
phrase: Will be matched regardless of casing in text or content warning of a toot
scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
+ setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
setting_default_language: The language of your toots can be detected automatically, but it's not always accurate
setting_display_media_default: Hide media marked as sensitive
setting_display_media_hide_all: Always hide all media
@@ -38,6 +47,18 @@ en:
fields:
name: Label
value: Content
+ account_warning_preset:
+ text: Preset text
+ admin_account_action:
+ send_email_notification: Notify the user per e-mail
+ text: Custom warning
+ type: Action
+ types:
+ disable: Disable
+ none: Do nothing
+ silence: Silence
+ suspend: Suspend and irreversibly delete account data
+ warning_preset_id: Use a warning preset
defaults:
autofollow: Invite to follow your account
avatar: Avatar
@@ -48,6 +69,7 @@ en:
context: Filter contexts
current_password: Current password
data: Data
+ discoverable: List this account on the directory
display_name: Display name
email: E-mail address
expires_in: Expire after
@@ -63,6 +85,7 @@ en:
otp_attempt: Two-factor code
password: Password
phrase: Keyword or phrase
+ setting_aggregate_reblogs: Group boosts in timelines
setting_auto_play_gif: Auto-play animated GIFs
setting_boost_modal: Show confirmation dialog before boosting
setting_default_language: Posting language
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index e8ddc075e..b78d2dd81 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -8,17 +8,23 @@ eo:
bot: Tiu konto ĉefe faras aŭtomatajn agojn, kaj povas esti ne kontrolata
context: Unu ol pluraj kuntekstoj kie la filtrilo devus agi
digest: Sendita nur post longa tempo de neaktiveco, kaj nur se vi ricevis personan mesaĝon en via foresto
+ email: Vi ricevos konfirman retmesaĝon
fields: Vi povas havi ĝis 4 tabelajn elementojn en via profilo
header: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
inbox_url: Kopiu la URL de la ĉefpaĝo de la ripetilo, kiun vi volas uzi
irreversible: Elfiltritaj mesaĝoj malaperos por ĉiam, eĉ se la filtrilo estas poste forigita
locale: La lingvo de la uzant-interfaco, retmesaĝoj kaj puŝ-sciigoj
locked: Vi devos aprobi ĉiun peton de sekvado mane
+ password: Uzu almenaŭ 8 signojn
phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo
setting_default_language: La lingvo de viaj mesaĝoj povas esti aŭtomate detektitaj, sed tio ne ĉiam ĝustas
+ setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj
+ setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn
+ setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj
setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo
setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn
setting_theme: Influas kiel Mastodon aspektas post ensaluto de ajna aparato.
+ username: Via uzantnomo estos unika ĉe %{domain}
whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto
imports:
data: CSV-dosiero el alia nodo de Mastodon
@@ -62,6 +68,11 @@ eo:
setting_default_privacy: Mesaĝa videbleco
setting_default_sensitive: Ĉiam marki aŭdovidaĵojn tiklaj
setting_delete_modal: Montri fenestron por konfirmi antaŭ ol forigi mesaĝon
+ setting_display_media: Aŭdovidaĵa montrado
+ setting_display_media_default: Dekomenca
+ setting_display_media_hide_all: Kaŝi ĉiujn
+ setting_display_media_show_all: Montri ĉiujn
+ setting_expand_spoilers: Ĉiam grandigi mesaĝojn markitajn per avertoj pri enhavo
setting_hide_network: Kaŝi viajn sekvantojn kaj sekvatojn
setting_noindex: Ellistiĝi de retserĉila indeksado
setting_reduce_motion: Malrapidigi animaciojn
@@ -84,6 +95,7 @@ eo:
follow_request: Sendi retmesaĝon kiam iu petas sekvi vin
mention: Sendi retmesaĝon kiam iu mencias vin
reblog: Sendi retmesaĝon kiam iu diskonigas vian mesaĝon
+ report: Sendi retmesaĝon kiam nova signalo estas sendita
'no': Ne
required:
mark: "*"
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index b510370a3..0ffc22b53 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -2,28 +2,37 @@
eu:
simple_form:
hints:
+ account_warning_preset:
+ text: Toot sintaxia erabili dezakezu, URLak, traolak eta aipamenak
+ admin_account_action:
+ send_email_notification: Erabiltzaileak bere kontuarekin gertatutakoaren azalpen bat jasoko du
+ text_html: Aukerakoa. Toot sintaxia erabili dezakezu. Abisu aurre-ezarpenak gehitu ditzakezu denbora aurrezteko
+ type_html: Erabaki zer egin %{acct} kontuarekin
+ warning_preset_id: Aukerakoa. Zure testua gehitu dezakezu aurre-ezarpenaren ostean
defaults:
- autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko zaituzte
+ autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko dizute
avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da
bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen
context: Iragazkia aplikatzeko testuinguru bat edo batzuk
digest: Soilik jarduerarik gabeko epe luze bat eta gero, eta soilik ez zeudela mezu pertsonalen bat jaso baduzu
+ discoverable_html: Direktorioak Jendea interesen eta jardueraren arabera aurkitzea ahalbidetzen du. Gutxienez %{min_followers} jarraitzaile behar dira bertan agertzeko
email: Baieztapen e-mail bat bidaliko zaizu
fields: 4 elementu bistaratu ditzakezu taula batean zure profilean
header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da
inbox_url: Kopiatu erabili nahi duzun errelearen hasiera orriaren URLa
- irreversible: Iragazitako toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
+ irreversible: Iragazitako Toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza
locked: Jarraitzaileak eskuz onartu behar dituzu
password: Erabili 8 karaktere gutxienez
phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe
scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar.
- setting_default_language: Zure toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
+ setting_aggregate_reblogs: Ez erakutsi buktzada berriak berriki bultzada jaso duten tootentzat (berriki jasotako bultzadei eragiten die besterik ez)
+ setting_default_language: Zure Toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia
setting_display_media_hide_all: Ezkutatu multimedia guztia beti
setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia
setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
- setting_noindex: Zure profil publiko eta toot orrietan eragina du
+ setting_noindex: Zure profil publiko eta Toot-en orrietan eragina du
setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du.
username: Zure erabiltzaile-izena bakana izango da %{domain} domeinuan
whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko
@@ -38,6 +47,17 @@ eu:
fields:
name: Etiketa
value: Edukia
+ account_warning_preset:
+ text: Aurrez ezarritako testua
+ admin_account_action:
+ send_email_notification: Jakinarazi erabiltzaileari e-mail bidez
+ text: Abisu pertsonalizatua
+ type: Ekintza
+ types:
+ disable: Desaktibatu
+ none: Ez egin ezer
+ silence: Isiltarazi
+ warning_preset_id: Erabili aurre-ezarritako abisu bat
defaults:
autofollow: Gonbidatu zure kontua jarraitzera
avatar: Abatarra
@@ -48,6 +68,7 @@ eu:
context: Iragazkiaren testuinguruak
current_password: Oraingo pasahitza
data: Datuak
+ discoverable: Zerrendatu kontu hau direktorioan
display_name: Pantaila-izena
email: E-mail helbidea
expires_in: Iraungitzea
@@ -63,6 +84,7 @@ eu:
otp_attempt: Bi faktoreetako kodea
password: Pasahitza
phrase: Hitz edo esaldi gakoa
+ setting_aggregate_reblogs: Taldekatu bultzadak denbora-lerroetan
setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki
setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik
setting_default_language: Argitalpenen hizkuntza
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 2f9c80dbe..2eeacade6 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -82,7 +82,7 @@ fa:
setting_unfollow_modal: نمایش پیغام تأیید پیش از لغو پیگیری دیگران
severity: شدت
type: نوع درونریزی
- username: نام کاربری (تنها حروف انگلیسی)
+ username: نام کاربری (لاتین)
username_or_email: نام کاربری یا ایمیل
whole_word: تطابق واژهٔ کامل
interactions:
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index 68f5dfede..730a69522 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -2,12 +2,20 @@
fr:
simple_form:
hints:
+ account_warning_preset:
+ text: Vous pouvez utiliser la syntaxe des pouets, comme les URLs, les hashtags et les mentions
+ admin_account_action:
+ send_email_notification: L'utilisateur recevra une explication de ce qu'il s'est passé avec son compte
+ text_html: Optionnel. Vous pouvez utilisez la syntaxe des pouets. Vous pouvez ajouter des présélections d'attention pour économiser du temps
+ type_html: Choisir que faire avec %{acct}
+ warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection
defaults:
autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement
avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé
context: Un ou plusieurs contextes où le filtre devrait s’appliquer
digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence
+ discoverable_html: L'annuaire permet aux gens de trouver des comptes en se basant sur les intérêts et les activités. Nécessite au moins %{min_followers} abonnés
email: Vous recevrez un courriel de confirmation
fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
@@ -18,6 +26,7 @@ fr:
password: Utilisez au moins 8 caractères
phrase: Sera trouvé sans que la case ou l’avertissement de contenu du pouet soit pris en compte
scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n’avez pas besoin de sélectionner les individuels.
+ setting_aggregate_reblogs: Ne pas afficher de nouveaux repartagés pour les pouets qui ont été récemment repartagés (n'affecte que les repartagés nouvellement reçus)
setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n’est pas toujours pertinent
setting_display_media_default: Masquer les supports marqués comme sensibles
setting_display_media_hide_all: Toujours masquer tous les médias
@@ -38,6 +47,18 @@ fr:
fields:
name: Étiquette
value: Contenu
+ account_warning_preset:
+ text: Texte de présélection
+ admin_account_action:
+ send_email_notification: Notifier l'utilisateur par courriel
+ text: Attention personnalisée
+ type: Action
+ types:
+ disable: Désactiver
+ none: Ne rien faire
+ silence: Silence
+ suspend: Suspendre et effacer les données du compte de manière irréversible
+ warning_preset_id: Utiliser un modèle d'avertissement
defaults:
autofollow: Invitation à suivre votre compte
avatar: Image de profil
@@ -48,6 +69,7 @@ fr:
context: Contextes du filtre
current_password: Mot de passe actuel
data: Données
+ discoverable: Inscrire ce compte dans l'annuaire
display_name: Nom public
email: Adresse courriel
expires_in: Expire après
@@ -63,6 +85,7 @@ fr:
otp_attempt: Code d’identification à deux facteurs
password: Mot de passe
phrase: Mot-clé ou phrase
+ setting_aggregate_reblogs: Repartagés en groupe dans la ligne de temps
setting_auto_play_gif: Lire automatiquement les GIFs animés
setting_boost_modal: Afficher une fenêtre de confirmation avant de partager
setting_default_language: Langue de publication
@@ -73,7 +96,7 @@ fr:
setting_display_media_default: Défaut
setting_display_media_hide_all: Masquer tout
setting_display_media_show_all: Montrer tout
- setting_expand_spoilers: Toujours développer les pouëts marqués d’un avertissement de contenu
+ setting_expand_spoilers: Toujours développer les pouets marqués d’un avertissement de contenu
setting_hide_network: Cacher votre réseau
setting_noindex: Demander aux moteurs de recherche de ne pas indexer vos informations personnelles
setting_reduce_motion: Réduire la vitesse des animations
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 04a0fffa3..d5e0ef574 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -2,12 +2,20 @@
gl:
simple_form:
hints:
+ account_warning_preset:
+ text: Vostede pode utilizar dar formato ao toot, como URLs, etiquetas e mencións
+ admin_account_action:
+ send_email_notification: A usuaria recibirá unha explicación sobre o que lle aconteceu a súa conta
+ text_html: Optativo. Pode utilizar formato no toot. Pode engadir avisos preestablecidos para aforrar tempo
+ type_html: Escolla que facer con %{acct}
+ warning_preset_id: Optativo. Poderá engadir texto personalizado ao final do preestablecido
defaults:
autofollow: As persoas que se conectaron a través de un convite seguirana automáticamente a vostede
avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
bot: Esta conta realiza principalmente accións automatizadas e podería non estar monitorizada
context: Un ou varios contextos onde se debería aplicar o filtro
- digest: Enviar só tras un longo período de inactividade e só si recibeu algunha mensaxe personal na súa ausencia
+ digest: Enviar só tras un longo período de inactividade e só si recibeu algunha mensaxe persoal na súa ausencia
+ discoverable_html: O directorio permite atopar contas en función de intereses e actividade. Require ter ao menos %{min_followers} seguidoras
email: Enviaráselle un correo-e de confirmación
fields: Pode ter ate 4 elementos no seu perfil mostrados como unha táboa
header: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px
@@ -18,6 +26,7 @@ gl:
password: Utilice 8 caracteres ao menos
phrase: Concordará independentemente das maiúsculas ou avisos de contido no toot
scopes: A que APIs terá acceso a aplicación. Si selecciona un ámbito de alto nivel, non precisa seleccionar elementos individuais.
+ setting_aggregate_reblogs: Non mostrar novas promocións de toots que foron promocionados recentemente (só afecta a promocións recén recibidas)
setting_default_language: Pódese detectar automáticamente o idioma dos seus toots, mais non sempre é preciso
setting_display_media_default: Ocultar medios marcados como sensibles
setting_display_media_hide_all: Ocultar sempre os medios
@@ -26,7 +35,7 @@ gl:
setting_noindex: Afecta ao seu perfil público e páxinas de estado
setting_theme: Afecta ao aspecto de Mastodon en calquer dispositivo cando está conectada.
username: O seu nome de usuaria será único en %{domain}
- whole_word: Si a chave ou frase de paso é só alfanumérica, só se aplicará si concorda a palabra completa
+ whole_word: Se a chave ou frase de paso é só alfanumérica, só se aplicará se concorda a palabra completa
imports:
data: Ficheiro CSV exportado desde outra instancia Mastodon
sessions:
@@ -38,6 +47,18 @@ gl:
fields:
name: Etiqueta
value: Contido
+ account_warning_preset:
+ text: Texto preestablecido
+ admin_account_action:
+ send_email_notification: Notificar a usuaria por correo-e
+ text: Aviso personalizado
+ type: Acción
+ types:
+ disable: Desactivar
+ none: Non facer nada
+ silence: Acalar
+ suspend: Suspender e eliminar irreversiblemente datos da conta
+ warning_preset_id: Utilizar un aviso preestablecido
defaults:
autofollow: Convide a seguir a súa conta
avatar: Avatar
@@ -48,6 +69,7 @@ gl:
context: Contextos do filtro
current_password: Contrasinal actual
data: Datos
+ discoverable: Incluír esta conta no directorio
display_name: Nome mostrado
email: enderezo correo electrónico
expires_in: Caducidade despois de
@@ -63,6 +85,7 @@ gl:
otp_attempt: Código de Doble-Factor
password: Contrasinal
phrase: Palabra chave ou frase
+ setting_aggregate_reblogs: Agrupar promocións nas liñas temporais
setting_auto_play_gif: Reprodución automática de GIFs animados
setting_boost_modal: Pedir confirmación antes de promocionar
setting_default_language: Idioma de publicación
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 53ccb069e..dd43898d2 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -2,12 +2,20 @@
it:
simple_form:
hints:
+ account_warning_preset:
+ text: Puoi usare la sintassi dei toot, come URL, hashtag e menzioni
+ admin_account_action:
+ send_email_notification: L'utente riceverà una spiegazione di ciò che è successo con suo account
+ text_html: Opzionale. Puoi usare la sintassi dei toot. Puoi aggiungere avvisi preimpostati per risparmiare tempo
+ type_html: Decidi cosa fare con %{acct}
+ warning_preset_id: Opzionale. Puoi aggiungere un testo personalizzato alla fine di quello preimpostato
defaults:
autofollow: Le persone che si iscrivono attraverso l'invito ti seguiranno automaticamente
avatar: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
bot: Questo account esegue principalmente operazioni automatiche e potrebbe non essere tenuto sotto controllo da una persona
context: Uno o più contesti nei quali il filtro dovrebbe essere applicato
digest: Inviata solo dopo un lungo periodo di inattività e solo se hai ricevuto qualche messaggio personale in tua assenza
+ discoverable_html: La directory permette alle persone di trovare account in base a determinati interessi o attività. Richiede almeno %{min_followers} seguaci
email: Ti manderemo una email di conferma
fields: Puoi avere fino a 4 voci visualizzate come una tabella sul tuo profilo
header: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
@@ -18,6 +26,7 @@ it:
password: Usa almeno 8 caratteri
phrase: Il confronto sarà eseguito ignorando minuscole/maiuscole e i content warning
scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole.
+ setting_aggregate_reblogs: Non mostrare nuove condivisioni per toot che sono stati condivisi di recente (ha effetto solo sulle nuove condivisioni)
setting_default_language: La lingua dei tuoi toot può essere individuata automaticamente, ma il risultato non è sempre accurato
setting_display_media_default: Nascondi media segnati come sensibili
setting_display_media_hide_all: Nascondi sempre tutti i media
@@ -38,6 +47,18 @@ it:
fields:
name: Etichetta
value: Contenuto
+ account_warning_preset:
+ text: Testo preimpostato
+ admin_account_action:
+ send_email_notification: Informa l'utente via email
+ text: Avviso personalizzato
+ type: Azione
+ types:
+ disable: Disabilita
+ none: Non fare nulla
+ silence: Silenzia
+ suspend: Sospendi e cancella i dati dell'account in modo irreversibile
+ warning_preset_id: Usa un avviso preimpostato
defaults:
autofollow: Invita a seguire il tuo account
avatar: Avatar
@@ -48,6 +69,7 @@ it:
context: Contesti del filtro
current_password: Password corrente
data: Data
+ discoverable: Inserisci questo account nella directory
display_name: Nome visualizzato
email: Indirizzo email
expires_in: Scade dopo
@@ -63,6 +85,7 @@ it:
otp_attempt: Codice due-fattori
password: Password
phrase: Parola chiave o frase
+ setting_aggregate_reblogs: Raggruppa condivisioni in timeline
setting_auto_play_gif: Play automatico GIF animate
setting_boost_modal: Mostra dialogo di conferma prima del boost
setting_default_language: Lingua dei post
@@ -75,9 +98,9 @@ it:
setting_display_media_show_all: Mostra tutti
setting_expand_spoilers: Espandi sempre toot con content warning
setting_hide_network: Nascondi la tua rete
- setting_noindex: Non indicizzare dai motori di ricerca
+ setting_noindex: Non farti indicizzare dai motori di ricerca
setting_reduce_motion: Riduci movimento nelle animazioni
- setting_system_font_ui: Usa il carattere di default del sistema
+ setting_system_font_ui: Usa il carattere predefinito del sistema
setting_theme: Tema sito
setting_unfollow_modal: Mostra dialogo di conferma prima di smettere di seguire qualcuno
severity: Severità
@@ -86,7 +109,7 @@ it:
username_or_email: Nome utente o email
whole_word: Parola intera
interactions:
- must_be_follower: Blocca notifiche dai non follower
+ must_be_follower: Blocca notifiche da chi non ti segue
must_be_following: Blocca notifiche dalle persone che non segui
must_be_following_dm: Blocca i messaggi diretti dalle persone che non segui
notification_emails:
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index c8d0a5a17..f9beedb7e 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -2,12 +2,20 @@
ja:
simple_form:
hints:
+ account_warning_preset:
+ text: URL、ハッシュタグ、メンションなど、投稿に用いる構文が使用できます
+ admin_account_action:
+ send_email_notification: ユーザーは自分のアカウントに何が起こったのか説明を受け取ります
+ text_html: オプションです。投稿に用いる構文を使うことができます。簡略化のためプリセット警告文を追加することができます
+ type_html: "%{acct}さんに対し、何を行うか選択してください"
+ warning_preset_id: オプションです。プリセット警告文の末尾に任意の文字列を追加することができます
defaults:
autofollow: 招待から登録した人が自動的にあなたをフォローするようになります
avatar: "%{size}までのPNG、GIF、JPGが利用可能です。%{dimensions}pxまで縮小されます"
bot: このアカウントは主に自動で動作し、人が見ていない可能性があります
context: フィルターを適用する対象 (複数選択可)
digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます
+ discoverable_html: ディレクトリ は興味や活動をもとにアカウントを見つけることを可能にします。 掲載には %{min_followers} 人以上のフォロワーが必要です
email: 確認のメールが送信されます
fields: プロフィールに表として4つまでの項目を表示することができます
header: "%{size}までのPNG、GIF、JPGが利用可能です。 %{dimensions}pxまで縮小されます"
@@ -18,6 +26,7 @@ ja:
password: 少なくとも8文字は入力してください
phrase: トゥートの大文字小文字や閲覧注意に関係なく一致
scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。
+ setting_aggregate_reblogs: 最近ブーストされたトゥートが新たにブーストされても表示しません (設定後受信したものにのみ影響)
setting_default_language: トゥートの言語は自動的に検出されますが、必ずしも正確とは限りません
setting_display_media_default: 閲覧注意としてマークされたメディアは隠す
setting_display_media_hide_all: 全てのメディアを常に隠す
@@ -38,6 +47,18 @@ ja:
fields:
name: ラベル
value: 内容
+ account_warning_preset:
+ text: プリセット警告文
+ admin_account_action:
+ send_email_notification: メールでユーザーに通知
+ text: カスタム警告文
+ type: アクション
+ types:
+ disable: 無効化
+ none: 何もしない
+ silence: サイレンス
+ suspend: 停止しアカウントのデータを恒久的に削除する
+ warning_preset_id: プリセット警告文を使用
defaults:
autofollow: 招待から参加後、あなたをフォロー
avatar: アイコン
@@ -48,6 +69,7 @@ ja:
context: 除外対象
current_password: 現在のパスワード
data: データ
+ discoverable: ディレクトリに掲載する
display_name: 表示名
email: メールアドレス
expires_in: 有効期限
@@ -63,6 +85,7 @@ ja:
otp_attempt: 二段階認証コード
password: パスワード
phrase: キーワードまたはフレーズ
+ setting_aggregate_reblogs: ブーストをまとめる
setting_auto_play_gif: アニメーションGIFを自動再生する
setting_boost_modal: ブーストする前に確認ダイアログを表示する
setting_default_language: 投稿する言語
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 86a459110..fd0a1940e 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -2,12 +2,20 @@
ko:
simple_form:
hints:
+ account_warning_preset:
+ text: URL, 해시태그, 멘션과 같은 툿 문법을 사용할 수 있습니다
+ admin_account_action:
+ send_email_notification: 유저는 어떤 일이 일어났는 지에 대한 설명을 받게 됩니다
+ text_html: 선택사항. 툿 문법을 사용할 수 있습니다. 경고 틀을 추가하여 시간을 절약할 수 있습니다
+ type_html: "%{acct}에 대해 취할 행동 선택"
+ warning_preset_id: 선택사항. 틀의 마지막에 임의의 텍스트를 추가 할 수 있습니다
defaults:
autofollow: 이 초대를 통해 가입하는 사람은 당신을 자동으로 팔로우 하게 됩니다
avatar: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 될 것임
bot: 사람들에게 계정이 사람이 아님을 알립니다
context: 필터를 적용 할 한 개 이상의 컨텍스트
digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기
+ discoverable_html: 디렉토리 는 사람들의 관심사와 활동에 관련 된 계정들을 찾을 수 있게 해 줍니다. 최소 %{min_followers}명의 팔로어가 필요합니다
email: 당신은 확인 메일을 받게 됩니다
fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다
header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 다운스케일 됨
@@ -18,6 +26,7 @@ ko:
password: 최소 8글자
phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다
scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
+ setting_aggregate_reblogs: 내가 부스트 했던 툿은 새로 부스트 되어도 보여주지 않습니다
setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다
setting_display_media_default: 민감함으로 설정 된 미디어 가리기
setting_display_media_hide_all: 항상 모든 미디어를 가리기
@@ -38,6 +47,18 @@ ko:
fields:
name: 라벨
value: 내용
+ account_warning_preset:
+ text: 프리셋 텍스트
+ admin_account_action:
+ send_email_notification: 이메일로 유저에게 알리기
+ text: 커스텀 경고
+ type: 조치
+ types:
+ disable: 비활성화
+ none: 아무 것도 하지 않기
+ silence: 침묵
+ suspend: 정지하고 되돌릴 수 없는 데이터 삭제
+ warning_preset_id: 경고 틀 사용하기
defaults:
autofollow: 초대를 통한 팔로우
avatar: 아바타
@@ -48,6 +69,7 @@ ko:
context: 필터 컨텍스트
current_password: 현재 비밀번호 입력
data: 데이터
+ discoverable: 이 계정을 디렉토리에서 찾을 수 있도록 합니다
display_name: 표시되는 이름
email: 이메일 주소
expires_in: 만료시각
@@ -63,6 +85,7 @@ ko:
otp_attempt: 2단계 인증 코드
password: 비밀번호
phrase: 키워드 또는 문장
+ setting_aggregate_reblogs: 타임라인의 부스트를 그룹화
setting_auto_play_gif: 애니메이션 GIF를 자동 재생
setting_boost_modal: 부스트 전 확인 창을 표시
setting_default_language: 게시물 언어
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 487f6320b..6eb784c30 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -2,12 +2,20 @@
nl:
simple_form:
hints:
+ account_warning_preset:
+ text: Je kunt voor toots specifieke tekst gebruiken, zoals URL's, hashtags en vermeldingen
+ admin_account_action:
+ send_email_notification: De gebruiker ontvangt een uitleg over wat er met hun account is gebeurd
+ text_html: Optioneel. Je kunt voor toots specifieke tekst gebruiken. Om tijd te besparen kun je voorinstellingen van waarschuwingen toevoegen
+ type_html: Kies wat er met %{acct} moet gebeuren
+ warning_preset_id: Optioneel. Je kunt nog steeds handmatig tekst toevoegen aan het eind van de voorinstelling
defaults:
autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch
avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
bot: Dit is een geautomatiseerd account en wordt mogelijk niet gemonitord
context: Een of meerdere locaties waar de filter actief moet zijn
digest: Wordt alleen na een lange periode van inactiviteit verzonden en alleen wanneer je tijdens jouw afwezigheid persoonlijke berichten hebt ontvangen
+ discoverable_html: In de gebruikersgids kunnen mensen andere accounts vinden aan de hand van interesses en activiteit. Dit vereist tenminste %{min_followers} volgers
email: Je krijgt een bevestigingsmail
fields: Je kan maximaal 4 items als een tabel op je profiel weergeven
header: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
@@ -18,6 +26,7 @@ nl:
password: Gebruik tenminste 8 tekens
phrase: Komt overeen ongeacht hoofd-/kleine letters of tekstwaarschuwingen
scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen.
+ setting_aggregate_reblogs: Geen nieuwe boosts tonen voor toots die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts)
setting_default_language: De taal van jouw toots kan automatisch worden gedetecteerd, maar het is niet altijd accuraat
setting_display_media_default: Als gevoelig gemarkeerde media verbergen
setting_display_media_hide_all: Media altijd verbergen
@@ -30,7 +39,7 @@ nl:
imports:
data: CSV-bestand dat op een andere Mastodonserver werd geëxporteerd
sessions:
- otp: Voer de tweestaps-aanmeldcode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcodes.
+ otp: 'Voer de tweestaps-aanmeldcode vanaf jouw mobiele telefoon in of gebruik een van jouw herstelcodes:'
user:
chosen_languages: Alleen toots in de aangevinkte talen worden op de openbare tijdlijnen getoond
labels:
@@ -38,6 +47,18 @@ nl:
fields:
name: Label
value: Inhoud
+ account_warning_preset:
+ text: Tekst van voorinstelling
+ admin_account_action:
+ send_email_notification: Meld dit per e-mail aan de gebruiker
+ text: Aangepaste waarschuwing
+ type: Actie
+ types:
+ disable: Uitschakelen
+ none: Niets doen
+ silence: Negeren
+ suspend: Opschorten en onomkeerbaar accountgegevens verwijderen
+ warning_preset_id: Gebruik een voorinstelling van een waarschuwing
defaults:
autofollow: Uitnodigen om jouw account te volgen
avatar: Avatar
@@ -48,6 +69,7 @@ nl:
context: Filterlocaties
current_password: Huidig wachtwoord
data: Gegevens
+ discoverable: Dit account in de gebruikersgids tonen
display_name: Weergavenaam
email: E-mailadres
expires_in: Vervalt na
@@ -63,6 +85,7 @@ nl:
otp_attempt: Tweestaps-aanmeldcode
password: Wachtwoord
phrase: Trefwoord of zinsdeel
+ setting_aggregate_reblogs: Boosts in tijdlijnen groeperen
setting_auto_play_gif: Speel geanimeerde GIF's automatisch af
setting_boost_modal: Vraag voor het boosten van een toot een bevestiging
setting_default_language: Taal van jouw toots
@@ -91,7 +114,7 @@ nl:
must_be_following_dm: Directe berichten van mensen die jij niet volgt blokkeren
notification_emails:
digest: Periodiek e-mails met een samenvatting versturen
- favourite: Een e-mail versturen wanneer iemand jouw toot als favoriet markeert
+ favourite: Een e-mail versturen wanneer iemand jouw toot aan hun favorieten heeft toegevoegd
follow: Een e-mail versturen wanneer iemand jou volgt
follow_request: Een e-mail versturen wanneer iemand jou wil volgen
mention: Een e-mail versturen wanneer iemand jou vermeld
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index bb9e3529c..6ded448e9 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -2,12 +2,20 @@
oc:
simple_form:
hints:
+ account_warning_preset:
+ text: Podètz utilizar la sintaxi dels tuts, coma las URL, las etiquetas e las mencions
+ admin_account_action:
+ send_email_notification: L’utilizaire recebrà una explicacion de çò qu’arribèt a son compte
+ text_html: Opcional. Podètz utilizar la sintaxi dels tuts. Podètz ajustar un avertiment personalizat per estalviar de temps
+ type_html: Causir de qué far amb %{acct}
+ warning_preset_id: Opcional. Podètz ajustar un tèxt personalizat a a fin de çò predefinit
defaults:
autofollow: Lo monde que se marcan gràcia a l’invitacion vos segràn automaticament
avatar: PNG, GIF o JPG. Maximum %{size}. Serà retalhat en %{dimensions}px
bot: Avisar lo monde qu’aqueste compte es pas d’una persona
context: Un o mai de contèxtes ont lo filtre deuriá s’aplicar
digest: Solament enviat aprèp un long moment d’inactivitat e solament s’avètz recebut de messatges personals pendent vòstra abséncia
+ discoverable_html: L’annuari permet al monde de trobar de comptes segon lor interèsses e activitats. Requerís almens %{min_followers} seguidors
email: Vos mandarem un corrièl de confirmacion
fields: Podètz far veire cap a 4 elements sus vòstre perfil
header: PNG, GIF o JPG. Maximum %{size}. Serà retalhada en %{dimensions}px
@@ -18,6 +26,7 @@ oc:
password: Utilizatz almens 8 caractèrs
phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible
scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses.
+ setting_aggregate_reblogs: Mostrar pas los nòus partatges que son estats partejats recentament (afecta pas que los nòus partatges recebuts)
setting_default_language: La lenga de vòstres tuts pòt èsser detectada automaticament, mas de còps es pas corrèctament determinada
setting_display_media_default: Rescondre los mèdias marcats coma sensibles
setting_display_media_hide_all: Totjorn rescondre los mèdias
@@ -38,6 +47,18 @@ oc:
fields:
name: Nom
value: Contengut
+ account_warning_preset:
+ text: Tèxt predefinit
+ admin_account_action:
+ send_email_notification: Avisar l’utilizaire per corrièl
+ text: Avertiment personalizat
+ type: Accions
+ types:
+ disable: Desactivar
+ none: Far pas res
+ silence: Metre en silence
+ suspend: Suspendre e escafar per de bon las donadas del compte
+ warning_preset_id: Utilizar un avertiment predefinit
defaults:
autofollow: Convidar a sègre vòstre compte
avatar: Avatar
@@ -48,6 +69,7 @@ oc:
context: Contèxte del filtre
current_password: Senhal actual
data: Donadas
+ discoverable: Far aparéisser aqueste compte a l’annuari
display_name: Escais
email: Corrièl
expires_in: Expira aprèp
@@ -63,8 +85,9 @@ oc:
otp_attempt: Còdi Two-factor
password: Senhal
phrase: Senhal o frasa
+ setting_aggregate_reblogs: Agropar los partatges dins lo flux d’actualitat
setting_auto_play_gif: Lectura automatica dels GIFS animats
- setting_boost_modal: Afichar una fenèstra de confirmacion abans de partejar un estatut
+ setting_boost_modal: Mostrar una fenèstra de confirmacion abans de partejar un estatut
setting_default_language: Lenga de publicacion
setting_default_privacy: Confidencialitat dels tuts
setting_default_sensitive: Totjorn marcar los mèdias coma sensibles
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 8febad488..bbc55e8a9 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -2,24 +2,39 @@
pl:
simple_form:
hints:
+ account_warning_preset:
+ text: Możesz korzystać ze składni której używasz we wpisach, takiej jak adresy URL, hashtagi i wspomnienia
+ admin_account_action:
+ send_email_notification: Użytkownik otrzyma informację, co stało się z jego kontem
+ text_html: Możesz używać składni której używasz we wpisach. Możesz dodać szablon ostrzeżenia aby zaoszczędzić czas
+ type_html: Wybierz co chcesz zrobić z %{acct}
+ warning_preset_id: Nieobowiązkowe. Możesz dodać niestandardowy tekst do końcowki szablonu
defaults:
autofollow: Osoby, które zarejestrują się z Twojego zaproszenia automatycznie zaczną Cię śledzić
avatar: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
bot: To konto wykonuje głównie zautomatyzowane działania i może nie być monitorowane
context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany
digest: Wysyłane tylko po długiej nieaktywności, jeżeli w tym czasie otrzymaleś jakąś wiadomość bezpośrednią
+ discoverable_html: Katalog pozwala znaleźć konta na podstawie zainteresowań i aktywności. Profil musi śledzić przynajmniej %{min_followers} osób
+ email: Otrzymasz e-mail potwierdzający
fields: Możesz ustawić maksymalnie 4 niestandardowe pola wyświetlane jako tabela na Twoim profilu
header: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
inbox_url: Skopiuj adres ze strony głównej przekaźnika, którego chcesz użyć
irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty
locale: Język interfejsu, wiadomości e-mail i powiadomieniach push
locked: Musisz akceptować prośby o śledzenie
+ password: Użyj co najmniej 8 znaków
phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości
scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
+ setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić)
setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne
+ setting_display_media_default: Ukrywaj zawartość oznaczoną jako wrażliwa
+ setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną
+ setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną jako wrażliwą
setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne
setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
setting_theme: Zmienia wygląd Mastodona po zalogowaniu z dowolnego urządzenia.
+ username: Twoja nazwa użytkownika będzie niepowtarzalna na %{domain}
whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień
imports:
data: Plik CSV wyeksportowany z innej instancji Mastodona
@@ -32,6 +47,18 @@ pl:
fields:
name: Nazwa
value: Zawartość
+ account_warning_preset:
+ text: Tekst szablonu
+ admin_account_action:
+ send_email_notification: Powiadom użytkownika mailem
+ text: Niestandardowe ostrzeżenie
+ type: Działanie
+ types:
+ disable: Wyłącz
+ none: Nie rób niczego
+ silence: Wycisz
+ suspend: Zawieś i nieodwracalnie usuń dane konta
+ warning_preset_id: Użyj szablonu ostrzeżenia
defaults:
autofollow: Zapraszaj do śledzenia swojego konta
avatar: Awatar
@@ -42,6 +69,7 @@ pl:
context: Filtruj zawartość
current_password: Obecne hasło
data: Dane
+ discoverable: Wyświetlaj ten profil w katalogu
display_name: Widoczna nazwa
email: Adres e-mail
expires_in: Wygaśnie po
@@ -58,12 +86,18 @@ pl:
password: Hasło
phrase: Słowo kluczowe lub fraza
scopes: Do których API aplikacja będzie miała dostęp. Jeżeli wybierzesz zakres wyższego poziomu, nie musisz zaznaczać bardziej szczegółowych.
+ setting_aggregate_reblogs: Grupuj podbicia na osiach czasu
setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy
setting_boost_modal: Pytaj o potwierdzenie przed podbiciem
setting_default_language: Język wpisów
setting_default_privacy: Widoczność wpisów
setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu
+ setting_display_media: Wyświetlanie zawartości multimedialnej
+ setting_display_media_default: Domyślne
+ setting_display_media_hide_all: Ukryj wszystko
+ setting_display_media_show_all: Pokaż wszystko
+ setting_expand_spoilers: Zawsze rozwijaj wpisy oznaczone ostrzeżeniem o zawartości
setting_hide_network: Ukryj swoją sieć
setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
setting_reduce_motion: Ogranicz ruch w animacjach
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 71aff333e..664c07a46 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -2,12 +2,20 @@
pt-BR:
simple_form:
hints:
+ account_warning_preset:
+ text: Você pode usar a sintaxe de um toot, como URLs, hashtags e menções
+ admin_account_action:
+ send_email_notification: O usuário vai receber uma explicação do que aconteceu com a sua conta
+ text_html: Opcional. Você pode usar a sintaxe de toots. Você pode adicionar avisos pré-definidos para ganhar tempo.
+ type_html: Escolha o que fazer com %{acct}
+ warning_preset_id: Opcional. Você ainda pode adicionar texto customizado no fim do texto pré-definido
defaults:
autofollow: Pessoas que se cadastrarem através de seu convite te seguirão automaticamente
avatar: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px
bot: Essa conta executa principalmente ações automatizadas e pode não ser monitorada
context: Um ou mais contextos onde o filtro deve ser aplicado
digest: Enviado após um longo período de inatividade com um resumo das menções que você recebeu em sua ausência
+ discoverable_html: O diretório permite encontrar contas baseado em seus interesses e atividades. Requer pelo menos %{min_followers} seguidores
email: Você receberá um email de confirmação
fields: Você pode ter até 4 itens exibidos em forma de tabela no seu perfil
header: PNG, GIF or JPG. Arquivos de até %{size}. Eles serão diminuídos para %{dimensions}px
@@ -18,6 +26,7 @@ pt-BR:
password: Use pelo menos 8 caracteres
phrase: Vai coincidir, independente de maiúsculas ou minúsculas, no texto ou no aviso de conteúdo de um toot
scopes: Quais APIs a aplicação vai ter permissão de acessar. Se você selecionar um escopo de alto nível, você não precisa selecionar individualmente os outros.
+ setting_aggregate_reblogs: Não mostrar novos compartilhamentos para toots que foram compartilhados recentemente (afeta somente novos compartilhamentos recebidos)
setting_default_language: O idioma de seus toots pode ser detectado automaticamente, mas isso nem sempre é preciso
setting_display_media_default: Esconder mídia marcada como sensível
setting_display_media_hide_all: Sempre esconder todas as mídias
@@ -38,6 +47,18 @@ pt-BR:
fields:
name: Rótulo
value: Conteúdo
+ account_warning_preset:
+ text: Texto pré-definido
+ admin_account_action:
+ send_email_notification: Notificar o usuário por e-mail
+ text: Aviso customizado
+ type: Ação
+ types:
+ disable: Desabilitar
+ none: Não fazer nada
+ silence: Silenciar
+ suspend: Suspender e excluir irreversivelmente dados da conta
+ warning_preset_id: Usar um aviso pré-definido
defaults:
autofollow: Convite para seguir a sua conta
avatar: Avatar
@@ -48,6 +69,7 @@ pt-BR:
context: Contextos de filtro
current_password: Senha atual
data: Dados
+ discoverable: Listar essa conta no diretório
display_name: Nome de exibição
email: Endereço de e-mail
expires_in: Expira em
@@ -63,6 +85,7 @@ pt-BR:
otp_attempt: Código de autenticação em dois passos
password: Senha
phrase: Palavra-chave ou frase
+ setting_aggregate_reblogs: Agrupar compartilhamentos nas timelines
setting_auto_play_gif: Reproduzir GIFs automaticamente
setting_boost_modal: Mostrar diálogo de confirmação antes de compartilhar postagem
setting_default_language: Idioma das postagens
diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml
index fcccd1a10..757b87204 100644
--- a/config/locales/simple_form.ro.yml
+++ b/config/locales/simple_form.ro.yml
@@ -2,24 +2,39 @@
ro:
simple_form:
hints:
+ account_warning_preset:
+ text: Poți utiliza sintaxe precum URL, hastag sau menționări
+ admin_account_action:
+ send_email_notification: Utilizatorul va primi o explicație cu privire la ceea ce sa întâmplat cu contul lui
+ text_html: Opțional. Poți utiliza sintaxe. Poți adăuga avertismente predefinite pentru a salva timp
+ type_html: Alege ce se întâmplă cu %{acct}
+ warning_preset_id: Opțional. Poți adăuga text personalizat la sfârșitul presetului
defaults:
autofollow: Persoanele care se înregistrează datorită invitației tale te vor urmări automat
avatar: PNG, GIF sau JPG. Cel mult %{size}. Va fi redimensionată la %{dimensions}px
bot: Acest cont performează în cea mai mare parte acțiuni automate și nu poate fi monitorizat
context: Contextele în care filtrul trebuie aplicat
digest: Este trimis doar după o lungă perioadă de inactivitate și numai dacă primești mesaje personale în perioada de absență
+ discoverable_html: Directorul permite utilizatorilor să găsească conturi după interese și activități. Necesită minim %{min_followers} urmăritori
+ email: Vei primi un e-mail de confirmare
fields: Poti afișa pană la maxim 4 adrese sub formă de tabel pe pofilul tău
header: PNG, GIF sau JPG. Cel mult %{size}. Vor fi redimensionate la %{dimensions}px
inbox_url: Copiază adresa URL de pe prima pagină a reului pe care vrei să îl utilizezi
irreversible: Postările sortate vor dispărea ireversibil, chiar dacă filtrul este ulterior șters
locale: Limba interfaței de utilizator, e-mailurile si notificările push
locked: Necesită aprobare manuală a urmăritorilor
+ password: Utilizează cel puțin 8 caractere
phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări
scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia.
+ setting_aggregate_reblogs: Nu afișa redistribuirile noi pentru postările care au fost deja recent redistribuite (afectează doar noile redistribuiri primite)
setting_default_language: Limba postărilor tale poate fi detectată automat, dar nu este întotdeauna precisă
+ setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW)
+ setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media
+ setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil
setting_hide_network: Pe cine urmărești și cine te urmărește nu vor fi afișați pe profilul tău
setting_noindex: Afecteazâ profilul tău public și statusurile tale
setting_theme: Afecteazâ modul în care arată interfața pe toate dispozitivele pe care ești conectat.
+ username: Numele tău de utilizator va fi unic pe %{domain}
whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă
imports:
data: Fișierul CSV exportat de la o altă instanță
@@ -32,6 +47,18 @@ ro:
fields:
name: Etichetă
value: Conținut
+ account_warning_preset:
+ text: Text presetat
+ admin_account_action:
+ send_email_notification: Notificați utilizatorul prin e-mail
+ text: Avertisment personalizat
+ type: Acțiune
+ types:
+ disable: Dezactivează
+ none: Nu fă nimic
+ silence: Liniște
+ suspend: Suspendă și șterge ireversibil datele contului
+ warning_preset_id: Utilizează un avertisment predefinit
defaults:
autofollow: Invită să te urmărească
avatar: Fotografie de profil
@@ -42,6 +69,7 @@ ro:
context: Contextele filtrului
current_password: Parola actuală
data: Data
+ discoverable: Listează acest cont in director
display_name: Numele afișat
email: Adresa de e-mail
expires_in: Expiră după
@@ -63,6 +91,7 @@ ro:
setting_default_privacy: Cine vede postările tale
setting_default_sensitive: Întotdeauna marchează conținutul media ca sensibil
setting_delete_modal: Arată dialogul de confirmare înainte de a șterge o postare
+ setting_display_media_default: Standard
setting_hide_network: Ascunde rețeaua
setting_noindex: Nu permite motoarelor de căutare să indexeze rețeaua ta
setting_reduce_motion: Redu mișcarea în animații
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 3ff75c2f2..f2d26cf02 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -2,24 +2,39 @@
sk:
simple_form:
hints:
+ account_warning_preset:
+ text: Môžeš používať rovnakú syntaxiu ako v rámci príspevkov, čiže URL, haštagy, a spomenutia
+ admin_account_action:
+ send_email_notification: Užívateľ dostane vysvetlenie ohľadom toho, čo sa stalo s ich účtom
+ text_html: Voliteľné. Môžeš používať rovnakú syntaxiu ako v príspevkoch. Môžeš pridať varovné predlohy a ušetriť tak čas
+ type_html: Vyber si, čo urobiť s účtom %{acct}
+ warning_preset_id: Voliteľné. Stále môžeš vložiť vlastný text na samý koniec predlohy
defaults:
autofollow: Ľudia ktorí sa zaregistrujú prostredníctvom pozvánky, ťa budú inheď následovať
avatar: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
bot: Tento účet vykonáva hlavne automatizované akcie, a je pravdepodobne nespravovaný
context: Jedno, alebo viac kritérií, v ktorých má byť filtrovanie uplatnené
digest: Odoslané iba v prípade dlhodobej neprítomnosti, a len ak si obdŕžal/a nejaké osobné správy kým si bol/a preč
- fields: Môžeš mať 4 položky na svojom profile zobrazené vo forme tabuľky
- header: PNG, GIF alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
+ discoverable_html: Táto databáza umožňuje ľudom nájsť profily podľa záujmu a aktívnosti. Vyžaduje aby mali aspoň %{min_followers} sledovateľov
+ email: Bude ti odoslaný potvrdzujúci email
+ fields: Až štyri položky môžeš mať na svojom profile zobrazené vo forme tabuľky
+ header: PNG, GIF, alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
inbox_url: Skopíruj adresu z hlavnej stránky mostíka, ktorý chceš používať
irreversible: Vytriedené príspevky zmiznú nenávratne, aj keď triedenie neskôr zrušíš
- locale: Jazyk užívateľského rozhrania, emailových a nástenkových oboznámení
- locked: Vyžaduje manuálne schvalovať sledujúcich
+ locale: Jazyk užívateľského rozhrania, emailových, a nástenkových oboznámení
+ locked: Vyžaduje, aby si manuálne schvaľoval/a následovateľov
+ password: Zadaj aspoň osem znakov
phrase: Zhoda sa nájde nezávisle od toho, či je text napísaný, veľkými, alebo malými písmenami, či už v tele, alebo v hlavičke
scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom.
+ setting_aggregate_reblogs: Neukazuj nové vyzdvihnutia pre príspevky, ktoré už boli len nedávno povýšené (týka sa iba nanovo získaných vyzdvihnutí)
setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné
+ setting_display_media_default: Skryť médiá označené ako citlivé
+ setting_display_media_hide_all: Vždy ukryť všetky médiá
+ setting_display_media_show_all: Stále ukazuj médiá označené ako citlivé
setting_hide_network: Koho následuješ, a kto následuje teba nebude zobrazené na tvojom profile
setting_noindex: Ovplyvňuje verejný profil a stránky s príspevkami
setting_theme: Ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
+ username: Tvoja prezývka bude unikátna pre server %{domain}
whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom
imports:
data: CSV súbor vyexportovaný z inej Mastodon inštancie
@@ -32,6 +47,18 @@ sk:
fields:
name: Označenie
value: Obsah
+ account_warning_preset:
+ text: Text predlohy
+ admin_account_action:
+ send_email_notification: Oznám užívateľovi cez email
+ text: Špecifické varovanie
+ type: Úkon
+ types:
+ disable: Deaktivuj
+ none: Neurob nič
+ silence: Utíšenie
+ suspend: Vylúč a nenávratne vymaž dáta na účte
+ warning_preset_id: Použi varovnú predlohu
defaults:
autofollow: Pozvi k následovaniu tvojho profilu
avatar: Avatar
@@ -42,6 +69,7 @@ sk:
context: Triedenie kontextov
current_password: Súčasné heslo
data: Dáta
+ discoverable: Zaraď tento účet do databázy
display_name: Meno
email: Emailová adresa
expires_in: Expirovať po
@@ -57,12 +85,18 @@ sk:
otp_attempt: Dvoj-faktorový overovací (2FA) kód
password: Heslo
phrase: Kľúčové slovo, alebo fráza
- setting_auto_play_gif: Automaticky prehrávať animované GIFy
- setting_boost_modal: Zobrazovať potvrdzovacie okno pred re-toot
+ setting_aggregate_reblogs: Zoskupuj vyzdvihnutia v časovej osi
+ setting_auto_play_gif: Automaticky prehrávaj animované GIFy
+ setting_boost_modal: Zobrazuj potvrdzovacie okno pred povýšením
setting_default_language: Píšeš v jazyku
setting_default_privacy: Súkromie príspevkov
setting_default_sensitive: Označ všetky mediálne súbory ako chúlostivé
setting_delete_modal: Zobrazuj potvrdzovacie okno pred vymazaním toot-u
+ setting_display_media: Zobrazovanie médií
+ setting_display_media_default: Štandard
+ setting_display_media_hide_all: Skryť všetky
+ setting_display_media_show_all: Ukáž všetky
+ setting_expand_spoilers: Stále rozbaľ príspevky označené varovaním o obsahu
setting_hide_network: Ukri svoju sieť kontaktov
setting_noindex: Nezaraďuj príspevky do indexu pre vyhľadávče
setting_reduce_motion: Redukovať pohyb v animáciách
@@ -75,12 +109,12 @@ sk:
username_or_email: Prezívka, alebo email
whole_word: Celé slovo
interactions:
- must_be_follower: Blokovať oznámenia od užívateľov, ktorí ťa nesledujú
- must_be_following: Blokovať oboznámenia ohľadom ľudí ktorých nesleduješ
- must_be_following_dm: Blokovať súkromné správy od ľudí ktorých nesleduješ
+ must_be_follower: Blokuj oboznámenia ohľadom užívateľov, ktorí ťa nesledujú
+ must_be_following: Blokuj oboznámenia ohľadom ľudí ktorých nesleduješ
+ must_be_following_dm: Blokuj súkromné správy od ľudí ktorých nesleduješ
notification_emails:
- digest: Posielať súhrnné emaily
- favourite: Poslať email ak niekto označí váš príspevok ako obľúbený
+ digest: Posielaj súhrnné emaily
+ favourite: Poslať email ak si niekto obľúbi tvoj príspevok
follow: Poslať email, ak ťa niekto začne následovať
follow_request: Zaslať email ak ti niekto pošle žiadosť o sledovanie
mention: Poslať email ak ťa niekto spomenie v svojom príspevku
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 618446db1..890cbac41 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -13,5 +13,92 @@ sl:
header: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px
inbox_url: Kopirajte URL naslov s prve strani releja, ki ga želite uporabiti
irreversible: Filtrirani trobi bodo nepovratno izginili, tudi če je filter kasneje odstranjen
+ locale: Jezik uporabniškega vmesnika, e-poštnih sporočil in potisnih obvestil
+ locked: Zahteva, da ročno odobrite sledilce
+ password: Uporabite najmanj 8 znakov
+ phrase: Se bo ujemal, ne glede na začetnice v tekstu ali opozorilo o vsebini troba
+ scopes: Do katerih API-jev bo imel program dostop. Če izberete obseg najvišje ravni, vam ni treba izbrati posameznih.
+ setting_default_language: Jezik vaših trobov je lahko samodejno zaznan, vendar ni vedno pravilen
+ setting_display_media_default: Skrij medij, ki je označen kot občutljiv
+ setting_display_media_hide_all: Vedno skrij vse medije
+ setting_display_media_show_all: Vedno pokaži medij, ki je označen kot občutljiv
+ setting_hide_network: Kogar spremljate in kdo vas spremlja ne bo prikazano na vašem profilu
+ setting_noindex: Vpliva na vaš javni profil in na strani s stanjem
+ setting_theme: Vpliva na to, kako izgleda Mastodon, ko ste prijavljeni s katero koli napravo.
+ username: Vaše uporabniško ime bo edinstveno na %{domain}
+ whole_word: Ko je ključna beseda ali fraza samo alfanumerična, se bo uporabljala le, če se bo ujemala s celotno besedo
imports:
data: Izvožena CSV datoteka iz drugega Mastodon vozlišča
+ sessions:
+ otp: 'Vnesite dvomestno kodo, ki je ustvarjena z aplikacijo na telefonu, ali uporabite eno od vaših obnovitvenih kod:'
+ user:
+ chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazani samo trobi v izbranih jezikih
+ labels:
+ account:
+ fields:
+ name: Oznaka
+ value: Vsebina
+ defaults:
+ autofollow: Povabite, da sledi vašemu računu
+ avatar: Podoba
+ bot: To je račun robota
+ chosen_languages: Filtriraj jezike
+ confirm_new_password: Potrdite novo geslo
+ confirm_password: Potrdite geslo
+ context: Filtriraj vsebino
+ current_password: Trenutno geslo
+ data: Podatki
+ display_name: Prikazno ime
+ email: E-poštni naslov
+ expires_in: Preteče po
+ fields: Metapodatki profila
+ header: Glava
+ inbox_url: URL mape "Prejeto"
+ irreversible: Opusti namesto skrij
+ locale: Jezik vmesnika
+ locked: Zaklenjen račun
+ max_uses: Največje število uporabnikov
+ new_password: Novo geslo
+ note: Bio
+ otp_attempt: Dvofaktorska koda
+ password: Geslo
+ phrase: Ključna beseda ali fraza
+ setting_auto_play_gif: Samodejno predvajanje animiranih GIF-ov
+ setting_boost_modal: Pred sunkom pokaži potrditveno okno
+ setting_default_language: Jezik objavljanja
+ setting_default_privacy: Zasebnost objave
+ setting_default_sensitive: Vedno označi medije kot občutljive
+ setting_delete_modal: Pred brisanjem troba prikaži okno za pritrditev
+ setting_display_media: Prikaz medijev
+ setting_display_media_default: Privzeto
+ setting_display_media_hide_all: Skrij vse
+ setting_display_media_show_all: Prikaži vse
+ setting_expand_spoilers: Vedno razširi trobe, označene z opozorili o vsebini
+ setting_hide_network: Skrij svoje omrežje
+ setting_noindex: Odsotnost indeksiranja iskalnikov
+ setting_reduce_motion: Zmanjšanje premikanja v animacijah
+ setting_system_font_ui: Uporabi privzeto pisavo sistema
+ setting_theme: Tema strani
+ setting_unfollow_modal: Pokaži potrditveno okno, preden nekoga prenehamo slediti
+ severity: Strogost
+ type: Vrsta uvoza
+ username: Uporabniško ime
+ username_or_email: Uporabniško ime ali E-pošta
+ whole_word: Celotna beseda
+ interactions:
+ must_be_follower: Blokiraj obvestila nesledilcev
+ must_be_following: Blokiraj obvestila oseb, ki jim ne sledite
+ must_be_following_dm: Blokiraj neposredna sporočila oseb, ki jim ne sledite
+ notification_emails:
+ digest: Pošlji izvlečke e-pošt
+ favourite: Pošlji e-pošto, ko nekdo doda vaše stanje med priljubljene
+ follow: Pošlji e-pošto, ko vas nekdo sledi
+ follow_request: Pošlji e-pošto, ko vam nekdo želi slediti
+ mention: Pošlji e-pošto, ko vas nekdo omeni
+ reblog: Pošlji e-pošto, ko nekdo sune vaše stanje
+ report: Pošlji e-pošto, ko je oddano novo poročilo
+ 'no': Ne
+ required:
+ mark: "*"
+ text: zahtevano
+ 'yes': Da
diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml
index c6294d4ba..7e3c6685e 100644
--- a/config/locales/simple_form.sr.yml
+++ b/config/locales/simple_form.sr.yml
@@ -2,12 +2,21 @@
sr:
simple_form:
hints:
+ account_warning_preset:
+ text: Можете користити синтаксу труба, као што су нпр. УРЛ-ова, тарабе и помињања
+ admin_account_action:
+ send_email_notification: Корисник ће добити објашњење тога шта му се десило са налога
+ text_html: Опционално. Можете користити синтаксу труба. Можете додати упозоравајућа преподешавање да сачувате време
+ type_html: Изаберите шта да радите са %{acct}
+ warning_preset_id: Опционално. Можете и даље додати прилагођени текст на крај пресета
defaults:
autofollow: Особе које се пријаве кроз позивнице ће вас аутоматски запратити
avatar: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px
bot: Овај налог углавном врши аутоматизоване радње и можда се не надгледа
context: Један или више контекста у којима треба да се примени филтер
digest: Послато после дужег периода неактивности са прегледом свих битних ствари које сте добили док сте били одсутни
+ discoverable_html: Директоријум омогућава људима да пронађу налоге засноване на интересима и активности. Захтева бар %{min_followers} пратиоца
+ email: Биће вам послата е-пошта са потврдом
fields: Можете имати до 4 ставке приказане као табела на вашем профилу
header: PNG, GIF или JPG. Највише %{size}. Биће смањена на %{dimensions}px
inbox_url: Копирајте URL са насловне стране релеја који желите користити
@@ -17,10 +26,15 @@ sr:
password: Користите најмање 8 знакова
phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају трубе
scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне.
+ setting_aggregate_reblogs: Не показуј нова дељења за трубе које су недавно подељене (утиче само на недавно примљена дељења)
setting_default_language: Језик ваших труба може бити аутоматски откривен, али није увек прецизан
+ setting_display_media_default: Сакриј медије означене као осетљиве
+ setting_display_media_hide_all: Увек сакриј све медије
+ setting_display_media_show_all: Увек прикажи медије означене као осетљиве
setting_hide_network: Кога пратите и ко вас прати неће бити приказано на вашем профилу
setting_noindex: Утиче на Ваш јавни профил и статусне стране
setting_theme: Утиче како ће Мастодонт изгледати када сте пријављени са било ког уређаја.
+ username: Ваш надимак ће бити јединствен на %{domain}
whole_word: Када је кључна реч или фраза искључиво алфанумеричка, биће примењена само ако се подудара са целом речи
imports:
data: CSV фајл извезен са друге Мастодонт инстанце
@@ -33,6 +47,18 @@ sr:
fields:
name: Етикета
value: Садржај
+ account_warning_preset:
+ text: Текст пресета
+ admin_account_action:
+ send_email_notification: Обавести корисника преко е-поште
+ text: Прилагођено упозорење
+ type: Радња
+ types:
+ disable: Онемогући
+ none: Не ради ништа
+ silence: Утишај
+ suspend: Обуставите и неповратно избришите податке о налогу
+ warning_preset_id: Користи упозоравајући пресет
defaults:
autofollow: Позовите да прати ваш налог
avatar: Аватар
@@ -43,6 +69,7 @@ sr:
context: Филтрирај контексте
current_password: Тренутна лозинка
data: Подаци
+ discoverable: Наведите овај налог у фасцикли
display_name: Име за приказ
email: Адреса е-поште
expires_in: Истиче након
@@ -58,12 +85,18 @@ sr:
otp_attempt: Двофакторски код
password: Лозинка
phrase: Кључна реч или фраза
+ setting_aggregate_reblogs: Групиши дељења у временским линијама
setting_auto_play_gif: Аутоматски пуштај анимиране GIF-ове
setting_boost_modal: Прикажи дијалог за потврду пре давања подршке
setting_default_language: Језик објављивања
setting_default_privacy: Приватност објава
setting_default_sensitive: Увек означи мултимедију као осетљиву
setting_delete_modal: Прикажи дијалог за потврду пре брисања тута
+ setting_display_media: Приказ медија
+ setting_display_media_default: Подразумевано
+ setting_display_media_hide_all: Сакриј све
+ setting_display_media_show_all: Прикажи све
+ setting_expand_spoilers: Увек прошити трубе које су означене упозорењем садржаја
setting_hide_network: Сакриј своју мрежу
setting_noindex: Одјави се од индексирања search engine-а
setting_reduce_motion: Смањи покрете у анимацијама
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 2b928169a..d8a81bbbf 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -1,27 +1,27 @@
---
sk:
about:
- about_hashtag_html: Toto sú verejné toot príspevky otagované #%{hashtag}. Ak máš účet niekde vo fediverse, môžeš ich používať.
- about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch. Jej zrojový kód je otvorený a je decentralizovaná podobne ako email.
+ about_hashtag_html: Toto sú verejné príspevky otagované pod #%{hashtag}. Ak máš účet hocikde v rámci fediversa, môžeš ich využívať.
+ about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email.
about_this: O tejto instancii
administered_by: 'Správcom je:'
api: API
- apps: Mobilné aplikácie
- closed_registrations: Registrácie sú na tomto serveri momentálne uzatvorené. Avšak, môžeš nájsť nejaký iný Mastodon server kde si založ účet a získaj tak prístup do presne tej istej siete, odtiaľ.
+ apps: Aplikácie
+ closed_registrations: Registrácie sú na tomto serveri momentálne uzatvorené. Avšak, môžeš nájsť nejaký iný Mastodon server kde si založ účet a získaj tak prístup do presne tej istej siete odtiaľ.
contact: Kontakt
- contact_missing: Nezadané
- contact_unavailable: Neuvedené
+ contact_missing: Nezadaný
+ contact_unavailable: Neuvedený
documentation: Dokumentácia
extended_description_html: |
Žiadne zatiaľ nie sú
features: - humane_approach_body: Poučený z chýb iných sociálnych sietí, Mastodon sa snaží bojovať s nekalým používaním siete vytváraním etických možností. + humane_approach_body: Poučený z chýb iných sociálnych sietí, Mastodon sa snaží bojovať so zneužívaním siete voľbou etických návrhov. humane_approach_title: Ľudskejší prístup - not_a_product_body: Mastodon nie je komerčná sieť. Žiadne reklamy, žiadne dolovanie dát, žiadne múry. Žiadna centrálna autorita. - not_a_product_title: Si človek, nie produkt - real_conversation_body: S 500 znakmi a podporou pre varovania pri obrázkoch a videách sa môžeš vyjadriť tak ako budeš chcieť. - real_conversation_title: Vytvorený pre reálnu konverzáciu + not_a_product_body: Mastodon nie je komerčná sieť. Žiadne reklamy, žiadne dolovanie dát, žiadne múry. Nieje tu žiadna centrálna autorita. + not_a_product_title: Si človekom, nie produktom + real_conversation_body: K dispozícii s 500 znakmi a podporou pre varovania o obsahu a médiách sa môžeš vyjadriť tak ako budeš chcieť. + real_conversation_title: Vytvorený pre naozajstnú konverzáciu within_reach_body: Viacero aplikácií pre iOS, Android a iné platformy, ktoré ti vďaka jednoduchému API ekosystému dovoľujú byť online so svojimi priateľmi kdekoľvek. within_reach_title: Stále v dosahu generic_description: "%{domain} je jeden server v sieti" @@ -30,18 +30,29 @@ sk: other_instances: Zoznam ďalších inštancií privacy_policy: Ustanovenia o súkromí source_code: Zdrojový kód - status_count_after: statusy + status_count_after: + few: príspevkov + one: príspevok + other: príspevkov status_count_before: Ktorí napísali terms: Podmienky užívania - user_count_after: užívateľov + user_count_after: + few: užívatelia + one: užívateľ + other: užívatelia user_count_before: Domov pre what_is_mastodon: Čo je Mastodon? accounts: choices_html: "%{name}vé voľby:" - follow: Sledovať - followers: Sledovatelia + follow: Sleduj + followers: + few: Sledovatelia + one: Sledujúci + other: Sledovatelia following: Sledovaní - joined: Pridal/a sa %{date} + joined: Pridal/a sa v %{date} + last_active: naposledy aktívny + link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date} media: Médiá moved_html: "%{name} účet bol presunutý na %{new_profile_link}:" network_hidden: Táto informácia nieje k dispozícii @@ -50,7 +61,10 @@ sk: people_who_follow: Ľudia sledujúci %{name} pin_errors: following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť - posts: Príspevky + posts: + few: Príspevkov + one: Príspevok + other: Príspevkov posts_tab_heading: Príspevky posts_with_replies: Príspevky s odpoveďami reserved_username: Prihlasovacie meno je rezervované @@ -58,8 +72,11 @@ sk: admin: Administrátor bot: Automat moderator: Moderátor - unfollow: Prestať sledovať + unfollow: Prestaň sledovať admin: + account_actions: + action: Vykonaj + title: Vykonaj moderovací úkon voči %{acct} account_moderation_notes: create: Zanechaj poznámku created_msg: Poznámka moderátora bola úspešne vytvorená! @@ -72,13 +89,14 @@ sk: change_email: changed_msg: Email k tomuto účtu bol úspešne zmenený! current_email: Súčastný email - label: Zmeniť email + label: Zmeň email new_email: Nový email - submit: Zmeniť email + submit: Zmeň email title: Zmeň email pre %{username} confirm: Potvrdiť confirmed: Potvrdený confirming: Potvrdzujúci + deleted: Zmazané demote: Degradovať disable: Zablokovať disable_two_factor_authentication: Zakázať 2FA @@ -86,7 +104,7 @@ sk: display_name: Zobraziť meno domain: Doména edit: Uprav - email: Emailová adresa + email: Email email_status: Stav emailu enable: Povoliť enabled: Povolený @@ -94,8 +112,11 @@ sk: followers: Sledujúci followers_url: URL sledujúcich follows: Sledovania + header: Hlavička inbox_url: URL prijatých správ + invited_by: Pozvaný/á užívateľom ip: IP + joined: Pridal/a sa location: all: Všetko local: Miestne @@ -105,66 +126,69 @@ sk: media_attachments: Prílohy memorialize: Zmeniť na "Navždy budeme spomínať" moderation: + active: Aktívny/a all: Všetko silenced: Umlčané - suspended: Suspendované + suspended: Vylúčený/á title: Moderácia moderation_notes: Moderátorské poznámky most_recent_activity: Posledná aktivita most_recent_ip: Posledná IP + no_limits_imposed: Niesú stanovené žiadné obmedzenia not_subscribed: Nezaregistrované - order: - alphabetic: Abecedne - most_recent: Podľa času - title: Zoradiť outbox_url: URL poslaných - perform_full_suspension: Suspendovať + perform_full_suspension: Zablokovať profile_url: URL profilu promote: Povýšiť protocol: Protokol public: Verejná os push_subscription_expires: PuSH odoberanie expiruje - redownload: Obnoviť avatar + redownload: Obnov profil remove_avatar: Odstrániť avatár + remove_header: Odstráň hlavičku resend_confirmation: - already_confirmed: Tento používateľ už bol potvrdený - send: Znova odoslať potvrdzovací e-mail - success: Potvrdený e-mail bol úspešne odoslaný! - reset: Reset - reset_password: Obnoviť heslo + already_confirmed: Tento užívateľ už je potvrdený + send: Znovu odoslať potvrdzovací email + success: Potvrdzujúci email bol úspešne odoslaný! + reset: Resetuj + reset_password: Obnov heslo resubscribe: Znovu odoberať role: Oprávnenia roles: admin: Administrátor moderator: Moderátor staff: Člen - user: Používateľ + user: Užívateľ salmon_url: Salmon adresa search: Hľadať shared_inbox_url: URL zdieľanej schránky show: - created_reports: Reportované týmto používateľom - report: report - targeted_reports: Nahlásenia pre tento účet + created_reports: Vytvorené hlásenia + targeted_reports: Nahlásenia od ostatných silence: Stíšiť + silenced: Utíšení statuses: Príspevky subscribe: Odoberať + suspended: Zablokovaní title: Účty unconfirmed_email: Nepotvrdený email undo_silenced: Zrušiť stíšenie undo_suspension: Zrušiť suspendáciu - unsubscribe: Prestať odoberať - username: Používateľske meno + unsubscribe: Prestaň odoberať + username: Prezývka + warn: Varovať web: Web action_logs: actions: assigned_to_self_report: "%{name}pridelil/a hlásenie užívateľa %{target}sebe" change_email_user: "%{name} zmenil/a emailovú adresu užívateľa %{target}" confirm_user: "%{name} potvrdil e-mailovú adresu používateľa %{target}" + create_account_warning: "%{name} poslal/a varovanie užívateľovi %{target}" create_custom_emoji: "%{name} nahral nový emoji %{target}" create_domain_block: "%{name} zablokoval doménu %{target}" create_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam zakázaných" demote_user: "%{name} degradoval používateľa %{target}" + destroy_custom_emoji: "%{name} zničil/a %{target} emoji" destroy_domain_block: "%{name} povolil doménu %{target}" destroy_email_domain_block: "%{name} pridal e-mailovú doménu %{target} na zoznam povolených" destroy_status: "%{name} zmazal status %{target}" @@ -218,6 +242,7 @@ sk: config: Nastavenia feature_deletions: Vymazanie účtov feature_invites: Pozvánky + feature_profile_directory: Katalóg profilov feature_registrations: Registrácie feature_relay: Federovací mostík features: Vymoženosti @@ -235,7 +260,7 @@ sk: week_users_active: aktívni tento týždeň week_users_new: užívateľov počas tohto týždňa domain_blocks: - add_new: Pridať nový + add_new: Pridaj nové doménové blokovanie created_msg: Doména je v procese blokovania destroyed_msg: Blokovanie domény bolo zrušené domain: Doména @@ -250,39 +275,53 @@ sk: title: Nové blokovanie domény reject_media: Odmietať súbory s obrázkami alebo videami reject_media_hint: Zmaže lokálne uložené súbory médií a odmietne ich sťahovanie v budúcnosti. Irelevantné pre suspendáciu - severities: - noop: Žiadne - silence: Stíšiť - suspend: Suspendovať - severity: Závažnosť + reject_reports: Zamietni hlásenia + reject_reports_hint: Ignoruj všetky hlásenia prichádzajúce z tejto domény. Nevplýva na blokovania + rejecting_media: odmietanie médiálnych súborov + rejecting_reports: odmietané hlásenia + severity: + silence: utíšené + suspend: vylúčený show: affected_accounts: few: "%{count} účty v databáze ovplyvnených" - one: Jeden účet v databáze ovplyvnený - other: "%{count} účtov v databáze ovplyvnených" + one: Jeden účet v databáze bol ovplyvnený + other: "%{count} účtov v databáze bolo ovplyvnených" retroactive: - silence: Zrušiť stíšenie všetkých existujúcich účtov z tejto domény - suspend: Zrušiť suspendáciu všetkých existujúcich účtov z tejto domény - title: Zrušiť blokovanie domény pre %{domain} + silence: Zruš stíšenie všetkých existujúcich účtov z tejto domény + suspend: Zruš suspendáciu všetkých existujúcich účtov z tejto domény + title: Zruš blokovanie domény %{domain} undo: Vrátiť späť - title: Blokovanie domén - undo: Späť + undo: Odvolaj blokovanie domény email_domain_blocks: - add_new: Pridať nový + add_new: Pridaj nový created_msg: Emailová doména bola úspešne pridaná do zoznamu zakázaných delete: Zmazať destroyed_msg: Emailová doména bola úspešne vymazaná zo zoznamu zakázaných domain: Doména new: - create: Pridať doménu + create: Pridaj doménu title: Nový email na zablokovanie title: Blokované emailové adresy + followers: + back_to_account: Späť na účet + title: Následovatielia užívateľa %{acct} instances: - account_count: Známe účty - domain_name: Doména - reset: Resetovať - search: Hľadať - title: Známe instancie + delivery_available: Je v dosahu doručovania + known_accounts: + few: "%{count} známe účty" + one: "%{count} známy účet" + other: "%{count} známe účty" + moderation: + all: Všetky + limited: Obmedzené + title: Moderácia + title: Federácia + total_blocked_by_us: Nami blokované + total_followed_by_them: Nimi sledované + total_followed_by_us: Nami sledované + total_reported: Nahlásenia o nich + total_storage: Mediálne prílohy invites: deactivate_all: Pozastaviť všetky filter: @@ -293,8 +332,13 @@ sk: title: Pozvánky relays: add_new: Pridaj novú priechodnú oporu + delete: Vymaž description_html: "Federovací mostík je prechodný server ktorý obmieňa veľké množstvá verejných príspevkov medzi tými servermi ktoré na od neho odoberajú, aj doňho prispievajú. Môže to pomôcť malým a stredným instanciám objavovať federovaný obsah, čo inak vyžaduje aby miestni užívatelia ručne následovali iných ľudí zo vzdialených instancií." + disable: Pozastav + disabled: Zastavené + enable: Povoľ enable_hint: Ak povolíš, tvoj server bude odoberať všetky verejné príspevky z tohto mostu, a začne posielať verejné príspevky tvojho servera na tento most. + enabled: Povolené inbox_url: URL mostu pending: Čakám na povolenie od prechodného mostu save_and_enable: Uložiť a povoliť @@ -350,12 +394,18 @@ sk: hero: desc_html: Zobrazuje sa na hlavnej stránke. Doporučuje sa rozlišenie aspoň 600x100px Pokiaľ tu nieje nič dodané, bude nastavený základný orázok tohoto serveru title: Obrázok hrdinu + mascot: + desc_html: Zobrazované na viacerých stránkach. Odporúčaná veľkosť aspoň 293×205px. Pokiaľ nieje nahraté, bude zobrazený základný maskot + title: Obrázok maskota peers_api_enabled: desc_html: Domény na ktoré táto instancia už vo fediverse natrafila title: Zverejniť zoznam objavených instancií preview_sensitive_media: desc_html: Náhľad adresy z iných instancií, bude zobrazený aj vtedy, keď sú dané médiá označené ako senzitívne title: Ukazuj aj chúlostivé médiá v náhľadoch OpenGraph + profile_directory: + desc_html: Povoliť užívateľom aby boli nájdení + title: Zapni profilový katalóg registrations: closed_message: desc_html: Toto sa zobrazí na hlavnej stránke v prípade že sú registrácie uzavreté. Možno tu použiť aj HTML kód @@ -370,13 +420,13 @@ sk: desc_html: Povoliť každému aby si mohli vytvoriť účet title: Verejná registrácia show_known_fediverse_at_about_page: - desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť toot statusy z celého známeho fediversa. V opačnom prípade tam budú ukázané iba statusy z lokálnej osi. - title: Ukázať celé známe fediversum ako ukážku osi + desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi. + title: Ukáž celé známe fediverse na náhľade osi show_staff_badge: - desc_html: Zobraziť moderátorsku značku na užívateľovej stránke - title: Zobraziť značku moderátora + desc_html: Zobraz moderátorsky odznak na užívateľovom profile + title: Zobraz značku moderátora site_description: - desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Môžete použiť HTML kód, presnejšie< a>
a < em>
.
+ desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne < a >
, ale tiež <>
.
title: Popis instancie
site_description_extended:
desc_html: Toto je vhodné miesto pre vaše pravidlá, oboznámenia a iné veci, ktorými je vaša instancia špecifická. Je možné tu používať HTML kód
@@ -399,14 +449,14 @@ sk:
back_to_account: Späť na účet
batch:
delete: Vymazať
- nsfw_off: Obsah nieje chúlostivý
- nsfw_on: Označ obeah aka chúlostivý
+ nsfw_off: Označ ako nechúlostivé
+ nsfw_on: Označ ako chúlostivé
failed_to_execute: Nepodarilo sa vykonať
media:
title: Médiá
no_media: Žiadné médiá
no_status_selected: Žiadne príspevky neboli zmenené, keďže si žiadne nemal/a zvolené
- title: Statusy na účte
+ title: Príspevky na účte
with_media: S médiami
subscriptions:
callback_url: Zdrojová adresa URL
@@ -415,13 +465,21 @@ sk:
last_delivery: Posledné doručenie
title: WebSub
topic: Téma
- suspensions:
- bad_acct_msg: Hodnota pre potvrdenie sa nezhoduje. Si si istý/á že zamrazuješ ten správny účet?
- hint_html: 'Pre potvrdenie zamrazenia účtu, prosím napíš %{value} do následujúceho políčka:'
- proceed: Pokračuj
- title: Zamraziť %{acct}
- warning_html: 'Zamrazením tohto účtu budú dáta na tomto účte nenávratne zmazané, zahŕňajúc:'
+ tags:
+ accounts: Účty
+ hidden: Skryté
+ hide: Ukri od databázy
+ name: Haštag
+ title: Haštagy
+ unhide: Ukáž v databázi
+ visible: Viditeľné
title: Spravovanie
+ warning_presets:
+ add_new: Pridaj nové
+ delete: Vymaž
+ edit: Uprav
+ edit_preset: Uprav varovnú predlohu
+ title: Spravuj varovné predlohy
admin_mailer:
new_report:
body: "%{reporter} nahlásil/a %{target}"
@@ -495,12 +553,23 @@ sk:
bad_password_msg: Dobrý pokus, hakeri! Nesprávne heslo
confirm_password: Napíšte svoje terajšie heslo pre overenie vašej identity
description_html: Týmto natrvalo, nenavrátiteľne vymažeš obsah tvojho účtu, a deaktivuješ ho. Tvoja prezývka ale ostane rezervovaná ako prevencia pred budúcimi impersonáciami.
- proceed: Vymazať účet
- success_msg: Váš účet bol úspešne vymazaný
- warning_html: Iba vymazanie obsahu z tejto konkrétnej instancie je garantované. Obsah ktorý bol zdieľaný široko-ďaleko pravdepodobne zanechá nejaké stopy. Servery ktoré sú offline a tie ktoré ignorujú tvoje zmeny teda nezaktualizujú svoje databázy.
- warning_title: O dostupnosti distribuovaného obsahu
+ proceed: Vymaž účet
+ success_msg: Tvoj účet bol úspešne vymazaný
+ warning_html: Iba vymazanie obsahu z tejto konkrétnej instancie je zaručené. Obsah, ktorý bol zdieľaný široko-ďaleko pravdepodobne zanechá nejaké stopy. Servery ktoré sú offline a tie ktoré ignorujú tvoje zmeny teda nezaktualizujú svoje databázy.
+ warning_title: Dostupnosť rozšírovaného obsahu
+ directories:
+ directory: Katalóg profilov
+ enabled: Momentálne si uvedený/á na zozname profilov.
+ enabled_but_waiting: Vyjadril/a si záujem o uvedenie na zozname profilov, lenže ešte nemáš minimálny vyžadovaný počet následovateľov (%{min_followers}), aby si tam bol/a uveden/á.
+ explanation: Pátraj po užívateľoch podľa ich záujmov
+ explore_mastodon: Prebádaj %{title}
+ how_to_enable: Momentálne niesi zaradený/á do verejnej profilovej databázy. Prihlásiť sa môžeš nižšie. Použi haštagy vo svojom biografickom popise na profile, ak chceš byť uvedený/á aj pod konkrétnými haštagmi!
+ people:
+ few: "%{count} ľudia"
+ one: "%{count} človek"
+ other: "%{count} ľudia"
errors:
- '403': Nemáte dostatočné povolenie na zobrazenie tejto stránky.
+ '403': Nemáš povolenie na zobrazenie tejto stránky.
'404': Stránka ktorú si hľadal/a sa tu nenachádza.
'410': Stránka ktorú si tu hľadal/a už viac neexistuje.
'422':
@@ -521,7 +590,9 @@ sk:
size: Veľkosť
blocks: Blokujete
csv: CSV
+ domain_blocks: Blokované domény
follows: Následujete
+ lists: Zoznamy
mutes: Stíšil/a si
storage: Úložisko médií
filters:
@@ -559,14 +630,15 @@ sk:
resources: Podklady
generic:
changes_saved_msg: Zmeny boli úspešne uložené!
- save_changes: Uložiť zmeny
+ copy: Kopírovať
+ save_changes: Ulož zmeny
validation_errors:
few: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} chyby
- one: Niečo nieje úplne v poriadku! Prosím skontroluj chybu
- other: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetkých %{count} chýb
+ one: Niečo nieje úplne v poriadku! Prosím skontroluj danú chybu
+ other: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} nižšie uvedené pochybenia
imports:
- preface: Môžeš importovať dáta ktoré si exportoval/a z iného Mastodon serveru, ako sú napríklad zoznamy ľudí ktorých sleduješ, alebo blokuješ.
- success: Tvoje dáta boli nahraté úspešne, a budú teraz spracované v danom čase
+ preface: Môžeš nahrať dáta ktoré si exportoval/a z iného Mastodon serveru, ako sú napríklad zoznamy ľudí ktorých sleduješ, alebo blokuješ.
+ success: Tvoje dáta boli nahraté úspešne, a teraz budú spracované v danom čase
types:
blocking: Zoznam blokovaných
following: Zoznam sledovaných
@@ -673,13 +745,25 @@ sk:
no_account_html: Nemáš ešte účet? Môžeš sa zaregistrovať tu
proceed: Začni následovať
prompt: 'Budeš sledovať:'
+ reason_html: "Načo je tento krok potrebný? %{instance}
nemusí byť práve tým serverom na ktorom si zaregistrovaný/á, takže je ťa najprv potrebné presmerovať na tvoj domáci server."
remote_interaction:
- proceed: Pokračuj k interakcii
- prompt: 'Chceš narábať s týmto príspevkom:'
+ favourite:
+ proceed: Pokračuj k obľúbeniu
+ prompt: 'Chceš si obľúbiť tento príspevok:'
+ reblog:
+ proceed: Pokračuj k vyzdvihnutiu
+ prompt: 'Chceš vyzdvihnúť tento príspevok:'
+ reply:
+ proceed: Pokračuj odpovedaním
+ prompt: 'Chceš odpovedať na tento príspevok:'
remote_unfollow:
error: Chyba
title: Názov
unfollowed: Už nesleduješ
+ scheduled_statuses:
+ over_daily_limit: Prekročil/a si denný limit %{limit} predplánovaných príspevkov
+ over_total_limit: Prekročil/a si limit %{limit} predplánovaných príspevkov
+ too_soon: Dátum musí byť stanovený do budúcnosti
sessions:
activity: Najnovšia aktivita
browser: Prehliadač
@@ -692,21 +776,32 @@ sk:
firefox: Mozilla Firefox
generic: Neznámy prehliadač
ie: Internet Explorer
+ micro_messenger: MicroMessenger
+ nokia: Nokia Ovi Browser
+ opera: Opera
otter: Prehliadač Otter
+ phantom_js: PhantomJS
qq: QQ Prehliadač
safari: Apple Safari
+ uc_browser: UCBrowser
weibo: Sina/Tencent Weibo
current_session: Aktuálna sezóna
description: "%{browser} na %{platform}"
explanation: Tieto sú prehliadače ktoré sú teraz prihlásené na tvoj Mastodon účet.
ip: IP adresa
platforms:
+ adobe_air: Adobe Air
+ android: Android
+ blackberry: Blackberry
chrome_os: Google ChromeOS
+ firefox_os: Firefox OS
ios: Apple iOS
linux: GNU/Linux
mac: MacOSX
other: neznáma platforma
windows: Microsoft Windows
+ windows_mobile: Windows Mobile
+ windows_phone: Windows Phone
revoke: Zamietni
revoke_success: Sezóna úspešne zamietnutá
title: Sezóny
@@ -738,17 +833,21 @@ sk:
other: "%{count} videí"
boosted_from_html: Povýšené od %{acct_link}
content_warning: 'Varovanie o obsahu: %{warning}'
- disallowed_hashtags: 'obsahuje nepovolené haštagy: %{tags}'
- language_detection: Zisti jazyk automaticky
- open_in_web: Otvor v okne prehliadača
- over_character_limit: limit počtu %{max} znakov bol presiahnutý
+ disallowed_hashtags:
+ few: 'obsahoval nepovolené hashtagy: %{tags}'
+ one: 'obsahoval nepovolený hashtag: %{tags}'
+ other: 'obsahoval nepovolené hashtagy: %{tags}'
+ language_detection: Zisti automaticky
+ open_in_web: Otvor v okne na webe
+ over_character_limit: limit %{max} znakov bol presiahnutý
pin_errors:
- limit: Už ste si pripli ten najvyšší možný počet príspevkov
- ownership: Nemožno pripnúť príspevok od niekoho iného
+ limit: Už si si pripol ten najvyšší možný počet hlášok
+ ownership: Nieje možné pripnúť hlášku od niekoho iného
private: Neverejné príspevky nemôžu byť pripnuté
reblog: Pozdvihnutie sa nedá pripnúť
show_more: Ukáž viac
sign_in_to_participate: Prihlás sa pre zapojenie do diskusie
+ title: '%{name}: „%{quote}"'
visibilities:
private: Iba pre sledovateľov
private_long: Ukáž iba následovateľom
@@ -761,7 +860,26 @@ sk:
reblogged: vyzdvihnutý
sensitive_content: Senzitívny obsah
terms:
- title: Podmienky užívania, a pravidlá o súkromí pre %{instance}
+ body_html: |
+ rel="me"
. Na texte odkazu nezáleží. Tu je príklad:'
+ verification: Overenie
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 0e9d7d3aa..594c58acc 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -16,35 +16,59 @@ sl:
Razširjen opis še ni bil nastavljen.
features: + humane_approach_body: Na podlagi učenja od neuspehov drugih omrežij, želi Mastodon oblikovati etične načrte za boj proti zlorabi socialnih medijev. humane_approach_title: Bolj human pristop + not_a_product_body: Mastodon ni komercialno omrežje. Brez oglaševanja, brez podatkovnega rudarjenja, brez obzidanih vrtov. Ni osrednjega organa. not_a_product_title: Ti si oseba, ne izdelek + real_conversation_body: S 500 znaki, ki so vam na voljo, in podporo za zrnate vsebine ter opozorila pred mediji, se lahko izrazite tako, kot želite. real_conversation_title: Zgrajen za pravi pogovor + within_reach_body: Zahvaljujoč razvijalcem prijaznemu API ekosistemu, obstaja več aplikacija za iOS, Arduino in druge platforme, ki vam omogočajo, da sledite svojim prijateljem kjerkoli. within_reach_title: Vedno na dosegu roke generic_description: "%{domain} je en strežnik v omrežju" hosted_on: Mastodon gostuje na %{domain} learn_more: Spoznaj več other_instances: Seznam vozlišč + privacy_policy: Politika zasebnosti source_code: Izvorna koda - status_count_after: statusi + status_count_after: + few: stanja + one: stanje + other: stanja + two: stanja status_count_before: Kdo je avtor - user_count_after: uporabniki + terms: Pogoji storitve + user_count_after: + few: uporabniki + one: uporabnik + other: uporabniki + two: uporabniki user_count_before: Dom za what_is_mastodon: Kaj je Mastodon? accounts: + choices_html: "%{name} izbire:" follow: Sledi - followers: Sledilci + followers: + few: Sledilci + one: Sledilec + other: Sledilci + two: Sledilci following: Sledim + joined: Se je pridružil na %{date} + link_verified_on: Lastništvo te povezave je bilo preverjeno na %{date} media: Medij moved_html: "%{name} se je prestavil na %{new_profile_link}:" network_hidden: Te informacije niso na voljo nothing_here: Nič ni tukaj! people_followed_by: Ljudje, ki jim sledi %{name} people_who_follow: Ljudje, ki sledijo %{name} + pin_errors: + following: Verjetno že sledite osebi, ki jo želite potrditi posts: few: Trob one: Trob other: Trob two: Trob + posts_tab_heading: Trobi posts_with_replies: Tuti in odgovori reserved_username: Uporabniško ime je zasedeno roles: @@ -57,6 +81,7 @@ sl: create: Pusti sporočilo created_msg: Uspešno ustvarjena opomba moderiranja! delete: Izbriši + destroyed_msg: Moderirana opomba je uspešno uničena! accounts: are_you_sure: Ali si prepričan? avatar: Avatar @@ -71,9 +96,11 @@ sl: confirm: Potrdi confirmed: Potrjeno confirming: Potrjujem + demote: Ponižaj disable: Onemogoči disable_two_factor_authentication: Onemogoči 2FA disabled: Onemogočeno + display_name: Prikazno ime domain: Domena edit: Uredi email: E-pošta @@ -102,13 +129,7 @@ sl: moderation_notes: Opombe moderiranja most_recent_activity: Zadnja aktivnost most_recent_ip: Zadnji IP - order: - alphabetic: Po abecedi - most_recent: Najnovejše - title: Red promote: Spodbujanje - remote_interaction: - prompt: 'Želite interakcijo s tem trobom:' statuses: pin_errors: ownership: Trob nekoga drugega ne more biti pripet diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 1e32190cc..82739c9bb 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -92,10 +92,6 @@ sr-Latn: most_recent_activity: Najskorija aktivnost most_recent_ip: Najskorija IP adresa not_subscribed: Nije pretplaćen - order: - alphabetic: Abecedni - most_recent: Najskoriji - title: Redosled outbox_url: Odlazno sanduče perform_full_suspension: Izvrši kompletno isključenje profile_url: Adresa profila @@ -122,7 +118,6 @@ sr-Latn: shared_inbox_url: Adresa deljenog sandučeta show: created_reports: Prijave koje je napravio ovaj nalog - report: prijava targeted_reports: Prijave napravljene o ovom nalogu silence: Ućutkaj statuses: Statusi @@ -200,11 +195,6 @@ sr-Latn: title: Novo blokiranje domena reject_media: Odbaci multimediju reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida na dalje. Nebitno je za suspenziju - severities: - noop: Ništa - silence: Ućutkavanje - suspend: Suspenzija - severity: Oštrina show: affected_accounts: few: Utiče na %{count} naloga u bazi @@ -216,7 +206,6 @@ sr-Latn: suspend: Ugasi suspenzije za sve postojeće naloge sa ovog domena title: Poništi blokadu domena za domen %{domain} undo: Poništi - title: Blokade domena undo: Poništi email_domain_blocks: add_new: Dodaj novuAdd new @@ -229,10 +218,6 @@ sr-Latn: title: Nova stavka u crnoj listi e-pošti title: Crna lista adresa e-pošte instances: - account_count: Poznati nalozi - domain_name: Domen - reset: Resetuj - search: Pretraga title: Poznate instance invites: filter: @@ -465,7 +450,7 @@ sr-Latn: title: Moderacija notification_mailer: digest: - body: 'Evo kratak pregled šta ste propustili od poslednje posete od %{since}:' + body: Evo kratak pregled šta ste propustili od poslednje posete od %{since} mention: "%{name} Vas je pomenuo u:" new_followers_summary: few: Dobili ste %{count} nova pratioca! Sjajno! diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 1ade87f9e..1d373ed67 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -30,18 +30,32 @@ sr: other_instances: Листа инстанци privacy_policy: Полиса приватности source_code: Изворни код - status_count_after: статуси + status_count_after: + few: статуси + many: статуси + one: статус + other: статуси status_count_before: Који су написали terms: Услови коришћења - user_count_after: корисници + user_count_after: + few: корисници + many: корисници + one: корисник + other: корисници user_count_before: Дом за what_is_mastodon: Шта је Мастодон? accounts: choices_html: "%{name}'s избори:" follow: Запрати - followers: Пратиоци + followers: + few: Пратиоци + many: Пратиоци + one: Пратиоц + other: Пратиоци following: Пратим joined: Придружио/ла се %{date} + last_active: последњи активни + link_verified_on: Власништво над овом везом је проверено %{date} media: Медији moved_html: "%{name} је прешао на %{new_profile_link}:" network_hidden: Ова информација није доступна @@ -50,7 +64,11 @@ sr: people_who_follow: Људи који прате %{name} pin_errors: following: Морате пратити ову особу ако хоћете да потврдите - posts: Трубе + posts: + few: Трубе + many: Трубе + one: Труба + other: Трубе posts_tab_heading: Трубе posts_with_replies: Трубе и одговори reserved_username: Корисничко име је резервисано @@ -60,6 +78,9 @@ sr: moderator: Модератор unfollow: Отпрати admin: + account_actions: + action: Извршите радњу + title: Извршите модераторске радње на %{acct} account_moderation_notes: create: Оставите белешку created_msg: Модераторска белешка успешно направљена! @@ -71,14 +92,15 @@ sr: by_domain: Домен change_email: changed_msg: Е-пошта налога успешно промењена! - current_email: Тренутна Е-пошта - label: Промените Е-пошту - new_email: Нова Е-пошта - submit: Промените Е-пошту - title: Промените Е-пошту за %{username} + current_email: Тренутна е-пошта + label: Промените е-пошту + new_email: Нова e-пошта + submit: Промените e-пошту + title: Промените e-пошту за %{username} confirm: Потврди confirmed: Потврђено confirming: Потврдување + deleted: Избрисано demote: Ражалуј disable: Искључи disable_two_factor_authentication: Искључи 2FA @@ -87,15 +109,18 @@ sr: domain: Домен edit: Измени email: Е-пошта - email_status: Е-пошта статус + email_status: Статус е-поште enable: Омогући enabled: Укључено feed_url: Адреса довода followers: Пратиоци followers_url: Адреса пратиоца follows: Праћени + header: Заглавље inbox_url: Адреса сандучета + invited_by: Позван од стране ip: IP + joined: Придружио се location: all: Све local: Локалне @@ -105,6 +130,7 @@ sr: media_attachments: Мултимедијални прилози memorialize: Пребаци у in memoriam moderation: + active: Активан all: Сви silenced: Ућуткани suspended: Суспендовани @@ -112,20 +138,18 @@ sr: moderation_notes: Модераторске белешке most_recent_activity: Најскорија активност most_recent_ip: Најскорија IP адреса + no_limits_imposed: Нема ограничења not_subscribed: Није претплаћен - order: - alphabetic: Абецедни - most_recent: Најскорији - title: Редослед outbox_url: Одлазно сандуче - perform_full_suspension: Изврши комплетно искључење + perform_full_suspension: Искључи profile_url: Адреса профила promote: Унапреди protocol: Протокол public: Јавно push_subscription_expires: PuSH претплата истиче - redownload: Освежи аватар + redownload: Освежи профил remove_avatar: Уклони аватар + remove_header: Одстрани заглавље resend_confirmation: already_confirmed: Овој корисник е веќе потврден send: Препрати го е-мајлот за потврда @@ -143,28 +167,32 @@ sr: search: Претрага shared_inbox_url: Адреса дељеног сандучета show: - created_reports: Пријаве које је направио овај налог - report: пријава - targeted_reports: Пријаве направљене о овом налогу + created_reports: Направљени извештаји + targeted_reports: Пријаве од стране других silence: Ућуткај + silenced: Ућуткан statuses: Статуси subscribe: Претплати се + suspended: Суспендовани title: Налози - unconfirmed_email: Непотврђена Е-пошта + unconfirmed_email: Непотврђена е-пошта undo_silenced: Укини ћутање undo_suspension: Укини суспензију unsubscribe: Укини претплату username: Корисничко име + warn: Упозори web: Веб action_logs: actions: assigned_to_self_report: "%{name} је доделио/ла извештај %{target} себи" change_email_user: "%{name} је променио/ла адресу Е-поште коисника/це %{target}" confirm_user: "%{name} је потврдио адресу е-поште корисника %{target}" + create_account_warning: "%{name} је послао пријаву %{target}" create_custom_emoji: "%{name} је отпремио нови емоџи %{target}" create_domain_block: "%{name} је блокирао домен %{target}" create_email_domain_block: "%{name} је ставио на црну листу домен е-поште %{target}" demote_user: "%{name} је ражаловао корисника %{target}" + destroy_custom_emoji: "%{name} је уништио емоџи %{target}" destroy_domain_block: "%{name} је одблокирао домен %{target}" destroy_email_domain_block: "%{name} је ставио на белу листу домен е-поште %{target}" destroy_status: "%{name} је уклонио статус корисника %{target}" @@ -218,6 +246,7 @@ sr: config: Конфигурација feature_deletions: Брисање налога feature_invites: Позивнице + feature_profile_directory: Фасцикла профила feature_registrations: Регистрација feature_relay: Федеративни релеј features: Карактеристике @@ -235,7 +264,7 @@ sr: week_users_active: активно ове недеље week_users_new: корисника ове недеље domain_blocks: - add_new: Додај нови + add_new: Додај нови блок домена created_msg: Блокирање домена се обрађује destroyed_msg: Блокирање домена је опозвано domain: Домен @@ -250,11 +279,13 @@ sr: title: Ново блокирање домена reject_media: Одбаци мултимедију reject_media_hint: Уклања локално ускладиштене мултимедијске фајлове и одбија да их скида убудуће. Небитно је за суспензију - severities: - noop: Ништа - silence: Ућуткавање - suspend: Суспензија - severity: Оштрина + reject_reports: Одбаци извештај + reject_reports_hint: Игнориши све извештаје који долазе са овог домена. Небитно је за суспензије + rejecting_media: одбацивање медијских датотека + rejecting_reports: одбацивање пријава + severity: + silence: ућуткани + suspend: суспендовани show: affected_accounts: few: Утиче на %{count} налога у бази @@ -266,8 +297,7 @@ sr: suspend: Уклони суспензије за све постојеће налоге са овог домена title: Поништи блокаду домена за %{domain} undo: Поништи - title: Блокаде домена - undo: Поништи + undo: Поништи блок домена email_domain_blocks: add_new: Додај нови created_msg: Успешно додао домен Е-поште на црну листу @@ -278,12 +308,25 @@ sr: create: Додај домен title: Нова ставка е-поштe у црној листи title: Црна листа E-поште + followers: + back_to_account: Назад на налог + title: "%{acct} Пратиоци" instances: - account_count: Познати налози - domain_name: Домен - reset: Ресетуј - search: Претрага - title: Познате инстанце + delivery_available: Достава је доступна + known_accounts: + few: "%{count} знаних налога" + many: "%{count} знаних налога" + one: "%{count} знан налог" + other: "%{count} знаних налога" + moderation: + all: Све + limited: Ограничено + title: Модерација + title: Федерација + total_blocked_by_us: Блокирано од стране нас + total_followed_by_them: Праћени од стране њих + total_followed_by_us: Праћени од стране нас + total_reported: Пријаве везане за њих invites: deactivate_all: Деактивирај све filter: @@ -294,8 +337,13 @@ sr: title: Позивнице relays: add_new: Додај нови релеј + delete: Обриши description_html: "Федерални релеј је посреднички сервер који размењује велике количине јавних труба између сервера на који је претплаћен и на који објављује.Може помоћи малим и средњим серверима да открију садржај из федиверса, који иначе захтева од локалних корисника да ручно пратити остале људе на удаљеним серверима." + disable: Искључи + disabled: Искључен + enable: Укључи enable_hint: Када се омогући, Ваш сервер ће бити претплаћен на све јавне трубе са овог релеја, и почеће да шаље своје јавне трубу на њега. + enabled: Укључен inbox_url: URL Релеја pending: Чека се одобрење релеја save_and_enable: Сачувај и омогући @@ -351,12 +399,18 @@ sr: hero: desc_html: Приказано на почетној страни. Препоручено је бар 600х100рх. Када се не одреди, враћа се на иконицу инстанце title: Лого слика + mascot: + desc_html: Приказано на више страна. Препоручено је бар 293×205px. Када није постављена, користи се подразумевана маскота + title: Слика маскоте peers_api_enabled: desc_html: Имена домена које је ова инстанца срела у федиверсу title: Објављуј списак откривених инстанци preview_sensitive_media: desc_html: Преглед веза на другим веб страницама ће приказати иконицу чак и ако је медиј означен као осетљиво title: Покажи осетљив медиј у ОпенГраф прегледу + profile_directory: + desc_html: Дозволи корисницима да буду откривени + title: Омогући профил фасцикле registrations: closed_message: desc_html: Приказује се на главној страни када је инстанца затворена за регистрације. Можете користити HTML тагове @@ -416,13 +470,21 @@ sr: last_delivery: Последња достава title: WebSub topic: Topic - suspensions: - bad_acct_msg: Вредност потврде се не поклапа. Да ли суспендујете прави рачун? - hint_html: 'Да бисте потврдили суспензију налога, унесите %{value} у поље испод:' - proceed: Настави - title: Суспендуј %{acct} - warning_html: 'Суспендовање овог налога ће неповратноизбрисати све податке са овог налога, који укључују:' + tags: + accounts: Налози + hidden: Скривено + hide: Сакриј од фасцикле + name: Тараба + title: Тараба + unhide: Прикажи у фасцикли + visible: Видљиво title: Администрација + warning_presets: + add_new: Додај нови + delete: Избриши + edit: Уреди + edit_preset: Уреди пресет упозорења + title: Управљај пресетима упозорења admin_mailer: new_report: body: "%{reporter} је пријавио %{target}" @@ -500,6 +562,16 @@ sr: success_msg: Ваш налог је успешно обрисан warning_html: Гарантовано је само брисање садржаја са ове инстанце. Садржај који је дељен даље ће вероватно да остави неке трагове. Недоступни и угашени сервери, као и сервери који су одјављени од примања статуса од Вас, неће ажурирати своје базе. warning_title: Доступност расејаног садржаја + directories: + directory: Профил фасцикле + enabled: Ви сте тренутно видљиви у фасцикли. + explanation: Откријте кориснике на основу њихових интереса + explore_mastodon: Истражи %{title} + people: + few: "%{count} људе" + many: "%{count} људе" + one: "%{count} особу" + other: "%{count} људе" errors: '403': Немате дозвола да видите ову страну. '404': Страна коју сте тражили не постоји. @@ -522,7 +594,9 @@ sr: size: Величина blocks: Блокирали сте csv: CSV + domain_blocks: Блокови домена follows: Пратите + lists: Листе mutes: Ућуткали сте storage: Мултимедијално складиште filters: @@ -561,6 +635,7 @@ sr: resources: Ресурси generic: changes_saved_msg: Измене успешно сачуване! + copy: Копирај save_changes: Сними измене validation_errors: few: Нешто није баш како треба! Прегледајте %{count} грешке испод @@ -680,13 +755,22 @@ sr: no_account_html: Немате налог? Можете се пријавити овде proceed: Наставите да би сте запратили prompt: 'Запратићете:' + reason_html: "Зашто је овај корак неопходан?%{instance}
можда није сервер на којем сте регистровани, тако да прво морамо да вас преусмеримо на ваш сервер."
remote_interaction:
- proceed: Наставите за интеракцију
- prompt: 'Желите да интерактирате са овом трубом:'
+ reblog:
+ proceed: Наставите да бисте поделили
+ prompt: 'Желите да делите ову трубу:'
+ reply:
+ proceed: Наставите да бисте одговорили
+ prompt: 'Желите да одговорите на ову трубу:'
remote_unfollow:
error: Грешка
title: Наслов
unfollowed: Отпраћени
+ scheduled_statuses:
+ over_daily_limit: Прекорачили сте границу од %{limit} планираних труба за тај дан
+ over_total_limit: Прекорачили сте границу од %{limit} планираних труба
+ too_soon: Планирани датум мора бити у будућности
sessions:
activity: Последња активност
browser: Веб читач
@@ -746,11 +830,23 @@ sr:
statuses:
attached:
description: 'У прилогу: %{attached}'
- image: "%{count} слике"
- video: "%{count} видеа"
+ image:
+ few: "%{count} слика"
+ many: "%{count} слика"
+ one: "%{count} слику"
+ other: "%{count} слика"
+ video:
+ few: "%{count} видео записа"
+ many: "%{count} видео записа"
+ one: "%{count} видео запис"
+ other: "%{count} видео записа"
boosted_from_html: Подржано од %{acct_link}
content_warning: 'Упозорење на садржај: %{warning}'
- disallowed_hashtags: 'садржи забрањене тарабе: %{tags}'
+ disallowed_hashtags:
+ few: 'садржи забрањене хештегове: %{tags}'
+ many: 'садржи забрањене хештегове: %{tags}'
+ one: 'садржи забрањени хештег: %{tags}'
+ other: 'садржи забрањене хештегове: %{tags}'
language_detection: Аутоматскo откривање језика
open_in_web: Отвори у вебу
over_character_limit: ограничење од %{max} карактера прекорачено
@@ -803,6 +899,23 @@ sr:
backup_ready:
explanation: Тражили сте потпуну резервну копију вашег Мастодон рачуна. Спремна за преузимање!
subject: Ваша архива је спремна за преузимање
+ title: Извоз архиве
+ warning:
+ explanation:
+ disable: Док је ваш рачун замрзнут, подаци о вашем рачуну остају нетакнути, али не можете вршити никакве радње док се не откључа.
+ silence: Иако је ваш налог ограничен, само људи који вас већ прате ће видети ваше трубе на овом серверу, и можда ћете бити искључени из различитих јавних листа. Међутим, други вас могу и даље ручно пратити.
+ suspend: Ваш налог је суспендован, а све ваше трубе и учитане медијске датотеке неповратно су уклоњени са овог сервера и сервера на којима сте имали следбенике.
+ review_server_policies: Прегледај политику сервера
+ subject:
+ disable: Ваш налог %{acct} је замрзнут
+ none: Упозорење за %{acct}
+ silence: Ваш налог %{acct} је ограничен
+ suspend: Ваш налог %{acct} је суспендован
+ title:
+ disable: Налог замрзнут
+ none: Упозорење
+ silence: Налог ограничен
+ suspend: Налог суспендован
welcome:
edit_profile_action: Подеси профил
edit_profile_step: Профил можете прилагодити постављањем аватара, заглавља, променом имена и још много тога. Ако желите да прегледате нове пратиоце пре него што буду дозвољени да вас прате, можете закључати свој налог.
@@ -814,16 +927,19 @@ sr:
review_preferences_action: Промените подешавања
review_preferences_step: Обавезно поставите своја подешавања, као што су какву Е-пошту желите да примите или на који ниво приватности желите да ваше поруке буду постављене. Ако немате морску болест или епилепсију, можете изабрати аутоматско покретање ГИФ-а.
subject: Добродошли на Мастодон
- tip_bridge_html: Ако долазите са Твитера, можете пронаћи пријатеље користећи апликацију за премошћавање. Ово ради само ако и они користе исту апликацију!
- tip_federated_timeline: Здружена временска линија је компетан увид у Мастодонову мрежу. Али она само укључује људе на којој су ваше комшије претплаћене, тако да није комплетна.
+ tip_federated_timeline: Здружена временска линија пружа комплетан увид у Мастодонову мрежу. Али она само укључује људе на које су ваше комшије претплаћене, тако да није комплетна.
tip_following: Аутоматски пратите админа/не вашег сервера. Да пронађете занимљиве људе, проверите локалне и здружене временске линије.
tip_local_timeline: Локална временска линија је комплетан увид људи у %{instance}. Ово су вам прве комшије!
tip_mobile_webapp: Ако вам мобилни претраживач предложи да додате Мастодон на Ваш почетни екран, добијаћете мобилна обавештења. Делује као изворна апликација на много начина!
tips: Савети
title: Добродошли, %{name}!
users:
+ follow_limit_reached: Не можете пратити више од %{limit} људи
invalid_email: Адреса Е-поште није исправна
invalid_otp_token: Неисправни двофакторски код
otp_lost_help_html: Ако изгубите приступ за оба, можете ступити у контакт са %{email}
seamless_external_login: Пријављени сте путем спољашње услуге, тако да лозинка и подешавања Е-поште нису доступни.
signed_in_as: 'Пријављен/а као:'
+ verification:
+ explanation_html: 'Можете извршити проверу да сте Ви власник веза у Вашем профилу. Да би то радило, повезани веб сајт мора да садржи везу назад ка Вашем Мастодон профилу. Веза назад мора да има rel="me"
атрибут. Текстуелни садржај везе није битан. Ево примера:'
+ verification: Провера
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 465a9b127..aa5b3420d 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -103,10 +103,6 @@ sv:
most_recent_activity: Senaste aktivitet
most_recent_ip: Senaste IP
not_subscribed: Inte prenumererat
- order:
- alphabetic: Alfabetiskt
- most_recent: Senaste
- title: Ordning
outbox_url: Utkorg URL
perform_full_suspension: Utför full avstängning
profile_url: Profil URL
@@ -134,7 +130,6 @@ sv:
shared_inbox_url: Delad inkorg URL
show:
created_reports: Anmälningar som skapats av det här kontot
- report: anmäla
targeted_reports: Anmälningar gjorda om detta konto
silence: Tystnad
statuses: Status
@@ -218,11 +213,6 @@ sv:
title: Nytt domänblock
reject_media: Avvisa mediafiler
reject_media_hint: Raderar lokalt lagrade mediefiler och förhindrar möjligheten att ladda ner något i framtiden. Irrelevant för suspensioner
- severities:
- noop: Ingen
- silence: Tysta ner
- suspend: Suspendera
- severity: Svårighet
show:
affected_accounts:
one: Ett konto i databasen drabbades
@@ -232,7 +222,6 @@ sv:
suspend: Ta bort suspendering från alla befintliga konton på den här domänen
title: Ångra domänblockering för %{domain}
undo: Ångra
- title: Domänblockering
undo: Ångra
email_domain_blocks:
add_new: Lägg till ny
@@ -245,10 +234,6 @@ sv:
title: Ny E-postdomänblocklistningsinmatning
title: E-postdomänblock
instances:
- account_count: Kända konton
- domain_name: Domän
- reset: Återställa
- search: Sök
title: Kända instanser
invites:
filter:
@@ -805,7 +790,6 @@ sv:
review_preferences_action: Ändra inställningar
review_preferences_step: Se till att du ställer in dina inställningar, t.ex. vilka e-postmeddelanden du vill ta emot eller vilken integritetsnivå du vill att dina inlägg ska vara. Om du inte har åksjuka, kan du välja att aktivera automatisk uppspelning av GIF-bilder.
subject: Välkommen till Mastodon
- tip_bridge_html: Om du kommer från Twitter kan du hitta dina vänner på Mastodon genom att använda bridge-appen. Det fungerar dock bara om de också har använt bridge-appen!
tip_federated_timeline: Den förenade tidslinjen är en störtflodsvy av Mastodon-nätverket. Men det inkluderar bara människor som dina grannar följer, så det är inte komplett.
tip_following: Du följer din servers administratör(er) som standard. För att hitta fler intressanta personer, kolla de lokala och förenade tidslinjerna.
tip_local_timeline: Den lokala tidslinjen är en störtflodsvy av personer på %{instance}. Det här är dina närmaste grannar!
diff --git a/config/locales/te.yml b/config/locales/te.yml
index f28b56052..f0f6942ab 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -1,5 +1,129 @@
---
te:
about:
+ about_hashtag_html: ఇవి #%{hashtag}తో ట్గాగ్ చేయబడిన పబ్లిక్ టూట్లు. ఫెడివర్స్ లో ఎక్కడ ఖాతావున్నా వీటిలో పాల్గొనవచ్చు.
+ about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది.
about_this: గురించి
+ administered_by: 'నిర్వహణలో:'
+ api: API
+ apps: మొబైల్ యాప్స్
+ closed_registrations: ప్రస్తుతం ఈ ఇన్స్టెన్స్ లో రిజిస్టేషన్లు మూసివేయబడ్డాయి. అయితే, వేరే ఇన్స్టెన్స్ లో ఖాతా తెరచికూడా ఈ ఇన్స్టెన్స్ ను అక్కడినుండే యాక్సెస్ చేయవచ్చు.
contact: సంప్రదించండి
+ contact_missing: ఇంకా సెట్ చేయలేదు
+ contact_unavailable: వర్తించదు
+ documentation: పత్రీకరణ
+ extended_description_html: |
+ మరింత విశదీకరణ ఇంకా సెట్ చేయబడలేదు.
+ features: + humane_approach_body: వేరే సామాజిక మాధ్యమాల వైఫల్యాల నుండి నేర్చుకుని, నైతిక రూపకల్పనలతో సామాజిక మాధ్యమాల దుర్వినియోగంపై మాస్టొడాన్ పోరాటం చేసే లక్ష్యంతో పనిచేస్తుంది. + humane_approach_title: మరింత మానవత్వంతో కూడిన విధానం + not_a_product_body: మాస్టొడాన్ వ్యాపార సంబంధిత మాధ్యమం కాదు. ఎటువంటి ప్రకటనలు, డేటా మైనింగ్, కంచెలు లేనిది. ఏ కేంద్ర అధికరమూ లేదు. + not_a_product_title: మీరొక వ్యక్తి, వస్తువు కాదు + real_conversation_body: With 500 characters at your disposal and support for granular content and media warnings, you can express yourself the way you want to. + real_conversation_title: నిజమైన సంభాషణలకోసం నిర్మించబడింది + within_reach_body: ఆండ్రాయిడ్, iOS మరియు ఇతర ప్లాట్ఫాంలకు వివిధరకాల యాప్స్ వున్నాయి. డెవలపర్ సహిత API వ్యవస్థే ఇందుకు మూలకారణం. ఇవి మీ స్ణేహితులతో అన్నివేళలా అందుబాటులో వుండడానికి సహాయపడతాయి. + within_reach_title: ఎల్లప్పుడూ అందుబాటులో + generic_description: "%{domain} అనేది నెట్వర్కులోని ఒక సర్వరు" + hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది + learn_more: మరింత తెలుసుకోండి + other_instances: ఇన్స్టాన్స్ ల జాబితా + privacy_policy: గోప్యత విధానము + source_code: సోర్సు కోడ్ + status_count_after: + one: స్థితి + other: స్థితులు + status_count_before: ఎవరు రాశారు + terms: సేవా నిబంధనలు + user_count_after: + one: వినియోగదారు + other: వినియోగదారులు + user_count_before: హోం కు + what_is_mastodon: మాస్టొడాన్ అంటే ఏమిటి? + accounts: + choices_html: "%{name}'s ఎంపికలు:" + follow: అనుసరించు + followers: + one: అనుచరి + other: అనుచరులు + following: అనుసరిస్తున్నారు + joined: "%{date}న చేరారు" + last_active: చివరిగా క్రియాశీలకంగా వుంది + link_verified_on: ఈ లంకె యొక్క యాజమాన్యాన్ని చివరిగా పరిశీలించింది %{date}న + media: మీడియా + moved_html: "%{name} ఈ %{new_profile_link}కు మారారు:" + network_hidden: ఈ సమాచారం అందుబాటులో లేదు + nothing_here: ఇక్కడ ఏమీ లేదు! + people_followed_by: "%{name} అనుసరించే వ్యక్తులు" + people_who_follow: "%{name}ను అనుసరించే వ్యక్తులు" + pin_errors: + following: మీరు ధృవీకరించాలనుకుంటున్న వ్యక్తిని మీరిప్పటికే అనుసరిస్తూ వుండాలి + posts: + one: టూటు + other: టూట్లు + posts_tab_heading: టూట్లు + posts_with_replies: టూట్లు మరియు ప్రత్యుత్తరాలు + reserved_username: ఈ username రిజర్వ్ చేయబడింది + roles: + admin: నిర్వాహకులు + bot: బోట్ + moderator: నియంత్రికుడు + unfollow: అనుసరించవద్దు + admin: + account_actions: + action: చర్య తీసుకో + title: "%{acct}పై మోడరేషన్ చర్యను తీసుకో" + account_moderation_notes: + create: ఏదైనా గమనికను వదులు + created_msg: మోడరేషన్ గమనిక విజయవంతంగా సృష్టించబడింది! + delete: తీసివేయి + destroyed_msg: మోడరేషన్ గమనిక విజయవంతంగా తొలగించబడింది! + accounts: + are_you_sure: ఖచ్ఛితమేగా? + avatar: అవతారం + by_domain: డొమైను + change_email: + changed_msg: ఖాతా యొక్క ఈమెయిల్ విజయవంతంగా మార్చబడింది! + current_email: ప్రస్తుత ఈమెయిల్ + label: ఈమెయిల్ ను మార్చు + new_email: కొత్త ఈమెయిల్ + submit: ఈమెయిల్ ను మార్చు + title: "%{username} యొక్క ఈమెయిల్ ను మార్చు" + confirm: ధృవీకరించు + confirmed: ధృవీకరించబడింది + confirming: ధృవీకరిస్తుంది + demote: స్థానం తగ్గించు + disable: అచేతనం చేయి + disable_two_factor_authentication: 2FAను అచేతనం చేయి + disabled: అచేతనం చేయబడింది + display_name: పేరును చూపు + domain: డొమైను + edit: మార్చు + email: ఈమెయిల్ + email_status: ఈమెయిల్ స్థితి + enable: చేతనం + enabled: చేతనం చేయబడింది + feed_url: ఫీడ్ URL + followers: అనుచరులు + followers_url: అనుచరుల URL + follows: అనుసరిస్తున్నారు + header: Header + inbox_url: ఇన్ బాక్స్ URL + ip: IP + location: + all: అన్నీ + local: లోకల్ + remote: రిమోట్ + title: లొకేషన్ + login_status: లాగిన్ స్థితి + media_attachments: మీడియా అటాచ్మెంట్లు + memorialize: Turn into memoriam + moderation: + active: యాక్టివ్ + all: అన్నీ + silenced: నిశ్శబ్ధం చేయబడింది + suspended: నిషేధించబడింది + title: మోడరేషన్ + moderation_notes: మోడరేషన్ నోట్స్ + most_recent_activity: ఇటీవల యాక్టివిటీ + most_recent_ip: ఇటీవలి IP diff --git a/config/locales/th.yml b/config/locales/th.yml index b0b8e9ba0..5be8e02c0 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -49,10 +49,6 @@ th: most_recent_activity: กิจกรรมล่าสุด most_recent_ip: IP ล่าสุด not_subscribed: Not subscribed - order: - alphabetic: ตามตัวอักษร - most_recent: ล่าสุด - title: จัดเรียง perform_full_suspension: Perform full suspension profile_url: Profile URL public: สาธารณะ @@ -65,7 +61,6 @@ th: salmon_url: Salmon URL show: created_reports: รายงานที่ถูกสร้างโดย แอคเคาท์นี้ - report: รายงาน targeted_reports: รายงานเกี่ยวกับแอคเคาท์นี้ silence: ปิดเสียง statuses: สถานะ @@ -89,10 +84,6 @@ th: title: การบล๊อกโดเมนใหม่ reject_media: ไม่อนุมัติไฟล์สื่อ reject_media_hint: ลบไฟล์สื่อที่เก็บไว้ในเครื่อง และ ป้องกันการดาวน์โหลดในอนาคต. Irrelevant for suspensions - severities: - silence: ปิดเสียง - suspend: หยุดไว้ - severity: Severity show: affected_accounts: one: มีผลต่อหนึ่งแอคเค๊าท์ในฐานข้อมูล @@ -102,11 +93,8 @@ th: suspend: ยกเลิกการหยุดทุกแอคเค๊าท์จากโดเมน title: ยกเลิกการบล๊อกโดเมน %{domain} undo: ยกเลิก - title: บล๊อกโดเมน undo: ยกเลิก instances: - account_count: Known accounts - domain_name: ชื่อโดเมน title: Known Instances reports: comment: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index bc0a558e1..c38b73f2e 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -48,10 +48,6 @@ tr: most_recent_activity: Son aktivite most_recent_ip: Son IP not_subscribed: Abone edilmedi - order: - alphabetic: Alfabetik - most_recent: En son - title: Sıralama perform_full_suspension: Tamamen uzaklaştır profile_url: Profil linki public: Herkese açık @@ -64,7 +60,6 @@ tr: salmon_url: Salmon Linki show: created_reports: Bu hesap tarafından gelen şikayetler - report: şikayet targeted_reports: Bu hesaba gelen şikayetler silence: Sustur statuses: Durumlar @@ -88,10 +83,6 @@ tr: title: Yeni domain bloğu reject_media: Ortam dosyalarını reddetme reject_media_hint: Yerel olarak depolanmış ortam dosyalarını ve gelecekte indirilecek olanları reddeder. Uzaklaştırma için uygun değildir - severities: - silence: Sustur - suspend: Uzaklaştır - severity: İşlem show: affected_accounts: one: Veritabanındaki bir hesap etkilendi @@ -101,11 +92,8 @@ tr: suspend: Bu domaindeki tüm hesapların üzerindeki uzaklaştırma işlemini kaldır title: "%{domain} domain'i için yapılan işlemi geri al" undo: Geri al - title: Domain Blokları undo: Geri al instances: - account_count: Bilinen hesaplar - domain_name: Domain title: Bilinen Sunucular reports: comment: @@ -222,7 +210,7 @@ tr: too_many: 4'ten fazla dosya ekleyemezsiniz notification_mailer: digest: - body: 'Son ziyaretiniz olan %{since}''den beri''da kaçırdığınız şeylerin özeti:' + body: Son ziyaretiniz olan %{since}'den beri'da kaçırdığınız şeylerin özeti mention: "%{name} senden bahsetti:" new_followers_summary: one: Yeni bir takipçiniz var! diff --git a/config/locales/uk.yml b/config/locales/uk.yml index e4ea774ec..9a63854b5 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -108,10 +108,6 @@ uk: most_recent_activity: Остання активність most_recent_ip: Останній IP not_subscribed: Не підписані - order: - alphabetic: За алфавітом - most_recent: За датою - title: Порядок outbox_url: Вихідний URL perform_full_suspension: Повне блокування profile_url: URL профілю @@ -139,7 +135,6 @@ uk: shared_inbox_url: URL спільного вхідного кошика show: created_reports: Скарги створені цим аккаунтом - report: скарга targeted_reports: Скарги щодо цього аккаунту silence: Глушення statuses: Статуси @@ -242,11 +237,6 @@ uk: title: Нове блокування домену reject_media: Заборонити медіаконтент reject_media_hint: Видаляє медіаконтент, збережений локально, і забороняє його завантаження у майбутньому. Не має значення у випадку блокування - severities: - noop: Нічого - silence: Глушення - suspend: Блокування - severity: Суворість show: affected_accounts: few: Впливає на %{count} акаунти у базі даних @@ -258,7 +248,6 @@ uk: suspend: Зняти блокування з усіх існуючих акаунтів цього домену title: Зняти блокування з домена %{domain} undo: Відмінити - title: Доменні блокування undo: Відмінити email_domain_blocks: add_new: Додати @@ -271,10 +260,6 @@ uk: title: Нове доменне блокування домену email title: Чорний список поштових доменів instances: - account_count: Відомі аккаунти - domain_name: Домен - reset: Скинути - search: Пошук title: Відомі інстанції invites: filter: @@ -764,7 +749,6 @@ uk: review_preferences_action: Змінити налаштування review_preferences_step: Переконайтеся у тому, що ви налаштували все необхідне, як от які e-mail повідомлення ви хочете отримувати, або який рівень приватності ви хочете встановити вашим постам за замовчуванням. Якщо хочете, ви можете увімкнути автоматичне програвання GIF анімацій. subject: Ласкаво просимо до Mastodon - tip_bridge_html: Якщо ви прийшли до нас із Twitter, ви можете знайти ваших друзів на Mastodon, скориставшись проміжним застосунком. Проте він працює тільки, якщо вони теж користуються проміжним застосунком! tip_federated_timeline: Федерований фід є широким поглядом на мережу Mastodon. Але він включає лише людей, на яких підписані ваші сусіди по сайту, тому він не є повним. tip_following: Ви автоматично підписані на адміністратора(-ів) сервера. Для того, щоб знайти ще цікавих людей, дослідіть локальний та федерований фіди. tip_local_timeline: Локальний фід - це погляд згори на людей на %{instance}. Це ваші прямі сусіди! diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index a32f36e32..e482e9c41 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -114,10 +114,6 @@ zh-CN: most_recent_activity: 最后一次活跃的时间 most_recent_ip: 最后一次活跃的 IP 地址 not_subscribed: 未订阅 - order: - alphabetic: 按字母 - most_recent: 按时间 - title: 排序 outbox_url: 发件箱(Outbox)URL perform_full_suspension: 永久封禁 profile_url: 个人资料页面 URL @@ -145,7 +141,6 @@ zh-CN: shared_inbox_url: 公用收件箱(Shared Inbox)URL show: created_reports: 这个帐户提交的举报 - report: 个举报 targeted_reports: 针对这个帐户的举报 silence: 隐藏 statuses: 嘟文 @@ -251,11 +246,6 @@ zh-CN: title: 添加域名屏蔽 reject_media: 拒绝接收媒体文件 reject_media_hint: 删除本地已缓存的媒体文件,并且不再接收来自该域名的任何媒体文件。此选项不影响封禁 - severities: - noop: 无 - silence: 自动隐藏 - suspend: 自动封禁 - severity: 屏蔽级别 show: affected_accounts: one: 将会影响到数据库中的 1 个帐户 @@ -265,7 +255,6 @@ zh-CN: suspend: 对此域名的所有帐户解除封禁 title: 撤销对 %{domain} 的域名屏蔽 undo: 撤销 - title: 域名屏蔽 undo: 撤销 email_domain_blocks: add_new: 添加新条目 @@ -278,10 +267,6 @@ zh-CN: title: 添加电子邮件域名屏蔽 title: 电子邮件域名屏蔽 instances: - account_count: 已知帐户 - domain_name: 域名 - reset: 重置 - search: 搜索 title: 已知实例 invites: deactivate_all: 撤销所有邀请链接 @@ -786,7 +771,6 @@ zh-CN: review_preferences_action: 更改首选项 review_preferences_step: 记得调整你的偏好设置,比如你想接收什么类型的邮件,或者你想把你的嘟文可见范围默认设置为什么级别。如果你没有晕动病的话,考虑一下启用“自动播放 GIF 动画”这个选项吧。 subject: 欢迎来到 Mastodon - tip_bridge_html: 如果你刚从 Twitter 来到这里,你可以在桥梁站(bridge app)上寻找你的朋友。当然,前提是他们也登录了桥梁站! tip_federated_timeline: 跨站公共时间轴可以让你一窥更广阔的 Mastodon 网络。不过,由于它只显示你的邻居们所订阅的内容,所以并不是全部。 tip_following: 默认情况下,你会自动关注你所在实例的管理员。想结交更多有趣的人的话,记得多逛逛本站时间轴和跨站公共时间轴哦。 tip_local_timeline: 本站时间轴可以让你一窥 %{instance} 上的用户。他们就是离你最近的邻居! diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 7296587a3..737ca000c 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -103,10 +103,6 @@ zh-HK: most_recent_activity: 最新活動 most_recent_ip: 最新 IP 位域 not_subscribed: 未訂閱 - order: - alphabetic: 按字母 - most_recent: 按時間 - title: 排序 outbox_url: 寄件箱(Outbox)URL perform_full_suspension: 完全停權 profile_url: 個人檔案 URL @@ -134,7 +130,6 @@ zh-HK: shared_inbox_url: 公共收件箱(Shared Inbox)URL show: created_reports: 此用戶所提舉報的紀錄 - report: 舉報 targeted_reports: 此用戶被舉報的紀錄 silence: 靜音 statuses: 文章 @@ -218,11 +213,6 @@ zh-HK: title: 新增域名阻隔 reject_media: 拒絕媒體檔案 reject_media_hint: 刪除本地緩存的媒體檔案,再也不在未來下載這個站點的檔案。和自動刪除無關 - severities: - noop: 無 - silence: 自動靜音 - suspend: 自動刪除 - severity: 阻隔分級 show: affected_accounts: 資料庫中有%{count}個用戶受影響 retroactive: @@ -230,7 +220,6 @@ zh-HK: suspend: 對此域名的所有用戶取消除名 title: 撤銷 %{domain} 的域名阻隔 undo: 撤銷 - title: 域名阻隔 undo: 撤銷 email_domain_blocks: add_new: 加入新項目 @@ -243,10 +232,6 @@ zh-HK: title: 新增電郵網域阻隔 title: 電郵網域阻隔 instances: - account_count: 已知帳號 - domain_name: 域名 - reset: 重設 - search: 搜索 title: 已知服務站 invites: filter: @@ -721,7 +706,6 @@ zh-HK: review_preferences_action: 更改首選項 review_preferences_step: 記得調整你的偏好設置,比如你想接收什麼類型的郵件,或者你想把你的文章可見範圍默認設定為什麼級別。如果你沒有暈車的話,考慮一下啟用「自動播放 GIF 動畫」這個選項吧。 subject: 歡迎來到 Mastodon - tip_bridge_html: 如果你剛從 Twitter 來到這裡,你可以在橋樑站(bridge app)上尋找你的朋友。當然,前提是他們也登錄了橋樑站! tip_federated_timeline: 跨站公共時間軸可以讓你一窺更廣闊的 Mastodon 網絡。不過,由於它只顯示你的鄰居們所訂閱的內容,所以並不是全部。 tip_following: 默認情況下,你會自動關注你所在服務站的管理員。想結交更多有趣的人的話,記得多逛逛本站時間軸和跨站公共時間軸哦。 tip_local_timeline: 本站時間軸可以讓你一窺 %{instance} 上的用戶。他們就是離你最近的鄰居! diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 9a7c2b293..f4bda0f34 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -108,10 +108,6 @@ zh-TW: most_recent_activity: 最近活動 most_recent_ip: 最近 IP 位址 not_subscribed: 未訂閱 - order: - alphabetic: 按字母 - most_recent: 按時間 - title: 排序 outbox_url: 寄件箱 (Outbox) URL perform_full_suspension: 進行停權 profile_url: 個人檔案 URL @@ -139,7 +135,6 @@ zh-TW: shared_inbox_url: 公共收件箱 (Shared Inbox) URL show: created_reports: 這個使用者提交的檢舉 - report: 檢舉 targeted_reports: 針對這個使用者的檢舉 silence: 靜音 statuses: 嘟文 @@ -223,11 +218,6 @@ zh-TW: title: 新增封鎖網域 reject_media: 拒絕媒體檔案 reject_media_hint: 刪除本地緩存的媒體檔案,並且不再接收來自該網域的任何媒體檔案。與自動封鎖無關 - severities: - noop: 無 - silence: 自動靜音 - suspend: 自動封鎖 - severity: 嚴重度 show: affected_accounts: 資料庫中有%{count}個使用者受影響 retroactive: @@ -235,7 +225,6 @@ zh-TW: suspend: 對此網域的所有使用者取消封鎖 title: 撤銷 %{domain} 的網域封鎖 undo: 撤銷 - title: 網域封鎖 undo: 撤銷 email_domain_blocks: add_new: 加入新項目 @@ -248,10 +237,6 @@ zh-TW: title: 新增E-mail封鎖 title: E-mail封鎖 instances: - account_count: 已知帳戶 - domain_name: 網域 - reset: 重設 - search: 搜尋 title: 已知站點 invites: filter: @@ -702,7 +687,6 @@ zh-TW: review_preferences_action: 更改偏好設定 review_preferences_step: 記得調整你的偏好設定,比如你想接收什麼類型的電子郵件,或著你想把你的嘟文可見範圍預設設定什麼級別。如果你沒有暈車的話,考慮一下啟用「自動播放 GIF 動畫」這個選項吧。 subject: 歡迎來到 Mastodon - tip_bridge_html: 如果你剛從 Twitter 來到這裡,你可以在橋樑站(bridge app)上尋找你的朋友。當然,前提是他們也登入了橋樑站! tip_federated_timeline: 跨站公共時間軸可以讓你一窺更廣闊的 Mastodon 網路。不過,由於它們只顯示你的鄰居們所訂閱的內容,所以並不是全部。 tip_following: 預設情況下,你會自動關注你所在站點的管理員。想結交更多有趣的人的話,記得多逛逛本站時間軸與跨站公共時間軸哦。 tip_local_timeline: 本站時間軸可以讓你一窺 %{instance} 上的使用者。他們就是離你最近的鄰居! diff --git a/config/navigation.rb b/config/navigation.rb index 99d227f11..a9521f956 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -28,8 +28,8 @@ SimpleNavigation::Configuration.run do |navigation| admin.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports} admin.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url, highlights_on: %r{/admin/accounts} admin.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path - admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url, highlights_on: %r{/admin/instances}, if: -> { current_user.admin? } - admin.item :domain_blocks, safe_join([fa_icon('lock fw'), t('admin.domain_blocks.title')]), admin_domain_blocks_url, highlights_on: %r{/admin/domain_blocks}, if: -> { current_user.admin? } + admin.item :tags, safe_join([fa_icon('tag fw'), t('admin.tags.title')]), admin_tags_path + admin.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks}, if: -> { current_user.admin? } admin.item :email_domain_blocks, safe_join([fa_icon('envelope fw'), t('admin.email_domain_blocks.title')]), admin_email_domain_blocks_url, highlights_on: %r{/admin/email_domain_blocks}, if: -> { current_user.admin? } end diff --git a/config/puma.rb b/config/puma.rb index 5ebf5ed19..1afdb1c6d 100644 --- a/config/puma.rb +++ b/config/puma.rb @@ -13,7 +13,9 @@ workers ENV.fetch('WEB_CONCURRENCY') { 2 } preload_app! on_worker_boot do - ActiveRecord::Base.establish_connection if defined?(ActiveRecord) + ActiveSupport.on_load(:active_record) do + ActiveRecord::Base.establish_connection + end end plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb index b203e1329..af49845cc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -80,6 +80,9 @@ Rails.application.routes.draw do get '/interact/:id', to: 'remote_interaction#new', as: :remote_interaction post '/interact/:id', to: 'remote_interaction#create' + get '/explore', to: 'directories#index', as: :explore + get '/explore/:id', to: 'directories#show', as: :explore_hashtag + namespace :settings do resource :profile, only: [:show, :update] resource :preferences, only: [:show, :update] @@ -91,6 +94,8 @@ Rails.application.routes.draw do resources :follows, only: :index, controller: :following_accounts resources :blocks, only: :index, controller: :blocked_accounts resources :mutes, only: :index, controller: :muted_accounts + resources :lists, only: :index, controller: :lists + resources :domain_blocks, only: :index, controller: :blocked_domains end resource :two_factor_authentication, only: [:show, :create, :destroy] @@ -133,9 +138,10 @@ Rails.application.routes.draw do get '/dashboard', to: 'dashboard#index' resources :subscriptions, only: [:index] - resources :domain_blocks, only: [:index, :new, :create, :show, :destroy] + resources :domain_blocks, only: [:new, :create, :show, :destroy] resources :email_domain_blocks, only: [:index, :new, :create, :destroy] resources :action_logs, only: [:index] + resources :warning_presets, except: [:new] resource :settings, only: [:edit, :update] resources :invites, only: [:index, :create, :destroy] do @@ -151,13 +157,16 @@ Rails.application.routes.draw do end end - resources :instances, only: [:index] do - collection do - post :resubscribe - end - end + resources :instances, only: [:index, :show], constraints: { id: /[^\/]+/ } + + resources :reports, only: [:index, :show] do + member do + post :assign_to_self + post :unassign + post :reopen + post :resolve + end - resources :reports, only: [:index, :show, :update] do resources :reported_statuses, only: [:create] end @@ -168,17 +177,19 @@ Rails.application.routes.draw do post :subscribe post :unsubscribe post :enable - post :disable + post :unsilence + post :unsuspend post :redownload post :remove_avatar + post :remove_header post :memorialize end resource :change_email, only: [:show, :update] resource :reset, only: [:create] - resource :silence, only: [:create, :destroy] - resource :suspension, only: [:new, :create, :destroy] - resources :statuses, only: [:index, :create, :update, :destroy] + resource :action, only: [:new, :create], controller: 'account_actions' + resources :statuses, only: [:index, :show, :create, :update, :destroy] + resources :followers, only: [:index] resource :confirmation, only: [:create] do collection do @@ -207,6 +218,13 @@ Rails.application.routes.draw do end resources :account_moderation_notes, only: [:create, :destroy] + + resources :tags, only: [:index] do + member do + post :hide + post :unhide + end + end end get '/admin', to: redirect('/admin/dashboard', status: 302) @@ -261,6 +279,7 @@ Rails.application.routes.draw do resources :streaming, only: [:index] resources :custom_emojis, only: [:index] resources :suggestions, only: [:index, :destroy] + resources :scheduled_statuses, only: [:index, :show, :update, :destroy] resources :conversations, only: [:index, :destroy] do member do @@ -317,7 +336,7 @@ Rails.application.routes.draw do resources :relationships, only: :index end - resources :accounts, only: [:show] do + resources :accounts, only: [:create, :show] do resources :statuses, only: :index, controller: 'accounts/statuses' resources :followers, only: :index, controller: 'accounts/follower_accounts' resources :following, only: :index, controller: 'accounts/following_accounts' diff --git a/config/settings.yml b/config/settings.yml index 2bc9fe289..4f7c2c8f3 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -1,11 +1,6 @@ -# config/app.yml for rails-settings-cached -# -# This file contains default values, and does not need to be edited -# when configuring an instance. These settings may be changed by an -# Administrator using the Web UI. -# -# For more information, see docs/Running-Mastodon/Administration-guide.md -# +# This file contains default values, and does not need to be edited. All +# important settings can be changed from the admin interface. + defaults: &defaults site_title: Mastodon site_short_description: '' @@ -15,6 +10,7 @@ defaults: &defaults site_contact_username: '' site_contact_email: '' open_registrations: true + profile_directory: true closed_registrations_message: '' open_deletion: true min_invite_role: 'admin' @@ -33,6 +29,7 @@ defaults: &defaults system_font_ui: false noindex: false theme: 'default' + aggregate_reblogs: true notification_emails: follow: false reblog: false @@ -52,11 +49,14 @@ defaults: &defaults - root - webmaster - administrator + - mod + - moderator disallowed_hashtags: # space separated string or list of hashtags without the hash bootstrap_timeline_accounts: '' activity_api_enabled: true peers_api_enabled: true show_known_fediverse_at_about_page: true + development: <<: *defaults diff --git a/config/sidekiq.yml b/config/sidekiq.yml index c44af5b6c..0ec1742ab 100644 --- a/config/sidekiq.yml +++ b/config/sidekiq.yml @@ -6,6 +6,9 @@ - [mailers, 2] - [pull] :schedule: + scheduled_statuses_scheduler: + every: '5m' + class: Scheduler::ScheduledStatusesScheduler subscriptions_scheduler: cron: '<%= Random.rand(0..59) %> <%= Random.rand(4..6) %> * * *' class: Scheduler::SubscriptionsScheduler diff --git a/config/webpack/loaders/sass.js b/config/webpack/loaders/sass.js index bad09ceb4..67a1890b8 100644 --- a/config/webpack/loaders/sass.js +++ b/config/webpack/loaders/sass.js @@ -1,22 +1,23 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const { env } = require('../configuration.js'); module.exports = { test: /\.s?css$/i, use: [ MiniCssExtractPlugin.loader, - { - loader: 'css-loader', - options: { - minimize: env.NODE_ENV === 'production', - }, - }, + 'css-loader', { loader: 'postcss-loader', options: { sourceMap: true, }, }, - 'sass-loader', + { + loader: 'sass-loader', + options: { + fiber: require('fibers'), + implementation: require('sass'), + sourceMap: true, + }, + }, ], }; diff --git a/config/webpack/production.js b/config/webpack/production.js index 30147cfe3..d37e11792 100644 --- a/config/webpack/production.js +++ b/config/webpack/production.js @@ -3,6 +3,7 @@ const merge = require('webpack-merge'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); +const zopfli = require('@gfx/zopfli'); const sharedConfig = require('./shared.js'); const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; const OfflinePlugin = require('offline-plugin'); @@ -10,16 +11,6 @@ const { publicPath } = require('./configuration.js'); const path = require('path'); const { URL } = require('url'); -let compressionAlgorithm; -try { - const zopfli = require('node-zopfli'); - compressionAlgorithm = (content, options, fn) => { - zopfli.gzip(content, options, fn); - }; -} catch (error) { - compressionAlgorithm = 'gzip'; -} - let attachmentHost; if (process.env.S3_ENABLED === 'true') { @@ -69,7 +60,9 @@ module.exports = merge(sharedConfig, { plugins: [ new CompressionPlugin({ - algorithm: compressionAlgorithm, + algorithm(input, compressionOptions, callback) { + return zopfli.gzip(input, compressionOptions, callback); + }, test: /\.(js|css|html|json|ico|svg|eot|otf|ttf)$/, }), new BundleAnalyzerPlugin({ // generates report.html and stats.json diff --git a/config/webpack/shared.js b/config/webpack/shared.js index a1572665c..d6199373b 100644 --- a/config/webpack/shared.js +++ b/config/webpack/shared.js @@ -4,7 +4,7 @@ const webpack = require('webpack'); const { basename, dirname, join, relative, resolve } = require('path'); const { sync } = require('glob'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const ManifestPlugin = require('webpack-manifest-plugin'); +const AssetsManifestPlugin = require('webpack-assets-manifest'); const extname = require('path-complete-extname'); const { env, settings, themes, output, loadersDir } = require('./configuration.js'); const localePackPaths = require('./generateLocalePacks'); @@ -75,10 +75,9 @@ module.exports = { new MiniCssExtractPlugin({ filename: env.NODE_ENV === 'production' ? '[name]-[contenthash].css' : '[name].css', }), - new ManifestPlugin({ - publicPath: output.publicPath, - writeToFileEmit: true, - filter: file => !file.isAsset || file.isModuleAsset, + new AssetsManifestPlugin({ + publicPath: true, + writeToDisk: true, }), ], diff --git a/db/migrate/20181116165755_create_account_stats.rb b/db/migrate/20181116165755_create_account_stats.rb new file mode 100644 index 000000000..a798e8166 --- /dev/null +++ b/db/migrate/20181116165755_create_account_stats.rb @@ -0,0 +1,12 @@ +class CreateAccountStats < ActiveRecord::Migration[5.2] + def change + create_table :account_stats do |t| + t.belongs_to :account, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } + t.bigint :statuses_count, null: false, default: 0 + t.bigint :following_count, null: false, default: 0 + t.bigint :followers_count, null: false, default: 0 + + t.timestamps + end + end +end diff --git a/db/migrate/20181116173541_copy_account_stats.rb b/db/migrate/20181116173541_copy_account_stats.rb new file mode 100644 index 000000000..bb523fbbd --- /dev/null +++ b/db/migrate/20181116173541_copy_account_stats.rb @@ -0,0 +1,54 @@ +class CopyAccountStats < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def up + safety_assured do + if supports_upsert? + up_fast + else + up_slow + end + end + end + + def down + # Nothing + end + + private + + def supports_upsert? + version = select_one("SELECT current_setting('server_version_num') AS v")['v'].to_i + version >= 90500 + end + + def up_fast + say 'Upsert is available, importing counters using the fast method' + + Account.unscoped.select('id').find_in_batches(batch_size: 5_000) do |accounts| + execute <<-SQL.squish + INSERT INTO account_stats (account_id, statuses_count, following_count, followers_count, created_at, updated_at) + SELECT id, statuses_count, following_count, followers_count, created_at, updated_at + FROM accounts + WHERE id IN (#{accounts.map(&:id).join(', ')}) + ON CONFLICT (account_id) DO UPDATE + SET statuses_count = EXCLUDED.statuses_count, following_count = EXCLUDED.following_count, followers_count = EXCLUDED.followers_count + SQL + end + end + + def up_slow + say 'Upsert is not available in PostgreSQL below 9.5, falling back to slow import of counters' + + # We cannot use bulk INSERT or overarching transactions here because of possible + # uniqueness violations that we need to skip over + Account.unscoped.select('id, statuses_count, following_count, followers_count, created_at, updated_at').find_each do |account| + begin + params = [[nil, account.id], [nil, account.statuses_count], [nil, account.following_count], [nil, account.followers_count], [nil, account.created_at], [nil, account.updated_at]] + exec_insert('INSERT INTO account_stats (account_id, statuses_count, following_count, followers_count, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6)', nil, params) + rescue ActiveRecord::RecordNotUnique + next + end + end + end +end diff --git a/db/migrate/20181127130500_identity_id_to_bigint.rb b/db/migrate/20181127130500_identity_id_to_bigint.rb new file mode 100644 index 000000000..5f388aca7 --- /dev/null +++ b/db/migrate/20181127130500_identity_id_to_bigint.rb @@ -0,0 +1,27 @@ +require Rails.root.join('lib', 'mastodon', 'migration_helpers') + +class IdentityIdToBigint < ActiveRecord::Migration[5.2] + include Mastodon::MigrationHelpers + + disable_ddl_transaction! + + def up + safety_assured do + change_column_type_concurrently :identities, :id, :bigint + cleanup_concurrent_column_type_change :identities, :id + + change_column_type_concurrently :identities, :user_id, :bigint + cleanup_concurrent_column_type_change :identities, :user_id + end + end + + def down + safety_assured do + change_column_type_concurrently :identities, :id, :integer + cleanup_concurrent_column_type_change :identities, :id + + change_column_type_concurrently :identities, :user_id, :integer + cleanup_concurrent_column_type_change :identities, :user_id + end + end +end diff --git a/db/migrate/20181203003808_create_accounts_tags_join_table.rb b/db/migrate/20181203003808_create_accounts_tags_join_table.rb new file mode 100644 index 000000000..3c275c2b7 --- /dev/null +++ b/db/migrate/20181203003808_create_accounts_tags_join_table.rb @@ -0,0 +1,8 @@ +class CreateAccountsTagsJoinTable < ActiveRecord::Migration[5.2] + def change + create_join_table :accounts, :tags do |t| + t.index [:account_id, :tag_id] + t.index [:tag_id, :account_id], unique: true + end + end +end diff --git a/db/migrate/20181203021853_add_discoverable_to_accounts.rb b/db/migrate/20181203021853_add_discoverable_to_accounts.rb new file mode 100644 index 000000000..5bbae2203 --- /dev/null +++ b/db/migrate/20181203021853_add_discoverable_to_accounts.rb @@ -0,0 +1,5 @@ +class AddDiscoverableToAccounts < ActiveRecord::Migration[5.2] + def change + add_column :accounts, :discoverable, :boolean + end +end diff --git a/db/migrate/20181204193439_add_last_status_at_to_account_stats.rb b/db/migrate/20181204193439_add_last_status_at_to_account_stats.rb new file mode 100644 index 000000000..946662707 --- /dev/null +++ b/db/migrate/20181204193439_add_last_status_at_to_account_stats.rb @@ -0,0 +1,5 @@ +class AddLastStatusAtToAccountStats < ActiveRecord::Migration[5.2] + def change + add_column :account_stats, :last_status_at, :datetime + end +end diff --git a/db/migrate/20181204215309_create_account_tag_stats.rb b/db/migrate/20181204215309_create_account_tag_stats.rb new file mode 100644 index 000000000..15ed8587e --- /dev/null +++ b/db/migrate/20181204215309_create_account_tag_stats.rb @@ -0,0 +1,11 @@ +class CreateAccountTagStats < ActiveRecord::Migration[5.2] + def change + create_table :account_tag_stats do |t| + t.belongs_to :tag, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } + t.bigint :accounts_count, default: 0, null: false + t.boolean :hidden, default: false, null: false + + t.timestamps + end + end +end diff --git a/db/migrate/20181207011115_downcase_custom_emoji_domains.rb b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb new file mode 100644 index 000000000..65f1fc8d9 --- /dev/null +++ b/db/migrate/20181207011115_downcase_custom_emoji_domains.rb @@ -0,0 +1,15 @@ +class DowncaseCustomEmojiDomains < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def up + duplicates = CustomEmoji.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM custom_emojis GROUP BY shortcode, lower(domain) HAVING count(*) > 1').to_hash + + duplicates.each do |row| + CustomEmoji.where(id: row['ids'].split(',')[0...-1]).destroy_all + end + + CustomEmoji.in_batches.update_all('domain = lower(domain)') + end + + def down; end +end diff --git a/db/migrate/20181213184704_create_account_warnings.rb b/db/migrate/20181213184704_create_account_warnings.rb new file mode 100644 index 000000000..e768be277 --- /dev/null +++ b/db/migrate/20181213184704_create_account_warnings.rb @@ -0,0 +1,12 @@ +class CreateAccountWarnings < ActiveRecord::Migration[5.2] + def change + create_table :account_warnings do |t| + t.belongs_to :account, foreign_key: { on_delete: :nullify } + t.belongs_to :target_account, foreign_key: { to_table: 'accounts', on_delete: :cascade } + t.integer :action, null: false, default: 0 + t.text :text, null: false, default: '' + + t.timestamps + end + end +end diff --git a/db/migrate/20181213185533_create_account_warning_presets.rb b/db/migrate/20181213185533_create_account_warning_presets.rb new file mode 100644 index 000000000..9c81f1b5e --- /dev/null +++ b/db/migrate/20181213185533_create_account_warning_presets.rb @@ -0,0 +1,9 @@ +class CreateAccountWarningPresets < ActiveRecord::Migration[5.2] + def change + create_table :account_warning_presets do |t| + t.text :text, null: false, default: '' + + t.timestamps + end + end +end diff --git a/db/migrate/20181219235220_add_created_by_application_id_to_users.rb b/db/migrate/20181219235220_add_created_by_application_id_to_users.rb new file mode 100644 index 000000000..17ce900af --- /dev/null +++ b/db/migrate/20181219235220_add_created_by_application_id_to_users.rb @@ -0,0 +1,8 @@ +class AddCreatedByApplicationIdToUsers < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_reference :users, :created_by_application, foreign_key: { to_table: 'oauth_applications', on_delete: :nullify }, index: false + add_index :users, :created_by_application_id, algorithm: :concurrently + end +end diff --git a/db/migrate/20181226021420_add_also_known_as_to_accounts.rb b/db/migrate/20181226021420_add_also_known_as_to_accounts.rb new file mode 100644 index 000000000..1fd956680 --- /dev/null +++ b/db/migrate/20181226021420_add_also_known_as_to_accounts.rb @@ -0,0 +1,5 @@ +class AddAlsoKnownAsToAccounts < ActiveRecord::Migration[5.2] + def change + add_column :accounts, :also_known_as, :string, array: true + end +end diff --git a/db/migrate/20190103124649_create_scheduled_statuses.rb b/db/migrate/20190103124649_create_scheduled_statuses.rb new file mode 100644 index 000000000..2b78073b8 --- /dev/null +++ b/db/migrate/20190103124649_create_scheduled_statuses.rb @@ -0,0 +1,9 @@ +class CreateScheduledStatuses < ActiveRecord::Migration[5.2] + def change + create_table :scheduled_statuses do |t| + t.belongs_to :account, foreign_key: { on_delete: :cascade } + t.datetime :scheduled_at, index: true + t.jsonb :params + end + end +end diff --git a/db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb b/db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb new file mode 100644 index 000000000..6f6cf2351 --- /dev/null +++ b/db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb @@ -0,0 +1,8 @@ +class AddScheduledStatusIdToMediaAttachments < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + add_reference :media_attachments, :scheduled_status, foreign_key: { on_delete: :nullify }, index: false + add_index :media_attachments, :scheduled_status_id, algorithm: :concurrently + end +end diff --git a/db/migrate/20190117114553_create_tombstones.rb b/db/migrate/20190117114553_create_tombstones.rb new file mode 100644 index 000000000..06d6d8c5a --- /dev/null +++ b/db/migrate/20190117114553_create_tombstones.rb @@ -0,0 +1,12 @@ +class CreateTombstones < ActiveRecord::Migration[5.2] + def change + create_table :tombstones do |t| + t.belongs_to :account, foreign_key: { on_delete: :cascade } + t.string :uri, null: false + + t.timestamps + end + + add_index :tombstones, :uri + end +end diff --git a/db/post_migrate/20181116184611_copy_account_stats_cleanup.rb b/db/post_migrate/20181116184611_copy_account_stats_cleanup.rb new file mode 100644 index 000000000..9267e9b2c --- /dev/null +++ b/db/post_migrate/20181116184611_copy_account_stats_cleanup.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class CopyAccountStatsCleanup < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def change + safety_assured do + remove_column :accounts, :statuses_count, :integer, default: 0, null: false + remove_column :accounts, :following_count, :integer, default: 0, null: false + remove_column :accounts, :followers_count, :integer, default: 0, null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index a59f71c46..deab273c6 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2018_10_26_034033) do +ActiveRecord::Schema.define(version: 2019_01_17_114553) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -56,6 +56,43 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.index ["target_account_id"], name: "index_account_pins_on_target_account_id" end + create_table "account_stats", force: :cascade do |t| + t.bigint "account_id", null: false + t.bigint "statuses_count", default: 0, null: false + t.bigint "following_count", default: 0, null: false + t.bigint "followers_count", default: 0, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.datetime "last_status_at" + t.index ["account_id"], name: "index_account_stats_on_account_id", unique: true + end + + create_table "account_tag_stats", force: :cascade do |t| + t.bigint "tag_id", null: false + t.bigint "accounts_count", default: 0, null: false + t.boolean "hidden", default: false, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["tag_id"], name: "index_account_tag_stats_on_tag_id", unique: true + end + + create_table "account_warning_presets", force: :cascade do |t| + t.text "text", default: "", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "account_warnings", force: :cascade do |t| + t.bigint "account_id" + t.bigint "target_account_id" + t.integer "action", default: 0, null: false + t.text "text", default: "", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["account_id"], name: "index_account_warnings_on_account_id" + t.index ["target_account_id"], name: "index_account_warnings_on_target_account_id" + end + create_table "accounts", force: :cascade do |t| t.string "username", default: "", null: false t.string "domain" @@ -85,9 +122,6 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.boolean "suspended", default: false, null: false t.boolean "locked", default: false, null: false t.string "header_remote_url", default: "", null: false - t.integer "statuses_count", default: 0, null: false - t.integer "followers_count", default: 0, null: false - t.integer "following_count", default: 0, null: false t.datetime "last_webfingered_at" t.string "inbox_url", default: "", null: false t.string "outbox_url", default: "", null: false @@ -99,6 +133,8 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.string "featured_collection_url" t.jsonb "fields" t.string "actor_type" + t.boolean "discoverable" + t.string "also_known_as", array: true t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin t.index "lower((username)::text), lower((domain)::text)", name: "index_accounts_on_username_and_domain_lower", unique: true t.index ["moved_to_account_id"], name: "index_accounts_on_moved_to_account_id" @@ -106,6 +142,13 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.index ["url"], name: "index_accounts_on_url" end + create_table "accounts_tags", id: false, force: :cascade do |t| + t.bigint "account_id", null: false + t.bigint "tag_id", null: false + t.index ["account_id", "tag_id"], name: "index_accounts_tags_on_account_id_and_tag_id" + t.index ["tag_id", "account_id"], name: "index_accounts_tags_on_tag_id_and_account_id", unique: true + end + create_table "admin_action_logs", force: :cascade do |t| t.bigint "account_id" t.string "action", default: "", null: false @@ -228,12 +271,12 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.index ["target_account_id"], name: "index_follows_on_target_account_id" end - create_table "identities", id: :serial, force: :cascade do |t| - t.integer "user_id" + create_table "identities", force: :cascade do |t| t.string "provider", default: "", null: false t.string "uid", default: "", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.bigint "user_id" t.index ["user_id"], name: "index_identities_on_user_id" end @@ -293,7 +336,9 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.json "file_meta" t.bigint "account_id" t.text "description" + t.bigint "scheduled_status_id" t.index ["account_id"], name: "index_media_attachments_on_account_id" + t.index ["scheduled_status_id"], name: "index_media_attachments_on_scheduled_status_id" t.index ["shortcode"], name: "index_media_attachments_on_shortcode", unique: true t.index ["status_id"], name: "index_media_attachments_on_status_id" end @@ -445,6 +490,14 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.index ["target_account_id"], name: "index_reports_on_target_account_id" end + create_table "scheduled_statuses", force: :cascade do |t| + t.bigint "account_id" + t.datetime "scheduled_at" + t.jsonb "params" + t.index ["account_id"], name: "index_scheduled_statuses_on_account_id" + t.index ["scheduled_at"], name: "index_scheduled_statuses_on_scheduled_at" + end + create_table "session_activations", force: :cascade do |t| t.string "session_id", null: false t.datetime "created_at", null: false @@ -563,6 +616,15 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.index ["name"], name: "index_tags_on_name", unique: true end + create_table "tombstones", force: :cascade do |t| + t.bigint "account_id" + t.string "uri", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["account_id"], name: "index_tombstones_on_account_id" + t.index ["uri"], name: "index_tombstones_on_uri" + end + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.datetime "created_at", null: false @@ -596,8 +658,10 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do t.bigint "invite_id" t.string "remember_token" t.string "chosen_languages", array: true + t.bigint "created_by_application_id" t.index ["account_id"], name: "index_users_on_account_id" t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true + t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id" t.index ["email"], name: "index_users_on_email", unique: true t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end @@ -630,6 +694,10 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do add_foreign_key "account_moderation_notes", "accounts", column: "target_account_id" add_foreign_key "account_pins", "accounts", column: "target_account_id", on_delete: :cascade add_foreign_key "account_pins", "accounts", on_delete: :cascade + add_foreign_key "account_stats", "accounts", on_delete: :cascade + add_foreign_key "account_tag_stats", "tags", on_delete: :cascade + add_foreign_key "account_warnings", "accounts", column: "target_account_id", on_delete: :cascade + add_foreign_key "account_warnings", "accounts", on_delete: :nullify add_foreign_key "accounts", "accounts", column: "moved_to_account_id", on_delete: :nullify add_foreign_key "admin_action_logs", "accounts", on_delete: :cascade add_foreign_key "backups", "users", on_delete: :nullify @@ -644,7 +712,7 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do add_foreign_key "follow_requests", "accounts", name: "fk_76d644b0e7", on_delete: :cascade add_foreign_key "follows", "accounts", column: "target_account_id", name: "fk_745ca29eac", on_delete: :cascade add_foreign_key "follows", "accounts", name: "fk_32ed1b5560", on_delete: :cascade - add_foreign_key "identities", "users", on_delete: :cascade + add_foreign_key "identities", "users", name: "fk_bea040f377", on_delete: :cascade add_foreign_key "imports", "accounts", name: "fk_6db1b6e408", on_delete: :cascade add_foreign_key "invites", "users", on_delete: :cascade add_foreign_key "list_accounts", "accounts", on_delete: :cascade @@ -652,6 +720,7 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do add_foreign_key "list_accounts", "lists", on_delete: :cascade add_foreign_key "lists", "accounts", on_delete: :cascade add_foreign_key "media_attachments", "accounts", name: "fk_96dd81e81b", on_delete: :nullify + add_foreign_key "media_attachments", "scheduled_statuses", on_delete: :nullify add_foreign_key "media_attachments", "statuses", on_delete: :nullify add_foreign_key "mentions", "accounts", name: "fk_970d43f9d1", on_delete: :cascade add_foreign_key "mentions", "statuses", on_delete: :cascade @@ -670,6 +739,7 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do add_foreign_key "reports", "accounts", column: "assigned_account_id", on_delete: :nullify add_foreign_key "reports", "accounts", column: "target_account_id", name: "fk_eb37af34f0", on_delete: :cascade add_foreign_key "reports", "accounts", name: "fk_4b81f7522c", on_delete: :cascade + add_foreign_key "scheduled_statuses", "accounts", on_delete: :cascade add_foreign_key "session_activations", "oauth_access_tokens", column: "access_token_id", name: "fk_957e5bda89", on_delete: :cascade add_foreign_key "session_activations", "users", name: "fk_e5fda67334", on_delete: :cascade add_foreign_key "status_pins", "accounts", name: "fk_d4cb435b62", on_delete: :cascade @@ -683,8 +753,10 @@ ActiveRecord::Schema.define(version: 2018_10_26_034033) do add_foreign_key "statuses_tags", "tags", name: "fk_3081861e21", on_delete: :cascade add_foreign_key "stream_entries", "accounts", name: "fk_5659b17554", on_delete: :cascade add_foreign_key "subscriptions", "accounts", name: "fk_9847d1cbb5", on_delete: :cascade + add_foreign_key "tombstones", "accounts", on_delete: :cascade add_foreign_key "users", "accounts", name: "fk_50500f500d", on_delete: :cascade add_foreign_key "users", "invites", on_delete: :nullify + add_foreign_key "users", "oauth_applications", column: "created_by_application_id", on_delete: :nullify add_foreign_key "web_push_subscriptions", "oauth_access_tokens", column: "access_token_id", on_delete: :cascade add_foreign_key "web_push_subscriptions", "users", on_delete: :cascade add_foreign_key "web_settings", "users", name: "fk_11910667b2", on_delete: :cascade diff --git a/db/seeds.rb b/db/seeds.rb index 6adfeed8d..cf62ebf39 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -4,5 +4,5 @@ if Rails.env.development? domain = ENV['LOCAL_DOMAIN'] || Rails.configuration.x.local_domain admin = Account.where(username: 'admin').first_or_initialize(username: 'admin') admin.save(validate: false) - User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, admin: true, account: admin).save! + User.where(email: "admin@#{domain}").first_or_initialize(email: "admin@#{domain}", password: 'mastodonadmin', password_confirmation: 'mastodonadmin', confirmed_at: Time.now.utc, admin: true, account: admin, agreement: true).save! end diff --git a/docker-compose.yml b/docker-compose.yml index d9f80a38a..faa066149 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,8 @@ services: image: postgres:9.6-alpine networks: - internal_network + healthcheck: + test: ["CMD", "pg_isready", "-U", "postgres"] volumes: - ./postgres:/var/lib/postgresql/data @@ -14,6 +16,8 @@ services: image: redis:4.0-alpine networks: - internal_network + healthcheck: + test: ["CMD", "redis-cli", "ping"] volumes: - ./redis:/data @@ -24,6 +28,8 @@ services: # - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # networks: # - internal_network +# healthcheck: +# test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"] # volumes: # - ./elasticsearch:/usr/share/elasticsearch/data @@ -36,6 +42,8 @@ services: networks: - external_network - internal_network + healthcheck: + test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy off localhost:3000/api/v1/instance || exit 1"] ports: - "127.0.0.1:3000:3000" depends_on: @@ -54,6 +62,8 @@ services: networks: - external_network - internal_network + healthcheck: + test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy off localhost:4000/api/v1/streaming/health || exit 1"] ports: - "127.0.0.1:4000:4000" depends_on: @@ -78,14 +88,13 @@ services: ## http_proxy=http://privoxy:8118 ## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true # tor: -# build: https://github.com/usbsnowcrash/docker-tor.git +# image: sirboops/tor # networks: # - external_network # - internal_network # # privoxy: -# build: https://github.com/usbsnowcrash/docker-privoxy.git -# command: /opt/sbin/privoxy --no-daemon --user privoxy.privoxy /opt/config +# image: sirboops/privoxy # volumes: # - ./priv-config:/opt/config # networks: diff --git a/lib/cli.rb b/lib/cli.rb index a810c632a..6036adfbe 100644 --- a/lib/cli.rb +++ b/lib/cli.rb @@ -7,6 +7,7 @@ require_relative 'mastodon/accounts_cli' require_relative 'mastodon/feeds_cli' require_relative 'mastodon/settings_cli' require_relative 'mastodon/domains_cli' +require_relative 'mastodon/version' module Mastodon class CLI < Thor @@ -31,5 +32,12 @@ module Mastodon desc 'domains SUBCOMMAND ...ARGS', 'Manage account domains' subcommand 'domains', Mastodon::DomainsCLI + + map %w(--version -v) => :version + + desc 'version', 'Show version' + def version + say(Mastodon::Version.to_s) + end end end diff --git a/lib/json_ld/security.rb b/lib/json_ld/security.rb new file mode 100644 index 000000000..1230206f0 --- /dev/null +++ b/lib/json_ld/security.rb @@ -0,0 +1,50 @@ +# -*- encoding: utf-8 -*- +# frozen_string_literal: true +# This file generated automatically from https://w3id.org/security/v1 +require 'json/ld' +class JSON::LD::Context + add_preloaded("https://w3id.org/security/v1") do + new(processingMode: "json-ld-1.0", term_definitions: { + "CryptographicKey" => TermDefinition.new("CryptographicKey", id: "https://w3id.org/security#Key", simple: true), + "EcdsaKoblitzSignature2016" => TermDefinition.new("EcdsaKoblitzSignature2016", id: "https://w3id.org/security#EcdsaKoblitzSignature2016", simple: true), + "EncryptedMessage" => TermDefinition.new("EncryptedMessage", id: "https://w3id.org/security#EncryptedMessage", simple: true), + "GraphSignature2012" => TermDefinition.new("GraphSignature2012", id: "https://w3id.org/security#GraphSignature2012", simple: true), + "LinkedDataSignature2015" => TermDefinition.new("LinkedDataSignature2015", id: "https://w3id.org/security#LinkedDataSignature2015", simple: true), + "LinkedDataSignature2016" => TermDefinition.new("LinkedDataSignature2016", id: "https://w3id.org/security#LinkedDataSignature2016", simple: true), + "authenticationTag" => TermDefinition.new("authenticationTag", id: "https://w3id.org/security#authenticationTag", simple: true), + "canonicalizationAlgorithm" => TermDefinition.new("canonicalizationAlgorithm", id: "https://w3id.org/security#canonicalizationAlgorithm", simple: true), + "cipherAlgorithm" => TermDefinition.new("cipherAlgorithm", id: "https://w3id.org/security#cipherAlgorithm", simple: true), + "cipherData" => TermDefinition.new("cipherData", id: "https://w3id.org/security#cipherData", simple: true), + "cipherKey" => TermDefinition.new("cipherKey", id: "https://w3id.org/security#cipherKey", simple: true), + "created" => TermDefinition.new("created", id: "http://purl.org/dc/terms/created", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "creator" => TermDefinition.new("creator", id: "http://purl.org/dc/terms/creator", type_mapping: "@id"), + "dc" => TermDefinition.new("dc", id: "http://purl.org/dc/terms/", simple: true, prefix: true), + "digestAlgorithm" => TermDefinition.new("digestAlgorithm", id: "https://w3id.org/security#digestAlgorithm", simple: true), + "digestValue" => TermDefinition.new("digestValue", id: "https://w3id.org/security#digestValue", simple: true), + "domain" => TermDefinition.new("domain", id: "https://w3id.org/security#domain", simple: true), + "encryptionKey" => TermDefinition.new("encryptionKey", id: "https://w3id.org/security#encryptionKey", simple: true), + "expiration" => TermDefinition.new("expiration", id: "https://w3id.org/security#expiration", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "expires" => TermDefinition.new("expires", id: "https://w3id.org/security#expiration", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "id" => TermDefinition.new("id", id: "@id", simple: true), + "initializationVector" => TermDefinition.new("initializationVector", id: "https://w3id.org/security#initializationVector", simple: true), + "iterationCount" => TermDefinition.new("iterationCount", id: "https://w3id.org/security#iterationCount", simple: true), + "nonce" => TermDefinition.new("nonce", id: "https://w3id.org/security#nonce", simple: true), + "normalizationAlgorithm" => TermDefinition.new("normalizationAlgorithm", id: "https://w3id.org/security#normalizationAlgorithm", simple: true), + "owner" => TermDefinition.new("owner", id: "https://w3id.org/security#owner", type_mapping: "@id"), + "password" => TermDefinition.new("password", id: "https://w3id.org/security#password", simple: true), + "privateKey" => TermDefinition.new("privateKey", id: "https://w3id.org/security#privateKey", type_mapping: "@id"), + "privateKeyPem" => TermDefinition.new("privateKeyPem", id: "https://w3id.org/security#privateKeyPem", simple: true), + "publicKey" => TermDefinition.new("publicKey", id: "https://w3id.org/security#publicKey", type_mapping: "@id"), + "publicKeyPem" => TermDefinition.new("publicKeyPem", id: "https://w3id.org/security#publicKeyPem", simple: true), + "publicKeyService" => TermDefinition.new("publicKeyService", id: "https://w3id.org/security#publicKeyService", type_mapping: "@id"), + "revoked" => TermDefinition.new("revoked", id: "https://w3id.org/security#revoked", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "salt" => TermDefinition.new("salt", id: "https://w3id.org/security#salt", simple: true), + "sec" => TermDefinition.new("sec", id: "https://w3id.org/security#", simple: true, prefix: true), + "signature" => TermDefinition.new("signature", id: "https://w3id.org/security#signature", simple: true), + "signatureAlgorithm" => TermDefinition.new("signatureAlgorithm", id: "https://w3id.org/security#signingAlgorithm", simple: true), + "signatureValue" => TermDefinition.new("signatureValue", id: "https://w3id.org/security#signatureValue", simple: true), + "type" => TermDefinition.new("type", id: "@type", simple: true), + "xsd" => TermDefinition.new("xsd", id: "http://www.w3.org/2001/XMLSchema#", simple: true, prefix: true) + }) + end +end diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index 142436c19..dca31cdca 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -73,7 +73,7 @@ module Mastodon def create(username) account = Account.new(username: username) password = SecureRandom.hex - user = User.new(email: options[:email], password: password, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: Time.now.utc) + user = User.new(email: options[:email], password: password, agreement: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil) if options[:reattach] account = Account.find_local(username) || Account.new(username: username) @@ -176,7 +176,7 @@ module Mastodon end say("Deleting user with #{account.statuses_count} statuses, this might take a while...") - SuspendAccountService.new.call(account, remove_user: true) + SuspendAccountService.new.call(account, including_user: true) say('OK', :green) end @@ -242,8 +242,9 @@ module Mastodon end culled += 1 - say('.', :green, false) + say('+', :green, false) else + account.touch # Touch account even during dry run to avoid getting the account into the window again say('.', nil, false) end end @@ -299,6 +300,66 @@ module Mastodon end end + desc 'follow ACCT', 'Make all local accounts follow account specified by ACCT' + long_desc <<-LONG_DESC + Make all local accounts follow an account specified by ACCT. ACCT can be + a simple username, in case of a local user. It can also be in the format + username@domain, in case of a remote user. + LONG_DESC + def follow(acct) + target_account = ResolveAccountService.new.call(acct) + processed = 0 + failed = 0 + + if target_account.nil? + say("Target account (#{acct}) could not be resolved", :red) + exit(1) + end + + Account.local.without_suspended.find_each do |account| + begin + FollowService.new.call(account, target_account) + processed += 1 + say('.', :green, false) + rescue StandardError + failed += 1 + say('.', :red, false) + end + end + + say("OK, followed target from #{processed} accounts, skipped #{failed}", :green) + end + + desc 'unfollow ACCT', 'Make all local accounts unfollow account specified by ACCT' + long_desc <<-LONG_DESC + Make all local accounts unfollow an account specified by ACCT. ACCT can be + a simple username, in case of a local user. It can also be in the format + username@domain, in case of a remote user. + LONG_DESC + def unfollow(acct) + target_account = Account.find_remote(*acct.split('@')) + processed = 0 + failed = 0 + + if target_account.nil? + say("Target account (#{acct}) was not found", :red) + exit(1) + end + + target_account.followers.local.find_each do |account| + begin + UnfollowService.new.call(account, target_account) + processed += 1 + say('.', :green, false) + rescue StandardError + failed += 1 + say('.', :red, false) + end + end + + say("OK, unfollowed target from #{processed} accounts, skipped #{failed}", :green) + end + private def rotate_keys_for_account(account, delay = 0) @@ -308,8 +369,8 @@ module Mastodon end old_key = account.private_key - new_key = OpenSSL::PKey::RSA.new(2048).to_pem - account.update(private_key: new_key) + new_key = OpenSSL::PKey::RSA.new(2048) + account.update(private_key: new_key.to_pem, public_key: new_key.public_key.to_pem) ActivityPub::UpdateDistributionWorker.perform_in(delay, account.id, sign_with: old_key) end end diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb index a7a5caa11..303b8a94a 100644 --- a/lib/mastodon/domains_cli.rb +++ b/lib/mastodon/domains_cli.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require 'concurrent' require_relative '../../config/boot' require_relative '../../config/environment' require_relative 'cli_helper' @@ -22,11 +23,7 @@ module Mastodon dry_run = options[:dry_run] ? ' (DRY RUN)' : '' Account.where(domain: domain).find_each do |account| - unless options[:dry_run] - SuspendAccountService.new.call(account) - account.destroy - end - + SuspendAccountService.new.call(account, destroy: true) unless options[:dry_run] removed += 1 say('.', :green, false) end @@ -36,5 +33,115 @@ module Mastodon say say("Removed #{removed} accounts#{dry_run}", :green) end + + option :concurrency, type: :numeric, default: 50, aliases: [:c] + option :silent, type: :boolean, default: false, aliases: [:s] + option :format, type: :string, default: 'summary', aliases: [:f] + desc 'crawl [START]', 'Crawl all known peers, optionally beginning at START' + long_desc <<-LONG_DESC + Crawl the fediverse by using the Mastodon REST API endpoints that expose + all known peers, and collect statistics from those peers, as long as those + peers support those API endpoints. When no START is given, the command uses + this server's own database of known peers to seed the crawl. + + The --concurrency (-c) option controls the number of threads performing HTTP + requests at the same time. More threads means the crawl may complete faster. + + The --silent (-s) option controls progress output. + + The --format (-f) option controls how the data is displayed at the end. By + default (`summary`), a summary of the statistics is returned. The other options + are `domains`, which returns a newline-delimited list of all discovered peers, + and `json`, which dumps all the aggregated data raw. + LONG_DESC + def crawl(start = nil) + stats = Concurrent::Hash.new + processed = Concurrent::AtomicFixnum.new(0) + failed = Concurrent::AtomicFixnum.new(0) + start_at = Time.now.to_f + seed = start ? [start] : Account.remote.domains + + pool = Concurrent::ThreadPoolExecutor.new(min_threads: 0, max_threads: options[:concurrency], idletime: 10, auto_terminate: true, max_queue: 0) + + work_unit = ->(domain) do + next if stats.key?(domain) + stats[domain] = nil + processed.increment + + begin + Request.new(:get, "https://#{domain}/api/v1/instance").perform do |res| + next unless res.code == 200 + stats[domain] = Oj.load(res.to_s) + end + + Request.new(:get, "https://#{domain}/api/v1/instance/peers").perform do |res| + next unless res.code == 200 + + Oj.load(res.to_s).reject { |peer| stats.key?(peer) }.each do |peer| + pool.post(peer, &work_unit) + end + end + + Request.new(:get, "https://#{domain}/api/v1/instance/activity").perform do |res| + next unless res.code == 200 + stats[domain]['activity'] = Oj.load(res.to_s) + end + + say('.', :green, false) unless options[:silent] + rescue StandardError + failed.increment + say('.', :red, false) unless options[:silent] + end + end + + seed.each do |domain| + pool.post(domain, &work_unit) + end + + sleep 20 + sleep 20 until pool.queue_length.zero? + + pool.shutdown + pool.wait_for_termination(20) + ensure + pool.shutdown + + say unless options[:silent] + + case options[:format] + when 'summary' + stats_to_summary(stats, processed, failed, start_at) + when 'domains' + stats_to_domains(stats) + when 'json' + stats_to_json(stats) + end + end + + private + + def stats_to_summary(stats, processed, failed, start_at) + stats.compact! + + total_domains = stats.size + total_users = stats.reduce(0) { |sum, (_key, val)| val.is_a?(Hash) && val['stats'].is_a?(Hash) ? sum + val['stats']['user_count'].to_i : sum } + total_active = stats.reduce(0) { |sum, (_key, val)| val.is_a?(Hash) && val['activity'].is_a?(Array) && val['activity'].size > 2 && val['activity'][1].is_a?(Hash) ? sum + val['activity'][1]['logins'].to_i : sum } + total_joined = stats.reduce(0) { |sum, (_key, val)| val.is_a?(Hash) && val['activity'].is_a?(Array) && val['activity'].size > 2 && val['activity'][1].is_a?(Hash) ? sum + val['activity'][1]['registrations'].to_i : sum } + + say("Visited #{processed.value} domains, #{failed.value} failed (#{(Time.now.to_f - start_at).round}s elapsed)", :green) + say("Total servers: #{total_domains}", :green) + say("Total registered: #{total_users}", :green) + say("Total active last week: #{total_active}", :green) + say("Total joined last week: #{total_joined}", :green) + end + + def stats_to_domains(stats) + say(stats.keys.join("\n")) + end + + def stats_to_json(stats) + stats.compact! + say(Oj.dump(stats)) + end end end diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index 179d1b6b5..6152d5a09 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -6,6 +6,8 @@ require_relative 'cli_helper' module Mastodon class MediaCLI < Thor + include ActionView::Helpers::NumberHelper + def self.exit_on_failure? true end @@ -36,16 +38,19 @@ module Mastodon time_ago = options[:days].days.ago queued = 0 processed = 0 - dry_run = options[:dry_run] ? '(DRY RUN)' : '' + size = 0 + dry_run = options[:dry_run] ? '(DRY RUN)' : '' if options[:background] - MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments| + MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id, :file_file_size).reorder(nil).find_in_batches do |media_attachments| queued += media_attachments.size + size += media_attachments.reduce(0) { |sum, m| sum + (m.file_file_size || 0) } Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id)) unless options[:dry_run] end else MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).reorder(nil).find_in_batches do |media_attachments| media_attachments.each do |m| + size += m.file_file_size || 0 Maintenance::UncacheMediaWorker.new.perform(m) unless options[:dry_run] options[:verbose] ? say(m.id) : say('.', :green, false) processed += 1 @@ -56,9 +61,9 @@ module Mastodon say if options[:background] - say("Scheduled the deletion of #{queued} media attachments #{dry_run}", :green, true) + say("Scheduled the deletion of #{queued} media attachments (approx. #{number_to_human_size(size)}) #{dry_run}", :green, true) else - say("Removed #{processed} media attachments #{dry_run}", :green, true) + say("Removed #{processed} media attachments (approx. #{number_to_human_size(size)}) #{dry_run}", :green, true) end end end diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 2e39ad01e..abbc31178 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -9,11 +9,11 @@ module Mastodon end def minor - 6 + 7 end def patch - 1 + 0 end def pre diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index 625a6e55d..892afd898 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -15,7 +15,7 @@ end namespace :emojis do desc 'Generate a unicode to filename mapping' task :generate do - source = 'http://www.unicode.org/Public/emoji/5.0/emoji-test.txt' + source = 'http://www.unicode.org/Public/emoji/11.0/emoji-test.txt' codes = [] dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') @@ -43,6 +43,8 @@ namespace :emojis do existence_maps.each do |group| existing_one = group.key(true) + next if existing_one.nil? + group.each_key do |key| map[codepoints_to_unicode(key)] = codepoints_to_filename(existing_one) end diff --git a/lib/tasks/repo.rake b/lib/tasks/repo.rake index 367859e94..8ceec3085 100644 --- a/lib/tasks/repo.rake +++ b/lib/tasks/repo.rake @@ -1,10 +1,13 @@ # frozen_string_literal: true namespace :repo do - desc 'Generate the authors.md file' + desc 'Generate the AUTHORS.md file' task :authors do - file = File.open('AUTHORS.md', 'w') + file = File.open(Rails.root.join('AUTHORS.md'), 'w') file << <<~HEADER + Authors + ======= + Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon) and provided thanks to the work of the following contributors: @@ -27,4 +30,50 @@ namespace :repo do This document is provided for informational purposes only. Since it is only updated once per release, the version you are looking at may be currently out of date. To see the full list of contributors, consider looking at the [git history](https://github.com/tootsuite/mastodon/graphs/contributors) instead. FOOTER end + + desc 'Replace pull requests with authors in the CHANGELOG.md file' + task :changelog do + path = Rails.root.join('CHANGELOG.md') + tmp = Tempfile.new + + HttpLog.config.compact_log = true + + begin + File.open(path, 'r') do |file| + file.each_line do |line| + if line.start_with?('-') + new_line = line.gsub(/#([[:digit:]]+)*/) do |pull_request_reference| + pull_request_number = pull_request_reference[1..-1] + response = nil + + loop do + response = HTTP.headers('Authorization' => "token #{ENV['GITHUB_API_TOKEN']}").get("https://api.github.com/repos/tootsuite/mastodon/pulls/#{pull_request_number}") + + if response.code == 403 + sleep_for = (response.headers['X-RateLimit-Reset'].to_i - Time.now.to_i).abs + puts "Sleeping for #{sleep_for} seconds to get over rate limit" + sleep sleep_for + else + break + end + end + + pull_request = Oj.load(response.to_s) + "[#{pull_request['user']['login']}](#{pull_request['html_url']})" + end + + tmp.puts new_line + else + tmp.puts line + end + end + end + + tmp.close + FileUtils.mv(tmp.path, path) + ensure + tmp.close + tmp.unlink + end + end end diff --git a/nanobox/nginx-local.conf b/nanobox/nginx-local.conf index f56339cac..c0e883603 100644 --- a/nanobox/nginx-local.conf +++ b/nanobox/nginx-local.conf @@ -38,7 +38,7 @@ http { root /app/public; - client_max_body_size 8M; + client_max_body_size 80M; location / { try_files $uri @rails; diff --git a/nanobox/nginx-stream.conf.erb b/nanobox/nginx-stream.conf.erb index 2a047dd9f..12bcc8ca5 100644 --- a/nanobox/nginx-stream.conf.erb +++ b/nanobox/nginx-stream.conf.erb @@ -32,7 +32,7 @@ http { listen 8080; add_header Strict-Transport-Security "max-age=31536000"; - add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; + # add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; root /app/public; diff --git a/nanobox/nginx-web.conf.erb b/nanobox/nginx-web.conf.erb index 797201eab..d96f1bfc7 100644 --- a/nanobox/nginx-web.conf.erb +++ b/nanobox/nginx-web.conf.erb @@ -32,11 +32,11 @@ http { listen 8080; add_header Strict-Transport-Security "max-age=31536000"; - add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; + # add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests"; root /app/public; - client_max_body_size 8M; + client_max_body_size 80M; location / { try_files $uri @rails; diff --git a/package.json b/package.json index 7b162e576..5fa6fa8b7 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "build:production": "cross-env RAILS_ENV=production NODE_ENV=production ./bin/webpack", "manage:translations": "node ./config/webpack/translationRunner.js", "start": "node ./streaming/index.js", - "test": "npm-run-all test:lint test:jest", - "test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ streaming/", + "test": "${npm_execpath} run test:lint && ${npm_execpath} run test:jest", + "test:lint": "eslint --ext=js .", "test:jest": "cross-env NODE_ENV=test jest --coverage" }, "repository": { @@ -21,136 +21,139 @@ "browserslist": [ "last 2 versions", "IE >= 11", - "iOS >= 9" + "iOS >= 9", + "not dead" ], "private": true, "dependencies": { - "@babel/core": "^7.0.1", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-decorators": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-transform-react-inline-elements": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", + "@babel/core": "^7.2.2", + "@babel/plugin-proposal-class-properties": "^7.2.3", + "@babel/plugin-proposal-decorators": "^7.2.3", + "@babel/plugin-proposal-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-react-inline-elements": "^7.2.0", + "@babel/plugin-transform-react-jsx-self": "^7.2.0", + "@babel/plugin-transform-react-jsx-source": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.3", "@babel/preset-react": "^7.0.0", - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.2.0", + "@gfx/zopfli": "^1.0.10", "array-includes": "^3.0.3", - "autoprefixer": "^8.6.5", - "axios": "~0.16.2", + "autoprefixer": "^9.4.3", + "axios": "^0.18.0", "babel-core": "^7.0.0-bridge.0", - "babel-loader": "^8.0.2", + "babel-loader": "^8.0.4", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^3.0.1", - "babel-plugin-react-intl": "^3.0.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.15", + "babel-plugin-react-intl": "^3.0.1", + "babel-plugin-transform-react-remove-prop-types": "^0.4.21", + "babel-runtime": "^6.26.0", "classnames": "^2.2.5", "compression-webpack-plugin": "^2.0.0", "cross-env": "^5.1.4", - "css-loader": "^1.0.0", + "css-loader": "^2.1.0", + "cssnano": "^4.1.8", "detect-passive-events": "^1.0.2", - "dotenv": "^4.0.0", + "dotenv": "^6.2.0", "emoji-mart": "Gargron/emoji-mart#build", "es6-symbol": "^3.1.1", "escape-html": "^1.0.3", "exif-js": "^2.3.0", - "express": "^4.16.2", - "file-loader": "^2.0.0", + "express": "^4.16.4", + "fibers": "^3.1.1", + "file-loader": "^3.0.1", "font-awesome": "^4.7.0", "glob": "^7.1.1", "history": "^4.7.2", - "http-link-header": "^0.8.0", + "http-link-header": "^1.0.2", "immutable": "^3.8.2", "imports-loader": "^0.8.0", - "intersection-observer": "^0.5.0", + "intersection-observer": "^0.5.1", "intl": "^1.2.5", "intl-messageformat": "^2.2.0", "intl-relativeformat": "^2.1.0", "is-nan": "^1.2.1", "js-yaml": "^3.11.0", - "lodash": "^4.17.5", + "lodash": "^4.7.11", "mark-loader": "^0.1.6", - "marky": "^1.2.0", - "mini-css-extract-plugin": "^0.4.2", + "marky": "^1.2.1", + "mini-css-extract-plugin": "^0.5.0", "mkdirp": "^0.5.1", - "node-sass": "^4.9.2", - "npm-run-all": "^4.1.2", "npmlog": "^4.1.2", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.0.4", - "offline-plugin": "^5.0.5", + "offline-plugin": "^5.0.6", "path-complete-extname": "^1.0.0", "pg": "^6.4.0", "postcss-loader": "^3.0.0", "postcss-object-fit-images": "^1.1.2", - "postcss-smart-import": "^0.7.6", - "precss": "^3.1.2", "prop-types": "^15.5.10", "punycode": "^2.1.0", - "rails-ujs": "^5.2.0", - "react": "^16.5.0", - "react-dom": "^16.5.0", - "react-hotkeys": "^0.10.0", + "rails-ujs": "^5.2.2", + "react": "^16.7.0", + "react-dom": "^16.7.0", + "react-hotkeys": "^1.1.4", "react-immutable-proptypes": "^2.1.0", "react-immutable-pure-component": "^1.1.1", - "react-intl": "^2.4.0", + "react-intl": "^2.7.2", + "react-masonry-infinite": "^1.2.2", "react-motion": "^0.5.2", "react-notification": "^6.8.4", "react-overlays": "^0.8.3", - "react-redux": "^5.0.4", - "react-redux-loading-bar": "^2.9.3", + "react-redux": "^6.0.0", + "react-redux-loading-bar": "^4.0.8", "react-router-dom": "^4.1.1", "react-router-scroll-4": "^1.0.0-beta.1", + "react-select": "^2.2.0", "react-sparklines": "^1.7.0", - "react-swipeable-views": "^0.12.17", - "react-textarea-autosize": "^5.2.1", + "react-swipeable-views": "^0.13.0", + "react-textarea-autosize": "^7.1.0", "react-toggle": "^4.0.1", "redis": "^2.7.1", - "redux": "^3.7.1", + "redux": "^4.0.1", "redux-immutable": "^4.0.0", "redux-thunk": "^2.2.0", - "rellax": "^1.6.2", + "rellax": "^1.7.1", "requestidlecallback": "^0.3.0", - "reselect": "^3.0.1", + "reselect": "^4.0.0", "rimraf": "^2.6.1", + "sass": "^1.15.2", "sass-loader": "^7.0.3", - "stringz": "^0.3.0", - "style-loader": "^0.23.0", + "stringz": "^1.0.0", + "style-loader": "0.23.1", "substring-trie": "^1.0.2", "throng": "^4.0.0", "tiny-queue": "^0.2.1", - "uglifyjs-webpack-plugin": "^1.2.7", + "uglifyjs-webpack-plugin": "^2.1.1", "uuid": "^3.1.0", "uws": "10.148.0", - "webpack": "^4.18.0", - "webpack-bundle-analyzer": "^2.13.1", - "webpack-cli": "^3.0.8", - "webpack-manifest-plugin": "^2.0.4", - "webpack-merge": "^4.1.3", + "webpack": "^4.28.3", + "webpack-assets-manifest": "^3.1.1", + "webpack-bundle-analyzer": "^3.0.3", + "webpack-cli": "^3.1.2", + "webpack-merge": "^4.1.5", "websocket.js": "^0.1.12" }, "devDependencies": { - "babel-eslint": "^9.0.0", + "babel-eslint": "^10.0.1", "babel-jest": "^23.6.0", - "enzyme": "^3.6.0", - "enzyme-adapter-react-16": "^1.5.0", - "eslint": "^4.19.1", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-jsx-a11y": "^6.0.3", - "eslint-plugin-promise": "^3.8.0", - "eslint-plugin-react": "^7.8.2", + "enzyme": "^3.8.0", + "enzyme-adapter-react-16": "^1.7.1", + "eslint": "^5.11.1", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-jsx-a11y": "~6.1.2", + "eslint-plugin-promise": "~4.0.1", + "eslint-plugin-react": "~7.12.1", "jest": "^23.6.0", - "raf": "^3.4.0", + "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", - "react-test-renderer": "^16.5.0", - "webpack-dev-server": "^3.1.8", + "react-test-renderer": "^16.7.0", + "webpack-dev-server": "^3.1.14", "yargs": "^8.0.2" }, "optionalDependencies": { - "fsevents": "*", - "node-zopfli": "^2.0.2" + "fsevents": "*" } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 000000000..1c820c318 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +module.exports = ({ env }) => ({ + plugins: { + autoprefixer: {}, + 'postcss-object-fit-images': {}, + cssnano: env === 'production' ? {} : false, + }, +}); diff --git a/spec/controllers/activitypub/collections_controller_spec.rb b/spec/controllers/activitypub/collections_controller_spec.rb new file mode 100644 index 000000000..34114cc85 --- /dev/null +++ b/spec/controllers/activitypub/collections_controller_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::CollectionsController, type: :controller do + describe 'POST #show' do + let(:account) { Fabricate(:account) } + + context 'id is "featured"' do + it 'returns 200 with "application/activity+json"' do + post :show, params: { id: 'featured', account_username: account.username } + + expect(response).to have_http_status(200) + expect(response.content_type).to eq 'application/activity+json' + end + end + + context 'id is not "featured"' do + it 'returns 404' do + post :show, params: { id: 'hoge', account_username: account.username } + expect(response).to have_http_status(404) + end + end + end +end diff --git a/spec/controllers/activitypub/inboxes_controller_spec.rb b/spec/controllers/activitypub/inboxes_controller_spec.rb index 5c12fea7d..4055d9342 100644 --- a/spec/controllers/activitypub/inboxes_controller_spec.rb +++ b/spec/controllers/activitypub/inboxes_controller_spec.rb @@ -1,7 +1,29 @@ +# frozen_string_literal: true + require 'rails_helper' RSpec.describe ActivityPub::InboxesController, type: :controller do describe 'POST #create' do - pending + context 'if signed_request_account' do + it 'returns 202' do + allow(controller).to receive(:signed_request_account) do + Fabricate(:account) + end + + post :create + expect(response).to have_http_status(202) + end + end + + context 'not signed_request_account' do + it 'returns 401' do + allow(controller).to receive(:signed_request_account) do + false + end + + post :create + expect(response).to have_http_status(401) + end + end end end diff --git a/spec/controllers/admin/accounts_controller_spec.rb b/spec/controllers/admin/accounts_controller_spec.rb index ae9e058c8..a348ab3d7 100644 --- a/spec/controllers/admin/accounts_controller_spec.rb +++ b/spec/controllers/admin/accounts_controller_spec.rb @@ -24,8 +24,8 @@ RSpec.describe Admin::AccountsController, type: :controller do expect(h[:local]).to eq '1' expect(h[:remote]).to eq '1' expect(h[:by_domain]).to eq 'domain' + expect(h[:active]).to eq '1' expect(h[:silenced]).to eq '1' - expect(h[:alphabetic]).to eq '1' expect(h[:suspended]).to eq '1' expect(h[:username]).to eq 'username' expect(h[:display_name]).to eq 'display name' @@ -39,8 +39,8 @@ RSpec.describe Admin::AccountsController, type: :controller do local: '1', remote: '1', by_domain: 'domain', + active: '1', silenced: '1', - alphabetic: '1', suspended: '1', username: 'username', display_name: 'display name', @@ -191,58 +191,6 @@ RSpec.describe Admin::AccountsController, type: :controller do end end - describe 'POST #disable' do - subject { post :disable, params: { id: account.id } } - - let(:current_user) { Fabricate(:user, admin: current_user_admin) } - let(:account) { Fabricate(:account, user: user) } - let(:user) { Fabricate(:user, disabled: false, admin: target_user_admin) } - - context 'when user is admin' do - let(:current_user_admin) { true } - - context 'when target user is admin' do - let(:target_user_admin) { true } - - it 'fails to disable account' do - is_expected.to have_http_status :forbidden - expect(user.reload).not_to be_disabled - end - end - - context 'when target user is not admin' do - let(:target_user_admin) { false } - - it 'succeeds in disabling account' do - is_expected.to redirect_to admin_account_path(account.id) - expect(user.reload).to be_disabled - end - end - end - - context 'when user is not admin' do - let(:current_user_admin) { false } - - context 'when target user is admin' do - let(:target_user_admin) { true } - - it 'fails to disable account' do - is_expected.to have_http_status :forbidden - expect(user.reload).not_to be_disabled - end - end - - context 'when target user is not admin' do - let(:target_user_admin) { false } - - it 'fails to disable account' do - is_expected.to have_http_status :forbidden - expect(user.reload).not_to be_disabled - end - end - end - end - describe 'POST #redownload' do subject { post :redownload, params: { id: account.id } } diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb new file mode 100644 index 000000000..4720ed2e2 --- /dev/null +++ b/spec/controllers/admin/action_logs_controller_spec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::ActionLogsController, type: :controller do + describe 'GET #index' do + it 'returns 200' do + sign_in Fabricate(:user, admin: true) + get :index, params: { page: 1 } + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/admin/dashboard_controller_spec.rb b/spec/controllers/admin/dashboard_controller_spec.rb new file mode 100644 index 000000000..73b50e721 --- /dev/null +++ b/spec/controllers/admin/dashboard_controller_spec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe Admin::DashboardController, type: :controller do + describe 'GET #index' do + it 'returns 200' do + sign_in Fabricate(:user, admin: true) + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb index 79e7fea42..129bf8883 100644 --- a/spec/controllers/admin/domain_blocks_controller_spec.rb +++ b/spec/controllers/admin/domain_blocks_controller_spec.rb @@ -7,26 +7,6 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do sign_in Fabricate(:user, admin: true), scope: :user end - describe 'GET #index' do - around do |example| - default_per_page = DomainBlock.default_per_page - DomainBlock.paginates_per 1 - example.run - DomainBlock.paginates_per default_per_page - end - - it 'renders domain blocks' do - 2.times { Fabricate(:domain_block) } - - get :index, params: { page: 2 } - - assigned = assigns(:domain_blocks) - expect(assigned.count).to eq 1 - expect(assigned.klass).to be DomainBlock - expect(response).to have_http_status(200) - end - end - describe 'GET #new' do it 'assigns a new domain block' do get :new @@ -53,7 +33,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do expect(DomainBlockWorker).to have_received(:perform_async) expect(flash[:notice]).to eq I18n.t('admin.domain_blocks.created_msg') - expect(response).to redirect_to(admin_domain_blocks_path) + expect(response).to redirect_to(admin_instances_path(limited: '1')) end it 'renders new when failed to save' do @@ -76,7 +56,7 @@ RSpec.describe Admin::DomainBlocksController, type: :controller do expect(service).to have_received(:call).with(domain_block, true) expect(flash[:notice]).to eq I18n.t('admin.domain_blocks.destroyed_msg') - expect(response).to redirect_to(admin_domain_blocks_path) + expect(response).to redirect_to(admin_instances_path(limited: '1')) end end end diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb index 34b51a6aa..449a699e4 100644 --- a/spec/controllers/admin/invites_controller_spec.rb +++ b/spec/controllers/admin/invites_controller_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'rails_helper' describe Admin::InvitesController do @@ -40,4 +42,18 @@ describe Admin::InvitesController do expect(invite.reload).to be_expired end end + + describe 'POST #deactivate_all' do + it 'expires all invites, then redirects to admin_invites_path' do + invites = Fabricate.times(2, :invite, expires_at: nil) + + post :deactivate_all + + invites.each do |invite| + expect(invite.reload).to be_expired + end + + expect(response).to redirect_to admin_invites_path + end + end end diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb index bcc789c57..b428299ee 100644 --- a/spec/controllers/admin/reports_controller_spec.rb +++ b/spec/controllers/admin/reports_controller_spec.rb @@ -46,73 +46,37 @@ describe Admin::ReportsController do end end - describe 'PUT #update' do - describe 'with an unknown outcome' do - it 'rejects the change' do - report = Fabricate(:report) - put :update, params: { id: report, outcome: 'unknown' } + describe 'POST #reopen' do + it 'reopens the report' do + report = Fabricate(:report) - expect(response).to have_http_status(404) - end + put :reopen, params: { id: report } + expect(response).to redirect_to(admin_report_path(report)) + report.reload + expect(report.action_taken_by_account).to eq nil + expect(report.action_taken).to eq false end + end - describe 'with an outcome of `resolve`' do - it 'resolves the report' do - report = Fabricate(:report) + describe 'POST #assign_to_self' do + it 'reopens the report' do + report = Fabricate(:report) - put :update, params: { id: report, outcome: 'resolve' } - expect(response).to redirect_to(admin_reports_path) - report.reload - expect(report.action_taken_by_account).to eq user.account - expect(report.action_taken).to eq true - end + put :assign_to_self, params: { id: report } + expect(response).to redirect_to(admin_report_path(report)) + report.reload + expect(report.assigned_account).to eq user.account end + end - describe 'with an outsome of `silence`' do - it 'silences the reported account' do - report = Fabricate(:report) + describe 'POST #unassign' do + it 'reopens the report' do + report = Fabricate(:report) - put :update, params: { id: report, outcome: 'silence' } - expect(response).to redirect_to(admin_reports_path) - report.reload - expect(report.action_taken_by_account).to eq user.account - expect(report.action_taken).to eq true - expect(report.target_account).to be_silenced - end - end - - describe 'with an outsome of `reopen`' do - it 'reopens the report' do - report = Fabricate(:report) - - put :update, params: { id: report, outcome: 'reopen' } - expect(response).to redirect_to(admin_report_path(report)) - report.reload - expect(report.action_taken_by_account).to eq nil - expect(report.action_taken).to eq false - end - end - - describe 'with an outsome of `assign_to_self`' do - it 'reopens the report' do - report = Fabricate(:report) - - put :update, params: { id: report, outcome: 'assign_to_self' } - expect(response).to redirect_to(admin_report_path(report)) - report.reload - expect(report.assigned_account).to eq user.account - end - end - - describe 'with an outsome of `unassign`' do - it 'reopens the report' do - report = Fabricate(:report) - - put :update, params: { id: report, outcome: 'unassign' } - expect(response).to redirect_to(admin_report_path(report)) - report.reload - expect(report.assigned_account).to eq nil - end + put :unassign, params: { id: report } + expect(response).to redirect_to(admin_report_path(report)) + report.reload + expect(report.assigned_account).to eq nil end end end diff --git a/spec/controllers/admin/silences_controller_spec.rb b/spec/controllers/admin/silences_controller_spec.rb deleted file mode 100644 index 78560eb39..000000000 --- a/spec/controllers/admin/silences_controller_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require 'rails_helper' - -describe Admin::SilencesController do - render_views - - before do - sign_in Fabricate(:user, admin: true), scope: :user - end - - describe 'POST #create' do - it 'redirects to admin accounts page' do - account = Fabricate(:account, silenced: false) - - post :create, params: { account_id: account.id } - - account.reload - expect(account.silenced?).to eq true - expect(response).to redirect_to(admin_accounts_path) - end - end - - describe 'DELETE #destroy' do - it 'redirects to admin accounts page' do - account = Fabricate(:account, silenced: true) - - delete :destroy, params: { account_id: account.id } - - account.reload - expect(account.silenced?).to eq false - expect(response).to redirect_to(admin_accounts_path) - end - end -end diff --git a/spec/controllers/admin/suspensions_controller_spec.rb b/spec/controllers/admin/suspensions_controller_spec.rb deleted file mode 100644 index babb1ed96..000000000 --- a/spec/controllers/admin/suspensions_controller_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -require 'rails_helper' - -describe Admin::SuspensionsController do - render_views - - before do - sign_in Fabricate(:user, admin: true), scope: :user - end - - describe 'POST #create' do - it 'redirects to admin accounts page' do - account = Fabricate(:account, suspended: false) - expect(Admin::SuspensionWorker).to receive(:perform_async).with(account.id) - - post :create, params: { account_id: account.id, form_admin_suspension_confirmation: { acct: account.acct } } - - expect(response).to redirect_to(admin_accounts_path) - end - end - - describe 'DELETE #destroy' do - it 'redirects to admin accounts page' do - account = Fabricate(:account, suspended: true) - - delete :destroy, params: { account_id: account.id } - - account.reload - expect(account.suspended?).to eq false - expect(response).to redirect_to(admin_accounts_path) - end - end -end diff --git a/spec/controllers/admin/tags_controller_spec.rb b/spec/controllers/admin/tags_controller_spec.rb new file mode 100644 index 000000000..3af994071 --- /dev/null +++ b/spec/controllers/admin/tags_controller_spec.rb @@ -0,0 +1,71 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Admin::TagsController, type: :controller do + render_views + + before do + sign_in Fabricate(:user, admin: true) + end + + describe 'GET #index' do + before do + account_tag_stat = Fabricate(:tag).account_tag_stat + account_tag_stat.update(hidden: hidden, accounts_count: 1) + get :index, params: { hidden: hidden } + end + + context 'with hidden tags' do + let(:hidden) { true } + + it 'returns status 200' do + expect(response).to have_http_status(200) + end + end + + context 'without hidden tags' do + let(:hidden) { false } + + it 'returns status 200' do + expect(response).to have_http_status(200) + end + end + end + + describe 'POST #hide' do + let(:tag) { Fabricate(:tag) } + + before do + tag.account_tag_stat.update(hidden: false) + post :hide, params: { id: tag.id } + end + + it 'hides tag' do + tag.reload + expect(tag).to be_hidden + end + + it 'redirects to admin_tags_path' do + expect(response).to redirect_to(admin_tags_path(controller.instance_variable_get(:@filter_params))) + end + end + + describe 'POST #unhide' do + let(:tag) { Fabricate(:tag) } + + before do + tag.account_tag_stat.update(hidden: true) + post :unhide, params: { id: tag.id } + end + + it 'unhides tag' do + tag.reload + expect(tag).not_to be_hidden + end + + it 'redirects to admin_tags_path' do + expect(response).to redirect_to(admin_tags_path(controller.instance_variable_get(:@filter_params))) + end + end +end diff --git a/spec/controllers/api/v1/accounts/pins_controller_spec.rb b/spec/controllers/api/v1/accounts/pins_controller_spec.rb new file mode 100644 index 000000000..c71935df2 --- /dev/null +++ b/spec/controllers/api/v1/accounts/pins_controller_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Api::V1::Accounts::PinsController, type: :controller do + let(:john) { Fabricate(:user, account: Fabricate(:account, username: 'john')) } + let(:kevin) { Fabricate(:user, account: Fabricate(:account, username: 'kevin')) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: john.id, scopes: 'write:accounts') } + + before do + kevin.account.followers << john.account + allow(controller).to receive(:doorkeeper_token) { token } + end + + describe 'POST #create' do + subject { post :create, params: { account_id: kevin.account.id } } + + it 'returns 200' do + expect(response).to have_http_status(200) + end + + it 'creates account_pin' do + expect do + subject + end.to change { AccountPin.where(account: john.account, target_account: kevin.account).count }.by(1) + end + end + + describe 'DELETE #destroy' do + subject { delete :destroy, params: { account_id: kevin.account.id } } + + before do + Fabricate(:account_pin, account: john.account, target_account: kevin.account) + end + + it 'returns 200' do + expect(response).to have_http_status(200) + end + + it 'destroys account_pin' do + expect do + subject + end.to change { AccountPin.where(account: john.account, target_account: kevin.account).count }.by(-1) + end + end +end diff --git a/spec/controllers/api/v1/accounts_controller_spec.rb b/spec/controllers/api/v1/accounts_controller_spec.rb index c506fb5f0..f5f65c000 100644 --- a/spec/controllers/api/v1/accounts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts_controller_spec.rb @@ -19,6 +19,40 @@ RSpec.describe Api::V1::AccountsController, type: :controller do end end + describe 'POST #create' do + let(:app) { Fabricate(:application) } + let(:token) { Doorkeeper::AccessToken.find_or_create_for(app, nil, 'read write', nil, false) } + let(:agreement) { nil } + + before do + post :create, params: { username: 'test', password: '12345678', email: 'hello@world.tld', agreement: agreement } + end + + context 'given truthy agreement' do + let(:agreement) { 'true' } + + it 'returns http success' do + expect(response).to have_http_status(200) + end + + it 'returns a new access token as JSON' do + expect(body_as_json[:access_token]).to_not be_blank + end + + it 'creates a user' do + user = User.find_by(email: 'hello@world.tld') + expect(user).to_not be_nil + expect(user.created_by_application_id).to eq app.id + end + end + + context 'given no agreement' do + it 'returns http unprocessable entity' do + expect(response).to have_http_status(422) + end + end + end + describe 'GET #show' do let(:scopes) { 'read:accounts' } diff --git a/spec/controllers/api/v1/conversations_controller_spec.rb b/spec/controllers/api/v1/conversations_controller_spec.rb index 2e9525855..070f65061 100644 --- a/spec/controllers/api/v1/conversations_controller_spec.rb +++ b/spec/controllers/api/v1/conversations_controller_spec.rb @@ -15,7 +15,7 @@ RSpec.describe Api::V1::ConversationsController, type: :controller do let(:scopes) { 'read:statuses' } before do - PostStatusService.new.call(other.account, 'Hey @alice', nil, visibility: 'direct') + PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct') end it 'returns http success' do diff --git a/spec/controllers/api/v1/endorsements_controller_spec.rb b/spec/controllers/api/v1/endorsements_controller_spec.rb new file mode 100644 index 000000000..ad5ff400f --- /dev/null +++ b/spec/controllers/api/v1/endorsements_controller_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Api::V1::EndorsementsController, type: :controller do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') } + + describe 'GET #index' do + it 'returns 200' do + allow(controller).to receive(:doorkeeper_token) { token } + get :index + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/instances/activity_controller_spec.rb b/spec/controllers/api/v1/instances/activity_controller_spec.rb new file mode 100644 index 000000000..159792ee0 --- /dev/null +++ b/spec/controllers/api/v1/instances/activity_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Api::V1::Instances::ActivityController, type: :controller do + describe 'GET #show' do + it 'returns 200' do + get :show + expect(response).to have_http_status(200) + end + + context '!Setting.activity_api_enabled' do + it 'returns 404' do + Setting.activity_api_enabled = false + + get :show + expect(response).to have_http_status(404) + end + end + end +end diff --git a/spec/controllers/api/v1/instances/peers_controller_spec.rb b/spec/controllers/api/v1/instances/peers_controller_spec.rb new file mode 100644 index 000000000..12a214a83 --- /dev/null +++ b/spec/controllers/api/v1/instances/peers_controller_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Api::V1::Instances::PeersController, type: :controller do + describe 'GET #index' do + it 'returns 200' do + get :index + expect(response).to have_http_status(200) + end + + context '!Setting.peers_api_enabled' do + it 'returns 404' do + Setting.peers_api_enabled = false + + get :index + expect(response).to have_http_status(404) + end + end + end +end diff --git a/spec/controllers/api/v1/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb index f01fcd942..4e3037208 100644 --- a/spec/controllers/api/v1/media_controller_spec.rb +++ b/spec/controllers/api/v1/media_controller_spec.rb @@ -84,19 +84,17 @@ RSpec.describe Api::V1::MediaController, type: :controller do post :create, params: { file: fixture_file_upload('files/attachment.webm', 'video/webm') } end - xit 'returns http success' do + it do + # returns http success expect(response).to have_http_status(200) - end - xit 'creates a media attachment' do + # creates a media attachment expect(MediaAttachment.first).to_not be_nil - end - xit 'uploads a file' do + # uploads a file expect(MediaAttachment.first).to have_attached_file(:file) - end - xit 'returns media ID in JSON' do + # returns media ID in JSON expect(body_as_json[:id]).to eq MediaAttachment.first.id.to_s end end diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb index 9f679cb8a..d0f82e79f 100644 --- a/spec/controllers/api/v1/notifications_controller_spec.rb +++ b/spec/controllers/api/v1/notifications_controller_spec.rb @@ -50,9 +50,9 @@ RSpec.describe Api::V1::NotificationsController, type: :controller do let(:scopes) { 'read:notifications' } before do - first_status = PostStatusService.new.call(user.account, 'Test') + first_status = PostStatusService.new.call(user.account, text: 'Test') @reblog_of_first_status = ReblogService.new.call(other.account, first_status) - mentioning_status = PostStatusService.new.call(other.account, 'Hello @alice') + mentioning_status = PostStatusService.new.call(other.account, text: 'Hello @alice') @mention_from_status = mentioning_status.mentions.first @favourite = FavouriteService.new.call(other.account, first_status) @follow = FollowService.new.call(other.account, 'alice') diff --git a/spec/controllers/api/v1/timelines/direct_controller_spec.rb b/spec/controllers/api/v1/timelines/direct_controller_spec.rb new file mode 100644 index 000000000..a22c2cbea --- /dev/null +++ b/spec/controllers/api/v1/timelines/direct_controller_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Api::V1::Timelines::DirectController, type: :controller do + let(:user) { Fabricate(:user) } + let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses') } + + describe 'GET #show' do + it 'returns 200' do + allow(controller).to receive(:doorkeeper_token) { token } + get :show + + expect(response).to have_http_status(200) + end + end +end diff --git a/spec/controllers/api/v1/timelines/home_controller_spec.rb b/spec/controllers/api/v1/timelines/home_controller_spec.rb index 63d624c35..e953e4649 100644 --- a/spec/controllers/api/v1/timelines/home_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/home_controller_spec.rb @@ -17,7 +17,7 @@ describe Api::V1::Timelines::HomeController do describe 'GET #show' do before do follow = Fabricate(:follow, account: user.account) - PostStatusService.new.call(follow.target_account, 'New status for user home timeline.') + PostStatusService.new.call(follow.target_account, text: 'New status for user home timeline.') end it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/list_controller_spec.rb b/spec/controllers/api/v1/timelines/list_controller_spec.rb index 93a2be6e6..45e4bf34c 100644 --- a/spec/controllers/api/v1/timelines/list_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/list_controller_spec.rb @@ -19,7 +19,7 @@ describe Api::V1::Timelines::ListController do before do follow = Fabricate(:follow, account: user.account) list.accounts << follow.target_account - PostStatusService.new.call(follow.target_account, 'New status for user home timeline.') + PostStatusService.new.call(follow.target_account, text: 'New status for user home timeline.') end it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/public_controller_spec.rb b/spec/controllers/api/v1/timelines/public_controller_spec.rb index a0f778cdc..737aedba6 100644 --- a/spec/controllers/api/v1/timelines/public_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/public_controller_spec.rb @@ -16,7 +16,7 @@ describe Api::V1::Timelines::PublicController do describe 'GET #show' do before do - PostStatusService.new.call(user.account, 'New status from user for federated public timeline.') + PostStatusService.new.call(user.account, text: 'New status from user for federated public timeline.') end it 'returns http success' do @@ -29,7 +29,7 @@ describe Api::V1::Timelines::PublicController do describe 'GET #show with local only' do before do - PostStatusService.new.call(user.account, 'New status from user for local public timeline.') + PostStatusService.new.call(user.account, text: 'New status from user for local public timeline.') end it 'returns http success' do diff --git a/spec/controllers/api/v1/timelines/tag_controller_spec.rb b/spec/controllers/api/v1/timelines/tag_controller_spec.rb index 472779f54..f71ca2a39 100644 --- a/spec/controllers/api/v1/timelines/tag_controller_spec.rb +++ b/spec/controllers/api/v1/timelines/tag_controller_spec.rb @@ -16,7 +16,7 @@ describe Api::V1::Timelines::TagController do describe 'GET #show' do before do - PostStatusService.new.call(user.account, 'It is a #test') + PostStatusService.new.call(user.account, text: 'It is a #test') end it 'returns http success' do diff --git a/spec/controllers/authorize_interactions_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb index 81fd9ceb7..ce4257b68 100644 --- a/spec/controllers/authorize_interactions_controller_spec.rb +++ b/spec/controllers/authorize_interactions_controller_spec.rb @@ -99,10 +99,12 @@ describe AuthorizeInteractionsController do allow(ResolveAccountService).to receive(:new).and_return(service) allow(service).to receive(:call).with('user@hostname').and_return(target_account) + allow(service).to receive(:call).with(target_account, skip_webfinger: true).and_return(target_account) + post :create, params: { acct: 'acct:user@hostname' } - expect(service).to have_received(:call).with('user@hostname') + expect(service).to have_received(:call).with(target_account, skip_webfinger: true) expect(account.following?(target_account)).to be true expect(response).to render_template(:success) end diff --git a/spec/controllers/concerns/accountable_concern_spec.rb b/spec/controllers/concerns/accountable_concern_spec.rb new file mode 100644 index 000000000..e3c06b494 --- /dev/null +++ b/spec/controllers/concerns/accountable_concern_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AccountableConcern do + class Hoge + include AccountableConcern + attr_reader :current_account + + def initialize(current_account) + @current_account = current_account + end + end + + let(:user) { Fabricate(:user, account: Fabricate(:account)) } + let(:target) { Fabricate(:user, account: Fabricate(:account)) } + let(:hoge) { Hoge.new(user.account) } + + describe '#log_action' do + it 'creates Admin::ActionLog' do + expect do + hoge.log_action(:create, target.account) + end.to change { Admin::ActionLog.count }.by(1) + end + end +end diff --git a/spec/controllers/remote_interaction_controller_spec.rb b/spec/controllers/remote_interaction_controller_spec.rb new file mode 100644 index 000000000..bb0074b11 --- /dev/null +++ b/spec/controllers/remote_interaction_controller_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe RemoteInteractionController, type: :controller do + render_views + + let(:status) { Fabricate(:status) } + + describe 'GET #new' do + it 'returns 200' do + get :new, params: { id: status.id } + expect(response).to have_http_status(200) + end + end + + describe 'POST #create' do + context '@remote_follow is valid' do + it 'returns 302' do + allow_any_instance_of(RemoteFollow).to receive(:valid?) { true } + allow_any_instance_of(RemoteFollow).to receive(:addressable_template) do + Addressable::Template.new('https://hoge.com') + end + + post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } } + expect(response).to have_http_status(302) + end + end + + context '@remote_follow is invalid' do + it 'returns 200' do + allow_any_instance_of(RemoteFollow).to receive(:valid?) { false } + post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } } + + expect(response).to have_http_status(200) + end + end + end +end diff --git a/spec/controllers/settings/exports_controller_spec.rb b/spec/controllers/settings/exports_controller_spec.rb index b7cab4d8f..a46fe095d 100644 --- a/spec/controllers/settings/exports_controller_spec.rb +++ b/spec/controllers/settings/exports_controller_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'rails_helper' describe Settings::ExportsController do @@ -28,4 +30,23 @@ describe Settings::ExportsController do end end end + + describe 'POST #create' do + before do + sign_in Fabricate(:user), scope: :user + end + + it 'redirects to settings_export_path' do + post :create + expect(response).to redirect_to(settings_export_path) + end + + it 'queues BackupWorker job by 1' do + Sidekiq::Testing.fake! do + expect do + post :create + end.to change(BackupWorker.jobs, :size).by(1) + end + end + end end diff --git a/spec/controllers/settings/profiles_controller_spec.rb b/spec/controllers/settings/profiles_controller_spec.rb index a453200af..5b1fe3aca 100644 --- a/spec/controllers/settings/profiles_controller_spec.rb +++ b/spec/controllers/settings/profiles_controller_spec.rb @@ -26,4 +26,26 @@ RSpec.describe Settings::ProfilesController, type: :controller do expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) end end + + describe 'PUT #update with new profile image' do + it 'updates profile image' do + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + account = Fabricate(:account, user: @user, display_name: 'AvatarTest') + expect(account.avatar.instance.avatar_file_name).to be_nil + + put :update, params: { account: { avatar: fixture_file_upload('files/avatar.gif', 'image/gif') } } + expect(response).to redirect_to(settings_profile_path) + expect(account.reload.avatar.instance.avatar_file_name).not_to be_nil + expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id) + end + end + + describe 'PUT #update with oversized image' do + it 'gives the user an error message' do + allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async) + account = Fabricate(:account, user: @user, display_name: 'AvatarTest') + put :update, params: { account: { avatar: fixture_file_upload('files/4096x4097.png', 'image/png') } } + expect(response.body).to include('images are not supported') + end + end end diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb index b4f3c5a08..1bb6636c6 100644 --- a/spec/controllers/statuses_controller_spec.rb +++ b/spec/controllers/statuses_controller_spec.rb @@ -115,14 +115,18 @@ describe StatusesController do end it 'assigns @descendant_threads for threads with :next_status key if they are hitting the depth limit' do - stub_const 'StatusesController::DESCENDANTS_DEPTH_LIMIT', 1 + stub_const 'StatusesController::DESCENDANTS_DEPTH_LIMIT', 2 status = Fabricate(:status) - child = Fabricate(:status, in_reply_to_id: status.id) + child0 = Fabricate(:status, in_reply_to_id: status.id) + child1 = Fabricate(:status, in_reply_to_id: child0.id) + child2 = Fabricate(:status, in_reply_to_id: child0.id) get :show, params: { account_username: status.account.username, id: status.id } - expect(assigns(:descendant_threads)[0][:statuses].pluck(:id)).not_to include child.id - expect(assigns(:descendant_threads)[0][:next_status].id).to eq child.id + expect(assigns(:descendant_threads)[0][:statuses].pluck(:id)).not_to include child1.id + expect(assigns(:descendant_threads)[1][:statuses].pluck(:id)).not_to include child2.id + expect(assigns(:descendant_threads)[0][:next_status].id).to eq child1.id + expect(assigns(:descendant_threads)[1][:next_status].id).to eq child2.id end it 'returns a success' do diff --git a/spec/controllers/tags_controller_spec.rb b/spec/controllers/tags_controller_spec.rb index 33ccaed61..69def90cf 100644 --- a/spec/controllers/tags_controller_spec.rb +++ b/spec/controllers/tags_controller_spec.rb @@ -17,7 +17,7 @@ RSpec.describe TagsController, type: :controller do it 'renders application layout' do get :show, params: { id: 'test', max_id: late.id } - expect(response).to render_template layout: 'application' + expect(response).to render_template layout: 'public' end end diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb new file mode 100644 index 000000000..2b06b4790 --- /dev/null +++ b/spec/fabricators/account_stat_fabricator.rb @@ -0,0 +1,6 @@ +Fabricator(:account_stat) do + account nil + statuses_count "" + following_count "" + followers_count "" +end diff --git a/spec/fabricators/account_tag_stat_fabricator.rb b/spec/fabricators/account_tag_stat_fabricator.rb new file mode 100644 index 000000000..9edb550be --- /dev/null +++ b/spec/fabricators/account_tag_stat_fabricator.rb @@ -0,0 +1,3 @@ +Fabricator(:account_tag_stat) do + accounts_count "" +end diff --git a/spec/fabricators/account_warning_fabricator.rb b/spec/fabricators/account_warning_fabricator.rb new file mode 100644 index 000000000..db161d446 --- /dev/null +++ b/spec/fabricators/account_warning_fabricator.rb @@ -0,0 +1,5 @@ +Fabricator(:account_warning) do + account nil + target_account nil + text "MyText" +end diff --git a/spec/fabricators/account_warning_preset_fabricator.rb b/spec/fabricators/account_warning_preset_fabricator.rb new file mode 100644 index 000000000..6c0b87e7c --- /dev/null +++ b/spec/fabricators/account_warning_preset_fabricator.rb @@ -0,0 +1,3 @@ +Fabricator(:account_warning_preset) do + text "MyText" +end diff --git a/spec/fabricators/scheduled_status_fabricator.rb b/spec/fabricators/scheduled_status_fabricator.rb new file mode 100644 index 000000000..52384d137 --- /dev/null +++ b/spec/fabricators/scheduled_status_fabricator.rb @@ -0,0 +1,4 @@ +Fabricator(:scheduled_status) do + account + scheduled_at { 20.hours.from_now } +end diff --git a/spec/fabricators/user_fabricator.rb b/spec/fabricators/user_fabricator.rb index 7dfbdb52d..8f5956501 100644 --- a/spec/fabricators/user_fabricator.rb +++ b/spec/fabricators/user_fabricator.rb @@ -3,4 +3,5 @@ Fabricator(:user) do email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } } password "123456789" confirmed_at { Time.zone.now } + agreement true end diff --git a/spec/fixtures/files/4096x4097.png b/spec/fixtures/files/4096x4097.png new file mode 100644 index 000000000..d1110cc2d Binary files /dev/null and b/spec/fixtures/files/4096x4097.png differ diff --git a/spec/fixtures/requests/oembed_json_empty.html b/spec/fixtures/requests/oembed_json_empty.html new file mode 100644 index 000000000..4b02413aa --- /dev/null +++ b/spec/fixtures/requests/oembed_json_empty.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/spec/fixtures/requests/windows-1251.txt b/spec/fixtures/requests/windows-1251.txt new file mode 100644 index 000000000..f573e28b2 --- /dev/null +++ b/spec/fixtures/requests/windows-1251.txt @@ -0,0 +1,17 @@ +HTTP/1.1 200 OK +server: nginx +date: Wed, 12 Dec 2018 13:14:03 GMT +content-type: text/html +content-length: 190 +accept-ranges: bytes + + + + + ++ + diff --git a/spec/helpers/admin/account_moderation_notes_helper_spec.rb b/spec/helpers/admin/account_moderation_notes_helper_spec.rb index 01b60c851..c07f6c4b8 100644 --- a/spec/helpers/admin/account_moderation_notes_helper_spec.rb +++ b/spec/helpers/admin/account_moderation_notes_helper_spec.rb @@ -1,15 +1,55 @@ +# frozen_string_literal: true + require 'rails_helper' -# Specs in this file have access to a helper object that includes -# the Admin::AccountModerationNotesHelper. For example: -# -# describe Admin::AccountModerationNotesHelper do -# describe "string concat" do -# it "concats two strings with spaces" do -# expect(helper.concat_strings("this","that")).to eq("this that") -# end -# end -# end RSpec.describe Admin::AccountModerationNotesHelper, type: :helper do - pending "add some examples to (or delete) #{__FILE__}" + include StreamEntriesHelper + + describe '#admin_account_link_to' do + context 'account is nil' do + let(:account) { nil } + + it 'returns nil' do + expect(helper.admin_account_link_to(account)).to be_nil + end + end + + context 'with account' do + let(:account) { Fabricate(:account) } + + it 'calls #link_to' do + expect(helper).to receive(:link_to).with( + admin_account_path(account.id), + class: name_tag_classes(account), + title: account.acct + ) + + helper.admin_account_link_to(account) + end + end + end + + describe '#admin_account_inline_link_to' do + context 'account is nil' do + let(:account) { nil } + + it 'returns nil' do + expect(helper.admin_account_inline_link_to(account)).to be_nil + end + end + + context 'with account' do + let(:account) { Fabricate(:account) } + + it 'calls #link_to' do + expect(helper).to receive(:link_to).with( + admin_account_path(account.id), + class: name_tag_classes(account, true), + title: account.acct + ) + + helper.admin_account_inline_link_to(account) + end + end + end end diff --git a/spec/helpers/jsonld_helper_spec.rb b/spec/helpers/jsonld_helper_spec.rb index a5ab249c2..883a88b14 100644 --- a/spec/helpers/jsonld_helper_spec.rb +++ b/spec/helpers/jsonld_helper_spec.rb @@ -22,11 +22,35 @@ describe JsonLdHelper do end describe '#first_of_value' do - pending + context 'value.is_a?(Array)' do + it 'returns value.first' do + value = ['a'] + expect(helper.first_of_value(value)).to be 'a' + end + end + + context '!value.is_a?(Array)' do + it 'returns value' do + value = 'a' + expect(helper.first_of_value(value)).to be 'a' + end + end end describe '#supported_context?' do - pending + context "!json.nil? && equals_or_includes?(json['@context'], ActivityPub::TagManager::CONTEXT)" do + it 'returns true' do + json = { '@context' => ActivityPub::TagManager::CONTEXT }.as_json + expect(helper.supported_context?(json)).to be true + end + end + + context 'else' do + it 'returns false' do + json = nil + expect(helper.supported_context?(json)).to be false + end + end end describe '#fetch_resource' do diff --git a/spec/lib/activitypub/activity/block_spec.rb b/spec/lib/activitypub/activity/block_spec.rb index 23c8cc31c..94d37356d 100644 --- a/spec/lib/activitypub/activity/block_spec.rb +++ b/spec/lib/activitypub/activity/block_spec.rb @@ -14,15 +14,72 @@ RSpec.describe ActivityPub::Activity::Block do }.with_indifferent_access end - describe '#perform' do - subject { described_class.new(json, sender) } + context 'when the recipient does not follow the sender' do + describe '#perform' do + subject { described_class.new(json, sender) } + before do + subject.perform + end + + it 'creates a block from sender to recipient' do + expect(sender.blocking?(recipient)).to be true + end + end + end + + context 'when the recipient follows the sender' do before do - subject.perform + recipient.follow!(sender) end - it 'creates a block from sender to recipient' do - expect(sender.blocking?(recipient)).to be true + describe '#perform' do + subject { described_class.new(json, sender) } + + before do + subject.perform + end + + it 'creates a block from sender to recipient' do + expect(sender.blocking?(recipient)).to be true + end + + it 'ensures recipient is not following sender' do + expect(recipient.following?(sender)).to be false + end + end + end + + context 'when a matching undo has been received first' do + let(:undo_json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'bar', + type: 'Undo', + actor: ActivityPub::TagManager.instance.uri_for(sender), + object: json, + }.with_indifferent_access + end + + before do + recipient.follow!(sender) + ActivityPub::Activity::Undo.new(undo_json, sender).perform + end + + describe '#perform' do + subject { described_class.new(json, sender) } + + before do + subject.perform + end + + it 'does not create a block from sender to recipient' do + expect(sender.blocking?(recipient)).to be false + end + + it 'ensures recipient is not following sender' do + expect(recipient.following?(sender)).to be false + end end end end diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb new file mode 100644 index 000000000..3574f273a --- /dev/null +++ b/spec/lib/activitypub/activity/move_spec.rb @@ -0,0 +1,52 @@ +require 'rails_helper' + +RSpec.describe ActivityPub::Activity::Move do + let(:follower) { Fabricate(:account) } + let(:old_account) { Fabricate(:account) } + let(:new_account) { Fabricate(:account) } + + before do + follower.follow!(old_account) + + old_account.update!(uri: 'https://example.org/alice', domain: 'example.org', protocol: :activitypub, inbox_url: 'https://example.org/inbox') + new_account.update!(uri: 'https://example.com/alice', domain: 'example.com', protocol: :activitypub, inbox_url: 'https://example.com/inbox', also_known_as: [old_account.uri]) + + stub_request(:post, 'https://example.org/inbox').to_return(status: 200) + stub_request(:post, 'https://example.com/inbox').to_return(status: 200) + + service_stub = double + allow(ActivityPub::FetchRemoteAccountService).to receive(:new).and_return(service_stub) + allow(service_stub).to receive(:call).and_return(new_account) + end + + let(:json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Move', + actor: old_account.uri, + object: old_account.uri, + target: new_account.uri, + }.with_indifferent_access + end + + describe '#perform' do + subject { described_class.new(json, old_account) } + + before do + subject.perform + end + + it 'sets moved account on old account' do + expect(old_account.reload.moved_to_account_id).to eq new_account.id + end + + it 'makes followers unfollow old account' do + expect(follower.following?(old_account)).to be false + end + + it 'makes followers follow-request the new account' do + expect(follower.requested?(new_account)).to be true + end + end +end diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index 64e109aec..c506cd87f 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -108,14 +108,14 @@ RSpec.describe FeedManager do it 'returns false for status by followee mentioning another account' do bob.follow!(alice) - status = PostStatusService.new.call(alice, 'Hey @jeff') + status = PostStatusService.new.call(alice, text: 'Hey @jeff') expect(FeedManager.instance.filter?(:home, status, bob.id)).to be false end it 'returns true for status by followee mentioning blocked account' do bob.block!(jeff) bob.follow!(alice) - status = PostStatusService.new.call(alice, 'Hey @jeff') + status = PostStatusService.new.call(alice, text: 'Hey @jeff') expect(FeedManager.instance.filter?(:home, status, bob.id)).to be true end @@ -155,7 +155,7 @@ RSpec.describe FeedManager do context 'for mentions feed' do it 'returns true for status that mentions blocked account' do bob.block!(jeff) - status = PostStatusService.new.call(alice, 'Hey @jeff') + status = PostStatusService.new.call(alice, text: 'Hey @jeff') expect(FeedManager.instance.filter?(:mentions, status, bob.id)).to be true end diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb index 8cc5d90ce..2d300f18d 100644 --- a/spec/lib/request_spec.rb +++ b/spec/lib/request_spec.rb @@ -48,9 +48,11 @@ describe Request do end it 'executes a HTTP request when the first address is private' do - allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM) - .and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM)) - .and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:4860:4860::8844"], :PF_INET6, :SOCK_STREAM)) + resolver = double + + allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:4860:4860::8844)) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) expect { |block| subject.perform &block }.to yield_control expect(a_request(:get, 'http://example.com')).to have_been_made.once @@ -81,9 +83,12 @@ describe Request do end it 'raises Mastodon::ValidationError' do - allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM) - .and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM)) - .and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:db8::face"], :PF_INET6, :SOCK_STREAM)) + resolver = double + + allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:db8::face)) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + expect { subject.perform }.to raise_error Mastodon::ValidationError end end diff --git a/spec/mailers/admin_mailer_spec.rb b/spec/mailers/admin_mailer_spec.rb new file mode 100644 index 000000000..4a8ef7b5e --- /dev/null +++ b/spec/mailers/admin_mailer_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AdminMailer, type: :mailer do + describe '.new_report' do + let(:sender) { Fabricate(:account, username: 'John', user: Fabricate(:user)) } + let(:recipient) { Fabricate(:account, username: 'Mike', user: Fabricate(:user, locale: :en)) } + let(:report) { Fabricate(:report, account: sender, target_account: recipient) } + let(:mail) { described_class.new_report(recipient, report) } + + it 'renders the headers' do + expect(mail.subject).to eq("New report for cb6e6126.ngrok.io (##{report.id})") + expect(mail.to).to eq [recipient.user_email] + expect(mail.from).to eq ['notifications@localhost'] + end + + it 'renders the body' do + expect(mail.body.encoded).to eq("Mike,\r\n\r\nJohn has reported Mike\r\n\r\nView: https://cb6e6126.ngrok.io/admin/reports/#{report.id}\r\n") + end + end +end diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 1be01e8ba..38916b54f 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -126,19 +126,7 @@ RSpec.describe NotificationMailer, type: :mailer do end end - it 'includes activities since the date specified by :since option' do - receiver.update!(last_emailed_at: '2000-02-01T00:00:00Z', current_sign_in_at: '2000-03-01T00:00:00Z') - mail = NotificationMailer.digest(receiver.account, since: Time.parse('2000-01-01T00:00:00Z')) - expect(mail.body.encoded).to include 'Jan 01, 2000, 00:00' - end - - it 'includes activities since the receiver was last emailed if :since option is unavailable' do - receiver.update!(last_emailed_at: '2000-02-01T00:00:00Z', current_sign_in_at: '2000-03-01T00:00:00Z') - mail = NotificationMailer.digest(receiver.account) - expect(mail.body.encoded).to include 'Feb 01, 2000, 00:00' - end - - it 'includes activities since the receiver last signed in if :since option and the last emailed date are unavailable' do + it 'includes activities since the receiver last signed in' do receiver.update!(last_emailed_at: nil, current_sign_in_at: '2000-03-01T00:00:00Z') mail = NotificationMailer.digest(receiver.account) expect(mail.body.encoded).to include 'Mar 01, 2000, 00:00' diff --git a/spec/mailers/previews/user_mailer_preview.rb b/spec/mailers/previews/user_mailer_preview.rb index d9cdb9264..53c836494 100644 --- a/spec/mailers/previews/user_mailer_preview.rb +++ b/spec/mailers/previews/user_mailer_preview.rb @@ -39,4 +39,9 @@ class UserMailerPreview < ActionMailer::Preview def backup_ready UserMailer.backup_ready(User.first, Backup.first) end + + # Preview this email at http://localhost:3000/rails/mailers/user_mailer/warning + def warning + UserMailer.warning(User.first, AccountWarning.new(text: '', action: :silence)) + end end diff --git a/spec/models/account_filter_spec.rb b/spec/models/account_filter_spec.rb index 0a0252642..176a0eeac 100644 --- a/spec/models/account_filter_spec.rb +++ b/spec/models/account_filter_spec.rb @@ -2,10 +2,10 @@ require 'rails_helper' describe AccountFilter do describe 'with empty params' do - it 'defaults to recent account list' do + it 'defaults to recent local not-suspended account list' do filter = described_class.new({}) - expect(filter.results).to eq Account.recent + expect(filter.results).to eq Account.local.recent.without_suspended end end @@ -17,23 +17,6 @@ describe AccountFilter do end end - describe 'when an IP address is provided' do - it 'filters with IP when valid' do - filter = described_class.new(ip: '127.0.0.1') - allow(User).to receive(:with_recent_ip_address).and_return(User.none) - - filter.results - expect(User).to have_received(:with_recent_ip_address).with('127.0.0.1') - end - - it 'skips IP when invalid' do - filter = described_class.new(ip: '345.678.901.234') - expect(User).not_to receive(:with_recent_ip_address) - - filter.results - end - end - describe 'with valid params' do it 'combines filters on Account' do filter = described_class.new( @@ -60,13 +43,13 @@ describe AccountFilter do end describe 'that call account methods' do - %i(local remote silenced alphabetic suspended).each do |option| + %i(local remote silenced suspended).each do |option| it "delegates the #{option} option" do allow(Account).to receive(option).and_return(Account.none) filter = described_class.new({ option => true }) filter.results - expect(Account).to have_received(option) + expect(Account).to have_received(option).at_least(1) end end end diff --git a/spec/models/account_pin_spec.rb b/spec/models/account_pin_spec.rb deleted file mode 100644 index 4f226b127..000000000 --- a/spec/models/account_pin_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe AccountPin, type: :model do - pending "add some examples to (or delete) #{__FILE__}" -end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 60d13d32e..f7f78d34c 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -618,9 +618,15 @@ RSpec.describe Account, type: :model do expect(account).not_to model_have_error_on_field(:username) end - it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do + it 'is valid even if the username contains hyphens' do account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor') account.valid? + expect(account).to_not model_have_error_on_field(:username) + end + + it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do + account = Fabricate.build(:account, domain: 'domain', username: 'the doctor') + account.valid? expect(account).to model_have_error_on_field(:username) end @@ -754,24 +760,6 @@ RSpec.describe Account, type: :model do expect(Account.suspended).to match_array([account_1]) end end - - describe 'without_followers' do - it 'returns a relation of accounts without followers' do - account_1 = Fabricate(:account) - account_2 = Fabricate(:account) - Fabricate(:follow, account: account_1, target_account: account_2) - expect(Account.without_followers).to match_array([account_1]) - end - end - - describe 'with_followers' do - it 'returns a relation of accounts with followers' do - account_1 = Fabricate(:account) - account_2 = Fabricate(:account) - Fabricate(:follow, account: account_1, target_account: account_2) - expect(Account.with_followers).to match_array([account_2]) - end - end end context 'when is local' do diff --git a/spec/models/account_stat_spec.rb b/spec/models/account_stat_spec.rb new file mode 100644 index 000000000..a94185109 --- /dev/null +++ b/spec/models/account_stat_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe AccountStat, type: :model do +end diff --git a/spec/models/account_tag_stat_spec.rb b/spec/models/account_tag_stat_spec.rb new file mode 100644 index 000000000..6d3057f35 --- /dev/null +++ b/spec/models/account_tag_stat_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe AccountTagStat, type: :model do + key = 'accounts_count' + let(:account_tag_stat) { Fabricate(:tag).account_tag_stat } + + describe '#increment_count!' do + it 'calls #update' do + args = { key => account_tag_stat.public_send(key) + 1 } + expect(account_tag_stat).to receive(:update).with(args) + account_tag_stat.increment_count!(key) + end + + it 'increments value by 1' do + expect do + account_tag_stat.increment_count!(key) + end.to change { account_tag_stat.accounts_count }.by(1) + end + end + + describe '#decrement_count!' do + it 'calls #update' do + args = { key => [account_tag_stat.public_send(key) - 1, 0].max } + expect(account_tag_stat).to receive(:update).with(args) + account_tag_stat.decrement_count!(key) + end + + it 'decrements value by 1' do + account_tag_stat.update(key => 1) + + expect do + account_tag_stat.decrement_count!(key) + end.to change { account_tag_stat.accounts_count }.by(-1) + end + end +end diff --git a/spec/models/admin/account_action_spec.rb b/spec/models/admin/account_action_spec.rb new file mode 100644 index 000000000..a3db60cfc --- /dev/null +++ b/spec/models/admin/account_action_spec.rb @@ -0,0 +1,131 @@ +require 'rails_helper' + +RSpec.describe Admin::AccountAction, type: :model do + let(:account_action) { described_class.new } + + describe '#save!' do + subject { account_action.save! } + let(:account) { Fabricate(:account, user: Fabricate(:user, admin: true)) } + let(:target_account) { Fabricate(:account, user: Fabricate(:user)) } + let(:type) { 'disable' } + + before do + account_action.assign_attributes( + type: type, + current_account: account, + target_account: target_account + ) + end + + context 'type is "disable"' do + let(:type) { 'disable' } + + it 'disable user' do + subject + expect(target_account.user).to be_disabled + end + end + + context 'type is "silence"' do + let(:type) { 'silence' } + + it 'silences account' do + subject + expect(target_account).to be_silenced + end + end + + context 'type is "suspend"' do + let(:type) { 'suspend' } + + it 'suspends account' do + subject + expect(target_account).to be_suspended + end + + it 'queues Admin::SuspensionWorker by 1' do + Sidekiq::Testing.fake! do + expect do + subject + end.to change { Admin::SuspensionWorker.jobs.size }.by 1 + end + end + end + + it 'creates Admin::ActionLog' do + expect do + subject + end.to change { Admin::ActionLog.count }.by 1 + end + + it 'calls queue_email!' do + expect(account_action).to receive(:queue_email!) + subject + end + + it 'calls process_reports!' do + expect(account_action).to receive(:process_reports!) + subject + end + end + + describe '#report' do + subject { account_action.report } + + context 'report_id.present?' do + before do + account_action.report_id = Fabricate(:report).id + end + + it 'returns Report' do + expect(subject).to be_instance_of Report + end + end + + context '!report_id.present?' do + it 'returns nil' do + expect(subject).to be_nil + end + end + end + + describe '#with_report?' do + subject { account_action.with_report? } + + context '!report.nil?' do + before do + account_action.report_id = Fabricate(:report).id + end + + it 'returns true' do + expect(subject).to be true + end + end + + context '!(!report.nil?)' do + it 'returns false' do + expect(subject).to be false + end + end + end + + describe '.types_for_account' do + subject { described_class.types_for_account(account) } + + context 'account.local?' do + let(:account) { Fabricate(:account, domain: nil) } + + it 'returns ["none", "disable", "silence", "suspend"]' do + expect(subject).to eq %w(none disable silence suspend) + end + end + + context '!account.local?' do + let(:account) { Fabricate(:account, domain: 'hoge.com') } + + it 'returns ["silence", "suspend"]' do + expect(subject).to eq %w(silence suspend) + end + end + end +end diff --git a/spec/models/admin/action_log_spec.rb b/spec/models/admin/action_log_spec.rb index 81d7e1be3..3495cc514 100644 --- a/spec/models/admin/action_log_spec.rb +++ b/spec/models/admin/action_log_spec.rb @@ -1,4 +1,12 @@ +# frozen_string_literal: true + require 'rails_helper' RSpec.describe Admin::ActionLog, type: :model do + describe '#action' do + it 'returns action' do + action_log = described_class.new(action: 'hoge') + expect(action_log.action).to be :hoge + end + end end diff --git a/spec/models/concerns/status_threading_concern_spec.rb b/spec/models/concerns/status_threading_concern_spec.rb index e5736a307..94c2d5fc2 100644 --- a/spec/models/concerns/status_threading_concern_spec.rb +++ b/spec/models/concerns/status_threading_concern_spec.rb @@ -118,5 +118,15 @@ describe StatusThreadingConcern do viewer.block_domain!('example.com') expect(status.descendants(4, viewer)).to_not include(reply2) end + + it 'promotes self-replies to the top while leaving the rest in order' do + a = Fabricate(:status, account: alice) + d = Fabricate(:status, account: jeff, thread: a) + e = Fabricate(:status, account: bob, thread: d) + c = Fabricate(:status, account: alice, thread: a) + f = Fabricate(:status, account: bob, thread: c) + + expect(a.descendants(20)).to eq [c, d, e, f] + end end end diff --git a/spec/models/custom_emoji_filter_spec.rb b/spec/models/custom_emoji_filter_spec.rb new file mode 100644 index 000000000..d859f5c5f --- /dev/null +++ b/spec/models/custom_emoji_filter_spec.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe CustomEmojiFilter do + describe '#results' do + let!(:custom_emoji_0) { Fabricate(:custom_emoji, domain: 'a') } + let!(:custom_emoji_1) { Fabricate(:custom_emoji, domain: 'b') } + let!(:custom_emoji_2) { Fabricate(:custom_emoji, domain: nil, shortcode: 'hoge') } + + subject { described_class.new(params).results } + + context 'params have values' do + context 'local' do + let(:params) { { local: true } } + + it 'returns ActiveRecord::Relation' do + expect(subject).to be_kind_of(ActiveRecord::Relation) + expect(subject).to match_array([custom_emoji_2]) + end + end + + context 'remote' do + let(:params) { { remote: true } } + + it 'returns ActiveRecord::Relation' do + expect(subject).to be_kind_of(ActiveRecord::Relation) + expect(subject).to match_array([custom_emoji_0, custom_emoji_1]) + end + end + + context 'by_domain' do + let(:params) { { by_domain: 'a' } } + + it 'returns ActiveRecord::Relation' do + expect(subject).to be_kind_of(ActiveRecord::Relation) + expect(subject).to match_array([custom_emoji_0]) + end + end + + context 'shortcode' do + let(:params) { { shortcode: 'hoge' } } + + it 'returns ActiveRecord::Relation' do + expect(subject).to be_kind_of(ActiveRecord::Relation) + expect(subject).to match_array([custom_emoji_2]) + end + end + + context 'else' do + let(:params) { { else: 'else' } } + + it 'raises RuntimeError' do + expect do + subject + end.to raise_error(RuntimeError, /Unknown filter: else/) + end + end + end + + context 'params without value' do + let(:params) { { hoge: nil } } + + it 'returns ActiveRecord::Relation' do + expect(subject).to be_kind_of(ActiveRecord::Relation) + expect(subject).to match_array([custom_emoji_0, custom_emoji_1, custom_emoji_2]) + end + end + end +end diff --git a/spec/models/custom_emoji_spec.rb b/spec/models/custom_emoji_spec.rb index 320a258d3..9de218b4f 100644 --- a/spec/models/custom_emoji_spec.rb +++ b/spec/models/custom_emoji_spec.rb @@ -75,4 +75,13 @@ RSpec.describe CustomEmoji, type: :model do end end end + + describe 'pre_validation' do + let(:custom_emoji) { Fabricate(:custom_emoji, domain: 'wWw.MaStOdOn.CoM') } + + it 'should downcase' do + custom_emoji.valid? + expect(custom_emoji.domain).to eq('www.mastodon.com') + end + end end diff --git a/spec/models/identity_spec.rb b/spec/models/identity_spec.rb index 53f355410..689c9b797 100644 --- a/spec/models/identity_spec.rb +++ b/spec/models/identity_spec.rb @@ -1,5 +1,16 @@ require 'rails_helper' RSpec.describe Identity, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + describe '.find_for_oauth' do + let(:auth) { Fabricate(:identity, user: Fabricate(:user)) } + + it 'calls .find_or_create_by' do + expect(described_class).to receive(:find_or_create_by).with(uid: auth.uid, provider: auth.provider) + described_class.find_for_oauth(auth) + end + + it 'returns an instance of Identity' do + expect(described_class.find_for_oauth(auth)).to be_instance_of Identity + end + end end diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb index c781f2a29..59c582cde 100644 --- a/spec/models/notification_spec.rb +++ b/spec/models/notification_spec.rb @@ -1,10 +1,6 @@ require 'rails_helper' RSpec.describe Notification, type: :model do - describe '#from_account' do - pending - end - describe '#target_status' do let(:notification) { Fabricate(:notification, activity: activity) } let(:status) { Fabricate(:status) } @@ -101,7 +97,7 @@ RSpec.describe Notification, type: :model do before do allow(accounts_with_ids).to receive(:[]).with(stale_account1.id).and_return(account1) allow(accounts_with_ids).to receive(:[]).with(stale_account2.id).and_return(account2) - allow(Account).to receive_message_chain(:where, :map, :to_h).and_return(accounts_with_ids) + allow(Account).to receive_message_chain(:where, :includes, :each_with_object).and_return(accounts_with_ids) end let(:cached_items) do diff --git a/spec/models/scheduled_status_spec.rb b/spec/models/scheduled_status_spec.rb new file mode 100644 index 000000000..f8c9d8b81 --- /dev/null +++ b/spec/models/scheduled_status_spec.rb @@ -0,0 +1,4 @@ +require 'rails_helper' + +RSpec.describe ScheduledStatus, type: :model do +end diff --git a/spec/models/status_stat_spec.rb b/spec/models/status_stat_spec.rb index 5e9351aff..af1a6f288 100644 --- a/spec/models/status_stat_spec.rb +++ b/spec/models/status_stat_spec.rb @@ -1,5 +1,4 @@ require 'rails_helper' RSpec.describe StatusStat, type: :model do - pending "add some examples to (or delete) #{__FILE__}" end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 8c6778edc..856254ce4 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -89,18 +89,6 @@ RSpec.describe User, type: :model do expect(User.matches_email('specified')).to match_array([specified]) end end - - describe 'with_recent_ip_address' do - it 'returns a relation of users who is, or was at last time, online with the given IP address' do - specifieds = [ - Fabricate(:user, current_sign_in_ip: '0.0.0.42', last_sign_in_ip: '0.0.0.0'), - Fabricate(:user, current_sign_in_ip: nil, last_sign_in_ip: '0.0.0.42') - ] - Fabricate(:user, current_sign_in_ip: '0.0.0.0', last_sign_in_ip: '0.0.0.0') - - expect(User.with_recent_ip_address('0.0.0.42')).to match_array(specifieds) - end - end end let(:account) { Fabricate(:account, username: 'alice') } @@ -118,19 +106,19 @@ RSpec.describe User, type: :model do end it 'should allow a non-blacklisted user to be created' do - user = User.new(email: 'foo@example.com', account: account, password: password) + user = User.new(email: 'foo@example.com', account: account, password: password, agreement: true) expect(user.valid?).to be_truthy end it 'should not allow a blacklisted user to be created' do - user = User.new(email: 'foo@mvrht.com', account: account, password: password) + user = User.new(email: 'foo@mvrht.com', account: account, password: password, agreement: true) expect(user.valid?).to be_falsey end it 'should not allow a subdomain blacklisted user to be created' do - user = User.new(email: 'foo@mvrht.com.topdomain.tld', account: account, password: password) + user = User.new(email: 'foo@mvrht.com.topdomain.tld', account: account, password: password, agreement: true) expect(user.valid?).to be_falsey end @@ -222,17 +210,17 @@ RSpec.describe User, type: :model do end it 'should not allow a user to be created unless they are whitelisted' do - user = User.new(email: 'foo@example.com', account: account, password: password) + user = User.new(email: 'foo@example.com', account: account, password: password, agreement: true) expect(user.valid?).to be_falsey end it 'should allow a user to be created if they are whitelisted' do - user = User.new(email: 'foo@mastodon.space', account: account, password: password) + user = User.new(email: 'foo@mastodon.space', account: account, password: password, agreement: true) expect(user.valid?).to be_truthy end it 'should not allow a user with a whitelisted top domain as subdomain in their email address to be created' do - user = User.new(email: 'foo@mastodon.space.userdomain.com', account: account, password: password) + user = User.new(email: 'foo@mastodon.space.userdomain.com', account: account, password: password, agreement: true) expect(user.valid?).to be_falsey end @@ -254,7 +242,7 @@ RSpec.describe User, type: :model do it_behaves_like 'Settings-extended' do def create! - User.create!(account: Fabricate(:account), email: 'foo@mastodon.space', password: 'abcd1234') + User.create!(account: Fabricate(:account), email: 'foo@mastodon.space', password: 'abcd1234', agreement: true) end def fabricate diff --git a/spec/policies/account_moderation_note_policy_spec.rb b/spec/policies/account_moderation_note_policy_spec.rb new file mode 100644 index 000000000..bb7af94e4 --- /dev/null +++ b/spec/policies/account_moderation_note_policy_spec.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe AccountModerationNotePolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :create? do + context 'staff' do + it 'grants to create' do + expect(subject).to permit(admin, AccountModerationNotePolicy) + end + end + + context 'not staff' do + it 'denies to create' do + expect(subject).to_not permit(john, AccountModerationNotePolicy) + end + end + end + + permissions :destroy? do + let(:account_moderation_note) do + Fabricate(:account_moderation_note, + account: john, + target_account: Fabricate(:account)) + end + + context 'admin' do + it 'grants to destroy' do + expect(subject).to permit(admin, AccountModerationNotePolicy) + end + end + + context 'owner' do + it 'grants to destroy' do + expect(subject).to permit(john, account_moderation_note) + end + end + + context 'neither admin nor owner' do + let(:kevin) { Fabricate(:user).account } + + it 'denies to destroy' do + expect(subject).to_not permit(kevin, account_moderation_note) + end + end + end +end diff --git a/spec/policies/account_policy_spec.rb b/spec/policies/account_policy_spec.rb new file mode 100644 index 000000000..6648b0888 --- /dev/null +++ b/spec/policies/account_policy_spec.rb @@ -0,0 +1,86 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe AccountPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index?, :show?, :unsuspend?, :unsilence?, :remove_avatar?, :remove_header? do + context 'staff' do + it 'permits' do + expect(subject).to permit(admin) + end + end + + context 'not staff' do + it 'denies' do + expect(subject).to_not permit(john) + end + end + end + + permissions :redownload?, :subscribe?, :unsubscribe? do + context 'admin' do + it 'permits' do + expect(subject).to permit(admin) + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john) + end + end + end + + permissions :suspend?, :silence? do + let(:staff) { Fabricate(:user, admin: true).account } + + context 'staff' do + context 'record is staff' do + it 'denies' do + expect(subject).to_not permit(admin, staff) + end + end + + context 'record is not staff' do + it 'permits' do + expect(subject).to permit(admin, john) + end + end + end + + context 'not staff' do + it 'denies' do + expect(subject).to_not permit(john, Account) + end + end + end + + permissions :memorialize? do + let(:other_admin) { Fabricate(:user, admin: true).account } + + context 'admin' do + context 'record is admin' do + it 'denies' do + expect(subject).to_not permit(admin, other_admin) + end + end + + context 'record is not admin' do + it 'permits' do + expect(subject).to permit(admin, john) + end + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john, Account) + end + end + end +end diff --git a/spec/policies/backup_policy_spec.rb b/spec/policies/backup_policy_spec.rb new file mode 100644 index 000000000..80407e12f --- /dev/null +++ b/spec/policies/backup_policy_spec.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe BackupPolicy do + let(:subject) { described_class } + let(:john) { Fabricate(:user).account } + + permissions :create? do + context 'not user_signed_in?' do + it 'denies' do + expect(subject).to_not permit(nil, Backup) + end + end + + context 'user_signed_in?' do + context 'no backups' do + it 'permits' do + expect(subject).to permit(john, Backup) + end + end + + context 'backups are too old' do + it 'permits' do + travel(-8.days) do + Fabricate(:backup, user: john.user) + end + + expect(subject).to permit(john, Backup) + end + end + + context 'backups are newer' do + it 'denies' do + travel(-3.days) do + Fabricate(:backup, user: john.user) + end + + expect(subject).to_not permit(john, Backup) + end + end + end + end +end diff --git a/spec/policies/custom_emoji_policy_spec.rb b/spec/policies/custom_emoji_policy_spec.rb new file mode 100644 index 000000000..8def88212 --- /dev/null +++ b/spec/policies/custom_emoji_policy_spec.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe CustomEmojiPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index?, :enable?, :disable? do + context 'staff' do + it 'permits' do + expect(subject).to permit(admin, CustomEmoji) + end + end + + context 'not staff' do + it 'denies' do + expect(subject).to_not permit(john, CustomEmoji) + end + end + end + + permissions :create?, :update?, :copy?, :destroy? do + context 'admin' do + it 'permits' do + expect(subject).to permit(admin, CustomEmoji) + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john, CustomEmoji) + end + end + end +end diff --git a/spec/policies/domain_block_policy_spec.rb b/spec/policies/domain_block_policy_spec.rb new file mode 100644 index 000000000..aea50ec0f --- /dev/null +++ b/spec/policies/domain_block_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe DomainBlockPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index?, :show?, :create?, :destroy? do + context 'admin' do + it 'permits' do + expect(subject).to permit(admin, DomainBlock) + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john, DomainBlock) + end + end + end +end diff --git a/spec/policies/email_domain_block_policy_spec.rb b/spec/policies/email_domain_block_policy_spec.rb new file mode 100644 index 000000000..a3e825e07 --- /dev/null +++ b/spec/policies/email_domain_block_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe EmailDomainBlockPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index?, :create?, :destroy? do + context 'admin' do + it 'permits' do + expect(subject).to permit(admin, EmailDomainBlock) + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john, EmailDomainBlock) + end + end + end +end diff --git a/spec/policies/instance_policy_spec.rb b/spec/policies/instance_policy_spec.rb new file mode 100644 index 000000000..77a3bde3f --- /dev/null +++ b/spec/policies/instance_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe InstancePolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index? do + context 'admin' do + it 'permits' do + expect(subject).to permit(admin, Instance) + end + end + + context 'not admin' do + it 'denies' do + expect(subject).to_not permit(john, Instance) + end + end + end +end diff --git a/spec/policies/invite_policy_spec.rb b/spec/policies/invite_policy_spec.rb new file mode 100644 index 000000000..e391455be --- /dev/null +++ b/spec/policies/invite_policy_spec.rb @@ -0,0 +1,94 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe InvitePolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index? do + context 'staff?' do + it 'permits' do + expect(subject).to permit(admin, Invite) + end + end + end + + permissions :create? do + context 'min_required_role?' do + it 'permits' do + allow_any_instance_of(described_class).to receive(:min_required_role?) { true } + expect(subject).to permit(john, Invite) + end + end + + context 'not min_required_role?' do + it 'denies' do + allow_any_instance_of(described_class).to receive(:min_required_role?) { false } + expect(subject).to_not permit(john, Invite) + end + end + end + + permissions :deactivate_all? do + context 'admin?' do + it 'permits' do + expect(subject).to permit(admin, Invite) + end + end + + context 'not admin?' do + it 'denies' do + expect(subject).to_not permit(john, Invite) + end + end + end + + permissions :destroy? do + context 'owner?' do + it 'permits' do + expect(subject).to permit(john, Fabricate(:invite, user: john.user)) + end + end + + context 'not owner?' do + context 'Setting.min_invite_role == "admin"' do + before do + Setting.min_invite_role = 'admin' + end + + context 'admin?' do + it 'permits' do + expect(subject).to permit(admin, Fabricate(:invite)) + end + end + + context 'not admin?' do + it 'denies' do + expect(subject).to_not permit(john, Fabricate(:invite)) + end + end + end + + context 'Setting.min_invite_role != "admin"' do + before do + Setting.min_invite_role = 'else' + end + + context 'staff?' do + it 'permits' do + expect(subject).to permit(admin, Fabricate(:invite)) + end + end + + context 'not staff?' do + it 'denies' do + expect(subject).to_not permit(john, Fabricate(:invite)) + end + end + end + end + end +end diff --git a/spec/policies/relay_policy_spec.rb b/spec/policies/relay_policy_spec.rb new file mode 100644 index 000000000..640f27d54 --- /dev/null +++ b/spec/policies/relay_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe RelayPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :update? do + context 'admin?' do + it 'permits' do + expect(subject).to permit(admin, Relay) + end + end + + context '!admin?' do + it 'denies' do + expect(subject).to_not permit(john, Relay) + end + end + end +end diff --git a/spec/policies/report_note_policy_spec.rb b/spec/policies/report_note_policy_spec.rb new file mode 100644 index 000000000..596d7d7a9 --- /dev/null +++ b/spec/policies/report_note_policy_spec.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe ReportNotePolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :create? do + context 'staff?' do + it 'permits' do + expect(subject).to permit(admin, ReportNote) + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, ReportNote) + end + end + end + + permissions :destroy? do + context 'admin?' do + it 'permit' do + expect(subject).to permit(admin, ReportNote) + end + end + + context 'admin?' do + context 'owner?' do + it 'permit' do + report_note = Fabricate(:report_note, account: john) + expect(subject).to permit(john, report_note) + end + end + + context '!owner?' do + it 'denies' do + report_note = Fabricate(:report_note) + expect(subject).to_not permit(john, report_note) + end + end + end + end +end diff --git a/spec/policies/report_policy_spec.rb b/spec/policies/report_policy_spec.rb new file mode 100644 index 000000000..c9ae1e87a --- /dev/null +++ b/spec/policies/report_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe ReportPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :update?, :index?, :show? do + context 'staff?' do + it 'permits' do + expect(subject).to permit(admin, Report) + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, Report) + end + end + end +end diff --git a/spec/policies/settings_policy_spec.rb b/spec/policies/settings_policy_spec.rb new file mode 100644 index 000000000..92f1f4869 --- /dev/null +++ b/spec/policies/settings_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe SettingsPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :update?, :show? do + context 'admin?' do + it 'permits' do + expect(subject).to permit(admin, Settings) + end + end + + context '!admin?' do + it 'denies' do + expect(subject).to_not permit(john, Settings) + end + end + end +end diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index bacb8fd9e..1cddf4abd 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'rails_helper' require 'pundit/rspec' @@ -106,4 +108,30 @@ RSpec.describe StatusPolicy, type: :model do expect(subject).to_not permit(nil, status) end end + + permissions :favourite? do + it 'grants access when viewer is not blocked' do + follow = Fabricate(:follow) + status.account = follow.target_account + + expect(subject).to permit(follow.account, status) + end + + it 'denies when viewer is blocked' do + block = Fabricate(:block) + status.account = block.target_account + + expect(subject).to_not permit(block.account, status) + end + end + + permissions :index?, :update? do + it 'grants access if staff' do + expect(subject).to permit(admin.account) + end + + it 'denies access unless staff' do + expect(subject).to_not permit(alice) + end + end end diff --git a/spec/policies/subscription_policy_spec.rb b/spec/policies/subscription_policy_spec.rb new file mode 100644 index 000000000..21d60c15f --- /dev/null +++ b/spec/policies/subscription_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe SubscriptionPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index? do + context 'admin?' do + it 'permits' do + expect(subject).to permit(admin, Subscription) + end + end + + context '!admin?' do + it 'denies' do + expect(subject).to_not permit(john, Subscription) + end + end + end +end diff --git a/spec/policies/tag_policy_spec.rb b/spec/policies/tag_policy_spec.rb new file mode 100644 index 000000000..c7afaa7c9 --- /dev/null +++ b/spec/policies/tag_policy_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe TagPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :index?, :hide?, :unhide? do + context 'staff?' do + it 'permits' do + expect(subject).to permit(admin, Tag) + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, Tag) + end + end + end +end diff --git a/spec/policies/user_policy_spec.rb b/spec/policies/user_policy_spec.rb new file mode 100644 index 000000000..e37904f04 --- /dev/null +++ b/spec/policies/user_policy_spec.rb @@ -0,0 +1,167 @@ +# frozen_string_literal: true + +require 'rails_helper' +require 'pundit/rspec' + +RSpec.describe UserPolicy do + let(:subject) { described_class } + let(:admin) { Fabricate(:user, admin: true).account } + let(:john) { Fabricate(:user).account } + + permissions :reset_password?, :change_email? do + context 'staff?' do + context '!record.staff?' do + it 'permits' do + expect(subject).to permit(admin, john.user) + end + end + + context 'record.staff?' do + it 'denies' do + expect(subject).to_not permit(admin, admin.user) + end + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end + + permissions :disable_2fa? do + context 'admin?' do + context '!record.staff?' do + it 'permits' do + expect(subject).to permit(admin, john.user) + end + end + + context 'record.staff?' do + it 'denies' do + expect(subject).to_not permit(admin, admin.user) + end + end + end + + context '!admin?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end + + permissions :confirm? do + context 'staff?' do + context '!record.confirmed?' do + it 'permits' do + john.user.update(confirmed_at: nil) + expect(subject).to permit(admin, john.user) + end + end + + context 'record.confirmed?' do + it 'denies' do + john.user.confirm! + expect(subject).to_not permit(admin, john.user) + end + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end + + permissions :enable? do + context 'staff?' do + it 'permits' do + expect(subject).to permit(admin, User) + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end + + permissions :disable? do + context 'staff?' do + context '!record.admin?' do + it 'permits' do + expect(subject).to permit(admin, john.user) + end + end + + context 'record.admin?' do + it 'denies' do + expect(subject).to_not permit(admin, admin.user) + end + end + end + + context '!staff?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end + + permissions :promote? do + context 'admin?' do + context 'promoteable?' do + it 'permits' do + expect(subject).to permit(admin, john.user) + end + end + + context '!promoteable?' do + it 'denies' do + expect(subject).to_not permit(admin, admin.user) + end + end + end + + context '!admin?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end + + permissions :demote? do + context 'admin?' do + context '!record.admin?' do + context 'demoteable?' do + it 'permits' do + john.user.update(moderator: true) + expect(subject).to permit(admin, john.user) + end + end + + context '!demoteable?' do + it 'denies' do + expect(subject).to_not permit(admin, john.user) + end + end + end + + context 'record.admin?' do + it 'denies' do + expect(subject).to_not permit(admin, admin.user) + end + end + end + + context '!admin?' do + it 'denies' do + expect(subject).to_not permit(john, User) + end + end + end +end diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb index 006403925..0babc1b0c 100644 --- a/spec/presenters/instance_presenter_spec.rb +++ b/spec/presenters/instance_presenter_spec.rb @@ -111,4 +111,37 @@ describe InstancePresenter do expect(instance_presenter.domain_count).to eq(345) end end + + describe '#version_number' do + it 'returns Mastodon::Version' do + expect(instance_presenter.version_number).to be(Mastodon::Version) + end + end + + describe '#source_url' do + it 'returns "https://github.com/tootsuite/mastodon"' do + expect(instance_presenter.source_url).to eq('https://github.com/tootsuite/mastodon') + end + end + + describe '#thumbnail' do + it 'returns SiteUpload' do + thumbnail = Fabricate(:site_upload, var: 'thumbnail') + expect(instance_presenter.thumbnail).to eq(thumbnail) + end + end + + describe '#hero' do + it 'returns SiteUpload' do + hero = Fabricate(:site_upload, var: 'hero') + expect(instance_presenter.hero).to eq(hero) + end + end + + describe '#mascot' do + it 'returns SiteUpload' do + mascot = Fabricate(:site_upload, var: 'mascot') + expect(instance_presenter.mascot).to eq(mascot) + end + end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 1ded751ab..3a5e7491e 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -29,7 +29,6 @@ Devise::Test::ControllerHelpers.module_eval do value: resource.activate_session(warden.request), expires: 1.year.from_now, httponly: true, - same_site: :lax, } end end diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb index bbe97d211..b3baf6b6b 100644 --- a/spec/services/activitypub/process_collection_service_spec.rb +++ b/spec/services/activitypub/process_collection_service_spec.rb @@ -26,9 +26,9 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do context 'when actor differs from sender' do let(:forwarder) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/other_account') } - it 'processes payload with sender if no signature exists' do - expect_any_instance_of(ActivityPub::LinkedDataSignature).not_to receive(:verify_account!) - expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), forwarder, instance_of(Hash)) + it 'does not process payload if no signature exists' do + expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil) + expect(ActivityPub::Activity).not_to receive(:factory) subject.call(json, forwarder) end diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb new file mode 100644 index 000000000..d480df348 --- /dev/null +++ b/spec/services/app_sign_up_service_spec.rb @@ -0,0 +1,41 @@ +require 'rails_helper' + +RSpec.describe AppSignUpService, type: :service do + let(:app) { Fabricate(:application, scopes: 'read write') } + let(:good_params) { { username: 'alice', password: '12345678', email: 'good@email.com', agreement: true } } + + subject { described_class.new } + + describe '#call' do + it 'returns nil when registrations are closed' do + Setting.open_registrations = false + expect(subject.call(app, good_params)).to be_nil + end + + it 'raises an error when params are missing' do + expect { subject.call(app, {}) }.to raise_error ActiveRecord::RecordInvalid + end + + it 'creates an unconfirmed user with access token' do + access_token = subject.call(app, good_params) + expect(access_token).to_not be_nil + user = User.find_by(id: access_token.resource_owner_id) + expect(user).to_not be_nil + expect(user.confirmed?).to be false + end + + it 'creates access token with the app\'s scopes' do + access_token = subject.call(app, good_params) + expect(access_token).to_not be_nil + expect(access_token.scopes.to_s).to eq 'read write' + end + + it 'creates an account' do + access_token = subject.call(app, good_params) + expect(access_token).to_not be_nil + user = User.find_by(id: access_token.resource_owner_id) + expect(user).to_not be_nil + expect(user.account).to_not be_nil + end + end +end diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb index c66214555..e53623449 100644 --- a/spec/services/batched_remove_status_service_spec.rb +++ b/spec/services/batched_remove_status_service_spec.rb @@ -8,8 +8,8 @@ RSpec.describe BatchedRemoveStatusService, type: :service do let!(:jeff) { Fabricate(:user).account } let!(:hank) { Fabricate(:account, username: 'hank', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') } - let(:status1) { PostStatusService.new.call(alice, 'Hello @bob@example.com') } - let(:status2) { PostStatusService.new.call(alice, 'Another status') } + let(:status1) { PostStatusService.new.call(alice, text: 'Hello @bob@example.com') } + let(:status2) { PostStatusService.new.call(alice, text: 'Another status') } before do allow(Redis.current).to receive_messages(publish: nil) diff --git a/spec/services/fetch_atom_service_spec.rb b/spec/services/fetch_atom_service_spec.rb index 30e5b0935..495540004 100644 --- a/spec/services/fetch_atom_service_spec.rb +++ b/spec/services/fetch_atom_service_spec.rb @@ -60,8 +60,15 @@ RSpec.describe FetchAtomService, type: :service do it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] } end - context 'content_type is json' do - let(:content_type) { 'application/activity+json' } + context 'content_type is activity+json' do + let(:content_type) { 'application/activity+json; charset=utf-8' } + let(:body) { json } + + it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } + end + + context 'content_type is ld+json with profile' do + let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' } let(:body) { json } it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] } diff --git a/spec/services/fetch_link_card_service_spec.rb b/spec/services/fetch_link_card_service_spec.rb index 88c5339db..50c60aafd 100644 --- a/spec/services/fetch_link_card_service_spec.rb +++ b/spec/services/fetch_link_card_service_spec.rb @@ -17,6 +17,8 @@ RSpec.describe FetchLinkCardService, type: :service do stub_request(:head, 'https://github.com/qbi/WannaCry').to_return(status: 404) stub_request(:head, 'http://example.com/test-').to_return(status: 200, headers: { 'Content-Type' => 'text/html' }) stub_request(:get, 'http://example.com/test-').to_return(request_fixture('idn.txt')) + stub_request(:head, 'http://example.com/windows-1251').to_return(status: 200, headers: { 'Content-Type' => 'text/html' }) + stub_request(:get, 'http://example.com/windows-1251').to_return(request_fixture('windows-1251.txt')) subject.call(status) end @@ -57,6 +59,15 @@ RSpec.describe FetchLinkCardService, type: :service do end end + context do + let(:status) { Fabricate(:status, text: 'Check out http://example.com/windows-1251') } + + it 'works with windows-1251' do + expect(a_request(:get, 'http://example.com/windows-1251')).to have_been_made.at_least_once + expect(status.preview_cards.first.title).to eq('сэмпл текст') + end + end + context do let(:status) { Fabricate(:status, text: 'テストhttp://example.com/日本語') } diff --git a/spec/services/fetch_oembed_service_spec.rb b/spec/services/fetch_oembed_service_spec.rb index 706eb3f2a..5789fb53b 100644 --- a/spec/services/fetch_oembed_service_spec.rb +++ b/spec/services/fetch_oembed_service_spec.rb @@ -8,6 +8,7 @@ describe FetchOEmbedService, type: :service do before do stub_request(:get, "https://host.test/provider.json").to_return(status: 404) stub_request(:get, "https://host.test/provider.xml").to_return(status: 404) + stub_request(:get, "https://host.test/empty_provider.json").to_return(status: 200) end describe 'discover_provider' do @@ -93,6 +94,23 @@ describe FetchOEmbedService, type: :service do expect(subject.call('https://host.test/oembed.html')).to be_nil end end + + context 'Empty JSON provider is discoverable' do + before do + stub_request(:get, 'https://host.test/oembed.html').to_return( + status: 200, + headers: { 'Content-Type': 'text/html' }, + body: request_fixture('oembed_json_empty.html') + ) + end + + it 'returns new OEmbed::Provider for JSON provider' do + subject.call('https://host.test/oembed.html') + expect(subject.endpoint_url).to eq 'https://host.test/empty_provider.json' + expect(subject.format).to eq :json + end + end + end context 'when status code is not 200' do diff --git a/spec/services/hashtag_query_service_spec.rb b/spec/services/hashtag_query_service_spec.rb new file mode 100644 index 000000000..24282d2f0 --- /dev/null +++ b/spec/services/hashtag_query_service_spec.rb @@ -0,0 +1,60 @@ +require 'rails_helper' + +describe HashtagQueryService, type: :service do + describe '.call' do + let(:account) { Fabricate(:account) } + let(:tag1) { Fabricate(:tag) } + let(:tag2) { Fabricate(:tag) } + let!(:status1) { Fabricate(:status, tags: [tag1]) } + let!(:status2) { Fabricate(:status, tags: [tag2]) } + let!(:both) { Fabricate(:status, tags: [tag1, tag2]) } + + it 'can add tags in "any" mode' do + results = subject.call(tag1, { any: [tag2.name] }) + expect(results).to include status1 + expect(results).to include status2 + expect(results).to include both + end + + it 'can remove tags in "all" mode' do + results = subject.call(tag1, { all: [tag2.name] }) + expect(results).to_not include status1 + expect(results).to_not include status2 + expect(results).to include both + end + + it 'can remove tags in "none" mode' do + results = subject.call(tag1, { none: [tag2.name] }) + expect(results).to include status1 + expect(results).to_not include status2 + expect(results).to_not include both + end + + it 'ignores an invalid mode' do + results = subject.call(tag1, { wark: [tag2.name] }) + expect(results).to include status1 + expect(results).to_not include status2 + expect(results).to include both + end + + it 'handles being passed non existant tag names' do + results = subject.call(tag1, { any: ['wark'] }) + expect(results).to include status1 + expect(results).to_not include status2 + expect(results).to include both + end + + it 'can restrict to an account' do + BlockService.new.call(account, status1.account) + results = subject.call(tag1, { none: [tag2.name] }, account) + expect(results).to_not include status1 + end + + it 'can restrict to local' do + status1.account.update(domain: 'example.com') + status1.update(local: false, uri: 'example.com/toot') + results = subject.call(tag1, { any: [tag2.name] }, nil, true) + expect(results).to_not include status1 + end + end +end diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb index 40fa8fbef..3774fed6f 100644 --- a/spec/services/post_status_service_spec.rb +++ b/spec/services/post_status_service_spec.rb @@ -7,7 +7,7 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) text = "test status update" - status = subject.call(account, text) + status = subject.call(account, text: text) expect(status).to be_persisted expect(status.text).to eq text @@ -18,13 +18,37 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) text = "test status update" - status = subject.call(account, text, in_reply_to_status) + status = subject.call(account, text: text, thread: in_reply_to_status) expect(status).to be_persisted expect(status.text).to eq text expect(status.thread).to eq in_reply_to_status end + it 'schedules a status' do + account = Fabricate(:account) + future = Time.now.utc + 2.hours + + status = subject.call(account, text: 'Hi future!', scheduled_at: future) + + expect(status).to be_a ScheduledStatus + expect(status.scheduled_at).to eq future + expect(status.params['text']).to eq 'Hi future!' + end + + it 'creates response to the original status of boost' do + boosted_status = Fabricate(:status) + in_reply_to_status = Fabricate(:status, reblog: boosted_status) + account = Fabricate(:account) + text = "test status update" + + status = subject.call(account, text: text, thread: in_reply_to_status) + + expect(status).to be_persisted + expect(status.text).to eq text + expect(status.thread).to eq boosted_status + end + it 'creates a sensitive status' do status = create_status_with_options(sensitive: true) @@ -55,6 +79,13 @@ RSpec.describe PostStatusService, type: :service do expect(status.visibility).to eq "private" end + it 'creates a status with limited visibility for silenced users' do + status = subject.call(Fabricate(:account, silenced: true), text: 'test', visibility: :public) + + expect(status).to be_persisted + expect(status.visibility).to eq "unlisted" + end + it 'creates a status for the given application' do application = Fabricate(:application) @@ -68,7 +99,7 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) text = 'This is an English text.' - status = subject.call(account, text) + status = subject.call(account, text: text) expect(status.language).to eq 'en' end @@ -79,7 +110,7 @@ RSpec.describe PostStatusService, type: :service do allow(ProcessMentionsService).to receive(:new).and_return(mention_service) account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(ProcessMentionsService).to have_received(:new) expect(mention_service).to have_received(:call).with(status) @@ -91,7 +122,7 @@ RSpec.describe PostStatusService, type: :service do allow(ProcessHashtagsService).to receive(:new).and_return(hashtags_service) account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(ProcessHashtagsService).to have_received(:new) expect(hashtags_service).to have_received(:call).with(status) @@ -104,7 +135,7 @@ RSpec.describe PostStatusService, type: :service do account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(DistributionWorker).to have_received(:perform_async).with(status.id) expect(Pubsubhubbub::DistributionWorker).to have_received(:perform_async).with(status.stream_entry.id) @@ -115,7 +146,7 @@ RSpec.describe PostStatusService, type: :service do allow(LinkCrawlWorker).to receive(:perform_async) account = Fabricate(:account) - status = subject.call(account, "test status update") + status = subject.call(account, text: "test status update") expect(LinkCrawlWorker).to have_received(:perform_async).with(status.id) end @@ -126,8 +157,7 @@ RSpec.describe PostStatusService, type: :service do status = subject.call( account, - "test status update", - nil, + text: "test status update", media_ids: [media.id], ) @@ -140,8 +170,7 @@ RSpec.describe PostStatusService, type: :service do expect do subject.call( account, - "test status update", - nil, + text: "test status update", media_ids: [ Fabricate(:media_attachment, account: account), Fabricate(:media_attachment, account: account), @@ -162,8 +191,7 @@ RSpec.describe PostStatusService, type: :service do expect do subject.call( account, - "test status update", - nil, + text: "test status update", media_ids: [ Fabricate(:media_attachment, type: :video, account: account), Fabricate(:media_attachment, type: :image, account: account), @@ -177,12 +205,12 @@ RSpec.describe PostStatusService, type: :service do it 'returns existing status when used twice with idempotency key' do account = Fabricate(:account) - status1 = subject.call(account, 'test', nil, idempotency: 'meepmeep') - status2 = subject.call(account, 'test', nil, idempotency: 'meepmeep') + status1 = subject.call(account, text: 'test', idempotency: 'meepmeep') + status2 = subject.call(account, text: 'test', idempotency: 'meepmeep') expect(status2.id).to eq status1.id end def create_status_with_options(**options) - subject.call(Fabricate(:account), 'test', nil, options) + subject.call(Fabricate(:account), options.merge(text: 'test')) end end diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb index 2134f51fd..7bba83a60 100644 --- a/spec/services/remove_status_service_spec.rb +++ b/spec/services/remove_status_service_spec.rb @@ -19,7 +19,7 @@ RSpec.describe RemoveStatusService, type: :service do jeff.follow!(alice) hank.follow!(alice) - @status = PostStatusService.new.call(alice, 'Hello @bob@example.com') + @status = PostStatusService.new.call(alice, text: 'Hello @bob@example.com') Fabricate(:status, account: bill, reblog: @status, uri: 'hoge') subject.call(@status) end diff --git a/spec/services/resolve_account_service_spec.rb b/spec/services/resolve_account_service_spec.rb index dd7561587..27a85af7c 100644 --- a/spec/services/resolve_account_service_spec.rb +++ b/spec/services/resolve_account_service_spec.rb @@ -119,8 +119,6 @@ RSpec.describe ResolveAccountService, type: :service do expect(account.actor_type).to eq 'Person' end end - - pending end it 'processes one remote account at a time using locks' do diff --git a/spec/services/unfollow_service_spec.rb b/spec/services/unfollow_service_spec.rb index c5914c818..8a2881ab1 100644 --- a/spec/services/unfollow_service_spec.rb +++ b/spec/services/unfollow_service_spec.rb @@ -56,4 +56,22 @@ RSpec.describe UnfollowService, type: :service do expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once end end + + describe 'remote ActivityPub (reverse)' do + let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account } + + before do + bob.follow!(sender) + stub_request(:post, 'http://example.com/inbox').to_return(status: 200) + subject.call(bob, sender) + end + + it 'destroys the following relation' do + expect(bob.following?(sender)).to be false + end + + it 'sends a reject activity' do + expect(a_request(:post, 'http://example.com/inbox')).to have_been_made.once + end + end end diff --git a/spec/validators/blacklisted_email_validator_spec.rb b/spec/validators/blacklisted_email_validator_spec.rb new file mode 100644 index 000000000..d2e442f4a --- /dev/null +++ b/spec/validators/blacklisted_email_validator_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe BlacklistedEmailValidator, type: :validator do + describe '#validate' do + let(:user) { double(email: 'info@mail.com', errors: errors) } + let(:errors) { double(add: nil) } + + before do + allow_any_instance_of(described_class).to receive(:blocked_email?) { blocked_email } + described_class.new.validate(user) + end + + context 'blocked_email?' do + let(:blocked_email) { true } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(:email, I18n.t('users.invalid_email')) + end + end + + context '!blocked_email?' do + let(:blocked_email) { false } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:email, I18n.t('users.invalid_email')) + end + end + end +end diff --git a/spec/validators/disallowed_hashtags_validator_spec.rb b/spec/validators/disallowed_hashtags_validator_spec.rb new file mode 100644 index 000000000..8ec1302ab --- /dev/null +++ b/spec/validators/disallowed_hashtags_validator_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe DisallowedHashtagsValidator, type: :validator do + describe '#validate' do + before do + allow_any_instance_of(described_class).to receive(:select_tags) { tags } + described_class.new.validate(status) + end + + let(:status) { double(errors: errors, local?: local, reblog?: reblog, text: '') } + let(:errors) { double(add: nil) } + + context 'unless status.local? && !status.reblog?' do + let(:local) { false } + let(:reblog) { true } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:text, any_args) + end + end + + context 'status.local? && !status.reblog?' do + let(:local) { true } + let(:reblog) { false } + + context 'tags.empty?' do + let(:tags) { [] } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:text, any_args) + end + end + + context '!tags.empty?' do + let(:tags) { %w(a b c) } + + it 'calls errors.add' do + expect(errors).to have_received(:add) + .with(:text, I18n.t('statuses.disallowed_hashtags', tags: tags.join(', '), count: tags.size)) + end + end + end + end +end diff --git a/spec/validators/email_mx_validator_spec.rb b/spec/validators/email_mx_validator_spec.rb new file mode 100644 index 000000000..bc68f63cf --- /dev/null +++ b/spec/validators/email_mx_validator_spec.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe EmailMxValidator do + describe '#validate' do + let(:user) { double(email: 'foo@example.com', errors: double(add: nil)) } + + it 'adds an error if there are no DNS records for the e-mail domain' do + resolver = double + + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([]) + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + + subject.validate(user) + expect(user.errors).to have_received(:add) + end + + it 'adds an error if a MX record exists but does not lead to an IP' do + resolver = double + + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) + allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([]) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + + subject.validate(user) + expect(user.errors).to have_received(:add) + end + + it 'adds an error if the A record is blacklisted' do + EmailDomainBlock.create!(domain: '1.2.3.4') + resolver = double + + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([]) + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '1.2.3.4')]) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + + subject.validate(user) + expect(user.errors).to have_received(:add) + end + + it 'adds an error if the MX record is blacklisted' do + EmailDomainBlock.create!(domain: '2.3.4.5') + resolver = double + + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) + allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '2.3.4.5')]) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + + subject.validate(user) + expect(user.errors).to have_received(:add) + end + + it 'adds an error if the MX hostname is blacklisted' do + EmailDomainBlock.create!(domain: 'mail.example.com') + resolver = double + + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')]) + allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([]) + allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '2.3.4.5')]) + allow(resolver).to receive(:timeouts=).and_return(nil) + allow(Resolv::DNS).to receive(:open).and_yield(resolver) + + subject.validate(user) + expect(user.errors).to have_received(:add) + end + end +end diff --git a/spec/validators/follow_limit_validator_spec.rb b/spec/validators/follow_limit_validator_spec.rb new file mode 100644 index 000000000..cc8fbb631 --- /dev/null +++ b/spec/validators/follow_limit_validator_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe FollowLimitValidator, type: :validator do + describe '#validate' do + before do + allow_any_instance_of(described_class).to receive(:limit_reached?).with(account) do + limit_reached + end + + described_class.new.validate(follow) + end + + let(:follow) { double(account: account, errors: errors) } + let(:errors) { double(add: nil) } + let(:account) { double(nil?: _nil, local?: local, following_count: 0, followers_count: 0) } + let(:_nil) { true } + let(:local) { false } + + context 'follow.account.nil? || !follow.account.local?' do + let(:_nil) { true } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:base, any_args) + end + end + + context '!(follow.account.nil? || !follow.account.local?)' do + let(:_nil) { false } + let(:local) { true } + + context 'limit_reached?' do + let(:limit_reached) { true } + + it 'calls errors.add' do + expect(errors).to have_received(:add) + .with(:base, I18n.t('users.follow_limit_reached', limit: FollowLimitValidator::LIMIT)) + end + end + + context '!limit_reached?' do + let(:limit_reached) { false } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:base, any_args) + end + end + end + end +end diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb index e2d1a15ec..11e55f933 100644 --- a/spec/validators/status_length_validator_spec.rb +++ b/spec/validators/status_length_validator_spec.rb @@ -4,8 +4,17 @@ require 'rails_helper' describe StatusLengthValidator do describe '#validate' do - it 'does not add errors onto remote statuses' - it 'does not add errors onto local reblogs' + it 'does not add errors onto remote statuses' do + status = double(local?: false) + subject.validate(status) + expect(status).not_to receive(:errors) + end + + it 'does not add errors onto local reblogs' do + status = double(local?: false, reblog?: true) + subject.validate(status) + expect(status).not_to receive(:errors) + end it 'adds an error when content warning is over 500 characters' do status = double(spoiler_text: 'a' * 520, text: '', errors: double(add: nil), local?: true, reblog?: false) diff --git a/spec/validators/status_pin_validator_spec.rb b/spec/validators/status_pin_validator_spec.rb new file mode 100644 index 000000000..06532e5b3 --- /dev/null +++ b/spec/validators/status_pin_validator_spec.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe StatusPinValidator, type: :validator do + describe '#validate' do + before do + subject.validate(pin) + end + + let(:pin) { double(account: account, errors: errors, status: status, account_id: pin_account_id) } + let(:status) { double(reblog?: reblog, account_id: status_account_id, visibility: visibility) } + let(:account) { double(status_pins: status_pins, local?: local) } + let(:status_pins) { double(count: count) } + let(:errors) { double(add: nil) } + let(:pin_account_id) { 1 } + let(:status_account_id) { 1 } + let(:visibility) { 'public' } + let(:local) { false } + let(:reblog) { false } + let(:count) { 0 } + + context 'pin.status.reblog?' do + let(:reblog) { true } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(:base, I18n.t('statuses.pin_errors.reblog')) + end + end + + context 'pin.account_id != pin.status.account_id' do + let(:pin_account_id) { 1 } + let(:status_account_id) { 2 } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(:base, I18n.t('statuses.pin_errors.ownership')) + end + end + + context 'unless %w(public unlisted).include?(pin.status.visibility)' do + let(:visibility) { '' } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(:base, I18n.t('statuses.pin_errors.private')) + end + end + + context 'pin.account.status_pins.count > 4 && pin.account.local?' do + let(:count) { 5 } + let(:local) { true } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(:base, I18n.t('statuses.pin_errors.limit')) + end + end + end +end diff --git a/spec/validators/unique_username_validator_spec.rb b/spec/validators/unique_username_validator_spec.rb index b9d773bed..c2e2eedf4 100644 --- a/spec/validators/unique_username_validator_spec.rb +++ b/spec/validators/unique_username_validator_spec.rb @@ -15,14 +15,6 @@ describe UniqueUsernameValidator do expect(account).to be_valid end - it 'adds an error when the username is already used with ignoring dots' do - pending 'allowing dots in username is still in development' - Fabricate(:account, username: 'abcd.ef') - account = double(username: 'ab.cdef', persisted?: false, errors: double(add: nil)) - subject.validate(account) - expect(account.errors).to have_received(:add) - end - it 'adds an error when the username is already used with ignoring cases' do Fabricate(:account, username: 'ABCdef') account = double(username: 'abcDEF', persisted?: false, errors: double(add: nil)) diff --git a/spec/validators/unreserved_username_validator_spec.rb b/spec/validators/unreserved_username_validator_spec.rb new file mode 100644 index 000000000..0187941b0 --- /dev/null +++ b/spec/validators/unreserved_username_validator_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UnreservedUsernameValidator, type: :validator do + describe '#validate' do + before do + allow(validator).to receive(:reserved_username?) { reserved_username } + validator.validate(account) + end + + let(:validator) { described_class.new } + let(:account) { double(username: username, errors: errors) } + let(:errors ) { double(add: nil) } + + context '@username.nil?' do + let(:username) { nil } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(:username, any_args) + end + end + + context '!@username.nil?' do + let(:username) { '' } + + context 'reserved_username?' do + let(:reserved_username) { true } + + it 'calls erros.add' do + expect(errors).to have_received(:add).with(:username, I18n.t('accounts.reserved_username')) + end + end + + context '!reserved_username?' do + let(:reserved_username) { false } + + it 'not calls erros.add' do + expect(errors).not_to have_received(:add).with(:username, any_args) + end + end + end + end +end diff --git a/spec/validators/url_validator_spec.rb b/spec/validators/url_validator_spec.rb new file mode 100644 index 000000000..e8d0e6494 --- /dev/null +++ b/spec/validators/url_validator_spec.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UrlValidator, type: :validator do + describe '#validate_each' do + before do + allow(validator).to receive(:compliant?).with(value) { compliant } + validator.validate_each(record, attribute, value) + end + + let(:validator) { described_class.new(attributes: [attribute]) } + let(:record) { double(errors: errors) } + let(:errors) { double(add: nil) } + let(:value) { '' } + let(:attribute) { :foo } + + context 'unless compliant?' do + let(:compliant) { false } + + it 'calls errors.add' do + expect(errors).to have_received(:add).with(attribute, I18n.t('applications.invalid_url')) + end + end + + context 'if compliant?' do + let(:compliant) { true } + + it 'not calls errors.add' do + expect(errors).not_to have_received(:add).with(attribute, any_args) + end + end + end +end diff --git a/spec/workers/publish_scheduled_status_worker_spec.rb b/spec/workers/publish_scheduled_status_worker_spec.rb new file mode 100644 index 000000000..f8547e6fe --- /dev/null +++ b/spec/workers/publish_scheduled_status_worker_spec.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe PublishScheduledStatusWorker do + subject { described_class.new } + + let(:scheduled_status) { Fabricate(:scheduled_status, params: { text: 'Hello world, future!' }) } + + describe 'perform' do + before do + subject.perform(scheduled_status.id) + end + + it 'creates a status' do + expect(scheduled_status.account.statuses.first.text).to eq 'Hello world, future!' + end + + it 'removes the scheduled status' do + expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil + end + end +end diff --git a/vendor/assets/javascripts/.keep b/vendor/.keep similarity index 100% rename from vendor/assets/javascripts/.keep rename to vendor/.keep diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep deleted file mode 100644 index e69de29bb..000000000 diff --git a/yarn.lock b/yarn.lock index 38a91d10b..9ff12a712 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,32 +9,32 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.1.tgz#406658caed0e9686fa4feb5c2f3cefb6161c0f41" - integrity sha512-7Yy2vRB6KYbhWeIrrwJmKv9UwDxokmlo43wi6AV84oNs4Gi71NTNGh3YxY/hK3+CxuSc6wcKSl25F2tQOhm1GQ== +"@babel/core@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.0.0" - "@babel/helpers" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" convert-source-map "^1.1.0" - debug "^3.1.0" - json5 "^0.5.0" + debug "^4.1.0" + json5 "^2.1.0" lodash "^4.17.10" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz#1efd58bffa951dc846449e58ce3a1d7f02d393aa" - integrity sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q== +"@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.2.2" jsesc "^2.5.1" lodash "^4.17.10" source-map "^0.5.0" @@ -47,12 +47,12 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz#ba26336beb2abb547d58b6eba5b84d77975a39eb" - integrity sha512-9HdU8lrAc4FUZOy+y2w//kUhynSpkGIRYDzJW1oKJx7+v8m6UEAbAd2tSvxirsq2kJTXJZZS6Eo8FnUDUH0ZWw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== dependencies: - "@babel/helper-explode-assignable-expression" "^7.0.0" + "@babel/helper-explode-assignable-expression" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-builder-react-jsx@^7.0.0": @@ -63,39 +63,50 @@ "@babel/types" "^7.0.0" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz#e036956bb33d76e59c07a04a1fff144e9f62ab78" - integrity sha512-HdYG6vr4KgXHK0q1QRZ8guoYCF5rZjIdPlhcVY+j4EBK/FDR+cXRM5/6lQr3NIWDc7dO1KfgjG5rfH6lM89VBw== +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== dependencies: "@babel/helper-hoist-variables" "^7.0.0" - "@babel/traverse" "^7.0.0" + "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-define-map@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz#a5684dd2adf30f0137cf9b0bde436f8c2db17225" - integrity sha512-acbCxYS9XufWxsBiclmXMK1CFz7en/XSYvHFcbb3Jb8BqjFEBrA46WlIsoSQTRG/eYN60HciUnzdyQxOZhrHfw== +"@babel/helper-create-class-features-plugin@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.3.tgz#f6e719abb90cb7f4a69591e35fd5eb89047c4a7c" + integrity sha512-xO/3Gn+2C7/eOUeb0VRnSP1+yvWHNxlpAot1eMhtoKDCN7POsyQP5excuT5UsV5daHxMWBeIIOeI5cmB8vMRgQ== dependencies: - "@babel/helper-function-name" "^7.0.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.2.3" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" "@babel/types" "^7.0.0" lodash "^4.17.10" -"@babel/helper-explode-assignable-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz#fdfa4c88603ae3e954d0fc3244d5ca82fb468497" - integrity sha512-5gLPwdDnYf8GfPsjS+UmZUtYE1jaXTFm1P+ymGobqvXbA0q3ANgpH60+C6zDrRAWXYbQXYvzzQC/r0gJVNNltQ== +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== dependencies: - "@babel/traverse" "^7.0.0" + "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-function-name@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz#a68cc8d04420ccc663dd258f9cc41b8261efa2d4" - integrity sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q== +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== dependencies: "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.0.0" + "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-get-function-arity@^7.0.0": @@ -126,16 +137,16 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-module-transforms@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz#b01ee7d543e81e8c3fc404b19c9f26acb6e4cf4c" - integrity sha512-QdwmTTlPmT7TZcf30dnqm8pem+o48tVt991xXogE5CQCwqSpWKuzH2E9v8VWeccQ66a6/CmrLZ+bwp66JYeM5A== +"@babel/helper-module-transforms@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" + integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA== dependencies: "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/template" "^7.2.2" + "@babel/types" "^7.2.2" lodash "^4.17.10" "@babel/helper-optimise-call-expression@^7.0.0": @@ -157,33 +168,33 @@ dependencies: lodash "^4.17.10" -"@babel/helper-remap-async-to-generator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz#6512273c2feb91587822335cf913fdf680c26901" - integrity sha512-3o4sYLOsK6m0A7t1P0saTanBPmk5MAlxVnp9773Of4L8PMVLukU7loZix5KoJgflxSo2c2ETTzseptc0rQEp7A== +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-replace-supers@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz#b6f21237280e0be54f591f63a464b66627ced707" - integrity sha512-fsSv7VogxzMSmGch6DwhKHGsciVXo7hbfhBgH9ZrgJMXKMjO7ASQTUfbVL7MU1uCfviyqjucazGK7TWPT9weuQ== +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5" + integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA== dependencies: "@babel/helper-member-expression-to-functions" "^7.0.0" "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.0.0" + "@babel/traverse" "^7.2.3" "@babel/types" "^7.0.0" -"@babel/helper-simple-access@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz#ff36a27983ae4c27122da2f7f294dced80ecbd08" - integrity sha512-CNeuX52jbQSq4j1n+R+21xrjbTjsnXa9n1aERbgHRD/p9h4Udkxr1n24yPMQmnTETHdnQDvkVSYWFw/ETAymYg== +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== dependencies: - "@babel/template" "^7.0.0" + "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" "@babel/helper-split-export-declaration@^7.0.0": @@ -193,24 +204,24 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-wrap-function@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz#1c8e42a2cfb0808e3140189dfe9490782a6fa740" - integrity sha512-kjprWPDNVPZ/9pyLRXcZBvfjnFwqokmXTPTaC4AV8Ns7WRl7ewSxrB19AWZzQsC/WSPQLOw1ciR8uPYkAM1znA== +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== dependencies: - "@babel/helper-function-name" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" -"@babel/helpers@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0.tgz#7213388341eeb07417f44710fd7e1d00acfa6ac0" - integrity sha512-jbvgR8iLZPnyk6m/UqdXYsSxbVtRi7Pd3CzB4OPwPBnmhNG1DWjiiy777NTuoyIcniszK51R40L5pgfXAfHDtw== +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== dependencies: - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" "@babel/highlight@^7.0.0": version "7.0.0" @@ -221,265 +232,255 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz#697655183394facffb063437ddf52c0277698775" - integrity sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g== +"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" + integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== -"@babel/plugin-proposal-async-generator-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz#5d1eb6b44fd388b97f964350007ab9da090b1d70" - integrity sha512-QsXmmjLrFADCcDQAfdQn7tfBRLjpTzRWaDpKpW4ZXW1fahPG4SvjcF1xfvVnXGC662RSExYXL+6DAqbtgqMXeA== +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.0.0" - "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" -"@babel/plugin-proposal-class-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0.tgz#a16b5c076ba6c3d87df64d2480a380e979543731" - integrity sha512-mVgsbdySh6kuzv4omXvw0Kuh+3hrUrQ883qTCf75MqfC6zctx2LXrP3Wt+bbJmB5fE5nfhf/Et2pQyrRy4j0Pg== +"@babel/plugin-proposal-class-properties@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.3.tgz#c9e1294363b346cff333007a92080f3203698461" + integrity sha512-FVuQngLoN2iDrpW7LmhPZ2sO4DJxf35FOcwidwB9Ru9tMvI5URthnkVHuG14IStV+TzkMTyLMoOUlSTtrdVwqw== dependencies: - "@babel/helper-function-name" "^7.0.0" - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.2.3" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" -"@babel/plugin-proposal-decorators@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0.tgz#33e7e683ca9f8ec3f72104ed11096839d48df502" - integrity sha512-td2C+9oBYg4b70VD9Qp/Nzmktb558D4JlOyaDS/dFoHa7plIxt5dvUM+mIJn3Wh1Z6GXItygbOTrJxEgX19kcA== +"@babel/plugin-proposal-decorators@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.2.3.tgz#1fe5b0d22ce0c4418f225474ebd40267430364c0" + integrity sha512-jhCFm7ftmue02EWIYqbhzP0iConEPsgVQeDriOs/Qc2lgr6MDtHTTrv3hE2GOOQDFjQ9tjP7nWQq0ad0JhIsQg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.2.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-json-strings@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" - integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== +"@babel/plugin-proposal-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" + integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" - integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" - integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" - integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520" + integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" regexpu-core "^4.2.0" -"@babel/plugin-syntax-async-generators@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" - integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-class-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" - integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w== +"@babel/plugin-syntax-decorators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" + integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-decorators@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0.tgz#7e151f744e1de3ec3601f6a4c69c8662cef1b27b" - integrity sha512-eD1fI6SSuZDbyTP6jG+LBHv7Fr6zh2P1GYsAT8opAuzrDqwSM20qfvZTwCRSHDeysxLd9s6e94X6dcsGQG9dGA== +"@babel/plugin-syntax-dynamic-import@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" - integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-json-strings@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" - integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== +"@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-jsx@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" - integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" - integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" - integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-arrow-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" - integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz#feaf18f4bfeaf2236eea4b2d4879da83006cc8f5" - integrity sha512-CiWNhSMZzj1n3uEKUUS/oL+a7Xi8hnPQB6GpC1WfL/ZYvxBLDBn14sHMo5EyOaeArccSonyk5jFIKMRRbrHOnQ== +"@babel/plugin-transform-async-to-generator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" - integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" - integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== +"@babel/plugin-transform-block-scoping@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4" + integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.10" -"@babel/plugin-transform-classes@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz#9e65ca401747dde99e344baea90ab50dccb4c468" - integrity sha512-8LBm7XsHQiNISEmb+ejBiHi1pUihwUf+lrIwyVsXVbQ1vLqgkvhgayK5JnW3WXvQD2rmM0qxFAIyDE5vtMem2A== +"@babel/plugin-transform-classes@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" + integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.0.0" - "@babel/helper-function-name" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" "@babel/helper-optimise-call-expression" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" "@babel/helper-split-export-declaration" "^7.0.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" - integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz#68e911e1935dda2f06b6ccbbf184ffb024e9d43a" - integrity sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg== +"@babel/plugin-transform-destructuring@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3" + integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" - integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/plugin-transform-duplicate-keys@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" - integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-exponentiation-operator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz#c51b45e090a01876f64d32b5b46c0799c85ea56c" - integrity sha512-Ig74elCuFQ0mvHkWUq5qDCNI3qHWlop5w4TcDxdtJiOk8Egqe2uxDRY9XnXGSlmWClClmnixcoYumyvbAuj4dA== +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-for-of@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" - integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== +"@babel/plugin-transform-for-of@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9" + integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-function-name@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz#eeda18dc22584e13c3581a68f6be4822bb1d1d81" - integrity sha512-mR7JN9vkwsAIot74pSwzn/2Gq4nn2wN0HKtQyJLc1ghAarsymdBMTfh+Q/aeR2N3heXs3URQscTLrKe3yUU7Yw== +"@babel/plugin-transform-function-name@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a" + integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ== dependencies: - "@babel/helper-function-name" "^7.0.0" + "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" - integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-amd@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz#2430ab73db9960c4ca89966f425b803f5d0d0468" - integrity sha512-CtSVpT/0tty/4405qczoIHm41YfFbPChplsmfBwsi3RTq/M9cHgVb3ixI5bqqgdKkqWwSX2sXqejvMKLuTVU+Q== +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== dependencies: - "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-commonjs@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz#20b906e5ab130dd8e456b694a94d9575da0fd41f" - integrity sha512-BIcQLgPFCxi7YygtNpz5xj+7HxhOprbCGZKeLW6Kxsn1eHS6sJZMw4MfmqFZagl/v6IVa0AJoMHdDXLVrpd3Aw== +"@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== dependencies: - "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-systemjs@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz#8873d876d4fee23209decc4d1feab8f198cf2df4" - integrity sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g== +"@babel/plugin-transform-modules-systemjs@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" + integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ== dependencies: "@babel/helper-hoist-variables" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-modules-umd@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz#e7bb4f2a6cd199668964241951a25013450349be" - integrity sha512-EMyKpzgugxef+R1diXDwqw/Hmt5ls8VxfI8Gq5Lo8Qp3oKIepkYG4L/mvE2dmZSRalgL9sguoPKbnQ1m96hVFw== +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== dependencies: - "@babel/helper-module-transforms" "^7.0.0" + "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-new-target@^7.0.0": @@ -489,62 +490,62 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz#b8587d511309b3a0e96e9e38169908b3e392041e" - integrity sha512-BfAiF1l18Xr1shy1NyyQgLiHDvh/S7APiEM5+0wxTsQ+e3fgXO+NA47u4PvppzH0meJS21y0gZHcjnvUAJj8tQ== +"@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" -"@babel/plugin-transform-parameters@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz#da864efa111816a6df161d492f33de10e74b1949" - integrity sha512-eWngvRBWx0gScot0xa340JzrkA+8HGAk1OaCHDfXAjkrTFkp73Lcf+78s7AStSdRML5nzx5aXpnjN1MfrjkBoA== +"@babel/plugin-transform-parameters@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2" + integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA== dependencies: - "@babel/helper-call-delegate" "^7.0.0" + "@babel/helper-call-delegate" "^7.1.0" "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" - integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-inline-elements@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.0.0.tgz#caec13a7829b34d7eb64dfe9fc310326f74f7b05" - integrity sha512-2TZsbrzXXwLjUjftRWPtvcAwpdSUp5CIQsVxUqTHRAvbMIcIRnz8C670eMUW5ZTQBTjdIRFGt9nkq53iCinu9g== +"@babel/plugin-transform-react-inline-elements@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.2.0.tgz#3e36e7c47f1c21f52b2b0090d5cd83ceb19a4770" + integrity sha512-OAflI+josEl8xoAzZYpFnN+C4e9wvxDecExTtvDsteAcChIZtsH/D2kMNcJnrrzbFzCroGajCTr9tAB7K0KsiQ== dependencies: "@babel/helper-builder-react-jsx" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" - integrity sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA== +"@babel/plugin-transform-react-jsx-self@^7.0.0", "@babel/plugin-transform-react-jsx-self@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" - integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== +"@babel/plugin-transform-react-jsx-source@^7.0.0", "@babel/plugin-transform-react-jsx-source@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" + integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" - integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz#ca36b6561c4d3b45524f8efb6f0fbc9a0d1d622f" + integrity sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q== dependencies: "@babel/helper-builder-react-jsx" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" "@babel/plugin-transform-regenerator@^7.0.0": version "7.0.0" @@ -553,104 +554,105 @@ dependencies: regenerator-transform "^0.13.3" -"@babel/plugin-transform-runtime@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0.tgz#0f1443c07bac16dba8efa939e0c61d6922740062" - integrity sha512-yECRVxRu25Nsf6IY5v5XrXhcW9ZHomUQiq30VO8H7r3JYPcBJDTcxZmT+6v1O3QKKrDp1Wp40LinGbcd+jlp9A== +"@babel/plugin-transform-runtime@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" resolve "^1.8.1" + semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" - integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" - integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-sticky-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" - integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" - integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== +"@babel/plugin-transform-template-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b" + integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typeof-symbol@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" - integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-unicode-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" - integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== +"@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b" + integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" -"@babel/preset-env@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0.tgz#f450f200c14e713f98cb14d113bf0c2cfbb89ca9" - integrity sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ== +"@babel/preset-env@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.3.tgz#948c8df4d4609c99c7e0130169f052ea6a7a8933" + integrity sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-json-strings" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" - "@babel/plugin-syntax-async-generators" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-dotall-regex" "^7.0.0" - "@babel/plugin-transform-duplicate-keys" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-amd" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-modules-systemjs" "^7.0.0" - "@babel/plugin-transform-modules-umd" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" "@babel/plugin-transform-new-target" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" "@babel/plugin-transform-regenerator" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typeof-symbol" "^7.0.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - browserslist "^4.1.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" invariant "^2.2.2" js-levenshtein "^1.1.3" semver "^5.3.0" @@ -666,75 +668,125 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/runtime@7.0.0", "@babel/runtime@^7.0.0": +"@babel/runtime@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-rc.1.tgz#42f36fc5817911c89ea75da2b874054922967616" - integrity sha512-Nifv2kwP/nwR39cAOasNxzjYfpeuf/ZbZNtQz5eYxWTC9yHARU9wItFnAwz1GTZ62MU+AtSjzZPMbLK5Q9hmbg== +"@babel/runtime@7.2.0", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f" + integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg== dependencies: regenerator-runtime "^0.12.0" -"@babel/template@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" - integrity sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw== +"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" -"@babel/traverse@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz#b1fe9b6567fdf3ab542cfad6f3b31f854d799a61" - integrity sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.0.0" - "@babel/helper-function-name" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/types" "^7.0.0" - debug "^3.1.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" globals "^11.1.0" lodash "^4.17.10" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz#6e191793d3c854d19c6749989e3bc55f0e962118" - integrity sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" + integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== dependencies: esutils "^2.0.2" lodash "^4.17.10" to-fast-properties "^2.0.0" -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/postcss-image-set-function@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-image-set-function/-/postcss-image-set-function-1.0.0.tgz#1ef0913d90a9c4440495eb41624c202e53a703f3" - integrity sha512-B+uThZhN3rTRV7mjw3c+GCxIrBkHIAihnfZEb5Ig3+hauQMWGARD3j8UoMX7Hk6w4pBpMbm3Ggs9TVKvtn/kkA== +"@emotion/cache@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.0.tgz#e22eadcb770de4131ec707c84207e9e1ce210413" + integrity sha512-1/sT6GNyvWmxCtJek8ZDV+b+a+NMDx8/61UTnnF3rqrTY7bLTjw+fmXO7WgUIH0owuWKxza/J/FfAWC/RU4G7A== dependencies: - postcss "^6.0.20" - postcss-value-parser "^3.3.0" + "@emotion/sheet" "0.9.2" + "@emotion/stylis" "0.8.3" + "@emotion/utils" "0.11.1" + "@emotion/weak-memoize" "0.2.2" -"@csstools/sass-import-resolve@^1": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz#32c3cdb2f7af3cd8f0dca357b592e7271f3831b5" - integrity sha512-pH4KCsbtBLLe7eqUrw8brcuFO8IZlN36JjdKlOublibVdAIPHCzEnpBWOVUXK5sCf+DpBi8ZtuWtjF0srybdeA== +"@emotion/hash@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.1.tgz#9833722341379fb7d67f06a4b00ab3c37913da53" + integrity sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA== + +"@emotion/memoize@0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" + integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== + +"@emotion/serialize@^0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.3.tgz#c4af2d96e3ddb9a749b7b567daa7556bcae45af2" + integrity sha512-6Q+XH/7kMdHwtylwZvdkOVMydaGZ989axQ56NF7urTR7eiDMLGun//pFUy31ha6QR4C6JB+KJVhZ3AEAJm9Z1g== + dependencies: + "@emotion/hash" "0.7.1" + "@emotion/memoize" "0.7.1" + "@emotion/unitless" "0.7.3" + "@emotion/utils" "0.11.1" + csstype "^2.5.7" + +"@emotion/sheet@0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.2.tgz#74e5c6b5e489a1ba30ab246ab5eedd96916487c4" + integrity sha512-pVBLzIbC/QCHDKJF2E82V2H/W/B004mDFQZiyo/MSR+VC4pV5JLG0TF/zgQDFvP3fZL/5RTPGEmXlYJBMUuJ+A== + +"@emotion/stylis@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.3.tgz#3ca7e9bcb31b3cb4afbaeb66156d86ee85e23246" + integrity sha512-M3nMfJ6ndJMYloSIbYEBq6G3eqoYD41BpDOxreE8j0cb4fzz/5qvmqU9Mb2hzsXcCnIlGlWhS03PCzVGvTAe0Q== + +"@emotion/unitless@0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" + integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== + +"@emotion/utils@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.1.tgz#8529b7412a6eb4b48bdf6e720cc1b8e6e1e17628" + integrity sha512-8M3VN0hetwhsJ8dH8VkVy7xo5/1VoBsDOk/T4SJOeXwTO1c4uIqVNx2qyecLFnnUWD5vvUqHQ1gASSeUN6zcTg== + +"@emotion/weak-memoize@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.2.tgz#63985d3d8b02530e0869962f4da09142ee8e200e" + integrity sha512-n/VQ4mbfr81aqkx/XmVicOLjviMuy02eenSdJY33SVA7S2J42EU0P1H0mOogfYedb3wXA0d/LVtBrgTSm04WEA== + +"@gfx/zopfli@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@gfx/zopfli/-/zopfli-1.0.10.tgz#8cccfcbd670f676cb240812bcf8380c9a66da367" + integrity sha512-PAR3ICucog1HV+hDVF+VYNfnvB/JmE4C8YqxhMMEuxyycFthrv6hIEeCoNsRVF3J+SEtNLWRPTOXgcvQkZIM5A== + dependencies: + base64-js "^1.3.0" "@types/node@*": - version "10.9.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz#0f4cb2dc7c1de6096055357f70179043c33e9897" - integrity sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw== + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/q@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18" + integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA== "@types/react@16.4.6": version "16.4.6" @@ -743,151 +795,147 @@ dependencies: csstype "^2.2.0" -"@webassemblyjs/ast@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" - integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== +"@webassemblyjs/ast@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" + integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== dependencies: - "@webassemblyjs/helper-module-context" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/wast-parser" "1.7.6" - mamacro "^0.0.3" + "@webassemblyjs/helper-module-context" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/wast-parser" "1.7.11" -"@webassemblyjs/floating-point-hex-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" - integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== +"@webassemblyjs/floating-point-hex-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" + integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== -"@webassemblyjs/helper-api-error@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" - integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== +"@webassemblyjs/helper-api-error@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" + integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== -"@webassemblyjs/helper-buffer@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" - integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== +"@webassemblyjs/helper-buffer@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" + integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== -"@webassemblyjs/helper-code-frame@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" - integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== +"@webassemblyjs/helper-code-frame@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" + integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== dependencies: - "@webassemblyjs/wast-printer" "1.7.6" + "@webassemblyjs/wast-printer" "1.7.11" -"@webassemblyjs/helper-fsm@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" - integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== +"@webassemblyjs/helper-fsm@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" + integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== -"@webassemblyjs/helper-module-context@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" - integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== +"@webassemblyjs/helper-module-context@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" + integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== + +"@webassemblyjs/helper-wasm-bytecode@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" + integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== + +"@webassemblyjs/helper-wasm-section@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" + integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== dependencies: - mamacro "^0.0.3" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" -"@webassemblyjs/helper-wasm-bytecode@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" - integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== - -"@webassemblyjs/helper-wasm-section@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" - integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - -"@webassemblyjs/ieee754@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" - integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== +"@webassemblyjs/ieee754@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" + integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" - integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== +"@webassemblyjs/leb128@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" + integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== dependencies: "@xtuc/long" "4.2.1" -"@webassemblyjs/utf8@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" - integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== +"@webassemblyjs/utf8@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" + integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== -"@webassemblyjs/wasm-edit@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" - integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== +"@webassemblyjs/wasm-edit@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" + integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/helper-wasm-section" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - "@webassemblyjs/wasm-opt" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" - "@webassemblyjs/wast-printer" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/helper-wasm-section" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/wasm-opt" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" + "@webassemblyjs/wast-printer" "1.7.11" -"@webassemblyjs/wasm-gen@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" - integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== +"@webassemblyjs/wasm-gen@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" + integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/ieee754" "1.7.6" - "@webassemblyjs/leb128" "1.7.6" - "@webassemblyjs/utf8" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/ieee754" "1.7.11" + "@webassemblyjs/leb128" "1.7.11" + "@webassemblyjs/utf8" "1.7.11" -"@webassemblyjs/wasm-opt@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" - integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== +"@webassemblyjs/wasm-opt@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" + integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-buffer" "1.7.11" + "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" -"@webassemblyjs/wasm-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" - integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== +"@webassemblyjs/wasm-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" + integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-api-error" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/ieee754" "1.7.6" - "@webassemblyjs/leb128" "1.7.6" - "@webassemblyjs/utf8" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-api-error" "1.7.11" + "@webassemblyjs/helper-wasm-bytecode" "1.7.11" + "@webassemblyjs/ieee754" "1.7.11" + "@webassemblyjs/leb128" "1.7.11" + "@webassemblyjs/utf8" "1.7.11" -"@webassemblyjs/wast-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" - integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== +"@webassemblyjs/wast-parser@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" + integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/floating-point-hex-parser" "1.7.6" - "@webassemblyjs/helper-api-error" "1.7.6" - "@webassemblyjs/helper-code-frame" "1.7.6" - "@webassemblyjs/helper-fsm" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/floating-point-hex-parser" "1.7.11" + "@webassemblyjs/helper-api-error" "1.7.11" + "@webassemblyjs/helper-code-frame" "1.7.11" + "@webassemblyjs/helper-fsm" "1.7.11" "@xtuc/long" "4.2.1" - mamacro "^0.0.3" -"@webassemblyjs/wast-printer@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" - integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== +"@webassemblyjs/wast-printer@1.7.11": + version "1.7.11" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" + integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/wast-parser" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/wast-parser" "1.7.11" "@xtuc/long" "4.2.1" "@xtuc/ieee754@^1.2.0": @@ -926,81 +974,62 @@ acorn-dynamic-import@^3.0.0: acorn "^5.0.0" acorn-globals@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" - integrity sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" + integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== dependencies: - acorn "^5.0.0" + acorn "^6.0.1" + acorn-walk "^6.0.1" -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= - dependencies: - acorn "^3.0.4" +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -acorn@^3.0.4: - version "3.3.0" - resolved "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= +acorn-walk@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" + integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== -acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2: +acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -ajv-errors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" - integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= +acorn@^6.0.1, acorn@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" + integrity sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg== -ajv-keywords@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" - integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.1.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" - integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== +ajv@^6.1.0, ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1: + version "6.6.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" + integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= ansi-colors@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" - integrity sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg== + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== ansi-escapes@^3.0.0: version "3.1.0" @@ -1022,6 +1051,11 @@ 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: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1034,11 +1068,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -any-promise@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" - integrity sha1-gwtoCqflbzNFHUsEnzvYBESY7ic= - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1109,25 +1138,15 @@ array-equal@^1.0.0: resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.0.3: version "3.0.3" @@ -1137,16 +1156,6 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -1178,7 +1187,7 @@ array.prototype.flat@^1.2.1: es-abstract "^1.10.0" function-bind "^1.1.1" -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= @@ -1209,11 +1218,6 @@ 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-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= - assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -1241,11 +1245,6 @@ async-each@^1.0.0: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" integrity sha1-GdOGodntxufByF04iu28xW0zYC0= -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -1273,49 +1272,44 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^8.6.5: - version "8.6.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" - integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig== +autoprefixer@^9.4.3: + version "9.4.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.3.tgz#c97384a8fd80477b78049163a91bbc725d9c41d9" + integrity sha512-/XSnzDepRkAU//xLcXA/lUWxpsBuw0WiriAHOqnxkuCtzLhaz+fL4it4gp20BQ8n5SyLzK/FOc7A0+u/rti2FQ== dependencies: - browserslist "^3.2.8" - caniuse-lite "^1.0.30000864" + browserslist "^4.3.6" + caniuse-lite "^1.0.30000921" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.23" - postcss-value-parser "^3.2.3" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= + postcss "^7.0.6" + postcss-value-parser "^3.3.1" aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.2.1, aws4@^1.6.0, aws4@^1.8.0: +aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -axios@~0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" - integrity sha1-uk+S8XFn37q0CYN4VFS5rBScPG0= +axios@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= dependencies: - follow-redirects "^1.2.3" + follow-redirects "^1.3.0" is-buffer "^1.1.5" axobject-query@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.1.tgz#05dfa705ada8ad9db993fa6896f22d395b0b0a07" - integrity sha1-Bd+nBa2orZ25k/polvItOVsLCgc= + version "2.0.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" + integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== dependencies: ast-types-flow "0.0.7" -babel-code-frame@^6.22.0, babel-code-frame@^6.26.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= @@ -1354,10 +1348,10 @@ babel-core@^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-eslint@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220" - integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g== +babel-eslint@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.0.0" @@ -1396,10 +1390,10 @@ babel-jest@^23.6.0: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" -babel-loader@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.2.tgz#2079b8ec1628284a929241da3d90f5b3de2a5ae5" - integrity sha512-Law0PGtRV1JL8Y9Wpzc0d6EE0GD7LzXWCfaeWwboUMcBWNG6gvaWTK1/+BK7a4X5EmeJiGEuDDFxUsOa8RSWCw== +babel-loader@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" + integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw== dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" @@ -1415,7 +1409,7 @@ babel-messages@^6.23.0: babel-plugin-istanbul@^4.1.6: version "4.1.6" - resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== dependencies: babel-plugin-syntax-object-rest-spread "^6.13.0" @@ -1440,11 +1434,12 @@ babel-plugin-lodash@^3.3.4: require-package-name "^2.0.1" babel-plugin-macros@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.0.tgz#6c5f9836e1f6c0a9743b3bab4af29f73e437e544" - integrity sha512-flIBfrqAdHWn+4l2cS/4jZEyl+m5EaBHVzTb0aOF+eu/zR7E41/MoCFHPhDNL8Wzq1nyelnXeT+vcL2byFLSZw== + version "2.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.3.tgz#870345aa538d85f04b4614fea5922b55c45dd551" + integrity sha512-M8cE1Rx0zgfKYBWAS+T6ZVCLGuTKdBI5Rn3fu9q6iVdH0UjaXdmF501/VEYn7kLHCgguhGNk5JBzOn64e2xDEA== dependencies: cosmiconfig "^5.0.5" + resolve "^1.8.1" babel-plugin-preval@^3.0.1: version "3.0.1" @@ -1454,10 +1449,10 @@ babel-plugin-preval@^3.0.1: babel-plugin-macros "^2.2.2" require-from-string "^2.0.2" -babel-plugin-react-intl@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.0.0.tgz#ea2152b1fe0a36be33b89f8cc8b961b8fd4cfaf8" - integrity sha512-nUj2mtksYWrAluZd5YEIqOBz65QLpR3LQynwpr3JBzxvacN6H8OoRk82HtwLSLa15JVWOVnxEXdZdExfsigWlw== +babel-plugin-react-intl@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.0.1.tgz#4abc7fff04a7bbbb7034aec0a675713f2e52181c" + integrity sha512-FqnEO+Tq7kJVUPKsSG3s5jaHi3pAC4RUR11IrscvjsfkOApLP2DtzNo6dtQ+tX+OzEzJx7cUms8aCw5BFyW5xg== dependencies: "@babel/runtime" "^7.0.0" intl-messageformat-parser "^1.2.0" @@ -1465,13 +1460,13 @@ babel-plugin-react-intl@^3.0.0: babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" - resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + 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-react-remove-prop-types@^0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.15.tgz#7ba830e77276a0e788cd58ea527b5f70396e12a7" - integrity sha512-bFxxYdkZBwTjTgtZEPTLqu9g8Ajz8x8uEP/O1iVuaZIz2RuxJ2gtx0EXDJRonC++KGsgsW/4Hqvk4KViEtE2nw== +babel-plugin-transform-react-remove-prop-types@^0.4.21: + version "0.4.21" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.21.tgz#0087938f4348cb751b3e5055a6b38f3c61b5231b" + integrity sha512-+gQBtcnEhYFbMPFGr8YL7SHD4BpHifFDGEc+ES0+1iDwC9psist2+eumcLoHjBMumL7N/HI/G64XR5aQC8Nr5Q== babel-preset-jest@^23.2.0: version "23.2.0" @@ -1494,7 +1489,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: +babel-runtime@^6.22.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= @@ -1550,17 +1545,12 @@ backoff@^2.4.1: dependencies: precond "0.2" -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: +base64-js@^1.0.2, base64-js@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== @@ -1590,13 +1580,14 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bfj-node4@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830" - integrity sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg== +bfj@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" + integrity sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ== dependencies: bluebird "^3.5.1" check-types "^7.3.0" + hoopy "^0.1.2" tryer "^1.0.0" big.js@^3.1.3: @@ -1604,43 +1595,41 @@ big.js@^3.1.3: 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" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" - integrity sha1-RqoXUftqL5PuXmibsQh9SxTGwgU= + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" - integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== +bluebird@^3.5.1, bluebird@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" - integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= +body-parser@1.18.3: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= dependencies: bytes "3.0.0" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" bonjour@^3.5.0: version "3.5.0" @@ -1654,18 +1643,11 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= - dependencies: - hoek "2.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1699,15 +1681,22 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +bricks.js@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/bricks.js/-/bricks.js-1.8.0.tgz#8fdeb3c0226af251f4d5727a7df7f9ac0092b4b2" + integrity sha1-j96zwCJq8lH01XJ6fff5rACStLI= + dependencies: + knot.js "^1.1.5" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-process-hrtime@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" - integrity sha1-Ql1opY00R/AqBKqJQYf86K+Le44= + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== browser-resolve@^1.11.3: version "1.11.3" @@ -1718,7 +1707,7 @@ browser-resolve@^1.11.3: browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" - resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + 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" @@ -1749,7 +1738,7 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0: version "4.0.1" - resolved "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" @@ -1775,22 +1764,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.4, browserslist@^3.2.8: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== +browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.7.tgz#f1de479a6466ea47a0a26dcc725e7504817e624a" + integrity sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ== dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.1.tgz#328eb4ff1215b12df6589e9ab82f8adaa4fc8cd6" - integrity sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q== - dependencies: - caniuse-lite "^1.0.30000884" - electron-to-chromium "^1.3.62" - node-releases "^1.0.0-alpha.11" + caniuse-lite "^1.0.30000925" + electron-to-chromium "^1.3.96" + node-releases "^1.1.3" bser@^2.0.0: version "2.0.0" @@ -1821,7 +1802,7 @@ buffer-xor@^1.0.3: buffer@^4.3.0: version "4.9.1" - resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" @@ -1843,43 +1824,24 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== +cacache@^11.0.2, cacache@^11.2.0: + version "11.3.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" + integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" - integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - figgy-pudding "^3.1.0" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.3" + bluebird "^3.5.3" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.3" + graceful-fs "^4.1.15" + 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.2" - ssri "^6.0.0" - unique-filename "^1.1.0" + ssri "^6.0.1" + unique-filename "^1.1.1" y18n "^4.0.0" cache-base@^1.0.1: @@ -1897,6 +1859,13 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +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@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1904,6 +1873,13 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.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@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" @@ -1914,33 +1890,30 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - 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= -caniuse-lite@^1.0.30000823, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30000884: - version "1.0.30000885" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz#e889e9f8e7e50e769f2a49634c932b8aee622984" - integrity sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ== +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000921, caniuse-lite@^1.0.30000925: + version "1.0.30000926" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000926.tgz#4361a99d818ca6e521dbe89a732de62a194a789c" + integrity sha512-diMkEvxfFw09SkbErCLmw/1Fx1ZZe9xfWm4aeA2PUffB48x1tfZeMsK5j4BW7zN7Y4PdqmPVVdG2eYjE5IRTag== capture-exit@^1.2.0: version "1.2.0" @@ -1954,9 +1927,9 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" - resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" @@ -1965,7 +1938,7 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1: +chalk@^2.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== @@ -1974,11 +1947,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2021,10 +1989,10 @@ chokidar@^2.0.0, chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.2" -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== chrome-trace-event@^1.0.0: version "1.0.0" @@ -2034,9 +2002,9 @@ chrome-trace-event@^1.0.0: tslib "^1.9.0" ci-info@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.5.1.tgz#17e8eb5de6f8b2b6038f0cbb714d410bfa9f3030" - integrity sha512-fKFIKXaYiL1exImwJ0AhR/6jxFPSKQBk2ayV5NiNoruUs2+rxC2kNw0EG+1Z9dugZRdCrppskQ8DN2cyaUM1Hw== + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2106,16 +2074,20 @@ clone-deep@^2.0.1: kind-of "^6.0.0" shallow-clone "^1.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +coa@~2.0.1: + 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" @@ -2129,19 +2101,24 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.8.2, color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: 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== dependencies: color-name "1.1.3" -color-name@1.1.3, color-name@^1.0.0: +color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-string@^1.4.0: +color-name@^1.0.0: + 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.2: version "1.5.3" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== @@ -2149,35 +2126,30 @@ color-string@^1.4.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/color/-/color-1.0.3.tgz#e48e832d85f14ef694fb468811c2d5cfe729b55d" - integrity sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0= +color@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc" + integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg== dependencies: - color-convert "^1.8.2" - color-string "^1.4.0" + color-convert "^1.9.1" + color-string "^1.5.2" -colors@0.5.x: - version "0.5.1" - resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" - integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q= +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= -combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5, combined-stream@~1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.13.0, commander@^2.8.1: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== - -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== +commander@^2.11.0, commander@^2.18.0, 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@~2.17.1: version "2.17.1" @@ -2195,11 +2167,11 @@ component-emitter@^1.2.1: integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= compressible@~2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7" - integrity sha1-MmxfUH+7BV9UEWeCuWmoG2einac= + version "2.0.15" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== dependencies: - mime-db ">= 1.34.0 < 2" + mime-db ">= 1.36.0 < 2" compression-webpack-plugin@^2.0.0: version "2.0.0" @@ -2231,7 +2203,7 @@ 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.5.0, concat-stream@^1.6.0: +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== @@ -2318,9 +2290,9 @@ core-js@^1.0.0: integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= core-js@^2.4.0, core-js@^2.5.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz#87416ae817de957a3f249b3b5ca475d4aaed6042" + integrity sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -2337,11 +2309,12 @@ cosmiconfig@^4.0.0: parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.5: - version "5.0.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" - integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ== +cosmiconfig@^5.0.0, cosmiconfig@^5.0.5: + version "5.0.7" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" + integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== dependencies: + import-fresh "^2.0.0" is-directory "^0.3.1" js-yaml "^3.9.0" parse-json "^4.0.0" @@ -2354,9 +2327,19 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" +create-emotion@^10.0.4: + version "10.0.5" + resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-10.0.5.tgz#22487f19b59a7ed10144f808289eadffebcfab06" + integrity sha512-MIOSeFiMtPrAULEtd2GFYGZEzeN2xnCFoiHrjvUYjxruYCJfGqUOBmh4YEN1yU+Ww5yXr+DIZibFl7FEOP57iA== + dependencies: + "@emotion/cache" "10.0.0" + "@emotion/serialize" "^0.11.3" + "@emotion/sheet" "0.9.2" + "@emotion/utils" "0.11.1" + create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" - resolved "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + 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" @@ -2367,7 +2350,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" - resolved "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + 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" @@ -2377,15 +2360,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2: - version "15.6.3" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" - integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - cross-env@^5.1.4: version "5.2.0" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" @@ -2394,15 +2368,7 @@ cross-env@^5.1.4: cross-spawn "^6.0.5" is-windows "^1.0.0" -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1, cross-spawn@^5.1.0: +cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= @@ -2411,7 +2377,7 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0, cross-spawn@^6.0.4, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2422,13 +2388,6 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.4, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= - dependencies: - boom "2.x.x" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -2446,6 +2405,19 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +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== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + css-font-size-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz#854875ace9aca6a8d2ee0d345a44aae9bb6db6cb" @@ -2478,23 +2450,36 @@ css-list-helpers@^1.0.1: dependencies: tcomb "^2.5.0" -css-loader@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz#9f46aaa5ca41dbe31860e3b62b8e23c42916bf56" - integrity sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA== +css-loader@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.0.tgz#42952ac22bca5d076978638e9813abce49b8f0cc" + integrity sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q== dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" + icss-utils "^4.0.0" + loader-utils "^1.2.1" + lodash "^4.17.11" + postcss "^7.0.6" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^2.0.3" + postcss-modules-scope "^2.0.0" + postcss-modules-values "^2.0.0" postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" + schema-utils "^1.0.0" + +css-select-base-adapter@~0.1.0: + 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-select@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" css-select@~1.2.0: version "1.2.0" @@ -2507,9 +2492,9 @@ css-select@~1.2.0: nth-check "~1.0.1" css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY= + version "0.7.1" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== dependencies: cssesc "^0.1.0" fastparse "^1.1.1" @@ -2520,21 +2505,122 @@ css-system-font-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz#85c6f086aba4eb32c571a3086affc434b84823ed" integrity sha1-hcbwhquk6zLFcaMIav/ENLhII+0= -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= +css-tree@1.0.0-alpha.28: + version "1.0.0-alpha.28" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" + integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" -cssdb@^1.6.0: - version "1.6.0" - resolved "http://registry.npmjs.org/cssdb/-/cssdb-1.6.0.tgz#3360c4163e07cf4d1efe58c1bc15170535f4d393" - integrity sha512-KBxrzWDyY0aFA3DkAH0SDWhIKp1or83pBLqacXq4VWNrOCwf/G9An+VDXIW8qAGJz11o9nO8mQezq1ZJOdaF8A== +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= + +css-what@2.1, css-what@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" + integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== cssesc@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssnano-preset-default@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a" + integrity sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.0" + postcss-colormin "^4.0.2" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.1" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.10" + postcss-merge-rules "^4.0.2" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.1" + postcss-minify-params "^4.0.1" + postcss-minify-selectors "^4.0.1" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.1" + postcss-normalize-positions "^4.0.1" + postcss-normalize-repeat-style "^4.0.1" + postcss-normalize-string "^4.0.1" + postcss-normalize-timing-functions "^4.0.1" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.1" + postcss-ordered-values "^4.1.1" + postcss-reduce-initial "^4.0.2" + postcss-reduce-transforms "^4.0.1" + postcss-svgo "^4.0.1" + postcss-unique-selectors "^4.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-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== + dependencies: + postcss "^7.0.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.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.8.tgz#8014989679d5fd42491e4499a521dbfb85c95fd1" + integrity sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.6" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== + dependencies: + css-tree "1.0.0-alpha.29" + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" @@ -2547,17 +2633,10 @@ cssstyle@^1.0.0: dependencies: cssom "0.3.x" -csstype@^2.2.0: - version "2.5.6" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.6.tgz#2ae1db2319642d8b80a668d2d025c6196071e788" - integrity sha512-tKPyhy0FmfYD2KQYXD5GzkvAYLYj96cMLXr648CKGd3wBe0QqoPipImjGiLze9c8leJK8J3n7ap90tpk3E6HGQ== - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" +csstype@^2.2.0, csstype@^2.5.7: + version "2.6.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.0.tgz#6cf7b2fa7fc32aab3d746802c244d4eda71371a2" + integrity sha512-by8hi8BlLbowQq0qtkx54d9aN73R9oUW20HISpka5kmgsR9F7nnxgfsemuR2sdCKZh+CDNf5egW9UZMm4mgJRg== cyclist@~0.2.2: version "0.2.2" @@ -2584,12 +2663,12 @@ dashdash@^1.12.0: assert-plus "^1.0.0" data-urls@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz#d416ac3896918f29ca84d81085bc3705834da579" - integrity sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: abab "^2.0.0" - whatwg-mimetype "^2.1.0" + whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" date-now@^0.1.4: @@ -2597,7 +2676,7 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, 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== @@ -2611,14 +2690,21 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" - integrity sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== +debug@^3.1.0, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2: +debug@^4.0.1, debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2670,14 +2756,7 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" -defaults@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.1, define-properties@^1.1.2: +define-properties@^1.1.1, define-properties@^1.1.2, 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== @@ -2706,19 +2785,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" @@ -2741,12 +2807,7 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= - -depd@~1.1.1, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -2771,7 +2832,7 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: +detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= @@ -2781,7 +2842,7 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -detect-node@^2.0.3: +detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== @@ -2798,7 +2859,7 @@ diff@^3.2.0: diffie-hellman@^5.0.0: version "5.0.3" - resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + 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" @@ -2846,9 +2907,11 @@ doctrine@^2.1.0: esutils "^2.0.2" dom-helpers@^3.2.1, dom-helpers@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" - integrity sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg== + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" dom-serializer@0, dom-serializer@~0.1.0: version "0.1.0" @@ -2864,9 +2927,9 @@ domain-browser@^1.1.1: integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@~1.1.1: version "1.1.3" @@ -2895,7 +2958,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1: +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -2910,25 +2973,25 @@ dot-prop@^4.1.1: dependencies: is-obj "^1.0.0" -dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" - integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= +dotenv@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== double-ended-queue@^2.1.0-0: version "2.1.0-0" resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= -duplexer@^0.1.1, duplexer@~0.1.1: +duplexer@^0.1.1: version "0.1.1" - resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.4.2, duplexify@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" - integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ== + version "3.6.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -2948,15 +3011,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.3.4, ejs@^2.5.7: +ejs@^2.3.4, ejs@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.62: - version "1.3.66" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.66.tgz#1410d8f8768a14dcd09d96222990f43c969af270" - integrity sha512-EXfLtc9JxX2AZxISZ10o6hXEXTtnLtj7il5eye5YMgmDf4HbBbg+QDXpUEspsFrUcUugJZd5QJ4iIkRrmQQqIg== +electron-to-chromium@^1.3.96: + version "1.3.96" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.96.tgz#25770ec99b8b07706dedf3a5f43fa50cb54c4f9a" + integrity sha512-ZUXBUyGLeoJxp4Nt6G/GjBRLnyz8IKQGexZ2ndWaoegThgMGFO1tdDYID5gBV32/1S83osjJHyfzvanE/8HY4Q== elliptic@^6.0.0: version "6.4.1" @@ -3004,7 +3067,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: +enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== @@ -3014,36 +3077,37 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: tapable "^1.0.0" entities@^1.1.1, entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== -enzyme-adapter-react-16@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.5.0.tgz#50af8d76a45fe0915de932bd95d34cdca75c0be3" - integrity sha512-R2LcVvMB2UwPH763d5jDtVedAIcEj+uZjOnq0nd1sOUs6z8TDbyHDvt8VwfrS4wMt7CawoyPmH0XzC8MtEqqDw== +enzyme-adapter-react-16@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.7.1.tgz#c37c4cb0fd75e88a063154a7a88096474914496a" + integrity sha512-OQXKgfHWyHN3sFu2nKj3mhgRcqIPIJX6aOzq5AHVFES4R9Dw/vCBZFMPyaG81g2AZ5DogVh39P3MMNUbqNLTcw== dependencies: - enzyme-adapter-utils "^1.8.0" + enzyme-adapter-utils "^1.9.0" function.prototype.name "^1.1.0" object.assign "^4.1.0" object.values "^1.0.4" prop-types "^15.6.2" - react-is "^16.4.2" + react-is "^16.6.1" react-test-renderer "^16.0.0-0" -enzyme-adapter-utils@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.8.0.tgz#ee9f07250663a985f1f2caaf297720787da559f1" - integrity sha512-K9U2RGr1pvWPGEAIRQRVH4UdlqzpfLsKonuHyAK6lxu46yfGsMDVlO3+YvQwQpVjVw8eviEVIOmlFAnMbIhv/w== +enzyme-adapter-utils@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.9.0.tgz#3997c20f3387fdcd932b155b3740829ea10aa86c" + integrity sha512-uMe4xw4l/Iloh2Fz+EO23XUYMEQXj5k/5ioLUXCNOUCI8Dml5XQMO9+QwUq962hBsY5qftfHHns+d990byWHvg== dependencies: function.prototype.name "^1.1.0" object.assign "^4.1.0" prop-types "^15.6.2" + semver "^5.6.0" -enzyme@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.6.0.tgz#d213f280a258f61e901bc663d4cc2d6fd9a9dec8" - integrity sha512-onsINzVLGqKIapTVfWkkw6bYvm1o4CyJ9s8POExtQhAkVa4qFDW6DGCQGRy/5bfZYk+gmUbMNyayXiWDzTkHFQ== +enzyme@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.8.0.tgz#646d2d5d0798cb98fdec39afcee8a53237b47ad5" + integrity sha512-bfsWo5nHyZm1O1vnIsbwdfhU989jk+squU9NKvB+Puwo5j6/Wg9pN5CO0YJelm98Dao3NPjkDZk+vvgwpMwYxw== dependencies: array.prototype.flat "^1.2.1" cheerio "^1.0.0-rc.2" @@ -3079,7 +3143,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: +es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== @@ -3091,13 +3155,13 @@ es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.0, es-abstract@^1.5.1, is-regex "^1.0.4" es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: - is-callable "^1.1.1" + is-callable "^1.1.4" is-date-object "^1.0.1" - is-symbol "^1.0.1" + is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.46" @@ -3163,7 +3227,7 @@ eslint-module-utils@^2.2.0: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-import@^2.8.0: +eslint-plugin-import@~2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== @@ -3179,10 +3243,10 @@ eslint-plugin-import@^2.8.0: read-pkg-up "^2.0.0" resolve "^1.6.0" -eslint-plugin-jsx-a11y@^6.0.3: - version "6.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz#7bf56dbe7d47d811d14dbb3ddff644aa656ce8e1" - integrity sha512-JsxNKqa3TwmPypeXNnI75FntkUktGzI1wSa1LgNZdSOMI+B4sxnr1lSF8m8lPiz4mKiC+14ysZQM4scewUrP7A== +eslint-plugin-jsx-a11y@~6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz#69bca4890b36dcf0fe16dd2129d2d88b98f33f88" + integrity sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw== dependencies: aria-query "^3.0.0" array-includes "^3.0.3" @@ -3193,21 +3257,23 @@ eslint-plugin-jsx-a11y@^6.0.3: has "^1.0.3" jsx-ast-utils "^2.0.1" -eslint-plugin-promise@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621" - integrity sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ== +eslint-plugin-promise@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== -eslint-plugin-react@^7.8.2: - version "7.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" - integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== +eslint-plugin-react@~7.12.1: + version "7.12.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.1.tgz#b9c4639f72469ff317ac31e3bd630d22d0dbf8f4" + integrity sha512-1YyXVhp6KSB+xRC1BWzmlA4BH9Wp9jMMBE6AJizxuk+bg/KUJpQGRwsU1/q1pV8rM6oEdLCxunXn7Nfh2BOWBg== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" has "^1.0.3" jsx-ast-utils "^2.0.1" + object.fromentries "^2.0.0" prop-types "^15.6.2" + resolve "^1.9.0" eslint-scope@3.7.1: version "3.7.1" @@ -3217,14 +3283,6 @@ eslint-scope@3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^3.7.1: - version "3.7.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" - integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-scope@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" @@ -3233,62 +3291,67 @@ eslint-scope@^4.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@^4.19.1: - version "4.19.1" - resolved "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" - integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== +eslint@^5.11.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.11.1.tgz#8deda83db9f354bf9d3f53f9677af7e0e13eadda" + integrity sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg== dependencies: - ajv "^5.3.0" - babel-code-frame "^6.22.0" + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" chalk "^2.1.0" - concat-stream "^1.6.0" - cross-spawn "^5.1.0" - debug "^3.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" doctrine "^2.1.0" - eslint-scope "^3.7.1" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^3.5.4" - esquery "^1.0.0" + espree "^5.0.0" + esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^2.0.0" functional-red-black-tree "^1.0.1" glob "^7.1.2" - globals "^11.0.1" - ignore "^3.3.3" + globals "^11.7.0" + ignore "^4.0.6" imurmurhash "^0.1.4" - inquirer "^3.0.6" - is-resolvable "^1.0.0" - js-yaml "^3.9.1" + inquirer "^6.1.0" + js-yaml "^3.12.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.4" - minimatch "^3.0.2" + lodash "^4.17.5" + minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" path-is-inside "^1.0.2" pluralize "^7.0.0" progress "^2.0.0" - regexpp "^1.0.1" + regexpp "^2.0.1" require-uncached "^1.0.3" - semver "^5.3.0" + semver "^5.5.1" strip-ansi "^4.0.0" - strip-json-comments "~2.0.1" - table "4.0.2" - text-table "~0.2.0" + strip-json-comments "^2.0.1" + table "^5.0.2" + text-table "^0.2.0" -espree@^3.5.4: - version "3.5.4" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" - integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== +espree@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" + integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== dependencies: - acorn "^5.5.0" - acorn-jsx "^3.0.0" + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" esprima@^3.1.3: version "3.1.3" @@ -3300,7 +3363,7 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.0: +esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== @@ -3329,20 +3392,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-stream@~3.3.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz#cac1230890e07e73ec9cacd038f60a5b66173eef" - integrity sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g== - dependencies: - duplexer "^0.1.1" - flatmap-stream "^0.1.0" - from "^0.1.7" - map-stream "0.0.7" - pause-stream "^0.0.11" - split "^1.0.1" - stream-combiner "^0.2.2" - through "^2.3.8" - eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -3353,12 +3402,12 @@ events@^1.0.0: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== dependencies: - original ">=0.0.5" + original "^1.0.0" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -3401,6 +3450,19 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.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" + exif-js@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz#9d10819bf571f873813e7640241255ab9ce1a814" @@ -3450,14 +3512,14 @@ expect@^23.6.0: jest-message-util "^23.4.0" jest-regex-util "^23.3.0" -express@^4.16.2: - version "4.16.3" - resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" - integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= +express@^4.16.2, express@^4.16.3, express@^4.16.4: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" + integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== dependencies: accepts "~1.3.5" array-flatten "1.1.1" - body-parser "1.18.2" + body-parser "1.18.3" content-disposition "0.5.2" content-type "~1.0.4" cookie "0.3.1" @@ -3474,10 +3536,10 @@ express@^4.16.2: on-finished "~2.3.0" parseurl "~1.3.2" path-to-regexp "0.1.7" - proxy-addr "~2.0.3" - qs "6.5.1" + proxy-addr "~2.0.4" + qs "6.5.2" range-parser "~1.2.0" - safe-buffer "5.1.1" + safe-buffer "5.1.2" send "0.16.2" serve-static "1.13.2" setprototypeof "1.1.0" @@ -3501,20 +3563,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.0, extend@~3.0.1, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.0.4: - version "2.2.0" - resolved "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - external-editor@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" @@ -3555,11 +3608,6 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -3576,9 +3624,9 @@ fast-levenshtein@~2.0.4: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg= + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== faye-websocket@^0.10.0: version "0.10.0" @@ -3587,7 +3635,7 @@ faye-websocket@^0.10.0: dependencies: websocket-driver ">=0.5.1" -faye-websocket@~0.11.0: +faye-websocket@~0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= @@ -3601,7 +3649,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.4, fbjs@^0.8.9: +fbjs@^0.8.4: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -3614,7 +3662,14 @@ fbjs@^0.8.4, fbjs@^0.8.9: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: +fibers@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fibers/-/fibers-3.1.1.tgz#0238902ca938347bd779523692fbeefdf4f688ab" + integrity sha512-dl3Ukt08rHVQfY8xGD0ODwyjwrRALtaghuqGH2jByYX1wpY+nAnRQjJ6Dbqq0DnVgNVQ9yibObzbF4IlPyiwPw== + dependencies: + detect-libc "^1.0.3" + +figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== @@ -3634,10 +3689,10 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -file-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" - integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== dependencies: loader-utils "^1.0.2" schema-utils "^1.0.0" @@ -3655,7 +3710,7 @@ fileset@^2.0.2: glob "^7.0.3" minimatch "^3.0.3" -filesize@^3.5.11: +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== @@ -3735,25 +3790,15 @@ find-up@^3.0.0: locate-path "^3.0.0" flat-cache@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" - integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== dependencies: circular-json "^0.3.1" - del "^2.0.2" graceful-fs "^4.1.2" + rimraf "~2.6.2" write "^0.2.1" -flatmap-stream@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.0.tgz#ed54e01422cd29281800914fcb968d58b685d5f1" - integrity sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA== - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= - flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -3762,10 +3807,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -follow-redirects@^1.0.0, follow-redirects@^1.2.3: - version "1.5.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" - integrity sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg== +follow-redirects@^1.0.0, follow-redirects@^1.3.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.0.tgz#d12452c031e8c67eb6637d861bfc7a8090167933" + integrity sha512-4Oh4eI3S9OueVV41AgJ1oLjpaJUhbJ7JDGOMhe0AFqoSejl5Q2nn3eGglAzRUKVKZE8jG5MNn66TjCJMAnpsWA== dependencies: debug "=3.1.0" @@ -3803,22 +3848,13 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1, form-data@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - integrity sha1-SXBJi+YEwgwAXU9cI67NIda0kJk= - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" + combined-stream "^1.0.6" mime-types "^2.1.12" forwarded@~0.1.2: @@ -3846,20 +3882,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -from@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= - -fs-extra@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" - integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -3890,25 +3912,6 @@ fsevents@*, fsevents@^1.2.2, fsevents@^1.2.3: nan "^2.9.2" node-pre-gyp "^0.10.0" -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU= - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3942,13 +3945,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - dependencies: - globule "^1.0.0" - generic-pool@2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz#780c36f69dfad05a5a045dd37be7adca11a4f6ff" @@ -3959,16 +3955,18 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + 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" @@ -4004,7 +4002,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -4016,33 +4014,21 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules-path@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" - integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag== +global-modules-path@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.1.tgz#e541f4c800a1a8514a990477b267ac67525b9931" + integrity sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg== -globals@^11.0.1, globals@^11.1.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" - integrity sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== +globals@^11.1.0, globals@^11.7.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== 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@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -4054,44 +4040,28 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -gonzales-pe@^4.0.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.3.tgz#41091703625433285e0aee3aa47829fc1fbeb6f2" - integrity sha512-Kjhohco0esHQnOiqqdJeNz/5fyPkOMD/d6XVjwTAoPGUFh0mCollPUTUTa2OZy4dYNAqlPIQdTiNzJTWdd9Htw== - dependencies: - minimist "1.1.x" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -gzip-size@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" - integrity sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw= +gzip-size@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" + integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA== dependencies: duplexer "^0.1.1" pify "^3.0.0" -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== handlebars@^4.0.3: version "4.0.12" @@ -4104,38 +4074,17 @@ handlebars@^4.0.3: optionalDependencies: uglify-js "^3.1.4" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4= - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio= - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0= - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - har-validator@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" - integrity sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA== + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: - ajv "^5.3.0" + ajv "^6.5.5" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -4196,7 +4145,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.1, 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== @@ -4212,22 +4161,17 @@ hash-base@^3.0.0: safe-buffer "^5.0.1" hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" - integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== + 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" -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== history@^4.7.2: version "4.7.2" @@ -4249,16 +4193,18 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= - -hoist-non-react-statics@^2.5.0: +hoist-non-react-statics@^2.5.0, hoist-non-react-statics@^2.5.5: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== +hoist-non-react-statics@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.1.tgz#c09c0555c84b38a7ede6912b61efddafd6e75e1e" + integrity sha512-TFsu3TV3YLY+zFTZDrN8L2DTFanObwmBLpWvJs1qfUuEQ5bTAdFcwfx2T/bsCXfM9QHSLvjfP+nihEl0yvozxw== + dependencies: + react-is "^16.3.2" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -4267,6 +4213,11 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" +hoopy@^0.1.2: + 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.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -4282,6 +4233,21 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + 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" @@ -4295,35 +4261,25 @@ html-entities@^1.2.0: integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= htmlparser2@^3.9.1: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= + version "3.10.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" + integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== dependencies: domelementtype "^1.3.0" domhandler "^2.3.0" domutils "^1.5.1" entities "^1.1.1" inherits "^2.0.1" - readable-stream "^2.0.2" + readable-stream "^3.0.6" http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-errors@~1.6.2: +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" - resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" @@ -4331,19 +4287,19 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-link-header@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-0.8.0.tgz#a22b41a0c9b1e2d8fac1bf1b697c6bd532d5f5e4" - integrity sha1-oitBoMmx4tj6wb8baXxr1TLV9eQ= +http-link-header@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.2.tgz#bea50f02e1c7996021f1013b428c63f77e0f4e11" + integrity sha512-z6YOZ8ZEnejkcCWlGZzYXNa6i+ZaTfiTg3WhlV/YvnNya3W/RbX1bMVUMTuCrg/DrtTCQxaFCkXCz4FtLpcebg== http-parser-js@>=0.4.0: - version "0.4.13" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" - integrity sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc= + version "0.5.0" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" + integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== http-proxy-middleware@~0.18.0: version "0.18.0" - resolved "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== dependencies: http-proxy "^1.16.2" @@ -4360,15 +4316,6 @@ http-proxy@^1.16.2: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4383,11 +4330,6 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4395,7 +4337,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4407,12 +4349,12 @@ icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= +icss-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.0.0.tgz#d52cf4bcdcfa1c45c2dbefb4ffdf6b00ef608098" + integrity sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA== dependencies: - postcss "^6.0.1" + postcss "^7.0.5" ieee754@^1.1.4: version "1.1.12" @@ -4431,10 +4373,10 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.3: - 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.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== immutable@^3.8.2: version "3.8.2" @@ -4448,6 +4390,14 @@ import-cwd@^2.0.0: 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-from@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" @@ -4484,18 +4434,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= - -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" - indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -4514,7 +4452,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= @@ -4529,30 +4467,10 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" - integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== +inquirer@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52" + integrity sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg== dependencies: ansi-escapes "^3.0.0" chalk "^2.0.0" @@ -4565,7 +4483,7 @@ inquirer@^6.0.0: run-async "^2.2.0" rxjs "^6.1.0" string-width "^2.1.0" - strip-ansi "^4.0.0" + strip-ansi "^5.0.0" through "^2.3.6" internal-ip@^3.0.1: @@ -4577,14 +4495,14 @@ internal-ip@^3.0.1: ipaddr.js "^1.5.2" interpret@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -intersection-observer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.5.0.tgz#9fe8bee3953c755b1485c38efd9633d535775ea6" - integrity sha512-8Zgt4ijlyvIrQVTA7MPb2W9+KhoetrAbxlh0RmTGxpx0+ZsAXvy7IsbNnZIrqZ6TddAdWeQj49x7Ph7Ir6KRkA== +intersection-observer@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.5.1.tgz#e340fc56ce74290fe2b2394d1ce88c4353ac6dfa" + integrity sha512-Zd7Plneq82kiXFixs7bX62YnuZ0BMRci9br7io88LwDyF3V43cQMI+G5IiTlTNTt+LsDUppl19J/M2Fp9UkH6g== intl-format-cache@^2.0.5: version "2.1.0" @@ -4603,7 +4521,7 @@ intl-messageformat@^2.0.0, intl-messageformat@^2.1.0, intl-messageformat@^2.2.0: dependencies: intl-messageformat-parser "1.4.0" -intl-relativeformat@^2.0.0, intl-relativeformat@^2.1.0: +intl-relativeformat@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-2.1.0.tgz#010f1105802251f40ac47d0e3e1a201348a255df" integrity sha1-AQ8RBYAiUfQKxH0OPhogE0iiVd8= @@ -4615,7 +4533,7 @@ intl@^1.2.5: resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde" integrity sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94= -invariant@^2.0.0, invariant@^2.1.1, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.1.1, invariant@^2.2.1, 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== @@ -4652,6 +4570,11 @@ ipaddr.js@^1.5.2: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= +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-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4700,7 +4623,7 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.1, is-callable@^1.1.3, is-callable@^1.1.4: +is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== @@ -4712,6 +4635,18 @@ is-ci@^1.0.10: dependencies: ci-info "^1.5.0" +is-color-stop@^1.0.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= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4866,7 +4801,7 @@ is-number@^4.0.0: is-obj@^1.0.0: version "1.0.1" - resolved "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-path-cwd@^1.0.0: @@ -4937,10 +4872,19 @@ is-subset@^0.1.1: resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" @@ -5389,15 +5333,15 @@ jest@^23.6.0: import-local "^1.0.0" jest-cli "^23.6.0" -js-base64@^2.1.8, js-base64@^2.1.9: - version "2.4.9" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" - integrity sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ== +js-base64@^2.1.9: + version "2.5.0" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz#42255ba183ab67ce59a0dee640afdc00ab5ae93e" + integrity sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g== js-levenshtein@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5" - integrity sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== js-string-escape@1.0.1: version "1.0.1" @@ -5414,7 +5358,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.11.0, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== @@ -5465,9 +5409,9 @@ jsesc@^1.3.0: integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" - integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" @@ -5479,11 +5423,6 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -5521,12 +5460,19 @@ json5@^0.5.0, json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= -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" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" jsonify@~0.0.0: version "0.0.0" @@ -5589,6 +5535,11 @@ kleur@^2.0.1: resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== +knot.js@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/knot.js/-/knot.js-1.1.5.tgz#28e72522f703f50fe98812fde224dd72728fef5d" + integrity sha1-KOclIvcD9Q/piBL94iTdcnKP710= + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -5642,20 +5593,10 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= + version "2.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== loader-utils@0.2.x: version "0.2.17" @@ -5667,14 +5608,14 @@ loader-utils@0.2.x: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== dependencies: - big.js "^3.1.3" + big.js "^5.2.2" emojis-list "^2.0.0" - json5 "^0.5.0" + json5 "^1.0.1" locate-path@^2.0.0: version "2.0.0" @@ -5692,31 +5633,6 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash-es@^4.17.5, lodash-es@^4.2.1: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05" - integrity sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg== - -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.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.clonedeep@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -5737,15 +5653,35 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +lodash.get@^4.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.has@^4.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -lodash.mergewith@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" - integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== +lodash.isobject@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" + integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= + +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.sortby@^4.7.0: version "4.7.0" @@ -5757,54 +5693,43 @@ lodash.tail@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= -lodash.template@^4.2.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" - integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= - dependencies: - lodash._reinterpolate "~3.0.0" - lodash.templatesettings "^4.0.0" +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash.templatesettings@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" - integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= - dependencies: - lodash._reinterpolate "~3.0.0" - -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== +lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.11: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, 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" -loud-rejection@^1.0.0, loud-rejection@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: 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" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -5819,15 +5744,10 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - map-age-cleaner@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" - integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ== + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" @@ -5836,16 +5756,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" - integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -5858,10 +5768,10 @@ mark-loader@^0.1.6: resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5" integrity sha1-CrtHfcp0IdcOIBKP9kifXK6GdtU= -marky@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.0.tgz#9617ed647bbbea8f45d19526da33dec70606df42" - integrity sha1-lhftZHu76o9F0ZUm2jPexwYG30I= +marky@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.1.tgz#a3fcf82ffd357756b8b8affec9fdbf3a30dc1b02" + integrity sha512-md9k+Gxa3qLH6sUKpeC2CNkJK/Ld+bEz5X96nYwloqphQE0CKCVEKco/6jxEZixinqNdz5RFi/KaCyfbMDMAXQ== math-random@^1.0.1: version "1.0.1" @@ -5869,12 +5779,18 @@ math-random@^1.0.1: integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= + 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@~1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== media-typer@0.3.0: version "0.3.0" @@ -5897,6 +5813,11 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^1.1.0" +memoize-one@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -5905,27 +5826,6 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -5939,9 +5839,9 @@ merge-stream@^1.0.1: readable-stream "^2.0.1" merge@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== methods@~1.1.2: version "1.1.2" @@ -5967,7 +5867,7 @@ micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5994,17 +5894,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.34.0 < 2", mime-db@~1.36.0: - version "1.36.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" - integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== +"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: + version "1.37.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7: - version "2.1.20" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" - integrity sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A== +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: + version "2.1.21" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== dependencies: - mime-db "~1.36.0" + mime-db "~1.37.0" mime@1.4.1: version "1.4.1" @@ -6012,19 +5912,19 @@ mime@1.4.1: integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== mime@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mini-css-extract-plugin@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz#b3ecc0d6b1bbe5ff14add42b946a7b200cf78651" - integrity sha512-ots7URQH4wccfJq9Ssrzu2+qupbncAce4TmTzunI9CIwlQMp2XI+WNUw6xWF6MMAGAm1cbUVINrSjATaVMyKXg== +mini-css-extract-plugin@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" + integrity sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw== dependencies: loader-utils "^1.1.0" schema-utils "^1.0.0" @@ -6040,7 +5940,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^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.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6049,55 +5949,34 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatc minimist@0.0.8: version "0.0.8" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@1.1.x: - version "1.1.3" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" - resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" - integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w== +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA== +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== dependencies: minipass "^2.2.1" -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== - 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 "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -6130,9 +6009,9 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.x, mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" - resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" @@ -6187,10 +6066,10 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.0.0, nan@^2.10.0, nan@^2.9.2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz#574e360e4d954ab16966ec102c0c049fd961a099" - integrity sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw== +nan@^2.9.2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== nanomatch@^1.2.9: version "1.2.13" @@ -6215,20 +6094,20 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nearley@^2.7.10: - version "2.15.1" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.15.1.tgz#965e4e6ec9ed6b80fc81453e161efbcebb36d247" - integrity sha512-8IUY/rUrKz2mIynUGh8k+tul1awMKEjeHHC5G3FHvvyAW6oq4mQfNp2c0BMea+sYZJvYcrrM6GmZVIle/GRXGw== + version "2.16.0" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz#77c297d041941d268290ec84b739d0ee297e83a7" + integrity sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg== dependencies: + commander "^2.19.0" moo "^0.4.3" - nomnom "~1.6.2" railroad-diagrams "^1.0.0" randexp "0.4.6" semver "^5.4.1" needle@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz#c1b04da378cd634d8befe2de965dc2cfb0fd65ca" - integrity sha512-GPL22d/U9cai87FcCPO6e+MT3vyHS2j+zwotakDc7kE2DtUAqFKMXLJCTtRp+5S75vXIwQPvIxkvlctxf9q4gQ== + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -6240,9 +6119,9 @@ negotiator@0.6.1: integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= neo-async@^2.5.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" - integrity sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw== + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== next-tick@1: version "1.0.0" @@ -6267,24 +6146,6 @@ node-forge@0.7.5: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -6320,12 +6181,12 @@ node-libs-browser@^2.0.0: vm-browserify "0.0.4" node-notifier@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" - integrity sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg== + version "5.3.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" + integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q== dependencies: growly "^1.3.0" - semver "^5.4.1" + semver "^5.5.0" shellwords "^0.1.1" which "^1.3.0" @@ -6345,80 +6206,13 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-pre-gyp@^0.6.4: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" - integrity sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ== - dependencies: - detect-libc "^1.0.2" - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-releases@^1.0.0-alpha.11: - version "1.0.0-alpha.11" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.11.tgz#73c810acc2e5b741a17ddfbb39dfca9ab9359d8a" - integrity sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ== +node-releases@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2" + integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ== dependencies: semver "^5.3.0" -node-sass@^4.9.2: - version "4.9.3" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" - integrity sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww== - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.10.0" - node-gyp "^3.8.0" - npmlog "^4.0.0" - request "2.87.0" - sass-graph "^2.2.4" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -node-zopfli@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-zopfli/-/node-zopfli-2.0.2.tgz#a7a473ae92aaea85d4c68d45bbf2c944c46116b8" - integrity sha1-p6RzrpKq6oXUxo1Fu/LJRMRhFrg= - dependencies: - commander "^2.8.1" - defaults "^1.0.2" - nan "^2.0.0" - node-pre-gyp "^0.6.4" - -nomnom@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" - integrity sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE= - dependencies: - colors "0.5.x" - underscore "~1.4.4" - -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -6427,7 +6221,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== @@ -6449,34 +6243,24 @@ 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@^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== + npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-run-all@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.3.tgz#49f15b55a66bb4101664ce270cb18e7103f8f185" - integrity sha512-aOG0N3Eo/WW+q6sUIdzcV2COS8VnTZCmdji0VQIAZF3b+a3YWb0AD0vFIyjKec18A7beLGbaQ5jFTNI2bPt9Cg== - dependencies: - ansi-styles "^3.2.0" - chalk "^2.1.0" - cross-spawn "^6.0.4" - memorystream "^0.3.1" - minimatch "^3.0.4" - ps-tree "^1.1.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -6484,7 +6268,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2: +npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -6494,10 +6278,10 @@ npm-run-path@^2.0.0: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" @@ -6516,11 +6300,6 @@ nwsapi@^2.0.7: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -6583,13 +6362,23 @@ object.assign@^4.1.0: object-keys "^1.0.11" object.entries@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" - integrity sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8= + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" + integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" + integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== dependencies: define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" + es-abstract "^1.11.0" + function-bind "^1.1.1" has "^1.0.1" object.getownpropertydescriptors@^2.0.3: @@ -6625,15 +6414,15 @@ object.values@^1.0.4: function-bind "^1.1.0" has "^1.0.1" -obuf@^1.0.0, obuf@^1.1.1: +obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -offline-plugin@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.5.tgz#e9b16c569d19899af9c923f5bc260705578ffeba" - integrity sha1-6bFsVp0ZiZr5ySP1vCYHBVeP/ro= +offline-plugin@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.6.tgz#7a7b244220cddb8a8cabecb172ec5c0be03e74b2" + integrity sha512-qvcDmeI30xmvSlmqjopAj7QCuM1MEzvmDyuMTN2saDReSay5nUqCpKysexH1KUNXv5H/TfmHd+rngNPkRFj3YA== dependencies: deep-extend "^0.5.1" ejs "^2.3.4" @@ -6653,7 +6442,7 @@ on-headers@~1.0.1: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -6667,15 +6456,15 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opener@^1.4.3: +opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== opn@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + version "5.4.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" + integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== dependencies: is-wsl "^1.1.0" @@ -6699,7 +6488,7 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -original@>=0.0.5: +original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== @@ -6716,13 +6505,6 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -6733,11 +6515,11 @@ os-locale@^2.0.0: mem "^1.1.0" os-locale@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" - integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: - execa "^0.10.0" + execa "^1.0.0" lcid "^2.0.0" mem "^4.0.0" @@ -6746,7 +6528,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -6777,9 +6559,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" - integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== dependencies: p-try "^2.0.0" @@ -6818,9 +6600,9 @@ packet-reader@0.3.1: integrity sha1-zWLmCvjX/qinBexP+ZCHHEaHHyc= pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27" + integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ== parallel-transform@^1.1.0: version "1.1.0" @@ -6833,7 +6615,7 @@ parallel-transform@^1.1.0: parse-asn1@^5.0.0: version "5.1.1" - resolved "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== dependencies: asn1.js "^4.0.0" @@ -6946,7 +6728,7 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5: +path-parse@^1.0.5, 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== @@ -6979,24 +6761,10 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pause-stream@^0.0.11: - version "0.0.11" - resolved "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= - dependencies: - through "~2.3" - pbkdf2@^3.0.3: - version "3.0.16" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" - integrity sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA== + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -7064,7 +6832,7 @@ pgpass@1.*: dependencies: split "^1.0.0" -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -7118,9 +6886,9 @@ pn@^1.1.0: integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== portfinder@^1.0.9: - version "1.0.17" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" - integrity sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ== + version "1.0.20" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" + integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== dependencies: async "^1.5.2" debug "^2.2.0" @@ -7131,139 +6899,62 @@ 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-advanced-variables@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-2.3.3.tgz#80ac5b05988d02f63352974491e319910f33337e" - integrity sha512-X7nwaP4yDVu3ZWsftQVuVcd/+thKsXTeQ2zQL9ivtgdpXu/ERlSGiOA8D7O/b0jnYj6oO4WpfvOCw7cOnGYEow== +postcss-calc@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== dependencies: - "@csstools/sass-import-resolve" "^1" - postcss "^6" + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" -postcss-apply@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.9.0.tgz#a152e6e34a6c55d0895751929319c262c5d8c289" - integrity sha512-Ysel7CyF7FiZQno9oADqKXsfZw4DvTcQXtFvN1nLZQA3woRiVYV2M5kGJSrqQVWGjp/zqNUjUpXHs24TgxFjxg== +postcss-colormin@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99" + integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw== dependencies: - babel-runtime "^6.23.0" - balanced-match "^0.4.2" - postcss "^6.0.0" + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-atroot@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/postcss-atroot/-/postcss-atroot-0.1.3.tgz#6752c0230c745140549345b2b0e30ebeda01a405" - integrity sha1-Z1LAIwx0UUBUk0WysOMOvtoBpAU= - dependencies: - postcss "^5.0.5" - -postcss-attribute-case-insensitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz#94dc422c8f90997f16bd33a3654bbbec084963b4" - integrity sha1-lNxCLI+QmX8WvTOjZUu77AhJY7Q= - dependencies: - postcss "^6.0.0" - postcss-selector-parser "^2.2.3" - -postcss-color-hex-alpha@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz#1e53e6c8acb237955e8fd08b7ecdb1b8b8309f95" - integrity sha1-HlPmyKyyN5Vej9CLfs2xuLgwn5U= - dependencies: - color "^1.0.3" - postcss "^6.0.1" - postcss-message-helpers "^2.0.0" - -postcss-color-mod-function@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-2.4.3.tgz#14a97f5b17a5f19396e9dea7ffcb5be732592baf" - integrity sha512-TEATRHN1m2+vM4efwRoPyrAQTbBA4xgx1jSMPv64oLcwVFC4qr6d4o9DAD5LxygIMeBBBugQHvXoSIM+87NaFQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^6.0.23" - postcss-values-parser "^1.5.0" - -postcss-color-rebeccapurple@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.1.0.tgz#ce1269ecc2d0d8bf92aab44bd884e633124c33ec" - integrity sha512-212hJUk9uSsbwO5ECqVjmh/iLsmiVL1xy9ce9TVf+X3cK/ZlUIlaMdoxje/YpsL9cmUH3I7io+/G2LyWx5rg1g== - dependencies: - postcss "^6.0.22" - postcss-values-parser "^1.5.0" - -postcss-color-rgb@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz#14539c8a7131494b482e0dd1cc265ff6514b5263" - integrity sha1-FFOcinExSUtILg3RzCZf9lFLUmM= - dependencies: - postcss "^6.0.1" - postcss-value-parser "^3.3.0" - -postcss-custom-media@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz#be532784110ecb295044fb5395a18006eb21a737" - integrity sha1-vlMnhBEOyylQRPtTlaGABushpzc= - dependencies: - postcss "^6.0.1" - -postcss-custom-properties@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-7.0.0.tgz#24dc4fbe6d6ed550ea4fd3b11204660e9ffa3b33" - integrity sha512-dl/CNaM6z2RBa0vZZqsV6Hunj4HD6Spu7FcAkiVp5B2tgm6xReKKYzI7x7QNx3wTMBNj5v+ylfVcQGMW4xdkHw== - dependencies: - balanced-match "^1.0.0" - postcss "^6.0.18" - -postcss-custom-selectors@^4.0.1: +postcss-convert-values@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz#781382f94c52e727ef5ca4776ea2adf49a611382" - integrity sha1-eBOC+UxS5yfvXKR3bqKt9JphE4I= + 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 "^6.0.1" - postcss-selector-matches "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-dir-pseudo-class@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-3.0.0.tgz#31a18af3b9b1b33be635599b998a9829896c3fed" - integrity sha512-iEVgue59Xs6vz9CQZtlyonW/BmVfpqWglcUyIP2rQaBpH1a2T8Iax61eXY2NjTAq5r3Xjxwk4lrA84acoAiWHw== +postcss-discard-comments@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d" + integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ== dependencies: - postcss "^6.0.20" - postcss-selector-parser "^3.1.1" + postcss "^7.0.0" -postcss-extend-rule@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-extend-rule/-/postcss-extend-rule-1.1.0.tgz#11e4d590ffe4253b853ef1fc03be7167da607d38" - integrity sha512-+NXtLOY49Xcx9173SJAYj41esTRTpihSLoKpj5yzoBki9PZK4HF37AH9AVyCeLFJL9fzhh0YFuk/3eyeZ9d/jw== +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 "^6.0.11" - postcss-nesting "^4.2.1" + postcss "^7.0.0" -postcss-focus-visible@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-2.0.0.tgz#a6b9881f6710f6251790e2f151c94b161e23eeb6" - integrity sha512-nJaq5CK2YBWB1fu1SeK0qXAk0TJncY3Ms7iwFov+J3sNetecvTeCQuSxQCf9U9T9Vjusnb3zzThBs5XwP/eb/g== +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 "^6.0" + postcss "^7.0.0" -postcss-font-family-system-ui@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz#675fe7a9e029669f05f8dba2e44c2225ede80623" - integrity sha512-58G/hTxMSSKlIRpcPUjlyo6hV2MEzvcVO2m4L/T7Bb2fJTG4DYYfQjQeRvuimKQh1V1sOzCIz99g+H2aFNtlQw== +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 "^6.0" - -postcss-font-variant@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz#08ccc88f6050ba82ed8ef2cc76c0c6a6b41f183e" - integrity sha1-CMzIj2BQuoLtjvLMdsDGprQfGD4= - dependencies: - postcss "^6.0.1" - -postcss-initial@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-2.0.0.tgz#72715f7336e0bb79351d99ee65c4a253a8441ba4" - integrity sha1-cnFfczbgu3k1HZnuZcSiU6hEG6Q= - dependencies: - lodash.template "^4.2.4" - postcss "^6.0.1" + postcss "^7.0.0" postcss-load-config@^2.0.0: version "2.0.0" @@ -7283,70 +6974,180 @@ postcss-loader@^3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" -postcss-logical@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-1.1.1.tgz#bcabf0638d8aa747743b32bc52f9d90d4a3313d2" - integrity sha512-ZJgyLJlp3uPKae9+6sJKFjD06UZzb/m3M1LPeHsaBMvvyatcNWwCfOZVIq00fJdxUqa9QeuQO6RZElKmRdWMEg== +postcss-merge-longhand@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz#c4d63ab57bdc054ab4067ab075d488c8c2978380" + integrity sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g== dependencies: - postcss "^6.0.20" + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" -postcss-media-minmax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz#675256037a43ef40bc4f0760bfd06d4dc69d48d2" - integrity sha1-Z1JWA3pD70C8Twdgv9BtTcadSNI= +postcss-merge-rules@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74" + integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag== dependencies: - postcss "^6.0.1" + browserslist "^4.0.0" + 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" -postcss-message-helpers@^2.0.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== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd" + integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA== + 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-minify-params@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2" + integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg== + 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" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd" + integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-modules-extract-imports@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz#66140ecece38ef06bf0d3e355d69bf59d141ea85" - integrity sha1-ZhQOzs447wa/DT41XWm/WdFB6oU= + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: - postcss "^6.0.1" + postcss "^7.0.5" -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= +postcss-modules-local-by-default@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.3.tgz#6a199d596ec3ef57b8f5ced96d786b8cb16a7dec" + integrity sha512-jv4CQ8IQ0+TkaAIP7H4kgu/jQbrjte8xU61SYJAIOby+o3H0MGWX6eN1WXUKHccK6/EEjcAERjyIP8MXzAWAbQ== dependencies: css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + postcss "^7.0.6" + postcss-value-parser "^3.3.1" -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= +postcss-modules-scope@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz#2c0f2394cde4cd09147db054c68917e38f6d43a4" + integrity sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg== dependencies: css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + postcss "^7.0.6" -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= +postcss-modules-values@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" + integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== dependencies: icss-replace-symbols "^1.1.0" - postcss "^6.0.1" + postcss "^7.0.6" -postcss-nested@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz#cde40bd07a078565f3df72e2dc2665871c724852" - integrity sha512-1xxmLHSfubuUi6xZZ0zLsNoiKfk3BWQj6fkNMaBJC529wKKLcdeCxXt6KJmDLva+trNyQNwEaE/ZWMA7cve1fA== +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== dependencies: - postcss "^6.0.14" - postcss-selector-parser "^3.1.1" + postcss "^7.0.0" -postcss-nesting@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.2.1.tgz#0483bce338b3f0828ced90ff530b29b98b00300d" - integrity sha512-IkyWXICwagCnlaviRexi7qOdwPw3+xVVjgFfGsxmztvRVaNxAlrypOIKqDE5mxY+BVxnId1rnUKBRQoNE2VDaA== +postcss-normalize-display-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c" + integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg== dependencies: - postcss "^6.0.11" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1" + integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5" + integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA== + 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-normalize-string@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3" + integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7" + integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.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== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.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== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e" + integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" postcss-object-fit-images@^1.1.2: version "1.1.2" @@ -7357,111 +7158,36 @@ postcss-object-fit-images@^1.1.2: postcss "^5.0.16" quote "^0.4.0" -postcss-page-break@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-1.0.0.tgz#09a63b6e03db092d38569b33dcba42a343ace60b" - integrity sha512-FgjJ7q/cQFbfQFdmm15XDu+DjNb6Tcn7LYm+o1CxyHV5p6pCm0jkRhuU+PF6FaMrSTfy5nF8nuWhwOtUQyWiYA== +postcss-ordered-values@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2" + integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q== dependencies: - postcss "^6.0.16" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-preset-env@^3.2.2: - version "3.5.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-3.5.0.tgz#b3aae2c65e5b3fa61d735b70392fa758a665b785" - integrity sha512-1I7ve+XzmNLJMZDORLOjSpY28t2H1qADEUcp2tQzuLBxAsbWMBUTDpSPsCKBduoqd4zWuH4bI/04W4T4hveHQw== +postcss-reduce-initial@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15" + integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug== dependencies: - "@csstools/postcss-image-set-function" "^1.0.0" - browserslist "^3.2.4" - caniuse-lite "^1.0.30000823" - cssdb "^1.6.0" - postcss "^6.0.21" - postcss-apply "^0.9.0" - postcss-attribute-case-insensitive "^2.0.0" - postcss-color-hex-alpha "^3.0.0" - postcss-color-mod-function "^2.4.2" - postcss-color-rebeccapurple "^3.0.0" - postcss-color-rgb "^2.0.0" - postcss-custom-media "^6.0.0" - postcss-custom-properties "^7.0.0" - postcss-custom-selectors "^4.0.1" - postcss-dir-pseudo-class "^3.0.0" - postcss-focus-visible "^2.0.0" - postcss-font-family-system-ui "^3.0.0" - postcss-font-variant "^3.0.0" - postcss-initial "^2.0.0" - postcss-logical "^1.1.1" - postcss-media-minmax "^3.0.0" - postcss-nesting "^4.2.1" - postcss-page-break "^1.0.0" - postcss-pseudo-class-any-link "^4.0.0" - postcss-replace-overflow-wrap "^2.0.0" - postcss-selector-matches "^3.0.1" - postcss-selector-not "^3.0.1" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" -postcss-property-lookup@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-2.0.0.tgz#c995d1df42a75420f2aea834c2cbe296b2c15922" - integrity sha512-KUb53a7UZWDMVb0SRODOonc4H1wlbgQ0VfYwmJaR1xWPorhariEz0U7x0ri3W/imFs6HqLYWP7hl2yMvi5Ty+w== +postcss-reduce-transforms@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561" + integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA== dependencies: - object-assign "^4.0.1" - postcss "^6.0.6" - tcomb "^3.2.21" + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -postcss-pseudo-class-any-link@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz#9152a0613d3450720513e8892854bae42d0ee68e" - integrity sha1-kVKgYT00UHIFE+iJKFS65C0O5o4= - dependencies: - postcss "^6.0.1" - postcss-selector-parser "^2.2.3" - -postcss-replace-overflow-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz#794db6faa54f8db100854392a93af45768b4e25b" - integrity sha1-eU22+qVPjbEAhUOSqTr0V2i04ls= - dependencies: - postcss "^6.0.1" - -postcss-sass@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.2.0.tgz#e55516441e9526ba4b380a730d3a02e9eaa78c7a" - integrity sha512-cUmYzkP747fPCQE6d+CH2l1L4VSyIlAzZsok3HPjb5Gzsq3jE+VjpAdGlPsnQ310WKWI42sw+ar0UNN59/f3hg== - dependencies: - gonzales-pe "^4.0.3" - postcss "^6.0.6" - -postcss-scss@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.6.tgz#ab903f3bb20161bc177896462293a53d4bff5f7a" - integrity sha512-4EFYGHcEw+H3E06PT/pQQri06u/1VIIPjeJQaM8skB80vZuXMhp4cSNV5azmdNkontnOID/XYWEvEEELLFB1ww== - dependencies: - postcss "^6.0.23" - -postcss-selector-matches@^3.0.0, postcss-selector-matches@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz#e5634011e13950881861bbdd58c2d0111ffc96ab" - integrity sha1-5WNAEeE5UIgYYbvdWMLQER/8lqs= - dependencies: - balanced-match "^0.4.2" - postcss "^6.0.1" - -postcss-selector-not@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz#2e4db2f0965336c01e7cec7db6c60dff767335d9" - integrity sha1-Lk2y8JZTNsAefOx9tsYN/3ZzNdk= - dependencies: - balanced-match "^0.4.2" - postcss "^6.0.1" - -postcss-selector-parser@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^3.1.1: +postcss-selector-parser@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= @@ -7470,38 +7196,40 @@ postcss-selector-parser@^3.1.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-smart-import@^0.7.6: - version "0.7.6" - resolved "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.6.tgz#259deb84aa28f138458218ecc0e9a84c61ada6a4" - integrity sha512-9OpXaQ1uMMHWafUh0RWIpAKa3xxUDC2yyxicUPpGffH33nzbZG4/z+nk5Ocw5gGZ+3qkXV91iDV23Cmxf2Jhew== +postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: - babel-runtime "^6.26.0" - lodash "^4.17.4" - object-assign "^4.1.1" - postcss "^6.0.14" - postcss-sass "^0.2.0" - postcss-scss "^1.0.2" - postcss-value-parser "^3.3.0" - promise-each "^2.2.0" - read-cache "^1.0.0" - resolve "^1.5.0" - sugarss "^1.0.1" - -postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU= - -postcss-values-parser@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047" - integrity sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ== - dependencies: - flatten "^1.0.2" + cssesc "^2.0.0" indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^5.0.16, postcss@^5.0.5: +postcss-svgo@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d" + integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.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== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + 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@^5.0.16: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== @@ -7511,28 +7239,19 @@ postcss@^5.0.16, postcss@^5.0.5: source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6, postcss@^6.0, postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.14, postcss@^6.0.16, postcss@^6.0.18, postcss@^6.0.19, postcss@^6.0.20, postcss@^6.0.21, postcss@^6.0.22, postcss@^6.0.23, postcss@^6.0.6: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.7.tgz#2754d073f77acb4ef08f1235c36c5721a7201614" + integrity sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg== dependencies: chalk "^2.4.1" source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.2.tgz#7b5a109de356804e27f95a960bef0e4d5bc9bb18" - integrity sha512-fmaUY5370keLUTx+CnwRxtGiuFTcNBLQBqr1oE3WZ/euIYmGAo0OAgOhVJ3ByDnVmOR3PK+0V9VebzfjRIUcqw== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" + supports-color "^5.5.0" postgres-array@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz#8e0b32eb03bf77a5c0a7851e0441c169a256a238" - integrity sha1-jgsy6wO/d6XAp4UeBEHBaaJWojg= + version "1.0.3" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.3.tgz#c561fc3b266b21451fc6555384f4986d78ec80f5" + integrity sha512-5wClXrAP0+78mcsNX3/ithQ5exKvCyK5lr5NEEEeGwwM6NJdQgzIJBVxLvRW+huFpX92F2QnZ5CcokH0VhK2qQ== postgres-bytea@~1.0.0: version "1.0.0" @@ -7556,19 +7275,6 @@ precond@0.2: resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= -precss@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/precss/-/precss-3.1.2.tgz#c82c0aa4ca5fe1e879799d697db0fac6d15d23bc" - integrity sha512-TAEKJjzNyKIwyDeJ3yuaTl1x0CoFw+VyycR3dO18Kl2rGU/rPNocCYH1cry1sstWwGKl3RpJhDfZ2ZdzscM0IQ== - dependencies: - postcss "^6.0.19" - postcss-advanced-variables "^2.3.3" - postcss-atroot "^0.1.3" - postcss-extend-rule "^1.1.0" - postcss-nested "^3.0.0" - postcss-preset-env "^3.2.2" - postcss-property-lookup "^2.0.0" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -7603,16 +7309,9 @@ process@^0.11.10: integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= - -promise-each@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz#3353174eff2694481037e04e01f77aa0fb6d1b60" - integrity sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A= - dependencies: - any-promise "^0.1.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" @@ -7642,7 +7341,7 @@ prop-types-extra@^1.0.1: react-is "^16.3.2" warning "^3.0.0" -prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== @@ -7650,7 +7349,7 @@ prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, loose-envify "^1.3.1" object-assign "^4.1.1" -proxy-addr@~2.0.3: +proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== @@ -7663,35 +7362,29 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -ps-tree@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" - integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= - dependencies: - event-stream "~3.3.0" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: - version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" - integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== +psl@^1.1.24, psl@^1.1.28: + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== public-encrypt@^4.0.0: - version "4.0.2" - resolved "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" - integrity sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q== + 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, pump@^2.0.1: +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== @@ -7726,22 +7419,17 @@ punycode@^1.2.4, punycode@^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.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== -qs@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== +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.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= - -qs@~6.5.1, qs@~6.5.2: +qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== @@ -7757,19 +7445,19 @@ querystring@0.2.0: integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= querystringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" - integrity sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" + integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== quote@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz#10839217f6c1362b89194044d29b233fd7f32f01" integrity sha1-EIOSF/bBNiuJGUBE0psjP9fzLwE= -raf@^3.1.0, raf@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" - integrity sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw== +raf@^3.1.0, raf@^3.4.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: performance-now "^2.1.0" @@ -7778,10 +7466,10 @@ railroad-diagrams@^1.0.0: resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= -rails-ujs@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.1.tgz#2869c6d54fdfefac3aaa257f4efe211d8f5a7169" - integrity sha512-kOsSdmBATcilfMzBCYgbefQ+5eUG6BAr9rDy+GC09Cvqx0017XBVp1Xu/Ksvwr6r7fHzgNkEUpKnQoOflpNz+A== +rails-ujs@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.2.tgz#ab01dd087a323975637b50e93e7afcc0f9068568" + integrity sha512-tJl7MdysGrQEKmwF7BJkz5XwUOkdnI9E7SvSbT39yO7pdFc96D4hWKm6Sb15pU4n5mt4rLPb/6kkyTQujP1k7Q== randexp@0.4.6: version "0.4.6" @@ -7792,9 +7480,9 @@ randexp@0.4.6: ret "~0.1.10" randomatic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" - integrity sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: is-number "^4.0.0" kind-of "^6.0.0" @@ -7820,17 +7508,17 @@ range-parser@^1.0.3, range-parser@~1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== dependencies: bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" + http-errors "1.6.3" + iconv-lite "0.4.23" unpipe "1.0.0" -rc@^1.1.7, rc@^1.2.7: +rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -7840,34 +7528,35 @@ rc@^1.1.7, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.0.tgz#57704e5718669374b182a17ea79a6d24922cb27d" - integrity sha512-qgsQdjFH54pQ1AGLCBKsqjPxib4Pnp+cOsNxGPlkHn5YnsSt43sBvHSif6FheY7NMMS6HPeSJOxXf6ECanjacA== +react-dom@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8" + integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.3.0" + scheduler "^0.12.0" react-event-listener@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.3.tgz#8eab88129a76e095ed8aa684c29679eded1e843d" - integrity sha512-21ubz0vpzPL/8YPGkcDs/LFIemxMFPhpXnFKvrm15IA7x/kYzh1Bru3ww/lsZJJ0hCqyhJGjv7Txl/U00Je5SA== + version "0.6.5" + resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.5.tgz#d374dbe5da485c9f9d4702f0e76971afbe9b6b2e" + integrity sha512-//lCxOM3DQ0+xmTa/u9mI9mm55zCPdIKp89d8MGjlNsOOnXQ5sFDD1eed+sMBzQXKiRBLBMtSg/2T9RJFtfovw== dependencies: - "@babel/runtime" "7.0.0-rc.1" + "@babel/runtime" "7.2.0" prop-types "^15.6.0" warning "^4.0.1" -react-hotkeys@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-0.10.0.tgz#d1e78bd63f16d6db58d550d33c8eb071f35d94fb" - integrity sha1-0eeL1j8W1ttY1VDTPI6wcfNdlPs= +react-hotkeys@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-1.1.4.tgz#a0712aa2e0c03a759fd7885808598497a4dace72" + integrity sha1-oHEqouDAOnWf14hYCFmEl6TaznI= dependencies: - create-react-class "^15.5.2" - lodash "^4.13.1" + lodash.isboolean "^3.0.3" + lodash.isequal "^4.5.0" + lodash.isobject "^3.0.2" mousetrap "^1.5.2" - prop-types "^15.5.8" + prop-types "^15.6.0" react-immutable-proptypes@^2.1.0: version "2.1.0" @@ -7881,6 +7570,20 @@ react-immutable-pure-component@^1.1.1: optionalDependencies: "@types/react" "16.4.6" +react-infinite-scroller@^1.0.12: + version "1.2.4" + resolved "https://registry.yarnpkg.com/react-infinite-scroller/-/react-infinite-scroller-1.2.4.tgz#f67eaec4940a4ce6417bebdd6e3433bfc38826e9" + integrity sha512-/oOa0QhZjXPqaD6sictN2edFMsd3kkMiE19Vcz5JDgHpzEJVqYcmq+V3mkwO88087kvKGe1URNksHEOt839Ubw== + dependencies: + prop-types "^15.5.8" + +react-input-autosize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" + integrity sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA== + dependencies: + prop-types "^15.5.8" + react-intl-translations-manager@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz#aee010ecf35975673e033ca5d7d3f4147894324d" @@ -7891,26 +7594,36 @@ react-intl-translations-manager@^5.0.3: json-stable-stringify "^1.0.1" mkdirp "^0.5.1" -react-intl@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.4.0.tgz#66c14dc9df9a73b2fbbfbd6021726e80a613eb15" - integrity sha1-ZsFNyd+ac7L7v71gIXJugKYT6xU= +react-intl@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.7.2.tgz#efe97e3fc0e99b4e88a6e6150854d3d1852a4381" + integrity sha512-3dcNGLqEw2FKkX+1L2WYLgjP0MVJkvWuVd1uLcnwifIQe8JQvnd9Bss4hb4Gvg/YhBIRcs4LM6C2bAgyklucjw== dependencies: + hoist-non-react-statics "^2.5.5" intl-format-cache "^2.0.5" intl-messageformat "^2.1.0" - intl-relativeformat "^2.0.0" + intl-relativeformat "^2.1.0" invariant "^2.1.1" -react-is@^16.3.2, react-is@^16.4.2, react-is@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.5.0.tgz#2ec7c192709698591efe13722fab3ef56144ba55" - integrity sha512-kpkCGLsChXTEQJVmowQqHpCjHKJFwB4SIChYaaaiAkq8OtE2aBg5pQe8/xnFlGmz9KmMx1H4oQRUyxP7qC9v5A== +react-is@^16.3.2, react-is@^16.6.1, react-is@^16.6.3, react-is@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa" + integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g== -react-lifecycles-compat@^3.0.4: +react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-masonry-infinite@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/react-masonry-infinite/-/react-masonry-infinite-1.2.2.tgz#20c1386f9ccdda9747527c8f42bc2c02dd2e7951" + integrity sha1-IME4b5zN2pdHUnyPQrwsAt0ueVE= + dependencies: + bricks.js "^1.7.0" + prop-types "^15.5.10" + react-infinite-scroller "^1.0.12" + react-motion@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" @@ -7939,24 +7652,25 @@ react-overlays@^0.8.3: react-transition-group "^2.2.0" warning "^3.0.0" -react-redux-loading-bar@^2.9.3: - version "2.9.3" - resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-2.9.3.tgz#65865dddcbf597169e787edec15eec7ebfb84149" - integrity sha1-ZYZd3cv1lxaeeH7ewV7sfr+4QUk= +react-redux-loading-bar@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-4.0.8.tgz#e84d59d1517b79f53b0f39c8ddb40682af648c1b" + integrity sha512-BpR1tlYrYKFtGhxa7nAKc0dpcV33ZgXJ/jKNLpDDaxu2/cCxbkWQt9YlWT+VLw1x/7qyNYY4DH48bZdtmciSpg== dependencies: - prop-types "^15.5.6" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.2" -react-redux@^5.0.4: - version "5.0.7" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz#0dc1076d9afb4670f993ffaef44b8f8c1155a4c8" - integrity sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg== +react-redux@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-6.0.0.tgz#09e86eeed5febb98e9442458ad2970c8f1a173ef" + integrity sha512-EmbC3uLl60pw2VqSSkj6HpZ6jTk12RMrwXMBdYtM6niq0MdEaRq9KYCwpJflkOZj349BLGQm1MI/JO1W96kLWQ== dependencies: - hoist-non-react-statics "^2.5.0" - invariant "^2.0.0" - lodash "^4.17.5" - lodash-es "^4.17.5" - loose-envify "^1.1.0" - prop-types "^15.6.0" + "@babel/runtime" "^7.2.0" + hoist-non-react-statics "^3.2.1" + invariant "^2.2.4" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-is "^16.6.3" react-router-dom@^4.1.1: version "4.3.1" @@ -7991,6 +7705,19 @@ react-router@^4.3.1: prop-types "^15.6.1" warning "^4.0.1" +react-select@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-2.2.0.tgz#67c8b5c2dcb8df0384f2a103efe952570f5d6b93" + integrity sha512-FOnsm/zrJ2pZvYsEfs58Xvru0SHL1jXAZTCFTWcOxmQSnRKgYuXUDFdpDiET90GLtJEF+t6BaZeD43bUH6/NZQ== + dependencies: + classnames "^2.2.5" + create-emotion "^10.0.4" + memoize-one "^4.0.0" + prop-types "^15.6.0" + raf "^3.4.0" + react-input-autosize "^2.2.1" + react-transition-group "^2.2.1" + react-sparklines@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz#9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60" @@ -7998,53 +7725,54 @@ react-sparklines@^1.7.0: dependencies: prop-types "^15.5.10" -react-swipeable-views-core@^0.12.17: - version "0.12.17" - resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.12.17.tgz#0998f55fd2f8595bcd01bead1c19516dc561c1cf" - integrity sha512-KfQ+BPfLVBe7kxb+0zbVJp3eGQfZlt1gn5J+GYAgnYoZ29GrqkTfiQFKmrG4tmVnhxvRiXFA7Q0q9EBMYTc/FA== +react-swipeable-views-core@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.13.0.tgz#6bf8a8132a756355444537672a14e84b1e3b53c2" + integrity sha512-MAe119eSN4obiqsIp+qoUWtLbyjz+dWEfz+qPurPvyIFoXxuxpBnsDy36+C7cBaCi5z4dRmfoMlm1dBAdIzvig== dependencies: "@babel/runtime" "7.0.0" warning "^4.0.1" -react-swipeable-views-utils@^0.12.17: - version "0.12.17" - resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.12.17.tgz#5219faa766b683d907288cdd7b86c0a14b577b7f" - integrity sha512-S0ERcHcTdOPz7LC/z+fDpJW1Z03b71V+MpG0RcY2mtEfsK7BJHqyIuht4KIJKApVrngxV9xWLBOYqeP7R86gWA== +react-swipeable-views-utils@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.13.0.tgz#0ea17aa67f88a69d534c79d591f8d82ef98346a4" + integrity sha512-1I4BhDqA6qkRdW0nexnudh/QdvVAVy0a7M5OyU2TrjaTovg6ufBouzqfqjZfUZUxVdOftTkPtisHmcqqZ+b1TA== dependencies: "@babel/runtime" "7.0.0" fbjs "^0.8.4" keycode "^2.1.7" prop-types "^15.6.0" react-event-listener "^0.6.0" - react-swipeable-views-core "^0.12.17" + react-swipeable-views-core "^0.13.0" -react-swipeable-views@^0.12.17: - version "0.12.17" - resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.12.17.tgz#4d6a9bf4b667ce7b7aac3112d696598b94a1cf30" - integrity sha512-+egPdA4vqe1h4a9OIFWHKZER9aMPVrggiZ7PtXRyovsuLCDsoiIgGjNujuEOKVEskNjN1LHtQjQsPWinT7UD6A== +react-swipeable-views@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.13.0.tgz#a200cef1005d55af6a27b97048afe9a4056e0ab8" + integrity sha512-r6H8lbtcI99oKykpLxYrI6O9im1lJ4D5/hf8bkNeQLdHZ9ftxS03qgEtguy3GpT5VB9yS4gErYWeaTrhCrysEg== dependencies: "@babel/runtime" "7.0.0" dom-helpers "^3.2.1" prop-types "^15.5.4" - react-swipeable-views-core "^0.12.17" - react-swipeable-views-utils "^0.12.17" + react-swipeable-views-core "^0.13.0" + react-swipeable-views-utils "^0.13.0" warning "^4.0.1" -react-test-renderer@^16.0.0-0, react-test-renderer@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.5.0.tgz#1aeca0edc4f27f63265dcaed80ba82e11e762f56" - integrity sha512-cuN9BoZ1p6T3oxrjxN7pQDSmgWzAxWBi8gtCHcViMYcw/1xqOIyatt2YFhiCWg7115TPQqkTKEu+F44YjFE4ig== +react-test-renderer@^16.0.0-0, react-test-renderer@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.7.0.tgz#1ca96c2b450ab47c36ba92cd8c03fcefc52ea01c" + integrity sha512-tFbhSjknSQ6+ttzmuGdv+SjQfmvGcq3PFKyPItohwhhOBmRoTf1We3Mlt3rJtIn85mjPXOkKV+TaKK4irvk9Yg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" - react-is "^16.5.0" - schedule "^0.3.0" + react-is "^16.7.0" + scheduler "^0.12.0" -react-textarea-autosize@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz#2b78f9067180f41b08ac59f78f1581abadd61e54" - integrity sha512-bx6z2I35aapr71ggw2yZIA4qhmqeTa4ZVsSaTeFvtf9kfcZppDBh2PbMt8lvbdmzEk7qbSFhAxR9vxEVm6oiMg== +react-textarea-autosize@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz#3132cb77e65d94417558d37c0bfe415a5afd3445" + integrity sha512-c2FlR/fP0qbxmlrW96SdrbgP/v0XZMTupqB90zybvmDVDutytUgPl7beU35klwcTeMepUIQEpQUn3P3bdshGPg== dependencies: + "@babel/runtime" "^7.1.2" prop-types "^15.6.0" react-toggle@^4.0.1: @@ -8054,32 +7782,25 @@ react-toggle@^4.0.1: dependencies: classnames "^2.2.5" -react-transition-group@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz#1d9391fabfd82e016f26fabd1eec329dbd922b5a" - integrity sha512-Xv5d55NkJUxUzLCImGSanK8Cl/30sgpOEMGc5m86t8+kZwrPxPCPcFqyx83kkr+5Lz5gs6djuvE5By+gce+VjA== +react-transition-group@^2.2.0, react-transition-group@^2.2.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.2.tgz#9457166a9ba6ce697a3e1b076b3c049b9fb2c408" + integrity sha512-vwHP++S+f6KL7rg8V1mfs62+MBKtbMeZDR8KiNmD7v98Gs3UPGsDZDahPJH2PVprFW5YHJfh6cbNim3zPndaSQ== dependencies: dom-helpers "^3.3.1" - loose-envify "^1.3.1" + loose-envify "^1.4.0" prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.5.0.tgz#f2c1e754bf9751a549d9c6d9aca41905beb56575" - integrity sha512-nw/yB/L51kA9PsAy17T1JrzzGRk+BlFCJwFF7p+pwVxgqwPjYNeZEkkH7LXn9dmflolrYMXLWMTkQ77suKPTNQ== +react@^16.7.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381" + integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.3.0" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= - dependencies: - pify "^2.3.0" + scheduler "^0.12.0" read-pkg-up@^1.0.1: version "1.0.1" @@ -8115,18 +7836,9 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, 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: version "2.3.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" @@ -8137,15 +7849,23 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= +readable-stream@^3.0.6: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" + integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" realpath-native@^1.0.0: version "1.0.2" @@ -8154,18 +7874,10 @@ realpath-native@^1.0.0: dependencies: util.promisify "^1.0.0" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - redis-commands@^1.2.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz#4495889414f1e886261180b1442e7295602d83a2" - integrity sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.4.0.tgz#52f9cf99153efcce56a8f86af986bd04e988602f" + integrity sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw== redis-parser@^2.6.0: version "2.6.0" @@ -8191,15 +7903,13 @@ redux-thunk@^2.2.0: resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== -redux@^3.7.1: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" - integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== +redux@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" + loose-envify "^1.4.0" + symbol-observable "^1.2.0" regenerate-unicode-properties@^7.0.0: version "7.0.0" @@ -8245,10 +7955,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" - integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== +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== regexpu-core@^1.0.0: version "1.0.0" @@ -8260,14 +7970,14 @@ regexpu-core@^1.0.0: regjsparser "^0.1.4" regexpu-core@^4.1.3, regexpu-core@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" - integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^7.0.0" - regjsgen "^0.4.0" - regjsparser "^0.3.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.0.2" @@ -8276,10 +7986,10 @@ regjsgen@^0.2.0: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= -regjsgen@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" - integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== regjsparser@^0.1.4: version "0.1.5" @@ -8288,17 +7998,17 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" - integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== dependencies: jsesc "~0.5.0" -rellax@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.6.2.tgz#b22c8715f56324fa8b396465d3dca9953b711f30" - integrity sha512-JVHA7Stzxfc9XB7HTLfl9SgbFSKKdAMYUOkRlijaK7XGiYZ28L7gmXOVLRTN6z2F9v/ybWyMf3er0mlkaNJtmA== +rellax@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/rellax/-/rellax-1.7.1.tgz#2f82aaa1c1d8116eef08fc533c59655a097c8be2" + integrity sha512-z31r9RjKeK5wJU5C6hKBupreKQ7xi+lQHda6ttlc0N1VEyL2ZCPMyckTtvliGRsxqTPqhdCasdhexs8N5aZ4+A== remove-trailing-separator@^1.0.1: version "1.1.0" @@ -8338,60 +8048,6 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@2.87.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - integrity sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.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.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -8420,7 +8076,7 @@ request@^2.87.0: requestidlecallback@^0.3.0: version "0.3.0" - resolved "http://registry.npmjs.org/requestidlecallback/-/requestidlecallback-0.3.0.tgz#6fb74e0733f90df3faa4838f9f6a2a5f9b742ac5" + resolved "https://registry.yarnpkg.com/requestidlecallback/-/requestidlecallback-0.3.0.tgz#6fb74e0733f90df3faa4838f9f6a2a5f9b742ac5" integrity sha1-b7dOBzP5DfP6pIOPn2oqX5t0KsU= require-directory@^2.1.1: @@ -8456,10 +8112,10 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" - integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== resolve-cwd@^2.0.0: version "2.0.0" @@ -8493,12 +8149,12 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== +resolve@^1.3.2, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1, resolve@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" + integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== dependencies: - path-parse "^1.0.5" + path-parse "^1.0.6" restore-cursor@^2.0.0: version "2.0.0" @@ -8513,7 +8169,17 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== @@ -8555,30 +8221,13 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= - rxjs@^6.1.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz#6a688b16c4e6e980e62ea805ec30648e1c60907f" - integrity sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw== + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== dependencies: tslib "^1.9.0" -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -8612,16 +8261,6 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.2.3" -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^7.0.0" - sass-loader@^7.0.3: version "7.1.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" @@ -8634,19 +8273,27 @@ sass-loader@^7.0.3: pify "^3.0.0" semver "^5.5.0" -sax@^1.2.4: +sass@^1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.15.2.tgz#539f464a61e29a9e4f560ec9dc2ccc5236db8474" + integrity sha512-YFncPpx3ewKEhMg9sWdCxKUpPN/jwVLa0Q9iO2tcV5Y5Z/YAlFV6k6JaQwq3tmbN6FXKjUYElXRHcG0g4D1zkQ== + dependencies: + chokidar "^2.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== -schedule@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.3.0.tgz#1be2ab2fc2e768536269ce7326efb478d6c045e8" - integrity sha512-20+1KVo517sR7Nt+bYBN8a+bEJDKLPEx7Ohtts1kX05E4/HY53YUNuhfkVNItmWAnBYHcpG9vsd2/CJxG+aPCQ== +scheduler@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.12.0.tgz#8ab17699939c0aedc5a196a657743c496538647b" + integrity sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw== dependencies: + loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^0.4.4, schema-utils@^0.4.5: +schema-utils@^0.4.4: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== @@ -8671,41 +8318,28 @@ scroll-behavior@^0.9.1: dom-helpers "^3.2.1" invariant "^2.2.2" -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= selfsigned@^1.9.1: - version "1.10.3" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" - integrity sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q== + version "1.10.4" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== dependencies: node-forge "0.7.5" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" - integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw== +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== semver@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" @@ -8726,9 +8360,9 @@ send@0.16.2: statuses "~1.4.0" serialize-javascript@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" - integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== + version "1.6.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" + integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== serve-index@^1.7.2: version "1.9.1" @@ -8758,11 +8392,6 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -8788,11 +8417,6 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -8800,7 +8424,7 @@ setprototypeof@1.1.0: sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -8827,16 +8451,6 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -8864,11 +8478,13 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== +slice-ansi@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7" + integrity sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ== dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" snapdragon-node@^2.0.1: @@ -8901,24 +8517,17 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== dependencies: - hoek "2.x.x" - -sockjs-client@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" - integrity sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM= - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" json3 "^3.3.2" - url-parse "^1.1.8" + url-parse "^1.4.3" sockjs@0.3.19: version "0.3.19" @@ -8929,9 +8538,9 @@ sockjs@0.3.19: uuid "^3.0.1" source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== + 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-resolve@^0.5.0: version "0.5.2" @@ -8951,7 +8560,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.6: +source-map-support@^0.5.6, source-map-support@~0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== @@ -8964,13 +8573,6 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -8982,17 +8584,17 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" @@ -9003,34 +8605,32 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" - integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w== + version "3.0.3" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" + integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== -spdy-transport@^2.0.18: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" - integrity sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g== +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: - debug "^2.6.8" - detect-node "^2.0.3" + debug "^4.1.0" + detect-node "^2.0.4" hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= +spdy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" + integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" + debug "^4.1.0" + handle-thing "^2.0.0" http-deceiver "^1.2.7" - safe-buffer "^5.0.1" select-hose "^2.0.0" - spdy-transport "^2.0.18" + spdy-transport "^3.0.0" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -9039,7 +8639,7 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@^1.0.0, split@^1.0.1: +split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== @@ -9052,39 +8652,36 @@ sprintf-js@~1.0.2: integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - integrity sha1-xvxhZIo9nE52T9P8306hBeSSupg= + version "1.16.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.0.tgz#1d4963a2fbffe58050aa9084ca20be81741c07de" + integrity sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" ecc-jsbn "~0.1.1" + getpass "^0.1.1" jsbn "~0.1.0" + safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== - dependencies: - safe-buffer "^5.1.1" - -ssri@^6.0.0: +ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" +stable@~0.1.6: + version "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.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" - integrity sha1-1PM6tU6OOHeLDKXP07OvsS22hiA= + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== static-extend@^0.1.1: version "0.1.2" @@ -9094,7 +8691,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -9104,13 +8701,6 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -stdout-stream@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" - integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== - dependencies: - readable-stream "^2.0.1" - stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -9124,14 +8714,6 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-combiner@^0.2.2: - version "0.2.2" - resolved "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" - integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= - dependencies: - duplexer "~0.1.1" - through "~2.3.4" - stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -9164,7 +8746,7 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -9181,15 +8763,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string.prototype.padend@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" - integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.4.3" - function-bind "^1.0.2" - string.prototype.trim@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" @@ -9199,22 +8772,26 @@ string.prototype.trim@^1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" -string_decoder@^1.0.0, string_decoder@~1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== - -stringz@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/stringz/-/stringz-0.3.0.tgz#58a311a8c791eee1a68f5f188b3db5e66ff49360" - integrity sha512-sQmNkR3Pv3ZtJzR6heG+VxxW5ESgQJDPyrE7xmprY+0dRJYjWFG9/FghHQL6JQoWqN9Vueabu4c5W/jbzPU3HA== +stringz@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stringz/-/stringz-1.0.0.tgz#d2acba994e4ce3c725ee15c86fff4281280d2025" + integrity sha512-oaqFaIAmw1MJmdPNiBqocHHrC0VzJTL3CI1z5uXm3NQSE3AyDU152ZPTSJSOKk+9z1Cm3LZzgLFjCTb8SXZvag== + dependencies: + unicode-astral-regex "^1.0.1" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -9230,6 +8807,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -9247,38 +8831,33 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz#8377fefab68416a2e05f1cabd8c3a3acfcce74f1" - integrity sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ== +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: loader-utils "^1.1.0" - schema-utils "^0.4.5" + schema-utils "^1.0.0" + +stylehacks@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2" + integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" substring-trie@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz#7b42592391628b4f2cb17365c6cce4257c7b7af5" integrity sha1-e0JZI5Fii08ssXNlxszkJXx7evU= -sugarss@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44" - integrity sha512-3qgLZytikQQEVn1/FrhY7B68gPUUGY3R1Q1vTiD5xT+Ti1DP/8iZuwFet9ONs5+bmL8pZoDQ6JrQHVgrNlK6mA== - dependencies: - postcss "^6.0.14" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -9291,14 +8870,34 @@ supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.5.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" -symbol-observable@^1.0.3: +svgo@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" + integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== + dependencies: + coa "~2.0.1" + colors "~1.1.2" + css-select "^2.0.0" + css-select-base-adapter "~0.1.0" + css-tree "1.0.0-alpha.28" + css-url-regex "^1.1.0" + csso "^3.5.0" + js-yaml "^3.12.0" + mkdirp "~0.5.1" + object.values "^1.0.4" + sax "~1.2.4" + stable "~0.1.6" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.2.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== @@ -9308,55 +8907,30 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= -table@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" - integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== +table@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837" + integrity sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw== dependencies: - ajv "^5.2.3" - ajv-keywords "^2.1.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" + ajv "^6.6.1" + lodash "^4.17.11" + slice-ansi "2.0.0" string-width "^2.1.1" -tapable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" - integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== - -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - integrity sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg== - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.0.0, tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" + integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA== tar@^4: - version "4.4.6" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" - integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: - chownr "^1.0.1" + chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" + minipass "^2.3.4" + minizlib "^1.1.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.2" @@ -9366,10 +8940,28 @@ tcomb@^2.5.0: resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0" integrity sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA= -tcomb@^3.2.21: - version "3.2.27" - resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.27.tgz#f4928bfc536b959d21a47e5f5f1ca2b2e4b7188a" - integrity sha512-XWdJW7F/M3YzXhDEUP8ycmNWoYymBtsHwCHoda0YF44RthJsls95TqDrmpAlC1sB/KXaCvkdBlcNRq+AaV6klA== +terser-webpack-plugin@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz#7545da9ae5f4f9ae6a0ac961eb46f5e7c845cc26" + integrity sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw== + dependencies: + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.8.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +terser@^3.8.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.0.tgz#49a8ddf34a1308a901d787dab03a42c51b557447" + integrity sha512-KQC1QNKbC/K1ZUjLIWsezW7wkTJuB4v9ptQQUNOzAPVHuVf2LrwEcB0I9t2HTEYUwAFVGiiS6wc+P4ClLDc5FQ== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.6" test-exclude@^4.2.1: version "4.2.3" @@ -9382,7 +8974,7 @@ test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -9400,22 +8992,22 @@ throng@^4.0.0: lodash.defaults "^4.0.1" through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= + 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.1.5" + readable-stream "~2.3.6" xtend "~4.0.1" -through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.4: +through@2, through@^2.3.6: version "2.3.8" - resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= thunky@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" - integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= + version "1.0.3" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== timers-browserify@^2.0.4: version "2.0.10" @@ -9424,6 +9016,11 @@ timers-browserify@^2.0.4: 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" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tiny-queue@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" @@ -9481,7 +9078,15 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + 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== @@ -9489,13 +9094,6 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -9503,23 +9101,11 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" - tryer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -9554,7 +9140,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.15, type-is@~1.6.16: +type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== @@ -9568,19 +9154,11 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= ua-parser-js@^0.7.18: - version "0.7.18" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz#a7bfd92f56edfb117083b69e31d2aa8882d4b1ed" - integrity sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA== + version "0.7.19" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" + integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== -uglify-es@^3.3.4: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -uglify-js@^3.1.4: +uglify-js@^3.0.0, uglify-js@^3.1.4: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== @@ -9588,29 +9166,24 @@ uglify-js@^3.1.4: commander "~2.17.1" source-map "~0.6.1" -uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.7: - version "1.3.0" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" - integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== +uglifyjs-webpack-plugin@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.1.tgz#6937d7513a37280d4792f1fb536bef35e08e420a" + integrity sha512-TQEcyMNkObX/H+FfcKjiDgs5RcXX8vW2UUUrDTOfQgg3lrafztfeM5WAwXo+AzqozJK6NP9w98xNpG/dutzSsg== dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - schema-utils "^0.4.5" + cacache "^11.2.0" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" serialize-javascript "^1.4.0" source-map "^0.6.1" - uglify-es "^3.3.4" + uglify-js "^3.0.0" webpack-sources "^1.1.0" worker-farm "^1.5.2" -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -underscore@~1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" - integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= +unicode-astral-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unicode-astral-regex/-/unicode-astral-regex-1.0.1.tgz#2cab8529480646f9614ddbc7b62158ad05123feb" + integrity sha512-UP6cmDeiWi8bMDmkyXLRsDuVPTvPjh8Wsz+pHu1VkGgTBl4pUceYAdHXY0cdc6Q3+Z2q7QMzi/0E7L/S/yOvFw== unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" @@ -9650,31 +9223,31 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-filename@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" - integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= +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== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" - integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== dependencies: imurmurhash "^0.1.4" -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@^1.1.0: +unquote@^1.1.0, unquote@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= @@ -9704,15 +9277,10 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" - integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= - -url-parse@^1.1.8, url-parse@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" - integrity sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw== +url-parse@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== dependencies: querystringify "^2.0.0" requires-port "^1.0.0" @@ -9730,12 +9298,12 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0: +util.promisify@^1.0.0, 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== @@ -9762,7 +9330,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== @@ -9772,7 +9340,7 @@ uws@10.148.0: resolved "https://registry.yarnpkg.com/uws/-/uws-10.148.0.tgz#3fcd35f083ca515e091cd33b2d78f0f51a666215" integrity sha512-aJpFgMMyxubiE/ll4nj9nWoQbv0HzZZDWXfwyu78nuFObX0Zoyv3TWjkqKPQ1vb2sMPZoz67tri7QNE6dybNmQ== -v8-compile-cache@^2.0.0: +v8-compile-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== @@ -9795,6 +9363,11 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vendors@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -9856,7 +9429,7 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -wbuf@^1.1.0, wbuf@^1.7.2: +wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== @@ -9868,58 +9441,67 @@ 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@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526" - integrity sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ== +webpack-assets-manifest@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz#39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de" + integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ== dependencies: - acorn "^5.3.0" - bfj-node4 "^5.2.0" - chalk "^2.3.0" - commander "^2.13.0" - ejs "^2.5.7" - express "^4.16.2" - filesize "^3.5.11" - gzip-size "^4.1.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - opener "^1.4.3" - ws "^4.0.0" + chalk "^2.0" + lodash.get "^4.0" + lodash.has "^4.0" + mkdirp "^0.5" + schema-utils "^1.0.0" + tapable "^1.0.0" + webpack-sources "^1.0.0" -webpack-cli@^3.0.8: - version "3.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" - integrity sha512-p5NeKDtYwjZozUWq6kGNs9w+Gtw/CPvyuXjXn2HMdz8Tie+krjEg8oAtonvIyITZdvpF7XG9xDHwscLr2c+ugQ== +webpack-bundle-analyzer@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.3.tgz#dbc7fff8f52058b6714a20fddf309d0790e3e0a0" + integrity sha512-naLWiRfmtH4UJgtUktRTLw6FdoZJ2RvCR9ePbwM9aRMsS/KjFerkPZG9epEvXRAw5d5oPdrs9+3p+afNjxW8Xw== + dependencies: + acorn "^5.7.3" + 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.10" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + +webpack-cli@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.2.tgz#17d7e01b77f89f884a2bbf9db545f0f6a648e746" + integrity sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ== dependencies: chalk "^2.4.1" cross-spawn "^6.0.5" - enhanced-resolve "^4.0.0" - global-modules-path "^2.1.0" - import-local "^1.0.0" - inquirer "^6.0.0" + enhanced-resolve "^4.1.0" + global-modules-path "^2.3.0" + import-local "^2.0.0" interpret "^1.1.0" loader-utils "^1.1.0" - supports-color "^5.4.0" - v8-compile-cache "^2.0.0" - yargs "^12.0.1" + supports-color "^5.5.0" + v8-compile-cache "^2.0.2" + yargs "^12.0.2" -webpack-dev-middleware@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" - integrity sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA== +webpack-dev-middleware@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" + integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== dependencies: - loud-rejection "^1.6.0" memory-fs "~0.4.1" mime "^2.3.1" - path-is-absolute "^1.0.0" range-parser "^1.0.3" - url-join "^4.0.0" webpack-log "^2.0.0" -webpack-dev-server@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz#eb7a95945d1108170f902604fb3b939533d9daeb" - integrity sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A== +webpack-dev-server@^3.1.14: + version "3.1.14" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz#60fb229b997fc5a0a1fc6237421030180959d469" + integrity sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -9940,13 +9522,15 @@ webpack-dev-server@^3.1.8: portfinder "^1.0.9" schema-utils "^1.0.0" selfsigned "^1.9.1" + semver "^5.6.0" serve-index "^1.7.2" sockjs "0.3.19" - sockjs-client "1.1.5" - spdy "^3.4.1" + sockjs-client "1.3.0" + spdy "^4.0.0" strip-ansi "^3.0.0" supports-color "^5.1.0" - webpack-dev-middleware "3.2.0" + url "^0.11.0" + webpack-dev-middleware "3.4.0" webpack-log "^2.0.0" yargs "12.0.2" @@ -9958,39 +9542,30 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz#e4ca2999b09557716b8ba4475fb79fab5986f0cd" - integrity sha512-nejhOHexXDBKQOj/5v5IZSfCeTO3x1Dt1RZEcGfBSul891X/eLIcIVH31gwxPDdsi2Z8LKKFGpM4w9+oTBOSCg== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - tapable "^1.0.0" - -webpack-merge@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" - integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ== +webpack-merge@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.5.tgz#2be31e846c20767d1bef56bdca64c328a681190a" + integrity sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ== dependencies: lodash "^4.17.5" -webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.2.0.tgz#18181e0d013fce096faf6f8e6d41eeffffdceac2" - integrity sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw== +webpack-sources@^1.0.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.18.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.18.0.tgz#7dafaaf309c12e63080d3960fba7ed94afdcbe84" - integrity sha512-XOGIV1FuGSisuX0gJwoANpR0+rUnlDWf2dadNfdT8ftaM8QzIMsJin2vK9XaYuhsji321C6dnCV4bxbIwq9jrg== +webpack@^4.28.3: + version "4.28.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.3.tgz#8acef6e77fad8a01bfd0c2b25aa3636d46511874" + integrity sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg== dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-module-context" "1.7.6" - "@webassemblyjs/wasm-edit" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" + "@webassemblyjs/ast" "1.7.11" + "@webassemblyjs/helper-module-context" "1.7.11" + "@webassemblyjs/wasm-edit" "1.7.11" + "@webassemblyjs/wasm-parser" "1.7.11" acorn "^5.6.2" acorn-dynamic-import "^3.0.0" ajv "^6.1.0" @@ -10007,10 +9582,10 @@ webpack@^4.18.0: neo-async "^2.5.0" node-libs-browser "^2.0.0" schema-utils "^0.4.4" - tapable "^1.0.0" - uglifyjs-webpack-plugin "^1.2.4" + tapable "^1.1.0" + terser-webpack-plugin "^1.1.0" watchpack "^1.5.0" - webpack-sources "^1.2.0" + webpack-sources "^1.3.0" websocket-driver@>=0.5.1: version "0.7.0" @@ -10033,21 +9608,21 @@ websocket.js@^0.1.12: backoff "^2.4.1" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz#63fb016b7435b795d9025632c086a5209dbd2621" - integrity sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg== + 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.23" + iconv-lite "0.4.24" whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== -whatwg-mimetype@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4" - integrity sha512-FKxhYLytBQiUKjkYteN71fAUA3g6KpNXoho1isLiLSB3N1G4F35Q5vUxWfKFhBwi5IWF27VE6WxhrnnC+m0Mew== +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.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" @@ -10067,17 +9642,12 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@^1.2.12, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -10110,7 +9680,7 @@ worker-farm@^1.5.2: wrap-ansi@^2.0.0: version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" @@ -10137,14 +9707,6 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" - integrity sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" @@ -10152,6 +9714,13 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^6.0.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8" + integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw== + dependencies: + async-limiter "~1.0.0" + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -10183,9 +9752,9 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== yargs-parser@^10.1.0: version "10.1.0" @@ -10194,12 +9763,13 @@ yargs-parser@^10.1.0: dependencies: camelcase "^4.1.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: - camelcase "^3.0.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^7.0.0: version "7.0.0" @@ -10215,7 +9785,7 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" -yargs@12.0.2, yargs@^12.0.1: +yargs@12.0.2: version "12.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== @@ -10235,7 +9805,7 @@ yargs@12.0.2, yargs@^12.0.1: yargs@^11.0.0: version "11.1.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" @@ -10251,24 +9821,23 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= +yargs@^12.0.2: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + os-locale "^3.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" yargs@^8.0.2: version "8.0.2"