diff --git a/.babelrc b/.babelrc deleted file mode 100755 index b61f60aa8d..0000000000 --- a/.babelrc +++ /dev/null @@ -1,30 +0,0 @@ -{ - "presets": [ - "@babel/preset-env", - "@babel/preset-react", - "@babel/preset-typescript" - ], - "plugins": [ - ["@babel/plugin-proposal-decorators", { "legacy": true }], - ["@babel/plugin-proposal-class-properties", { "loose": true }], - ["@babel/plugin-proposal-private-property-in-object", { "loose": true }], - [ - "@babel/plugin-proposal-private-methods", - { - "loose": true - } - ], - ["@babel/plugin-proposal-optional-chaining"], - ["@babel/plugin-proposal-object-rest-spread", {}], - ["@babel/plugin-transform-runtime", {}], - ["@babel/plugin-proposal-unicode-property-regex", { "useUnicodeFlag": false }], - ["react-intl", { - "messagesDir": "./translations/messages/", - "enforceDescriptions": false, - "extractSourceLocation": true - }] - ], - "ignore": [ - "node_modules" - ] -} diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index caf04cc89d..2c074b450f 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -2,14 +2,14 @@ env: ARTIFACT_BUCKET: s3://ci-output-sink steps: - label: 'daedalus-x86_64-darwin' - command: 'scripts/build-installer-unix.sh--nix-2.5 --build-id $BUILDKITE_BUILD_NUMBER' + command: 'scripts/with-nix-2.5.sh scripts/build-installer-unix.sh --build-id $BUILDKITE_BUILD_NUMBER' env: NIX_SSL_CERT_FILE: /nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt agents: queue: daedalus system: x86_64-darwin - label: 'daedalus-aarch64-darwin' - command: 'scripts/build-installer-unix.sh--nix-2.5 --build-id $BUILDKITE_BUILD_NUMBER' + command: 'scripts/with-nix-2.5.sh scripts/build-installer-unix.sh --build-id $BUILDKITE_BUILD_NUMBER' env: NIX_SSL_CERT_FILE: /nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt UPLOAD_DIR_OVERRIDE: UNSAFE-internal-build @@ -17,11 +17,11 @@ steps: queue: daedalus system: aarch64-darwin - label: 'daedalus-x86_64-linux-nix' - command: 'scripts/build-installer-nix.sh $BUILDKITE_BUILD_NUMBER' + command: 'scripts/with-nix-2.5.sh scripts/build-installer-nix.sh $BUILDKITE_BUILD_NUMBER' agents: system: x86_64-linux - label: 'daedalus-x86_64-windows-nix' - command: 'scripts/build-cross-windows.sh $BUILDKITE_BUILD_NUMBER' + command: 'scripts/with-nix-2.5.sh scripts/build-cross-windows.sh $BUILDKITE_BUILD_NUMBER' agents: system: x86_64-linux diff --git a/.eslintrc b/.eslintrc index 2c8f848de4..b0bbed500f 100755 --- a/.eslintrc +++ b/.eslintrc @@ -10,9 +10,6 @@ "plugin:@typescript-eslint/recommended", "plugin:react/recommended", "prettier", - "prettier/babel", - "prettier/@typescript-eslint", - "prettier/react", "plugin:jest/recommended" ], "env": { @@ -22,9 +19,11 @@ "jest": true }, "rules": { + "arrow-body-style": 0, "class-methods-use-this": 0, "consistent-return": "warn", "@typescript-eslint/generic-spacing": 0, + "@typescript-eslint/space-after-type-colon": 0, "jsx-a11y/alt-text": 0, "lines-between-class-members": 0, "global-require": 0, @@ -60,6 +59,7 @@ "react/destructuring-assignment": 0, "react/display-name": 0, "react/jsx-curly-brace-presence": 0, + "react/jsx-curly-newline": 0, "react/jsx-filename-extension": 0, "react/jsx-fragments": 0, "react/jsx-no-bind": "warn", @@ -76,7 +76,7 @@ "@typescript-eslint/no-empty-function": 1, "@typescript-eslint/ban-types": 1, "import/no-unresolved": 1, - "@typescript-eslint/no-var-requires": 1, + "@typescript-eslint/no-var-requires": 0, "camelcase": 1, "no-empty": 1, "@typescript-eslint/no-explicit-any": 1, @@ -84,14 +84,20 @@ "react/no-did-update-set-state": 1, "react/sort-comp": 0, "react/state-in-constructor": 0, - "react/static-property-placement": 0 + "react/static-property-placement": 0, + "react/jsx-no-useless-fragment": 0, + "prefer-regex-literals": 0, + "no-unused-vars": "warn", + "react/no-unused-class-component-methods": "warn", + "react/no-unstable-nested-components": "warn", + "no-promise-executor-return": "warn", + "default-param-last": "warn" }, "plugins": ["@typescript-eslint", "import", "promise", "react", "jest"], "globals": { "API": true, "API_VERSION": true, "NETWORK": true, - "MOBX_DEV_TOOLS": true, "BUILD_NUMBER": true, "Process": true // TODO: remove after fix }, diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index a9b27403a6..fc5a939007 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: "14" + node-version: "16" - name: Install dependencies run: yarn - name: Publish to Chromatic diff --git a/.gitignore b/.gitignore index 00bbbe3b9e..bdde8d9278 100755 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ build/Release # Dependency directory # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git node_modules +/node_modules.* # OSX .DS_Store @@ -46,6 +47,9 @@ installers/config.yaml installers/icons/electron.icns installers/installer-config.json installers/topology.yaml +installers/csl-daedalus/ +installers/delegation.cert +installers/signing.key # temporary certs for daedalus dev tls/client diff --git a/.prettierignore b/.prettierignore index eec1fd43c0..169b64d262 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ !features/ !storybook/ !hardware-wallet-tests/ +!tests/ # Now we ignore all files *.* diff --git a/CHANGELOG.md b/CHANGELOG.md index a68a21289b..5aacf7ac11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ ### Chores +- Upgraded webpack to version 5 ([PR 2772](https://github.com/input-output-hk/daedalus/pull/2772)) +- Bumped vulnerable dependencies versions ([PR 2943](https://github.com/input-output-hk/daedalus/pull/2943)) - Added support for Trezor firmware 2.5.1 ([PR 2991](https://github.com/input-output-hk/daedalus/pull/2991)) - Added steps on how to link with `react-polymorph` and other external UI libraries ([PR 2948](https://github.com/input-output-hk/daedalus/pull/2948)) - Published selfnode installers for all 3 platforms ([PR 2971](https://github.com/input-output-hk/daedalus/pull/2971)) diff --git a/declaration.d.ts b/declaration.d.ts index e598e2a913..716c6e9c14 100644 --- a/declaration.d.ts +++ b/declaration.d.ts @@ -1,3 +1,8 @@ +import { IpcRenderer } from 'electron'; +import type { request as httpRequest } from 'http'; +import type { request as httpsRequest, globalAgent } from 'https'; +import { Environment } from './source/common/types/environment.types'; + declare module '*.svg' { const content: any; export default content; @@ -22,6 +27,15 @@ type Daedalus = { }; }; +interface Http { + request: httpRequest; +} + +interface Https { + request: httpsRequest; + Agent: globalAgent; +} + export type $ElementType< T extends { [P in K & any]: any }, K extends keyof T | number @@ -39,7 +53,18 @@ declare global { WALLET_COUNT: number; } } + /* eslint-disable no-var, vars-on-top */ var daedalus: Daedalus; + var environment: Environment; + var http: Http; + var https: Https; + var legacyStateDir: string; + var isFlight: boolean; + var ipcRenderer: Pick< + IpcRenderer, + 'on' | 'once' | 'send' | 'removeListener' | 'removeAllListeners' + >; + /* eslint-enable no-var, vars-on-top */ } export {}; diff --git a/gulpfile.js b/gulpfile.js index 23fc1d0709..01bc875f91 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,123 +1,5 @@ const gulp = require('gulp'); -const webpack = require('webpack'); -const webpackStream = require('webpack-stream'); const shell = require('gulp-shell'); -const electronConnect = require('electron-connect'); -const mainWebpackConfig = require('./source/main/webpack.config'); -const rendererWebpackConfig = require('./source/renderer/webpack.config'); - -// Setup electron-connect server to start the app in development mode -let electronServer; -const electronServerAgs = ['--inspect=9229']; -// Gulp input sources for main and renderer compilation -const mainInputSource = () => gulp.src('source/main/index.ts'); -const rendererInputSource = () => gulp.src('source/renderer/index.ts'); -// Webpack watch configs -const mainWebpackWatchConfig = Object.assign({}, mainWebpackConfig, { - watch: true, -}); -const rendererWebpackWatchConfig = Object.assign({}, rendererWebpackConfig, { - watch: true, -}); -// Gulp output destinations for main and renderer compilation -const mainOutputDestination = () => gulp.dest('dist/main'); -const rendererOutputDestination = () => gulp.dest('dist/renderer'); - -/** - * Creates an electron-connect server instance that enables - * us to control our app (restarting / reloading) - * @param env - electron app environment - * @param args - additional spawn options - */ -const createElectronServer = (env, args = []) => { - electronServer = electronConnect.server.create({ - spawnOpt: { - env: Object.assign({}, process.env, env), - args, - }, - }); -}; - -const buildMain = () => () => - mainInputSource() - .pipe(webpackStream(mainWebpackConfig, webpack)) - .pipe(mainOutputDestination()); - -const buildMainWatch = () => (done) => - mainInputSource() - .pipe( - webpackStream(mainWebpackWatchConfig, webpack, () => { - // Restart app every time after main script has been re-compiled - electronServer.restart(electronServerAgs); - done(); - }) - ) - .pipe(mainOutputDestination()); - -const buildRenderer = () => () => - rendererInputSource() - .pipe(webpackStream(rendererWebpackConfig, webpack)) - .pipe(rendererOutputDestination()); - -const buildRendererWatch = () => (done) => - rendererInputSource() - .pipe( - webpackStream(rendererWebpackWatchConfig, webpack, () => { - if (electronServer) { - // Reload app every time after renderer script has been re-compiled - electronServer.reload(); - } - done(); - }) - ) - .pipe(rendererOutputDestination()); - -gulp.task( - 'clear:cache', - shell.task('rimraf ./node_modules/.cache && rimraf .cache-loader') -); - -gulp.task('clean:dist', shell.task('rimraf ./dist')); - -gulp.task('server:start', (done) => { - electronServer.start(electronServerAgs); - done(); -}); - -gulp.task('server:create:dev', (done) => { - createElectronServer({ - NODE_ENV: process.env.NODE_ENV, - XCURSOR_PATH: '/usr/share/icons' || 'development', - }); - done(); -}); - -gulp.task('server:create:debug', (done) => { - createElectronServer({ - NODE_ENV: process.env.NODE_ENV, - XCURSOR_PATH: '/usr/share/icons' || 'development', - }); - done(); -}); - -gulp.task('build:main', buildMain()); - -gulp.task('build:main:watch', buildMainWatch()); - -gulp.task('build:renderer:html', () => - gulp.src('source/renderer/index.html').pipe(gulp.dest('dist/renderer/')) -); - -gulp.task('build:renderer:assets', buildRenderer()); - -gulp.task( - 'build:renderer', - gulp.series('build:renderer:html', 'build:renderer:assets') -); - -gulp.task('build:renderer:watch', buildRendererWatch()); - -gulp.task('build', gulp.series('clean:dist', 'build:main', 'build:renderer')); gulp.task('prepare:themes:utils', () => gulp @@ -169,20 +51,7 @@ gulp.task( ) ); -gulp.task('typedef:sass', shell.task('yarn typedef:sass --watch')); - -gulp.task( - 'build:watch', - gulp.series( - 'clean:dist', - 'server:create:dev', - 'build:renderer:html', - process.argv.includes('--disable-electron-reload') - ? 'build:main' - : 'build:main:watch', - 'build:renderer:watch' - ) -); +gulp.task('clean:dist', shell.task('rimraf ./dist')); gulp.task('build:themes', gulp.series('clean:dist', 'prepare:themes')); @@ -193,33 +62,6 @@ gulp.task( ) ); -gulp.task('test:e2e:watch', gulp.series('build:watch', 'test:e2e:nodemon')); - -gulp.task('purge:translations', shell.task('rimraf ./translations/messages')); - -gulp.task('electron:inspector', shell.task('yarn electron:inspector')); - -gulp.task( - 'start', - shell.task( - `cross-env NODE_ENV=${process.env.NODE_ENV || 'production'} electron ./` - ) -); - -gulp.task( - 'dev', - gulp.parallel( - gulp.series('server:create:dev', 'build:watch', 'server:start'), - gulp.series('typedef:sass') - ) -); +gulp.task('e2e:watch', gulp.series('clean:dist', shell.task('yarn dev'))); -gulp.task( - 'debug', - gulp.series( - 'server:create:debug', - 'build:watch', - 'server:start', - 'electron:inspector' - ) -); +gulp.task('test:e2e:watch', gulp.series('e2e:watch', 'test:e2e:nodemon')); diff --git a/installers/common/MacInstaller.hs b/installers/common/MacInstaller.hs index c737924b59..d0913080bb 100644 --- a/installers/common/MacInstaller.hs +++ b/installers/common/MacInstaller.hs @@ -162,6 +162,9 @@ sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/blake2/bin/darwin-arm64- sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/tiny-secp256k1/build/Release/secp256k1.node" sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/tiny-secp256k1/bin/darwin-x64-"*"/tiny-secp256k1.node" sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/tiny-secp256k1/bin/darwin-arm64-"*"/tiny-secp256k1.node" +sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/usb-detection/build/Release/detection.node" +sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/node-hid/bin/darwin-x64-"*"/node-hid.node" +sign_cmd "$ABS_PATH/Contents/Resources/app/node_modules/node-hid/build/Release/HID.node" # Sign the whole component deeply sign_cmd "$ABS_PATH" @@ -226,12 +229,15 @@ buildElectronApp darwinConfig@DarwinConfig{dcAppName, dcAppNameApp} installerCon [ "@babel" , "@protobufjs" , "@trezor" + , "agent-base" + , "babel-runtime" , "base-x" , "base64-js" , "bchaddrjs" , "bech32" , "big-integer" , "bignumber.js" + , "bindings" , "bip66" , "bitcoin-ops" , "blake-hash" @@ -240,32 +246,48 @@ buildElectronApp darwinConfig@DarwinConfig{dcAppName, dcAppNameApp} installerCon , "blake2b-wasm" , "bn.js" , "brorand" + , "brotli" , "bs58" , "bs58check" , "buffer" , "bytebuffer" , "call-bind" , "cashaddrjs" + , "cbor-web" + , "clone" , "create-hash" , "create-hmac" , "cross-fetch" + , "debug" , "decimal.js" + , "deep-equal" , "define-properties" + , "dfa" , "elliptic" , "es-abstract" + , "eventemitter2" + , "file-uri-to-path" + , "fontkit" , "function-bind" + , "functions-have-names" , "get-intrinsic" , "has" + , "has-property-descriptors" , "has-symbols" + , "has-tostringtag" , "hash.js" , "hmac-drbg" , "ieee754" , "inherits" , "int64-buffer" , "ip" + , "is-arguments" + , "is-date-object" + , "is-regex" , "js-chain-libs-node" , "json-stable-stringify" , "jsonschema" + , "linebreak" , "lodash" , "long" , "minimalistic-assert" @@ -273,13 +295,19 @@ buildElectronApp darwinConfig@DarwinConfig{dcAppName, dcAppNameApp} installerCon , "ms" , "nanoassert" , "node-fetch" + , "node-hid" + , "object-is" , "object-keys" , "object.values" , "parse-uri" + , "pdfkit" + , "png-js" , "protobufjs" , "pushdata-bitcoin" , "randombytes" , "regenerator-runtime" + , "regexp.prototype.flags" + , "restructure" , "ripple-address-codec" , "ripple-binary-codec" , "ripple-keypairs" @@ -291,9 +319,13 @@ buildElectronApp darwinConfig@DarwinConfig{dcAppName, dcAppNameApp} installerCon , "smart-buffer" , "socks" , "socks-proxy-agent" + , "tiny-inflate" , "tiny-secp256k1" , "trezor-connect" , "typeforce" + , "unicode-properties" + , "unicode-trie" + , "usb-detection" , "util-deprecate" , "varuint-bitcoin" , "wif" @@ -389,6 +421,13 @@ makeComponentRoot Options{oBackend,oCluster} appRoot darwinConfig@DarwinConfig{d when (oCluster == Selfnode) $ do void $ chain (encodeString dir) $ fmap tt [ dir "mock-token-metadata-server", dir "local-cluster" ] + -- copy some libraries to new expected locations, as a temporary fix, + -- so those locations have proper dylib links -- FIXME: + forM_ [ "Contents/Resources/app/node_modules/usb-detection/build/Release/detection.node" ] $ \file -> do + let targetPath = appRoot file + let withoutDir = filename targetPath + cp (appRoot "Contents/MacOS" withoutDir) targetPath + -- Prepare launcher de <- testdir (dir "Frontend") unless de $ mv (dir (fromString $ T.unpack $ dcAppName)) (dir "Frontend") diff --git a/jest.config.js b/jest.config.js index 536e373727..668310b1e3 100644 --- a/jest.config.js +++ b/jest.config.js @@ -170,15 +170,28 @@ module.exports = { // testRunner: "jest-circus/runner", // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href - // testURL: "http://localhost", + // testURL: 'http://localhost/', // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" // timers: "real", // A map from regular expressions to paths to transformers transform: { - '\\.[jt]sx?$': 'babel-jest', - '^.+\\.svg$': 'jest-svg-transformer', + '^.+\\.(t|j)sx?$': [ + '@swc/jest', + { + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + decorators: true, + }, + target: 'es2019', + loose: false, + }, + }, + ], + '^.+\\.svg$': 'svg-jest', '.+\\.(css|styl|less|sass|scss)$': 'jest-css-modules-transform', }, diff --git a/lib.nix b/lib.nix index 186e62f7ba..e8af77bc94 100644 --- a/lib.nix +++ b/lib.nix @@ -3,6 +3,7 @@ let sources = import ./nix/sources.nix; iohkNix = import sources.iohk-nix { sourcesOverride = sources; }; + nixpkgs = import sources.nixpkgs { sourcesOverride = sources; }; # TODO: can we use the filter in iohk-nix instead? cleanSourceFilter = with pkgs.stdenv; name: type: let baseName = baseNameOf (toString name); in ! ( @@ -25,7 +26,7 @@ let (type == "symlink" && lib.hasPrefix "result" baseName) ); isDaedalus = name: false; - pkgs = iohkNix.pkgs; + pkgs = nixpkgs.pkgs; lib = pkgs.lib; in lib // { diff --git a/netlify.toml b/netlify.toml index 8254c61e82..92ac5b2008 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,2 +1,3 @@ [build] - environment = { YARN_VERSION = "1.22.4", NODE_VERSION = "14.17.0" } + environment = { YARN_VERSION = "1.22.4", NODE_VERSION = "14.19.1" } + command = "yarn && yarn storybook:build" diff --git a/package.json b/package.json index a8da1d56a7..ed8831f452 100644 --- a/package.json +++ b/package.json @@ -5,15 +5,21 @@ "description": "Cryptocurrency Wallet", "main": "./dist/main/index.js", "scripts": { - "build": "gulp build", + "dev": "concurrently --names renderer,main 'yarn dev:renderer' 'wait-on http://localhost:8080 && yarn dev:main'", + "dev:windows": "cross-env DAEDALUS_INSTALL_DIRECTORY=\"C:\\Program Files\\Daedalus Testnet\" LAUNCHER_CONFIG=\"C:\\Program Files\\Daedalus Testnet\\launcher-config.yaml\" yarn dev", + "dev:main": "cross-env NODE_ENV=development yarn build:main --watch", + "dev:renderer": "concurrently 'yarn typedef:sass --watch' 'cross-env NODE_ENV=development yarn webpack serve -c source/renderer/webpack.config.js --progress'", + "build": "yarn build:cleanup && yarn build:main && yarn build:renderer", + "build:main": "yarn webpack -c source/main/webpack.config.js --progress", + "build:renderer": "yarn webpack -c source/renderer/webpack.config.js --progress", + "build:cleanup": "rimraf ./dist", "build:electron": "electron-rebuild -w usb --useCache -s --debug", - "check:all": "yarn prettier:check && yarn lint && yarn compile && yarn stylelint && yarn lockfile:check && yarn manage:translations && yarn storybook:build", - "start": "gulp start", - "start:dev": "NODE_ENV=development gulp start", - "dev": "IS_WATCH_MODE=true gulp dev", + "check:all": "yarn prettier:check && yarn lint && yarn compile && yarn stylelint && yarn lockfile:check && yarn i18n:manage && yarn storybook:build", + "start": "yarn electron ./", + "start:dev": "nodemon --watch 'dist/main' --exec 'NODE_ENV=development yarn start'", "test": "NODE_ENV=test yarn build && yarn test:unit && yarn test:e2e:fail-fast", - "test:jest": "cross-env NODE_OPTIONS=--experimental-vm-modules jest", - "test:generate:report": "ts-node tests/reporter.ts", + "test:jest": "jest", + "test:generate:report": "yarn node-swc tests/reporter.ts", "test:unit": "yarn cucumber:run --require 'tests/**/unit/**/*.ts' --tags '@unit and not @skip and not @wip'", "test:unit:rerun": "yarn cucumber:rerun --require 'tests/**/unit/**/*.ts' --tags '@unit and not @skip and not @wip'", "test:unit:watch": "nodemon --watch source --watch tests --exec \"yarn test:unit --tags '@unit and @watch'\"", @@ -25,16 +31,17 @@ "test:e2e:watch": "gulp test:e2e:watch", "test:e2e:watch:once": "KEEP_APP_AFTER_TESTS=true yarn test:e2e --tags '@e2e and @watch'", "test:hardware-wallets": "ts-node hardware-wallet-tests/index.ts", - "cucumber": "cross-env NODE_ENV=test cucumber-js --require 'tests/setup-common.ts' --require-module @babel/register -f json:tests-report/report-data.json -f summary:tests-report/summary.log -f node_modules/cucumber-pretty:tests-report/results.log --format-options '{\"snippetInterface\": \"async-await\"}' -f node_modules/cucumber-pretty --format-options '{\"snippetInterface\": \"async-await\"}' -f rerun:tests/@rerun.txt", + "cucumber": "cross-env NODE_ENV=test cucumber-js --require-module '@swc-node/register' --require 'tests/setup-common.ts' -f json:tests-report/report-data.json -f summary:tests-report/summary.log -f node_modules/cucumber-pretty:tests-report/results.log --format-options '{\"snippetInterface\": \"async-await\"}' -f node_modules/cucumber-pretty --format-options '{\"snippetInterface\": \"async-await\"}' -f rerun:tests/@rerun.txt", "cucumber:run": "yarn cucumber tests", "cucumber:fail-fast": "yarn cucumber tests --fail-fast", "cucumber:rerun": "yarn cucumber tests-report/@rerun.txt", "cucumber:rerun:fail-fast": "yarn cucumber tests-report/@rerun.txt --fail-fast", + "node-swc": "node -r @swc-node/register", "debug": "gulp debug", - "package": "gulp build && cross-env NODE_ENV=production node -r @babel/register -r @babel/polyfill scripts/package.js", + "package": "cross-env NODE_ENV=production yarn build && cross-env NODE_ENV=production yarn node-swc scripts/package.js", "package:all": "yarn package --all", - "cleanup": "mop -v", - "lint": "eslint --format=node_modules/eslint-formatter-pretty source storybook utils --ext .ts,.tsx", + "lint": "eslint --format=node_modules/eslint-formatter-pretty source storybook utils --ext .ts,.tsx", + "lint:fix": "eslint --fix --fix-type problem --ext '.ts,.tsx' source storybook utils", "compile": "tsc --noEmit", "precompile": "yarn typedef:sass", "prettier": "./node_modules/.bin/prettier \"**/*.*\"", @@ -42,154 +49,151 @@ "prettier:format": "yarn prettier --write --loglevel warn", "stylelint": "./node_modules/.bin/stylelint \"**/*.scss\"", "stylelint:fix": "yarn stylelint --fix", - "manage:translations": "gulp purge:translations && gulp clear:cache && gulp build && ts-node ./translations/translation-runner.ts", + "i18n:extract": "formatjs extract 'source/**/*.{ts,tsx}' --ignore='**/*.d.ts' --format='translations/formatter.js' --extract-source-location --out-file='translations/messages.json'", + "i18n:check": "yarn node-swc ./translations/translation-runner.ts", + "i18n:manage": "yarn i18n:extract && yarn i18n:check", "storybook": "start-storybook -p 6006 -c storybook --ci /", "storybook:build": "build-storybook -c storybook -o dist/storybook", "storybook:build:chromatic": "build-storybook -c storybook", - "themes:check:createTheme": "gulp build:themes && ts-node -r esm ./dist/scripts/check.js", - "themes:update": "gulp build:themes && ts-node -r esm ./dist/scripts/update.js && yarn prettier --loglevel warn --write source/renderer/app/themes/daedalus/*.ts", - "themes:copy": "ts-node -r @babel/register -r @babel/polyfill source/renderer/app/themes/utils/copyTheme.ts && yarn prettier --loglevel warn --write source/renderer/app/themes/daedalus/*.ts", - "clear:cache": "gulp clear:cache", + "themes:check:createTheme": "gulp build:themes && yarn node-swc ./dist/scripts/check.js", + "themes:update": "gulp build:themes && yarn node-swc ./dist/scripts/update.js && yarn prettier --loglevel warn --write source/renderer/app/themes/daedalus/*.ts", + "themes:copy": "yarn node-swc source/renderer/app/themes/utils/copyTheme.ts && yarn prettier --loglevel warn --write source/renderer/app/themes/daedalus/*.ts", + "clear:cache": "rimraf ./node_modules/.cache", + "clear:translations": "rimraf ./translations/messages", "nix:mainnet": "./nix/yarn-nix-shell.sh mainnet mainnet", "nix:flight": "./nix/yarn-nix-shell.sh mainnet mainnet_flight", "nix:selfnode": "./nix/yarn-nix-shell.sh selfnode selfnode", "nix:testnet": "./nix/yarn-nix-shell.sh testnet testnet", - "byron:wallet:importer": "ts-node utils/api-importer/byron-wallet-importer.ts", - "shelley:wallet:importer": "ts-node utils/api-importer/shelley-wallet-importer.ts", - "mary:wallet:importer": "ts-node utils/api-importer/mary-wallet-importer.ts", - "itn:byron:wallet:importer": "ts-node utils/api-importer/itn-byron-wallet-importer.ts", - "itn:shelley:wallet:importer": "ts-node utils/api-importer/itn-shelley-wallet-importer.ts", - "yoroi:wallet:importer": "ts-node utils/api-importer/yoroi-wallet-importer.ts", - "create-news-verification-hashes": "ts-node utils/create-news-verification-hashes/index.ts", - "lockfile:check": "ts-node utils/lockfile-checker/index.ts --check", - "lockfile:fix": "ts-node utils/lockfile-checker/index.ts --fix", + "byron:wallet:importer": "yarn node-swc utils/api-importer/byron-wallet-importer.ts", + "shelley:wallet:importer": "yarn node-swc utils/api-importer/shelley-wallet-importer.ts", + "mary:wallet:importer": "yarn node-swc utils/api-importer/mary-wallet-importer.ts", + "itn:byron:wallet:importer": "yarn node-swc utils/api-importer/itn-byron-wallet-importer.ts", + "itn:shelley:wallet:importer": "yarn node-swc utils/api-importer/itn-shelley-wallet-importer.ts", + "yoroi:wallet:importer": "yarn node-swc utils/api-importer/yoroi-wallet-importer.ts", + "create-news-verification-hashes": "yarn node-swc utils/create-news-verification-hashes/index.ts", + "lockfile:check": "yarn node-swc utils/lockfile-checker/index.ts --check", + "lockfile:fix": "yarn node-swc utils/lockfile-checker/index.ts --fix", "postinstall": "./scripts/postinstall.sh", - "typedef:sass": "typed-scss-modules source/renderer/app", - "dev:windows": "cross-env DAEDALUS_INSTALL_DIRECTORY=\"C:\\Program Files\\Daedalus Testnet\" LAUNCHER_CONFIG=\"C:\\Program Files\\Daedalus Testnet\\launcher-config.yaml\" IS_WATCH_MODE=true gulp dev" + "typedef:sass": "typed-scss-modules source/renderer/app" }, "bin": { "electron": "./node_modules/.bin/electron" }, "devDependencies": { - "@babel/cli": "7.16.0", - "@babel/core": "7.16.0", - "@babel/eslint-parser": "7.16.3", - "@babel/helper-create-regexp-features-plugin": "7.16.0", - "@babel/plugin-proposal-class-properties": "7.2.1", - "@babel/plugin-proposal-decorators": "7.16.4", - "@babel/plugin-proposal-object-rest-spread": "7.2.0", - "@babel/plugin-transform-runtime": "7.2.0", - "@babel/plugin-transform-typescript": "^7.16.8", - "@babel/polyfill": "7.0.0", - "@babel/preset-env": "7.16.4", - "@babel/preset-react": "7.0.0", - "@babel/preset-typescript": "^7.16.7", - "@babel/register": "7.0.0", "@dump247/storybook-state": "1.6.1", "@faker-js/faker": "6.0.0", - "@storybook/addon-actions": "5.3.21", - "@storybook/addon-knobs": "5.3.21", - "@storybook/addon-links": "5.3.21", - "@storybook/addons": "5.3.22", - "@storybook/core": "5.3.21", - "@storybook/react": "5.3.21", + "@formatjs/cli": "4.8.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.3", + "@storybook/addon-actions": "6.4.22", + "@storybook/addon-knobs": "6.4.0", + "@storybook/addon-links": "6.4.22", + "@storybook/addons": "6.4.22", + "@storybook/builder-webpack5": "6.4.22", + "@storybook/core": "6.4.22", + "@storybook/manager-webpack5": "6.4.22", + "@storybook/react": "6.4.22", + "@swc-node/register": "1.4.2", + "@swc/core": "1.2.164", + "@swc/jest": "0.2.21", "@testing-library/jest-dom": "5.15.1", "@testing-library/react": "12.1.2", - "@types/aes-js": "^3.1.1", + "@types/aes-js": "3.1.1", "@types/jest": "27.4.0", - "@types/node": "^17.0.12", - "@types/qrcode.react": "^1.0.2", - "@types/react": "^17.0.38", - "@types/react-svg-inline": "^2.1.3", + "@types/node": "14.18.1", + "@types/qrcode.react": "1.0.2", + "@types/react": "16.9.56", + "@types/react-svg-inline": "2.1.3", "@types/react-table": "^7.7.9", "@types/trezor-connect": "8.1.18", - "@typescript-eslint/eslint-plugin": "^5.10.1", - "@typescript-eslint/parser": "^5.10.1", + "@typescript-eslint/eslint-plugin": "5.20.0", + "@typescript-eslint/parser": "5.20.0", + "@xarc/run": "1.1.1", "asar": "2.1.0", "autodll-webpack-plugin": "0.4.2", "axios": "0.24.0", - "babel-eslint": "^10.1.0", - "babel-loader": "8.0.4", - "babel-plugin-react-intl": "3.0.1", "bufferutil": "4.0.1", "cache-loader": "4.1.0", "chai": "4.3.4", "chalk": "4.1.0", - "concurrently": "5.3.0", + "concurrently": "7.1.0", "cross-env": "7.0.2", - "css-loader": "2.0.1", + "crypto-browserify": "3.12.0", + "css-loader": "6.2.0", "cucumber": "6.0.5", "cucumber-pretty": "6.0.0", "del": "6.0.0", - "electron-chromedriver": "16.0.0", "electron-connect": "0.6.3", "electron-devtools-installer": "3.2.0", "electron-mock-ipc": "0.3.12", "electron-packager": "15.4.0", "electron-rebuild": "3.2.7", - "eslint": "7.10.0", - "eslint-config-airbnb": "18.2.0", - "eslint-config-prettier": "6.12.0", - "eslint-formatter-pretty": "4.0.0", - "eslint-import-resolver-webpack": "0.13.1", - "eslint-plugin-import": "2.23.3", - "eslint-plugin-jest": "24.4.0", - "eslint-plugin-jsx-a11y": "6.3.1", - "eslint-plugin-promise": "4.2.1", - "eslint-plugin-react": "7.21.2", - "eslint-plugin-react-hooks": "4.1.2", + "electron-reloader": "1.2.1", + "eslint": "8.13.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-prettier": "8.5.0", + "eslint-formatter-pretty": "4.1.0", + "eslint-import-resolver-webpack": "0.13.2", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jest": "26.1.4", + "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-promise": "6.0.0", + "eslint-plugin-react": "7.29.4", + "eslint-plugin-react-hooks": "4.4.0", "esm": "3.2.25", - "fast-sass-loader": "2.0.1", - "file-loader": "4.2.0", "gulp-shell": "0.8.0", "hash.js": "1.1.7", - "html-loader": "0.5.5", + "html-loader": "2.1.2", + "html-webpack-plugin": "5.4.0", + "https-browserify": "1.0.0", "husky": "4.3.0", "identity-obj-proxy": "3.0.0", - "jest": "26.6.3", - "jest-css-modules-transform": "4.3.0", - "jest-environment-jsdom": "26.6.2", - "jest-svg-transformer": "1.0.0", - "markdown-loader": "5.1.0", - "mini-css-extract-plugin": "0.12.0", - "minimist": "1.2.5", + "jest": "27.5.1", + "jest-css-modules-transform": "4.4.2", + "jest-environment-jsdom": "27.5.1", + "markdown-loader": "7.0.0", + "mini-css-extract-plugin": "2.3.0", + "minimist": "1.2.6", "mobx-react-devtools": "6.1.1", "node-forge": "1.0.0", - "node-libs-browser": "2.2.1", - "nodemon": "2.0.4", + "nodemon": "2.0.15", "npmlog": "4.1.2", - "postcss": "8.2.13", - "postcss-modules": "1.5.0", + "path-browserify": "1.0.1", + "postcss": "8.3.6", + "postcss-modules": "4.2.2", "prettier": "2.1.2", "pretty-quick": "3.0.2", "prettysize": "2.0.0", - "prompts": "2.4.2", - "raw-loader": "1.0.0", "react-intl-translations-manager": "5.0.3", + "react-refresh": "0.11.0", "react-syntax-highlighter": "13.5.3", "regenerator-runtime": "0.13.7", - "sass": "1.32.13", - "sass-loader": "10.1.1", + "sass": "1.44.0", + "sass-loader": "12.1.0", "seedrandom": "3.0.5", "sinon": "9.2.2", "spawn-sync": "2.0.0", "spectron": "14.0.0", - "style-loader": "0.23.1", + "storybook-addon-swc": "1.1.7", + "stream-browserify": "3.0.0", + "stream-http": "3.2.0", + "style-loader": "3.2.1", "stylelint": "13.7.2", "stylelint-order": "4.1.0", "svg-inline-loader": "0.8.2", + "svg-jest": "1.0.1", + "swc-loader": "0.1.15", "thread-loader": "2.1.3", "timemachine": "0.3.2", "transform-loader": "0.2.4", - "ts-node": "^10.4.0", "typed-scss-modules": "5.0.0", - "typescript": "^4.5.5", - "url-loader": "2.0.1", + "typescript": "4.6.2", "utf-8-validate": "5.0.2", + "wait-on": "6.0.1", "webdriverio": "5.18.7", - "webpack": "4.44.2", - "webpack-cli": "3.3.12", - "webpack-stream": "6.1.0", + "webpack": "5.72.0", + "webpack-cli": "4.9.2", + "webpack-dev-server": "4.9.0", + "ws": "7.3.1", "yamljs": "0.3.0", "yarn-lockfile": "1.1.1" }, @@ -200,15 +204,17 @@ "aes-js": "3.1.2", "bech32": "2.0.0", "bignumber.js": "9.0.1", - "bip39": "3.0.2", + "bip39": "3.0.4", "blake2b": "2.1.3", "blakejs": "1.1.0", "borc": "2.1.2", "bs58": "4.0.1", + "buffer": "6.0.3", "cardano-crypto.js": "5.3.6-rc.6", "cardano-js": "0.4.8", "cardano-launcher": "0.20220119.0", "cbor": "5.0.2", + "cbor-web": "7.0.6", "check-disk-space": "3.2.0", "chroma-js": "2.1.0", "classnames": "2.2.6", @@ -232,11 +238,11 @@ "inquirer": "7.3.3", "json-bigint": "1.0.0", "lodash": "4.17.21", - "lodash-es": "4.17.15", + "lodash-es": "4.17.21", "mime-types": "2.1.27", - "mkdirp": "0.5.5", + "mkdirp": "1.0.4", "mobx": "5.15.7", - "mobx-react": "6.3.0", + "mobx-react": "6.3.1", "mobx-react-form": "2.0.8", "mobx-react-router": "4.1.0", "moment": "2.29.0", @@ -244,21 +250,22 @@ "node-downloader-helper": "1.0.18", "node-hid": "2.1.1", "omit-deep-lodash": "1.1.5", - "pbkdf2": "3.0.17", + "pbkdf2": "3.1.2", "pdfkit": "0.8.3", + "process": "0.11.10", "prop-types": "15.7.2", "qr-image": "3.2.0", "qrcode.react": "1.0.0", - "rc-slider": "9.5.1", - "react": "16.13.1", + "rc-slider": "9.7.2", + "react": "16.14.0", "react-animate-height": "2.0.23", "react-copy-to-clipboard": "5.0.2", "react-custom-scrollbars": "4.2.1", "react-datetime": "3.0.4", - "react-dom": "16.13.1", - "react-intl": "2.7.2", + "react-dom": "16.14.0", + "react-intl": "2.9.0", "react-lottie": "1.2.3", - "react-markdown": "4.3.1", + "react-markdown": "5.0.3", "react-polymorph": "1.0.4", "react-router": "5.2.0", "react-router-dom": "5.2.0", @@ -272,7 +279,7 @@ "rust-cardano-crypto": "0.2.0", "safe-buffer": "5.2.1", "sanitize-filename": "1.6.3", - "semver": "7.3.2", + "semver": "7.3.5", "shasum": "1.0.2", "source-map-support": "0.5.19", "spectron-fake-dialog": "0.0.1", @@ -280,11 +287,13 @@ "tcp-port-used": "1.0.1", "trezor-connect": "8.2.8-extended", "unorm": "1.6.0", + "url": "0.11.0", "usb-detection": "4.13.0", + "util": "0.12.4", "validator": "13.7.0" }, "devEngines": { - "node": ">=14.17.0", + "node": ">=v14.18.1", "yarn": "1.22.4" }, "husky": { @@ -294,20 +303,13 @@ } }, "resolutions": { - "**/**/marked": "0.8.2", - "**/**/minimatch": "3.0.4", - "**/**/unicode-properties": "1.1.0", "**/**/handlebars": "4.7.7", - "**/**/minimist": "1.2.5", - "**/**/acorn": "6.4.2", "**/**/elliptic": "6.5.4", "**/**/bl": "4.1.0", "**/**/lodash": "4.17.21", - "**/**/yargs-parser": "20.2.9", - "**/**/braces": "2.3.2", - "**/**/node-fetch": "2.6.1", "**/**/mobx-react-lite": "2.2.2", - "**/**/ini": "1.3.8", - "**/**/usb": "1.7.2" + "**/**/usb": "1.7.2", + "**/**/prismjs": "1.27.0", + "pbkdf2": "3.1.2" } } diff --git a/scripts/build-installer-unix.sh--nix-2.5 b/scripts/build-installer-unix.sh--nix-2.5 deleted file mode 100755 index 514c2e6fa0..0000000000 --- a/scripts/build-installer-unix.sh--nix-2.5 +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -set -e - -echo '~~~ Obtaining pkgs.nixUnstable' - -myDir=$(dirname "$0") -nixUnstable=$(nix-build "$myDir"/../default.nix -A pkgs.nixUnstable) - -PATH="$nixUnstable/bin:$PATH" - -export NIX_CONFIG=' - experimental-features = nix-command flakes -' - -nix --version - -exec "$myDir/build-installer-unix.sh" "$@" diff --git a/scripts/package.js b/scripts/package.js index 71f4e6aa2a..4a0922be5a 100755 --- a/scripts/package.js +++ b/scripts/package.js @@ -19,9 +19,10 @@ const argv = require('minimist')(process.argv.slice(2)); const appName = argv.name || argv.n || pkg.productName; const shouldUseAsar = argv.asar || argv.a || false; const shouldBuildAll = argv.all || false; +const sourceDir = argv.dir || './'; const DEFAULT_OPTS = { - dir: './', + dir: sourceDir, name: appName, asar: shouldUseAsar, ignore: [ diff --git a/scripts/with-nix-2.5.sh b/scripts/with-nix-2.5.sh new file mode 100755 index 0000000000..3d4b9228f9 --- /dev/null +++ b/scripts/with-nix-2.5.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -e + +if [ $# -eq 0 ] ; then + echo >&2 "fatal: usage: $0 [...]" + exit 1 +fi + +echo "~~~ Obtaining ‘pkgs.nixUnstable’" + +myDir=$(dirname "$0") +nixUnstable=$(nix-build "$myDir"/../default.nix -A pkgs.nixUnstable) + +PATH="$nixUnstable/bin:$PATH" + +# *Maybe* prevent segfaults on `aarch64-darwin` in `GC_*` code: +export GC_DONT_GC=1 # + +export NIX_CONFIG=' + experimental-features = nix-command flakes +' + +nix --version +echo + +echo "~~~ Running ‘$1’" + +exec "$@" diff --git a/shell.nix b/shell.nix index a21b7354cc..5ca4b7df42 100644 --- a/shell.nix +++ b/shell.nix @@ -57,9 +57,6 @@ let git python27 curl jq nodePackages.node-gyp nodePackages.node-pre-gyp gnumake - (if system == "aarch64-darwin" - then (localLib.iohkNix.getPkgs { system = "x86_64-darwin"; inherit config; }).chromedriver - else chromedriver) pkgconfig libusb ] ++ (localLib.optionals autoStartBackend [ @@ -145,7 +142,6 @@ let # TODO: is this needed for `detection.node`? ${pkgs.patchelf}/bin/patchelf --set-rpath ${pkgs.lib.makeLibraryPath [ pkgs.stdenv.cc.cc pkgs.udev ]} ${BUILDTYPE}/detection.node ln -svf ${daedalusPkgs.electron}/bin/electron ./node_modules/electron/dist/electron - ln -svf ${pkgs.chromedriver}/bin/chromedriver ./node_modules/electron-chromedriver/bin/chromedriver ''} echo 'jq < $LAUNCHER_CONFIG' echo debug the node by running debug-node diff --git a/source/common/ipc/lib/IpcChannel.ts b/source/common/ipc/lib/IpcChannel.ts index 63d0da8548..86140cdbb9 100644 --- a/source/common/ipc/lib/IpcChannel.ts +++ b/source/common/ipc/lib/IpcChannel.ts @@ -84,7 +84,8 @@ export class IpcChannel // Enforce the singleton pattern based on the channel name const existingChannel = IpcChannel._instances[channelName]; - if (existingChannel) return existingChannel; + if (existingChannel) + throw new Error(`Channel ${channelName} already exists`); IpcChannel._instances[channelName] = this; this._broadcastChannel = `${channelName}-broadcast`; this._requestChannel = `${channelName}-request`; diff --git a/source/common/types/environment.types.ts b/source/common/types/environment.types.ts index 8513e67d0f..c464aee363 100644 --- a/source/common/types/environment.types.ts +++ b/source/common/types/environment.types.ts @@ -2,7 +2,6 @@ export type Environment = { network: Network; apiVersion: string; nodeVersion: string; - mobxDevTools: boolean | string; current: string; isDev: boolean; isTest: boolean; @@ -14,7 +13,6 @@ export type Environment = { isShelleyQA: boolean; isSelfnode: boolean; isDevelopment: boolean; - isWatchMode: boolean; build: string; buildNumber: string; platform: string; diff --git a/source/main/cardano/utils.ts b/source/main/cardano/utils.ts index adb190b67e..1368590809 100644 --- a/source/main/cardano/utils.ts +++ b/source/main/cardano/utils.ts @@ -140,7 +140,7 @@ export const createSelfnodeConfig = async ( const configFileContent = await fs.readFile(configFilePath); const configFile = JSON.stringify({ - ...JSON.parse(configFileContent), + ...JSON.parse(configFileContent.toString()), GenesisFile: genesisPath, }); const configPath = path.join(stateDir, 'config.yaml'); diff --git a/source/main/environment.ts b/source/main/environment.ts index 45b9b8962b..a6c9a1f35c 100644 --- a/source/main/environment.ts +++ b/source/main/environment.ts @@ -1,6 +1,6 @@ import os from 'os'; import { get, includes, uniq } from 'lodash'; -import { version } from '../../package.json'; +import packageJson from '../../package.json'; import type { Environment } from '../common/types/environment.types'; import { DEVELOPMENT, OS_NAMES } from '../common/types/environment.types'; import { @@ -19,6 +19,8 @@ import { checkIsWindows, checkIsLinux, } from '../common/utils/environmentCheckers'; + +const { version } = packageJson; // Daedalus requires minimum 16 gigabytes of RAM, but some devices having 16 GB // actually have a slightly smaller RAM size (eg. 15.99 GB), therefore we used 15 GB threshold // @@ -42,7 +44,6 @@ const isAlonzoPurple = checkIsAlonzoPurple(NETWORK); const isShelleyQA = checkIsShelleyQA(NETWORK); const isSelfnode = checkIsSelfnode(NETWORK); const isDevelopment = checkIsDevelopment(NETWORK); -const isWatchMode = process.env.IS_WATCH_MODE; const keepLocalClusterRunning = process.env.KEEP_LOCAL_CLUSTER_RUNNING; const API_VERSION = process.env.API_VERSION || 'dev'; const NODE_VERSION = '1.34.1'; // TODO: pick up this value from process.env @@ -59,7 +60,6 @@ const isBlankScreenFixActive = includes(process.argv.slice(1), '--safe-mode'); const BUILD = process.env.BUILD_NUMBER || 'dev'; const BUILD_NUMBER = uniq([API_VERSION, BUILD]).join('.'); const INSTALLER_VERSION = uniq([API_VERSION, BUILD]).join('.'); -const MOBX_DEV_TOOLS = process.env.MOBX_DEV_TOOLS || false; const isMacOS = checkIsMacOS(PLATFORM); const isWindows = checkIsWindows(PLATFORM); const isLinux = checkIsLinux(PLATFORM); @@ -74,7 +74,6 @@ export const environment: Environment = Object.assign( network: NETWORK, apiVersion: API_VERSION, nodeVersion: NODE_VERSION, - mobxDevTools: MOBX_DEV_TOOLS, current: CURRENT_NODE_ENV, isDev, isTest, @@ -86,7 +85,6 @@ export const environment: Environment = Object.assign( isShelleyQA, isSelfnode, isDevelopment, - isWatchMode, build: BUILD, buildNumber: BUILD_NUMBER, platform: PLATFORM, diff --git a/source/main/index.ts b/source/main/index.ts index c3d1794ec7..f5763d0fea 100644 --- a/source/main/index.ts +++ b/source/main/index.ts @@ -2,7 +2,6 @@ import os from 'os'; import path from 'path'; import { app, dialog, BrowserWindow, screen, shell } from 'electron'; import type { Event } from 'electron'; -import { client } from 'electron-connect'; import EventEmitter from 'events'; import { WalletSettingsStateEnum } from '../common/ipc/api'; import { requestElectronStore } from './ipc/electronStoreConversation'; @@ -63,7 +62,6 @@ let cardanoNode: CardanoNode; const { isDev, isTest, - isWatchMode, isBlankScreenFixActive, isSelfnode, network, @@ -134,7 +132,7 @@ const handleWindowClose = async (event: Event | null | undefined) => { const onAppReady = async () => { setupLogging(); - logUsedVersion( + await logUsedVersion( environment.version, path.join(pubLogsFolderPath, 'Daedalus-versions.json') ); @@ -186,7 +184,7 @@ const onAppReady = async () => { // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message userLocale, // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'Electron.Screen' is not assignab... Remove this comment to see the full error message - restoreSavedWindowBounds(screen, requestElectronStore) + () => restoreSavedWindowBounds(screen, requestElectronStore) ); saveWindowBoundsOnSizeAndPositionChange(mainWindow, requestElectronStore); const currentRtsFlags = getRtsFlagsSettings(network) || []; @@ -251,11 +249,6 @@ const onAppReady = async () => { handleCheckBlockReplayProgress(mainWindow, launcherConfig.logsPrefix); await handleCheckDiskSpace(); - if (isWatchMode) { - // Connect to electron-connect server which restarts / reloads windows on file changes - client.create(mainWindow); - } - mainWindow.on('close', handleWindowClose); // Security feature: Prevent creation of new browser windows // https://github.com/electron/electron/blob/master/docs/tutorial/security.md#14-disable-or-limit-creation-of-new-windows diff --git a/source/main/ipc/hardwareWallets/ledger/deviceDetection/deviceDetection.ts b/source/main/ipc/hardwareWallets/ledger/deviceDetection/deviceDetection.ts index 09afd2ae4b..6485eb8233 100644 --- a/source/main/ipc/hardwareWallets/ledger/deviceDetection/deviceDetection.ts +++ b/source/main/ipc/hardwareWallets/ledger/deviceDetection/deviceDetection.ts @@ -56,8 +56,9 @@ export const waitForDevice = () => { return new Promise((resolve) => { const currentDevices = DeviceTracker.getDevices(); - for (const device of currentDevices) { - return resolve(DeviceTracker.getTrackedDeviceByPath(device.path)); + if (currentDevices.length > 0) { + resolve(DeviceTracker.getTrackedDeviceByPath(currentDevices[0].path)); + return; } const detectDevices = getDetector(); diff --git a/source/main/ipc/load-asset.ts b/source/main/ipc/load-asset.ts index 9880926c76..f0a30a5928 100644 --- a/source/main/ipc/load-asset.ts +++ b/source/main/ipc/load-asset.ts @@ -14,14 +14,14 @@ const loadAssetChannel: MainIpcChannel< export default () => { loadAssetChannel.onRequest((request: LoadAssetRendererRequest) => { const asset = path.resolve(__dirname, `../renderer/${request.fileName}`); - return new Promise((resolve, reject) => + return new Promise((resolve, reject) => { fs.readFile(asset, 'base64', (error, data) => { if (error) { reject(error); } else { resolve(data); } - }) - ); + }); + }); }); }; diff --git a/source/main/ipc/manageAppUpdateChannel.ts b/source/main/ipc/manageAppUpdateChannel.ts index f4f7b0c218..80e43d3915 100644 --- a/source/main/ipc/manageAppUpdateChannel.ts +++ b/source/main/ipc/manageAppUpdateChannel.ts @@ -32,7 +32,7 @@ export const handleManageAppUpdateRequests = (window: BrowserWindow) => { success: boolean | null | undefined, functionPrefix: string, messageText = '', - _data?: Record + _data: Record = {} ): Response => { let status = statuses.PROGRESS; if (success === true) status = statuses.SUCCESS; diff --git a/source/main/preload.ts b/source/main/preload.ts index 5d874b45a4..b33abaf456 100644 --- a/source/main/preload.ts +++ b/source/main/preload.ts @@ -28,18 +28,7 @@ process.once('loaded', () => { os: { platform: os.platform(), }, - ipcRenderer: { - // @ts-ignore ts-migrate(2556) FIXME: Expected 2 arguments, but got 0 or more. - on: (...args) => ipcRenderer.on(...args), - // @ts-ignore ts-migrate(2556) FIXME: Expected 2 arguments, but got 0 or more. - once: (...args) => ipcRenderer.once(...args), - // @ts-ignore ts-migrate(2557) FIXME: Expected at least 1 arguments, but got 0 or more. - send: (...args) => ipcRenderer.send(...args), - // @ts-ignore ts-migrate(2556) FIXME: Expected 2 arguments, but got 0 or more. - removeListener: (...args) => ipcRenderer.removeListener(...args), - // @ts-ignore ts-migrate(2556) FIXME: Expected 1 arguments, but got 0 or more. - removeAllListeners: (...args) => ipcRenderer.removeAllListeners(...args), - }, + ipcRenderer, electronLog: { debug: (...args) => electronLog.debug(...args), info: (...args) => electronLog.info(...args), @@ -58,10 +47,12 @@ process.once('loaded', () => { } // ESLint will warn about any use of eval(), even this one - // eslint-disable-next-line no-eval - global.eval = () => { - throw new Error('This app does not support window.eval().'); - }; + if (environment.isProduction) { + // eslint-disable-next-line no-eval + global.eval = () => { + throw new Error('This app does not support window.eval().'); + }; + } // Prevent context-menu for elements which don't support copy&paste options if (_process.env.NODE_ENV === 'production') { diff --git a/source/main/webpack.config.js b/source/main/webpack.config.js index 7cf1be8769..f231411dcb 100644 --- a/source/main/webpack.config.js +++ b/source/main/webpack.config.js @@ -1,42 +1,65 @@ const webpack = require('webpack'); +const path = require('path'); +const { spawn } = require('child_process'); -const isCi = process.env.CI && process.env.CI !== ''; +class ManageElectronProcessPlugin { + isRunning = false; + _process = null; + _shouldRestart = false; + start() { + this._process = spawn('yarn', ['electron', '.'], { + stdio: 'inherit', + shell: true, + }); + this.isRunning = true; + // Handle next electron shutdown + this._process.once('close', () => this.onProcessClose()); + } + restart() { + this._shouldRestart = true; + this._process.kill(); + } + onProcessClose() { + this._process = null; + this.isRunning = false; + if (this._shouldRestart) { + this.start(); + this._shouldRestart = false; + } + } + apply(compiler) { + if (compiler.options.watch) { + compiler.hooks.done.tap('RestartElectronPlugin', () => { + if (this.isRunning) { + this.restart(); + } else { + this.start(); + } + }); + } + } +} + +const isDevelopment = process.env.NODE_ENV === 'development'; module.exports = { - mode: 'development', - devtool: 'cheap-module-source-map', entry: { index: './source/main/index.ts', preload: './source/main/preload.ts', }, - optimization: { - // https://github.com/webpack/webpack/issues/7470 - nodeEnv: false, - }, output: { - filename: '[name].js', + path: path.join(process.cwd(), 'dist/main'), + assetModuleFilename: 'assets/[hash][ext][query]', }, - /** - * Set target to Electron specific node.js env. - * https://github.com/chentsulin/webpack-target-electron-renderer#how-this-module-works - */ + mode: isDevelopment ? 'development' : 'production', target: 'electron-main', - cache: true, - /** - * Disables webpack processing of __dirname and __filename. - * If you run the bundle in node.js it falls back to these values of node.js. - * https://github.com/webpack/webpack/issues/2010 - */ - node: { - __dirname: false, - __filename: false, - }, - externals: { - 'js-chain-libs-node': 'commonjs2 js-chain-libs-node', - 'trezor-connect': 'commonjs2 trezor-connect', + devtool: isDevelopment ? 'eval-source-map' : 'source-map', + optimization: { + minimize: false, }, resolve: { - extensions: ['.tsx', '.ts', '.js', '.json'], + symlinks: true, // for native libraries + extensions: ['.ts', '.tsx', '.js', '.json'], }, module: { rules: [ @@ -44,63 +67,39 @@ module.exports = { test: /\.tsx?$/, include: /source/, exclude: /source\/renderer/, - use: (isCi ? [] : ['cache-loader']).concat([ - { - loader: 'babel-loader', - options: { - presets: [ - '@babel/preset-env', - '@babel/preset-react', - '@babel/preset-typescript', - ], + loader: 'swc-loader', + options: { + jsc: { + parser: { + syntax: 'typescript', }, + target: 'es2019', + loose: false, }, - ]), - }, - { - test: /(pdfkit|linebreak|fontkit|unicode|brotli|png-js).*\.js$/, - use: { - loader: 'transform-loader?brfs', }, }, { test: /\.(woff2?|eot|ttf|otf|png|jpe?g|gif|svg)(\?.*)?$/, exclude: /\.inline\.svg$/, - use: { - loader: 'file-loader', - options: { - name: '[name]-[hash].[ext]', - outputPath: 'assets/', - }, - }, - }, - { - test: /\.mjs$/, - include: /node_modules/, - type: 'javascript/auto', + type: 'asset/resource', }, ], }, + externalsPresets: { node: true }, // in order to ignore built-in modules like path, fs, etc. + externals: [ + { + 'js-chain-libs-node': 'commonjs2 js-chain-libs-node', + usb: 'commonjs2 usb', + 'node-hid': 'commonjs2 node-hid', + 'trezor-connect': 'commonjs2 trezor-connect', + pdfkit: 'commonjs2 pdfkit', + 'usb-detection': 'commonjs2 usb-detection', + }, + ], plugins: [ new webpack.DefinePlugin( Object.assign( - { - 'process.env.API_VERSION': JSON.stringify( - process.env.API_VERSION || 'dev' - ), - 'process.env.NETWORK': JSON.stringify( - process.env.NETWORK || 'development' - ), - 'process.env.MOCK_TOKEN_METADATA_SERVER_PORT': - process.env.MOCK_TOKEN_METADATA_SERVER_PORT || 0, - 'process.env.MOBX_DEV_TOOLS': process.env.MOBX_DEV_TOOLS || 0, - 'process.env.BUILD_NUMBER': JSON.stringify( - process.env.BUILD_NUMBER || 'dev' - ), - 'process.env.IS_WATCH_MODE': process.env.IS_WATCH_MODE === 'true', - 'process.env.KEEP_LOCAL_CLUSTER_RUNNING': - process.env.KEEP_LOCAL_CLUSTER_RUNNING === 'true', - }, + {}, process.env.NODE_ENV === 'production' ? { // Only bake in NODE_ENV value for production builds. @@ -109,5 +108,13 @@ module.exports = { : {} ) ), + new webpack.EnvironmentPlugin({ + API_VERSION: 'dev', + NETWORK: 'development', + BUILD_NUMBER: 'dev', + IS_WATCH_MODE: 'false', + KEEP_LOCAL_CLUSTER_RUNNING: 'false', + }), + new ManageElectronProcessPlugin(), ].filter(Boolean), }; diff --git a/source/main/windows/main.ts b/source/main/windows/main.ts index 1e7fe70d88..4a19b8069b 100644 --- a/source/main/windows/main.ts +++ b/source/main/windows/main.ts @@ -38,12 +38,15 @@ type WindowOptionsType = { }; icon?: string; }; -export const createMainWindow = (locale: string, windowBounds?: Rectangle) => { +export const createMainWindow = ( + locale: string, + getSavedWindowBounds: () => Rectangle +) => { const windowOptions: WindowOptionsType = { show: false, width: 1150, height: 870, - ...windowBounds, + ...getSavedWindowBounds(), webPreferences: { nodeIntegration: isTest, webviewTag: false, @@ -77,7 +80,11 @@ export const createMainWindow = (locale: string, windowBounds?: Rectangle) => { if (event.sender !== window.webContents) return; window.close(); }); - window.loadURL(`file://${__dirname}/../renderer/index.html`); + if (isDev) { + window.loadURL(`http://localhost:8080`); + } else { + window.loadURL(`file://${__dirname}/../renderer/index.html`); + } window.on('page-title-updated', (event) => { event.preventDefault(); }); @@ -144,13 +151,13 @@ export const createMainWindow = (locale: string, windowBounds?: Rectangle) => { * window constructor above was buggy (height was not correctly applied) */ window.on('ready-to-show', () => { - if (windowBounds) { - window.setBounds(windowBounds); + const savedWindowBounds = getSavedWindowBounds(); + if (savedWindowBounds) { + window.setBounds(savedWindowBounds); } }); window.on('closed', (event) => { event.preventDefault(); - if (ledgerStatus.listening && !!ledgerStatus.Listener) { ledgerStatus.Listener.unsubscribe(); setTimeout(() => app.quit(), 5000); diff --git a/source/renderer/app/App.tsx b/source/renderer/app/App.tsx index d89ec81216..04b87ad789 100755 --- a/source/renderer/app/App.tsx +++ b/source/renderer/app/App.tsx @@ -1,9 +1,9 @@ import React, { Component, Fragment } from 'react'; import { Provider, observer } from 'mobx-react'; +import { History } from 'history'; import { ThemeProvider } from 'react-polymorph/lib/components/ThemeProvider'; import { SimpleSkins } from 'react-polymorph/lib/skins/simple'; import { SimpleDefaults } from 'react-polymorph/lib/themes/simple'; -import DevTools from 'mobx-react-devtools'; import { Router } from 'react-router-dom'; import { IntlProvider } from 'react-intl'; import { Routes } from './Routes'; @@ -16,8 +16,8 @@ import DaedalusDiagnosticsDialog from './containers/status/DaedalusDiagnosticsDi import NotificationsContainer from './containers/notifications/NotificationsContainer'; import NewsOverlayContainer from './containers/news/NewsOverlayContainer'; import { DIALOGS } from '../../common/ipc/constants'; -import type { StoresMap } from './stores/index'; -import type { ActionsMap } from './actions/index'; +import type { StoresMap } from './stores'; +import type { ActionsMap } from './actions'; import NewsFeedContainer from './containers/news/NewsFeedContainer'; import ToggleRTSFlagsDialogContainer from './containers/knownIssues/ToggleRTSFlagsDialogContainer'; import RTSFlagsRecommendationOverlayContainer from './containers/knownIssues/RTSFlagsRecommendationOverlayContainer'; @@ -27,7 +27,7 @@ import { MenuUpdater } from './containers/MenuUpdater'; class App extends Component<{ stores: StoresMap; actions: ActionsMap; - history: Record; + history: History; }> { componentDidMount() { // Loads app's global environment variables into AppStore via ipc @@ -41,7 +41,6 @@ class App extends Component<{ const { isActiveDialog, isSetupPage } = app; const { isNodeStopping, isNodeStopped } = networkStatus; const locale = stores.profile.currentLocale; - const mobxDevTools = global.environment.mobxDevTools ? : null; const { currentTheme } = stores.profile; const themeVars = require(`./themes/daedalus/${currentTheme}.ts`).default; @@ -62,7 +61,7 @@ class App extends Component<{ {/* @ts-ignore ts-migrate(2769) FIXME: No overload matches this call. */} - + - {mobxDevTools} {[ // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'string' is not assignable to par... Remove this comment to see the full error message isActiveDialog(ABOUT) && , diff --git a/source/renderer/app/WindowSizeManager.tsx b/source/renderer/app/WindowSizeManager.tsx index 610fd44021..24f93d1ddf 100644 --- a/source/renderer/app/WindowSizeManager.tsx +++ b/source/renderer/app/WindowSizeManager.tsx @@ -1,29 +1,20 @@ -/* eslint-disable react/prop-types */ -import React, { Component, Fragment } from 'react'; +import { useEffect } from 'react'; -export default class WindowSizeManager extends Component { - componentDidMount() { - // @ts-ignore ts-migrate(2339) FIXME: Property 'minScreenHeight' does not exist on type ... Remove this comment to see the full error message - this.updateMinScreenHeight(this.props.minScreenHeight); - } - - componentDidUpdate(prevProps) { - // @ts-ignore ts-migrate(2339) FIXME: Property 'minScreenHeight' does not exist on type ... Remove this comment to see the full error message - if (this.props.minScreenHeight !== prevProps.minScreenHeight) { - // @ts-ignore ts-migrate(2339) FIXME: Property 'minScreenHeight' does not exist on type ... Remove this comment to see the full error message - this.updateMinScreenHeight(this.props.minScreenHeight); - } - } +type Props = { + minScreenHeight: number; + children: Node; +}; - updateMinScreenHeight(minScreenHeight) { - const rootWindowEl = document.getElementById('root'); - - if (rootWindowEl) { - rootWindowEl.style.minHeight = minScreenHeight; - } +function updateMinScreenHeight(minScreenHeight: number) { + const rootWindowEl = document.getElementById('root'); + if (rootWindowEl) { + rootWindowEl.style.minHeight = minScreenHeight.toString(); } +} - render() { - return {this.props.children}; - } +export default function WindowSizeManager(props: Props) { + useEffect(() => { + updateMinScreenHeight(props.minScreenHeight); + }, [props.minScreenHeight]); + return null; } diff --git a/source/renderer/app/api/assets/types.ts b/source/renderer/app/api/assets/types.ts index 47a2d43f16..307062a4ad 100644 --- a/source/renderer/app/api/assets/types.ts +++ b/source/renderer/app/api/assets/types.ts @@ -16,16 +16,16 @@ export type ApiAsset = { policy_id: string; asset_name: string; fingerprint: string; - metadata?: AssetMetadata | null | undefined; + metadata?: AssetMetadata | null; }; export type ApiAssets = Array; export type Asset = { assetName: string; - decimals: number | null | undefined; + decimals?: number | null; fingerprint: string; - metadata?: AssetMetadata | null | undefined; + metadata?: AssetMetadata | null; policyId: string; - recommendedDecimals: number | null | undefined; + recommendedDecimals?: number | null; uniqueId: string; }; @@ -73,8 +73,7 @@ export type AssetMetadata = { name: string; description: string; ticker?: string; - decimals?: number; - // [0 .. 255] + decimals?: number; // [0 .. 255] url?: string; logo?: string; }; diff --git a/source/renderer/app/api/common/errors.ts b/source/renderer/app/api/common/errors.ts index 8495b214e0..2985fd1f1a 100644 --- a/source/renderer/app/api/common/errors.ts +++ b/source/renderer/app/api/common/errors.ts @@ -15,7 +15,7 @@ export const messages = defineMessages({ }); export class GenericApiError extends LocalizableError { // @ts-ignore ts-migrate(1015) FIXME: Parameter cannot have question mark and initialize... Remove this comment to see the full error message - constructor(values?: Record = {}) { + constructor(values: Record = {}) { super({ id: messages.genericApiError.id, defaultMessage: messages.genericApiError.defaultMessage, diff --git a/source/renderer/app/api/utils/apiHelpers.ts b/source/renderer/app/api/utils/apiHelpers.ts index 08ed2ec5a1..96577584ec 100644 --- a/source/renderer/app/api/utils/apiHelpers.ts +++ b/source/renderer/app/api/utils/apiHelpers.ts @@ -21,7 +21,9 @@ export const testSync = (apiMethod: (...args: Array) => any) => { }; // helper code for deferring API call execution export const wait = (ms: number): Promise => - new Promise((resolve) => setTimeout(resolve, ms)); + new Promise((resolve) => { + setTimeout(resolve, ms); + }); export const doesWalletRequireAdaToRemainToSupportTokens = ( error: ErrorType, hasAssetsRemainingAfterTransaction?: boolean diff --git a/source/renderer/app/assets/images/spinner-dark-big.inline.svg b/source/renderer/app/assets/images/spinner-dark-big.inline.svg index 5078ddf3e1..ef1c59caef 100644 --- a/source/renderer/app/assets/images/spinner-dark-big.inline.svg +++ b/source/renderer/app/assets/images/spinner-dark-big.inline.svg @@ -1,3 +1,3 @@ - + diff --git a/source/renderer/app/assets/images/spinner-dark.inline.svg b/source/renderer/app/assets/images/spinner-dark.inline.svg index cb3402252d..9ebf03b539 100644 --- a/source/renderer/app/assets/images/spinner-dark.inline.svg +++ b/source/renderer/app/assets/images/spinner-dark.inline.svg @@ -1,5 +1,5 @@ - + diff --git a/source/renderer/app/components/assets/Asset.tsx b/source/renderer/app/components/assets/Asset.tsx index 4822fc4097..97e7472012 100644 --- a/source/renderer/app/components/assets/Asset.tsx +++ b/source/renderer/app/components/assets/Asset.tsx @@ -94,8 +94,6 @@ class Asset extends Component { intl: intlShape.isRequired, }; // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'TimeoutID'. - copyNotificationTimeout: TimeoutID; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'TimeoutID'. displayDelayTimeout: TimeoutID; state = { isPillPopOverVisible: false, diff --git a/source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx b/source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx index 385d375f40..7ccb68b798 100644 --- a/source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx +++ b/source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx @@ -321,38 +321,32 @@ class HardwareWalletStatus extends Component { } return ( - <> -
-
-
- {hasInstructionsLink && instructionsLink ? ( - - ) : ( - label - )} -
- {secondaryMessage && ( -
- {intl.formatMessage(secondaryMessage)} -
+
+
+
+ {hasInstructionsLink && instructionsLink ? ( + + ) : ( + label )}
- {isLoading && ( - - )} - {isReady && ( - - )} - {isError && ( - + {secondaryMessage && ( +
+ {intl.formatMessage(secondaryMessage)} +
)}
- + {isLoading && ( + + )} + {isReady && } + {isError && } +
); } } diff --git a/source/renderer/app/components/layout/VerticalFlexContainer.tsx b/source/renderer/app/components/layout/VerticalFlexContainer.tsx index a5d9fb9330..bf307640f8 100644 --- a/source/renderer/app/components/layout/VerticalFlexContainer.tsx +++ b/source/renderer/app/components/layout/VerticalFlexContainer.tsx @@ -7,8 +7,8 @@ type Props = { children?: Node | null | undefined; }; -const VerticalFlexContainer = ({ children }: Props) => ( -
{children}
-); +function VerticalFlexContainer({ children }: Props) { + return
{children}
; +} export default memo(VerticalFlexContainer); diff --git a/source/renderer/app/components/loading/syncing-connecting/LogosDisplay.scss b/source/renderer/app/components/loading/syncing-connecting/LogosDisplay.scss index 7961b95c08..d66f9fde29 100644 --- a/source/renderer/app/components/loading/syncing-connecting/LogosDisplay.scss +++ b/source/renderer/app/components/loading/syncing-connecting/LogosDisplay.scss @@ -1,3 +1,5 @@ +@use 'sass:math'; + .component { align-items: center; display: flex; @@ -22,7 +24,7 @@ $cardanoLogoWidth: 86px; $adaLogoWidth: 43px; .adaLogo > svg { - margin: 3px ($cardanoLogoWidth - $adaLogoWidth) / 2 0; // Visually align in the middle + Needs to be the same dimension as the apiLogo + margin: 3px math.div(($cardanoLogoWidth - $adaLogoWidth), 2) 0; // Visually align in the middle + Needs to be the same dimension as the apiLogo width: $adaLogoWidth; } diff --git a/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.tsx b/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.tsx index fe839bf5c7..b10a3c67f0 100644 --- a/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.tsx +++ b/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.tsx @@ -1,5 +1,5 @@ import cx from 'classnames'; -import React, { FC } from 'react'; +import React from 'react'; import { intlShape } from 'react-intl'; import { PopOver } from 'react-polymorph/lib/components/PopOver'; import SVGInline from 'react-svg-inline'; @@ -40,51 +40,53 @@ const makePercentageCellStyles = (loaded: boolean) => [styles.faded]: loaded, }); -const SyncingProgress: FC = (props, { intl }: Context) => ( -
-
- {blockSyncTypesOrdered.map((type) => ( -
- -
- ))} +function SyncingProgress(props: Props, { intl }: Context) { + return ( +
+
+ {blockSyncTypesOrdered.map((type) => ( +
+ +
+ ))} +
+
+ {blockSyncTypesOrdered.map((type) => ( +
+ + {intl.formatMessage(getProgressNameByBlockSyncType(type))} + + + + + + +
+ ))} +
+
+ {blockSyncTypesOrdered.map((type) => ( +
+ {props[type]}% +
+ ))} +
-
- {blockSyncTypesOrdered.map((type) => ( -
- - {intl.formatMessage(getProgressNameByBlockSyncType(type))} - - - - - - -
- ))} -
-
- {blockSyncTypesOrdered.map((type) => ( -
- {props[type]}% -
- ))} -
-
-); + ); +} SyncingProgress.contextTypes = { intl: intlShape.isRequired, diff --git a/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/index.ts b/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/index.ts index 9b9d94a83e..0bddb2d513 100644 --- a/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/index.ts +++ b/source/renderer/app/components/loading/syncing-connecting/SyncingProgress/index.ts @@ -1 +1,3 @@ -export { default } from './SyncingProgress'; +import syncProgress from './SyncingProgress'; + +export default syncProgress; diff --git a/source/renderer/app/components/navigation/NavDropdown.tsx b/source/renderer/app/components/navigation/NavDropdown.tsx index 2db0506865..8918805cce 100644 --- a/source/renderer/app/components/navigation/NavDropdown.tsx +++ b/source/renderer/app/components/navigation/NavDropdown.tsx @@ -4,6 +4,7 @@ import classnames from 'classnames'; import { Dropdown } from 'react-polymorph/lib/components/Dropdown'; import NavButton from './NavButton'; import styles from './NavDropdown.scss'; +import { NavDropdownProps } from './Navigation'; type Props = { label: string; @@ -56,7 +57,7 @@ class NavDropdown extends Component { onItemSelected={({ value }) => { onChange(value); }} - optionRenderer={(o) => ( + optionRenderer={(o: NavDropdownProps) => (
{o.label}
diff --git a/source/renderer/app/components/navigation/Navigation.scss b/source/renderer/app/components/navigation/Navigation.scss index 34c6ed2995..742b6d3104 100755 --- a/source/renderer/app/components/navigation/Navigation.scss +++ b/source/renderer/app/components/navigation/Navigation.scss @@ -1,3 +1,5 @@ +@use 'sass:math'; + .component { background-color: var(--theme-nav-item-background-color); display: flex; @@ -9,5 +11,5 @@ .navItem { height: 100%; - width: percentage(1/5); // Update when adding new nav items! + width: percentage(math.div(1, 5)); // Update when adding new nav items! } diff --git a/source/renderer/app/components/navigation/Navigation.tsx b/source/renderer/app/components/navigation/Navigation.tsx index ec78693b83..b63b4bc9ed 100755 --- a/source/renderer/app/components/navigation/Navigation.tsx +++ b/source/renderer/app/components/navigation/Navigation.tsx @@ -4,20 +4,21 @@ import styles from './Navigation.scss'; import NavButton from './NavButton'; import NavDropdown from './NavDropdown'; -export type NavButtonProps = { - type?: 'button'; +type NavItemProps = { id: string; label: string; icon?: string; hasNotification?: boolean; }; -export type NavDropdownProps = NavButtonProps & { +export type NavButtonProps = NavItemProps & { + type?: 'button'; +}; +export type NavDropdownProps = NavItemProps & { type: 'dropdown'; options: Array<{ value: number | string; label: string; }>; - hasNotification?: boolean; }; type Props = { activeItem: string; diff --git a/source/renderer/app/components/news/NewsItem.tsx b/source/renderer/app/components/news/NewsItem.tsx index e70faa6f10..716444cece 100644 --- a/source/renderer/app/components/news/NewsItem.tsx +++ b/source/renderer/app/components/news/NewsItem.tsx @@ -149,6 +149,7 @@ class NewsItem extends Component { 'inlineCode', 'code', 'html', + // @ts-ignore 'virtualHtml', ]} /> diff --git a/source/renderer/app/components/settings/categories/SecuritySettings.tsx b/source/renderer/app/components/settings/categories/SecuritySettings.tsx index 8e097268c4..74a8773dde 100644 --- a/source/renderer/app/components/settings/categories/SecuritySettings.tsx +++ b/source/renderer/app/components/settings/categories/SecuritySettings.tsx @@ -13,13 +13,13 @@ type Props = { onOpenDiscreetModeToggle: () => void; }; -const SecuritySettings = ({ +function SecuritySettings({ intl, discreetMode, openDiscreetMode, onDiscreetModeToggle, onOpenDiscreetModeToggle, -}: Props) => { +}: Props) { return (
@@ -52,6 +52,6 @@ const SecuritySettings = ({
); -}; +} export default injectIntl(SecuritySettings); diff --git a/source/renderer/app/components/settings/categories/StakePoolsSettings.tsx b/source/renderer/app/components/settings/categories/StakePoolsSettings.tsx index e766293857..4a34e9aba0 100644 --- a/source/renderer/app/components/settings/categories/StakePoolsSettings.tsx +++ b/source/renderer/app/components/settings/categories/StakePoolsSettings.tsx @@ -270,7 +270,7 @@ class StakePoolsSettings extends Component { options={smashSelectOptions} onChange={this.handleOnSelectSmashServerType} optionHeight={50} - selectionRenderer={({ label }) => ( + selectionRenderer={({ label }: { label: string }) => (
{label}
)} /> diff --git a/source/renderer/app/components/settings/menu/SettingsMenu.tsx b/source/renderer/app/components/settings/menu/SettingsMenu.tsx index 02ccc21038..57a2736ae1 100644 --- a/source/renderer/app/components/settings/menu/SettingsMenu.tsx +++ b/source/renderer/app/components/settings/menu/SettingsMenu.tsx @@ -14,7 +14,7 @@ type Props = { onItemClick: (...args: Array) => any; }; -const SettingsMenu = ({ intl, onItemClick, isActiveItem, isFlight }: Props) => { +function SettingsMenu({ intl, onItemClick, isActiveItem, isFlight }: Props) { return (
@@ -65,6 +65,6 @@ const SettingsMenu = ({ intl, onItemClick, isActiveItem, isFlight }: Props) => {
); -}; +} export default injectIntl(observer(SettingsMenu)); diff --git a/source/renderer/app/components/sidebar/Sidebar.tsx b/source/renderer/app/components/sidebar/Sidebar.tsx index 7f57de7fbf..179e78569f 100644 --- a/source/renderer/app/components/sidebar/Sidebar.tsx +++ b/source/renderer/app/components/sidebar/Sidebar.tsx @@ -29,7 +29,7 @@ const getCategoryContent = (categoryName: string, network) => ) : null; -const Sidebar = ({ +function Sidebar({ menus, categories, activeSidebarCategory, @@ -39,7 +39,7 @@ const Sidebar = ({ isShelleyActivated, onActivateCategory, network, -}: Props) => { +}: Props) { const hasSubMenu = shouldShowWalletSubMenu({ activeSidebarCategory, walletRoute: CATEGORIES_BY_NAME.WALLETS.route, @@ -85,6 +85,6 @@ const Sidebar = ({ )}
); -}; +} export default observer(Sidebar); diff --git a/source/renderer/app/components/sidebar/wallets/WalletSearch.tsx b/source/renderer/app/components/sidebar/wallets/WalletSearch.tsx index 2d3628cc49..6a486b3b64 100644 --- a/source/renderer/app/components/sidebar/wallets/WalletSearch.tsx +++ b/source/renderer/app/components/sidebar/wallets/WalletSearch.tsx @@ -23,11 +23,11 @@ type Props = { searchValue?: string; }; -const WalletSearchComponent = ({ +function WalletSearchComponent({ searchValue = '', onSearch = noop, intl, -}: Props) => { +}: Props) { const hasValue = !!searchValue.length; return ( ); -}; +} export const WalletSearch = injectIntl(observer(WalletSearchComponent)); diff --git a/source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.tsx b/source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.tsx index b3fff1a5e0..14b47e723f 100644 --- a/source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.tsx +++ b/source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.tsx @@ -247,22 +247,20 @@ class DelegationStepsConfirmationDialog extends Component { {transactionFee && transactionFee.deposits.isZero && !transactionFee.deposits.isZero() && ( - <> -
-

- {intl.formatMessage(messages.depositLabel)} -

-

- - {formattedWalletAmount(transactionFee.deposits, false)} - - - {` `} - {intl.formatMessage(globalMessages.adaUnit)} - -

-
- +
+

+ {intl.formatMessage(messages.depositLabel)} +

+

+ + {formattedWalletAmount(transactionFee.deposits, false)} + + + {` `} + {intl.formatMessage(globalMessages.adaUnit)} + +

+
)}
diff --git a/source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx b/source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx index 71f1fa5a9c..2eb88a8f81 100644 --- a/source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx +++ b/source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx @@ -25,7 +25,7 @@ type Props = { centerText?: boolean; }; -const OversaturationTextComponent = (props: Props) => { +function OversaturationTextComponent(props: Props) { const { oversaturationPercentage, centerText } = props; const oversaturationClasses = classnames([ styles.component, @@ -41,6 +41,6 @@ const OversaturationTextComponent = (props: Props) => { />

); -}; +} export const OversaturationText = injectIntl(OversaturationTextComponent); diff --git a/source/renderer/app/components/staking/epochs/StakingEpochs.tsx b/source/renderer/app/components/staking/epochs/StakingEpochs.tsx index b0157cb90a..08d224ad12 100644 --- a/source/renderer/app/components/staking/epochs/StakingEpochs.tsx +++ b/source/renderer/app/components/staking/epochs/StakingEpochs.tsx @@ -23,6 +23,10 @@ const messages = defineMessages({ description: 'Headline for the previous epoch.', }, }); +type SelectOption = { + label: string; + value: unknown; +}; type Props = { currentEpochName: string; currentEpochData: EpochData; @@ -109,7 +113,7 @@ class StakingEpochs extends Component { value={selectedEpoch} onChange={this.onSelectedEpochChange} skin={SelectSkin} - selectionRenderer={(option) => ( + selectionRenderer={(option: SelectOption) => (
{option.label}
)} optionHeight={50} diff --git a/source/renderer/app/components/staking/layouts/StakingWithNavigation.tsx b/source/renderer/app/components/staking/layouts/StakingWithNavigation.tsx index 9f0973ad92..1048bc290b 100644 --- a/source/renderer/app/components/staking/layouts/StakingWithNavigation.tsx +++ b/source/renderer/app/components/staking/layouts/StakingWithNavigation.tsx @@ -20,7 +20,7 @@ export const StakingPageScrollContext = React.createContext({ @observer class StakingWithNavigation extends Component { - stakingPageRef = createRef(); + stakingPageScrollContext = { scrollElementRef: createRef() }; render() { const { @@ -32,11 +32,7 @@ class StakingWithNavigation extends Component { } = this.props; const componentStyles = classnames([styles.component, styles[activeItem]]); return ( - +
{ showInfoTab={showInfoTab} />
-
+
{children}
diff --git a/source/renderer/app/components/staking/stake-pools/StakePoolsTableHeader.tsx b/source/renderer/app/components/staking/stake-pools/StakePoolsTableHeader.tsx index a08ea9ef71..39c5d48f27 100644 --- a/source/renderer/app/components/staking/stake-pools/StakePoolsTableHeader.tsx +++ b/source/renderer/app/components/staking/stake-pools/StakePoolsTableHeader.tsx @@ -20,14 +20,14 @@ type Props = { onTableHeaderMouseLeave: () => void; }; -export const Component = ({ +export function Component({ stakePoolsSortBy, stakePoolsOrder, headerGroups, onHandleSort, onTableHeaderMouseEnter, onTableHeaderMouseLeave, -}: Props) => { +}: Props) { const { setTargetRef, isInViewport } = useInViewPort(); return ( @@ -63,6 +63,6 @@ export const Component = ({
); -}; +} export const StakePoolsTableHeader = observer(Component); diff --git a/source/renderer/app/components/staking/stake-pools/hooks/index.ts b/source/renderer/app/components/staking/stake-pools/hooks/index.ts index daaddce0bd..e839f07946 100644 --- a/source/renderer/app/components/staking/stake-pools/hooks/index.ts +++ b/source/renderer/app/components/staking/stake-pools/hooks/index.ts @@ -4,4 +4,4 @@ export { useSortedStakePoolList, StakePoolsOrder, } from './useSortedStakePoolList'; -export { StakePoolSortableProps } from './types'; +export type { StakePoolSortableProps } from './types'; diff --git a/source/renderer/app/components/voting/VotingUnavailable.tsx b/source/renderer/app/components/voting/VotingUnavailable.tsx index d2e4d72ab4..4cf089c1e6 100644 --- a/source/renderer/app/components/voting/VotingUnavailable.tsx +++ b/source/renderer/app/components/voting/VotingUnavailable.tsx @@ -10,7 +10,7 @@ type Props = { syncPercentage: number; }; -const VotingUnavailable = ({ syncPercentage }: Props) => { +function VotingUnavailable({ syncPercentage }: Props) { return (
@@ -24,6 +24,6 @@ const VotingUnavailable = ({ syncPercentage }: Props) => {
); -}; +} export default observer(VotingUnavailable); diff --git a/source/renderer/app/components/voting/voting-info/VotingInfo.tsx b/source/renderer/app/components/voting/voting-info/VotingInfo.tsx index 525099eae2..55d05bfb68 100644 --- a/source/renderer/app/components/voting/voting-info/VotingInfo.tsx +++ b/source/renderer/app/components/voting/voting-info/VotingInfo.tsx @@ -20,7 +20,7 @@ const phaseToComponentMap: { [key in FundPhase]: React.FC } = { [FundPhase.RESULTS]: ResultsPhase, }; -const VotingInfo = ({ +function VotingInfo({ currentLocale, currentDateFormat, currentTimeFormat, @@ -28,7 +28,7 @@ const VotingInfo = ({ fundInfo, onRegisterToVoteClick, onExternalLinkClick, -}: Props) => { +}: Props) { const PhaseComponent = phaseToComponentMap[fundPhase]; return (
@@ -69,6 +69,6 @@ const VotingInfo = ({
); -}; +} export default observer(VotingInfo); diff --git a/source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx b/source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx index 5dd35f968b..0c1fc39a20 100644 --- a/source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx +++ b/source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx @@ -277,27 +277,23 @@ class WalletReceiveRandom extends Component { {walletAddresses.length ? ( - <> -
-

- {intl.formatMessage( - messages.generatedAddressesSectionTitle - )} -
- -
-

+
+

+ {intl.formatMessage(messages.generatedAddressesSectionTitle)} +
+ +
+

- -
- + +
) : null} diff --git a/source/renderer/app/components/wallet/settings/DeleteWalletConfirmation.tsx b/source/renderer/app/components/wallet/settings/DeleteWalletConfirmation.tsx index d5822f9f62..c12186b26e 100644 --- a/source/renderer/app/components/wallet/settings/DeleteWalletConfirmation.tsx +++ b/source/renderer/app/components/wallet/settings/DeleteWalletConfirmation.tsx @@ -16,7 +16,7 @@ type Props = { checkboxLabel: string; }; -const DeleteWalletConfirmation = ({ +function DeleteWalletConfirmation({ isBackupNoticeAccepted, confirmationValue, onAcceptBackupNotice, @@ -24,27 +24,29 @@ const DeleteWalletConfirmation = ({ handleSubmit, checkboxLabel, inputLabel, -}: Props) => ( - <> - - {isBackupNoticeAccepted && ( - - submitOnEnter(handleSubmit, event) - } - onChange={onConfirmationValueChange} - skin={InputSkin} +}: Props) { + return ( + <> + - )} - -); + {isBackupNoticeAccepted && ( + + submitOnEnter(handleSubmit, event) + } + onChange={onConfirmationValueChange} + skin={InputSkin} + /> + )} + + ); +} export default DeleteWalletConfirmation; diff --git a/source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx b/source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx index 675e6cd70e..87ecbca361 100644 --- a/source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx +++ b/source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx @@ -136,7 +136,7 @@ class ExportWalletToFileDialog extends Component { }, }); }; - handleSubmitOnEnter = submitOnEnter.bind(this, this.submit); + // handleSubmitOnEnter = submitOnEnter.bind(this, this.submit); render() { // const { form } = this; diff --git a/source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx b/source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx index 7acaaa11d3..5cfbfa6481 100644 --- a/source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx +++ b/source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx @@ -40,7 +40,7 @@ type Props = { intl: intlShape.isRequired; }; -const ICOPublicKeyBox = (props: Props) => { +function ICOPublicKeyBox(props: Props) { const { publicKey, locale, @@ -49,28 +49,26 @@ const ICOPublicKeyBox = (props: Props) => { intl, } = props; return ( - <> - - - openDialogAction({ - dialog: PublicKeyQRCodeDialog, - }) - } - onOpenWalletKeyDialog={() => - openDialogAction({ - dialog: ICOPublicKeyDialog, - }) - } - messages={messages} - /> - - + + + openDialogAction({ + dialog: PublicKeyQRCodeDialog, + }) + } + onOpenWalletKeyDialog={() => + openDialogAction({ + dialog: ICOPublicKeyDialog, + }) + } + messages={messages} + /> + ); -}; +} export default injectIntl(ICOPublicKeyBox); diff --git a/source/renderer/app/components/wallet/settings/PublicKeyField.tsx b/source/renderer/app/components/wallet/settings/PublicKeyField.tsx index 3ee6cba938..92ee21e946 100644 --- a/source/renderer/app/components/wallet/settings/PublicKeyField.tsx +++ b/source/renderer/app/components/wallet/settings/PublicKeyField.tsx @@ -29,7 +29,7 @@ type Props = { description?: string; }; -const PublicKeyField = (props: Props) => { +function PublicKeyField(props: Props) { const { publicKey, onOpenWalletKeyDialog, @@ -127,6 +127,6 @@ const PublicKeyField = (props: Props) => { ); -}; +} export default injectIntl(PublicKeyField); diff --git a/source/renderer/app/components/wallet/settings/PublicKeyFieldSkin.tsx b/source/renderer/app/components/wallet/settings/PublicKeyFieldSkin.tsx index d4ebd01383..c001670369 100644 --- a/source/renderer/app/components/wallet/settings/PublicKeyFieldSkin.tsx +++ b/source/renderer/app/components/wallet/settings/PublicKeyFieldSkin.tsx @@ -20,7 +20,7 @@ type Props = InputProps & { valueVisible: boolean; onCopyValue: (...args: Array) => any; }; -export default (props: Props) => { +export default function (props: Props) { const renderInput = () => ( { render={render} /> ); -}; +} diff --git a/source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx b/source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx index af85e86e2e..dd4710ff00 100644 --- a/source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx +++ b/source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx @@ -373,22 +373,20 @@ class UndelegateWalletConfirmationDialog extends Component {

{fees && !fees.depositsReclaimed.isZero() && ( - <> -
-

- {intl.formatMessage(messages.depositLabel)} -

-

- - {formattedWalletAmount(fees.depositsReclaimed, false)} - - - {` `} - {intl.formatMessage(globalMessages.adaUnit)} - -

-
- +
+

+ {intl.formatMessage(messages.depositLabel)} +

+

+ + {formattedWalletAmount(fees.depositsReclaimed, false)} + + + {` `} + {intl.formatMessage(globalMessages.adaUnit)} + +

+
)} {isHardwareWallet ? ( diff --git a/source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx b/source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx index f7a5383317..eedbd28287 100644 --- a/source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx +++ b/source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx @@ -33,30 +33,28 @@ type Props = { openDialogAction: (...args: Array) => any; }; -const WalletPublicKeyBox = (props: Props) => { +function WalletPublicKeyBox(props: Props) { const { publicKey, locale, onCopyWalletPublicKey, openDialogAction } = props; return ( - <> - - - openDialogAction({ - dialog: WalletPublicKeyQRCodeDialog, - }) - } - onOpenWalletKeyDialog={() => - openDialogAction({ - dialog: PublicKeyDialog, - }) - } - messages={messages} - /> - - + + + openDialogAction({ + dialog: WalletPublicKeyQRCodeDialog, + }) + } + onOpenWalletKeyDialog={() => + openDialogAction({ + dialog: PublicKeyDialog, + }) + } + messages={messages} + /> + ); -}; +} export default injectIntl(WalletPublicKeyBox); diff --git a/source/renderer/app/components/wallet/settings/WalletSettingsRemoveButton.tsx b/source/renderer/app/components/wallet/settings/WalletSettingsRemoveButton.tsx index 5a682d4feb..3b6f8ba463 100644 --- a/source/renderer/app/components/wallet/settings/WalletSettingsRemoveButton.tsx +++ b/source/renderer/app/components/wallet/settings/WalletSettingsRemoveButton.tsx @@ -9,19 +9,21 @@ type Props = { disabled?: boolean; }; -const WalletSettingsRemoveButton = ({ +function WalletSettingsRemoveButton({ onClick, label, disabled = false, -}: Props) => ( - ); -}; +} type Props = { className: string; }; -const DiscreetModeToggleContainer = ({ className }: Props) => { +function DiscreetModeToggleContainer({ className }: Props) { const { isDiscreetMode, toggleDiscreetMode } = useDiscreetModeFeature(); return ( { onToggle={toggleDiscreetMode} /> ); -}; +} export const DiscreetModeToggle = injectIntl( observer(DiscreetModeToggleContainer) diff --git a/source/renderer/app/features/local-storage/context.tsx b/source/renderer/app/features/local-storage/context.tsx index 7039616051..8cb02f87bc 100644 --- a/source/renderer/app/features/local-storage/context.tsx +++ b/source/renderer/app/features/local-storage/context.tsx @@ -12,10 +12,7 @@ interface Props { children: Node; localStorage: LocalStorageApi; } -export const LocalStorageFeatureProvider = ({ - children, - localStorage, -}: Props) => { +export function LocalStorageFeatureProvider({ children, localStorage }: Props) { const [localStorageFeature] = useState(() => { // @ts-ignore ts-migrate(2339) FIXME: Property 'daedalus' does not exist on type 'Window... Remove this comment to see the full error message window.daedalus = merge(window.daedalus, { @@ -30,7 +27,7 @@ export const LocalStorageFeatureProvider = ({ {children} ); -}; +} export function useLocalStorageFeature(): LocalStorageApi { return getFeatureFromContext(localStorageContext); } diff --git a/source/renderer/app/i18n/locales/defaultMessages.json b/source/renderer/app/i18n/locales/defaultMessages.json index 76f9aa4e3b..2e55f74559 100644 --- a/source/renderer/app/i18n/locales/defaultMessages.json +++ b/source/renderer/app/i18n/locales/defaultMessages.json @@ -1,19607 +1,7587 @@ [ - { - "descriptors": [ - { - "defaultMessage": "!!!An error occurred.", - "description": "Generic error message.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/api/common/errors.ts", - "id": "api.errors.GenericApiError", - "start": { - "column": 19, - "line": 5 - } - }, - { - "defaultMessage": "!!!This API method is not yet implemented.", - "description": "\"This API method is not yet implemented.\" error message.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/api/common/errors.ts", - "id": "api.errors.ApiMethodNotYetImplementedError", - "start": { - "column": 35, - "line": 10 - } - } - ], - "path": "source/renderer/app/api/common/errors.json" - }, { "descriptors": [ { "defaultMessage": "!!!Incorrect wallet password.", "description": "\"Incorrect wallet password.\" error message.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.IncorrectPasswordError", - "start": { - "column": 29, - "line": 5 - } + "id": "api.errors.IncorrectPasswordError" }, { "defaultMessage": "!!!Wallet you are trying to restore already exists.", "description": "\"Wallet you are trying to restore already exists.\" error message.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.WalletAlreadyRestoredError", - "start": { - "column": 23, - "line": 11 - } + "id": "api.errors.WalletAlreadyRestoredError" }, { "defaultMessage": "!!!Invalid recovery phrase. Submitted recovery phrase is one of the example recovery phrases from the documentation and should not be used for wallets holding funds.", "description": "\"Forbidden Mnemonic: an example Mnemonic has been submitted.\" error message", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.ForbiddenMnemonicError", - "start": { - "column": 21, - "line": 17 - } + "id": "api.errors.ForbiddenMnemonicError" }, { "defaultMessage": "!!!Wallet you are trying to import already exists.", "description": "\"Wallet you are trying to import already exists.\" error message.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.WalletAlreadyImportedError", - "start": { - "column": 25, - "line": 24 - } + "id": "api.errors.WalletAlreadyImportedError" }, { "defaultMessage": "!!!Wallet could not be imported, please make sure you are providing a correct file.", "description": "\"Wallet could not be imported, please make sure you are providing a correct file.\" error message.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.WalletFileImportError", - "start": { - "column": 25, - "line": 30 - } + "id": "api.errors.WalletFileImportError" }, { "defaultMessage": "!!!Invalid phrase entered, please check.", "description": "Error message shown when invalid bip39 mnemonic was entered.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "global.errors.invalidMnemonic", - "start": { - "column": 19, - "line": 37 - } + "id": "global.errors.invalidMnemonic" }, { "defaultMessage": "!!!Not enough money to make this transaction.", "description": "\"Not enough money to make this transaction.\" error message.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.NotEnoughMoneyToSendError", - "start": { - "column": 18, - "line": 43 - } + "id": "api.errors.NotEnoughMoneyToSendError" }, { "defaultMessage": "!!!Cannot calculate fees while there are pending transactions.", "description": "\"Cannot calculate fees while there are pending transactions.\" error message", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.CanNotCalculateTransactionFeesError", - "start": { - "column": 34, - "line": 48 - } + "id": "api.errors.CanNotCalculateTransactionFeesError" }, { "defaultMessage": "!!!Not enough ada for fees. Try sending a smaller amount.", "description": "\"Not enough ada for fees. Try sending a smaller amount.\" error message", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.NotEnoughFundsForTransactionFeesError", - "start": { - "column": 18, - "line": 55 - } + "id": "api.errors.NotEnoughFundsForTransactionFeesError" }, { "defaultMessage": "!!!Your wallet contains only reward funds. Please send at least one ADA to your wallet so that you can spend the funds.", "description": "\"Your wallet contains only reward funds. Please send at least one ADA to your wallet so that you can spend the funds.\" error message", - "end": { - "column": 3, - "line": 67 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.inputsDepleted", - "start": { - "column": 18, - "line": 61 - } + "id": "api.errors.inputsDepleted" }, { "defaultMessage": "!!!Transaction too big due to too many inputs.", "description": "\"Transaction too big due to too many inputs.\" error message.", - "end": { - "column": 3, - "line": 72 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.TooBigTransactionError", - "start": { - "column": 23, - "line": 68 - } + "id": "api.errors.TooBigTransactionError" }, { "defaultMessage": "!!!Not enough ada. Try sending a smaller amount.", "description": "\"Not enough ada . Try sending a smaller amount.\" error message", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.NotEnoughFundsForTransactionError", - "start": { - "column": 32, - "line": 73 - } + "id": "api.errors.NotEnoughFundsForTransactionError" }, { "defaultMessage": "!!!Please enter a valid address.", "description": "Error message shown when invalid address was entered.", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.invalidAddress", - "start": { - "column": 18, - "line": 79 - } + "id": "api.errors.invalidAddress" }, { "defaultMessage": "!!!Learn more.", "description": "\"Transaction too big due to too many inputs.\" error link label.", - "end": { - "column": 3, - "line": 89 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.TooBigTransactionErrorLinkLabel", - "start": { - "column": 35, - "line": 84 - } + "id": "api.errors.TooBigTransactionErrorLinkLabel" }, { "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360017733353", "description": "\"Transaction too big due to too many inputs.\" error link URL.", - "end": { - "column": 3, - "line": 96 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.TooBigTransactionErrorLinkURL", - "start": { - "column": 33, - "line": 90 - } + "id": "api.errors.TooBigTransactionErrorLinkURL" }, { "defaultMessage": "!!!Invalid transaction.", "description": "\"Invalid transaction.\" error message", - "end": { - "column": 3, - "line": 101 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.utxoTooSmall", - "start": { - "column": 16, - "line": 97 - } + "id": "api.errors.utxoTooSmall" }, { "defaultMessage": "!!!Funds cannot be transferred from this wallet because it contains some unspent transaction outputs (UTXOs), with amounts of ada that are too small to be migrated.", "description": "\"Funds cannot be transferred from this wallet because it contains some unspent transaction outputs (UTXOs), with amounts of ada that are too small to be migrated.\" error message", - "end": { - "column": 3, - "line": 108 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.nothingToMigrate", - "start": { - "column": 20, - "line": 102 - } + "id": "api.errors.nothingToMigrate" }, { "defaultMessage": "!!!This URL is not a valid SMASH server", "description": "\"This URL is not a valid SMASH server\" error message", - "end": { - "column": 3, - "line": 113 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.invalidSmashServer", - "start": { - "column": 22, - "line": 109 - } + "id": "api.errors.invalidSmashServer" }, { "defaultMessage": "!!!Insufficient funds to support tokens. You need at least an additional {adaAmount} ADA in your wallet to process this transaction.", "description": "\"Balance after transaction would not leave enough ada in the wallet to support tokens remaining in wallet", - "end": { - "column": 3, - "line": 120 - }, - "file": "source/renderer/app/api/errors.ts", - "id": "api.errors.NotEnoughFundsForTransactionFeesErrorWithTokens", - "start": { - "column": 26, - "line": 114 - } + "id": "api.errors.NotEnoughFundsForTransactionFeesErrorWithTokens" } ], - "path": "source/renderer/app/api/errors.json" + "path": "source/renderer/app/api/errors.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Software update available!", - "description": "\"title\" for the App Update Overlay", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.title", - "start": { - "column": 9, - "line": 23 - } + "defaultMessage": "!!!Ada", + "description": "\"Ada\" name", + "id": "global.ada.name" }, { - "defaultMessage": "!!!You are currently running Daedalus version {currentAppVersion}.
Daedalus version {availableAppVersion} is now available to download.", - "description": "\"subtitle\" for the App Update Overlay", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.subtitle", - "start": { - "column": 12, - "line": 28 - } + "defaultMessage": "!!!ADA", + "description": "\"ADA\" unit", + "id": "global.ada.unit" }, { - "defaultMessage": "!!!I understand that I need to complete the installation before starting Daedalus.", - "description": "\"checkboxLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.checkboxLabel", - "start": { - "column": 17, - "line": 34 - } + "defaultMessage": "!!!ADA", + "description": "Name for \"Ada\" unit.", + "id": "environment.currency.ada" }, { - "defaultMessage": "!!!Quit Daedalus and start the installation", - "description": "\"buttonLaunchInstallerLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.button.launchInstaller.label", - "start": { - "column": 30, - "line": 40 - } + "defaultMessage": "!!!This field is required.", + "description": "Error message when required fields are left empty.", + "id": "global.errors.fieldIsRequired" }, { - "defaultMessage": "!!!Install the update and restart Daedalus", - "description": "\"buttonInstallUpdateLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.button.installUpdate.label", - "start": { - "column": 28, - "line": 45 - } + "defaultMessage": "!!!{actual} of {required} words entered", + "description": "Info message displayed above mnemonic inputs about actual vs. required words entered", + "id": "global.info.knownMnemonicWordCount" }, { - "defaultMessage": "!!!Postpone the update", - "description": "\"manualUpdateLinkLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.postponeInstall.link.label", - "start": { - "column": 28, - "line": 50 - } + "defaultMessage": "!!!{actual} words entered", + "description": "Info message displayed above mnemonic inputs about how many words have been entered", + "id": "global.info.unknownMnemonicWordCount" }, { - "defaultMessage": "!!!Installing update...", - "description": "\"installingUpdateLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.installingUpdate.link.label", - "start": { - "column": 25, - "line": 55 - } + "defaultMessage": "!!!Invalid email entered, please check.", + "description": "Error message shown when invalid email was entered.", + "id": "global.errors.invalidEmail" }, { - "defaultMessage": "!!!Download in progress", - "description": "\"downloadProgressLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.downloadProgressLabel", - "start": { - "column": 25, - "line": 60 - } + "defaultMessage": "!!!Wallet name requires at least 3 and at most 40 letters", + "description": "Error message shown when invalid wallet name was entered in create wallet dialog.", + "id": "global.errors.invalidWalletName" }, { - "defaultMessage": "!!!{downloadTimeLeft} left", - "description": "\"downloadTimeLeft\" for the App Update Overlay", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.downloadTimeLeft", - "start": { - "column": 20, - "line": 65 - } + "defaultMessage": "!!!Insecure", + "description": "Error message shown when insecure wallet password was entered in a password input.", + "id": "global.errors.invalidSpendingPassword" }, { - "defaultMessage": "!!!({totalDownloaded} of {totalDownloadSize} downloaded)", - "description": "\"downloadProgressData\" for the App Update Overlay", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.downloadProgressData", - "start": { - "column": 24, - "line": 70 - } + "defaultMessage": "!!!Weak", + "description": "Error message shown when weak wallet password was entered in a password input.", + "id": "global.errors.weakSpendingPassword" }, { - "defaultMessage": "!!!We were unable to launch the update installer automatically.", - "description": "\"manualUpdateDescriptionError\" for the App Update Overlay", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.description.error", - "start": { - "column": 32, - "line": 75 - } + "defaultMessage": "!!!Strong", + "description": "Error message shown when strong wallet password was entered in a password input.", + "id": "global.errors.strongSpendingPassword" }, { - "defaultMessage": "!!!We were unable to install the update.", - "description": "\"manualUpdateDescriptionErrorLinux\" for the App Update Overlay", - "end": { - "column": 3, - "line": 86 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.description.errorLinux", - "start": { - "column": 37, - "line": 81 - } + "defaultMessage": "!!!Doesn't match.", + "description": "Error message shown when wallet password and repeat passwords don't match in create wallet dialog.", + "id": "global.errors.invalidRepeatPassword" }, { - "defaultMessage": "!!!Please manually update Daedalus to its latest version.", - "description": "\"manualUpdateDescriptionAction\" for the App Update Overlay", - "end": { - "column": 3, - "line": 91 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.description.action", - "start": { - "column": 33, - "line": 87 - } + "defaultMessage": "!!!The file you are trying to replace is open. Please close it and try again.", + "description": "Error message shown when the file the user tries to replace is open.", + "id": "global.errors.paperWalletOpenPdfError" }, { - "defaultMessage": "!!!Follow instructions and manually update", - "description": "\"manualUpdateButtonLabel\" for the App Update Overlay", - "end": { - "column": 3, - "line": 96 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.button.label", - "start": { - "column": 27, - "line": 92 - } + "defaultMessage": "!!!The file you are trying to replace is open. Please close it and try again.", + "description": "Error message shown when the file the user tries to replace is open.", + "id": "global.errors.rewardsOpenCsvError" }, { - "defaultMessage": "!!!https://daedaluswallet.io/en/download/", - "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Mainnet", - "end": { - "column": 3, - "line": 102 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.button.url.mainnet", - "start": { - "column": 35, - "line": 97 - } + "defaultMessage": "!!!Note that password needs to be at least 10 characters and at most 255 characters long.", + "description": "Password instructions note.", + "id": "global.passwordInstructions" }, { - "defaultMessage": "!!!https://daedaluswallet.io/en/flight/", - "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Flight", - "end": { - "column": 3, - "line": 107 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.button.url.flight", - "start": { - "column": 34, - "line": 103 - } + "defaultMessage": "!!!Cancel", + "description": "The word \"cancel\" reused at several places (like cancel buttons)", + "id": "global.labels.cancel" }, { - "defaultMessage": "!!!https://developers.cardano.org/en/testnets/cardano/get-started/wallet/", - "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Testnet", - "end": { - "column": 3, - "line": 114 - }, - "file": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx", - "id": "appUpdate.overlay.manualUpdate.button.url.testnet", - "start": { - "column": 35, - "line": 108 - } - } - ], - "path": "source/renderer/app/components/appUpdate/AppUpdateOverlay.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Fingerprint", - "description": "\"fingerprint\" item.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.fingerprint", - "start": { - "column": 19, - "line": 16 - } + "defaultMessage": "!!!Close", + "description": "The word \"close\" reused at several places (like cancel buttons)", + "id": "global.labels.close" }, { - "defaultMessage": "!!!Policy Id", - "description": "\"policyId\" item.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.policyId", - "start": { - "column": 16, - "line": 21 - } + "defaultMessage": "!!!Change", + "description": "The word \"change\" reused at several places (like change buttons)", + "id": "global.labels.change" }, { - "defaultMessage": "!!!Asset name", - "description": "\"assetName\" item.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.assetName", - "start": { - "column": 17, - "line": 26 - } + "defaultMessage": "!!!Create", + "description": "The word \"create\" reused at several places (like create buttons)", + "id": "global.labels.create" }, { - "defaultMessage": "!!!Name", - "description": "\"name\" item.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.name", - "start": { - "column": 12, - "line": 31 - } + "defaultMessage": "!!!Remove", + "description": "The word \"remove\" reused at several places (like remove buttons)", + "id": "global.labels.remove" }, { - "defaultMessage": "!!!Ticker", - "description": "\"ticker\" item.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.ticker", - "start": { - "column": 14, - "line": 36 - } + "defaultMessage": "!!!Save", + "description": "The word \"save\" reused at several places (like save buttons)", + "id": "global.labels.save" }, { - "defaultMessage": "!!!Description", - "description": "\"description\" item.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.description", - "start": { - "column": 19, - "line": 41 - } + "defaultMessage": "!!!English", + "description": "Language name for \"English\" language.", + "id": "global.language.english" }, { - "defaultMessage": "!!!Blank", - "description": "\"Blank\" item value.", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.param.blank", - "start": { - "column": 9, - "line": 46 - } + "defaultMessage": "!!!Japanese", + "description": "Language name for \"Japanese\" language.", + "id": "global.language.japanese" }, { - "defaultMessage": "!!!You can configure the number of decimal places for this native token.", - "description": "Asset settings pop over content", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.assetToken.settings.cogPopOver", - "start": { - "column": 22, - "line": 51 - } + "defaultMessage": "!!!Chinese", + "description": "Language name for \"Chinese\" language.", + "id": "global.language.chinese" }, { - "defaultMessage": "!!!Recommended configuration for decimal places for this native token is available.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.warning.available", - "start": { - "column": 35, - "line": 57 - } + "defaultMessage": "!!!Korean", + "description": "Language name for \"Korean\" language.", + "id": "global.language.korean" }, { - "defaultMessage": "!!!You are not using the recommended decimal place configuration for this native token.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/components/assets/Asset.tsx", - "id": "assets.warning.notUsing", - "start": { - "column": 34, - "line": 63 - } - } - ], - "path": "source/renderer/app/components/assets/Asset.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Unformatted amount {amount}", - "description": "Unformatted amount", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/assets/AssetAmount.tsx", - "id": "assets.assetAmount.unformattedAmount", - "start": { - "column": 21, - "line": 13 - } - } - ], - "path": "source/renderer/app/components/assets/AssetAmount.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Fingerprint", - "description": "\"fingerprint\" param.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.fingerprint", - "start": { - "column": 25, - "line": 15 - } + "defaultMessage": "!!!German", + "description": "Language name for \"German\" language.", + "id": "global.language.german" }, { - "defaultMessage": "!!!Policy Id", - "description": "\"policyId\" param.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.policyId", - "start": { - "column": 22, - "line": 20 - } + "defaultMessage": "!!!Croatian", + "description": "Language name for \"Croatian\" language.", + "id": "global.language.croatian" }, { - "defaultMessage": "!!!Asset name", - "description": "\"assetName\" param.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.assetName", - "start": { - "column": 23, - "line": 25 - } + "defaultMessage": "!!!:", + "description": "Colon punctuation.", + "id": "global.punctuation.colon" }, { - "defaultMessage": "!!!Name", - "description": "\"name\" param.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.name", - "start": { - "column": 18, - "line": 30 - } + "defaultMessage": "!!!.", + "description": "Final dot punctuation.", + "id": "global.punctuation.dot" }, { - "defaultMessage": "!!!Ticker", - "description": "\"ticker\" param.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.ticker", - "start": { - "column": 20, - "line": 35 - } + "defaultMessage": "!!!Recovery phrase", + "description": "Title for the \"Recovery Phrase\" dialog.", + "id": "wallet.backup.recovery.phrase.dialog.title" }, { - "defaultMessage": "!!!Description", - "description": "\"description\" param.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.description", - "start": { - "column": 25, - "line": 40 - } + "defaultMessage": "!!!Spending Password", + "description": "Label for the \"Wallet password\" input in the create wallet dialog.", + "id": "global.spendingPasswordLabel" }, { - "defaultMessage": "!!!Blank", - "description": "\"Blank\" param value.", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.param.blank", - "start": { - "column": 9, - "line": 45 - } + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the create wallet dialog.", + "id": "global.spendingPasswordPlaceholder" }, { - "defaultMessage": "!!!You can configure the number of decimal places for this native token.", - "description": "Asset settings pop over content", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.assetToken.settings.cogPopOver", - "start": { - "column": 22, - "line": 50 - } + "defaultMessage": "!!!Continue", + "description": "Label \"Continue\" in dialogs.", + "id": "global.dialog.button.continue" }, { - "defaultMessage": "!!!Recommended configuration for decimal places for this native token is available.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.warning.available", - "start": { - "column": 35, - "line": 56 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", + "description": "URL for the \"Known Issues\" link in the \"Help and support\" section on the support settings page", + "id": "settings.support.faq.faqLinkURL" }, { - "defaultMessage": "!!!You are not using the recommended decimal place configuration for this native token.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 67 - }, - "file": "source/renderer/app/components/assets/AssetContent.tsx", - "id": "assets.warning.notUsing", - "start": { - "column": 34, - "line": 62 - } - } - ], - "path": "source/renderer/app/components/assets/AssetContent.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Native token settings", - "description": "\"title\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.title", - "start": { - "column": 9, - "line": 23 - } + "defaultMessage": "!!!Cardano", + "description": "Name for \"Cardano\" client.", + "id": "environment.apiName.cardano" }, { - "defaultMessage": "!!!Updates made here will be applied in other wallets containing this token too.", - "description": "\"description\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.description", - "start": { - "column": 15, - "line": 28 - } + "defaultMessage": "!!!Mainnet", + "description": "\"mainnet\" Cardano network", + "id": "environment.network.mainnet" }, { - "defaultMessage": "!!!Unformatted amount", - "description": "\"formattedBalanceLabel\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.formattedAmount.label", - "start": { - "column": 25, - "line": 34 - } + "defaultMessage": "!!!Staging", + "description": "\"staging\" Cardano network", + "id": "environment.network.staging" }, { - "defaultMessage": "!!!Formatted amount", - "description": "\"unformattedBalanceLabel\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.unformattedAmount.label", - "start": { - "column": 27, - "line": 39 - } + "defaultMessage": "!!!Testnet", + "description": "\"testnet\" Cardano network", + "id": "environment.network.testnet" }, { - "defaultMessage": "!!!Number of decimal places", - "description": "\"decimalPrecisionLabel\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.decimalPrecision.label", - "start": { - "column": 25, - "line": 44 - } + "defaultMessage": "!!!Shelley QA", + "description": "\"Shelley QA\" Cardano network", + "id": "environment.network.shelley_qa" }, { - "defaultMessage": "!!!(recommended)", - "description": "\"recommended\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.recommended", - "start": { - "column": 15, - "line": 49 - } + "defaultMessage": "!!!Alonzo Purple", + "description": "\"Alonzo Purple\" Cardano network", + "id": "environment.network.alonzo_purple" }, { - "defaultMessage": "!!!(default)", - "description": "\"default\" for the Asset settings dialog", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.settings.dialog.default", - "start": { - "column": 11, - "line": 54 - } + "defaultMessage": "!!!Development", + "description": "\"development\" Cardano network", + "id": "environment.network.development" }, { - "defaultMessage": "!!!Recommended configuration for decimal places for this native token is available.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.warning.available", - "start": { - "column": 27, - "line": 59 - } + "defaultMessage": "!!!Selfnode", + "description": "\"selfnode\" Cardano network", + "id": "environment.network.selfnode" }, { - "defaultMessage": "!!!You are not using the recommended decimal place configuration for this native token.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/components/assets/AssetSettingsDialog.tsx", - "id": "assets.warning.notUsing", - "start": { - "column": 26, - "line": 65 - } - } - ], - "path": "source/renderer/app/components/assets/AssetSettingsDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!years", + "description": "Label for years value in duration.", + "id": "global.duration.years" + }, { - "defaultMessage": "!!!Connect your device and enter your PIN to unlock it", - "description": "\"Connect your device and enter your PIN to unlock it\" device state", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.connecting", - "start": { - "column": 14, - "line": 16 - } + "defaultMessage": "!!!months", + "description": "Label for months value in duration.", + "id": "global.duration.months" }, { - "defaultMessage": "!!!Disconnect and reconnect your device to restart the process.", - "description": "\"Connect failed\" device state", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.connecting.failed", - "start": { - "column": 21, - "line": 22 - } + "defaultMessage": "!!!days", + "description": "Label for days value in duration.", + "id": "global.duration.days" }, { - "defaultMessage": "!!!Connect the \"{walletName}\" device", - "description": "\"Connect the IOHK Trezor 1 device\" device state", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.connecting.known", - "start": { - "column": 20, - "line": 28 - } + "defaultMessage": "!!!hours", + "description": "Label for hours value in duration.", + "id": "global.duration.hours" }, { - "defaultMessage": "!!!Launch Cardano application on your device", - "description": "\"Launch Cardano application on your device\" device state", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.launching_cardano_app", - "start": { - "column": 25, - "line": 33 - } + "defaultMessage": "!!!minutes", + "description": "Label for minutes value in duration.", + "id": "global.duration.minutes" }, { - "defaultMessage": "!!!Export the public key on your device", - "description": "\"Confirm exporting your public key on your device\" device state", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.exporting_public_key", - "start": { - "column": 24, - "line": 38 - } + "defaultMessage": "!!!seconds", + "description": "Label for seconds value in duration.", + "id": "global.duration.seconds" }, { - "defaultMessage": "!!!Exporting the public key failed", - "description": "\"Exporting public key failed\" device state", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.exporting_public_key_failed", - "start": { - "column": 31, - "line": 44 - } + "defaultMessage": "!!!from", + "description": "From label of range.", + "id": "global.range.from" }, { - "defaultMessage": "!!!We do not recognize this wallet on your device. Please ensure that you are using the same device that you selected for pairing {walletName} and that you have entered the correct passphrase.", - "description": "\"Unrecognized wallet\" device state", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.unrecognized_wallet", - "start": { - "column": 23, - "line": 49 - } + "defaultMessage": "!!!to", + "description": "To label of range.", + "id": "global.range.to" }, { - "defaultMessage": "!!!Disconnect and reconnect your device to restart the process.", - "description": "\"Disconnect and reconnect your device to start the process again\" device state", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.exportingPublicKeyError", - "start": { - "column": 27, - "line": 55 - } + "defaultMessage": "!!!Filter", + "description": "Filter label.", + "id": "global.labels.filter" }, { - "defaultMessage": "!!!Enter passphrase if needed", - "description": "\"Enter passphrase if needed\" device sub-state", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.enterPassphrase", - "start": { - "column": 19, - "line": 62 - } + "defaultMessage": "!!!All", + "description": "All label.", + "id": "global.labels.all" }, { - "defaultMessage": "!!!Device ready", - "description": "\"Device ready\" device state", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.ready", - "start": { - "column": 9, - "line": 67 - } + "defaultMessage": "!!!Reset", + "description": "Reset label.", + "id": "global.labels.reset" }, { - "defaultMessage": "!!!Confirm the transaction using the \"{walletName}\" device", - "description": "\"Confirm the transaction using the IOHK Trezor 1 device\" device state", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_transaction", - "start": { - "column": 25, - "line": 72 - } - }, - { - "defaultMessage": "!!!Transaction verification and signing failed", - "description": "\"Transaction verification and signing failed\" device state", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_transaction_failed", - "start": { - "column": 32, - "line": 79 - } + "defaultMessage": "!!!Reveal", + "description": "Reveal label.", + "id": "global.labels.reveal" }, { - "defaultMessage": "!!!Transaction confirmed", - "description": "\"Transaction verified and signed\" device state", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_transaction_succeeded", - "start": { - "column": 35, - "line": 84 - } + "defaultMessage": "!!!Hide", + "description": "Hide label.", + "id": "global.labels.hide" }, { - "defaultMessage": "!!!Trezor Bridge not installed!", - "description": "\"Trezor Bridge not installed! {instructionsLink}\" device state", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.trezor_bridge_failure", - "start": { - "column": 25, - "line": 89 - } + "defaultMessage": "!!!View", + "description": "View label.", + "id": "global.labels.view" }, { - "defaultMessage": "!!!Installation instructions", - "description": "Trezor Bridge installation instructions link label", - "end": { - "column": 3, - "line": 99 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.trezor_bridge_failure.link.label", - "start": { - "column": 36, - "line": 95 - } + "defaultMessage": "!!!Copy", + "description": "Copy label.", + "id": "global.labels.copy" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", - "description": "URL for the \"Trezor Bridge\" update", - "end": { - "column": 3, - "line": 105 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.trezor_bridge_failure.link.url", - "start": { - "column": 34, - "line": 100 - } + "defaultMessage": "!!!Daedalus is synchronizing with the Cardano blockchain, and the process is currently {syncPercentage}% complete. This feature will become available once Daedalus is fully synchronized.", + "description": "Info message displayed for features which are unavailable while Daedalus is syncing", + "id": "global.info.featureUnavailableWhileSyncing" }, { - "defaultMessage": "!!!Unsupported firmware! {instructionsLink}", - "description": "\"Unsupported firmware!\" device state", - "end": { - "column": 3, - "line": 110 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.wrong_firmware", - "start": { - "column": 18, - "line": 106 - } - }, + "defaultMessage": "!!!No results", + "description": "Dropdown search \"No results\" message", + "id": "global.search.noResultsMessage" + } + ], + "path": "source/renderer/app/i18n/global-messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Firmware update instructions", - "description": "Firmware update installation instructions link label", - "end": { - "column": 3, - "line": 115 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.wrong_firmware.link.label", - "start": { - "column": 29, - "line": 111 - } - }, + "defaultMessage": "!!!Token", + "description": "Token description.", + "id": "global.labels.token" + } + ], + "path": "source/renderer/app/components/widgets/forms/MnemonicInputWidget.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", - "description": "URL for the \"Firmware Update\"", - "end": { - "column": 3, - "line": 121 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.wrong_firmware.link.url", - "start": { - "column": 27, - "line": 116 - } + "defaultMessage": "!!!PDF creation date {date} {time}", + "description": "PDF title", + "id": "wallet.receive.pdf.creationDate" }, { - "defaultMessage": "!!!The device is not supported!", - "description": "\"The device is not supported!\" device state", - "end": { - "column": 3, - "line": 126 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.unsupported_device", - "start": { - "column": 22, - "line": 122 - } + "defaultMessage": "!!!Note:", + "description": "PDF title", + "id": "wallet.receive.pdf.noteLabel" }, { - "defaultMessage": "!!!Outdated Ledger software!! {instructionsLink}", - "description": "\"Unsupported firmware!\" device state", - "end": { - "column": 3, - "line": 131 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version", - "start": { - "column": 29, - "line": 127 - } + "defaultMessage": "!!!Daedalus Cardano ada address", + "description": "PDF title", + "id": "wallet.receive.pdf.title" }, { - "defaultMessage": "!!!Software update instructions", - "description": "Firmware update installation instructions link label", - "end": { - "column": 3, - "line": 136 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version.link.label", - "start": { - "column": 40, - "line": 132 - } + "defaultMessage": "!!!Daedalus wallet", + "description": "PDF author", + "id": "wallet.receive.pdf.author" }, { - "defaultMessage": "!!!https://support.ledger.com/hc/en-us/articles/360020095874-Cardano-ADA-", - "description": "URL for the \"Firmware Update\"", - "end": { - "column": 3, - "line": 142 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version.link.url", - "start": { - "column": 38, - "line": 137 - } - }, + "defaultMessage": "!!!Cardano Network:", + "description": "PDF networkLabel", + "id": "wallet.receive.pdf.networkLabel" + } + ], + "path": "source/renderer/app/utils/addressPDFGenerator.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Verify address on your \"{walletName}\" device", - "description": "\"Verify receiving address on your Hardware Wallet device", - "end": { - "column": 3, - "line": 147 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_address", - "start": { - "column": 21, - "line": 143 - } + "defaultMessage": "!!!Wallet address", + "description": "Paper wallet pdf \"Wallet address\" label.", + "id": "paper.wallet.pdf.walletAddress.label" }, { - "defaultMessage": "!!!Please answer the question below", - "description": "\"Confirm receiving address on your Hardware Wallet device", - "end": { - "column": 3, - "line": 152 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_address_confirmation", - "start": { - "column": 34, - "line": 148 - } + "defaultMessage": "!!!Paper wallet recovery phrase", + "description": "Paper wallet pdf \"Paper wallet recovery phrase\" label.", + "id": "paper.wallet.pdf.recoveryPhrase.label" }, { - "defaultMessage": "!!!Address verification failed", - "description": "\"Address verification failed\" device state", - "end": { - "column": 3, - "line": 157 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_address_failed", - "start": { - "column": 28, - "line": 153 - } + "defaultMessage": "!!!Password", + "description": "Paper wallet pdf \"Password\" label.", + "id": "paper.wallet.pdf.password.label" }, { - "defaultMessage": "!!!Verification was aborted by the user", - "description": "\"Address verification aborted\" device state", - "end": { - "column": 3, - "line": 162 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_address_aborted", - "start": { - "column": 29, - "line": 158 - } + "defaultMessage": "!!!Daedalus paper wallet certificate", + "description": "PDF title", + "id": "paper.wallet.pdf.info.title" }, { - "defaultMessage": "!!!Address verified", - "description": "\"Address verified\" device state", - "end": { - "column": 3, - "line": 167 - }, - "file": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx", - "id": "wallet.hardware.deviceStatus.verifying_address_succeeded", - "start": { - "column": 31, - "line": 163 - } + "defaultMessage": "!!!Daedalus wallet", + "description": "PDF author", + "id": "paper.wallet.pdf.info.author" } ], - "path": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.json" + "path": "source/renderer/app/utils/paperWalletPdfGenerator.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Recommended hardware requirements status", - "description": "Title of the RTS flags recommendation overlay", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.tsx", - "id": "knownIssues.rtsRecommendationOverlay.title", - "start": { - "column": 9, - "line": 17 - } + "defaultMessage": "!!!ID", + "description": "Transactions CSV column - ID", + "id": "wallet.transactions.csv.column.id" }, { - "defaultMessage": "!!!

Your system specifications do not meet Daedalus’ recommended hardware requirements.

You can enable RAM management (RTS Flags), an experimental setting that can reduce memory usage on computers with less than 16GB of RAM.

You can enable it now by clicking the ‘Enable and quit’ button. Note that you will have to restart Daedalus for this change to take effect. To enable or disable it at any time, go to the Help menu.

", - "description": "Content of the RTS flags recommendation overlay", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.tsx", - "id": "knownIssues.rtsRecommendationOverlay.content", - "start": { - "column": 11, - "line": 22 - } + "defaultMessage": "!!!Type", + "description": "Transactions CSV column - Type", + "id": "wallet.transactions.csv.column.type" }, { - "defaultMessage": "!!!Enable and quit", - "description": "Enable and quit button label", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.tsx", - "id": "knownIssues.rtsRecommendationOverlay.enableAndQuitButtonLabel", - "start": { - "column": 28, - "line": 28 - } + "defaultMessage": "!!!TOTAL (ADA)", + "description": "Transactions CSV column - TOTAL", + "id": "wallet.transactions.csv.column.amount.total" }, { - "defaultMessage": "!!!Decide later", - "description": "Decide later button label", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.tsx", - "id": "knownIssues.rtsRecommendationOverlay.decideLaterButtonLabel", - "start": { - "column": 26, - "line": 33 - } - } - ], - "path": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Sent amount (ADA)", + "description": "Transactions CSV column - Sent amount", + "id": "wallet.transactions.csv.column.amount.sent" + }, { - "defaultMessage": "!!!Enable RTS flags (RAM management system)", - "description": "Headline for the RTS flags dialog - when enabling", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.enableRtsFlagsMode.title", - "start": { - "column": 30, - "line": 11 - } + "defaultMessage": "!!!Deposit amount (ADA)", + "description": "Transactions CSV column - Deposit amount", + "id": "wallet.transactions.csv.column.amount.deposit" }, { - "defaultMessage": "!!!When enabled, the Cardano node will attempt to reduce its RAM usage. You will need to restart Daedalus for this change to take effect.", - "description": "Main body of the dialog - when enabling", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.enableRtsFlagsMode.explanation", - "start": { - "column": 33, - "line": 16 - } + "defaultMessage": "!!!Fee (ADA)", + "description": "Transactions CSV column - Fee", + "id": "wallet.transactions.csv.column.amount.fee" }, { - "defaultMessage": "!!!Enable and quit", - "description": "Enable RTS flags button label", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.enableRtsFlagsMode.actionButton", - "start": { - "column": 34, - "line": 22 - } + "defaultMessage": "!!!Tokens (unformatted amount)", + "description": "Transactions CSV column - Tokens", + "id": "wallet.transactions.csv.column.tokens" }, { - "defaultMessage": "!!!Disable RTS flags (RAM management system)", - "description": "Headline for the RTS flags dialog - when disabling", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.disableRtsFlagsMode.title", - "start": { - "column": 31, - "line": 27 - } + "defaultMessage": "!!!Date & time", + "description": "Transactions CSV column - DateTime", + "id": "wallet.transactions.csv.column.dateTime" }, { - "defaultMessage": "!!!When disabled, the Cardano node will start in default mode. You will need to restart Daedalus for this change to take effect.", - "description": "Main body of the dialog - when disabling", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.disableRtsFlagsMode.explanation", - "start": { - "column": 34, - "line": 32 - } + "defaultMessage": "!!!Status", + "description": "Transactions CSV column - Status", + "id": "wallet.transactions.csv.column.status" }, { - "defaultMessage": "!!!Disable and quit", - "description": "Disable RTS flags button label", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.disableRtsFlagsMode.actionButton", - "start": { - "column": 35, - "line": 38 - } + "defaultMessage": "!!!Addresses from", + "description": "Transactions CSV column - AddressesFrom", + "id": "wallet.transactions.csv.column.addressesFrom" }, { - "defaultMessage": "!!!I understand that I will need to launch Daedalus manually", - "description": "Manual relaunch confirmation checkbox label", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx", - "id": "knownIssues.dialog.toggleRtsFlagsMode.manualRelaunchConfirmationCheckboxLabel", - "start": { - "column": 43, - "line": 43 - } - } - ], - "path": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Addresses to", + "description": "Transactions CSV column - AddressesTo", + "id": "wallet.transactions.csv.column.addressesTo" + }, { - "defaultMessage": "!!!Daedalus requires at least {diskSpaceRequired} of hard drive space to operate. Your computer is missing {diskSpaceMissing} of available space. Please delete some files to increase available hard drive space to continue using Daedalus.

It is recommended to have at least 15% of hard drive space available ({diskSpaceRecommended} in your case) for normal and stable operation of the operating system and installed programs. We strongly recommend that you free up at least that amount of space from your hard drive.", - "description": "Content of No disk space overlay", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/loading/no-disk-space-error/NoDiskSpaceError.tsx", - "id": "noDiskSpace.error.overlayContent", - "start": { - "column": 18, - "line": 10 - } + "defaultMessage": "!!!Withdrawals", + "description": "Transactions CSV column - Withdrawals", + "id": "wallet.transactions.csv.column.withdrawals" }, { - "defaultMessage": "!!!Daedalus requires more hard drive space", - "description": "Title of No disk space overlay", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/loading/no-disk-space-error/NoDiskSpaceError.tsx", - "id": "noDiskSpace.error.overlayTitle", - "start": { - "column": 16, - "line": 16 - } + "defaultMessage": "!!!Sent", + "description": "Transactions CSV value - Type Sent", + "id": "wallet.transactions.csv.value.type.sent" + }, + { + "defaultMessage": "!!!Received", + "description": "Transactions CSV value - Type Received", + "id": "wallet.transactions.csv.value.type.received" + }, + { + "defaultMessage": "!!!Confirmed", + "description": "Transactions CSV value - Status Confirmed", + "id": "wallet.transactions.csv.value.statusConfirmed" + }, + { + "defaultMessage": "!!!Pending", + "description": "Transactions CSV value - Status Pending", + "id": "wallet.transactions.csv.value.statusPending" + }, + { + "defaultMessage": "!!!Transactions", + "description": "Transactions CSV \"Transactions\" filename", + "id": "wallet.transactions.csv.filenamePrefix" } ], - "path": "source/renderer/app/components/loading/no-disk-space-error/NoDiskSpaceError.json" + "path": "source/renderer/app/utils/transactionsCsvGenerator.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Having trouble connecting to network?", - "description": "Report connecting issue text on the loading screen.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx", - "id": "loading.screen.reportIssue.connecting.text", - "start": { - "column": 29, - "line": 14 - } + "defaultMessage": "!!!Fund{nextVotingFundNumber} Voting Registration", + "description": "PDF title", + "id": "voting.votingRegistration.pdf.title" }, { - "defaultMessage": "!!!Open support ticket", - "description": "Open support ticket button label on the loading.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx", - "id": "loading.screen.reportIssue.buttonLabel", - "start": { - "column": 26, - "line": 19 - } + "defaultMessage": "!!!Wallet name", + "description": "PDF wallet name title", + "id": "voting.votingRegistration.pdf.walletNameLabel" }, { - "defaultMessage": "!!!Read the article", - "description": "Read the article button label on the loading.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx", - "id": "loading.screen.readArticle.buttonLabel", - "start": { - "column": 26, - "line": 24 - } + "defaultMessage": "!!!voting-registration", + "description": "PDF filename title", + "id": "voting.votingRegistration.pdf.filename" }, { - "defaultMessage": "!!!Download logs", - "description": "Download logs button label on the loading.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx", - "id": "loading.screen.reportIssue.downloadLogsLinkLabel", - "start": { - "column": 36, - "line": 29 - } + "defaultMessage": "!!!Cardano network:", + "description": "PDF networkLabel label", + "id": "voting.votingRegistration.pdf.networkLabel" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", - "description": "Link to Open Support page", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx", - "id": "loading.screen.reportIssue.reportIssueButtonUrl", - "start": { - "column": 24, - "line": 34 - } + "defaultMessage": "!!!Daedalus wallet", + "description": "PDF author", + "id": "voting.votingRegistration.pdf.author" + } + ], + "path": "source/renderer/app/utils/votingPDFGenerator.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!An error occurred.", + "description": "Generic error message.", + "id": "api.errors.GenericApiError" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360010522913", - "description": "Link to connectivity issue article page", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx", - "id": "loading.screen.readIssueArticle.connectivityIssueArticleUrl", - "start": { - "column": 31, - "line": 39 - } + "defaultMessage": "!!!This API method is not yet implemented.", + "description": "\"This API method is not yet implemented.\" error message.", + "id": "api.errors.ApiMethodNotYetImplementedError" } ], - "path": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.json" + "path": "source/renderer/app/api/common/errors.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Cardano node is running!", - "description": "Message \"Cardano node is running\" on the status icon tooltip", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeIsRunning", - "start": { - "column": 17, - "line": 20 - } + "defaultMessage": "!!!Software update available!", + "description": "\"title\" for the App Update Overlay", + "id": "appUpdate.overlay.title" }, { - "defaultMessage": "!!!Cardano node is starting!", - "description": "Message \"Node is starting\" on the status icon tooltip", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeIsStarting", - "start": { - "column": 18, - "line": 25 - } + "defaultMessage": "!!!You are currently running Daedalus version {currentAppVersion}.
Daedalus version {availableAppVersion} is now available to download.", + "description": "\"subtitle\" for the App Update Overlay", + "id": "appUpdate.overlay.subtitle" }, { - "defaultMessage": "!!!Cardano node is exiting!", - "description": "Message \"Cardano node is exiting\" on the status icon tooltip", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeIsExiting", - "start": { - "column": 17, - "line": 30 - } + "defaultMessage": "!!!I understand that I need to complete the installation before starting Daedalus.", + "description": "\"checkboxLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.checkboxLabel" }, { - "defaultMessage": "!!!Cardano node is stopping!", - "description": "Message \"Cardano node is stopping\" on the status icon tooltip", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeIsStopping", - "start": { - "column": 18, - "line": 35 - } + "defaultMessage": "!!!Quit Daedalus and start the installation", + "description": "\"buttonLaunchInstallerLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.button.launchInstaller.label" }, { - "defaultMessage": "!!!Cardano node has stopped!", - "description": "Message \"Cardano node has stopped\" on the status icon tooltip", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeHasStopped", - "start": { - "column": 18, - "line": 41 - } + "defaultMessage": "!!!Install the update and restart Daedalus", + "description": "\"buttonInstallUpdateLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.button.installUpdate.label" }, { - "defaultMessage": "!!!Cardano node is updating!", - "description": "Message \"Cardano node is updating\" on the status icon tooltip", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeIsUpdating", - "start": { - "column": 18, - "line": 47 - } + "defaultMessage": "!!!Postpone the update", + "description": "\"manualUpdateLinkLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.postponeInstall.link.label" }, { - "defaultMessage": "!!!Cardano node has been updated!", - "description": "Message \"Cardano node has been updated\" on the status icon tooltip", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeHasBeenUpdated", - "start": { - "column": 22, - "line": 53 - } + "defaultMessage": "!!!Installing update...", + "description": "\"installingUpdateLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.installingUpdate.link.label" }, { - "defaultMessage": "!!!Cardano node has crashed!", - "description": "Message \"Cardano node has crashed\" on the status icon tooltip", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeHasCrashed", - "start": { - "column": 18, - "line": 59 - } + "defaultMessage": "!!!Download in progress", + "description": "\"downloadProgressLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.downloadProgressLabel" }, { - "defaultMessage": "!!!Cardano node has errored!", - "description": "Message \"Cardano node has errored\" on the status icon tooltip", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeHasErrored", - "start": { - "column": 18, - "line": 65 - } + "defaultMessage": "!!!{downloadTimeLeft} left", + "description": "\"downloadTimeLeft\" for the App Update Overlay", + "id": "appUpdate.overlay.downloadTimeLeft" }, { - "defaultMessage": "!!!Cardano node is unrecoverable!", - "description": "Message \"Cardano node is unrecoverable\" on the status icon tooltip", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.nodeIsUnrecoverable", - "start": { - "column": 23, - "line": 71 - } + "defaultMessage": "!!!({totalDownloaded} of {totalDownloadSize} downloaded)", + "description": "\"downloadProgressData\" for the App Update Overlay", + "id": "appUpdate.overlay.downloadProgressData" }, { - "defaultMessage": "!!!Check your Internet connection!", - "description": "Message \"Check your Internet connection\" on the status icon tooltip", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.checkYourInternetConnection", - "start": { - "column": 31, - "line": 77 - } + "defaultMessage": "!!!We were unable to launch the update installer automatically.", + "description": "\"manualUpdateDescriptionError\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.description.error" }, { - "defaultMessage": "!!!Cardano node is responding!", - "description": "Message \"Cardano node is responding\" on the status icon tooltip", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeRespondingOn", - "start": { - "column": 22, - "line": 83 - } + "defaultMessage": "!!!We were unable to install the update.", + "description": "\"manualUpdateDescriptionErrorLinux\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.description.errorLinux" }, { - "defaultMessage": "!!!Cardano node is not responding!", - "description": "Message \"Cardano node is not responding\" on the status icon tooltip", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeRespondingOff", - "start": { - "column": 23, - "line": 89 - } + "defaultMessage": "!!!Please manually update Daedalus to its latest version.", + "description": "\"manualUpdateDescriptionAction\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.description.action" }, { - "defaultMessage": "!!!Checking if Cardano node is responding!", - "description": "Message \"Checking if Cardano node is responding\" on the status icon tooltip", - "end": { - "column": 3, - "line": 100 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeRespondingLoading", - "start": { - "column": 27, - "line": 95 - } - }, + "defaultMessage": "!!!Follow instructions and manually update", + "description": "\"manualUpdateButtonLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.button.label" + }, { - "defaultMessage": "!!!Cardano node is subscribed!", - "description": "Message \"Cardano node is subscribed\" on the status icon tooltip", - "end": { - "column": 3, - "line": 106 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeSubscribedOn", - "start": { - "column": 22, - "line": 101 - } + "defaultMessage": "!!!https://daedaluswallet.io/en/download/", + "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Mainnet", + "id": "appUpdate.overlay.manualUpdate.button.url.mainnet" }, { - "defaultMessage": "!!!Cardano node is not subscribed!", - "description": "Message \"Cardano node is not subscribed\" on the status icon tooltip", - "end": { - "column": 3, - "line": 112 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeSubscribedOff", - "start": { - "column": 23, - "line": 107 - } + "defaultMessage": "!!!https://daedaluswallet.io/en/flight/", + "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Flight", + "id": "appUpdate.overlay.manualUpdate.button.url.flight" }, { - "defaultMessage": "!!!Checking if Cardano node is subscribed!", - "description": "Message \"Checking if Cardano node is subscribed\" on the status icon tooltip", - "end": { - "column": 3, - "line": 118 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeSubscribedLoading", - "start": { - "column": 27, - "line": 113 - } + "defaultMessage": "!!!https://developers.cardano.org/en/testnets/cardano/get-started/wallet/", + "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Testnet", + "id": "appUpdate.overlay.manualUpdate.button.url.testnet" + } + ], + "path": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Fingerprint", + "description": "\"fingerprint\" param.", + "id": "assets.assetToken.param.fingerprint" }, { - "defaultMessage": "!!!Cardano node time is correct!", - "description": "Message \"Cardano node time is correct\" on the status icon tooltip", - "end": { - "column": 3, - "line": 124 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeTimeCorrectOn", - "start": { - "column": 23, - "line": 119 - } + "defaultMessage": "!!!Policy Id", + "description": "\"policyId\" param.", + "id": "assets.assetToken.param.policyId" }, { - "defaultMessage": "!!!Cardano node time is not correct!", - "description": "Message \"Cardano node time is not correct\" on the status icon tooltip", - "end": { - "column": 3, - "line": 130 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeTimeCorrectOff", - "start": { - "column": 24, - "line": 125 - } + "defaultMessage": "!!!Asset name", + "description": "\"assetName\" param.", + "id": "assets.assetToken.param.assetName" }, { - "defaultMessage": "!!!Checking if Cardano node time is correct!", - "description": "Message \"Checking if Cardano node time is correct\" on the status icon tooltip", - "end": { - "column": 3, - "line": 136 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeTimeCorrectLoading", - "start": { - "column": 28, - "line": 131 - } + "defaultMessage": "!!!Name", + "description": "\"name\" param.", + "id": "assets.assetToken.param.name" }, { - "defaultMessage": "!!!Cardano node is syncing!", - "description": "Message \"Cardano node is syncing\" on the status icon tooltip", - "end": { - "column": 3, - "line": 141 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeSyncingOn", - "start": { - "column": 19, - "line": 137 - } + "defaultMessage": "!!!Ticker", + "description": "\"ticker\" param.", + "id": "assets.assetToken.param.ticker" }, { - "defaultMessage": "!!!Cardano node is not syncing!", - "description": "Message \"Cardano node is not syncing\" on the status icon tooltip", - "end": { - "column": 3, - "line": 147 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeSyncingOff", - "start": { - "column": 20, - "line": 142 - } + "defaultMessage": "!!!Description", + "description": "\"description\" param.", + "id": "assets.assetToken.param.description" }, { - "defaultMessage": "!!!Checking if Cardano node is syncing!", - "description": "Message \"Checking if Cardano node is syncing\" on the status icon tooltip", - "end": { - "column": 3, - "line": 153 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx", - "id": "status.icons.isNodeSyncingLoading", - "start": { - "column": 24, - "line": 148 - } + "defaultMessage": "!!!Blank", + "description": "\"Blank\" param value.", + "id": "assets.assetToken.param.blank" + }, + { + "defaultMessage": "!!!You can configure the number of decimal places for this native token.", + "description": "Asset settings pop over content", + "id": "assets.assetToken.settings.cogPopOver" } ], - "path": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.json" + "path": "source/renderer/app/components/assets/AssetContent.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Starting Cardano node", - "description": "Message \"Starting Cardano node\" on the loading screen.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.startingCardanoMessage", - "start": { - "column": 12, - "line": 13 - } + "defaultMessage": "!!!Recommended configuration for decimal places for this native token is available.", + "description": "Asset settings recommended pop over content", + "id": "assets.warning.available" }, { - "defaultMessage": "!!!This process validates the integrity of local blockchain data.", - "description": "Message \"Starting Cardano node\" on the loading screen.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.startingCardanoDescription", - "start": { - "column": 23, - "line": 18 - } + "defaultMessage": "!!!You are not using the recommended decimal place configuration for this native token.", + "description": "Asset settings recommended pop over content", + "id": "assets.warning.notUsing" }, { - "defaultMessage": "!!!Stopping Cardano node", - "description": "Message \"Stopping Cardano node\" on the loading screen.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.stoppingCardanoMessage", - "start": { - "column": 12, - "line": 24 - } + "defaultMessage": "!!!Send", + "description": "Send button on Wallet summary assets page", + "id": "wallet.summary.asset.tokenSendButton" }, { - "defaultMessage": "!!!This process updates the databases and could take several minutes.
To preserve data integrity, please wait until this process is complete.", - "description": "Message \"Stopping Cardano node\" on the loading screen.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.stoppingCardanoDescription", - "start": { - "column": 23, - "line": 29 - } + "defaultMessage": "!!!Amount", + "description": "Amount label on Wallet summary assets page", + "id": "wallet.summary.asset.amountLabel" }, { - "defaultMessage": "!!!Cardano node stopped", - "description": "Message \"Cardano node stopped\" on the loading screen.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.stoppedCardanoMessage", - "start": { - "column": 11, - "line": 35 - } - }, + "defaultMessage": "!!!Settings", + "description": "Settings label on Wallet summary assets page", + "id": "wallet.summary.asset.settings.button.label" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Updating Cardano node", - "description": "Message \"Updating Cardano node\" on the loading screen.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.updatingCardanoMessage", - "start": { - "column": 12, - "line": 40 - } - }, + "defaultMessage": "!!!Unformatted amount {amount}", + "description": "Unformatted amount", + "id": "assets.assetAmount.unformattedAmount" + } + ], + "path": "source/renderer/app/components/assets/AssetAmount.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Cardano node updated", - "description": "Message \"Cardano node updated\" on the loading screen.", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.updatedCardanoMessage", - "start": { - "column": 11, - "line": 45 - } + "defaultMessage": "!!!Native token settings", + "description": "\"title\" for the Asset settings dialog", + "id": "assets.settings.dialog.title" }, { - "defaultMessage": "!!!Cardano node crashed", - "description": "Message \"Cardano node crashed\" on the loading screen.", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.crashedCardanoMessage", - "start": { - "column": 11, - "line": 50 - } + "defaultMessage": "!!!Updates made here will be applied in other wallets containing this token too.", + "description": "\"description\" for the Asset settings dialog", + "id": "assets.settings.dialog.description" }, { - "defaultMessage": "!!!Unable to start Cardano node. Please submit a support request.", - "description": "Message \"Unable to start Cardano node. Please submit a support request.\" on the loading screen.", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.unrecoverableCardanoMessage", - "start": { - "column": 17, - "line": 55 - } + "defaultMessage": "!!!Unformatted amount", + "description": "\"formattedBalanceLabel\" for the Asset settings dialog", + "id": "assets.settings.dialog.formattedAmount.label" }, { - "defaultMessage": "!!!Connecting to network", - "description": "Message \"Connecting to network\" on the loading screen.", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.connectingToNetworkMessage", - "start": { - "column": 14, - "line": 62 - } + "defaultMessage": "!!!Formatted amount", + "description": "\"unformattedBalanceLabel\" for the Asset settings dialog", + "id": "assets.settings.dialog.unformattedAmount.label" }, { - "defaultMessage": "!!!Network connection lost - reconnecting", - "description": "Message \"Network connection lost - reconnecting\" on the loading screen.", - "end": { - "column": 3, - "line": 72 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.reconnectingToNetworkMessage", - "start": { - "column": 16, - "line": 67 - } + "defaultMessage": "!!!Number of decimal places", + "description": "\"decimalPrecisionLabel\" for the Asset settings dialog", + "id": "assets.settings.dialog.decimalPrecision.label" }, { - "defaultMessage": "!!!Loading wallet data", - "description": "Message \"Loading wallet data\" on the loading screen.", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.loadingWalletData", - "start": { - "column": 21, - "line": 73 - } + "defaultMessage": "!!!(recommended)", + "description": "\"recommended\" for the Asset settings dialog", + "id": "assets.settings.dialog.recommended" }, { - "defaultMessage": "!!!TLS certificate is not valid, please restart Daedalus.", - "description": "The TLS cert is not valid and Daedalus should be restarted", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx", - "id": "loading.screen.errors.tlsCertificateNotValidPleaseRestartError", - "start": { - "column": 31, - "line": 78 - } + "defaultMessage": "!!!(default)", + "description": "\"default\" for the Asset settings dialog", + "id": "assets.settings.dialog.default" } ], - "path": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.json" + "path": "source/renderer/app/components/assets/AssetSettingsDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Verifying on-disk blockchain state", - "description": "One of three progress names on the loading screen.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts", - "id": "loading.screen.validatingChunk", - "start": { - "column": 19, - "line": 5 - } + "defaultMessage": "!!!Token #{assetNumber}", + "description": "\"assetLabel\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.assetLabel" }, { - "defaultMessage": "!!!Verifying the integrity of the blockchain calculating hashes", - "description": "Description of one of three progress names on the loading screen.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts", - "id": "loading.screen.validatingChunkDescription", - "start": { - "column": 30, - "line": 10 - } + "defaultMessage": "!!!unformatted amount", + "description": "\"unformattedAmountLabel\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.unformattedAmountLabel" }, { - "defaultMessage": "!!!Replaying ledger from on-disk blockchain", - "description": "One of three progress names on the loading screen.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts", - "id": "loading.screen.replayedBlock", - "start": { - "column": 17, - "line": 17 - } + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", + "description": "\"unformattedAmountMessageForHardwareWallets\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.unformattedAmountMessageForHardwareWallets" }, { - "defaultMessage": "!!!Looking for a ledger snapshot and updating (recomputing) the latest state", - "description": "Description of one of three progress names on the loading screen.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts", - "id": "loading.screen.replayedBlockDescription", - "start": { - "column": 28, - "line": 22 - } + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", + "description": "\"unformattedAmountMessageForSoftwareWallets\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.unformattedAmountMessageForSoftwareWallets" }, { - "defaultMessage": "!!!Syncing blockchain", - "description": "One of three progress names on the loading screen.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts", - "id": "loading.screen.pushingLedger", - "start": { - "column": 17, - "line": 29 - } + "defaultMessage": "!!!There is no such token in this wallet", + "description": "\"missingToken\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.missingToken" }, { - "defaultMessage": "!!!Performing initial chain selection and finalizing blockchain state", - "description": "Description of one of three progress names on the loading screen.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts", - "id": "loading.screen.pushingLedgerDescription", - "start": { - "column": 28, - "line": 34 - } + "defaultMessage": "!!!Insufficient funds. The balance of the token in this wallet is {formattedBalance} (Unformatted: {unformattedBalance})", + "description": "\"insufficientBalance\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.insufficientBalance" } ], - "path": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.json" + "path": "source/renderer/app/components/assets/AssetTransactionConfirmation.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Unable to sync - incorrect time", - "description": "Title of Sync error overlay", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.overlayTitle", - "start": { - "column": 16, - "line": 15 - } - }, - { - "defaultMessage": "!!!Attention, Daedalus is unable to sync with the blockchain because the time on your machine is different from the global time. Your time is off by 2 hours 12 minutes 54 seconds.", - "description": "First paragraph of Sync error overlay", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.overlayTextP1", - "start": { - "column": 17, - "line": 20 - } + "defaultMessage": "!!!Transaction request", + "description": "\"title\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.title" }, { - "defaultMessage": "!!!To synchronise the time and fix the issue, please read our {supportPortalLink} article.", - "description": "Second paragraph of Sync error overlay", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.overlayTextP2", - "start": { - "column": 17, - "line": 26 - } + "defaultMessage": "!!!triggered from {triggeredFrom}", + "description": "\"subtitle\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.subtitle" }, { - "defaultMessage": "!!!Attention, Daedalus is unable to check if the clock on your computer is synchronized with global time because NTP (Network Time Protocol) servers are unreachable, possibly due to firewalls on your network.", - "description": "Text of Sync error overlay when NTP service is unreachable", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.ntpUnreachableTextP1", - "start": { - "column": 24, - "line": 32 - } + "defaultMessage": "!!!From wallet", + "description": "\"fromWalletLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.fromWalletLabel" }, { - "defaultMessage": "!!!If your computer clock is off by more than 15 seconds, Daedalus will be unable to connect to the network. If you have this issue, please read our Support Portal article to synchronize the time on your machine.", - "description": "Text of Sync error overlay when NTP service is unreachable", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.ntpUnreachableTextP2", - "start": { - "column": 24, - "line": 38 - } + "defaultMessage": "!!!Receiver", + "description": "\"receiver\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.receiver.label" }, { - "defaultMessage": "!!!Support Portal", - "description": "\"Support Portal\" link text", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.supportPortalLink", - "start": { - "column": 21, - "line": 44 - } + "defaultMessage": "!!!Select a wallet", + "description": "\"walletsDropdownPlaceholder\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.walletsDropdown.placeholder" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360010230873", - "description": "Link to \"Machine clock out of sync with Cardano network\" support page", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.supportPortalLinkUrl", - "start": { - "column": 24, - "line": 49 - } + "defaultMessage": "!!!Add a wallet", + "description": "\"addWalletLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.walletsDropdown.addWalletLabel" }, { - "defaultMessage": "!!!Check the time again", - "description": "Text of Check the time again button", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.onCheckTheTimeAgainLink", - "start": { - "column": 27, - "line": 56 - } + "defaultMessage": "!!!Transaction fee", + "description": "\"transactionFeeLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.transactionFee.label" }, { - "defaultMessage": "!!!Continue without clock synchronization checks", - "description": "Text of \"Continue without clock synchronization checks\" button", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx", - "id": "systemTime.error.onContinueWithoutClockSyncCheckLink", - "start": { - "column": 39, - "line": 61 - } - } - ], - "path": "source/renderer/app/components/loading/system-time-error/SystemTimeError.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Newsfeed is empty", - "description": "Newsfeed is empty", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/news/NewsFeed.tsx", - "id": "news.newsfeed.empty", - "start": { - "column": 17, - "line": 15 - } + "defaultMessage": "!!!Additional data", + "description": "\"additionalDataLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.additionalData.label" }, { - "defaultMessage": "Trying to fetch the newsfeed...", - "description": "Trying to fetch the newsfeed...", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/news/NewsFeed.tsx", - "id": "news.newsfeed.noFetch", - "start": { - "column": 19, - "line": 20 - } + "defaultMessage": "!!!Meta data", + "description": "\"metaDataLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.metaData.label" }, { - "defaultMessage": "Newsfeed", - "description": "Newsfeed", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/news/NewsFeed.tsx", - "id": "news.newsfeed.title", - "start": { - "column": 17, - "line": 25 - } + "defaultMessage": "!!!This wallet does not contain the minimum amount of {adaBalanceRequired} which is required for delegation to be available. Please select a wallet with a minimum amount of {adaBalanceRequired}.", + "description": "\"Not enough ada\" error in the dApp transaction request dialog", + "id": "dapp.transaction.request.error.notEnoughAda" } ], - "path": "source/renderer/app/components/news/NewsFeed.json" + "path": "source/renderer/app/components/dapp/DappTransactionRequest.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Byron", - "description": "Label \"Byron\" on the legacy badge.", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/components/notifications/LegacyBadge.tsx", - "id": "wallet.byron.badge.label", - "start": { - "column": 9, - "line": 8 - } - } - ], - "path": "source/renderer/app/components/notifications/LegacyBadge.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Connect your device and enter your PIN to unlock it", + "description": "\"Connect your device and enter your PIN to unlock it\" device state", + "id": "wallet.hardware.deviceStatus.connecting" + }, { - "defaultMessage": "!!!Move funds from {activeWalletName}", - "description": "Title \"Move funds from the legacy wallet\" on the legacy notification.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.moveFundsTitle", - "start": { - "column": 18, - "line": 12 - } + "defaultMessage": "!!!Disconnect and reconnect your device to restart the process.", + "description": "\"Connect failed\" device state", + "id": "wallet.hardware.deviceStatus.connecting.failed" }, { - "defaultMessage": "!!!Create a Shelley wallet", - "description": "Title \"Create a Shelley wallet\" on the legacy notification.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.addWalletTitle", - "start": { - "column": 18, - "line": 18 - } + "defaultMessage": "!!!Connect the \"{walletName}\" device", + "description": "\"Connect the IOHK Trezor 1 device\" device state", + "id": "wallet.hardware.deviceStatus.connecting.known" }, { - "defaultMessage": "!!!\"{activeWalletName}\"\" is a Byron legacy wallet that does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new wallet that is Shelley-compatible.", - "description": "Legacy notification description.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.moveFundsDescription.line1", - "start": { - "column": 29, - "line": 23 - } + "defaultMessage": "!!!Launch Cardano application on your device", + "description": "\"Launch Cardano application on your device\" device state", + "id": "wallet.hardware.deviceStatus.launching_cardano_app" }, { - "defaultMessage": "!!!You can create a {moveFundsLink} or move funds to one of your existing wallets.", - "description": "Legacy notification description.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.moveFundsDescription.line2", - "start": { - "column": 29, - "line": 29 - } + "defaultMessage": "!!!Export the public key on your device", + "description": "\"Confirm exporting your public key on your device\" device state", + "id": "wallet.hardware.deviceStatus.exporting_public_key" }, { - "defaultMessage": "!!!brand new wallet", - "description": "Legacy notification link label.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.moveFundsDescription.line2.link.label", - "start": { - "column": 22, - "line": 35 - } + "defaultMessage": "!!!Exporting the public key failed", + "description": "\"Exporting public key failed\" device state", + "id": "wallet.hardware.deviceStatus.exporting_public_key_failed" }, { - "defaultMessage": "!!!\"{transferWalletName}\"\" is a legacy wallet. It does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new, Shelley-compatible wallet. You can create a brand new wallet or move funds to one of the existing wallets.", - "description": "Legacy notification description WithFunds.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.legacy.notification.descriptionWithFunds", - "start": { - "column": 24, - "line": 40 - } + "defaultMessage": "!!!We do not recognize this wallet on your device. Please ensure that you are using the same device that you selected for pairing {walletName} and that you have entered the correct passphrase.", + "description": "\"Unrecognized wallet\" device state", + "id": "wallet.hardware.deviceStatus.unrecognized_wallet" }, { - "defaultMessage": "!!!\"{activeWalletName}\"\" is a Byron legacy wallet that does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new wallet that is Shelley-compatible.", - "description": "Legacy notification description.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.addWalletDescription.line1", - "start": { - "column": 29, - "line": 46 - } + "defaultMessage": "!!!Disconnect and reconnect your device to restart the process.", + "description": "\"Disconnect and reconnect your device to start the process again\" device state", + "id": "wallet.hardware.deviceStatus.exportingPublicKeyError" }, { - "defaultMessage": "!!!Since all of your wallets are Byron legacy wallets you will first need to create a new Shelley wallet.", - "description": "Legacy notification description.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.addWalletDescription.line2", - "start": { - "column": 29, - "line": 52 - } + "defaultMessage": "!!!Enter passphrase if needed", + "description": "\"Enter passphrase if needed\" device sub-state", + "id": "wallet.hardware.deviceStatus.enterPassphrase" }, { - "defaultMessage": "!!!Learn more", - "description": "Learn more action of legacy notification.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.actionLearnMore", - "start": { - "column": 19, - "line": 58 - } + "defaultMessage": "!!!Device ready", + "description": "\"Device ready\" device state", + "id": "wallet.hardware.deviceStatus.ready" }, { - "defaultMessage": "!!!Move ada to an existing wallet", - "description": "Move Move ada from this wallet of legacy notification.", - "end": { - "column": 3, - "line": 67 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.actionMove", - "start": { - "column": 14, - "line": 63 - } + "defaultMessage": "!!!Confirm the transaction using the \"{walletName}\" device", + "description": "\"Confirm the transaction using the IOHK Trezor 1 device\" device state", + "id": "wallet.hardware.deviceStatus.verifying_transaction" }, { - "defaultMessage": "!!!Create a new wallet", - "description": "Create a new wallet action of legacy notification.", - "end": { - "column": 3, - "line": 72 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.addWallet", - "start": { - "column": 13, - "line": 68 - } + "defaultMessage": "!!!Transaction verification and signing failed", + "description": "\"Transaction verification and signing failed\" device state", + "id": "wallet.hardware.deviceStatus.verifying_transaction_failed" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360038726373", - "description": "\"Learn more\" link URL", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/components/notifications/LegacyNotification.tsx", - "id": "wallet.byron.notification.learnMore.url", - "start": { - "column": 20, - "line": 73 - } - } - ], - "path": "source/renderer/app/components/notifications/LegacyNotification.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Transaction confirmed", + "description": "\"Transaction verified and signed\" device state", + "id": "wallet.hardware.deviceStatus.verifying_transaction_succeeded" + }, { - "defaultMessage": "!!!The balance and transaction history of this wallet is {percentage}% synced with the blockchain.", - "description": "Status message \"Wallet restore in progress\" shown while wallet is being restored.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/notifications/RestoreNotification.tsx", - "id": "wallet.statusMessages.activeRestore", - "start": { - "column": 24, - "line": 11 - } - } - ], - "path": "source/renderer/app/components/notifications/RestoreNotification.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Trezor Bridge not installed!", + "description": "\"Trezor Bridge not installed! {instructionsLink}\" device state", + "id": "wallet.hardware.deviceStatus.trezor_bridge_failure" + }, { - "defaultMessage": "!!!Wallet data migration", - "description": "Title for the Data Layer Migration screen.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx", - "id": "profile.dataLayerMigration.title", - "start": { - "column": 9, - "line": 10 - } + "defaultMessage": "!!!Installation instructions", + "description": "Trezor Bridge installation instructions link label", + "id": "wallet.hardware.deviceStatus.trezor_bridge_failure.link.label" }, { - "defaultMessage": "!!!You have installed a version of Daedalus that changes how wallet data is stored and managed. Because of this, all of your wallets need to be restored and synchronized with the complete history of the Cardano blockchain.", - "description": "Content for the Data Layer Migration screen.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx", - "id": "profile.dataLayerMigration.content1", - "start": { - "column": 12, - "line": 15 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", + "description": "URL for the \"Trezor Bridge\" update", + "id": "wallet.hardware.deviceStatus.trezor_bridge_failure.link.url" }, { - "defaultMessage": "!!!This is an automatic process and does not require any action on your behalf.", - "description": "Content for the Data Layer Migration screen.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx", - "id": "profile.dataLayerMigration.content2", - "start": { - "column": 12, - "line": 21 - } + "defaultMessage": "!!!Unsupported firmware! {instructionsLink}", + "description": "\"Unsupported firmware!\" device state", + "id": "wallet.hardware.deviceStatus.wrong_firmware" }, { - "defaultMessage": "!!!Your transaction history and used addresses will appear in your wallets as they are recovered during the restoration process. Addresses that were not used will not be recovered because they are not recorded on the blockchain. If funds were sent to those addresses you will receive the funds and those addresses will appear in your wallet.", - "description": "Content for the Data Layer Migration screen.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx", - "id": "profile.dataLayerMigration.content3", - "start": { - "column": 12, - "line": 27 - } + "defaultMessage": "!!!Firmware update instructions", + "description": "Firmware update installation instructions link label", + "id": "wallet.hardware.deviceStatus.wrong_firmware.link.label" }, { - "defaultMessage": "!!!Start migration", - "description": "Submit label for the Data Layer Migration screen.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx", - "id": "profile.dataLayerMigration.submitLabel", - "start": { - "column": 15, - "line": 33 - } - } - ], - "path": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!I agree with terms of service", - "description": "Label for the \"I agree with terms of service\" checkbox.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/profile/terms-of-use/TermsOfUseForm.tsx", - "id": "profile.termsOfUse.checkboxLabel", - "start": { - "column": 17, - "line": 14 - } - }, - { - "defaultMessage": "!!!I understand that the terms of use are only available in English and agree to the terms of use", - "description": "Label for the \"I agree with terms of service\" checkbox when terms of use are not translated.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/profile/terms-of-use/TermsOfUseForm.tsx", - "id": "profile.termsOfUse.checkboxLabelWithDisclaimer", - "start": { - "column": 31, - "line": 19 - } - }, - { - "defaultMessage": "!!!Continue", - "description": "Label for the \"Terms of service\" form submit button.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/profile/terms-of-use/TermsOfUseForm.tsx", - "id": "profile.termsOfUse.submitLabel", - "start": { - "column": 15, - "line": 26 - } - } - ], - "path": "source/renderer/app/components/profile/terms-of-use/TermsOfUseForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Theme", - "description": "Label for the \"Theme\" selection on the display settings page.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeLabel", - "start": { - "column": 14, - "line": 27 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", + "description": "URL for the \"Firmware Update\"", + "id": "wallet.hardware.deviceStatus.wrong_firmware.link.url" }, { - "defaultMessage": "!!!Incentivized Testnet", - "description": "Name of the \"Incentivized Testnet\" theme on the display settings page.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.incentivizedTestnet", - "start": { - "column": 28, - "line": 33 - } + "defaultMessage": "!!!The device is not supported!", + "description": "\"The device is not supported!\" device state", + "id": "wallet.hardware.deviceStatus.unsupported_device" }, { - "defaultMessage": "!!!Light blue", - "description": "Name of the \"Light blue\" theme on the display settings page.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.lightBlue", - "start": { - "column": 18, - "line": 39 - } + "defaultMessage": "!!!Outdated Ledger software!! {instructionsLink}", + "description": "\"Unsupported firmware!\" device state", + "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version" }, { - "defaultMessage": "!!!Cardano", - "description": "Name of the \"Cardano\" theme on the display settings page.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.cardano", - "start": { - "column": 16, - "line": 44 - } + "defaultMessage": "!!!Software update instructions", + "description": "Firmware update installation instructions link label", + "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version.link.label" }, { - "defaultMessage": "!!!Dark blue", - "description": "Name of the \"Dark blue\" theme on the display settings page.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.darkBlue", - "start": { - "column": 17, - "line": 49 - } + "defaultMessage": "!!!https://support.ledger.com/hc/en-us/articles/360020095874-Cardano-ADA-", + "description": "URL for the \"Firmware Update\"", + "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version.link.url" }, { - "defaultMessage": "!!!Dark Cardano", - "description": "Name of the \"Dark cardano\" theme on the display settings page.", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.darkCardano", - "start": { - "column": 20, - "line": 54 - } + "defaultMessage": "!!!Verify address on your \"{walletName}\" device", + "description": "\"Verify receiving address on your Hardware Wallet device", + "id": "wallet.hardware.deviceStatus.verifying_address" }, { - "defaultMessage": "!!!Flight Candidate", - "description": "Name of the \"Flight Candidate\" theme on the display settings page.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.flightCandidate", - "start": { - "column": 24, - "line": 60 - } + "defaultMessage": "!!!Please answer the question below", + "description": "\"Confirm receiving address on your Hardware Wallet device", + "id": "wallet.hardware.deviceStatus.verifying_address_confirmation" }, { - "defaultMessage": "!!!Shelley Testnet", - "description": "Name of the \"Shelley Testnet\" theme on the display settings page.", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.shelleyTestnet", - "start": { - "column": 23, - "line": 66 - } + "defaultMessage": "!!!Address verification failed", + "description": "\"Address verification failed\" device state", + "id": "wallet.hardware.deviceStatus.verifying_address_failed" }, { - "defaultMessage": "!!!Yellow", - "description": "Name of the \"Yellow\" theme on the display settings page.", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.yellow", - "start": { - "column": 15, - "line": 72 - } + "defaultMessage": "!!!Verification was aborted by the user", + "description": "\"Address verification aborted\" device state", + "id": "wallet.hardware.deviceStatus.verifying_address_aborted" }, { - "defaultMessage": "!!!White", - "description": "Name of the \"White\" theme on the display settings page.", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/settings/categories/DisplaySettings.tsx", - "id": "settings.display.themeNames.white", - "start": { - "column": 14, - "line": 77 - } + "defaultMessage": "!!!Address verified", + "description": "\"Address verified\" device state", + "id": "wallet.hardware.deviceStatus.verifying_address_succeeded" } ], - "path": "source/renderer/app/components/settings/categories/DisplaySettings.json" + "path": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Discreet mode", - "description": "Title for the \"Discreet mode\" setting in the security category.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/components/settings/categories/SecuritySettings.messages.ts", - "id": "settings.security.discreetMode.title", - "start": { - "column": 21, - "line": 4 - } - }, - { - "defaultMessage": "!!!This mode uses asterisks to hide sensitive data", - "description": "Description for the \"Discreet mode\" setting in the security category.", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/settings/categories/SecuritySettings.messages.ts", - "id": "settings.security.discreetMode.description", - "start": { - "column": 27, - "line": 10 - } + "defaultMessage": "Newsfeed is empty", + "description": "Newsfeed is empty", + "id": "news.newsfeed.empty" }, { - "defaultMessage": "!!!Start the application in Discreet mode", - "description": "Title for the \"Open in discreet mode\" setting in the security category.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/settings/categories/SecuritySettings.messages.ts", - "id": "settings.security.openInDiscreetMode.title", - "start": { - "column": 27, - "line": 16 - } + "defaultMessage": "Trying to fetch the newsfeed...", + "description": "Trying to fetch the newsfeed...", + "id": "news.newsfeed.noFetch" }, { - "defaultMessage": "!!!Daedalus will start with Discreet mode enabled by default", - "description": "Description for the \"Open in discreet mode\" setting in the security category.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/settings/categories/SecuritySettings.messages.ts", - "id": "settings.security.openInDiscreetMode.description", - "start": { - "column": 33, - "line": 22 - } + "defaultMessage": "Newsfeed", + "description": "Newsfeed", + "id": "news.newsfeed.title" } ], - "path": "source/renderer/app/components/settings/categories/SecuritySettings.messages.json" + "path": "source/renderer/app/components/news/NewsFeed.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!The {link} is an off-chain metadata server that enables the fast loading of stake pool details. Stake pools are also curated and each server has a different curation policy.", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.description", - "start": { - "column": 15, - "line": 29 - } - }, - { - "defaultMessage": "!!!Stakepool Metadata Aggregation Server (SMASH)", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionLinkLabel", - "start": { - "column": 24, - "line": 35 - } - }, - { - "defaultMessage": "!!!https://iohk.io/en/blog/posts/2020/11/17/in-pools-we-trust/", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionLinkUrl", - "start": { - "column": 22, - "line": 40 - } - }, - { - "defaultMessage": "!!!The IOHK server ensures that registered stake pools are valid, helps to avoid duplicated ticker names or trademarks, and checks that the pools do not feature potentially offensive or harmful information.", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionIOHKContent1", - "start": { - "column": 27, - "line": 46 - } - }, - { - "defaultMessage": "!!!This allows us to deal with any scams, trolls, or abusive behavior by filtering out potentially problematic actors. {link} about the IOHK SMASH server.", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionIOHKContent2", - "start": { - "column": 27, - "line": 52 - } - }, - { - "defaultMessage": "!!!Read more", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionIOHKLinkLabel", - "start": { - "column": 28, - "line": 58 - } - }, - { - "defaultMessage": "!!!https://iohk.io/en/blog/posts/2020/11/17/in-pools-we-trust/", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionIOHKLinkUrl", - "start": { - "column": 26, - "line": 63 - } - }, - { - "defaultMessage": "!!!This option is not recommended! Without the off-chain metadata server your Daedalus client will fetch this data by contacting every stake pool individually, which is a very slow and resource-consuming process. The list of stake pools received is not curated, so Daedalus will receive legitimate pools, duplicates, and fake pools. An added risk to this process is that your antivirus or antimalware software could recognize the thousands of network requests as malicious behavior by the Daedalus client.", - "description": "description for the Stake Pools settings page.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.descriptionNone", - "start": { - "column": 19, - "line": 69 - } - }, - { - "defaultMessage": "!!!Off-chain metadata server (SMASH)", - "description": "smashSelectLabel for the \"Smash\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.select.label", - "start": { - "column": 20, - "line": 75 - } - }, - { - "defaultMessage": "!!!IOHK (Recommended)", - "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 86 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.select.IOHKServer", - "start": { - "column": 25, - "line": 81 - } - }, - { - "defaultMessage": "!!!None - let my Daedalus client fetch the data", - "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 92 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.select.direct", - "start": { - "column": 21, - "line": 87 - } - }, - { - "defaultMessage": "!!!Custom server", - "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 98 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smash.select.customServer", - "start": { - "column": 27, - "line": 93 - } - }, - { - "defaultMessage": "!!!SMASH server URL", - "description": "smashURLInputLabel for the \"Smash Custom Server\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 104 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smashUrl.input.label", - "start": { - "column": 22, - "line": 99 - } - }, - { - "defaultMessage": "!!!Enter custom server URL", - "description": "smashUrlInputPlaceholder for the \"Smash Custom Server\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 110 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smashUrl.input.placeholder", - "start": { - "column": 28, - "line": 105 - } - }, - { - "defaultMessage": "!!!Your changes have been saved", - "description": "Message \"Your changes have been saved\" for inline editing (eg. on Profile Settings page).", - "end": { - "column": 3, - "line": 116 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "inline.editing.input.changesSaved", - "start": { - "column": 16, - "line": 111 - } - }, - { - "defaultMessage": "!!!Invalid URL", - "description": "invalidUrl for the \"Smash Custom Server\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 122 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smashUrl.input.invalidUrl", - "start": { - "column": 14, - "line": 117 - } - }, - { - "defaultMessage": "!!!The URL should start with \"https://\"", - "description": "invalidUrlPrefix for the \"Smash Custom Server\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 128 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smashUrl.input.invalidUrlPrefix", - "start": { - "column": 20, - "line": 123 - } - }, - { - "defaultMessage": "!!!Only \"https://\" protocol and hostname (e.g. domain.com) are allowed", - "description": "invalidUrlParameter for the \"Smash Custom Server\" selection on the Stake Pools settings page.", - "end": { - "column": 3, - "line": 135 - }, - "file": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx", - "id": "settings.stakePools.smashUrl.input.invalidUrlParameter", - "start": { - "column": 23, - "line": 129 - } + "defaultMessage": "!!!Byron", + "description": "Label \"Byron\" on the legacy badge.", + "id": "wallet.byron.badge.label" } ], - "path": "source/renderer/app/components/settings/categories/StakePoolsSettings.json" + "path": "source/renderer/app/components/notifications/LegacyBadge.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Help and support", - "description": "Title \"Help and support\" on the support settings page.", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.faq.title", - "start": { - "column": 12, - "line": 11 - } - }, - { - "defaultMessage": "!!!If you are experiencing a problem, please look for guidance using the list of {faqLink} on the support pages. If you can’t find a solution, please submit a support ticket.", - "description": "Content for the \"Help and support\" section on the support settings page.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.faq.content", - "start": { - "column": 14, - "line": 16 - } - }, - { - "defaultMessage": "!!!Known Issues", - "description": "\"Known Issues\" link in the \"Help and support\" section on the support settings page", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.faq.faqLink", - "start": { - "column": 11, - "line": 23 - } + "defaultMessage": "!!!Move funds from {activeWalletName}", + "description": "Title \"Move funds from the legacy wallet\" on the legacy notification.", + "id": "wallet.byron.notification.moveFundsTitle" }, { - "defaultMessage": "!!!Steps for creating a support request:", - "description": "Title \"Steps for creating a support request\" on the support settings page.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.title", - "start": { - "column": 14, - "line": 29 - } + "defaultMessage": "!!!Create a Shelley wallet", + "description": "Title \"Create a Shelley wallet\" on the legacy notification.", + "id": "wallet.byron.notification.addWalletTitle" }, { - "defaultMessage": "!!!Download the logs", - "description": "Title \"Download the logs\" on the support settings page.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.downloadLogs.title", - "start": { - "column": 26, - "line": 35 - } + "defaultMessage": "!!!\"{activeWalletName}\"\" is a Byron legacy wallet that does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new wallet that is Shelley-compatible.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.moveFundsDescription.line1" }, { - "defaultMessage": "!!!Please {downloadLogsLink} and attach the downloaded file when submitting a support request to help the support team investigate the issue. Logs do not contain sensitive information.", - "description": "Description of \"Download the logs\" on the support settings page.", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.downloadLogs.description", - "start": { - "column": 32, - "line": 40 - } + "defaultMessage": "!!!You can create a {moveFundsLink} or move funds to one of your existing wallets.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.moveFundsDescription.line2" }, { - "defaultMessage": "!!!download your logs here", - "description": "\"download your logs here\" link in the Logs section on the support settings page", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.downloadLogs.link", - "start": { - "column": 25, - "line": 47 - } + "defaultMessage": "!!!brand new wallet", + "description": "Legacy notification link label.", + "id": "wallet.byron.notification.moveFundsDescription.line2.link.label" }, { - "defaultMessage": "!!!Report a problem", - "description": "Title \"Report a problem\" on the support settings page.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.reportProblem.title", - "start": { - "column": 27, - "line": 53 - } + "defaultMessage": "!!!\"{transferWalletName}\"\" is a legacy wallet. It does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new, Shelley-compatible wallet. You can create a brand new wallet or move funds to one of the existing wallets.", + "description": "Legacy notification description WithFunds.", + "id": "wallet.legacy.notification.descriptionWithFunds" }, { - "defaultMessage": "!!!Please {downloadLogsLink} and attach the downloaded file when submitting a support request to help the support team investigate the issue. Logs do not contain sensitive information.", - "description": "Description of \"Download the logs\" on the support settings page.", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.reportProblem.description", - "start": { - "column": 33, - "line": 58 - } + "defaultMessage": "!!!\"{activeWalletName}\"\" is a Byron legacy wallet that does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new wallet that is Shelley-compatible.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.addWalletDescription.line1" }, { - "defaultMessage": "!!!download your logs here", - "description": "\"download your logs here\" link in the Logs section on the support settings page", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/components/settings/categories/SupportSettings.tsx", - "id": "settings.support.steps.reportProblem.link", - "start": { - "column": 26, - "line": 65 - } - } - ], - "path": "source/renderer/app/components/settings/categories/SupportSettings.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Display ada balances in other currency", - "description": "titleLabel for the Currency settings in the Wallets settings page.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/settings/categories/WalletsSettings.tsx", - "id": "settings.wallets.currency.titleLabel", - "start": { - "column": 22, - "line": 14 - } + "defaultMessage": "!!!Since all of your wallets are Byron legacy wallets you will first need to create a new Shelley wallet.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.addWalletDescription.line2" }, { - "defaultMessage": "!!!Select a conversion currency for displaying your ada balances.", - "description": "currencyDescription for the Currency settings in the Wallets settings page.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/settings/categories/WalletsSettings.tsx", - "id": "settings.wallets.currency.description", - "start": { - "column": 23, - "line": 20 - } + "defaultMessage": "!!!Learn more", + "description": "Learn more action of legacy notification.", + "id": "wallet.byron.notification.actionLearnMore" }, { - "defaultMessage": "!!!Select currency", - "description": "currencySelectLabel for the Currency settings in the Wallets settings page.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/settings/categories/WalletsSettings.tsx", - "id": "settings.wallets.currency.selectLabel", - "start": { - "column": 23, - "line": 27 - } + "defaultMessage": "!!!Move ada to an existing wallet", + "description": "Move Move ada from this wallet of legacy notification.", + "id": "wallet.byron.notification.actionMove" }, { - "defaultMessage": "!!!Conversion rates are provided by CoinGecko without any warranty. Please use the calculated conversion value only as a reference. Converted balances reflect the current global average price of ada on active cryptocurrency exchanges, as tracked by CoinGecko. Ada conversion is available only to fiat and cryptocurrencies that are supported by CoinGecko, other local currency conversions may not be available.", - "description": "currencyDisclaimer for the Currency settings in the Wallets settings page.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/settings/categories/WalletsSettings.tsx", - "id": "settings.wallets.currency.disclaimer", - "start": { - "column": 22, - "line": 33 - } + "defaultMessage": "!!!Create a new wallet", + "description": "Create a new wallet action of legacy notification.", + "id": "wallet.byron.notification.addWallet" }, { - "defaultMessage": "!!!Powered by", - "description": "currencyPoweredByLabel for the Currency settings in the Wallets settings page.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/settings/categories/WalletsSettings.tsx", - "id": "settings.wallets.currency.poweredBy.label", - "start": { - "column": 26, - "line": 40 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360038726373", + "description": "\"Learn more\" link URL", + "id": "wallet.byron.notification.learnMore.url" } ], - "path": "source/renderer/app/components/settings/categories/WalletsSettings.json" + "path": "source/renderer/app/components/notifications/LegacyNotification.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!General", - "description": "Label for the \"General\" link in the settings menu.", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.general.link.label", - "start": { - "column": 11, - "line": 4 - } - }, - { - "defaultMessage": "!!!Security", - "description": "Label for the \"Security\" link in the settings menu.", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.security.link.label", - "start": { - "column": 12, - "line": 9 - } - }, - { - "defaultMessage": "!!!Wallets", - "description": "Label for the \"Wallets\" link in the settings menu.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.wallets.link.label", - "start": { - "column": 11, - "line": 14 - } - }, - { - "defaultMessage": "!!!Stake Pools", - "description": "Label for the \"Support\" link in the settings menu.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.stakePools.link.label", - "start": { - "column": 14, - "line": 19 - } - }, - { - "defaultMessage": "!!!Support", - "description": "Label for the \"Support\" link in the settings menu.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.support.link.label", - "start": { - "column": 11, - "line": 24 - } - }, - { - "defaultMessage": "!!!Terms of service", - "description": "Label for the \"Terms of service\" link in the settings menu.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.termsOfUse.link.label", - "start": { - "column": 14, - "line": 29 - } - }, - { - "defaultMessage": "!!!Themes", - "description": "Label for the \"Themes\" link in the settings menu.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts", - "id": "settings.menu.display.link.label", - "start": { - "column": 11, - "line": 34 - } + "defaultMessage": "!!!The balance and transaction history of this wallet is {percentage}% synced with the blockchain.", + "description": "Status message \"Wallet restore in progress\" shown while wallet is being restored.", + "id": "wallet.statusMessages.activeRestore" } ], - "path": "source/renderer/app/components/settings/menu/SettingsMenu.messages.json" + "path": "source/renderer/app/components/notifications/RestoreNotification.tsx" }, { "descriptors": [ { "defaultMessage": "!!!Wallets", "description": "Text for the tooltip of wallets category", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategory.messages.ts", - "id": "sidebar.categoryTooltip.wallets", - "start": { - "column": 11, - "line": 4 - } + "id": "sidebar.categoryTooltip.wallets" }, { "defaultMessage": "!!!Staking", "description": "Text for the tooltip of staking category", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategory.messages.ts", - "id": "sidebar.categoryTooltip.staking", - "start": { - "column": 11, - "line": 9 - } + "id": "sidebar.categoryTooltip.staking" }, { "defaultMessage": "!!!Settings", "description": "Text for the tooltip of settings category", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategory.messages.ts", - "id": "sidebar.categoryTooltip.settings", - "start": { - "column": 12, - "line": 14 - } + "id": "sidebar.categoryTooltip.settings" }, { "defaultMessage": "!!!Voting", "description": "Text for the tooltip of voting category", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategory.messages.ts", - "id": "sidebar.categoryTooltip.voting", - "start": { - "column": 10, - "line": 19 - } + "id": "sidebar.categoryTooltip.voting" } ], - "path": "source/renderer/app/components/sidebar/SidebarCategory.messages.json" + "path": "source/renderer/app/components/sidebar/SidebarCategory.messages.ts" }, { "descriptors": [ { "defaultMessage": "!!!Mainnet vx", "description": "Label for mainnet network with version.", - "end": { - "column": 3, - "line": 11 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.mainnetLabel", - "start": { - "column": 11, - "line": 7 - } - }, + "id": "test.environment.mainnetLabel" + } + ], + "path": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx" + }, + { + "descriptors": [ { "defaultMessage": "!!!Cardano mainnet - Daedalus Flight", "description": "Label for Daedalus Flight with version.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.daedalusFlightLabel", - "start": { - "column": 10, - "line": 12 - } + "id": "test.environment.daedalusFlightLabel" }, { "defaultMessage": "!!!Testnet vx", "description": "Label for testnet with version.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.testnetLabel", - "start": { - "column": 11, - "line": 17 - } + "id": "test.environment.testnetLabel" }, { "defaultMessage": "!!!Staging vx", "description": "Label for staging network with version.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.stagingLabel", - "start": { - "column": 11, - "line": 22 - } + "id": "test.environment.stagingLabel" }, { "defaultMessage": "!!!Shelley QA", "description": "Label for shelley_qa with version.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.shelleyQaLabel", - "start": { - "column": 14, - "line": 27 - } + "id": "test.environment.shelleyQaLabel" }, { "defaultMessage": "!!!Alonzo Purple", "description": "Label for alonzo_purple with version.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.alonzoPurpleLabel", - "start": { - "column": 17, - "line": 32 - } + "id": "test.environment.alonzoPurpleLabel" }, { "defaultMessage": "!!!Selfnode vx", "description": "Label for selfnode with version.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.selfnodeLabel", - "start": { - "column": 12, - "line": 37 - } + "id": "test.environment.selfnodeLabel" }, { "defaultMessage": "!!!Development vx", "description": "Label for development with version.", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx", - "id": "test.environment.developmentLabel", - "start": { - "column": 15, - "line": 42 - } + "id": "test.environment.developmentLabel" } ], - "path": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.json" + "path": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Add wallet", - "description": "Label for the \"Add wallet\" button in wallet sidebar menu.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.addWallet", - "start": { - "column": 16, - "line": 25 - } - }, - { - "defaultMessage": "!!!Date", - "description": "Label for the \"Date\" sort button", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.sortByDateButton", - "start": { - "column": 20, - "line": 30 - } - }, - { - "defaultMessage": "!!!Sort wallets by creation date", - "description": "Tooltip message for Date sort button", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.sortByDateTooltip", - "start": { - "column": 21, - "line": 35 - } - }, - { - "defaultMessage": "!!!Balance", - "description": "Label for the \"Balance\" sort button", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.sortByBalanceButton", - "start": { - "column": 23, - "line": 40 - } - }, - { - "defaultMessage": "!!!Sort wallets by balance", - "description": "Tooltip message for Balance sort button", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.sortByBalanceTooltip", - "start": { - "column": 24, - "line": 45 - } - }, - { - "defaultMessage": "!!!A – Z", - "description": "Label for the \"Name\" sort button", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.sortByNameButton", - "start": { - "column": 20, - "line": 50 - } - }, - { - "defaultMessage": "!!!Sort wallets by name", - "description": "Tooltip message for Name sort button", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx", - "id": "sidebar.wallets.sortByNameTooltip", - "start": { - "column": 21, - "line": 55 - } - } - ], - "path": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Filter", - "description": "Search placeholder for the sidebar wallet menu", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/sidebar/wallets/WalletSearch.tsx", - "id": "sidebar.wallets.search.placeholder", - "start": { - "column": 15, - "line": 14 - } - } - ], - "path": "source/renderer/app/components/sidebar/wallets/WalletSearch.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Daedalus", - "description": "Daedalus", - "end": { - "column": 3, - "line": 10 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.title", - "start": { - "column": 9, - "line": 6 - } + "defaultMessage": "!!!Daedalus", + "description": "Daedalus", + "id": "static.splash.network.title" }, { "defaultMessage": "!!!FLIGHT", "description": "FLIGHT", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightVersionName", - "start": { - "column": 15, - "line": 11 - } + "id": "static.splash.network.flightVersionName" }, { "defaultMessage": "!!!CARDANO MAINNET", "description": "Rewards", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightNetworkName", - "start": { - "column": 15, - "line": 16 - } + "id": "static.splash.network.flightNetworkName" }, { "defaultMessage": "!!!Thank you for downloading the Daedalus Flight wallet! This version of Daedalus is specially created so users can test new features and we can squash usability bugs before pushing releases to the mainnet production version of the Daedalus wallet.", "description": "flightDescription1 on network splash screen", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightDescription1", - "start": { - "column": 22, - "line": 21 - } + "id": "static.splash.network.flightDescription1" }, { "defaultMessage": "!!!Although Flight candidates are designed to test functionality, this is on the mainnet and will be using mainnet ada. Transactions made using Flight candidates will be real ada payments. If you are not a power user, we recommend you stick to using our stable, fully-tested production Daedalus wallet client. It is very important to note that transactions performed in Daedalus Flight are real and your funds will be transferred because the Cardano blockchain will be validating all transactions on mainnet.", "description": "flightDescription2 on network splash screen", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightDescription2", - "start": { - "column": 22, - "line": 27 - } + "id": "static.splash.network.flightDescription2" }, { "defaultMessage": "!!!This is a separate and secure installation, but you will be able to run both Flight and production versions of Daedalus at the same time. To help you differentiate between the two wallets, Daedalus Flight will have a different, dark-blue-and-yellow user interface theme.", "description": "flightDescription3 on network splash screen", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightDescription3", - "start": { - "column": 22, - "line": 33 - } + "id": "static.splash.network.flightDescription3" }, { "defaultMessage": "!!!If you already have a production version of Daedalus installed on your computer, your wallets should be visible in this Flight version as well, and you should have access to your ada in both versions of Daedalus.", "description": "flightDescription4 on network splash screen", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightDescription4", - "start": { - "column": 22, - "line": 39 - } + "id": "static.splash.network.flightDescription4" }, { "defaultMessage": "!!!If you do spot any bugs or inconsistencies in balances and transaction history when using Flight candidates, or want to suggest improvements, feed them directly back to the IOHK development team by submitting a support ticket from the wallet. Wherever relevant, please include your wallet logs so the team can properly assess any issues.", "description": "flightDescription5 on network splash screen", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightDescription5", - "start": { - "column": 22, - "line": 45 - } + "id": "static.splash.network.flightDescription5" }, { "defaultMessage": "!!!I understand", "description": "I understand", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.buttonLabel", - "start": { - "column": 15, - "line": 51 - } + "id": "static.splash.network.buttonLabel" }, { "defaultMessage": "!!!Learn more", "description": "Learn more", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.linkLabel", - "start": { - "column": 13, - "line": 56 - } + "id": "static.splash.network.linkLabel" }, { "defaultMessage": "!!!https://daedaluswallet.io/flight", "description": "\"Learn more\" link URL on the network splash screen", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/splash/SplashNetworkFlight.tsx", - "id": "static.splash.network.flightLinkUrl", - "start": { - "column": 11, - "line": 61 - } + "id": "static.splash.network.flightLinkUrl" } ], - "path": "source/renderer/app/components/splash/SplashNetworkFlight.json" + "path": "source/renderer/app/components/splash/SplashNetworkFlight.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Shelley upgrade", - "description": "Headline for the Decentralisation notification.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/staking/countdown/StakingCountdown.tsx", - "id": "staking.delegationCountdown.heading", - "start": { - "column": 11, - "line": 10 - } + "defaultMessage": "!!!Daedalus", + "description": "About \"title\"", + "id": "static.about.title" }, { - "defaultMessage": "!!!Cardano will soon start transitioning from a federated to a decentralized system. The first step is the activation of the Shelley upgrade. Once the upgrade is complete, stake pools will start registering and users will be able to delegate their wallets. Two epochs (10 days) later, stake pools will begin producing blocks and users could start earning rewards from delegating their stakes. The first rewards, where due, will be distributed two more epochs later (10 days).", - "description": "Info for the Decentralisation notification.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/staking/countdown/StakingCountdown.tsx", - "id": "staking.delegationCountdown.description", - "start": { - "column": 15, - "line": 15 - } + "defaultMessage": "!!!Daedalus Team:", + "description": "About page daedalus team headline", + "id": "static.about.content.daedalus.headline" }, { - "defaultMessage": "!!!Rewards begin in", - "description": "Description for the Decentralisation notification.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/staking/countdown/StakingCountdown.tsx", - "id": "staking.delegationCountdown.timeLeftDesc", - "start": { - "column": 16, - "line": 21 - } + "defaultMessage": "!!!Cardano Team:", + "description": "About page cardano team headline", + "id": "static.about.content.cardano.headline" }, { - "defaultMessage": "!!!Learn more", - "description": "Button Label for the Decentralisation notification.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/staking/countdown/StakingCountdown.tsx", - "id": "staking.delegationCountdown.buttonLabel", - "start": { - "column": 15, - "line": 26 - } - } - ], - "path": "source/renderer/app/components/staking/countdown/StakingCountdown.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Alan McNicholas, Aleksandar Djordjevic, Alexander Rukin, Brian McKenna, Charles Hoskinson, Daniel Main, Danilo Prates, Darko Mijić, Dmitrii Gaico, Dominik Guzei, Elin Liu, Gabriela Ponce, Jane Wild, Jeremy Wood, Juli Sudi, Junko Oda, Laurie Wang, Lucas Araujo, Manus McCole, Marcin Mazurek, Michael Bishop, Michael Chappell, Mior Sufian, Nikola Glumac, Piotr Stachyra, Przemysław Włodek, Renan Ferreira, Rhys Bartels-Waller, Richard Wild, Robert Moore, Rodney Lorrimar, Sam Jeston, Samuel Leathers, Serge Kosyrev, Szymon Masłowski, Tatyana Valkevych, Tomas Vrana, Tomislav Horaček, Yakov Karavelov", + "description": "About page daedalus team members", + "id": "static.about.content.daedalus.members" + }, { - "defaultMessage": "!!!Wallets", - "description": "Title for the Delegation center body section.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterBody.tsx", - "id": "staking.delegationCenter.bodyTitle", - "start": { - "column": 13, - "line": 13 - } + "defaultMessage": "!!!Alan McNicholas, Alejandro Garcia, Alexander Diemand, Alexander Vieth, Anatoli Ivanou, Andreas Triantafyllos, Ante Kegalj, Armando Santos, Ben Ford, Charles Hoskinson, Dan Friedman, Deepak Kapiswe, Denis Shevchenko, Dorin Solomon, Duncan Coutts, Edsko de Vries, Erik de Castro Lopo, Gerard Moroney, Hiroto Shioi, Jane Wild, Jean-Christophe Mincke, Jeremy Wood, Johannes Lund, Jordan Millar, Karl Knutsson, Kristijan Šarić, Lars Brünjes, Laurie Wang, Liz Bancroft, Luke Nadur, Marc Fontaine, Marcin Szamotulski, Matt Parsons, Matthias Benkort, Michael Bishop, Michael Hueschen, Moritz Angermann, Neil Davis, Niamh Ahern, Nicholas Clarke, Nicolas Di Prima, Noel Rimbert, Patrick Kelly, Pawel Jakubas, Peter Gaži, Peter Thompson, Philipp Kant, Piotr Stachyra, Ravi Patel, Richard Wild, Rob Cohen, Rodney Lorrimar, Ryan Lemmer, Samuel Leathers, Serge Kosyrev, Tatyana Valkevych, Tom Flynn, Vasileios Gkoumas, Vincent Hanquez", + "description": "About page cardano team members", + "id": "static.about.content.cardano.members" }, { - "defaultMessage": "!!!Now", - "description": "Title for the Delegation current epoch.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterBody.tsx", - "id": "staking.delegationCenter.currentEpochTitle", - "start": { - "column": 21, - "line": 18 - } + "defaultMessage": "!!!Input Output HK Limited. Licensed under", + "description": "About \"copyright\"", + "id": "static.about.copyright" }, { - "defaultMessage": "!!!Loading stake pools", - "description": "Loading stake pool message for the Delegation center body section.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterBody.tsx", - "id": "staking.delegationCenter.loadingStakePoolsMessage", - "start": { - "column": 28, - "line": 23 - } + "defaultMessage": "!!!Apache 2.0 license", + "description": "About page license name", + "id": "static.about.license" + }, + { + "defaultMessage": "!!!MacOS build 3769, with Cardano 1.0.4", + "description": "About page build information", + "id": "static.about.buildInfo" } ], - "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterBody.json" + "path": "source/renderer/app/components/static/About.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Epoch", - "description": "Headline for the Delegation center.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx", - "id": "staking.delegationCenter.epoch", - "start": { - "column": 9, - "line": 17 - } + "defaultMessage": "!!!SYSTEM INFO", + "description": "System info", + "id": "daedalus.diagnostics.dialog.system.info" }, { - "defaultMessage": "!!!Current slot", - "description": "Headline for the Delegation center.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx", - "id": "staking.delegationCenter.currentSlot", - "start": { - "column": 15, - "line": 22 - } + "defaultMessage": "!!!Platform", + "description": "Platform", + "id": "daedalus.diagnostics.dialog.platform" }, { - "defaultMessage": "!!!Total slots", - "description": "Headline for the Delegation center.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx", - "id": "staking.delegationCenter.totalSlots", - "start": { - "column": 14, - "line": 27 - } + "defaultMessage": "!!!Platform version", + "description": "Platform version", + "id": "daedalus.diagnostics.dialog.platform.version" }, { - "defaultMessage": "!!!Next Cardano epoch starts in", - "description": "Headline for the Delegation center.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx", - "id": "staking.delegationCenter.headingLeft", - "start": { - "column": 15, - "line": 32 - } + "defaultMessage": "!!!CPU", + "description": "CPU", + "id": "daedalus.diagnostics.dialog.cpu" }, { - "defaultMessage": "!!!Current Cardano epoch", - "description": "Headline for the Delegation center.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx", - "id": "staking.delegationCenter.headingRight", - "start": { - "column": 16, - "line": 37 - } + "defaultMessage": "!!!RAM", + "description": "RAM", + "id": "daedalus.diagnostics.dialog.ram" }, { - "defaultMessage": "!!!Changes to delegation preferences will take effect after both the current and next Cardano epochs have completed. Epochs on the Incentivized Testnet last one day. Any changes made now will take effect in {timeUntilFutureEpoch}.", - "description": "Delegation description for the Delegation center.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx", - "id": "staking.delegationCenter.description", - "start": { - "column": 15, - "line": 42 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Available disk space", + "description": "Available disk space", + "id": "daedalus.diagnostics.dialog.availableDiskSpace" + }, { - "defaultMessage": "!!!The delegation center is not available because you currently do not have any Shelley-compatible wallets.", - "description": "\"No wallets\" headLine on the Delegation centre Page.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterNoWallets.tsx", - "id": "staking.delegationCenter.noWallets.headLine", - "start": { - "column": 12, - "line": 12 - } + "defaultMessage": "!!!Unknown", + "description": "Unknown amount of disk space", + "id": "daedalus.diagnostics.dialog.unknownDiskSpace" }, { - "defaultMessage": "!!!Create a new wallet and transfer in a minimum of {minDelegationFunds} ADA (or restore an existing wallet with funds), then return here to delegate your stake.", - "description": "\"No wallets\" instructions on the Delegation centre Page.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterNoWallets.tsx", - "id": "staking.delegationCenter.noWallets.instructions", - "start": { - "column": 16, - "line": 18 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc", + "description": "\"Support\" link URL while disk space is unknown", + "id": "daedalus.diagnostics.dialog.unknownDiskSpaceSupportUrl" }, { - "defaultMessage": "!!!Create wallet", - "description": "Label for \"Create New Wallet\" button on the Delegation centre Page.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/staking/delegation-center/DelegationCenterNoWallets.tsx", - "id": "staking.delegationCenter.noWallets.createWalletButtonLabel", - "start": { - "column": 27, - "line": 24 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterNoWallets.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Recommended system requirements status", + "description": "Displayed on the left of the Recommended system requirements status row", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatus" + }, { - "defaultMessage": "!!!{amount} ADA", - "description": "Amount of each wallet for the Delegation center body section.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.walletAmount", - "start": { - "column": 16, - "line": 32 - } + "defaultMessage": "!!!Low", + "description": "Displayed on the right of the Recommended system requirements status row when hardware requirements are insufficient", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusLowValue" }, { - "defaultMessage": "!!!Undelegated", - "description": "Undelegated label for the Delegation center body section.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.notDelegated", - "start": { - "column": 16, - "line": 38 - } + "defaultMessage": "!!!Good", + "description": "Displayed on the right of the Recommended system requirements status row when hardware requirements are ok", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusGoodValue" }, { - "defaultMessage": "!!!Undelegate", - "description": "Remove delegation label for the Delegation center body section.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.removeDelegation", - "start": { - "column": 20, - "line": 43 - } + "defaultMessage": "!!!Your system specifications do not meet Daedalus’ recommended hardware requirements. We suggest using a machine with at least 16 GB of RAM", + "description": "Visible on hovering over Recommended system requirement status when status is Low", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusLowTooltip" }, { - "defaultMessage": "!!!From epoch {fromEpoch}", - "description": "Delegated stake pool tooltip ticker for the Delegation center body section.", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.stakePoolTooltipTickerEpoch", - "start": { - "column": 26, - "line": 49 - } + "defaultMessage": "!!!Your system specifications meet Daedalus’ recommended hardware requirements", + "description": "Visible on hovering over Recommended system requirement status when status is Good", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusGoodTooltip" }, { - "defaultMessage": "!!!Currently earning rewards", - "description": "Delegated stake pool tooltip ticker for the Delegation center body section.", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.stakePoolTooltipTickerEarningRewards", - "start": { - "column": 35, - "line": 55 - } + "defaultMessage": "!!!RTS Flags Mode", + "description": "Indicates whether RTS Flags Mode is enabled or not", + "id": "daedalus.diagnostics.dialog.isRTSFlagsModeEnabled" }, { - "defaultMessage": "!!!Delegate", - "description": "Delegate label for the Delegation center body section.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.delegate", - "start": { - "column": 12, - "line": 61 - } + "defaultMessage": "!!!CORE INFO", + "description": "CORE INFO", + "id": "daedalus.diagnostics.dialog.coreInfo" }, { - "defaultMessage": "!!!Redelegate", - "description": "Redelegate label for the Delegation center body section.", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.redelegate", - "start": { - "column": 14, - "line": 66 - } + "defaultMessage": "!!!Daedalus version", + "description": "Daedalus version", + "id": "daedalus.diagnostics.dialog.daedalusVersion" }, { - "defaultMessage": "!!!unknown", - "description": "unknown stake pool label for the Delegation center body section.", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.unknownStakePoolLabel", - "start": { - "column": 25, - "line": 71 - } + "defaultMessage": "!!!Daedalus build number", + "description": "Daedalus build number", + "id": "daedalus.diagnostics.dialog.daedalusBuildNumber" }, { - "defaultMessage": "!!!Syncing {syncingProgress}%", - "description": "unknown stake pool label for the Delegation center body section.", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx", - "id": "staking.delegationCenter.syncingTooltipLabel", - "start": { - "column": 23, - "line": 77 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-center/WalletRow.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Daedalus main process ID", + "description": "Daedalus main process ID", + "id": "daedalus.diagnostics.dialog.daedalusMainProcessID" + }, { - "defaultMessage": "!!!Choose a stake pool", - "description": "Title \"Choose a stake pool\" on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 12 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.title", - "start": { - "column": 11, - "line": 7 - } + "defaultMessage": "!!!Daedalus renderer process ID", + "description": "Daedalus renderer process ID", + "id": "daedalus.diagnostics.dialog.daedalusProcessID" }, { - "defaultMessage": "!!!Currently selected stake pool:", - "description": "Description on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 18 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.description", - "start": { - "column": 17, - "line": 13 - } + "defaultMessage": "!!!Daedalus 'Blank Screen Fix' active", + "description": "Daedalus 'Blank Screen Fix' active", + "id": "daedalus.diagnostics.dialog.blankScreenFix" }, { - "defaultMessage": "!!!Select a stake pool to receive your delegated funds in the {selectedWalletName} wallet.", - "description": "Select / Selected pool section label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 26 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectStakePoolLabel", - "start": { - "column": 26, - "line": 19 - } + "defaultMessage": "!!!Cardano node version", + "description": "Cardano node version", + "id": "daedalus.diagnostics.dialog.cardanoNodeVersion" }, { - "defaultMessage": "!!!You have selected [{selectedPoolTicker}] stake pool to delegate to for {selectedWalletName} wallet.", - "description": "\"Selected Pools\" Selected pool label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 34 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectedStakePoolLabel", - "start": { - "column": 28, - "line": 27 - } + "defaultMessage": "!!!Cardano node process ID", + "description": "Cardano node process ID", + "id": "daedalus.diagnostics.dialog.cardanoNodePID" }, { - "defaultMessage": "!!!The [{selectedPoolTicker}] stake pool which you have selected to delegate your {selectedWalletName} wallet funds is about to retire.", - "description": "\"Selected Pools\" Selected pool label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 42 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectedStakePoolLabelRetiring", - "start": { - "column": 36, - "line": 35 - } + "defaultMessage": "!!!Cardano node port", + "description": "Cardano node port", + "id": "daedalus.diagnostics.dialog.cardanoNodeApiPort" }, { - "defaultMessage": "!!!You are already delegating {selectedWalletName} wallet to [{selectedPoolTicker}] stake pool. If you wish to re-delegate your stake, please select a different pool.", - "description": "\"You are already delegating to stake pool\" label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 50 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.delegatedStakePoolLabel", - "start": { - "column": 29, - "line": 43 - } + "defaultMessage": "!!!Cardano wallet process ID", + "description": "Cardano wallet process ID", + "id": "daedalus.diagnostics.dialog.cardanoWalletPID" }, { - "defaultMessage": "!!!You are already pending delegation {selectedWalletName} wallet to [{selectedPoolTicker}] stake pool. If you wish to re-delegate your stake, please select a different pool.", - "description": "\"You are already delegating to stake pool\" label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 58 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.delegatedStakePoolNextLabel", - "start": { - "column": 33, - "line": 51 - } + "defaultMessage": "!!!Cardano wallet version", + "description": "Cardano wallet version", + "id": "daedalus.diagnostics.dialog.cardanoWalletVersion" }, { - "defaultMessage": "!!!Choose one of your recent stake pool choices:", - "description": "Recent \"Pool\" choice section label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 65 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.recentPoolsLabel", - "start": { - "column": 22, - "line": 59 - } + "defaultMessage": "!!!Cardano wallet port", + "description": "Cardano wallet port", + "id": "daedalus.diagnostics.dialog.cardanoWalletApiPort" }, { - "defaultMessage": "!!!Or select a stake pool from the list of all available stake pools:", - "description": "Search \"Pools\" input label on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 73 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.searchInput.label", - "start": { - "column": 22, - "line": 66 - } + "defaultMessage": "!!!Cardano network", + "description": "Cardano network", + "id": "daedalus.diagnostics.dialog.cardanoNetwork" }, { - "defaultMessage": "!!!Search stake pools", - "description": "Search \"Pools\" input placeholder on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 80 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.searchInput.placeholder", - "start": { - "column": 28, - "line": 74 - } + "defaultMessage": "!!!Daedalus state directory", + "description": "Daedalus state directory", + "id": "daedalus.diagnostics.dialog.stateDirectory" }, { - "defaultMessage": "!!!Continue", - "description": "Label for continue button on the delegation setup \"choose stake pool\" dialog.", - "end": { - "column": 5, - "line": 87 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.continueButtonLabel", - "start": { - "column": 25, - "line": 81 - } + "defaultMessage": "!!!Open", + "description": "Open", + "id": "daedalus.diagnostics.dialog.stateDirectoryPathOpenBtn" }, { - "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", - "description": "Step indicator label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 5, - "line": 94 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.stepIndicatorLabel", - "start": { - "column": 24, - "line": 88 - } + "defaultMessage": "!!!CONNECTION ERROR", + "description": "CONNECTION ERROR", + "id": "daedalus.diagnostics.dialog.connectionError" }, { - "defaultMessage": "!!!The stake pool you have selected is about to be retired. If you continue the delegation process, you will need to delegate your stake to another pool at least one complete epoch before the current pool’s retirement date to avoid losing rewards.", - "description": "Retiring Pool Footer label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 5, - "line": 102 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts", - "id": "staking.delegationSetup.chooseStakePool.step.dialog.retiringPoolFooter", - "start": { - "column": 24, - "line": 95 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!DAEDALUS STATUS", + "description": "DAEDALUS STATUS", + "id": "daedalus.diagnostics.dialog.daedalusStatus" + }, { - "defaultMessage": "!!!Delegate wallet", - "description": "Title \"Delegate wallet\" on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.title", - "start": { - "column": 9, - "line": 21 - } + "defaultMessage": "!!!Connected", + "description": "Connected", + "id": "daedalus.diagnostics.dialog.connected" }, { - "defaultMessage": "!!!Choose a wallet that holds the funds you want to delegate. The selected wallet must contain a minimum amount of {minDelegationFunds} ADA for delegation to be an option.", - "description": "Description on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.description", - "start": { - "column": 15, - "line": 27 - } + "defaultMessage": "!!!Synced", + "description": "Synced", + "id": "daedalus.diagnostics.dialog.synced" }, { - "defaultMessage": "!!!Wallet", - "description": "Label \"Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.selectWalletInputLabel", - "start": { - "column": 26, - "line": 34 - } + "defaultMessage": "!!!Sync percentage", + "description": "Sync percentage", + "id": "daedalus.diagnostics.dialog.syncPercentage" }, { - "defaultMessage": "!!!Select Wallet", - "description": "Placeholder \"Select Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.selectWalletInputPlaceholder", - "start": { - "column": 32, - "line": 41 - } + "defaultMessage": "!!!Local time difference", + "description": "Local time difference", + "id": "daedalus.diagnostics.dialog.localTimeDifference" }, { - "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", - "description": "Step indicator label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.stepIndicatorLabel", - "start": { - "column": 22, - "line": 48 - } + "defaultMessage": "!!!System time correct", + "description": "System time correct", + "id": "daedalus.diagnostics.dialog.systemTimeCorrect" }, { - "defaultMessage": "!!!This wallet does not contain the minimum amount of {minDelegationFunds} ADA which is required for delegation to be available. Please select a wallet with a minimum amount of {minDelegationFunds} ADA and click continue.", - "description": "errorMinDelegationFunds Error Label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.errorMinDelegationFunds", - "start": { - "column": 27, - "line": 54 - } + "defaultMessage": "!!!System time ignored", + "description": "System time ignored", + "id": "daedalus.diagnostics.dialog.systemTimeIgnored" }, { - "defaultMessage": "!!!This wallet contains only rewards balances so it cannot be delegated.", - "description": "errorMinDelegationFundsRewardsOnly Error Label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.errorMinDelegationFundsRewardsOnly", - "start": { - "column": 38, - "line": 62 - } + "defaultMessage": "!!!Checking system time", + "description": "Checking system time", + "id": "daedalus.diagnostics.dialog.checkingNodeTime" }, { - "defaultMessage": "!!!This wallet can’t be used for delegation while it’s being synced.", - "description": "RestoringWallet Error Label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.errorRestoringWallet", - "start": { - "column": 24, - "line": 70 - } + "defaultMessage": "!!!CARDANO NODE STATUS", + "description": "CARDANO NODE STATUS", + "id": "daedalus.diagnostics.dialog.cardanoNodeStatus" }, { - "defaultMessage": "!!!Continue", - "description": "Label for continue button on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx", - "id": "staking.delegationSetup.chooseWallet.step.dialog.continueButtonLabel", - "start": { - "column": 23, - "line": 77 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Restarting Cardano node...", + "description": "Restarting Cardano node...", + "id": "daedalus.diagnostics.dialog.cardanoNodeStatusRestarting" + }, { - "defaultMessage": "!!!Confirm Delegation", - "description": "Title \"Confirm Delegation\" on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 12 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.title", - "start": { - "column": 11, - "line": 7 - } + "defaultMessage": "!!!Restart Cardano node", + "description": "Restart Cardano node", + "id": "daedalus.diagnostics.dialog.cardanoNodeStatusRestart" }, { - "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", - "description": "Step indicator label on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 18 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.stepIndicatorLabel", - "start": { - "column": 24, - "line": 13 - } + "defaultMessage": "!!!Cardano node state", + "description": "Cardano node state", + "id": "daedalus.diagnostics.dialog.cardanoNodeState" }, { - "defaultMessage": "!!!Confirm your delegation choice to [{selectedPoolTicker}] stake pool for your {selectedWalletName} wallet.", - "description": "Description on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 25 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.description", - "start": { - "column": 17, - "line": 19 - } + "defaultMessage": "!!!Updated", + "description": "Updated", + "id": "daedalus.diagnostics.dialog.nodeHasBeenUpdated" }, { - "defaultMessage": "!!!Stake pool ID", - "description": "Stake pool ID label on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 31 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.stakePoolIdLabel", - "start": { - "column": 22, - "line": 26 - } + "defaultMessage": "!!!Crashed", + "description": "Crashed", + "id": "daedalus.diagnostics.dialog.nodeHasCrashed" }, { - "defaultMessage": "!!!Fees", - "description": "Fees label on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 37 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.feesLabel", - "start": { - "column": 15, - "line": 32 - } + "defaultMessage": "!!!Errored", + "description": "Errored", + "id": "daedalus.diagnostics.dialog.nodeHasErrored" }, { - "defaultMessage": "!!!Deposit", - "description": "Deposit label on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 43 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.depositLabel", - "start": { - "column": 18, - "line": 38 - } + "defaultMessage": "!!!Stopped", + "description": "Stopped", + "id": "daedalus.diagnostics.dialog.nodeHasStopped" }, { - "defaultMessage": "!!!Spending password", - "description": "Placeholder for \"spending password\"", - "end": { - "column": 5, - "line": 49 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.spendingPasswordPlaceholder", - "start": { - "column": 33, - "line": 44 - } + "defaultMessage": "!!!Exiting", + "description": "Exiting", + "id": "daedalus.diagnostics.dialog.nodeIsExiting" }, { - "defaultMessage": "!!!Spending password", - "description": "Label for \"spending password\"", - "end": { - "column": 5, - "line": 55 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.spendingPasswordLabel", - "start": { - "column": 27, - "line": 50 - } + "defaultMessage": "!!!Running", + "description": "Running", + "id": "daedalus.diagnostics.dialog.nodeIsRunning" }, { - "defaultMessage": "!!!Confirm", - "description": "Label for continue button on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 61 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.confirmButtonLabel", - "start": { - "column": 24, - "line": 56 - } + "defaultMessage": "!!!Starting", + "description": "Starting", + "id": "daedalus.diagnostics.dialog.nodeIsStarting" }, { - "defaultMessage": "!!!Cancel", - "description": "Label for \"Cancel\" button on the delegation setup \"confirmation\" step dialog.", - "end": { - "column": 5, - "line": 67 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.cancelButtonLabel", - "start": { - "column": 23, - "line": 62 - } + "defaultMessage": "!!!Stopping", + "description": "Stopping", + "id": "daedalus.diagnostics.dialog.nodeIsStopping" }, { - "defaultMessage": "!!!Calculating fees", - "description": "\"Calculating fees\" message in the \"confirmation\" dialog.", - "end": { - "column": 5, - "line": 72 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.calculatingFees", - "start": { - "column": 21, - "line": 68 - } + "defaultMessage": "!!!Unrecoverable", + "description": "Unrecoverable", + "id": "daedalus.diagnostics.dialog.nodeIsUnrecoverable" }, { - "defaultMessage": "!!!Calculating deposit", - "description": "\"Calculating deposit\" message in the \"confirmation\" dialog.", - "end": { - "column": 5, - "line": 78 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts", - "id": "staking.delegationSetup.confirmation.step.dialog.calculatingDeposit", - "start": { - "column": 24, - "line": 73 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Updating", + "description": "Updating", + "id": "daedalus.diagnostics.dialog.nodeIsUpdating" + }, { - "defaultMessage": "!!!Delegate wallet", - "description": "Title \"Delegation Setup\" on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.title", - "start": { - "column": 9, - "line": 15 - } + "defaultMessage": "!!!Cardano node responding", + "description": "Cardano node responding", + "id": "daedalus.diagnostics.dialog.cardanoNodeResponding" }, { - "defaultMessage": "!!!Follow these steps to configure delegation preferences for your wallet. Please be aware that the last step of delegation confirmation will incur transaction fees.", - "description": "Description on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.description", - "start": { - "column": 15, - "line": 21 - } + "defaultMessage": "!!!Cardano node subscribed", + "description": "Cardano node subscribed", + "id": "daedalus.diagnostics.dialog.cardanoNodeSubscribed" }, { - "defaultMessage": "!!!Learn more", - "description": "\"Learn more\" button label on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.learnMore.buttonLabel", - "start": { - "column": 24, - "line": 27 - } + "defaultMessage": "!!!Cardano node time correct", + "description": "Cardano node time correct", + "id": "daedalus.diagnostics.dialog.cardanoNodeTimeCorrect" }, { - "defaultMessage": "!!!Wallet selection", - "description": "Steps explanation list item 1 label on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step1", - "start": { - "column": 26, - "line": 33 - } + "defaultMessage": "!!!Cardano node syncing", + "description": "Cardano node syncing", + "id": "daedalus.diagnostics.dialog.cardanoNodeSyncing" }, { - "defaultMessage": "!!!Stake pool selection", - "description": "Steps explanation list item 2 label on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step2", - "start": { - "column": 26, - "line": 39 - } + "defaultMessage": "!!!Cardano node in sync", + "description": "Cardano node in sync", + "id": "daedalus.diagnostics.dialog.cardanoNodeInSync" }, { - "defaultMessage": "!!!Delegation confirmation", - "description": "Steps explanation list item 3 label on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step3", - "start": { - "column": 26, - "line": 45 - } + "defaultMessage": "!!!Checking...", + "description": "Checking...", + "id": "daedalus.diagnostics.dialog.localTimeDifferenceChecking" }, { - "defaultMessage": "!!!Cancel", - "description": "Label for close button on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.cancelButtonLabel", - "start": { - "column": 21, - "line": 51 - } + "defaultMessage": "!!!Check time", + "description": "Check time", + "id": "daedalus.diagnostics.dialog.localTimeDifferenceCheckTime" }, { - "defaultMessage": "!!!Continue", - "description": "Label for continue button on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx", - "id": "staking.delegationSetup.intro.step.dialog.continueButtonLabel", - "start": { - "column": 23, - "line": 57 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Yes", + "description": "Yes", + "id": "daedalus.diagnostics.dialog.statusOn" + }, { - "defaultMessage": "!!!Delegation is currently unavailable", - "description": "Title \"Delegation Setup\" on the delegation setup not available dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsNotAvailableDialog.tsx", - "id": "staking.delegationSetup.notAvailable.dialog.title", - "start": { - "column": 9, - "line": 17 - } + "defaultMessage": "!!!No", + "description": "No", + "id": "daedalus.diagnostics.dialog.statusOff" }, { - "defaultMessage": "!!!None of your Shelley wallets currently hold the minimum amount of {minDelegationFunds} ADA required for delegation.", - "description": "Description on the delegation setup not available dialog.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsNotAvailableDialog.tsx", - "id": "staking.delegationSetup.notAvailable.dialog.description", - "start": { - "column": 15, - "line": 23 - } + "defaultMessage": "!!!On", + "description": "On", + "id": "daedalus.diagnostics.dialog.statusOnForUserSettings" }, { - "defaultMessage": "!!!Close", - "description": "Label for close button on the delegation setup not available dialog.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsNotAvailableDialog.tsx", - "id": "staking.delegationSetup.notAvailable.dialog.closeButtonLabel", - "start": { - "column": 20, - "line": 29 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsNotAvailableDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Off", + "description": "Off", + "id": "daedalus.diagnostics.dialog.statusOffForUserSettings" + }, { - "defaultMessage": "!!!Wallet Delegated", - "description": "Title \"Wallet Delegated\" on the delegation setup \"success\" step dialog.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.tsx", - "id": "staking.delegationSetup.success.step.dialog.title", - "start": { - "column": 9, - "line": 19 - } + "defaultMessage": "!!!NTP service unreachable", + "description": "NTP service unreachable", + "id": "daedalus.diagnostics.dialog.serviceUnreachable" }, { - "defaultMessage": "!!!The stake from your wallet {delegatedWalletName} is now delegated to the [{delegatedStakePoolTicker}] {delegatedStakePoolName} stake pool.", - "description": "Description \"line 1\" on the delegation setup \"success\" step dialog.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.tsx", - "id": "staking.delegationSetup.success.step.dialog.description.line1", - "start": { - "column": 20, - "line": 25 - } + "defaultMessage": "!!!message", + "description": "message", + "id": "daedalus.diagnostics.dialog.message" }, { - "defaultMessage": "!!!Your new delegation preferences are now posted on the Cardano blockchain. These preferences will take effect after both the current and the next Cardano epochs have completed in {timeUntilNextEpochStart}. During this time, your previous delegation preferences remain active.", - "description": "Description \"line 2\" on the delegation setup \"success\" step dialog.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.tsx", - "id": "staking.delegationSetup.success.step.dialog.description.line2", - "start": { - "column": 20, - "line": 32 - } + "defaultMessage": "!!!code", + "description": "code", + "id": "daedalus.diagnostics.dialog.code" }, { - "defaultMessage": "!!!Close", - "description": "Label for Close button on the delegation setup \"success\" step dialog.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.tsx", - "id": "staking.delegationSetup.success.step.dialog.closeButtonLabel", - "start": { - "column": 20, - "line": 39 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Last network block", + "description": "Last network block", + "id": "daedalus.diagnostics.dialog.lastNetworkBlock" + }, { - "defaultMessage": "!!!The selected stake pool will become oversaturated by {oversaturationPercentage}%, which will reduce future rewards for all delegators to that pool.", - "description": "Warning shown if pool is going to be saturated if delegation happens", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx", - "id": "staking.delegationSetup.confirmation.step.dialog.oversaturationWarning", - "start": { - "column": 25, - "line": 13 - } - } - ], - "path": "source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Last synchronized block", + "description": "Last synchronized block", + "id": "daedalus.diagnostics.dialog.lastSynchronizedBlock" + }, { - "defaultMessage": "!!!current epoch", - "description": "Headline for the current epoch.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochs.tsx", - "id": "staking.epochs.currentHeading", - "start": { - "column": 23, - "line": 15 - } + "defaultMessage": "!!!epoch", + "description": "epoch", + "id": "daedalus.diagnostics.dialog.epoch" }, { - "defaultMessage": "!!!previous epoch", - "description": "Headline for the previous epoch.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochs.tsx", - "id": "staking.epochs.previousHeading", - "start": { - "column": 24, - "line": 20 - } + "defaultMessage": "!!!slot", + "description": "slot", + "id": "daedalus.diagnostics.dialog.slot" } ], - "path": "source/renderer/app/components/staking/epochs/StakingEpochs.json" + "path": "source/renderer/app/components/status/DaedalusDiagnostics.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Stake pool", - "description": "Table header \"Stake pool\" label on staking epochs page", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsCurrentEpochData.tsx", - "id": "staking.epochs.currentEpoch.tableHeader.pool", - "start": { - "column": 19, - "line": 17 - } + "defaultMessage": "Newsletter", + "description": "\"Newsletter\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.newsletter" }, { - "defaultMessage": "!!!Slots elected", - "description": "Table header \"Slots elected\" label on staking epochs page", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsCurrentEpochData.tsx", - "id": "staking.epochs.currentEpoch.tableHeader.slotsElected", - "start": { - "column": 27, - "line": 22 - } + "defaultMessage": "Announcements Channel", + "description": "\"Announcements Channel\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.announcements" + }, + { + "defaultMessage": "Community Chat", + "description": "\"Community Chat\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.community" + }, + { + "defaultMessage": "Projects", + "description": "\"Projects\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.projects" } ], - "path": "source/renderer/app/components/staking/epochs/StakingEpochsCurrentEpochData.json" + "path": "source/renderer/app/components/voting/VotingFooterLinks.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!No results", - "description": "\"No results\" results label on staking epochs page.", - "end": { - "column": 3, - "line": 11 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsNoData.tsx", - "id": "staking.epochs.no.results", - "start": { - "column": 13, - "line": 7 - } + "defaultMessage": "!!!Voting registration for Fund{nextVotingFundNumber} is not available as you currently do not have any Shelley-compatible wallets.", + "description": "\"No wallets\" headLine on the voting info page.", + "id": "voting.info.noWallets.headLine" + }, + { + "defaultMessage": "!!!Create a new wallet and transfer a minimum of {minVotingFunds} ADA (or restore an existing wallet with funds), then return here to register for voting.", + "description": "\"No wallets\" instructions on the voting info page.", + "id": "voting.info.noWallets.instructions" + }, + { + "defaultMessage": "!!!Create wallet", + "description": "Label for \"Create New Wallet\" button on the voting info page.", + "id": "voting.info.noWallets.createWalletButtonLabel" } ], - "path": "source/renderer/app/components/staking/epochs/StakingEpochsNoData.json" + "path": "source/renderer/app/components/voting/VotingNoWallets.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Stake pool", - "description": "Table header \"Stake pool\" label on staking epochs page", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx", - "id": "staking.epochs.previousEpoch.tableHeader.pool", - "start": { - "column": 19, - "line": 18 - } + "defaultMessage": "!!!Add wallet", + "description": "Label for the \"Add wallet\" title on the wallet add dialog.", + "id": "wallet.add.dialog.title.label" }, { - "defaultMessage": "!!!Slots elected", - "description": "Table header \"Slots elected\" label on staking epochs page", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx", - "id": "staking.epochs.previousEpoch.tableHeader.slotsElected", - "start": { - "column": 27, - "line": 23 - } + "defaultMessage": "!!!Create", + "description": "Label for the \"Create\" button on the wallet add dialog.", + "id": "wallet.add.dialog.create.label" }, { - "defaultMessage": "!!!Performance", - "description": "Table header \"Performance\" label on staking epochs page", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx", - "id": "staking.epochs.tableHeader.performance", - "start": { - "column": 26, - "line": 28 - } + "defaultMessage": "!!!Create a new wallet", + "description": "Description for the \"Create a new wallet\" button on the wallet add dialog.", + "id": "wallet.add.dialog.create.description" }, { - "defaultMessage": "!!!Shared rewards", - "description": "Table header \"Shared rewards\" label on staking epochs page", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx", - "id": "staking.epochs.tableHeader.sharedRewards", - "start": { - "column": 28, - "line": 33 - } + "defaultMessage": "!!!Join", + "description": "Label for the \"Join\" button on the wallet add dialog.", + "id": "wallet.add.dialog.join.label" }, { - "defaultMessage": "!!!slots", - "description": "\"slots\" text in table body on staking epochs page", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx", - "id": "staking.epochs.tableBody.slots", - "start": { - "column": 18, - "line": 38 - } + "defaultMessage": "!!!Join a shared wallet with up to 5 people", + "description": "Description for the \"Join\" button on the wallet add dialog.", + "id": "wallet.add.dialog.join.description" }, { - "defaultMessage": "!!!of", - "description": "\"of\" text in table body on staking epochs page", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx", - "id": "staking.epochs.tableBody.of", - "start": { - "column": 15, - "line": 43 - } - } - ], - "path": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Pair", + "description": "Label for the \"Connect\" button on the wallet add dialog.", + "id": "wallet.add.dialog.connect.label" + }, { - "defaultMessage": "!!!Alonzo upgrade", - "description": "Headline for the \"Staking Info\" page screen.", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx", - "id": "staking.infoCountdown.heading", - "start": { - "column": 11, - "line": 11 - } + "defaultMessage": "!!!Pair a hardware wallet device", + "description": "Description for the \"Connect\" button on the wallet add dialog.", + "id": "wallet.add.dialog.connect.description" }, { - "defaultMessage": "!!!The ‘Alonzo’ protocol upgrade will bring highly-anticipated new smart contract capabilities to Cardano, by integrating Plutus scripts onto the blockchain. This important milestone will open up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", - "description": "Info description for the \"Staking Info\" page screen.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx", - "id": "staking.infoCountdown.description.before", - "start": { - "column": 21, - "line": 16 - } + "defaultMessage": "!!!Restore", + "description": "Label for the \"Restore\" button on the wallet add dialog.", + "id": "wallet.add.dialog.restore.label" }, { - "defaultMessage": "!!!The ‘Alonzo’ protocol upgrade is now live on Cardano, enabling highly-anticipated new smart contract capabilities, by integrating Plutus scripts onto the blockchain. This important milestone opens up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", - "description": "Info description for the \"Staking Info\" page screen.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx", - "id": "staking.infoCountdown.description.after", - "start": { - "column": 20, - "line": 22 - } + "defaultMessage": "!!!Restore a wallet or paper wallet using wallet recovery phrase", + "description": "Description for the \"Restore\" button with paper wallet certificate on the wallet add dialog.", + "id": "wallet.add.dialog.restore.withCertificate.description" }, { - "defaultMessage": "!!!Alonzo upgrade in", - "description": "Countdown Title for the \"Staking Info\" page screen.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx", - "id": "staking.infoCountdown.countdownTitle", - "start": { - "column": 18, - "line": 28 - } + "defaultMessage": "!!!Restore wallet from backup", + "description": "Description for the \"Restore\" button without paper wallet certificate on the wallet add dialog.", + "id": "wallet.add.dialog.restore.withoutCertificate.description" }, { - "defaultMessage": "!!!Learn more", - "description": "Button Label for the \"Staking Info\" page screen.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx", - "id": "staking.infoCountdown.buttonLabel", - "start": { - "column": 15, - "line": 33 - } + "defaultMessage": "!!!Import", + "description": "Label for the \"Import\" button on the wallet add dialog.", + "id": "wallet.add.dialog.import.label" }, { - "defaultMessage": "!!!https://iohk.io/en/blog/posts/2021/04/08/smart-contracts-%E2%80%93-here-we-come/", - "description": "\"Learn more\" link URL in the \"Staking Info\" screen.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx", - "id": "staking.infoCountdown.learnMore.linkUrl", - "start": { - "column": 20, - "line": 38 - } + "defaultMessage": "!!!Import wallets from an earlier version of Daedalus or the Daedalus state directory", + "description": "Description for the \"Import\" button on the wallet add dialog.", + "id": "wallet.add.dialog.import.description" + }, + { + "defaultMessage": "!!!Wallet restoration is currently in progress. Until it completes, it is not possible to restore or import new wallets.", + "description": "Restore notification message shown during async wallet restore on the wallet add screen.", + "id": "wallet.add.dialog.restoreNotificationMessage" + }, + { + "defaultMessage": "!!!You have reached the maximum of 50 wallets.
No more wallets can be added.", + "description": "\"Maximum number of wallets reached\" notification message shown on the wallet add screen if user has 50 wallets.", + "id": "wallet.add.dialog.maxNumberOfWalletsNotificationMessage" } ], - "path": "source/renderer/app/components/staking/info/StakingInfoCountdown.json" + "path": "source/renderer/app/components/wallet/WalletAdd.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Delegation center", - "description": "Label for the \"Delegation\" nav button in the staking navigation.", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx", - "id": "staking.navigation.delegation_center", - "start": { - "column": 21, - "line": 7 - } + "defaultMessage": "!!!Pair a hardware wallet device", + "description": "Title \"Connect a hardware wallet device\" in the connect wallet dialog.", + "id": "wallet.connect.dialog.title" }, { - "defaultMessage": "!!!Stake pools", - "description": "Label for the \"Stake\" nav button in the staking navigation.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx", - "id": "staking.navigation.stake_pools", - "start": { - "column": 15, - "line": 13 - } - }, - { - "defaultMessage": "!!!Rewards", - "description": "Label for the \"Rewards\" nav button in the staking navigation.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx", - "id": "staking.navigation.rewards", - "start": { - "column": 11, - "line": 18 - } + "defaultMessage": "!!!Cancel", + "description": "Label for the \"Cancel\" button in the connect wallet dialog", + "id": "wallet.connect.dialog.button.cancel" }, { - "defaultMessage": "!!!Epochs", - "description": "Label for the \"Epochs\" nav button in the staking navigation.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx", - "id": "staking.navigation.epochs", - "start": { - "column": 10, - "line": 24 - } + "defaultMessage": "!!!

Daedalus currently supports Ledger Nano S, Ledger Nano X, and Trezor Model T hardware wallet devices.

If you are pairing your device with Daedalus for the first time, please follow the instructions below.

If you have already paired your device with Daedalus, you don’t need to repeat this step. Just connect your device when you need to confirm a transaction.

", + "description": "Follow instructions label", + "id": "wallet.connect.dialog.instructions" }, { - "defaultMessage": "!!!Info", - "description": "Label for the \"Info\" nav button in the staking navigation.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx", - "id": "staking.navigation.info", - "start": { - "column": 8, - "line": 29 - } - } - ], - "path": "source/renderer/app/components/staking/navigation/StakingNavigation.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Redemption of Incentivized Testnet rewards is not available as you currently do not have any Shelley-compatible wallets.", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/NoWalletsDialog.tsx", - "id": "staking.redeemItnRewards.noWallets.description", - "start": { - "column": 15, - "line": 14 - } + "defaultMessage": "!!!

Daedalus currently supports only Trezor Model T hardware wallet devices.

If you are pairing your device with Daedalus for the first time, please follow the instructions below.

If you have already paired your device with Daedalus, you don’t need to repeat this step. Just connect your device when you need to confirm a transaction.

", + "description": "Follow instructions label", + "id": "wallet.connect.dialog.instructionsTrezorOnly" }, { - "defaultMessage": "!!!Add wallet", - "description": "addWalletButtonLabel for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/NoWalletsDialog.tsx", - "id": "staking.redeemItnRewards.noWallets.addWalletButtonLabel", - "start": { - "column": 24, - "line": 20 - } - } - ], - "path": "source/renderer/app/components/staking/redeem-itn-rewards/NoWalletsDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!If you are experiencing issues pairing your hardware wallet device, please {supportLink}", + "description": "Connecting issue support description", + "id": "wallet.connect.dialog.connectingIssueSupportLabel" + }, { - "defaultMessage": "!!!Redeem Incentivized Testnet rewards", - "description": "Title for Redeem Incentivized Testnet - redemptionUnavailable", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/RedemptionUnavailableDialog.tsx", - "id": "staking.redeemItnRewards.redemptionUnavailable.title", - "start": { - "column": 9, - "line": 14 - } + "defaultMessage": "!!!read the instructions.", + "description": "Connecting issue support link", + "id": "wallet.connect.dialog.connectingIssueSupportLink" }, { - "defaultMessage": "!!!Close", - "description": "closeButtonLabel for Redeem Incentivized Testnet - redemptionUnavailable", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/RedemptionUnavailableDialog.tsx", - "id": "staking.redeemItnRewards.redemptionUnavailable.closeButton.label", - "start": { - "column": 20, - "line": 20 - } + "defaultMessage": "https://support.ledger.com/hc/en-us/articles/115005165269", + "description": "Link to support article", + "id": "wallet.connect.dialog.connectingIssueSupportLinkUrl" } ], - "path": "source/renderer/app/components/staking/redeem-itn-rewards/RedemptionUnavailableDialog.json" + "path": "source/renderer/app/components/wallet/WalletConnectDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Redeem Incentivized Testnet rewards", - "description": "Title for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.title", - "start": { - "column": 9, - "line": 38 - } - }, - { - "defaultMessage": "!!!If you participated in the {itnLink} and earned rewards by running a stake pool or delegating your stake, you can use this feature to redeem your rewards as ada on the Cardano mainnet.", - "description": "description for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.description1", - "start": { - "column": 16, - "line": 43 - } - }, - { - "defaultMessage": "!!!You will need the wallet recovery phrase for the Incentivized Testnet wallet used to earn rewards and an existing mainnet wallet in Daedalus to which the rewards will be transferred. This wallet will also be used to pay any applicable transaction fees.", - "description": "description for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.description2", - "start": { - "column": 16, - "line": 49 - } - }, - { - "defaultMessage": "!!!Incentivized Testnet", - "description": "descriptionItnLinkLabel for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.descriptionItnLinkLabel", - "start": { - "column": 27, - "line": 55 - } - }, - { - "defaultMessage": "!!!https://staking.cardano.org/", - "description": "descriptionItnLinkUrl for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.descriptionItnLinkUrl", - "start": { - "column": 25, - "line": 61 - } - }, - { - "defaultMessage": "!!!Wallet recovery phrase:", - "description": "recoveryPhraseLabel for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.recoveryPhraseLabel", - "start": { - "column": 23, - "line": 67 - } - }, - { - "defaultMessage": "!!!Redeem rewards to:", - "description": "walletsDropdownLabel for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.walletsDropdownLabel", - "start": { - "column": 24, - "line": 72 - } - }, - { - "defaultMessage": "!!!I understand that redeeming rewards from the Incentivized Testnet requires paying transaction fees.", - "description": "checkbox1Label for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.checkbox1Label", - "start": { - "column": 18, - "line": 78 - } - }, - { - "defaultMessage": "!!!I understand that fees will be paid from the wallet I am redeeming my rewards to.", - "description": "checkbox2Label for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 89 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.checkbox2Label", - "start": { - "column": 18, - "line": 84 - } + "defaultMessage": "!!!Create a new wallet", + "description": "Title \"Create a new wallet\" in the wallet create dialog.", + "id": "wallet.create.dialog.title" }, { - "defaultMessage": "!!!Continue", - "description": "continueButtonLabel for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.continueButton.label", - "start": { - "column": 23, - "line": 90 - } + "defaultMessage": "!!!Step {currentStep} of {totalSteps}", + "description": "Step counters in the wallet create dialog.", + "id": "wallet.create.dialog.stepsCounter" }, { - "defaultMessage": "!!!Learn More", - "description": "learnMoreLinkLabel for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 99 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.learnMoreLink.label", - "start": { - "column": 22, - "line": 95 - } + "defaultMessage": "!!!Instructions", + "description": "Step \"Instructions\" in the wallet create dialog.", + "id": "wallet.create.dialog.instructionsStep" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900001656586", - "description": "learnMoreLinkUrl for Redeem Incentivized Testnet - Step 1", - "end": { - "column": 3, - "line": 105 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.learnMoreLink.url", - "start": { - "column": 20, - "line": 100 - } + "defaultMessage": "!!!Template", + "description": "Step \"Template\" in the wallet create dialog.", + "id": "wallet.create.dialog.templateStep" }, { - "defaultMessage": "!!!Enter recovery phrase", - "description": "Hint \"Enter recovery phrase\" for the recovery phrase input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 111 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.recoveryPhraseInputHint", - "start": { - "column": 27, - "line": 106 - } + "defaultMessage": "!!!Mnemonics", + "description": "Step \"Mnemonics\" in the wallet create dialog.", + "id": "wallet.create.dialog.mnemonicsStep" }, { - "defaultMessage": "!!!Select Wallet", - "description": "Placeholder \"Select Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 117 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.selectWalletInputPlaceholder", - "start": { - "column": 32, - "line": 112 - } + "defaultMessage": "!!!Validate", + "description": "Step \"Validate\" in the wallet create dialog.", + "id": "wallet.create.dialog.validateStep" }, { - "defaultMessage": "!!!No results", - "description": "\"No results\" message for the recovery phrase input search results.", - "end": { - "column": 3, - "line": 123 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.noResults", - "start": { - "column": 13, - "line": 118 - } + "defaultMessage": "!!!Hash & Image", + "description": "Step \"HashImage\" in the wallet create dialog.", + "id": "wallet.create.dialog.hashImageStep" }, { - "defaultMessage": "!!!Invalid recovery phrase", - "description": "Error message shown when invalid recovery phrase was entered.", - "end": { - "column": 3, - "line": 129 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx", - "id": "staking.redeemItnRewards.step1.invalidRecoveryPhrase", - "start": { - "column": 25, - "line": 124 - } + "defaultMessage": "!!!Config", + "description": "Step \"Config\" in the wallet create dialog.", + "id": "wallet.create.dialog.configStep" } ], - "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.json" + "path": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Confirm rewards redemption", - "description": "title for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.title", - "start": { - "column": 9, - "line": 24 - } + "defaultMessage": "!!!Wallet name", + "description": "Label for the \"Wallet Name\" text input in the wallet create form.", + "id": "wallet.create.dialog.name.label" }, { - "defaultMessage": "!!!To", - "description": "walletToLabel for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.walletToLabel", - "start": { - "column": 17, - "line": 29 - } + "defaultMessage": "!!!Enter wallet name", + "description": "Hint for the \"Wallet Name\" text input in the wallet create form.", + "id": "wallet.create.dialog.walletNameHint" }, { - "defaultMessage": "!!!{walletName} wallet", - "description": "walletToName for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.walletToName", - "start": { - "column": 16, - "line": 34 - } + "defaultMessage": "!!!Create Shelley wallet", + "description": "Label for the \"Create Shelley wallet\" button on create wallet dialog.", + "id": "wallet.create.dialog.create.personal.wallet.button.label" }, { - "defaultMessage": "!!!Transaction fees", - "description": "transactionFees for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.transactionFees", - "start": { - "column": 19, - "line": 39 - } + "defaultMessage": "!!!Spending password", + "description": "Password creation label.", + "id": "wallet.create.dialog.passwordSectionLabel" }, { - "defaultMessage": "!!!Wallet spending password ({walletName} wallet)", - "description": "spendingPasswordLabel for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.spendingPasswordLabel", - "start": { - "column": 25, - "line": 44 - } + "defaultMessage": "!!!Keep your wallet secure by setting a spending password", + "description": "Password creation description.", + "id": "wallet.create.dialog.passwordSectionDescription" }, { - "defaultMessage": "!!!Password", - "description": "spendingPasswordPlaceholder for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.spendingPasswordPlaceholder", - "start": { - "column": 31, - "line": 51 - } + "defaultMessage": "!!!Enter password", + "description": "Label for the \"Wallet password\" input in the create wallet dialog.", + "id": "wallet.create.dialog.spendingPasswordLabel" }, { - "defaultMessage": "!!!Confirm rewards redemption", - "description": "continueButtonLabel for Redeem Incentivized Testnet - Step 2", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.continueButtonLabel", - "start": { - "column": 23, - "line": 57 - } + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the create wallet dialog.", + "id": "wallet.create.dialog.repeatPasswordLabel" }, { - "defaultMessage": "!!!Back", - "description": "Label for the back button in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 67 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx", - "id": "staking.redeemItnRewards.step2.backButtonLabel", - "start": { - "column": 19, - "line": 62 - } + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the create wallet dialog.", + "id": "wallet.create.dialog.passwordFieldPlaceholder" } ], - "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.json" + "path": "source/renderer/app/components/wallet/WalletCreateDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!No rewards were found in your Incentivized Testnet Rewards wallet. Please make sure that you have entered the correct wallet recovery phrase.", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx", - "id": "staking.redeemItnRewards.step3.failure.description1NoRewards", - "start": { - "column": 25, - "line": 14 - } + "defaultMessage": "!!!It is really good to use Password Manager apps to improve security. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris mattis diam non nulla sollicitudin, ac ultrices purus luctus.", + "description": "Tooltip for the password input in the create wallet dialog.", + "id": "wallet.dialog.passwordTooltip" }, { - "defaultMessage": "!!!Rewards from the wallet corresponding to the recovery phrase you have provided have already been redeemed.", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx", - "id": "staking.redeemItnRewards.step3.failure.description2InvalidWallet", - "start": { - "column": 29, - "line": 20 - } + "defaultMessage": "!!!Name your restored wallet and set a spending password to keep your wallet secure.", + "description": "Description1 for Configuration Step", + "id": "wallet.restore.dialog.step.configuration.description1" }, { - "defaultMessage": "!!!No rewards were found in your Incentivized Testnet Rewards wallet. Please make sure that you have entered the correct wallet recovery phrase and that rewards have not already been redeemed.", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx", - "id": "staking.redeemItnRewards.step3.failure.description3Generic", - "start": { - "column": 23, - "line": 26 - } + "defaultMessage": "!!!Wallet names and spending passwords are only stored locally and are not stored on the blockchain. You can give your restored wallet a new name and set a new spending password, you don’t need to match the wallet name and spending password you were using before. Only the recovery phrase from your original wallet is needed to restore a wallet.", + "description": "Description2 for Configuration Step", + "id": "wallet.restore.dialog.step.configuration.description2" }, { - "defaultMessage": "!!!Back", - "description": "backButtonLabel for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx", - "id": "staking.redeemItnRewards.step3.failure.backButtonLabel", - "start": { - "column": 19, - "line": 32 - } + "defaultMessage": "!!!Wallet name", + "description": "Label for Wallet Name Input", + "id": "wallet.restore.dialog.step.configuration.input.walletName.label" }, { - "defaultMessage": "!!!Close window", - "description": "closeWindowLinkLabel for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx", - "id": "staking.redeemItnRewards.step3.failure.closeWindowLinkLabel", - "start": { - "column": 24, - "line": 37 - } - } - ], - "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Name the wallet you are restoring", + "description": "Placeholder for Wallet Name Input", + "id": "wallet.restore.dialog.step.configuration.input.walletName.placeholder" + }, { - "defaultMessage": "!!!Incentivized Testnet rewards redeemed!", - "description": "title for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.tsx", - "id": "staking.redeemItnRewards.step3.success.title", - "start": { - "column": 9, - "line": 17 - } + "defaultMessage": "!!!Enter password", + "description": "Label for the \"Wallet password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.step.configuration.input.spendingPassword.label" }, { - "defaultMessage": "!!!You have successfully redeemed {redeemedRewards} to your {walletName} wallet. This transaction incurred {transactionFees} in transaction fees", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.tsx", - "id": "staking.redeemItnRewards.step3.success.description", - "start": { - "column": 15, - "line": 22 - } + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.step.configuration.input.repeatPassword.label" }, { - "defaultMessage": "!!!Open the wallet", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.tsx", - "id": "staking.redeemItnRewards.step3.success.openWalletButtonLabel", - "start": { - "column": 25, - "line": 28 - } + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the wallet restore dialog.", + "id": "wallet.restore.dialog.step.configuration.input.passwordFields.placeholder" }, { - "defaultMessage": "!!!Download PDF certificate", - "description": "description for Redeem Incentivized Testnet - Step 3", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.tsx", - "id": "staking.redeemItnRewards.step3.success.downloadPDFButtonLabel", - "start": { - "column": 26, - "line": 33 - } + "defaultMessage": "!!!Continue", + "description": "Placeholder for the dialog \"Continue\" button", + "id": "wallet.restore.dialog.step.configuration.continueButtonLabel" } ], - "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.json" + "path": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Earned delegation rewards", - "description": "Title \"Earned delegation rewards\" label on the staking rewards page.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.title", - "start": { - "column": 9, - "line": 32 - } + "defaultMessage": "!!!Restore a wallet", + "description": "Label \"Restore wallet\" on the wallet restore dialog.", + "id": "wallet.restore.dialog.title.label" }, { - "defaultMessage": "!!!Rewards", - "description": "Filename prefix for the \"Export CSV\" on the staking rewards page.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.csvFilenamePrefix", - "start": { - "column": 21, - "line": 38 - } + "defaultMessage": "!!!Wallet name", + "description": "Label for the wallet name input on the wallet restore dialog.", + "id": "wallet.restore.dialog.wallet.name.input.label" }, { - "defaultMessage": "!!!Export CSV", - "description": "Label for the \"Export CSV\" button on the staking rewards page.", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.exportButtonLabel", - "start": { - "column": 21, - "line": 44 - } + "defaultMessage": "!!!Name the wallet you are restoring", + "description": "Hint \"Name the wallet you are restoring\" for the wallet name input on the wallet restore dialog.", + "id": "wallet.restore.dialog.wallet.name.input.hint" }, { - "defaultMessage": "!!!No rewards", - "description": "\"No rewards\" rewards label on staking rewards page.", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.no.rewards", - "start": { - "column": 13, - "line": 50 - } + "defaultMessage": "!!!Number of words in the recovery phrase", + "description": "Label for the recovery phrase type options on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.options.label" }, { - "defaultMessage": "!!!Wallet", - "description": "Table header \"Wallet\" label on staking rewards page", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.tableHeader.wallet", - "start": { - "column": 21, - "line": 55 - } + "defaultMessage": "!!! words", + "description": "Word for the recovery phrase type on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.word" }, { - "defaultMessage": "!!!Total rewards earned (ADA)", - "description": "Table header \"Total Reward\" label on staking rewards page", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.tableHeader.total", - "start": { - "column": 26, - "line": 60 - } + "defaultMessage": "!!!Rewards wallet", + "description": "Label for the recovery phrase type 15-word option on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.15word.option" }, { - "defaultMessage": "!!!Unspent (ADA)", - "description": "Table header \"Unspent\" label on staking rewards page", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.tableHeader.unspent", - "start": { - "column": 28, - "line": 65 - } + "defaultMessage": "!!!Balance wallet", + "description": "Label for the recovery phrase type 12-word option on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.12word.option" }, { - "defaultMessage": "!!!Rewards address", - "description": "Table header \"Rewards address\" label on staking rewards page", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.tableHeader.rewardsAddress", - "start": { - "column": 29, - "line": 70 - } + "defaultMessage": "!!!Recovery phrase", + "description": "Label for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.input.label" }, { - "defaultMessage": "!!!Date", - "description": "Table header \"Date\" label in exported csv file", - "end": { - "column": 3, - "line": 79 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.tableHeader.date", - "start": { - "column": 19, - "line": 75 - } + "defaultMessage": "!!!Enter recovery phrase", + "description": "Hint \"Enter recovery phrase\" for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.input.hint" }, { - "defaultMessage": "!!!

Rewards earned by delegating your stake are automatically collected into your reward account.

Rewards earned on the Incentivized Testnet are not added to your Rewards wallet balance. They will be paid to you in real ada on the Cardano mainnet after the end of the Incentivized Testnet.

If you are using funds from this wallet to operate a stake pool, the rewards displayed here may include your pledged stake, which will not be counted when reward balances are paid out on the Cardano mainnet.

", - "description": "Rewards description text on staking rewards page", - "end": { - "column": 3, - "line": 85 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.note", - "start": { - "column": 8, - "line": 80 - } + "defaultMessage": "!!!New", + "description": "Label \"new\" on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.newLabel" }, { - "defaultMessage": "!!!Syncing {syncingProgress}%", - "description": "unknown stake pool label on staking rewards page.", - "end": { - "column": 3, - "line": 90 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.delegationCenter.syncingTooltipLabel", - "start": { - "column": 23, - "line": 86 - } + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "wallet.restore.dialog.recovery.phrase.input.noResults" }, { - "defaultMessage": "!!!View in explorer", - "description": "View in explorer button label on staking rewards page.", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/staking/rewards/StakingRewards.tsx", - "id": "staking.rewards.actionViewInExplorer", - "start": { - "column": 24, - "line": 91 - } - } - ], - "path": "source/renderer/app/components/staking/rewards/StakingRewards.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Restore wallet", + "description": "Label for the \"Restore wallet\" button on the wallet restore dialog.", + "id": "wallet.restore.dialog.restore.wallet.button.label" + }, { - "defaultMessage": "!!!Stake pools to which you are delegating", - "description": "\"delegatingListTitle\" for the Stake Pools page.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.delegatingListTitle", - "start": { - "column": 23, - "line": 29 - } + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "wallet.restore.dialog.form.errors.invalidRecoveryPhrase" }, { - "defaultMessage": "!!!Stake pools", - "description": "\"listTitle\" for the Stake Pools page.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.listTitle", - "start": { - "column": 13, - "line": 34 - } + "defaultMessage": "!!!Spending password", + "description": "Password creation label.", + "id": "wallet.restore.dialog.passwordSectionLabel" }, { - "defaultMessage": "!!!Loading stake pools", - "description": "\"listTitleLoading\" for the Stake Pools page.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.listTitleLoading", - "start": { - "column": 20, - "line": 39 - } + "defaultMessage": "!!!Keep your wallet secure by setting the spending password", + "description": "Password creation description.", + "id": "wallet.restore.dialog.passwordSectionDescription" }, { - "defaultMessage": "!!!Stake pools. Search results:", - "description": "\"listTitleSearch\" for the Stake Pools page.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.listTitleSearch", - "start": { - "column": 19, - "line": 44 - } + "defaultMessage": "!!!Enter password", + "description": "Label for the \"Wallet password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.spendingPasswordLabel" }, { - "defaultMessage": "!!!({pools})", - "description": "\"listTitleStakePools\" for the Stake Pools page.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.listTitleStakePools", - "start": { - "column": 23, - "line": 49 - } + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.repeatPasswordLabel" }, { - "defaultMessage": "!!!Loading stake pools", - "description": "Loading stake pool message for the Delegation center body section.", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.loadingStakePoolsMessage", - "start": { - "column": 28, - "line": 54 - } + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the wallet restore dialog.", + "id": "wallet.restore.dialog.passwordFieldPlaceholder" }, { - "defaultMessage": "!!!Moderated by", - "description": "moderatedBy message for the Delegation center body section.", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.moderatedBy", - "start": { - "column": 15, - "line": 60 - } + "defaultMessage": "!!!Daedalus wallet", + "description": "Tab title \"Daedalus wallet\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.tab.title.recoveryPhrase" }, { - "defaultMessage": "!!!Unmoderated", - "description": "unmoderated message for the Delegation center body section.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePools.tsx", - "id": "staking.stakePools.unmoderated", - "start": { - "column": 15, - "line": 65 - } + "defaultMessage": "!!!Daedalus paper wallet", + "description": "Tab title \"Daedalus paper wallet\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.tab.title.certificate" + }, + { + "defaultMessage": "!!!Yoroi wallet", + "description": "Tab title \"Yoroi wallet\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.tab.title.yoroi" + }, + { + "defaultMessage": "!!!27-word paper wallet recovery phrase", + "description": "Label for the shielded recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.shielded.recovery.phrase.input.label" + }, + { + "defaultMessage": "!!!Enter your {numberOfWords}-word paper wallet recovery phrase", + "description": "Hint \"Enter your 27-word paper wallet recovery phrase.\" for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.shielded.recovery.phrase.input.hint" + }, + { + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder \"Enter word #\" for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.shielded.recovery.phrase.input.placeholder" + }, + { + "defaultMessage": "!!!Restore paper wallet", + "description": "Label for the \"Restore paper wallet\" button on the wallet restore dialog.", + "id": "wallet.restore.dialog.paper.wallet.button.label" } ], - "path": "source/renderer/app/components/staking/stake-pools/StakePools.json" + "path": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!all your wallets", - "description": "All wallets item of dropdown.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingAllWallets", - "start": { - "column": 21, - "line": 40 - } - }, + "defaultMessage": "!!!Back to top", + "description": "\"backToTop\" button label.", + "id": "backToTopButton.label" + } + ], + "path": "source/renderer/app/components/widgets/BackToTopButton.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!.", - "description": "All wallets description after dropdown.", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingAllWalletsEnd", - "start": { - "column": 24, - "line": 45 - } - }, + "defaultMessage": "!!!Newsfeed", + "description": "Newsfeed", + "id": "news.newsfeed.iconTooltip" + } + ], + "path": "source/renderer/app/components/widgets/NewsFeedIcon.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Stake pools are currently ranked based on the combined amount in", - "description": "All wallets description before dropdown.", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingAllWalletsStart", - "start": { - "column": 26, - "line": 50 - } + "defaultMessage": "!!!Blocks synced {percentage}%", + "description": "Label for the blocks synced info overlay on node sync status icon.", + "id": "cardano.node.sync.status.blocksSynced" + } + ], + "path": "source/renderer/app/components/widgets/NodeSyncStatusIcon.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Preparing logs for download", + "description": "Notification for download logs in progress in the Loading and Settings pages.", + "id": "notification.downloadLogsProgress" }, { - "defaultMessage": "!!!Use the slider to rank the stake pools and check the potential rewards based on the amount of stake you intend to delegate.", - "description": "Ranking description.", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingDescription", - "start": { - "column": 22, - "line": 56 - } + "defaultMessage": "!!!Logs successfully downloaded", + "description": "Notification for download logs in the Loading and Settings pages.", + "id": "notification.downloadLogsSuccess" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us", - "description": "Ranking learn more url.", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingLearnMoreUrl", - "start": { - "column": 23, - "line": 62 - } + "defaultMessage": "!!!CSV file successfully downloaded", + "description": "Notification for download Rewards CSV file.", + "id": "notification.downloadRewardsCSVSuccess" }, { - "defaultMessage": "!!!wallet.", - "description": "One wallet description after dropdown.", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingOneWalletEnd", - "start": { - "column": 23, - "line": 67 - } + "defaultMessage": "!!!CSV file successfully downloaded", + "description": "Notification for download Transactions CSV file.", + "id": "notification.downloadTransactionsCSVSuccess" }, { - "defaultMessage": "!!!Stake pools are currently ranked based on the amount in", - "description": "One wallet description before dropdown.", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingOneWalletStart", - "start": { - "column": 25, - "line": 72 - } + "defaultMessage": "!!!Public key: {publicKey} copied to clipboard", + "description": "Notification for the wallet public key copy success in the Wallet Settings page.", + "id": "notification.copyWalletPublicKey" }, { - "defaultMessage": "!!!select a wallet", - "description": "Select wallet item of dropdown.", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingSelectWallet", - "start": { - "column": 23, - "line": 78 - } + "defaultMessage": "!!!ICO Public key: {publicKey} copied to clipboard", + "description": "Notification for the ICO public key copy success in the Wallet Settings page.", + "id": "notification.copyICOPublicKey" }, { - "defaultMessage": "!!!to set the amount you intend to delegate.", - "description": "Select wallet description after dropdown.", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingSelectWalletEnd", - "start": { - "column": 26, - "line": 83 - } + "defaultMessage": "!!!Address: {address} copied to clipboard", + "description": "Notification for the wallet address copy success in the Wallet Receive page.", + "id": "notification.copyAddress" }, { - "defaultMessage": "!!!Or", - "description": "Select wallet description before dropdown.", - "end": { - "column": 3, - "line": 92 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingSelectWalletStart", - "start": { - "column": 28, - "line": 88 - } + "defaultMessage": "!!!{param}: {shortValue} copied to clipboard", + "description": "Notification for the wallet assetItem copy success in the Wallet Receive page.", + "id": "notification.copyAssetParam" }, { - "defaultMessage": "!!!Circulating supply", - "description": "Circulating supply slider tooltip.", - "end": { - "column": 3, - "line": 97 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingExtraTooltip", - "start": { - "column": 23, - "line": 93 - } + "defaultMessage": "!!!Address: {walletAddress} PDF successfully downloaded", + "description": "Notification for the wallet address PDF download success in the Wallet Receive page.", + "id": "notification.downloadAddressPDFSuccess" }, { - "defaultMessage": "!!!Saturation point", - "description": "Saturation point slider tooltip.", - "end": { - "column": 3, - "line": 102 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingMaxTooltip", - "start": { - "column": 21, - "line": 98 - } + "defaultMessage": "!!!PDF successfully downloaded", + "description": "Notification for the wallet voting PDF download success in the Voting Registration dialog.", + "id": "notification.downloadVotingPDFSuccess" }, { - "defaultMessage": "!!!Minimum ADA required for staking", - "description": "Minimum ADA required for staking slider tooltip.", - "end": { - "column": 3, - "line": 107 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.rankingMinTooltip", - "start": { - "column": 21, - "line": 103 - } + "defaultMessage": "!!!Address: {walletAddress} QR code image successfully downloaded", + "description": "Notification for the wallet address PDF download success in the Wallet Receive page.", + "id": "notification.downloadQRCodeImageSuccess" }, { - "defaultMessage": "!!!Learn more", - "description": "Learn more action of ranking panel.", - "end": { - "column": 3, - "line": 112 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx", - "id": "staking.stakePools.learnMore", - "start": { - "column": 19, - "line": 108 - } + "defaultMessage": "!!!Daedalus state directory copied to clipboard", + "description": "Notification for the state directory copy success in the Diagnostics page.", + "id": "notification.copyStateDirectoryPath" } ], - "path": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.json" + "path": "source/renderer/app/containers/notifications/NotificationsContainer.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Search stake pools", - "description": "\"Delegating List Title\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.searchInputPlaceholder", - "start": { - "column": 26, - "line": 4 - } - }, - { - "defaultMessage": "!!!Stake pools to which you are delegating", - "description": "\"delegatingListTitle\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.delegatingListTitle", - "start": { - "column": 23, - "line": 9 - } - }, - { - "defaultMessage": "!!!Stake pools ({pools})", - "description": "\"listTitle\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.listTitle", - "start": { - "column": 13, - "line": 14 - } - }, - { - "defaultMessage": "!!!Grid View", - "description": "\"gridIconTooltip\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.gridIconTooltip", - "start": { - "column": 19, - "line": 19 - } - }, + "defaultMessage": "!!!https://iohk.zendesk.com/hc", + "description": "\"Learn more\" link URL in the staking countdown page", + "id": "staking.countdown.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/containers/staking/StakingCountdownPage.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Grid Rewards View", - "description": "\"gridRewardsIconTooltip\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.gridRewardsIconTooltip", - "start": { - "column": 26, - "line": 24 - } - }, + "defaultMessage": "!!!https://staking.cardano.org/", + "description": "\"Learn more\" link URL in the staking rewards page", + "id": "staking.rewards.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/containers/staking/StakingRewardsPage.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!List View", - "description": "\"listIconTooltip\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.listIconTooltip", - "start": { - "column": 19, - "line": 29 - } - }, + "defaultMessage": "!!!Address", + "description": "\"Address\" word in the Address PDF export", + "id": "wallet.receive.pdf.filenamePrefix" + } + ], + "path": "source/renderer/app/containers/wallet/WalletReceivePage.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Clear", - "description": "\"clearTooltip\" for the Stake Pools search.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts", - "id": "staking.stakePools.search.clearTooltip", - "start": { - "column": 16, - "line": 34 - } + "defaultMessage": "!!!No recent transactions", + "description": "Message shown when wallet has no transactions on wallet summary page.", + "id": "wallet.summary.page.no.transactions" } ], - "path": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.json" + "path": "source/renderer/app/containers/wallet/WalletSummaryPage.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Rank", - "description": "Table header \"Rank\" label on stake pools list view page", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.rank", - "start": { - "column": 19, - "line": 4 - } + "defaultMessage": "!!!Recommended hardware requirements status", + "description": "Title of the RTS flags recommendation overlay", + "id": "knownIssues.rtsRecommendationOverlay.title" }, { - "defaultMessage": "!!!

A hierarchical ranking based on the potential rewards you will earn if you delegate the intended amount of stake to this pool, assuming that it reaches saturation.

*Stake pools with the potential rewards estimated at zero have the same ranking. Please set the stake slider to a higher value for more pools to get potential rewards estimated at more than zero.

", - "description": "\"Rank\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.rankingTooltip", - "start": { - "column": 26, - "line": 9 - } + "defaultMessage": "!!!

Your system specifications do not meet Daedalus’ recommended hardware requirements.

You can enable RAM management (RTS Flags), an experimental setting that can reduce memory usage on computers with less than 16GB of RAM.

You can enable it now by clicking the ‘Enable and quit’ button. Note that you will have to restart Daedalus for this change to take effect. To enable or disable it at any time, go to the Help menu.

", + "description": "Content of the RTS flags recommendation overlay", + "id": "knownIssues.rtsRecommendationOverlay.content" }, { - "defaultMessage": "!!!Ticker", - "description": "Table header \"Ticker\" label on stake pools list view page", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.ticker", - "start": { - "column": 21, - "line": 15 - } + "defaultMessage": "!!!Enable and quit", + "description": "Enable and quit button label", + "id": "knownIssues.rtsRecommendationOverlay.enableAndQuitButtonLabel" }, { - "defaultMessage": "!!!Saturation", - "description": "Table header \"Saturation\" label on stake pools list view page", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.saturation", - "start": { - "column": 25, - "line": 20 - } - }, + "defaultMessage": "!!!Decide later", + "description": "Decide later button label", + "id": "knownIssues.rtsRecommendationOverlay.decideLaterButtonLabel" + } + ], + "path": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Saturation measures the stake in the pool and indicates the point at which rewards stop increasing with increases in stake. This capping mechanism encourages decentralization by discouraging users from delegating to oversaturated stake pools.", - "description": "\"Saturation\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.saturationTooltip", - "start": { - "column": 32, - "line": 26 - } + "defaultMessage": "!!!Enable RTS flags (RAM management system)", + "description": "Headline for the RTS flags dialog - when enabling", + "id": "knownIssues.dialog.enableRtsFlagsMode.title" }, { - "defaultMessage": "!!!Performance", - "description": "Table header \"Performance\" label on stake pools list view page", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.performance", - "start": { - "column": 26, - "line": 32 - } + "defaultMessage": "!!!When enabled, the Cardano node will attempt to reduce its RAM usage. You will need to restart Daedalus for this change to take effect.", + "description": "Main body of the dialog - when enabling", + "id": "knownIssues.dialog.enableRtsFlagsMode.explanation" }, { - "defaultMessage": "!!!Uptime (days)", - "description": "Table header \"Uptime\" label on stake pools list view page", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.uptime", - "start": { - "column": 21, - "line": 38 - } + "defaultMessage": "!!!Enable and quit", + "description": "Enable RTS flags button label", + "id": "knownIssues.dialog.enableRtsFlagsMode.actionButton" }, { - "defaultMessage": "!!!Margin", - "description": "Table header \"Margin\" label on stake pools list view page", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.margin", - "start": { - "column": 21, - "line": 43 - } + "defaultMessage": "!!!Disable RTS flags (RAM management system)", + "description": "Headline for the RTS flags dialog - when disabling", + "id": "knownIssues.dialog.disableRtsFlagsMode.title" }, { - "defaultMessage": "!!!The pool's profit, defined as the rewards percentage kept by the pool from the stake that was delegated to it.", - "description": "\"Pool margin\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.profitMarginTooltip", - "start": { - "column": 28, - "line": 48 - } + "defaultMessage": "!!!When disabled, the Cardano node will start in default mode. You will need to restart Daedalus for this change to take effect.", + "description": "Main body of the dialog - when disabling", + "id": "knownIssues.dialog.disableRtsFlagsMode.explanation" }, { - "defaultMessage": "!!!Roi", - "description": "Table header \"Roi\" label on stake pools list view page", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.roi", - "start": { - "column": 18, - "line": 54 - } + "defaultMessage": "!!!Disable and quit", + "description": "Disable RTS flags button label", + "id": "knownIssues.dialog.disableRtsFlagsMode.actionButton" }, { - "defaultMessage": "!!!Cost (ADA)", - "description": "Table header \"Cost\" label on stake pools list view page", - "end": { - "column": 3, - "line": 63 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.cost", - "start": { - "column": 19, - "line": 59 - } - }, + "defaultMessage": "!!!I understand that I will need to launch Daedalus manually", + "description": "Manual relaunch confirmation checkbox label", + "id": "knownIssues.dialog.toggleRtsFlagsMode.manualRelaunchConfirmationCheckboxLabel" + } + ], + "path": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Fixed operational costs that the stake pool retains from any rewards earned during each epoch.", - "description": "\"Cost per epoch\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.costPerEpochTooltip", - "start": { - "column": 26, - "line": 64 - } + "defaultMessage": "!!!Daedalus requires at least {diskSpaceRequired} of hard drive space to operate. Your computer is missing {diskSpaceMissing} of available space. Please delete some files to increase available hard drive space to continue using Daedalus.

It is recommended to have at least 15% of hard drive space available ({diskSpaceRecommended} in your case) for normal and stable operation of the operating system and installed programs. We strongly recommend that you free up at least that amount of space from your hard drive.", + "description": "Content of No disk space overlay", + "id": "noDiskSpace.error.overlayContent" }, { - "defaultMessage": "!!!Produced Blocks", - "description": "Table header \"Produced Blocks\" label on stake pools list view page", - "end": { - "column": 3, - "line": 75 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.producedBlocks", - "start": { - "column": 29, - "line": 70 - } - }, + "defaultMessage": "!!!Daedalus requires more hard drive space", + "description": "Title of No disk space overlay", + "id": "noDiskSpace.error.overlayTitle" + } + ], + "path": "source/renderer/app/components/loading/no-disk-space-error/NoDiskSpaceError.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!The total number of blocks the stake pool has produced.", - "description": "\"Blocks\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.producedBlocksTooltip", - "start": { - "column": 36, - "line": 76 - } + "defaultMessage": "!!!Having trouble connecting to network?", + "description": "Report connecting issue text on the loading screen.", + "id": "loading.screen.reportIssue.connecting.text" }, { - "defaultMessage": "!!!Potential rewards", - "description": "Table header \"Potential rewards\" label on stake pools list view page", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.potentialRewards", - "start": { - "column": 31, - "line": 82 - } + "defaultMessage": "!!!Open support ticket", + "description": "Open support ticket button label on the loading.", + "id": "loading.screen.reportIssue.buttonLabel" }, { - "defaultMessage": "!!!An estimation of the potential rewards you will earn per epoch if you delegate the intended amount of stake. The system looks at the pool's parameters and historical performance data to calculate potential rewards, assuming that the pool reaches optimal saturation.", - "description": "\"Rewards\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 93 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.potentialRewardsTooltip", - "start": { - "column": 38, - "line": 88 - } + "defaultMessage": "!!!Read the article", + "description": "Read the article button label on the loading.", + "id": "loading.screen.readArticle.buttonLabel" }, { - "defaultMessage": "!!!Pledge (ADA)", - "description": "Table header \"Pledge\" label on stake pools list view page", - "end": { - "column": 3, - "line": 98 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.pledge", - "start": { - "column": 21, - "line": 94 - } + "defaultMessage": "!!!Download logs", + "description": "Download logs button label on the loading.", + "id": "loading.screen.reportIssue.downloadLogsLinkLabel" }, { - "defaultMessage": "!!!The amount of stake that a pool operator contributes to a pool. Pools with higher pledge amounts earn more rewards for themselves and their delegators. Pools that do not honor their pledge earn zero rewards and accrue low ranking.", - "description": "\"Pledge\" tooltip for the Stake Pools Table.", - "end": { - "column": 3, - "line": 104 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tooltip.pledgeTooltip", - "start": { - "column": 28, - "line": 99 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "Link to Open Support page", + "id": "loading.screen.reportIssue.reportIssueButtonUrl" }, { - "defaultMessage": "!!!Retiring in", - "description": "Table header \"Retiring\" label on stake pools list view page", - "end": { - "column": 3, - "line": 109 - }, - "file": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx", - "id": "staking.stakePools.tableHeader.retiring", - "start": { - "column": 23, - "line": 105 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360010522913", + "description": "Link to connectivity issue article page", + "id": "loading.screen.readIssueArticle.connectivityIssueArticleUrl" } ], - "path": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.json" + "path": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Rank:", - "description": "\"Rank\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.ranking", - "start": { - "column": 11, - "line": 44 - } + "defaultMessage": "!!!Cardano node is running!", + "description": "Message \"Cardano node is running\" on the status icon tooltip", + "id": "status.icons.nodeIsRunning" }, { - "defaultMessage": "!!!

A hierarchical ranking based on the potential rewards you will earn if you delegate the intended amount of stake to this pool, assuming that it reaches saturation.

*Stake pools with the potential rewards estimated at zero have the same ranking. Please set the stake slider to a higher value for more pools to get potential rewards estimated at more than zero.

", - "description": "\"Rank\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.rankingTooltip", - "start": { - "column": 18, - "line": 49 - } + "defaultMessage": "!!!Cardano node is starting!", + "description": "Message \"Node is starting\" on the status icon tooltip", + "id": "status.icons.nodeIsStarting" }, { - "defaultMessage": "!!!Live stake:", - "description": "\"Live stake\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.relativeStake", - "start": { - "column": 17, - "line": 55 - } + "defaultMessage": "!!!Cardano node is exiting!", + "description": "Message \"Cardano node is exiting\" on the status icon tooltip", + "id": "status.icons.nodeIsExiting" }, { - "defaultMessage": "!!!Measures the amount of stake pledged by the pool plus the amount of stake currently delegated to the pool, versus the total amount in the system.", - "description": "\"Live stake\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.relativeStakeTooltip", - "start": { - "column": 24, - "line": 60 - } + "defaultMessage": "!!!Cardano node is stopping!", + "description": "Message \"Cardano node is stopping\" on the status icon tooltip", + "id": "status.icons.nodeIsStopping" }, { - "defaultMessage": "!!!Pool margin:", - "description": "\"Pool margin\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.profitMargin", - "start": { - "column": 16, - "line": 66 - } + "defaultMessage": "!!!Cardano node has stopped!", + "description": "Message \"Cardano node has stopped\" on the status icon tooltip", + "id": "status.icons.nodeHasStopped" }, { - "defaultMessage": "!!!The pool's profit, defined as the rewards percentage kept by the pool from the stake that was delegated to it.", - "description": "\"Pool margin\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.profitMarginTooltip", - "start": { - "column": 23, - "line": 71 - } - }, + "defaultMessage": "!!!Cardano node is updating!", + "description": "Message \"Cardano node is updating\" on the status icon tooltip", + "id": "status.icons.nodeIsUpdating" + }, { - "defaultMessage": "!!!Cost per epoch:", - "description": "\"Cost per epoch\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.costPerEpoch", - "start": { - "column": 16, - "line": 77 - } + "defaultMessage": "!!!Cardano node has been updated!", + "description": "Message \"Cardano node has been updated\" on the status icon tooltip", + "id": "status.icons.nodeHasBeenUpdated" }, { - "defaultMessage": "!!!Fixed operational costs that the stake pool retains from any rewards earned during each epoch.", - "description": "\"Cost per epoch\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.costPerEpochTooltip", - "start": { - "column": 23, - "line": 82 - } + "defaultMessage": "!!!Cardano node has crashed!", + "description": "Message \"Cardano node has crashed\" on the status icon tooltip", + "id": "status.icons.nodeHasCrashed" }, { - "defaultMessage": "!!!Produced blocks:", - "description": "\"Blocks\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 92 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.producedBlocks", - "start": { - "column": 18, - "line": 88 - } + "defaultMessage": "!!!Cardano node has errored!", + "description": "Message \"Cardano node has errored\" on the status icon tooltip", + "id": "status.icons.nodeHasErrored" }, { - "defaultMessage": "!!!The total number of blocks the stake pool has produced.", - "description": "\"Blocks\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 98 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.producedBlocksTooltip", - "start": { - "column": 25, - "line": 93 - } + "defaultMessage": "!!!Cardano node is unrecoverable!", + "description": "Message \"Cardano node is unrecoverable\" on the status icon tooltip", + "id": "status.icons.nodeIsUnrecoverable" }, { - "defaultMessage": "!!!Potential rewards:", - "description": "\"Rewards\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 103 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.potentialRewards", - "start": { - "column": 20, - "line": 99 - } + "defaultMessage": "!!!Check your Internet connection!", + "description": "Message \"Check your Internet connection\" on the status icon tooltip", + "id": "status.icons.checkYourInternetConnection" }, { - "defaultMessage": "!!!An estimation of the potential rewards you will earn per epoch if you delegate the intended amount of stake. The system looks at the pool's parameters and historical performance data to calculate potential rewards, assuming that the pool reaches optimal saturation.", - "description": "\"Rewards\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 109 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.potentialRewardsTooltip", - "start": { - "column": 27, - "line": 104 - } + "defaultMessage": "!!!Cardano node is responding!", + "description": "Message \"Cardano node is responding\" on the status icon tooltip", + "id": "status.icons.isNodeRespondingOn" }, { - "defaultMessage": "!!!Retirement in {retirementFromNow}", - "description": "\"Retirement\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 114 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.retirement", - "start": { - "column": 14, - "line": 110 - } + "defaultMessage": "!!!Cardano node is not responding!", + "description": "Message \"Cardano node is not responding\" on the status icon tooltip", + "id": "status.icons.isNodeRespondingOff" }, { - "defaultMessage": "!!!Saturation:", - "description": "\"Saturation\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 119 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.saturation", - "start": { - "column": 14, - "line": 115 - } + "defaultMessage": "!!!Checking if Cardano node is responding!", + "description": "Message \"Checking if Cardano node is responding\" on the status icon tooltip", + "id": "status.icons.isNodeRespondingLoading" }, { - "defaultMessage": "!!!Saturation measures the stake in the pool and indicates the point at which rewards stop increasing with increases in stake. This capping mechanism encourages decentralization by discouraging users from delegating to oversaturated stake pools.", - "description": "\"Saturation\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 125 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.saturationTooltip", - "start": { - "column": 21, - "line": 120 - } + "defaultMessage": "!!!Cardano node is subscribed!", + "description": "Message \"Cardano node is subscribed\" on the status icon tooltip", + "id": "status.icons.isNodeSubscribedOn" }, { - "defaultMessage": "!!!Pledge:", - "description": "\"Pledge\" for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 130 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.pledge", - "start": { - "column": 10, - "line": 126 - } + "defaultMessage": "!!!Cardano node is not subscribed!", + "description": "Message \"Cardano node is not subscribed\" on the status icon tooltip", + "id": "status.icons.isNodeSubscribedOff" }, { - "defaultMessage": "!!!The amount of stake that a pool operator contributes to a pool. Pools with higher pledge amounts earn more rewards for themselves and their delegators. Pools that do not honor their pledge earn zero rewards and accrue low ranking.", - "description": "\"Pledge\" tooltip for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 136 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.pledgeTooltip", - "start": { - "column": 17, - "line": 131 - } + "defaultMessage": "!!!Checking if Cardano node is subscribed!", + "description": "Message \"Checking if Cardano node is subscribed\" on the status icon tooltip", + "id": "status.icons.isNodeSubscribedLoading" }, { - "defaultMessage": "!!!Delegate to this pool", - "description": "\"Delegate to this pool\" Button for the Stake Pools Tooltip page.", - "end": { - "column": 3, - "line": 142 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.delegateButton", - "start": { - "column": 18, - "line": 137 - } + "defaultMessage": "!!!Cardano node time is correct!", + "description": "Message \"Cardano node time is correct\" on the status icon tooltip", + "id": "status.icons.isNodeTimeCorrectOn" }, { - "defaultMessage": "!!!Copy the stake pool ID", - "description": "copyId tooltip label", - "end": { - "column": 3, - "line": 147 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.copyIdTooltipLabel", - "start": { - "column": 22, - "line": 143 - } + "defaultMessage": "!!!Cardano node time is not correct!", + "description": "Message \"Cardano node time is not correct\" on the status icon tooltip", + "id": "status.icons.isNodeTimeCorrectOff" }, { - "defaultMessage": "!!!Copied", - "description": "copyId tooltip label copied", - "end": { - "column": 3, - "line": 152 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.tooltip.copiedIdTooltipLabel", - "start": { - "column": 24, - "line": 148 - } + "defaultMessage": "!!!Checking if Cardano node time is correct!", + "description": "Message \"Checking if Cardano node time is correct\" on the status icon tooltip", + "id": "status.icons.isNodeTimeCorrectLoading" }, { - "defaultMessage": "!!!Data not available yet", - "description": "Data not available yet label", - "end": { - "column": 3, - "line": 157 - }, - "file": "source/renderer/app/components/staking/widgets/TooltipPool.tsx", - "id": "staking.stakePools.noDataDashTooltip", - "start": { - "column": 26, - "line": 153 - } + "defaultMessage": "!!!Cardano node is syncing!", + "description": "Message \"Cardano node is syncing\" on the status icon tooltip", + "id": "status.icons.isNodeSyncingOn" + }, + { + "defaultMessage": "!!!Cardano node is not syncing!", + "description": "Message \"Cardano node is not syncing\" on the status icon tooltip", + "id": "status.icons.isNodeSyncingOff" + }, + { + "defaultMessage": "!!!Checking if Cardano node is syncing!", + "description": "Message \"Checking if Cardano node is syncing\" on the status icon tooltip", + "id": "status.icons.isNodeSyncingLoading" } ], - "path": "source/renderer/app/components/staking/widgets/TooltipPool.json" + "path": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Daedalus", - "description": "About \"title\"", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.title", - "start": { - "column": 14, - "line": 14 - } + "defaultMessage": "!!!Starting Cardano node", + "description": "Message \"Starting Cardano node\" on the loading screen.", + "id": "loading.screen.startingCardanoMessage" }, { - "defaultMessage": "!!!Daedalus Team:", - "description": "About page daedalus team headline", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.content.daedalus.headline", - "start": { - "column": 32, - "line": 19 - } + "defaultMessage": "!!!This process validates the integrity of local blockchain data.", + "description": "Message \"Starting Cardano node\" on the loading screen.", + "id": "loading.screen.startingCardanoDescription" }, { - "defaultMessage": "!!!Cardano Team:", - "description": "About page cardano team headline", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.content.cardano.headline", - "start": { - "column": 31, - "line": 24 - } + "defaultMessage": "!!!Stopping Cardano node", + "description": "Message \"Stopping Cardano node\" on the loading screen.", + "id": "loading.screen.stoppingCardanoMessage" }, { - "defaultMessage": "!!!Alan McNicholas, Aleksandar Djordjevic, Alexander Rukin, Brian McKenna, Charles Hoskinson, Daniel Main, Danilo Prates, Darko Mijić, Dmitrii Gaico, Dominik Guzei, Elin Liu, Gabriela Ponce, Jane Wild, Jeremy Wood, Juli Sudi, Junko Oda, Laurie Wang, Lucas Araujo, Manus McCole, Marcin Mazurek, Michael Bishop, Michael Chappell, Mior Sufian, Nikola Glumac, Piotr Stachyra, Przemysław Włodek, Renan Ferreira, Rhys Bartels-Waller, Richard Wild, Robert Moore, Rodney Lorrimar, Sam Jeston, Samuel Leathers, Serge Kosyrev, Szymon Masłowski, Tatyana Valkevych, Tomas Vrana, Tomislav Horaček, Yakov Karavelov", - "description": "About page daedalus team members", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.content.daedalus.members", - "start": { - "column": 31, - "line": 29 - } + "defaultMessage": "!!!This process updates the databases and could take several minutes.
To preserve data integrity, please wait until this process is complete.", + "description": "Message \"Stopping Cardano node\" on the loading screen.", + "id": "loading.screen.stoppingCardanoDescription" }, { - "defaultMessage": "!!!Alan McNicholas, Alejandro Garcia, Alexander Diemand, Alexander Vieth, Anatoli Ivanou, Andreas Triantafyllos, Ante Kegalj, Armando Santos, Ben Ford, Charles Hoskinson, Dan Friedman, Deepak Kapiswe, Denis Shevchenko, Dorin Solomon, Duncan Coutts, Edsko de Vries, Erik de Castro Lopo, Gerard Moroney, Hiroto Shioi, Jane Wild, Jean-Christophe Mincke, Jeremy Wood, Johannes Lund, Jordan Millar, Karl Knutsson, Kristijan Šarić, Lars Brünjes, Laurie Wang, Liz Bancroft, Luke Nadur, Marc Fontaine, Marcin Szamotulski, Matt Parsons, Matthias Benkort, Michael Bishop, Michael Hueschen, Moritz Angermann, Neil Davis, Niamh Ahern, Nicholas Clarke, Nicolas Di Prima, Noel Rimbert, Patrick Kelly, Pawel Jakubas, Peter Gaži, Peter Thompson, Philipp Kant, Piotr Stachyra, Ravi Patel, Richard Wild, Rob Cohen, Rodney Lorrimar, Ryan Lemmer, Samuel Leathers, Serge Kosyrev, Tatyana Valkevych, Tom Flynn, Vasileios Gkoumas, Vincent Hanquez", - "description": "About page cardano team members", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.content.cardano.members", - "start": { - "column": 30, - "line": 35 - } + "defaultMessage": "!!!Cardano node stopped", + "description": "Message \"Cardano node stopped\" on the loading screen.", + "id": "loading.screen.stoppedCardanoMessage" }, { - "defaultMessage": "!!!Input Output HK Limited. Licensed under", - "description": "About \"copyright\"", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.copyright", - "start": { - "column": 18, - "line": 41 - } + "defaultMessage": "!!!Updating Cardano node", + "description": "Message \"Updating Cardano node\" on the loading screen.", + "id": "loading.screen.updatingCardanoMessage" }, { - "defaultMessage": "!!!Apache 2.0 license", - "description": "About page license name", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.license", - "start": { - "column": 15, - "line": 46 - } + "defaultMessage": "!!!Cardano node updated", + "description": "Message \"Cardano node updated\" on the loading screen.", + "id": "loading.screen.updatedCardanoMessage" }, { - "defaultMessage": "!!!MacOS build 3769, with Cardano 1.0.4", - "description": "About page build information", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/static/About.tsx", - "id": "static.about.buildInfo", - "start": { - "column": 18, - "line": 51 - } - } - ], - "path": "source/renderer/app/components/static/About.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!SYSTEM INFO", - "description": "System info", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.system.info", - "start": { - "column": 14, - "line": 30 - } + "defaultMessage": "!!!Cardano node crashed", + "description": "Message \"Cardano node crashed\" on the loading screen.", + "id": "loading.screen.crashedCardanoMessage" }, { - "defaultMessage": "!!!Platform", - "description": "Platform", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.platform", - "start": { - "column": 12, - "line": 35 - } + "defaultMessage": "!!!Unable to start Cardano node. Please submit a support request.", + "description": "Message \"Unable to start Cardano node. Please submit a support request.\" on the loading screen.", + "id": "loading.screen.unrecoverableCardanoMessage" }, { - "defaultMessage": "!!!Platform version", - "description": "Platform version", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.platform.version", - "start": { - "column": 19, - "line": 40 - } + "defaultMessage": "!!!Connecting to network", + "description": "Message \"Connecting to network\" on the loading screen.", + "id": "loading.screen.connectingToNetworkMessage" }, { - "defaultMessage": "!!!CPU", - "description": "CPU", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cpu", - "start": { - "column": 7, - "line": 45 - } + "defaultMessage": "!!!Network connection lost - reconnecting", + "description": "Message \"Network connection lost - reconnecting\" on the loading screen.", + "id": "loading.screen.reconnectingToNetworkMessage" }, { - "defaultMessage": "!!!RAM", - "description": "RAM", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.ram", - "start": { - "column": 7, - "line": 50 - } + "defaultMessage": "!!!Loading wallet data", + "description": "Message \"Loading wallet data\" on the loading screen.", + "id": "loading.screen.loadingWalletData" }, { - "defaultMessage": "!!!Available disk space", - "description": "Available disk space", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.availableDiskSpace", - "start": { - "column": 22, - "line": 55 - } - }, + "defaultMessage": "!!!TLS certificate is not valid, please restart Daedalus.", + "description": "The TLS cert is not valid and Daedalus should be restarted", + "id": "loading.screen.errors.tlsCertificateNotValidPleaseRestartError" + } + ], + "path": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Unknown", - "description": "Unknown amount of disk space", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.unknownDiskSpace", - "start": { - "column": 20, - "line": 60 - } + "defaultMessage": "!!!Unable to sync - incorrect time", + "description": "Title of Sync error overlay", + "id": "systemTime.error.overlayTitle" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc", - "description": "\"Support\" link URL while disk space is unknown", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.unknownDiskSpaceSupportUrl", - "start": { - "column": 30, - "line": 65 - } + "defaultMessage": "!!!Attention, Daedalus is unable to sync with the blockchain because the time on your machine is different from the global time. Your time is off by 2 hours 12 minutes 54 seconds.", + "description": "First paragraph of Sync error overlay", + "id": "systemTime.error.overlayTextP1" }, { - "defaultMessage": "!!!Recommended system requirements status", - "description": "Displayed on the left of the Recommended system requirements status row", - "end": { - "column": 3, - "line": 75 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatus", - "start": { - "column": 35, - "line": 70 - } + "defaultMessage": "!!!To synchronise the time and fix the issue, please read our {supportPortalLink} article.", + "description": "Second paragraph of Sync error overlay", + "id": "systemTime.error.overlayTextP2" }, { - "defaultMessage": "!!!Low", - "description": "Displayed on the right of the Recommended system requirements status row when hardware requirements are insufficient", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusLowValue", - "start": { - "column": 44, - "line": 76 - } + "defaultMessage": "!!!Attention, Daedalus is unable to check if the clock on your computer is synchronized with global time because NTP (Network Time Protocol) servers are unreachable, possibly due to firewalls on your network.", + "description": "Text of Sync error overlay when NTP service is unreachable", + "id": "systemTime.error.ntpUnreachableTextP1" }, { - "defaultMessage": "!!!Good", - "description": "Displayed on the right of the Recommended system requirements status row when hardware requirements are ok", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusGoodValue", - "start": { - "column": 45, - "line": 82 - } + "defaultMessage": "!!!If your computer clock is off by more than 15 seconds, Daedalus will be unable to connect to the network. If you have this issue, please read our Support Portal article to synchronize the time on your machine.", + "description": "Text of Sync error overlay when NTP service is unreachable", + "id": "systemTime.error.ntpUnreachableTextP2" }, { - "defaultMessage": "!!!Your system specifications do not meet Daedalus’ recommended hardware requirements. We suggest using a machine with at least 16 GB of RAM", - "description": "Visible on hovering over Recommended system requirement status when status is Low", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusLowTooltip", - "start": { - "column": 46, - "line": 88 - } + "defaultMessage": "!!!Support Portal", + "description": "\"Support Portal\" link text", + "id": "systemTime.error.supportPortalLink" }, { - "defaultMessage": "!!!Your system specifications meet Daedalus’ recommended hardware requirements", - "description": "Visible on hovering over Recommended system requirement status when status is Good", - "end": { - "column": 3, - "line": 103 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusGoodTooltip", - "start": { - "column": 47, - "line": 96 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360010230873", + "description": "Link to \"Machine clock out of sync with Cardano network\" support page", + "id": "systemTime.error.supportPortalLinkUrl" }, { - "defaultMessage": "!!!RTS Flags Mode", - "description": "Indicates whether RTS Flags Mode is enabled or not", - "end": { - "column": 3, - "line": 108 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.isRTSFlagsModeEnabled", - "start": { - "column": 25, - "line": 104 - } + "defaultMessage": "!!!Check the time again", + "description": "Text of Check the time again button", + "id": "systemTime.error.onCheckTheTimeAgainLink" }, { - "defaultMessage": "!!!CORE INFO", - "description": "CORE INFO", - "end": { - "column": 3, - "line": 113 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.coreInfo", - "start": { - "column": 12, - "line": 109 - } - }, + "defaultMessage": "!!!Continue without clock synchronization checks", + "description": "Text of \"Continue without clock synchronization checks\" button", + "id": "systemTime.error.onContinueWithoutClockSyncCheckLink" + } + ], + "path": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Daedalus version", - "description": "Daedalus version", - "end": { - "column": 3, - "line": 118 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.daedalusVersion", - "start": { - "column": 19, - "line": 114 - } + "defaultMessage": "!!!Wallet data migration", + "description": "Title for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.title" }, { - "defaultMessage": "!!!Daedalus build number", - "description": "Daedalus build number", - "end": { - "column": 3, - "line": 123 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.daedalusBuildNumber", - "start": { - "column": 23, - "line": 119 - } + "defaultMessage": "!!!You have installed a version of Daedalus that changes how wallet data is stored and managed. Because of this, all of your wallets need to be restored and synchronized with the complete history of the Cardano blockchain.", + "description": "Content for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.content1" }, { - "defaultMessage": "!!!Daedalus main process ID", - "description": "Daedalus main process ID", - "end": { - "column": 3, - "line": 128 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.daedalusMainProcessID", - "start": { - "column": 25, - "line": 124 - } + "defaultMessage": "!!!This is an automatic process and does not require any action on your behalf.", + "description": "Content for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.content2" }, { - "defaultMessage": "!!!Daedalus renderer process ID", - "description": "Daedalus renderer process ID", - "end": { - "column": 3, - "line": 133 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.daedalusProcessID", - "start": { - "column": 21, - "line": 129 - } + "defaultMessage": "!!!Your transaction history and used addresses will appear in your wallets as they are recovered during the restoration process. Addresses that were not used will not be recovered because they are not recorded on the blockchain. If funds were sent to those addresses you will receive the funds and those addresses will appear in your wallet.", + "description": "Content for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.content3" }, { - "defaultMessage": "!!!Daedalus 'Blank Screen Fix' active", - "description": "Daedalus 'Blank Screen Fix' active", - "end": { - "column": 3, - "line": 138 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.blankScreenFix", - "start": { - "column": 18, - "line": 134 - } - }, + "defaultMessage": "!!!Start migration", + "description": "Submit label for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.submitLabel" + } + ], + "path": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Cardano node version", - "description": "Cardano node version", - "end": { - "column": 3, - "line": 143 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeVersion", - "start": { - "column": 22, - "line": 139 - } + "defaultMessage": "!!!I agree with terms of service", + "description": "Label for the \"I agree with terms of service\" checkbox.", + "id": "profile.termsOfUse.checkboxLabel" }, { - "defaultMessage": "!!!Cardano node process ID", - "description": "Cardano node process ID", - "end": { - "column": 3, - "line": 148 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodePID", - "start": { - "column": 18, - "line": 144 - } + "defaultMessage": "!!!I understand that the terms of use are only available in English and agree to the terms of use", + "description": "Label for the \"I agree with terms of service\" checkbox when terms of use are not translated.", + "id": "profile.termsOfUse.checkboxLabelWithDisclaimer" }, { - "defaultMessage": "!!!Cardano node port", - "description": "Cardano node port", - "end": { - "column": 3, - "line": 153 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeApiPort", - "start": { - "column": 22, - "line": 149 - } - }, + "defaultMessage": "!!!Continue", + "description": "Label for the \"Terms of service\" form submit button.", + "id": "profile.termsOfUse.submitLabel" + } + ], + "path": "source/renderer/app/components/profile/terms-of-use/TermsOfUseForm.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Cardano wallet process ID", - "description": "Cardano wallet process ID", - "end": { - "column": 3, - "line": 158 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoWalletPID", - "start": { - "column": 20, - "line": 154 - } + "defaultMessage": "!!!Theme", + "description": "Label for the \"Theme\" selection on the display settings page.", + "id": "settings.display.themeLabel" }, { - "defaultMessage": "!!!Cardano wallet version", - "description": "Cardano wallet version", - "end": { - "column": 3, - "line": 163 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoWalletVersion", - "start": { - "column": 24, - "line": 159 - } + "defaultMessage": "!!!Incentivized Testnet", + "description": "Name of the \"Incentivized Testnet\" theme on the display settings page.", + "id": "settings.display.themeNames.incentivizedTestnet" }, { - "defaultMessage": "!!!Cardano wallet port", - "description": "Cardano wallet port", - "end": { - "column": 3, - "line": 168 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoWalletApiPort", - "start": { - "column": 24, - "line": 164 - } + "defaultMessage": "!!!Light blue", + "description": "Name of the \"Light blue\" theme on the display settings page.", + "id": "settings.display.themeNames.lightBlue" }, { - "defaultMessage": "!!!Cardano network", - "description": "Cardano network", - "end": { - "column": 3, - "line": 173 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNetwork", - "start": { - "column": 18, - "line": 169 - } + "defaultMessage": "!!!Cardano", + "description": "Name of the \"Cardano\" theme on the display settings page.", + "id": "settings.display.themeNames.cardano" }, { - "defaultMessage": "!!!Daedalus state directory", - "description": "Daedalus state directory", - "end": { - "column": 3, - "line": 178 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.stateDirectory", - "start": { - "column": 22, - "line": 174 - } + "defaultMessage": "!!!Dark blue", + "description": "Name of the \"Dark blue\" theme on the display settings page.", + "id": "settings.display.themeNames.darkBlue" }, { - "defaultMessage": "!!!Open", - "description": "Open", - "end": { - "column": 3, - "line": 183 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.stateDirectoryPathOpenBtn", - "start": { - "column": 29, - "line": 179 - } + "defaultMessage": "!!!Dark Cardano", + "description": "Name of the \"Dark cardano\" theme on the display settings page.", + "id": "settings.display.themeNames.darkCardano" }, { - "defaultMessage": "!!!CONNECTION ERROR", - "description": "CONNECTION ERROR", - "end": { - "column": 3, - "line": 188 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.connectionError", - "start": { - "column": 19, - "line": 184 - } + "defaultMessage": "!!!Flight Candidate", + "description": "Name of the \"Flight Candidate\" theme on the display settings page.", + "id": "settings.display.themeNames.flightCandidate" }, { - "defaultMessage": "!!!DAEDALUS STATUS", - "description": "DAEDALUS STATUS", - "end": { - "column": 3, - "line": 193 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.daedalusStatus", - "start": { - "column": 18, - "line": 189 - } + "defaultMessage": "!!!Shelley Testnet", + "description": "Name of the \"Shelley Testnet\" theme on the display settings page.", + "id": "settings.display.themeNames.shelleyTestnet" }, { - "defaultMessage": "!!!Connected", - "description": "Connected", - "end": { - "column": 3, - "line": 198 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.connected", - "start": { - "column": 13, - "line": 194 - } - }, - { - "defaultMessage": "!!!Synced", - "description": "Synced", - "end": { - "column": 3, - "line": 203 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.synced", - "start": { - "column": 10, - "line": 199 - } - }, - { - "defaultMessage": "!!!Sync percentage", - "description": "Sync percentage", - "end": { - "column": 3, - "line": 208 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.syncPercentage", - "start": { - "column": 18, - "line": 204 - } - }, - { - "defaultMessage": "!!!Local time difference", - "description": "Local time difference", - "end": { - "column": 3, - "line": 213 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.localTimeDifference", - "start": { - "column": 23, - "line": 209 - } + "defaultMessage": "!!!Yellow", + "description": "Name of the \"Yellow\" theme on the display settings page.", + "id": "settings.display.themeNames.yellow" }, { - "defaultMessage": "!!!System time correct", - "description": "System time correct", - "end": { - "column": 3, - "line": 218 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.systemTimeCorrect", - "start": { - "column": 21, - "line": 214 - } - }, + "defaultMessage": "!!!White", + "description": "Name of the \"White\" theme on the display settings page.", + "id": "settings.display.themeNames.white" + } + ], + "path": "source/renderer/app/components/settings/categories/DisplaySettings.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!System time ignored", - "description": "System time ignored", - "end": { - "column": 3, - "line": 223 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.systemTimeIgnored", - "start": { - "column": 21, - "line": 219 - } + "defaultMessage": "!!!Discreet mode", + "description": "Title for the \"Discreet mode\" setting in the security category.", + "id": "settings.security.discreetMode.title" }, { - "defaultMessage": "!!!Checking system time", - "description": "Checking system time", - "end": { - "column": 3, - "line": 228 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.checkingNodeTime", - "start": { - "column": 20, - "line": 224 - } + "defaultMessage": "!!!This mode uses asterisks to hide sensitive data", + "description": "Description for the \"Discreet mode\" setting in the security category.", + "id": "settings.security.discreetMode.description" }, { - "defaultMessage": "!!!CARDANO NODE STATUS", - "description": "CARDANO NODE STATUS", - "end": { - "column": 3, - "line": 233 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeStatus", - "start": { - "column": 21, - "line": 229 - } + "defaultMessage": "!!!Start the application in Discreet mode", + "description": "Title for the \"Open in discreet mode\" setting in the security category.", + "id": "settings.security.openInDiscreetMode.title" }, { - "defaultMessage": "!!!Restarting Cardano node...", - "description": "Restarting Cardano node...", - "end": { - "column": 3, - "line": 238 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeStatusRestarting", - "start": { - "column": 31, - "line": 234 - } - }, + "defaultMessage": "!!!Daedalus will start with Discreet mode enabled by default", + "description": "Description for the \"Open in discreet mode\" setting in the security category.", + "id": "settings.security.openInDiscreetMode.description" + } + ], + "path": "source/renderer/app/components/settings/categories/SecuritySettings.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Restart Cardano node", - "description": "Restart Cardano node", - "end": { - "column": 3, - "line": 243 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeStatusRestart", - "start": { - "column": 28, - "line": 239 - } + "defaultMessage": "!!!The {link} is an off-chain metadata server that enables the fast loading of stake pool details. Stake pools are also curated and each server has a different curation policy.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.description" }, { - "defaultMessage": "!!!Cardano node state", - "description": "Cardano node state", - "end": { - "column": 3, - "line": 248 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeState", - "start": { - "column": 20, - "line": 244 - } + "defaultMessage": "!!!Stakepool Metadata Aggregation Server (SMASH)", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionLinkLabel" }, { - "defaultMessage": "!!!Updated", - "description": "Updated", - "end": { - "column": 3, - "line": 253 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeHasBeenUpdated", - "start": { - "column": 22, - "line": 249 - } + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2020/11/17/in-pools-we-trust/", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionLinkUrl" }, { - "defaultMessage": "!!!Crashed", - "description": "Crashed", - "end": { - "column": 3, - "line": 258 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeHasCrashed", - "start": { - "column": 18, - "line": 254 - } + "defaultMessage": "!!!The IOHK server ensures that registered stake pools are valid, helps to avoid duplicated ticker names or trademarks, and checks that the pools do not feature potentially offensive or harmful information.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKContent1" }, { - "defaultMessage": "!!!Errored", - "description": "Errored", - "end": { - "column": 3, - "line": 263 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeHasErrored", - "start": { - "column": 18, - "line": 259 - } + "defaultMessage": "!!!This allows us to deal with any scams, trolls, or abusive behavior by filtering out potentially problematic actors. {link} about the IOHK SMASH server.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKContent2" }, { - "defaultMessage": "!!!Stopped", - "description": "Stopped", - "end": { - "column": 3, - "line": 268 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeHasStopped", - "start": { - "column": 18, - "line": 264 - } + "defaultMessage": "!!!Read more", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKLinkLabel" }, { - "defaultMessage": "!!!Exiting", - "description": "Exiting", - "end": { - "column": 3, - "line": 273 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeIsExiting", - "start": { - "column": 17, - "line": 269 - } + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2020/11/17/in-pools-we-trust/", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKLinkUrl" }, { - "defaultMessage": "!!!Running", - "description": "Running", - "end": { - "column": 3, - "line": 278 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeIsRunning", - "start": { - "column": 17, - "line": 274 - } + "defaultMessage": "!!!This option is not recommended! Without the off-chain metadata server your Daedalus client will fetch this data by contacting every stake pool individually, which is a very slow and resource-consuming process. The list of stake pools received is not curated, so Daedalus will receive legitimate pools, duplicates, and fake pools. An added risk to this process is that your antivirus or antimalware software could recognize the thousands of network requests as malicious behavior by the Daedalus client.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionNone" }, { - "defaultMessage": "!!!Starting", - "description": "Starting", - "end": { - "column": 3, - "line": 283 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeIsStarting", - "start": { - "column": 18, - "line": 279 - } + "defaultMessage": "!!!Off-chain metadata server (SMASH)", + "description": "smashSelectLabel for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.label" }, { - "defaultMessage": "!!!Stopping", - "description": "Stopping", - "end": { - "column": 3, - "line": 288 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeIsStopping", - "start": { - "column": 18, - "line": 284 - } + "defaultMessage": "!!!IOHK (Recommended)", + "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.IOHKServer" }, { - "defaultMessage": "!!!Unrecoverable", - "description": "Unrecoverable", - "end": { - "column": 3, - "line": 293 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeIsUnrecoverable", - "start": { - "column": 23, - "line": 289 - } + "defaultMessage": "!!!None - let my Daedalus client fetch the data", + "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.direct" }, { - "defaultMessage": "!!!Updating", - "description": "Updating", - "end": { - "column": 3, - "line": 298 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.nodeIsUpdating", - "start": { - "column": 18, - "line": 294 - } + "defaultMessage": "!!!Custom server", + "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.customServer" }, { - "defaultMessage": "!!!Cardano node responding", - "description": "Cardano node responding", - "end": { - "column": 3, - "line": 303 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeResponding", - "start": { - "column": 25, - "line": 299 - } + "defaultMessage": "!!!SMASH server URL", + "description": "smashURLInputLabel for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.label" }, { - "defaultMessage": "!!!Cardano node subscribed", - "description": "Cardano node subscribed", - "end": { - "column": 3, - "line": 308 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeSubscribed", - "start": { - "column": 25, - "line": 304 - } + "defaultMessage": "!!!Enter custom server URL", + "description": "smashUrlInputPlaceholder for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.placeholder" }, { - "defaultMessage": "!!!Cardano node time correct", - "description": "Cardano node time correct", - "end": { - "column": 3, - "line": 313 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeTimeCorrect", - "start": { - "column": 26, - "line": 309 - } + "defaultMessage": "!!!Invalid URL", + "description": "invalidUrl for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.invalidUrl" }, { - "defaultMessage": "!!!Cardano node syncing", - "description": "Cardano node syncing", - "end": { - "column": 3, - "line": 318 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeSyncing", - "start": { - "column": 22, - "line": 314 - } + "defaultMessage": "!!!The URL should start with \"https://\"", + "description": "invalidUrlPrefix for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.invalidUrlPrefix" }, { - "defaultMessage": "!!!Cardano node in sync", - "description": "Cardano node in sync", - "end": { - "column": 3, - "line": 323 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.cardanoNodeInSync", - "start": { - "column": 21, - "line": 319 - } - }, + "defaultMessage": "!!!Only \"https://\" protocol and hostname (e.g. domain.com) are allowed", + "description": "invalidUrlParameter for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.invalidUrlParameter" + } + ], + "path": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Checking...", - "description": "Checking...", - "end": { - "column": 3, - "line": 328 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.localTimeDifferenceChecking", - "start": { - "column": 31, - "line": 324 - } + "defaultMessage": "!!!Your changes have been saved", + "description": "Message \"Your changes have been saved\" for inline editing (eg. on Profile Settings page).", + "id": "inline.editing.input.changesSaved" }, { - "defaultMessage": "!!!Check time", - "description": "Check time", - "end": { - "column": 3, - "line": 333 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.localTimeDifferenceCheckTime", - "start": { - "column": 32, - "line": 329 - } + "defaultMessage": "!!!change", + "description": "Label \"change\" on inline editing inputs in inactive state.", + "id": "inline.editing.input.change.label" }, { - "defaultMessage": "!!!Yes", - "description": "Yes", - "end": { - "column": 3, - "line": 338 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.statusOn", - "start": { - "column": 12, - "line": 334 - } - }, + "defaultMessage": "!!!cancel", + "description": "Label \"cancel\" on inline editing inputs in inactive state.", + "id": "inline.editing.input.cancel.label" + } + ], + "path": "source/renderer/app/components/widgets/forms/InlineEditingInput.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!No", - "description": "No", - "end": { - "column": 3, - "line": 343 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.statusOff", - "start": { - "column": 13, - "line": 339 - } + "defaultMessage": "!!!Help and support", + "description": "Title \"Help and support\" on the support settings page.", + "id": "settings.support.faq.title" }, { - "defaultMessage": "!!!On", - "description": "On", - "end": { - "column": 3, - "line": 348 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.statusOnForUserSettings", - "start": { - "column": 27, - "line": 344 - } + "defaultMessage": "!!!If you are experiencing a problem, please look for guidance using the list of {faqLink} on the support pages. If you can’t find a solution, please submit a support ticket.", + "description": "Content for the \"Help and support\" section on the support settings page.", + "id": "settings.support.faq.content" }, { - "defaultMessage": "!!!Off", - "description": "Off", - "end": { - "column": 3, - "line": 353 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.statusOffForUserSettings", - "start": { - "column": 28, - "line": 349 - } + "defaultMessage": "!!!Known Issues", + "description": "\"Known Issues\" link in the \"Help and support\" section on the support settings page", + "id": "settings.support.faq.faqLink" }, { - "defaultMessage": "!!!NTP service unreachable", - "description": "NTP service unreachable", - "end": { - "column": 3, - "line": 358 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.serviceUnreachable", - "start": { - "column": 22, - "line": 354 - } + "defaultMessage": "!!!Steps for creating a support request:", + "description": "Title \"Steps for creating a support request\" on the support settings page.", + "id": "settings.support.steps.title" }, { - "defaultMessage": "!!!message", - "description": "message", - "end": { - "column": 3, - "line": 363 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.message", - "start": { - "column": 11, - "line": 359 - } + "defaultMessage": "!!!Download the logs", + "description": "Title \"Download the logs\" on the support settings page.", + "id": "settings.support.steps.downloadLogs.title" }, { - "defaultMessage": "!!!code", - "description": "code", - "end": { - "column": 3, - "line": 368 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.code", - "start": { - "column": 8, - "line": 364 - } + "defaultMessage": "!!!Please {downloadLogsLink} and attach the downloaded file when submitting a support request to help the support team investigate the issue. Logs do not contain sensitive information.", + "description": "Description of \"Download the logs\" on the support settings page.", + "id": "settings.support.steps.downloadLogs.description" }, { - "defaultMessage": "!!!Last network block", - "description": "Last network block", - "end": { - "column": 3, - "line": 373 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.lastNetworkBlock", - "start": { - "column": 20, - "line": 369 - } + "defaultMessage": "!!!download your logs here", + "description": "\"download your logs here\" link in the Logs section on the support settings page", + "id": "settings.support.steps.downloadLogs.link" }, { - "defaultMessage": "!!!Last synchronized block", - "description": "Last synchronized block", - "end": { - "column": 3, - "line": 378 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.lastSynchronizedBlock", - "start": { - "column": 25, - "line": 374 - } + "defaultMessage": "!!!Report a problem", + "description": "Title \"Report a problem\" on the support settings page.", + "id": "settings.support.steps.reportProblem.title" }, { - "defaultMessage": "!!!epoch", - "description": "epoch", - "end": { - "column": 3, - "line": 383 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.epoch", - "start": { - "column": 9, - "line": 379 - } + "defaultMessage": "!!!Please {downloadLogsLink} and attach the downloaded file when submitting a support request to help the support team investigate the issue. Logs do not contain sensitive information.", + "description": "Description of \"Download the logs\" on the support settings page.", + "id": "settings.support.steps.reportProblem.description" }, { - "defaultMessage": "!!!slot", - "description": "slot", - "end": { - "column": 3, - "line": 388 - }, - "file": "source/renderer/app/components/status/DaedalusDiagnostics.tsx", - "id": "daedalus.diagnostics.dialog.slot", - "start": { - "column": 8, - "line": 384 - } + "defaultMessage": "!!!download your logs here", + "description": "\"download your logs here\" link in the Logs section on the support settings page", + "id": "settings.support.steps.reportProblem.link" } ], - "path": "source/renderer/app/components/status/DaedalusDiagnostics.json" + "path": "source/renderer/app/components/settings/categories/SupportSettings.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Catalyst API unavailable", - "description": "Title", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/ApiError.messages.ts", - "id": "voting.apiError.title", - "start": { - "column": 9, - "line": 4 - } + "defaultMessage": "!!!Display ada balances in other currency", + "description": "titleLabel for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.titleLabel" }, { - "defaultMessage": "!!!Unable to communicate with the API that retrieves the Catalyst date information.", - "description": "Description 1", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/voting/voting-info/ApiError.messages.ts", - "id": "voting.apiError.description1", - "start": { - "column": 16, - "line": 9 - } + "defaultMessage": "!!!Select a conversion currency for displaying your ada balances.", + "description": "currencyDescription for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.description" }, { - "defaultMessage": "!!!Please, try again later.", - "description": "Description 2", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/voting/voting-info/ApiError.messages.ts", - "id": "voting.apiError.description2", - "start": { - "column": 16, - "line": 15 - } - } - ], - "path": "source/renderer/app/components/voting/voting-info/ApiError.messages.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Select currency", + "description": "currencySelectLabel for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.selectLabel" + }, { - "defaultMessage": "!!!https://play.google.com/store/apps/details?id=io.iohk.vitvoting", - "description": "\"androidAppButtonUrl\" for the Catalyst voting app", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/components/voting/voting-info/AppStore.messages.ts", - "id": "voting.info.androidAppButtonUrl", - "start": { - "column": 23, - "line": 4 - } + "defaultMessage": "!!!Conversion rates are provided by CoinGecko without any warranty. Please use the calculated conversion value only as a reference. Converted balances reflect the current global average price of ada on active cryptocurrency exchanges, as tracked by CoinGecko. Ada conversion is available only to fiat and cryptocurrencies that are supported by CoinGecko, other local currency conversions may not be available.", + "description": "currencyDisclaimer for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.disclaimer" }, { - "defaultMessage": "!!!https://apps.apple.com/in/app/catalyst-voting/id1517473397", - "description": "\"appleAppButtonUrl\" for the Catalyst voting app", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/voting/voting-info/AppStore.messages.ts", - "id": "voting.info.appleAppButtonUrl", - "start": { - "column": 21, - "line": 10 - } + "defaultMessage": "!!!Powered by", + "description": "currencyPoweredByLabel for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.poweredBy.label" } ], - "path": "source/renderer/app/components/voting/voting-info/AppStore.messages.json" + "path": "source/renderer/app/components/settings/categories/WalletsSettings.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Project Catalyst", - "description": "Headline Project Catalyst", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/Headline.messages.ts", - "id": "voting.catalyst.heading", - "start": { - "column": 11, - "line": 4 - } + "defaultMessage": "!!!General", + "description": "Label for the \"General\" link in the settings menu.", + "id": "settings.menu.general.link.label" }, { - "defaultMessage": "!!!Decide which innovative ideas for Cardano will receive funding.", - "description": "Description Project Catalyst", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/voting/voting-info/Headline.messages.ts", - "id": "voting.catalyst.descriptionRow1", - "start": { - "column": 19, - "line": 9 - } + "defaultMessage": "!!!Security", + "description": "Label for the \"Security\" link in the settings menu.", + "id": "settings.menu.security.link.label" }, { - "defaultMessage": "!!!{reward} worth of ada rewards will be distributed between ada holders who register their vote.", - "description": "Description Project Catalyst", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/voting/voting-info/Headline.messages.ts", - "id": "voting.catalyst.descriptionRow2", - "start": { - "column": 19, - "line": 15 - } + "defaultMessage": "!!!Wallets", + "description": "Label for the \"Wallets\" link in the settings menu.", + "id": "settings.menu.wallets.link.label" }, { - "defaultMessage": "!!!Learn more", - "description": "Learn more link label for registration steps", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/voting/voting-info/Headline.messages.ts", - "id": "voting.info.learnMoreLinkLabel", - "start": { - "column": 22, - "line": 21 - } + "defaultMessage": "!!!Stake Pools", + "description": "Label for the \"Support\" link in the settings menu.", + "id": "settings.menu.stakePools.link.label" }, { - "defaultMessage": "!!!https://cardano.ideascale.com/a/index", - "description": "Learn more link url for registration steps", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/voting/voting-info/Headline.messages.ts", - "id": "voting.info.learnMoreLinkUrl", - "start": { - "column": 20, - "line": 26 - } + "defaultMessage": "!!!Support", + "description": "Label for the \"Support\" link in the settings menu.", + "id": "settings.menu.support.link.label" + }, + { + "defaultMessage": "!!!Terms of service", + "description": "Label for the \"Terms of service\" link in the settings menu.", + "id": "settings.menu.termsOfUse.link.label" + }, + { + "defaultMessage": "!!!Themes", + "description": "Label for the \"Themes\" link in the settings menu.", + "id": "settings.menu.display.link.label" } ], - "path": "source/renderer/app/components/voting/voting-info/Headline.messages.json" + "path": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Snapshot date:", - "description": "Voting info snapshot date label", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts", - "id": "voting.registerToVote.dateLabel", - "start": { - "column": 13, - "line": 4 - } + "defaultMessage": "!!!Add wallet", + "description": "Label for the \"Add wallet\" button in wallet sidebar menu.", + "id": "sidebar.wallets.addWallet" }, { - "defaultMessage": "!!!Follow these steps to vote:", - "description": "Steps to follow title", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts", - "id": "voting.registerToVote.stepsTitle", - "start": { - "column": 14, - "line": 9 - } + "defaultMessage": "!!!Date", + "description": "Label for the \"Date\" sort button", + "id": "sidebar.wallets.sortByDateButton" }, { - "defaultMessage": "!!!Download the Catalyst Voting app on your smartphone", - "description": "First step to follow in order to vote", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts", - "id": "voting.registerToVote.step1CheckBoxLabel", - "start": { - "column": 22, - "line": 14 - } + "defaultMessage": "!!!Sort wallets by creation date", + "description": "Tooltip message for Date sort button", + "id": "sidebar.wallets.sortByDateTooltip" }, { - "defaultMessage": "!!!Ensure that you register and hold the necessary 500 ADA at the time of the snapshot.", - "description": "Second step to follow in order to vote", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts", - "id": "voting.registerToVote.step2CheckBoxLabel", - "start": { - "column": 22, - "line": 19 - } + "defaultMessage": "!!!Balance", + "description": "Label for the \"Balance\" sort button", + "id": "sidebar.wallets.sortByBalanceButton" }, { - "defaultMessage": "!!!Register to vote", - "description": "Button Label for voting registration steps", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts", - "id": "voting.registerToVote.registerToVoteButtonLabel", - "start": { - "column": 15, - "line": 25 - } - } - ], - "path": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!End of voting:", - "description": "Headline for end date", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/ResultsPhase.messages.ts", - "id": "voting.resultsPhase.endDateLabel", - "start": { - "column": 16, - "line": 4 - } + "defaultMessage": "!!!Sort wallets by balance", + "description": "Tooltip message for Balance sort button", + "id": "sidebar.wallets.sortByBalanceTooltip" }, { - "defaultMessage": "!!!View results", - "description": "View results link label", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/voting/voting-info/ResultsPhase.messages.ts", - "id": "voting.resultsPhase.viewResultsLinkLabel", - "start": { - "column": 24, - "line": 9 - } + "defaultMessage": "!!!A – Z", + "description": "Label for the \"Name\" sort button", + "id": "sidebar.wallets.sortByNameButton" }, { - "defaultMessage": "https://cardano.ideascale.com/a/pages/results", - "description": "View results link", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/voting/voting-info/ResultsPhase.messages.ts", - "id": "voting.resultsPhase.viewResultsLinkURL", - "start": { - "column": 22, - "line": 14 - } + "defaultMessage": "!!!Sort wallets by name", + "description": "Tooltip message for Name sort button", + "id": "sidebar.wallets.sortByNameTooltip" } ], - "path": "source/renderer/app/components/voting/voting-info/ResultsPhase.messages.json" + "path": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Snapshot date:", - "description": "Snapshot date label", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/SnapshotPhase.messages.ts", - "id": "voting.snapshotPhase.snapshotDateLabel", - "start": { - "column": 21, - "line": 4 - } - }, - { - "defaultMessage": "!!!Next voting period:", - "description": "Next voting date label", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/voting/voting-info/SnapshotPhase.messages.ts", - "id": "voting.snapshotPhase.votingDateLabel", - "start": { - "column": 19, - "line": 9 - } + "defaultMessage": "!!!Filter", + "description": "Search placeholder for the sidebar wallet menu", + "id": "sidebar.wallets.search.placeholder" } ], - "path": "source/renderer/app/components/voting/voting-info/SnapshotPhase.messages.json" + "path": "source/renderer/app/components/sidebar/wallets/WalletSearch.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Voting ended:", - "description": "Voting end date label", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/TallyingPhase.messages.ts", - "id": "voting.tallyingPhase.endDateLabel", - "start": { - "column": 16, - "line": 4 - } + "defaultMessage": "!!!Shelley upgrade", + "description": "Headline for the Decentralisation notification.", + "id": "staking.delegationCountdown.heading" }, { - "defaultMessage": "!!!Check back for results on:", - "description": "Results date label", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/voting/voting-info/TallyingPhase.messages.ts", - "id": "voting.tallyingPhase.resultsLabel", - "start": { - "column": 16, - "line": 9 - } - } - ], - "path": "source/renderer/app/components/voting/voting-info/TallyingPhase.messages.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Cardano will soon start transitioning from a federated to a decentralized system. The first step is the activation of the Shelley upgrade. Once the upgrade is complete, stake pools will start registering and users will be able to delegate their wallets. Two epochs (10 days) later, stake pools will begin producing blocks and users could start earning rewards from delegating their stakes. The first rewards, where due, will be distributed two more epochs later (10 days).", + "description": "Info for the Decentralisation notification.", + "id": "staking.delegationCountdown.description" + }, { - "defaultMessage": "!!!Fund{votingFundNumber}", - "description": "Current fund name", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/VotingInfo.messages.ts", - "id": "voting.fundName", - "start": { - "column": 12, - "line": 4 - } + "defaultMessage": "!!!Rewards begin in", + "description": "Description for the Decentralisation notification.", + "id": "staking.delegationCountdown.timeLeftDesc" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Button Label for the Decentralisation notification.", + "id": "staking.delegationCountdown.buttonLabel" } ], - "path": "source/renderer/app/components/voting/voting-info/VotingInfo.messages.json" + "path": "source/renderer/app/components/staking/countdown/StakingCountdown.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Voting period open between:", - "description": "Voting date label", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/voting/voting-info/VotingPhase.messages.ts", - "id": "voting.votingOpenPhase.dateLabel", - "start": { - "column": 13, - "line": 4 - } + "defaultMessage": "!!!Wallets", + "description": "Title for the Delegation center body section.", + "id": "staking.delegationCenter.bodyTitle" }, { - "defaultMessage": "!!!Use mobile app to vote", - "description": "Voting instruction", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/voting/voting-info/VotingPhase.messages.ts", - "id": "voting.votingOpenPhase.instruction", - "start": { - "column": 15, - "line": 9 - } + "defaultMessage": "!!!Now", + "description": "Title for the Delegation current epoch.", + "id": "staking.delegationCenter.currentEpochTitle" + }, + { + "defaultMessage": "!!!Loading stake pools", + "description": "Loading stake pool message for the Delegation center body section.", + "id": "staking.delegationCenter.loadingStakePoolsMessage" } ], - "path": "source/renderer/app/components/voting/voting-info/VotingPhase.messages.json" + "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterBody.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!You can only use one wallet when registering. To maximize rewards and voting power, choose the wallet with the largest balance.", - "description": "Description on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.description", - "start": { - "column": 15, - "line": 11 - } + "defaultMessage": "!!!Epoch", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.epoch" }, { - "defaultMessage": "!!!Select a wallet", - "description": "Label \"Wallet\" for select input on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.selectWalletInputLabel", - "start": { - "column": 26, - "line": 17 - } + "defaultMessage": "!!!Current slot", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.currentSlot" }, { - "defaultMessage": "!!!Select a wallet", - "description": "Placeholder \"Select Wallet\" for select input on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.selectWalletInputPlaceholder", - "start": { - "column": 32, - "line": 23 - } + "defaultMessage": "!!!Total slots", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.totalSlots" }, { - "defaultMessage": "!!!This wallet does not contain the minimum required amount of {minVotingRegistrationFunds} ADA. Please select a different wallet with a minimum balance of {minVotingRegistrationFunds} ADA.", - "description": "errorMinVotingFunds Error Label on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.errorMinVotingFunds", - "start": { - "column": 23, - "line": 30 - } + "defaultMessage": "!!!Next Cardano epoch starts in", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.headingLeft" }, { - "defaultMessage": "!!!This wallet cannot be registered for voting as it contains rewards balance only.", - "description": "errorMinVotingFundsRewardsOnly Error Label on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.errorMinVotingFundsRewardsOnly", - "start": { - "column": 34, - "line": 37 - } + "defaultMessage": "!!!Current Cardano epoch", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.headingRight" }, { - "defaultMessage": "!!!This wallet cannot be registered for voting as it is a legacy Byron wallet.", - "description": "Byron wallet error message on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.errorLegacyWallet", - "start": { - "column": 21, - "line": 45 - } + "defaultMessage": "!!!Changes to delegation preferences will take effect after both the current and next Cardano epochs have completed. Epochs on the Incentivized Testnet last one day. Any changes made now will take effect in {timeUntilFutureEpoch}.", + "description": "Delegation description for the Delegation center.", + "id": "staking.delegationCenter.description" + } + ], + "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The delegation center is not available because you currently do not have any Shelley-compatible wallets.", + "description": "\"No wallets\" headLine on the Delegation centre Page.", + "id": "staking.delegationCenter.noWallets.headLine" }, { - "defaultMessage": "!!!The wallet cannot be registered for voting while it is being synced with the blockchain.", - "description": "Restoring wallet error message on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.errorRestoringWallet", - "start": { - "column": 24, - "line": 52 - } + "defaultMessage": "!!!Create a new wallet and transfer in a minimum of {minDelegationFunds} ADA (or restore an existing wallet with funds), then return here to delegate your stake.", + "description": "\"No wallets\" instructions on the Delegation centre Page.", + "id": "staking.delegationCenter.noWallets.instructions" }, { - "defaultMessage": "!!!Continue", - "description": "Label for continue button on the voting registration \"choose wallet\" step.", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx", - "id": "voting.votingRegistration.chooseWallet.step.continueButtonLabel", - "start": { - "column": 23, - "line": 59 - } + "defaultMessage": "!!!Create wallet", + "description": "Label for \"Create New Wallet\" button on the Delegation centre Page.", + "id": "staking.delegationCenter.noWallets.createWalletButtonLabel" } ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.json" + "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterNoWallets.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Confirmation of voting registration requires approximately 5 minutes. Please leave Daedalus running.", - "description": "Description voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.description", - "start": { - "column": 15, - "line": 15 - } - }, - { - "defaultMessage": "!!!Please restart the voting registration process by clicking Restart voting registration.", - "description": "Message for restart voting registration on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.descriptionRestart", - "start": { - "column": 22, - "line": 21 - } + "defaultMessage": "!!!{amount} ADA", + "description": "Amount of each wallet for the Delegation center body section.", + "id": "staking.delegationCenter.walletAmount" }, { - "defaultMessage": "!!!The voting registration process was not completed correctly.", - "description": "Error message on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.errorMessage", - "start": { - "column": 16, - "line": 28 - } + "defaultMessage": "!!!Undelegated", + "description": "Undelegated label for the Delegation center body section.", + "id": "staking.delegationCenter.notDelegated" }, { - "defaultMessage": "!!!Continue", - "description": "Label for continue button on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.continueButtonLabel", - "start": { - "column": 23, - "line": 34 - } + "defaultMessage": "!!!Undelegate", + "description": "Remove delegation label for the Delegation center body section.", + "id": "staking.delegationCenter.removeDelegation" }, { - "defaultMessage": "!!!Restart voting registration", - "description": "Label for restart button on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.restartButtonLabel", - "start": { - "column": 22, - "line": 40 - } + "defaultMessage": "!!!From epoch {fromEpoch}", + "description": "Delegated stake pool tooltip ticker for the Delegation center body section.", + "id": "staking.delegationCenter.stakePoolTooltipTickerEpoch" }, { - "defaultMessage": "!!!Transaction pending...", - "description": "Label for pending transaction state on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.transactionPendingLabel", - "start": { - "column": 27, - "line": 46 - } + "defaultMessage": "!!!Currently earning rewards", + "description": "Delegated stake pool tooltip ticker for the Delegation center body section.", + "id": "staking.delegationCenter.stakePoolTooltipTickerEarningRewards" }, { - "defaultMessage": "!!!Transaction confirmed", - "description": "Label for confirmed transaction state on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.transactionConfirmedLabel", - "start": { - "column": 29, - "line": 52 - } + "defaultMessage": "!!!Delegate", + "description": "Delegate label for the Delegation center body section.", + "id": "staking.delegationCenter.delegate" }, { - "defaultMessage": "!!!Waiting for confirmation...", - "description": "Label for confirming transaction state on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 63 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.waitingForConfirmationsLabel", - "start": { - "column": 32, - "line": 58 - } + "defaultMessage": "!!!Redelegate", + "description": "Redelegate label for the Delegation center body section.", + "id": "staking.delegationCenter.redelegate" }, { - "defaultMessage": "!!!{currentCount} of {expectedCount}", - "description": "Label for number of confirmations on the voting registration \"confirm\" step.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx", - "id": "voting.votingRegistration.confirm.step.confirmationsCountLabel", - "start": { - "column": 27, - "line": 64 - } + "defaultMessage": "!!!unknown", + "description": "unknown stake pool label for the Delegation center body section.", + "id": "staking.delegationCenter.unknownStakePoolLabel" } ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.json" + "path": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Please enter a PIN for your Fund{nextVotingFundNumber} voting registration. The PIN you set here, and the QR code which you will get in the next step, will be required for you to vote using the Catalyst Voting app on your smartphone.", - "description": "Description on the voting registration \"enter pin code\" step.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.description", - "start": { - "column": 15, - "line": 17 - } - }, - { - "defaultMessage": "!!!It is important to remember your PIN. If you forget your PIN, you will not be able to use this registration for voting, and you will need to repeat the registration process.", - "description": "Reminder on the voting registration \"enter pin code\" step.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.reminder", - "start": { - "column": 12, - "line": 24 - } - }, - { - "defaultMessage": "!!!Enter PIN", - "description": "Label for pin code input on the voting registration \"enter pin code\" step.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.enterPinCodeLabel", - "start": { - "column": 21, - "line": 30 - } + "defaultMessage": "!!!Syncing {syncingProgress}%", + "description": "unknown stake pool label on staking rewards page.", + "id": "staking.delegationCenter.syncingTooltipLabel" }, { - "defaultMessage": "!!!Repeat PIN", - "description": "Label for repeat pin code on the voting registration \"enter pin code\" step.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.repeatPinCodeLabel", - "start": { - "column": 22, - "line": 36 - } + "defaultMessage": "!!!Earned delegation rewards", + "description": "Title \"Earned delegation rewards\" label on the staking rewards page.", + "id": "staking.rewards.title" }, { - "defaultMessage": "!!!Invalid PIN", - "description": "Error message shown when repeat pin code is invalid.", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.errors.invalidPinCode", - "start": { - "column": 18, - "line": 42 - } + "defaultMessage": "!!!Rewards", + "description": "Filename prefix for the \"Export CSV\" on the staking rewards page.", + "id": "staking.rewards.csvFilenamePrefix" }, { - "defaultMessage": "!!!PIN doesn’t match", - "description": "Error message shown when repeat pin code is invalid.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.errors.invalidRepeatPinCode", - "start": { - "column": 24, - "line": 47 - } + "defaultMessage": "!!!Export CSV", + "description": "Label for the \"Export CSV\" button on the staking rewards page.", + "id": "staking.rewards.exportButtonLabel" }, { - "defaultMessage": "!!!Continue", - "description": "Label for continue button on the voting registration \"enter pin code\" step.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx", - "id": "voting.votingRegistration.enterPinCode.step.continueButtonLabel", - "start": { - "column": 23, - "line": 53 - } - } - ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Please complete your registration now.", - "description": "Qr code title on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.qrCodeTitle", - "start": { - "column": 15, - "line": 12 - } + "defaultMessage": "!!!No rewards", + "description": "\"No rewards\" rewards label on staking rewards page.", + "id": "staking.rewards.no.rewards" }, { - "defaultMessage": "!!!Open the Catalyst Voting app on your smartphone, scan the QR code, and enter your PIN to complete the voting registration process.", - "description": "Part 1 of Qr code description of use on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.qrCodeDescription1", - "start": { - "column": 22, - "line": 17 - } + "defaultMessage": "!!!Wallet", + "description": "Table header \"Wallet\" label on staking rewards page", + "id": "staking.rewards.tableHeader.wallet" }, { - "defaultMessage": "!!!Your registration remains valid across all Catalyst funding rounds. Ensure that you save your QR code and PIN so you can reconnect your wallet to the voting app if you are logged out, or if you want to connect a new device.", - "description": "Part 2 of Qr code description of use on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.qrCodeDescription2", - "start": { - "column": 22, - "line": 24 - } + "defaultMessage": "!!!Total rewards earned (ADA)", + "description": "Table header \"Total Reward\" label on staking rewards page", + "id": "staking.rewards.tableHeader.total" }, { - "defaultMessage": "!!!Warning: After closing this window the QR code will no longer be available. If you do not keep a PDF copy of the QR code, you might not be able to participate in voting.", - "description": "Qr code warning on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.qrCodeWarning", - "start": { - "column": 17, - "line": 31 - } + "defaultMessage": "!!!Unspent (ADA)", + "description": "Table header \"Unspent\" label on staking rewards page", + "id": "staking.rewards.tableHeader.unspent" }, { - "defaultMessage": "!!!I understand that I will not be able to retrieve this QR code again after closing this window.", - "description": "First checkbox label on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.checkbox1Label", - "start": { - "column": 18, - "line": 37 - } + "defaultMessage": "!!!Rewards address", + "description": "Table header \"Rewards address\" label on staking rewards page", + "id": "staking.rewards.tableHeader.rewardsAddress" }, { - "defaultMessage": "!!!I acknowledge that I must have the downloaded PDF with the QR code, to vote with Fund{nextVotingFundNumber}.", - "description": "Second checkbox label on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.checkbox2Label", - "start": { - "column": 18, - "line": 44 - } + "defaultMessage": "!!!Date", + "description": "Table header \"Date\" label in exported csv file", + "id": "staking.rewards.tableHeader.date" }, { - "defaultMessage": "!!!Close", - "description": "\"Close\" button label on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.closeButtonLabel", - "start": { - "column": 20, - "line": 51 - } + "defaultMessage": "!!!

Rewards earned by delegating your stake are automatically collected into your reward account.

Rewards earned on the Incentivized Testnet are not added to your Rewards wallet balance. They will be paid to you in real ada on the Cardano mainnet after the end of the Incentivized Testnet.

If you are using funds from this wallet to operate a stake pool, the rewards displayed here may include your pledged stake, which will not be counted when reward balances are paid out on the Cardano mainnet.

", + "description": "Rewards description text on staking rewards page", + "id": "staking.rewards.note" }, { - "defaultMessage": "!!!Save as PDF", - "description": "\"Save as PDF\" button label on the voting registration \"qr code\" step.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx", - "id": "voting.votingRegistration.qrCode.step.saveAsPdfButtonLabel", - "start": { - "column": 24, - "line": 57 - } + "defaultMessage": "!!!View in explorer", + "description": "View in explorer button label on staking rewards page.", + "id": "staking.rewards.actionViewInExplorer" } ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.json" + "path": "source/renderer/app/components/staking/rewards/StakingRewards.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Please sign the voting registration transaction. This transaction links your wallet balance with your Fund{nextVotingFundNumber} voting registration, as a proof of your voting power. Funds will not leave your wallet, but registration requires paying transaction fees, as displayed on-screen.", - "description": "Description on the voting registration \"sign\" step.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.description", - "start": { - "column": 15, - "line": 26 - } + "defaultMessage": "!!!Choose a stake pool", + "description": "Title \"Choose a stake pool\" on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.title" }, { - "defaultMessage": "!!!Submit registration transaction", - "description": "Label for continue button on the voting registration \"sign\" step.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.continueButtonLabel", - "start": { - "column": 23, - "line": 32 - } + "defaultMessage": "!!!Currently selected stake pool:", + "description": "Description on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.description" }, { - "defaultMessage": "!!!Fees", - "description": "Fees label on the voting registration \"sign\" step.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.feesLabel", - "start": { - "column": 13, - "line": 38 - } + "defaultMessage": "!!!Select a stake pool to receive your delegated funds in the {selectedWalletName} wallet.", + "description": "Select / Selected pool section label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectStakePoolLabel" }, { - "defaultMessage": "!!!Spending password", - "description": "Placeholder for \"spending password\"", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.spendingPasswordPlaceholder", - "start": { - "column": 31, - "line": 43 - } + "defaultMessage": "!!!You have selected [{selectedPoolTicker}] stake pool to delegate to for {selectedWalletName} wallet.", + "description": "\"Selected Pools\" Selected pool label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectedStakePoolLabel" }, { - "defaultMessage": "!!!Spending password", - "description": "Label for \"spending password\"", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.spendingPasswordLabel", - "start": { - "column": 25, - "line": 48 - } + "defaultMessage": "!!!The [{selectedPoolTicker}] stake pool which you have selected to delegate your {selectedWalletName} wallet funds is about to retire.", + "description": "\"Selected Pools\" Selected pool label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectedStakePoolLabelRetiring" }, { - "defaultMessage": "!!!Calculating fees", - "description": "\"Calculating fees\" message in the \"sign\" step.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.calculatingFees", - "start": { - "column": 19, - "line": 53 - } + "defaultMessage": "!!!You are already delegating {selectedWalletName} wallet to [{selectedPoolTicker}] stake pool. If you wish to re-delegate your stake, please select a different pool.", + "description": "\"You are already delegating to stake pool\" label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.delegatedStakePoolLabel" }, { - "defaultMessage": "!!!Learn more", - "description": "\"Learn more\" link on the \"sign\" step.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.learnMoreLink", - "start": { - "column": 17, - "line": 58 - } + "defaultMessage": "!!!You are already pending delegation {selectedWalletName} wallet to [{selectedPoolTicker}] stake pool. If you wish to re-delegate your stake, please select a different pool.", + "description": "\"You are already delegating to stake pool\" label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.delegatedStakePoolNextLabel" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900006490763", - "description": "Learn more\" link URL on the \"sign\" step.", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx", - "id": "voting.votingRegistration.register.step.learntMoreLinkUrl", - "start": { - "column": 21, - "line": 63 - } - } - ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Choose one of your recent stake pool choices:", + "description": "Recent \"Pool\" choice section label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.recentPoolsLabel" + }, { - "defaultMessage": "!!!Cancel Fund{nextVotingFundNumber} voting registration?", - "description": "Headline for the voting registration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.tsx", - "id": "voting.votingRegistration.dialog.confirmation.headline", - "start": { - "column": 12, - "line": 10 - } + "defaultMessage": "!!!Or select a stake pool from the list of all available stake pools:", + "description": "Search \"Pools\" input label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.searchInput.label" }, { - "defaultMessage": "!!!Are you sure that you want to cancel Fund{nextVotingFundNumber} voting registration? The transaction fee you paid for the voting registration transaction will be lost and you will need to repeat the registration from the beginning.", - "description": "Content for the voting registration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.tsx", - "id": "voting.votingRegistration.dialog.confirmation.content", - "start": { - "column": 11, - "line": 16 - } + "defaultMessage": "!!!Search stake pools", + "description": "Search \"Pools\" input placeholder on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.searchInput.placeholder" }, { - "defaultMessage": "!!!Cancel registration", - "description": "\"Cancel registration\" button label for the voting registration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.tsx", - "id": "voting.votingRegistration.dialog.confirmation.button.cancelButtonLabel", - "start": { - "column": 21, - "line": 23 - } + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.continueButtonLabel" }, { - "defaultMessage": "!!!Continue registration", - "description": "\"Continue registration\" button label for the voting registration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.tsx", - "id": "voting.votingRegistration.dialog.confirmation.button.confirmButtonLabel", - "start": { - "column": 22, - "line": 30 - } + "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", + "description": "Step indicator label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.stepIndicatorLabel" + }, + { + "defaultMessage": "!!!The stake pool you have selected is about to be retired. If you continue the delegation process, you will need to delegate your stake to another pool at least one complete epoch before the current pool’s retirement date to avoid losing rewards.", + "description": "Retiring Pool Footer label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.retiringPoolFooter" } ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.json" + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Register for Fund{nextVotingFundNumber} voting", - "description": "Tile \"Register to vote\" for voting registration", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/VotingRegistrationDialog.tsx", - "id": "voting.votingRegistration.dialog.dialogTitle", - "start": { - "column": 15, - "line": 17 - } - }, - { - "defaultMessage": "!!!Step {step} of {stepCount}", - "description": "Sub title for voting registration", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/VotingRegistrationDialog.tsx", - "id": "voting.votingRegistration.dialog.subtitle", - "start": { - "column": 12, - "line": 22 - } - } - ], - "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/VotingRegistrationDialog.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Newsletter", - "description": "\"Newsletter\" link for Project Catalyst footer", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/voting/VotingFooterLinks.tsx", - "id": "voting.catalystFooterLinks.newsletter", - "start": { - "column": 14, - "line": 16 - } + "defaultMessage": "!!!Delegate wallet", + "description": "Title \"Delegate wallet\" on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.title" }, { - "defaultMessage": "Announcements Channel", - "description": "\"Announcements Channel\" link for Project Catalyst footer", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/voting/VotingFooterLinks.tsx", - "id": "voting.catalystFooterLinks.announcements", - "start": { - "column": 17, - "line": 21 - } + "defaultMessage": "!!!Choose a wallet that holds the funds you want to delegate. The selected wallet must contain a minimum amount of {minDelegationFunds} ADA for delegation to be an option.", + "description": "Description on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.description" }, { - "defaultMessage": "Community Chat", - "description": "\"Community Chat\" link for Project Catalyst footer", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/voting/VotingFooterLinks.tsx", - "id": "voting.catalystFooterLinks.community", - "start": { - "column": 13, - "line": 26 - } + "defaultMessage": "!!!Wallet", + "description": "Label \"Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.selectWalletInputLabel" }, { - "defaultMessage": "Projects", - "description": "\"Projects\" link for Project Catalyst footer", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/voting/VotingFooterLinks.tsx", - "id": "voting.catalystFooterLinks.projects", - "start": { - "column": 12, - "line": 31 - } - } - ], - "path": "source/renderer/app/components/voting/VotingFooterLinks.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Voting registration for Fund{nextVotingFundNumber} is not available as you currently do not have any Shelley-compatible wallets.", - "description": "\"No wallets\" headLine on the voting info page.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/voting/VotingNoWallets.tsx", - "id": "voting.info.noWallets.headLine", - "start": { - "column": 12, - "line": 11 - } + "defaultMessage": "!!!Select Wallet", + "description": "Placeholder \"Select Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.selectWalletInputPlaceholder" }, { - "defaultMessage": "!!!Create a new wallet and transfer a minimum of {minVotingFunds} ADA (or restore an existing wallet with funds), then return here to register for voting.", - "description": "\"No wallets\" instructions on the voting info page.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/voting/VotingNoWallets.tsx", - "id": "voting.info.noWallets.instructions", - "start": { - "column": 16, - "line": 17 - } + "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", + "description": "Step indicator label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.stepIndicatorLabel" }, { - "defaultMessage": "!!!Create wallet", - "description": "Label for \"Create New Wallet\" button on the voting info page.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/voting/VotingNoWallets.tsx", - "id": "voting.info.noWallets.createWalletButtonLabel", - "start": { - "column": 27, - "line": 23 - } - } - ], - "path": "source/renderer/app/components/voting/VotingNoWallets.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!On the following screen, you will be given a list of {walletRecoveryPhraseWordCount} words to write down on paper and keep in a safe place. This list of words is the wallet recovery phrase for the wallet you are creating.", - "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx", - "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions1", - "start": { - "column": 31, - "line": 15 - } + "defaultMessage": "!!!This wallet does not contain the minimum amount of {minDelegationFunds} ADA which is required for delegation to be available. Please select a wallet with a minimum amount of {minDelegationFunds} ADA and click continue.", + "description": "errorMinDelegationFunds Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.errorMinDelegationFunds" }, { - "defaultMessage": "!!!The simplest way to keep your wallet recovery phrase secure is to never store it digitally or online. If you decide to use an online service, such as a password manager with an encrypted database, it is your responsibility to make sure that you use it correctly.", - "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx", - "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions2", - "start": { - "column": 31, - "line": 22 - } + "defaultMessage": "!!!This wallet contains only rewards balances so it cannot be delegated.", + "description": "errorMinDelegationFundsRewardsOnly Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.errorMinDelegationFundsRewardsOnly" }, { - "defaultMessage": "!!!Using your recovery phrase is the only way to recover your wallet if your computer is lost, broken, stolen, or stops working.", - "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx", - "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions3", - "start": { - "column": 31, - "line": 29 - } + "defaultMessage": "!!!This wallet can’t be used for delegation while it’s being synced.", + "description": "RestoringWallet Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.errorRestoringWallet" }, { "defaultMessage": "!!!Continue", - "description": "Label for button \"Continue\" on wallet backup dialog", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx", - "id": "wallet.backup.privacy.warning.dialog.button.labelContinue", - "start": { - "column": 23, - "line": 36 - } - }, - { - "defaultMessage": "!!!I confirm that nobody can see my screen, because anyone who knows my recovery phrase will be able to spend the ada in my new wallet.", - "description": "Label for the checkbox on wallet backup dialog describing that nobody should be watching when recovery phrase is shown", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx", - "id": "wallet.backup.privacy.warning.dialog.checkbox.label.nobodyWatching", - "start": { - "column": 22, - "line": 41 - } + "description": "Label for continue button on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.continueButtonLabel" } ], - "path": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.json" + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Please make sure you write down the {walletRecoveryPhraseWordCount} words of your wallet recovery phrase on a piece of paper in the exact order shown here.", - "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseDisplayDialog.tsx", - "id": "wallet.backup.recovery.phrase.display.dialog.backup.instructions", - "start": { - "column": 22, - "line": 15 - } + "defaultMessage": "!!!Confirm Delegation", + "description": "Title \"Confirm Delegation\" on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.title" }, { - "defaultMessage": "!!!Yes, I have written down my wallet recovery phrase.", - "description": "Label for button \"Yes, I have written down my wallet recovery phrase.\" on wallet backup dialog", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseDisplayDialog.tsx", - "id": "wallet.backup.recovery.phrase.display.dialog.button.label.iHaveWrittenItDown", - "start": { - "column": 33, - "line": 22 - } - } - ], - "path": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseDisplayDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", + "description": "Step indicator label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.stepIndicatorLabel" + }, { - "defaultMessage": "!!!Please enter your {wordCount}-word wallet recovery phrase. Make sure you enter the words in the correct order.", - "description": "Instructions for verifying wallet recovery phrase on dialog for entering wallet recovery phrase.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.verification.instructions", - "start": { - "column": 28, - "line": 28 - } + "defaultMessage": "!!!Confirm your delegation choice to [{selectedPoolTicker}] stake pool for your {selectedWalletName} wallet.", + "description": "Description on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.description" }, { - "defaultMessage": "!!!Verify your recovery phrase", - "description": "Label for the recovery phrase input on dialog for entering wallet recovery phrase.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputLabel", - "start": { - "column": 28, - "line": 35 - } + "defaultMessage": "!!!Stake pool ID", + "description": "Stake pool ID label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.stakePoolIdLabel" }, { - "defaultMessage": "!!!Enter your {numberOfWords}-word recovery phrase", - "description": "Placeholder hint for the mnemonics autocomplete.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputHint", - "start": { - "column": 27, - "line": 41 - } + "defaultMessage": "!!!Fees", + "description": "Fees label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.feesLabel" }, { - "defaultMessage": "!!!Enter word #{wordNumber}", - "description": "Placeholder for the mnemonics autocomplete.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputPlaceholder", - "start": { - "column": 34, - "line": 46 - } + "defaultMessage": "!!!Deposit", + "description": "Deposit label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.depositLabel" }, { - "defaultMessage": "!!!No results", - "description": "\"No results\" message for the recovery phrase input search results.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputNoResults", - "start": { - "column": 27, - "line": 52 - } + "defaultMessage": "!!!Spending password", + "description": "Placeholder for \"spending password\"", + "id": "staking.delegationSetup.confirmation.step.dialog.spendingPasswordPlaceholder" }, { - "defaultMessage": "!!!Invalid recovery phrase", - "description": "Error message shown when invalid recovery phrase was entered.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInvalidMnemonics", - "start": { - "column": 34, - "line": 59 - } + "defaultMessage": "!!!Spending password", + "description": "Label for \"spending password\"", + "id": "staking.delegationSetup.confirmation.step.dialog.spendingPasswordLabel" }, { "defaultMessage": "!!!Confirm", - "description": "Label for button \"Confirm\" on wallet backup dialog", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.recovery.phrase.show.entry.dialog.button.labelConfirm", - "start": { - "column": 22, - "line": 66 - } + "description": "Label for continue button on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.confirmButtonLabel" }, { - "defaultMessage": "!!!I understand that the simplest way to keep my wallet recovery phrase secure is to never store it digitally or online. If I decide to use an online service, such as a password manager with an encrypted database, it is my responsibility to make sure that I use it correctly.", - "description": "Term on wallet creation to store recovery phrase offline", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.terms.and.condition.offline", - "start": { - "column": 15, - "line": 71 - } + "defaultMessage": "!!!Cancel", + "description": "Label for \"Cancel\" button on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.cancelButtonLabel" }, { - "defaultMessage": "!!!I understand that the only way to recover my wallet if my computer is lost, broken, stolen, or stops working is to use my wallet recovery phrase.", - "description": "Term and condition on wallet backup dialog describing that wallet can only be recovered with a security phrase", - "end": { - "column": 3, - "line": 85 - }, - "file": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx", - "id": "wallet.backup.recovery.phrase.entry.dialog.terms.and.condition.recovery", - "start": { - "column": 16, - "line": 78 - } + "defaultMessage": "!!!Calculating fees", + "description": "\"Calculating fees\" message in the \"confirmation\" dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.calculatingFees" + }, + { + "defaultMessage": "!!!Calculating deposit", + "description": "\"Calculating deposit\" message in the \"confirmation\" dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.calculatingDeposit" } ], - "path": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.json" + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Summary", - "description": "Label for the \"Summary\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.summary", - "start": { - "column": 11, - "line": 16 - } + "defaultMessage": "!!!Delegate wallet", + "description": "Title \"Delegation Setup\" on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.title" }, { - "defaultMessage": "!!!Send", - "description": "Label for the \"Send\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.send", - "start": { - "column": 8, - "line": 21 - } + "defaultMessage": "!!!Follow these steps to configure delegation preferences for your wallet. Please be aware that the last step of delegation confirmation will incur transaction fees.", + "description": "Description on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.description" }, { - "defaultMessage": "!!!Receive", - "description": "Label for the \"Receive\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.receive", - "start": { - "column": 11, - "line": 26 - } + "defaultMessage": "!!!Learn more", + "description": "\"Learn more\" button label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.learnMore.buttonLabel" }, { - "defaultMessage": "!!!Transactions", - "description": "Label for the \"Transactions\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.transactions", - "start": { - "column": 16, - "line": 31 - } + "defaultMessage": "!!!Wallet selection", + "description": "Steps explanation list item 1 label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step1" }, { - "defaultMessage": "!!!Tokens", - "description": "Label for the \"Tokens\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.tokens", - "start": { - "column": 10, - "line": 37 - } + "defaultMessage": "!!!Stake pool selection", + "description": "Steps explanation list item 2 label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step2" }, { - "defaultMessage": "!!!Settings", - "description": "Label for the \"Settings\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.settings", - "start": { - "column": 12, - "line": 42 - } + "defaultMessage": "!!!Delegation confirmation", + "description": "Steps explanation list item 3 label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step3" }, { - "defaultMessage": "!!!Wallet UTXO distribution", - "description": "Label for the \"Wallet UTXO distribution\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.utxo", - "start": { - "column": 8, - "line": 48 - } + "defaultMessage": "!!!Cancel", + "description": "Label for close button on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.cancelButtonLabel" }, { - "defaultMessage": "!!!More", - "description": "Label for the \"More\" nav button in the wallet navigation.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx", - "id": "wallet.navigation.more", - "start": { - "column": 8, - "line": 54 - } + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.continueButtonLabel" } ], - "path": "source/renderer/app/components/wallet/navigation/WalletNavigation.json" + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!The wallet is not responding.", - "description": "Title on the NotResponding dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx", - "id": "wallet.notResponding.title", - "start": { - "column": 9, - "line": 18 - } - }, - { - "defaultMessage": "!!!The {walletName} wallet is not responding. This is caused by a known but rare issue, which is currently being fixed. Please restart the Cardano node by clicking the button below, which should resolve the issue. If the issue persists, or if it happens again, please submit a support request.", - "description": "Description on the NotResponding dialog.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx", - "id": "wallet.notResponding.description", - "start": { - "column": 15, - "line": 23 - } - }, - { - "defaultMessage": "!!!Restart Cardano Node", - "description": "Restart Node Button Label on the NotResponding dialog.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx", - "id": "wallet.notResponding.restartNodeButtonLabel", - "start": { - "column": 26, - "line": 29 - } + "defaultMessage": "!!!Delegation is currently unavailable", + "description": "Title \"Delegation Setup\" on the delegation setup not available dialog.", + "id": "staking.delegationSetup.notAvailable.dialog.title" }, { - "defaultMessage": "!!!Submit a support request", - "description": "Submit Support Request Label on the NotResponding dialog", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx", - "id": "wallet.notResponding.submitSupportRequestLabel", - "start": { - "column": 29, - "line": 34 - } + "defaultMessage": "!!!None of your Shelley wallets currently hold the minimum amount of {minDelegationFunds} ADA required for delegation.", + "description": "Description on the delegation setup not available dialog.", + "id": "staking.delegationSetup.notAvailable.dialog.description" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", - "description": "Submit Support Request Url on the NotResponding dialog", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx", - "id": "wallet.notResponding.submitSupportRequestUrl", - "start": { - "column": 27, - "line": 39 - } + "defaultMessage": "!!!Close", + "description": "Label for close button on the delegation setup not available dialog.", + "id": "staking.delegationSetup.notAvailable.dialog.closeButtonLabel" } ], - "path": "source/renderer/app/components/wallet/not-responding/NotResponding.json" + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsNotAvailableDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Paper wallet certificate", - "description": "Headline for the \"Paper wallet create certificate completion dialog\" headline.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.headline", - "start": { - "column": 12, - "line": 18 - } + "defaultMessage": "!!!Wallet Delegated", + "description": "Title \"Wallet Delegated\" on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.title" }, { - "defaultMessage": "!!!You may wish to fold your paper wallet certificate and glue together the edges to store it securely. Please keep your certificate safe.", - "description": "Headline for the \"Paper wallet create certificate completion dialog\" subtitle.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.subtitle", - "start": { - "column": 12, - "line": 24 - } - }, - { - "defaultMessage": "!!!When you wish to import your wallet back into Daedalus crop any glued edges of the certificate to open it.\n To check your balance on the paper wallet at any time, you may use the link below. Copy or save the URL to your browser bookmarks to do this easily", - "description": "Headline for the \"Paper wallet create certificate completion dialog\" link instructions.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.linkInstructions", - "start": { - "column": 20, - "line": 31 - } + "defaultMessage": "!!!The stake from your wallet {delegatedWalletName} is now delegated to the [{delegatedStakePoolTicker}] {delegatedStakePoolName} stake pool.", + "description": "Description \"line 1\" on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.description.line1" }, { - "defaultMessage": "!!!To receive funds to your paper wallet simply share your wallet address with others.", - "description": "Headline for the \"Paper wallet create certificate completion dialog\" address instructions.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.addressInstructions", - "start": { - "column": 23, - "line": 38 - } + "defaultMessage": "!!!Your new delegation preferences are now posted on the Cardano blockchain. These preferences will take effect after both the current and the next Cardano epochs have completed in {timeUntilNextEpochStart}. During this time, your previous delegation preferences remain active.", + "description": "Description \"line 2\" on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.description.line2" }, { - "defaultMessage": "!!!Cardano explorer link", - "description": "\"Paper wallet create certificate completion dialog\" cardano link label.", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.cardanoLinkLabel", - "start": { - "column": 20, - "line": 45 - } - }, + "defaultMessage": "!!!Close", + "description": "Label for Close button on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.closeButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!copied", - "description": "\"Paper wallet create certificate completion dialog\" address copied.", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.addressCopiedLabel", - "start": { - "column": 22, - "line": 51 - } + "defaultMessage": "!!!The selected stake pool will become oversaturated by {oversaturationPercentage}%, which will reduce future rewards for all delegators to that pool.", + "description": "Warning shown if pool is going to be saturated if delegation happens", + "id": "staking.delegationSetup.confirmation.step.dialog.oversaturationWarning" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!current epoch", + "description": "Headline for the current epoch.", + "id": "staking.epochs.currentHeading" }, { - "defaultMessage": "!!!Wallet address", - "description": "\"Paper wallet create certificate completion dialog\" wallet address label.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.addressLabel", - "start": { - "column": 16, - "line": 57 - } + "defaultMessage": "!!!previous epoch", + "description": "Headline for the previous epoch.", + "id": "staking.epochs.previousHeading" + } + ], + "path": "source/renderer/app/components/staking/epochs/StakingEpochs.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Stake pool", + "description": "Table header \"Stake pool\" label on staking epochs page", + "id": "staking.epochs.currentEpoch.tableHeader.pool" }, { - "defaultMessage": "!!!Finish", - "description": "\"Paper wallet create certificate completion dialog\" finish button label.", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx", - "id": "paper.wallet.create.certificate.completion.dialog.finishButtonLabel", - "start": { - "column": 21, - "line": 63 - } + "defaultMessage": "!!!Slots elected", + "description": "Table header \"Slots elected\" label on staking epochs page", + "id": "staking.epochs.currentEpoch.tableHeader.slotsElected" } ], - "path": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.json" + "path": "source/renderer/app/components/staking/epochs/StakingEpochsCurrentEpochData.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Abort paper wallet certificate creation?", - "description": "Headline for the paper wallet certificate cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx", - "id": "paper.wallet.create.certificate.confirmation.dialog.headline", - "start": { - "column": 12, - "line": 9 - } + "defaultMessage": "!!!No results", + "description": "\"No results\" results label on staking epochs page.", + "id": "staking.epochs.no.results" + } + ], + "path": "source/renderer/app/components/staking/epochs/StakingEpochsNoData.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Stake pool", + "description": "Table header \"Stake pool\" label on staking epochs page", + "id": "staking.epochs.previousEpoch.tableHeader.pool" }, { - "defaultMessage": "!!!At this point, your paper wallet certificate is not complete and verifications steps are not yet done.", - "description": "Content for the paper wallet certificate cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx", - "id": "paper.wallet.create.certificate.confirmation.dialog.contentPart1", - "start": { - "column": 12, - "line": 15 - } + "defaultMessage": "!!!Slots elected", + "description": "Table header \"Slots elected\" label on staking epochs page", + "id": "staking.epochs.previousEpoch.tableHeader.slotsElected" }, { - "defaultMessage": "!!!At this point, your paper wallet certificate is not complete and verifications steps are not yet done.", - "description": "Content for the paper wallet certificate cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx", - "id": "paper.wallet.create.certificate.confirmation.dialog.contentPart2", - "start": { - "column": 12, - "line": 22 - } + "defaultMessage": "!!!Performance", + "description": "Table header \"Performance\" label on staking epochs page", + "id": "staking.epochs.tableHeader.performance" }, { - "defaultMessage": "!!!Back", - "description": "\"Cancel\" button label for the paper wallet certificate cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx", - "id": "paper.wallet.create.certificate.confirmation.dialog.button.backLabel", - "start": { - "column": 21, - "line": 29 - } + "defaultMessage": "!!!Shared rewards", + "description": "Table header \"Shared rewards\" label on staking epochs page", + "id": "staking.epochs.tableHeader.sharedRewards" }, { - "defaultMessage": "!!!Abort", - "description": "\"Abort\" button label for the paper wallet certificate cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx", - "id": "paper.wallet.create.certificate.confirmation.dialog.button.abortLabel", - "start": { - "column": 22, - "line": 35 - } + "defaultMessage": "!!!slots", + "description": "\"slots\" text in table body on staking epochs page", + "id": "staking.epochs.tableBody.slots" + }, + { + "defaultMessage": "!!!of", + "description": "\"of\" text in table body on staking epochs page", + "id": "staking.epochs.tableBody.of" } ], - "path": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.json" + "path": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Create a paper wallet certificate", - "description": "Headline for the \"Paper wallet create certificate instructions dialog\".", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.headline", - "start": { - "column": 12, - "line": 21 - } + "defaultMessage": "!!!Cardano is transitioning into a decentralized system", + "description": "Headline for the Decentralization progress notification.", + "id": "staking.info.heading" }, { - "defaultMessage": "!!!Create a paper wallet certificate to store funds offline.", - "description": "Subtitle for the \"Paper wallet create certificate instructions dialog\".", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.subtitle", - "start": { - "column": 12, - "line": 27 - } + "defaultMessage": "!!!Cardano is transitioning from a federated system operated by its creators to a decentralized system operated by a community of stake pool operators. During this transition, blocks will be produced both by the federated nodes and by stake pools. The percentage of blocks produced by stake pools will increase every epoch until block production in the Cardano network becomes fully decentralized.", + "description": "Info description for the Decentralization progress notification.", + "id": "staking.info.description" }, { - "defaultMessage": "!!!The paper wallet certificate will not be associated with any of your existing wallets. A new, empty wallet will be created.", - "description": "subtitle2 for the \"Paper wallet create certificate instructions dialog\".", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.subtitle2", - "start": { - "column": 13, - "line": 34 - } + "defaultMessage": "!!!Currently, {percentage}% of the blocks are produced by the stake pools.", + "description": "Percentage info description for the Decentralization progress notification.", + "id": "staking.info.percentage" }, { - "defaultMessage": "!!!Instructions", - "description": "Instructions list label for the \"Paper wallet create certificate instructions dialog\".", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.label", - "start": { - "column": 25, - "line": 41 - } - }, - { - "defaultMessage": "!!!Your printed certificate will include your paper wallet recovery phrase\n of {paperWalletRecoveryPhraseWordCount} words. Note that your paper wallet recovery phrase is\n different to the {walletRecoveryPhraseWordCount}-word recovery phrases used to restore your\n regular Daedalus wallet.", - "description": "Wallet certificate create instructions dialog definition 1.", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition1", - "start": { - "column": 31, - "line": 48 - } - }, - { - "defaultMessage": "!!!For security reasons, the last {paperWalletWrittenWordsCount} words of your\n paper wallet recovery phrase will not be printed on the paper wallet certificate itself. You\n will need to write them on your certificate by hand in a moment.", - "description": "Wallet certificate create instructions dialog definition 2.", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition2", - "start": { - "column": 31, - "line": 57 - } - }, - { - "defaultMessage": "!!!Use the address on your certificate to send funds to your paper wallet.", - "description": "Wallet certificate create instructions dialog definition 3.", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition3", - "start": { - "column": 31, - "line": 65 - } - }, - { - "defaultMessage": "!!!Your paper wallet will be offline so will not be held in Daedalus.\n To check the balance of the wallet, input the address on the certificate into", - "description": "Wallet certificate create instructions dialog definition 4.", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition4", - "start": { - "column": 31, - "line": 72 - } - }, - { - "defaultMessage": "!!!Store your certificate containing your paper wallet recovery phrase in a safe place.", - "description": "Wallet certificate create instructions dialog definition 5.", - "end": { - "column": 3, - "line": 85 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition5", - "start": { - "column": 31, - "line": 79 - } - }, - { - "defaultMessage": "!!!When you click “Save PDF file for printing” you will be prompted\n to choose a location on your computer where the PDF file will be saved. After that\n open the saved PDF file and print it.", - "description": "Wallet certificate create instructions dialog - printing instructions.", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.printingInstructions", - "start": { - "column": 24, - "line": 86 - } - }, - { - "defaultMessage": "!!!Cardano Explorer", - "description": "Wallet certificate create instructions dialog \"Cardano Explorer\" label", - "end": { - "column": 3, - "line": 100 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.cardanoExplorer", - "start": { - "column": 19, - "line": 95 - } + "defaultMessage": "!!!Learn more", + "description": "Button Label for the Decentralization progress notification.", + "id": "staking.info.buttonLabel" }, { - "defaultMessage": "!!!Save PDF file for printing", - "description": "\"Wallet certificate create instructions dialog\" print button label.", - "end": { - "column": 3, - "line": 106 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx", - "id": "paper.wallet.create.certificate.instructions.dialog.button.printLabel", - "start": { - "column": 20, - "line": 101 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc", + "description": "\"Learn more\" link URL in the staking info page", + "id": "staking.info.learnMore.linkUrl" } ], - "path": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.json" + "path": "source/renderer/app/components/staking/info/StakingInfo.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Verify printed certificate", - "description": "Headline for the \"Paper wallet create certificate print dialog\".", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx", - "id": "paper.wallet.create.certificate.print.dialog.headline", - "start": { - "column": 12, - "line": 17 - } - }, - { - "defaultMessage": "!!!Check your paper wallet certificate and make sure everything\n is readable and correctly printed. You can test this by scanning the QR code with\n a QR scanner application on your mobile phone.", - "description": "\"Paper wallet create certificate print dialog\" subtitle.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx", - "id": "paper.wallet.create.certificate.print.dialog.subtitle", - "start": { - "column": 12, - "line": 23 - } - }, - { - "defaultMessage": "!!!Your certificate is not yet complete and does not contain all\n the data needed to restore your paper wallet. In the next step, you will need to\n write down an additional {paperWalletWrittenWordsCount} words to your paper wallet recovery phrase.", - "description": "\"Paper wallet create certificate print dialog\" info.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx", - "id": "paper.wallet.create.certificate.print.dialog.info", - "start": { - "column": 8, - "line": 30 - } + "defaultMessage": "!!!Alonzo upgrade", + "description": "Headline for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.heading" }, { - "defaultMessage": "!!!Yes, the paper wallet certificate printed successfully.", - "description": "\"Paper wallet create certificate print dialog\" certificate printed confirmation.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx", - "id": "paper.wallet.create.certificate.print.dialog.certificatePrintedConfirmation", - "start": { - "column": 39, - "line": 37 - } + "defaultMessage": "!!!The ‘Alonzo’ protocol upgrade will bring highly-anticipated new smart contract capabilities to Cardano, by integrating Plutus scripts onto the blockchain. This important milestone will open up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", + "description": "Info description for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.description.before" }, { - "defaultMessage": "!!!Yes, first {paperWalletPrintedWordsCount} words of the paper wallet recovery phrase are readable.", - "description": "\"Paper wallet create certificate print dialog\" certificate readable confirmation.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx", - "id": "paper.wallet.create.certificate.print.dialog.certificateReadableConfirmation", - "start": { - "column": 40, - "line": 45 - } + "defaultMessage": "!!!The ‘Alonzo’ protocol upgrade is now live on Cardano, enabling highly-anticipated new smart contract capabilities, by integrating Plutus scripts onto the blockchain. This important milestone opens up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", + "description": "Info description for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.description.after" }, { - "defaultMessage": "!!!Yes, the QR code is scannable.", - "description": "\"Paper wallet create certificate print dialog\" QR scannable confirmation.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx", - "id": "paper.wallet.create.certificate.print.dialog.qrScannableConfirmation", - "start": { - "column": 32, - "line": 53 - } - } - ], - "path": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Complete your certificate", - "description": "Headline for the \"Paper wallet create certificate securing password dialog\".", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.tsx", - "id": "paper.wallet.create.certificate.securingPassword.dialog.headline", - "start": { - "column": 12, - "line": 16 - } - }, - { - "defaultMessage": "!!!To complete your paper wallet certificate you will need to\n write the remaining {paperWalletWrittenWordsCount} words of your paper wallet recovery\n phrase on your certificate.", - "description": "\"Paper wallet create certificate securing password dialog\" first info label.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.tsx", - "id": "paper.wallet.create.certificate.securingPassword.dialog.infoLabel1", - "start": { - "column": 14, - "line": 22 - } + "defaultMessage": "!!!Alonzo upgrade in", + "description": "Countdown Title for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.countdownTitle" }, { - "defaultMessage": "!!!The password can optionally be written on the certificate or kept securely in other location. Here is the placeholder on the certificate intended for your password.", - "description": "You may write the remaining words here:", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.tsx", - "id": "paper.wallet.create.certificate.securingPassword.dialog.infoLabel2", - "start": { - "column": 14, - "line": 30 - } + "defaultMessage": "!!!Learn more", + "description": "Button Label for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.buttonLabel" }, { - "defaultMessage": "!!!I have written the remaining {paperWalletWrittenWordsCount} words on the certificate.", - "description": "\"Paper wallet create certificate securing password dialog\" secure password confirmation.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.tsx", - "id": "paper.wallet.create.certificate.securingPassword.dialog.securingPasswordConfirmation", - "start": { - "column": 32, - "line": 36 - } + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2021/04/08/smart-contracts-%E2%80%93-here-we-come/", + "description": "\"Learn more\" link URL in the \"Staking Info\" screen.", + "id": "staking.infoCountdown.learnMore.linkUrl" } ], - "path": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.json" + "path": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Verify certificate", - "description": "Headline for the \"Paper wallet create certificate verification dialog\".", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.headline", - "start": { - "column": 12, - "line": 25 - } - }, - { - "defaultMessage": "!!!Enter your paper wallet recovery phrase to verify your paper wallet certificate.", - "description": "\"Paper wallet create certificate verification dialog\" subtitle.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.subtitle", - "start": { - "column": 12, - "line": 31 - } - }, - { - "defaultMessage": "!!!Make sure you enter all {fullPhraseWordCount} words for the paper wallet recovery phrase,\n first {printedWordCount} words printed on the certificate followed by the {writtenWordCount} words you wrote by hand.", - "description": "\"Paper wallet create certificate verification dialog\" subtitle.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.instructions", - "start": { - "column": 16, - "line": 38 - } - }, - { - "defaultMessage": "!!!Paper wallet recovery phrase", - "description": "\"Paper wallet create certificate verification dialog\" recovery phrase label.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.label", - "start": { - "column": 23, - "line": 45 - } + "defaultMessage": "!!!slot", + "description": "\"slot\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.slot.label" }, { - "defaultMessage": "!!!Enter recovery phrase", - "description": "\"Paper wallet create certificate verification dialog\" recovery phrase hint.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.hint", - "start": { - "column": 22, - "line": 52 - } + "defaultMessage": "!!!transactions", + "description": "\"transactions\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.transactions.label" }, { - "defaultMessage": "!!!No results", - "description": "\"Paper wallet create certificate verification dialog\" recovery phrase no results label.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.noResults", - "start": { - "column": 27, - "line": 59 - } + "defaultMessage": "!!!MPC phase", + "description": "\"MPC phase\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.mpc.phase.label" }, { - "defaultMessage": "!!!Clear", - "description": "\"Paper wallet create certificate verification dialog\" button clear label.", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.button.clearLabel", - "start": { - "column": 20, - "line": 66 - } + "defaultMessage": "!!!commitments", + "description": "\"commitments\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.commitments.label" }, { - "defaultMessage": "!!!I understand that the paper wallet I create will not be stored in Daedalus.", - "description": "\"Paper wallet create certificate verification dialog\" storing understandance confirmation.", - "end": { - "column": 3, - "line": 79 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.storingUnderstandanceConfirmationLabel", - "start": { - "column": 30, - "line": 72 - } + "defaultMessage": "!!!openings", + "description": "\"openings\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.openings.label" }, { - "defaultMessage": "!!!I understand that my paper wallet can be recovered only by using my paper wallet certificate.", - "description": "\"Paper wallet create certificate verification dialog\" recovering understandance confirmation.", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx", - "id": "paper.wallet.create.certificate.verification.dialog.recoveringUnderstandanceConfirmationLabel", - "start": { - "column": 33, - "line": 80 - } + "defaultMessage": "!!!shares", + "description": "\"shares\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.shares.label" } ], - "path": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.json" + "path": "source/renderer/app/components/staking/legacy/StakingChartTooltip.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Available wallet addresses", - "description": "Instructions Title on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/receive/AddressActions.tsx", - "id": "wallet.receive.page.instructions.instructionsTitle", - "start": { - "column": 21, - "line": 15 - } - }, - { - "defaultMessage": "!!!Share this wallet address to receive payments. To protect your privacy, new addresses are generated automatically once you use them.", - "description": "Instructions Description on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/wallet/receive/AddressActions.tsx", - "id": "wallet.receive.page.instructions.instructionsDescription", - "start": { - "column": 27, - "line": 20 - } - }, - { - "defaultMessage": "!!!Addresses", - "description": "Addresses Title on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/receive/AddressActions.tsx", - "id": "wallet.receive.page.addresses.addressesTitle", - "start": { - "column": 18, - "line": 26 - } + "defaultMessage": "!!!Delegation center", + "description": "Label for the \"Delegation\" nav button in the staking navigation.", + "id": "staking.navigation.delegation_center" }, { - "defaultMessage": "!!!Show used", - "description": "Label for \"show used\" wallet addresses link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/receive/AddressActions.tsx", - "id": "wallet.receive.page.showUsedLabel", - "start": { - "column": 17, - "line": 31 - } + "defaultMessage": "!!!Stake pools", + "description": "Label for the \"Stake\" nav button in the staking navigation.", + "id": "staking.navigation.stake_pools" }, { - "defaultMessage": "!!!Share", - "description": "Label for \"Share\" link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/wallet/receive/AddressActions.tsx", - "id": "wallet.receive.page.shareAddressLabel", - "start": { - "column": 21, - "line": 37 - } + "defaultMessage": "!!!Rewards", + "description": "Label for the \"Rewards\" nav button in the staking navigation.", + "id": "staking.navigation.rewards" }, { - "defaultMessage": "!!!Copy address", - "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/wallet/receive/AddressActions.tsx", - "id": "wallet.receive.page.copyAddressLabel", - "start": { - "column": 20, - "line": 42 - } + "defaultMessage": "!!!Epochs", + "description": "Label for the \"Epochs\" nav button in the staking navigation.", + "id": "staking.navigation.epochs" + }, + { + "defaultMessage": "!!!Info", + "description": "Label for the \"Info\" nav button in the staking navigation.", + "id": "staking.navigation.info" } ], - "path": "source/renderer/app/components/wallet/receive/AddressActions.json" + "path": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!PDF note", - "description": "placeholder on the wallet \"Share Address\" dialog", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.inputLabel", - "start": { - "column": 14, - "line": 32 - } + "defaultMessage": "!!!Redemption of Incentivized Testnet rewards is not available as you currently do not have any Shelley-compatible wallets.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.noWallets.description" }, { - "defaultMessage": "!!!Add a note to the sender", - "description": "inputPlaceholder on the wallet \"Share Address\" dialog", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.inputPlaceholder", - "start": { - "column": 20, - "line": 37 - } - }, + "defaultMessage": "!!!Add wallet", + "description": "addWalletButtonLabel for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.noWallets.addWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/NoWalletsDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Save QR code image", - "description": "saveQRCodeImage on the wallet \"Share Address\" dialog", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.saveQRCodeImage", - "start": { - "column": 19, - "line": 42 - } + "defaultMessage": "!!!Redeem Incentivized Testnet rewards", + "description": "Title for Redeem Incentivized Testnet - redemptionUnavailable", + "id": "staking.redeemItnRewards.redemptionUnavailable.title" }, { - "defaultMessage": "!!!Download as PDF", - "description": "downloadPDFButton on the wallet \"Share Address\" dialog", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.downloadPDFButton", - "start": { - "column": 21, - "line": 47 - } - }, + "defaultMessage": "!!!Close", + "description": "closeButtonLabel for Redeem Incentivized Testnet - redemptionUnavailable", + "id": "staking.redeemItnRewards.redemptionUnavailable.closeButton.label" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/RedemptionUnavailableDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Share wallet address", - "description": "dialogTitle on the wallet \"Share Address\" dialog", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.dialogTitle", - "start": { - "column": 15, - "line": 52 - } + "defaultMessage": "!!!Redeem Incentivized Testnet rewards", + "description": "Title for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.title" }, { - "defaultMessage": "!!!Copy address", - "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.copyAddressLabel", - "start": { - "column": 20, - "line": 57 - } + "defaultMessage": "!!!If you participated in the { itnLink } and earned rewards by running a stake pool or delegating your stake, you can use this feature to redeem your rewards as ada on the Cardano mainnet.", + "description": "description for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.description1" }, { - "defaultMessage": "!!!Receiving address path", - "description": "Tooltip for the receiving address path", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.spendingPathTooltip", - "start": { - "column": 23, - "line": 62 - } + "defaultMessage": "!!!You will need the wallet recovery phrase for the Incentivized Testnet wallet used to earn rewards and an existing mainnet wallet in Daedalus to which the rewards will be transferred. This wallet will also be used to pay any applicable transaction fees.", + "description": "description for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.description2" }, { - "defaultMessage": "!!!Rewards address path", - "description": "Tooltip for the rewards address path", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.stakingPathTooltip", - "start": { - "column": 22, - "line": 67 - } + "defaultMessage": "!!!Incentivized Testnet", + "description": "descriptionItnLinkLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.descriptionItnLinkLabel" }, { - "defaultMessage": "!!!Submit a request to IOHK Support", - "description": "Support request button label", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.supportRequestButtonLabel", - "start": { - "column": 29, - "line": 72 - } + "defaultMessage": "!!!https://staking.cardano.org/", + "description": "descriptionItnLinkUrl for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.descriptionItnLinkUrl" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", - "description": "Support request link URL", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.supportRequestLinkUrl", - "start": { - "column": 25, - "line": 77 - } + "defaultMessage": "!!!Wallet recovery phrase:", + "description": "recoveryPhraseLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.recoveryPhraseLabel" }, { - "defaultMessage": "!!!Yes, I am sure I have compared the address displayed in Daedalus with the address displayed on the {deviceType} device by comparing the beginning and ending of the address.", - "description": "Invalid address confirmation checkbox label", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.invalidAddressConfirmationLabel", - "start": { - "column": 35, - "line": 82 - } + "defaultMessage": "!!!Redeem rewards to:", + "description": "walletsDropdownLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.walletsDropdownLabel" }, { - "defaultMessage": "!!!Is the address you have verified correct?", - "description": "Verification options section label", - "end": { - "column": 3, - "line": 92 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.verificationCheckOptionsLabel", - "start": { - "column": 33, - "line": 88 - } + "defaultMessage": "!!!I understand that redeeming rewards from the Incentivized Testnet requires paying transaction fees.", + "description": "checkbox1Label for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.checkbox1Label" }, { - "defaultMessage": "!!!Yes", - "description": "Verification option \"Valid\" label", - "end": { - "column": 3, - "line": 97 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.verificationCheckOptionValid", - "start": { - "column": 32, - "line": 93 - } + "defaultMessage": "!!!I understand that fees will be paid from the wallet I am redeeming my rewards to.", + "description": "checkbox2Label for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.checkbox2Label" }, { - "defaultMessage": "!!!No, I am sure that address displayed in Daedalus is different from the address displayed on my {deviceType} device", - "description": "Verification option \"Invalid\" label", - "end": { - "column": 3, - "line": 103 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.verificationCheckOptionInvalid", - "start": { - "column": 34, - "line": 98 - } + "defaultMessage": "!!!Continue", + "description": "continueButtonLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.continueButton.label" }, { - "defaultMessage": "!!!No, reverify", - "description": "Verification option \"Reverify\" label", - "end": { - "column": 3, - "line": 108 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.verificationCheckOptionReverify", - "start": { - "column": 35, - "line": 104 - } + "defaultMessage": "!!!Learn More", + "description": "learnMoreLinkLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.learnMoreLink.label" }, { - "defaultMessage": "!!!Daedalus verified the address", - "description": "Daedalus verification status check label", - "end": { - "column": 3, - "line": 113 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.softwareCheckLabel", - "start": { - "column": 22, - "line": 109 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900001656586", + "description": "learnMoreLinkUrl for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.learnMoreLink.url" }, { - "defaultMessage": "!!!You have verified the address", - "description": "User verification status check label", - "end": { - "column": 3, - "line": 118 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.confirmationCheckLabel", - "start": { - "column": 26, - "line": 114 - } + "defaultMessage": "!!!Enter recovery phrase", + "description": "Hint \"Enter recovery phrase\" for the recovery phrase input on the wallet restore dialog.", + "id": "staking.redeemItnRewards.step1.recoveryPhraseInputHint" }, { - "defaultMessage": "!!!Please compare the address displayed here on the screen with the address displayed on the {deviceType} device by comparing at least the first 5 characters at the start of the address after the \"addr\" part and at least 5 characters at the end of the address.", - "description": "Address verification instructions", - "end": { - "column": 3, - "line": 124 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.addressVerificationInstructions", - "start": { - "column": 35, - "line": 119 - } + "defaultMessage": "!!!Select Wallet", + "description": "Placeholder \"Select Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.redeemItnRewards.step1.selectWalletInputPlaceholder" }, { - "defaultMessage": "!!!Warning, your copy of Daedalus may be hacked!", - "description": "Invalid address \"Warning\" title", - "end": { - "column": 3, - "line": 129 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.invalidAddressWarningTitle", - "start": { - "column": 30, - "line": 125 - } + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "staking.redeemItnRewards.step1.noResults" }, { - "defaultMessage": "!!!You have manually compared the address shown in Daedalus with the address shown on the hardware wallet device and reported that they are different. If this is the case, please contact support and make sure you download and attach logs.", - "description": "Invalid address \"Warning\" description", - "end": { - "column": 3, - "line": 135 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx", - "id": "wallet.receive.dialog.invalidAddressWarningDescription", - "start": { - "column": 36, - "line": 130 - } + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "staking.redeemItnRewards.step1.invalidRecoveryPhrase" } ], - "path": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.json" + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Your wallet address", - "description": "Label for wallet address on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.walletAddressLabel", - "start": { - "column": 22, - "line": 26 - } + "defaultMessage": "!!!Confirm rewards redemption", + "description": "title for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.title" }, { - "defaultMessage": "!!!Share this wallet address to receive payments. To protect your privacy, always use a new address when requesting funds. To generate a new address please enter your spending password and press the ‘Generate a new address’ button.", - "description": "Wallet receive payments instructions on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.walletReceiveInstructions", - "start": { - "column": 29, - "line": 31 - } + "defaultMessage": "!!!To", + "description": "walletToLabel for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.walletToLabel" }, { - "defaultMessage": "!!!Generate a new address", - "description": "Label for \"Generate new address\" button on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.generateNewAddressButtonLabel", - "start": { - "column": 33, - "line": 38 - } + "defaultMessage": "!!!{walletName} wallet", + "description": "walletToName for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.walletToName" }, { - "defaultMessage": "!!!Receiving addresses", - "description": "\"Generated addresses\" section title on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.receivingAddressesSectionTitle", - "start": { - "column": 34, - "line": 44 - } + "defaultMessage": "!!!Transaction fees", + "description": "transactionFees for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.transactionFees" }, { - "defaultMessage": "!!!Show used", - "description": "Label for \"show used\" wallet addresses link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.showUsedLabel", - "start": { - "column": 17, - "line": 50 - } + "defaultMessage": "!!!Wallet spending password ({walletName} wallet)", + "description": "spendingPasswordLabel for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.spendingPasswordLabel" }, { "defaultMessage": "!!!Password", - "description": "Placeholder for \"spending password\" on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.spendingPasswordPlaceholder", - "start": { - "column": 31, - "line": 56 - } + "description": "spendingPasswordPlaceholder for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.spendingPasswordPlaceholder" }, { - "defaultMessage": "!!!Copy address", - "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx", - "id": "wallet.receive.page.copyAddressLabel", - "start": { - "column": 20, - "line": 62 - } + "defaultMessage": "!!!Confirm rewards redemption", + "description": "continueButtonLabel for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.continueButtonLabel" + }, + { + "defaultMessage": "!!!Back", + "description": "Label for the back button in the wallet send confirmation dialog.", + "id": "staking.redeemItnRewards.step2.backButtonLabel" } ], - "path": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.json" + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Available wallet addresses", - "description": "Instructions Title on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx", - "id": "wallet.receive.page.instructions.instructionsTitle", - "start": { - "column": 21, - "line": 14 - } + "defaultMessage": "!!!No rewards were found in your Incentivized Testnet Rewards wallet. Please make sure that you have entered the correct wallet recovery phrase.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.description1NoRewards" }, { - "defaultMessage": "!!!Share any of these wallet addresses to receive payments in ada or a native Cardano token.", - "description": "Instructions Description on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx", - "id": "wallet.receive.page.instructions.instructionsDescription", - "start": { - "column": 27, - "line": 19 - } + "defaultMessage": "!!!Rewards from the wallet corresponding to the recovery phrase you have provided have already been redeemed.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.description2InvalidWallet" }, { - "defaultMessage": "!!!Privacy warning: Please note that all of your receiving addresses include your stake key. When you share a receiving address, the recipient can search the blockchain using your stake key to locate all addresses associated with your wallet, and also discover your wallet balance and transaction history.", - "description": "Privacy warning on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx", - "id": "wallet.receive.page.instructions.privacyWarning", - "start": { - "column": 18, - "line": 25 - } + "defaultMessage": "!!!No rewards were found in your Incentivized Testnet Rewards wallet. Please make sure that you have entered the correct wallet recovery phrase and that rewards have not already been redeemed.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.description3Generic" }, { - "defaultMessage": "!!!Receiving addresses", - "description": "Addresses Title on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx", - "id": "wallet.receive.page.addresses.addressesTitle", - "start": { - "column": 18, - "line": 31 - } + "defaultMessage": "!!!Back", + "description": "backButtonLabel for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.backButtonLabel" }, { - "defaultMessage": "!!!Show used", - "description": "Label for \"show used\" wallet addresses link on the wallet \"Receive page\"", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx", - "id": "wallet.receive.page.showUsedLabel", - "start": { - "column": 17, - "line": 36 - } + "defaultMessage": "!!!Close window", + "description": "closeWindowLinkLabel for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.closeWindowLinkLabel" } ], - "path": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.json" + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Title", - "description": "Label for the \"Title\" text input in the wallet send form.", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.title.label", - "start": { - "column": 14, - "line": 4 - } + "defaultMessage": "!!!Incentivized Testnet rewards redeemed!", + "description": "title for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.title" }, { - "defaultMessage": "!!!E.g: Money for Frank", - "description": "Hint inside the \"Receiver\" text input in the wallet send form.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.title.hint", - "start": { - "column": 13, - "line": 9 - } + "defaultMessage": "!!!You have successfully redeemed {redeemedRewards} to your {walletName} wallet. This transaction incurred {transactionFees} in transaction fees", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.description" }, { - "defaultMessage": "!!!Receiver", - "description": "Label for the \"Receiver\" text input in the wallet send form.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.receiver.label", - "start": { - "column": 17, - "line": 15 - } + "defaultMessage": "!!!Open the wallet", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.openWalletButtonLabel" }, { - "defaultMessage": "!!!Paste an address", - "description": "Hint inside the \"Receiver\" text input in the wallet send form.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.receiver.placeholder", - "start": { - "column": 16, - "line": 20 - } - }, - { - "defaultMessage": "!!!Token", - "description": "Label for the \"Token\" number input in the wallet send form.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.asset.label", - "start": { - "column": 14, - "line": 26 - } - }, + "defaultMessage": "!!!Download PDF certificate", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.downloadPDFButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Ada", - "description": "Label for the \"Ada\" input in the wallet send form.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.asset.adaLabel", - "start": { - "column": 18, - "line": 31 - } + "defaultMessage": "!!!Stake pools to which you are delegating", + "description": "\"delegatingListTitle\" for the Stake Pools page.", + "id": "staking.stakePools.delegatingListTitle" }, { - "defaultMessage": "!!!Remove", - "description": "Label for the \"Remove\" button in the wallet send form.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.button.removeLabel", - "start": { - "column": 15, - "line": 36 - } + "defaultMessage": "!!!Stake pools", + "description": "\"listTitle\" for the Stake Pools page.", + "id": "staking.stakePools.listTitle" }, { - "defaultMessage": "!!!Clear", - "description": "Label for the \"Clear\" button in the wallet send form.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.button.clearLabel", - "start": { - "column": 14, - "line": 41 - } + "defaultMessage": "!!!Loading stake pools", + "description": "\"listTitleLoading\" for the Stake Pools page.", + "id": "staking.stakePools.listTitleLoading" }, { - "defaultMessage": "!!!This receiver address belongs to the same wallet from which you are sending funds. If you proceed with this transaction, the transferred funds will remain in this wallet, and you will incur transaction fees, as outlined in Estimated fees.", - "description": "Label for the same wallet tooltip in the wallet send form.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.sameWalletLabel", - "start": { - "column": 19, - "line": 46 - } + "defaultMessage": "!!!Stake pools. Search results:", + "description": "\"listTitleSearch\" for the Stake Pools page.", + "id": "staking.stakePools.listTitleSearch" }, { - "defaultMessage": "!!!+ Add a token", - "description": "Label for the \"+ Add a token\" button in the wallet send form.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.button.addAssetButtonLabel", - "start": { - "column": 23, - "line": 52 - } + "defaultMessage": "!!!({pools})", + "description": "\"listTitleStakePools\" for the Stake Pools page.", + "id": "staking.stakePools.listTitleStakePools" }, { - "defaultMessage": "!!!Estimated fees", - "description": "Label for the \"Estimated fees\" number input in the wallet send form.", - "end": { - "column": 3, - "line": 63 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.estimatedFee.label", - "start": { - "column": 21, - "line": 58 - } + "defaultMessage": "!!!Loading stake pools", + "description": "Loading stake pool message for the Delegation center body section.", + "id": "staking.stakePools.loadingStakePoolsMessage" }, { - "defaultMessage": "!!!of", - "description": "Label for the \"of\" max ADA value in the wallet send form.", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.of.label", - "start": { - "column": 11, - "line": 64 - } + "defaultMessage": "!!!Moderated by", + "description": "moderatedBy message for the Delegation center body section.", + "id": "staking.stakePools.moderatedBy" }, { - "defaultMessage": "!!!a minimum of {minimumAda} ADA required", - "description": "Label for the min ADA required value in the wallet send form.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.minAdaRequired", - "start": { - "column": 18, - "line": 69 - } - }, + "defaultMessage": "!!!Unmoderated", + "description": "unmoderated message for the Delegation center body section.", + "id": "staking.stakePools.unmoderated" + } + ], + "path": "source/renderer/app/components/staking/stake-pools/StakePools.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!This transaction requires a minimum of {minimumAda} ADA to be sent.", - "description": "Tooltip for the min ADA required value in the wallet send form.", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.minAdaRequiredWithAssetTooltip", - "start": { - "column": 34, - "line": 75 - } + "defaultMessage": "!!!all your wallets", + "description": "All wallets item of dropdown.", + "id": "staking.stakePools.rankingAllWallets" }, { - "defaultMessage": "!!!A minimum of {minimumAda} ADA needs to be sent with every transaction.", - "description": "Tooltip for the min ADA required value in the wallet send form.", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.minAdaRequiredWithNoAssetTooltip", - "start": { - "column": 36, - "line": 82 - } + "defaultMessage": "!!!.", + "description": "All wallets description after dropdown.", + "id": "staking.stakePools.rankingAllWalletsEnd" }, { - "defaultMessage": "!!!Description", - "description": "Label for the \"description\" text area in the wallet send form.", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.description.label", - "start": { - "column": 20, - "line": 89 - } + "defaultMessage": "!!!Stake pools are currently ranked based on the combined amount in", + "description": "All wallets description before dropdown.", + "id": "staking.stakePools.rankingAllWalletsStart" }, { - "defaultMessage": "!!!You can add a message if you want", - "description": "Hint in the \"description\" text area in the wallet send form.", - "end": { - "column": 3, - "line": 99 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.description.hint", - "start": { - "column": 19, - "line": 95 - } + "defaultMessage": "!!!Use the slider to rank the stake pools and check the potential rewards based on the amount of stake you intend to delegate.", + "description": "Ranking description.", + "id": "staking.stakePools.rankingDescription" }, { - "defaultMessage": "!!!Reset", - "description": "Label for the reset button on the wallet send form.", - "end": { - "column": 3, - "line": 104 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.reset", - "start": { - "column": 20, - "line": 100 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us", + "description": "Ranking learn more url.", + "id": "staking.stakePools.rankingLearnMoreUrl" }, { - "defaultMessage": "!!!Send", - "description": "Label for the send button on the wallet send form.", - "end": { - "column": 3, - "line": 109 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.send", - "start": { - "column": 19, - "line": 105 - } + "defaultMessage": "!!!wallet.", + "description": "One wallet description after dropdown.", + "id": "staking.stakePools.rankingOneWalletEnd" }, { - "defaultMessage": "!!!Please enter a valid amount.", - "description": "Error message shown when invalid amount was entered.", - "end": { - "column": 3, - "line": 114 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.errors.invalidAmount", - "start": { - "column": 17, - "line": 110 - } + "defaultMessage": "!!!Stake pools are currently ranked based on the amount in", + "description": "One wallet description before dropdown.", + "id": "staking.stakePools.rankingOneWalletStart" }, { - "defaultMessage": "!!!Please enter a title with at least 3 characters.", - "description": "Error message shown when invalid transaction title was entered.", - "end": { - "column": 3, - "line": 120 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.errors.invalidTitle", - "start": { - "column": 16, - "line": 115 - } + "defaultMessage": "!!!select a wallet", + "description": "Select wallet item of dropdown.", + "id": "staking.stakePools.rankingSelectWallet" }, { - "defaultMessage": "!!!The balance and transaction history of this wallet is being synced with the blockchain.", - "description": "Syncing transactions message shown during async wallet restore in the wallet send form.", - "end": { - "column": 3, - "line": 127 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.syncingTransactionsMessage", - "start": { - "column": 30, - "line": 121 - } + "defaultMessage": "!!!to set the amount you intend to delegate.", + "description": "Select wallet description after dropdown.", + "id": "staking.stakePools.rankingSelectWalletEnd" }, { - "defaultMessage": "!!!Calculating fees", - "description": "Label for the \"Calculating fees\" message for amount input field.", - "end": { - "column": 3, - "line": 133 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.calculatingFeesLabel", - "start": { - "column": 24, - "line": 128 - } + "defaultMessage": "!!!Or", + "description": "Select wallet description before dropdown.", + "id": "staking.stakePools.rankingSelectWalletStart" }, { - "defaultMessage": "!!!UPDATE", - "description": "Label for the \"UPDATE\" button responsible to set minimum amount required for transaction .", - "end": { - "column": 3, - "line": 139 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.asset.updateAdaAmountButton", - "start": { - "column": 25, - "line": 134 - } + "defaultMessage": "!!!Circulating supply", + "description": "Circulating supply slider tooltip.", + "id": "staking.stakePools.rankingExtraTooltip" }, { - "defaultMessage": "!!!to the minimum of {minimumAda} ADA required", - "description": "Description for the \"UPDATE\" button when ADA amount is less than required", - "end": { - "column": 3, - "line": 145 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.updateAdaAmountDescription", - "start": { - "column": 30, - "line": 140 - } + "defaultMessage": "!!!Saturation point", + "description": "Saturation point slider tooltip.", + "id": "staking.stakePools.rankingMaxTooltip" }, { - "defaultMessage": "!!!Note: the ada field was automatically updated because this transaction requires a minimum of {minimumAda} ADA.", - "description": "Minimum amount update notice", - "end": { - "column": 3, - "line": 151 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.minimumAmountNote", - "start": { - "column": 23, - "line": 146 - } + "defaultMessage": "!!!Minimum ADA required for staking", + "description": "Minimum ADA required for staking slider tooltip.", + "id": "staking.stakePools.rankingMinTooltip" }, { - "defaultMessage": "!!!Note: the ada field was automatically updated to {adaAmount} ADA because now it fulfills the minimum amount of {minimumAda} ADA for the transaction.", - "description": "Restored ada amount to original user input", - "end": { - "column": 3, - "line": 157 - }, - "file": "source/renderer/app/components/wallet/send-form/messages.ts", - "id": "wallet.send.form.restoredAdaAmount", - "start": { - "column": 21, - "line": 152 - } + "defaultMessage": "!!!Learn more", + "description": "Learn more action of ranking panel.", + "id": "staking.stakePools.learnMore" } ], - "path": "source/renderer/app/components/wallet/send-form/messages.json" + "path": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Set a password for {walletName} wallet", - "description": "Title for the \"Change wallet password\" dialog when there is no password set.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.title.setPassword", - "start": { - "column": 26, - "line": 26 - } - }, - { - "defaultMessage": "!!!Change password", - "description": "Title for the \"Change wallet password\" dialog when there is already password set.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.title.changePassword", - "start": { - "column": 29, - "line": 32 - } - }, - { - "defaultMessage": "!!!Spending password", - "description": "Label for the \"Spending password\" input in the change wallet password dialog.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.spendingPasswordLabel", - "start": { - "column": 25, - "line": 38 - } + "defaultMessage": "!!!Search stake pools", + "description": "\"Delegating List Title\" for the Stake Pools search.", + "id": "staking.stakePools.search.searchInputPlaceholder" }, { - "defaultMessage": "!!!Current password", - "description": "Label for the \"Current password\" input in the change wallet password dialog.", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.currentPasswordLabel", - "start": { - "column": 24, - "line": 44 - } + "defaultMessage": "!!!Stake pools to which you are delegating", + "description": "\"delegatingListTitle\" for the Stake Pools search.", + "id": "staking.stakePools.search.delegatingListTitle" }, { - "defaultMessage": "!!!New password", - "description": "Label for the \"New password\" input in the change wallet password dialog.", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.newPasswordLabel", - "start": { - "column": 20, - "line": 50 - } + "defaultMessage": "!!!Stake pools ({pools})", + "description": "\"listTitle\" for the Stake Pools search.", + "id": "staking.stakePools.search.listTitle" }, { - "defaultMessage": "!!!Repeat password", - "description": "Label for the \"Repeat password\" input in the change wallet password dialog.", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.repeatPasswordLabel", - "start": { - "column": 23, - "line": 56 - } + "defaultMessage": "!!!Grid View", + "description": "\"gridIconTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.gridIconTooltip" }, { - "defaultMessage": "!!!Type current password", - "description": "Placeholder for the \"Current password\" inputs in the change wallet password dialog.", - "end": { - "column": 3, - "line": 67 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.currentPasswordFieldPlaceholder", - "start": { - "column": 35, - "line": 62 - } + "defaultMessage": "!!!Grid Rewards View", + "description": "\"gridRewardsIconTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.gridRewardsIconTooltip" }, { - "defaultMessage": "!!!Type new password", - "description": "Placeholder for the \"New password\" inputs in the change wallet password dialog.", - "end": { - "column": 3, - "line": 73 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.newPasswordFieldPlaceholder", - "start": { - "column": 31, - "line": 68 - } + "defaultMessage": "!!!List View", + "description": "\"listIconTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.listIconTooltip" }, { - "defaultMessage": "!!!Repeat new password", - "description": "Placeholder for the \"Repeat password\" inputs in the change wallet password dialog.", - "end": { - "column": 3, - "line": 79 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.settings.changePassword.dialog.repeatPasswordFieldPlaceholder", - "start": { - "column": 34, - "line": 74 - } - }, - { - "defaultMessage": "We recommend using a password manager app to manage and store your spending password. Generate a unique password using a password manager and paste it here. Passwords should never be reused.", - "description": "Tooltip for the password input in the wallet dialog.", - "end": { - "column": 3, - "line": 85 - }, - "file": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx", - "id": "wallet.dialog.passwordTooltip", - "start": { - "column": 19, - "line": 80 - } + "defaultMessage": "!!!Clear", + "description": "\"clearTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.clearTooltip" } ], - "path": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.json" + "path": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Delegate", - "description": "Label for the delegate button on wallet settings", - "end": { - "column": 3, - "line": 11 - }, - "file": "source/renderer/app/components/wallet/settings/DelegateWalletButton.tsx", - "id": "wallet.settings.delegateWalletButtonLabel", - "start": { - "column": 9, - "line": 7 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/DelegateWalletButton.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Rank", + "description": "Table header \"Rank\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.rank" + }, { - "defaultMessage": "!!!Delete wallet", - "description": "Delete wallet header on the wallet settings page.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/wallet/settings/DeleteWallet.tsx", - "id": "wallet.settings.deleteWallet.header", - "start": { - "column": 22, - "line": 13 - } + "defaultMessage": "!!!Ticker", + "description": "Table header \"Ticker\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.ticker" }, { - "defaultMessage": "!!!Once you delete this wallet it will be removed from the Daedalus interface and you will lose access to any remaining funds in the wallet. The only way to regain access after deletion is by restoring it using your wallet recovery phrase.", - "description": "Delete wallet warning explaining the consequences.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/settings/DeleteWallet.tsx", - "id": "wallet.settings.deleteWallet.warning1", - "start": { - "column": 24, - "line": 18 - } + "defaultMessage": "!!!Saturation", + "description": "Table header \"Saturation\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.saturation" }, { - "defaultMessage": "!!!You may wish to verify your recovery phrase before deletion to ensure that you can restore this wallet in the future, if desired.", - "description": "Delete wallet warning explaining the consequences.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/settings/DeleteWallet.tsx", - "id": "wallet.settings.deleteWallet.warning2", - "start": { - "column": 24, - "line": 24 - } + "defaultMessage": "!!!Performance", + "description": "Table header \"Performance\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.performance" }, { - "defaultMessage": "!!!Delete wallet", - "description": "Label for the delete button on wallet settings", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/settings/DeleteWallet.tsx", - "id": "wallet.settings.deleteWalletButtonLabel", - "start": { - "column": 16, - "line": 30 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/DeleteWallet.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Uptime (days)", + "description": "Table header \"Uptime\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.uptime" + }, { - "defaultMessage": "!!!Export Wallet", - "description": "headline for \"export wallet to file\" dialog.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx", - "id": "wallet.settings.exportToFile.dialog.headline", - "start": { - "column": 12, - "line": 21 - } + "defaultMessage": "!!!Margin", + "description": "Table header \"Margin\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.margin" }, { - "defaultMessage": "!!!You are exporting {walletName} to a file.", - "description": "headline for \"export wallet to file\" dialog.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx", - "id": "wallet.settings.exportToFile.dialog.introduction", - "start": { - "column": 16, - "line": 26 - } + "defaultMessage": "!!!Roi", + "description": "Table header \"Roi\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.roi" }, { - "defaultMessage": "!!!Export", - "description": "Label for export wallet to file submit button.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx", - "id": "wallet.settings.exportToFile.dialog.submit.label", - "start": { - "column": 21, - "line": 32 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Cost (ADA)", + "description": "Table header \"Cost\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.cost" + }, { - "defaultMessage": "!!!ICO public key", - "description": "Wallet public key label.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx", - "id": "wallet.settings.icoPublicKey", - "start": { - "column": 13, - "line": 12 - } + "defaultMessage": "!!!Produced Blocks", + "description": "Table header \"Produced Blocks\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.producedBlocks" }, { - "defaultMessage": "!!!Your wallet's ICO public key enables participation in the initial coin offering presales.", - "description": "ICO public key header on the wallet settings page.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx", - "id": "wallet.settings.icoPublicKey.description", - "start": { - "column": 24, - "line": 17 - } + "defaultMessage": "!!!Potential rewards", + "description": "Table header \"Potential rewards\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.potentialRewards" }, { - "defaultMessage": "!!!Click the icon on the right to view your ICO public key.", - "description": "ICO public key show instruction.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx", - "id": "wallet.settings.icoPublicKeyShowInstruction", - "start": { - "column": 28, - "line": 23 - } + "defaultMessage": "!!!Pledge (ADA)", + "description": "Table header \"Pledge\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.pledge" }, { - "defaultMessage": "!!!Show QR code", - "description": "Show QR code tooltip.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx", - "id": "wallet.settings.showQRCode", - "start": { - "column": 14, - "line": 29 - } + "defaultMessage": "!!!Retiring in", + "description": "Table header \"Retiring\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.retiring" } ], - "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.json" + "path": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Reveal ICO public key", - "description": "Title \"Choose a stake pool\" on the reveal Wallet Id dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyDialog.tsx", - "id": "wallet.settings.icoPublicKeyDialog.title", - "start": { - "column": 9, - "line": 18 - } + "defaultMessage": "!!!

A hierarchical ranking based on the potential rewards you will earn if you delegate the intended amount of stake to this pool, assuming that it reaches saturation.

*Stake pools with the potential rewards estimated at zero have the same ranking. Please set the stake slider to a higher value for more pools to get potential rewards estimated at more than zero.

", + "description": "\"Rank\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.rankingTooltip" }, { - "defaultMessage": "!!!Please enter your spending password to reveal your ICO’s public key.", - "description": "Description on the reveal Wallet Id dialog.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyDialog.tsx", - "id": "wallet.settings.icoPublicKeyDialog.description", - "start": { - "column": 15, - "line": 23 - } + "defaultMessage": "!!!Saturation measures the stake in the pool and indicates the point at which rewards stop increasing with increases in stake. This capping mechanism encourages decentralization by discouraging users from delegating to oversaturated stake pools.", + "description": "\"Saturation\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.saturationTooltip" }, { - "defaultMessage": "!!!Reveal ICO public key", - "description": "Description on the reveal ICO Id dialog.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyDialog.tsx", - "id": "wallet.settings.icoPublicKeyDialog.button", - "start": { - "column": 15, - "line": 29 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyDialog.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!ICO Public Key", - "description": "Title for the \"ICO Public Key QR Code\" dialog.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog.messages.ts", - "id": "wallet.settings.icoPublicKey", - "start": { - "column": 15, - "line": 5 - } + "defaultMessage": "!!!The pool's profit, defined as the rewards percentage kept by the pool from the stake that was delegated to it.", + "description": "\"Pool margin\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.profitMarginTooltip" }, { - "defaultMessage": "!!!Copy ICO public key", - "description": "Copy ICO public key label.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog.messages.ts", - "id": "wallet.settings.copyICOPublicKey", - "start": { - "column": 22, - "line": 10 - } + "defaultMessage": "!!!Fixed operational costs that the stake pool retains from any rewards earned during each epoch.", + "description": "\"Cost per epoch\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.costPerEpochTooltip" }, { - "defaultMessage": "!!!Derivation path", - "description": "Tooltip for the derivation path", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog.messages.ts", - "id": "wallet.settings.dialog.derivationPathTooltip", - "start": { - "column": 25, - "line": 15 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog.messages.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!The total number of blocks the stake pool has produced.", + "description": "\"Blocks\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.producedBlocksTooltip" + }, { - "defaultMessage": "!!!Set a password", - "description": "Label for the \"Set a password\" button in the set wallet password dialog.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/wallet/settings/SetWalletPassword.tsx", - "id": "wallet.settings.setWalletPassword.dialog.setPasswordButton", - "start": { - "column": 21, - "line": 11 - } + "defaultMessage": "!!!An estimation of the potential rewards you will earn per epoch if you delegate the intended amount of stake. The system looks at the pool's parameters and historical performance data to calculate potential rewards, assuming that the pool reaches optimal saturation.", + "description": "\"Rewards\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.potentialRewardsTooltip" }, { - "defaultMessage": "!!!To keep your wallet secure and start using it in Daedalus, you need to set a spending password.", - "description": "Message for the \"Set a password\" button in the set wallet password dialog.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/settings/SetWalletPassword.tsx", - "id": "wallet.settings.setWalletPassword.dialog.setPasswordMessage", - "start": { - "column": 22, - "line": 17 - } + "defaultMessage": "!!!The amount of stake that a pool operator contributes to a pool. Pools with higher pledge amounts earn more rewards for themselves and their delegators. Pools that do not honor their pledge earn zero rewards and accrue low ranking.", + "description": "\"Pledge\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.pledgeTooltip" }, { - "defaultMessage": "!!!Your wallet is not protected with a password", - "description": "Title for the \"Set wallet password\" dialog when there is not password set.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/settings/SetWalletPassword.tsx", - "id": "wallet.settings.setWalletPassword.dialog.setPasswordTitle", - "start": { - "column": 20, - "line": 24 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/SetWalletPassword.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Rank:", + "description": "\"Rank\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.ranking" + }, { - "defaultMessage": "!!!Undelegate", - "description": "Label for the undelegate button on wallet settings", - "end": { - "column": 3, - "line": 11 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletButton.tsx", - "id": "wallet.settings.undelegateWalletButtonLabel", - "start": { - "column": 9, - "line": 7 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/UndelegateWalletButton.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Undelegate", - "description": "Title for the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.title", - "start": { - "column": 9, - "line": 26 - } + "defaultMessage": "!!!Live stake:", + "description": "\"Live stake\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.relativeStake" }, { - "defaultMessage": "!!!Undelegate", - "description": "Label for the \"Undelegate\" button in the undelegate wallet dialog.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.confirmButtonLabel", - "start": { - "column": 22, - "line": 31 - } + "defaultMessage": "!!!Measures the amount of stake pledged by the pool plus the amount of stake currently delegated to the pool, versus the total amount in the system.", + "description": "\"Live stake\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.relativeStakeTooltip" }, { - "defaultMessage": "!!!

The stake from your wallet {walletName} is currently delegated to the [{stakePoolTicker}] {stakePoolName} stake pool.

Do you want to undelegate your stake and stop earning rewards?

", - "description": "Description of current delegation of wallet in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.descriptionWithTicker", - "start": { - "column": 25, - "line": 37 - } + "defaultMessage": "!!!Pool margin:", + "description": "\"Pool margin\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.profitMargin" }, { - "defaultMessage": "!!!

The stake from your wallet {walletName} is currently delegated to the {stakePoolTicker} stake pool.

Do you want to undelegate your stake and stop earning rewards?

", - "description": "Description of current delegation of wallet in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.descriptionWithUnknownTicker", - "start": { - "column": 32, - "line": 44 - } + "defaultMessage": "!!!Cost per epoch:", + "description": "\"Cost per epoch\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.costPerEpoch" }, { - "defaultMessage": "!!!unknown", - "description": "unknown stake pool label in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.unknownStakePoolLabel", - "start": { - "column": 25, - "line": 51 - } + "defaultMessage": "!!!Produced blocks:", + "description": "\"Blocks\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.producedBlocks" }, { - "defaultMessage": "!!!I understand that I am not supporting the Cardano network when my stake is undelegated.", - "description": "Notice to confirm if the user understands unsupporting Cardano network after undelegation", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.confirmUnsupportNotice", - "start": { - "column": 26, - "line": 56 - } + "defaultMessage": "!!!Potential rewards:", + "description": "\"Rewards\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.potentialRewards" }, { - "defaultMessage": "!!!I understand that I will not be eligible to earn rewards when my stake is undelegated.", - "description": "Notice to confirm if the user understands non-earning rewards after undelegation", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.confirmIneligibleNotice", - "start": { - "column": 27, - "line": 63 - } + "defaultMessage": "!!!Retirement in {retirementFromNow}", + "description": "\"Retirement\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.retirement" }, { - "defaultMessage": "!!!Fees", - "description": "Fees label in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.feesLabel", - "start": { - "column": 13, - "line": 70 - } + "defaultMessage": "!!!Saturation:", + "description": "\"Saturation\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.saturation" }, { - "defaultMessage": "!!!Deposits reclaimed", - "description": "Deposits reclaimed label in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 79 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.depositLabel", - "start": { - "column": 16, - "line": 75 - } + "defaultMessage": "!!!Pledge:", + "description": "\"Pledge\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.pledge" }, { - "defaultMessage": "!!!Spending password", - "description": "Spending password label in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 84 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.spendingPasswordLabel", - "start": { - "column": 25, - "line": 80 - } + "defaultMessage": "!!!Delegate to this pool", + "description": "\"Delegate to this pool\" Button for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.delegateButton" }, { - "defaultMessage": "!!!Type your spending password here", - "description": "Spending password placeholder in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 90 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.spendingPasswordPlaceholder", - "start": { - "column": 31, - "line": 85 - } + "defaultMessage": "!!!Copy the stake pool ID", + "description": "copyId tooltip label", + "id": "staking.stakePools.tooltip.copyIdTooltipLabel" }, { - "defaultMessage": "!!!Incorrect spending password.", - "description": "Label for password error in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.passwordError", - "start": { - "column": 24, - "line": 91 - } + "defaultMessage": "!!!Copied", + "description": "copyId tooltip label copied", + "id": "staking.stakePools.tooltip.copiedIdTooltipLabel" }, { - "defaultMessage": "!!!Calculating fees", - "description": "\"Calculating fees\" message in the \"Undelegate wallet\" dialog.", - "end": { - "column": 3, - "line": 101 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx", - "id": "wallet.settings.undelegate.dialog.calculatingFees", - "start": { - "column": 19, - "line": 96 - } + "defaultMessage": "!!!Data not available yet", + "description": "Data not available yet label", + "id": "staking.stakePools.noDataDashTooltip" } ], - "path": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.json" + "path": "source/renderer/app/components/staking/widgets/TooltipPool.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet undelegated", - "description": "Title for the \"Undelegate Result\" dialog.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletSuccessDialog.tsx", - "id": "wallet.settings.undelegate.result.dialog.title", - "start": { - "column": 9, - "line": 15 - } + "defaultMessage": "!!!Catalyst API unavailable", + "description": "Title", + "id": "voting.apiError.title" }, { - "defaultMessage": "!!!The stake from your wallet {walletName} is no longer delegated and you will soon stop earning rewards for this wallet.", - "description": "Description 1 for the \"Undelegate Result\" dialog.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletSuccessDialog.tsx", - "id": "wallet.settings.undelegate.result.dialog.description1", - "start": { - "column": 16, - "line": 20 - } + "defaultMessage": "!!!Unable to communicate with the API that retrieves the Catalyst date information.", + "description": "Description 1", + "id": "voting.apiError.description1" }, { - "defaultMessage": "!!!Your new delegation preferences are now posted on the blockchain and will take effect after both the current and next Cardano epochs have completed in {timeUntilNextEpochStart}. During this time, your previous delegation preferences are still active.", - "description": "Description 2 for the \"Undelegate Result\" dialog.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/wallet/settings/UndelegateWalletSuccessDialog.tsx", - "id": "wallet.settings.undelegate.result.dialog.description2", - "start": { - "column": 16, - "line": 26 - } + "defaultMessage": "!!!Please, try again later.", + "description": "Description 2", + "id": "voting.apiError.description2" } ], - "path": "source/renderer/app/components/wallet/settings/UndelegateWalletSuccessDialog.json" + "path": "source/renderer/app/components/voting/voting-info/ApiError.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Unpair wallet", - "description": "Unpair wallet header on the wallet settings page.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/settings/UnpairWallet.tsx", - "id": "wallet.settings.unpairWallet.header", - "start": { - "column": 22, - "line": 18 - } - }, - { - "defaultMessage": "!!!Once you unpair this wallet it will be removed from the Daedalus interface and you will lose access to any remaining funds in the wallet. The only way to regain access after deletion is by restoring it using your wallet recovery phrase.", - "description": "Unpair wallet warning explaining the consequences.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/settings/UnpairWallet.tsx", - "id": "wallet.settings.unpairWallet.warning", - "start": { - "column": 23, - "line": 23 - } + "defaultMessage": "!!!https://play.google.com/store/apps/details?id=io.iohk.vitvoting", + "description": "\"androidAppButtonUrl\" for the Catalyst voting app", + "id": "voting.info.androidAppButtonUrl" }, { - "defaultMessage": "!!!Unpair wallet", - "description": "Label for the unpair button on wallet settings", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/settings/UnpairWallet.tsx", - "id": "wallet.settings.unpairWalletButtonLabel", - "start": { - "column": 16, - "line": 29 - } + "defaultMessage": "!!!https://apps.apple.com/in/app/catalyst-voting/id1517473397", + "description": "\"appleAppButtonUrl\" for the Catalyst voting app", + "id": "voting.info.appleAppButtonUrl" } ], - "path": "source/renderer/app/components/wallet/settings/UnpairWallet.json" + "path": "source/renderer/app/components/voting/voting-info/AppStore.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet public key", - "description": "Wallet public key label.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx", - "id": "wallet.settings.walletPublicKey", - "start": { - "column": 13, - "line": 12 - } + "defaultMessage": "!!!Project Catalyst", + "description": "Headline Project Catalyst", + "id": "voting.catalyst.heading" }, { - "defaultMessage": "!!!Click Reveal on the right-hand side to display the public key of the wallet.", - "description": "Wallet public key show instruction.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx", - "id": "wallet.settings.walletPublicKeyShowInstruction", - "start": { - "column": 28, - "line": 17 - } + "defaultMessage": "!!!Decide which innovative ideas for Cardano will receive funding.", + "description": "Description Project Catalyst", + "id": "voting.catalyst.descriptionRow1" }, { - "defaultMessage": "!!!Show QR code", - "description": "Show QR code tooltip.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx", - "id": "wallet.settings.showQRCode", - "start": { - "column": 14, - "line": 23 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/WalletPublicKeyBox.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Reveal wallet public key", - "description": "Title \"Choose a stake pool\" on the reveal Wallet Id dialog.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/settings/WalletPublicKeyDialog.tsx", - "id": "wallet.settings.walletPublicKeyDialog.title", - "start": { - "column": 9, - "line": 17 - } + "defaultMessage": "!!!{reward} worth of ada rewards will be distributed between ada holders who register their vote.", + "description": "Description Project Catalyst", + "id": "voting.catalyst.descriptionRow2" }, { - "defaultMessage": "!!!Please enter your spending password to reveal your wallet’s public key.", - "description": "Description on the reveal Wallet Id dialog.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/settings/WalletPublicKeyDialog.tsx", - "id": "wallet.settings.walletPublicKeyDialog.description", - "start": { - "column": 15, - "line": 22 - } + "defaultMessage": "!!!Learn more", + "description": "Learn more link label for registration steps", + "id": "voting.info.learnMoreLinkLabel" }, { - "defaultMessage": "!!!Reveal wallet public key", - "description": "Description on the reveal Wallet Id dialog.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/wallet/settings/WalletPublicKeyDialog.tsx", - "id": "wallet.settings.walletPublicKeyDialog.button", - "start": { - "column": 15, - "line": 28 - } + "defaultMessage": "!!!https://cardano.ideascale.com/a/index", + "description": "Learn more link url for registration steps", + "id": "voting.info.learnMoreLinkUrl" } ], - "path": "source/renderer/app/components/wallet/settings/WalletPublicKeyDialog.json" + "path": "source/renderer/app/components/voting/voting-info/Headline.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet recovery phrase verification", - "description": "Label for the recoveryPhraseStep1Title on wallet settings.", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep1Title", - "start": { - "column": 28, - "line": 11 - } + "defaultMessage": "!!!Snapshot date:", + "description": "Voting info snapshot date label", + "id": "voting.registerToVote.dateLabel" }, { - "defaultMessage": "!!!To verify that you have the correct recovery phrase for this wallet, you can enter it on the following screen.", - "description": "Label for the recoveryPhraseStep1Paragraph1 on wallet settings.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep1Paragraph1", - "start": { - "column": 33, - "line": 16 - } + "defaultMessage": "!!!Follow these steps to vote:", + "description": "Steps to follow title", + "id": "voting.registerToVote.stepsTitle" }, { - "defaultMessage": "!!!Are you being watched? Please make sure that nobody can see your screen while you are entering your wallet recovery phrase.", - "description": "Label for the recoveryPhraseStep1Paragraph2 on wallet settings.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep1Paragraph2", - "start": { - "column": 33, - "line": 23 - } + "defaultMessage": "!!!Download the Catalyst Voting app on your smartphone", + "description": "First step to follow in order to vote", + "id": "voting.registerToVote.step1CheckBoxLabel" }, { - "defaultMessage": "!!!Continue", - "description": "Label for the recoveryPhraseStep1Button on wallet settings.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep1Button", - "start": { - "column": 29, - "line": 30 - } + "defaultMessage": "!!!Ensure that you register and hold the necessary 500 ADA at the time of the snapshot.", + "description": "Second step to follow in order to vote", + "id": "voting.registerToVote.step2CheckBoxLabel" + }, + { + "defaultMessage": "!!!Register to vote", + "description": "Button Label for voting registration steps", + "id": "voting.registerToVote.registerToVoteButtonLabel" } ], - "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.json" + "path": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet recovery phrase verification", - "description": "Label for the recoveryPhraseStep2Title on wallet settings.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep2Title", - "start": { - "column": 28, - "line": 20 - } + "defaultMessage": "!!!End of voting:", + "description": "Headline for end date", + "id": "voting.resultsPhase.endDateLabel" }, { - "defaultMessage": "!!!Please enter your wallet recovery phrase. Make sure you enter the words in the correct order.", - "description": "Label for the recoveryPhraseStep2Description on wallet settings.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep2Description", - "start": { - "column": 34, - "line": 25 - } + "defaultMessage": "!!!View results", + "description": "View results link label", + "id": "voting.resultsPhase.viewResultsLinkLabel" }, { - "defaultMessage": "!!!Recovery phrase", - "description": "Label for the recoveryPhraseStep2Subtitle on wallet settings.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep2Subtitle", - "start": { - "column": 31, - "line": 32 - } - }, + "defaultMessage": "https://cardano.ideascale.com/a/pages/results", + "description": "View results link", + "id": "voting.resultsPhase.viewResultsLinkURL" + } + ], + "path": "source/renderer/app/components/voting/voting-info/ResultsPhase.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Verify", - "description": "Label for the recoveryPhraseStep2Button on wallet settings.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep2Button", - "start": { - "column": 29, - "line": 38 - } + "defaultMessage": "!!!Snapshot date:", + "description": "Snapshot date label", + "id": "voting.snapshotPhase.snapshotDateLabel" }, { - "defaultMessage": "!!!Enter word #{wordNumber}", - "description": "Placeholder \"Enter word #{wordNumber}\" for the recovery phrase input on the verification dialog.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseInputPlaceholder", - "start": { - "column": 34, - "line": 43 - } - }, + "defaultMessage": "!!!Next voting period:", + "description": "Next voting date label", + "id": "voting.snapshotPhase.votingDateLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-info/SnapshotPhase.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!No results", - "description": "\"No results\" message for the recovery phrase input search results.", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseInputNoResults", - "start": { - "column": 27, - "line": 49 - } + "defaultMessage": "!!!Voting ended:", + "description": "Voting end date label", + "id": "voting.tallyingPhase.endDateLabel" }, { - "defaultMessage": "!!!Invalid recovery phrase", - "description": "Error message shown when invalid recovery phrase was entered.", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep2InvalidMnemonics", - "start": { - "column": 39, - "line": 55 - } + "defaultMessage": "!!!Check back for results on:", + "description": "Results date label", + "id": "voting.tallyingPhase.resultsLabel" } ], - "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.json" + "path": "source/renderer/app/components/voting/voting-info/TallyingPhase.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!verification successful", - "description": "Label for the recoveryPhraseStep3Title on wallet settings.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep3Title", - "start": { - "column": 28, - "line": 13 - } - }, - { - "defaultMessage": "!!!You have verified the recovery phrase for this wallet. You can use it at any time to recover the funds in this wallet on another computer, even if using a different version of Daedalus.", - "description": "Label for the recoveryPhraseStep3Paragraph1 on wallet settings.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep3Paragraph1", - "start": { - "column": 33, - "line": 18 - } - }, + "defaultMessage": "!!!Fund{votingFundNumber}", + "description": "Current fund name", + "id": "voting.fundName" + } + ], + "path": "source/renderer/app/components/voting/voting-info/VotingInfo.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Please make sure to return your wallet recovery phrase to a secure place for safekeeping. Anyone with access to your wallet recovery phrase can take control of your funds.", - "description": "Label for the recoveryPhraseStep3Paragraph2 on wallet settings.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep3Paragraph2", - "start": { - "column": 33, - "line": 25 - } + "defaultMessage": "!!!Voting period open between:", + "description": "Voting date label", + "id": "voting.votingOpenPhase.dateLabel" }, { - "defaultMessage": "!!!Finish", - "description": "Label for the recoveryPhraseStep3Button on wallet settings.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep3Button", - "start": { - "column": 29, - "line": 32 - } + "defaultMessage": "!!!Use mobile app to vote", + "description": "Voting instruction", + "id": "voting.votingOpenPhase.instruction" } ], - "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.json" + "path": "source/renderer/app/components/voting/voting-info/VotingPhase.messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!verification failure", - "description": "Label for the recoveryPhraseStep4Title on wallet settings.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep4Title", - "start": { - "column": 28, - "line": 12 - } + "defaultMessage": "!!!You can only use one wallet when registering. To maximize rewards and voting power, choose the wallet with the largest balance.", + "description": "Description on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.description" }, { - "defaultMessage": "!!!The wallet recovery phrase you have entered does not match the recovery phrase of this wallet. Make sure you have entered the wallet recovery phrase which was written down during the wallet creation process for this wallet and make sure the words are in the correct order.", - "description": "Label for the recoveryPhraseStep4Paragraph1 on wallet settings.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep4Paragraph1", - "start": { - "column": 33, - "line": 17 - } + "defaultMessage": "!!!Select a wallet", + "description": "Label \"Wallet\" for select input on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.selectWalletInputLabel" }, { - "defaultMessage": "!!!If you are unable to verify your wallet recovery phrase, you should create a new wallet and move all of the funds from this wallet to the new wallet. If you do this, make sure you keep the wallet recovery phrase for the new wallet safe and secure.", - "description": "Label for the recoveryPhraseStep4Paragraph2 on wallet settings.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep4Paragraph2", - "start": { - "column": 33, - "line": 24 - } + "defaultMessage": "!!!Select a wallet", + "description": "Placeholder \"Select Wallet\" for select input on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.selectWalletInputPlaceholder" }, { - "defaultMessage": "!!!Verify recovery phrase again", - "description": "Label for the recoveryPhraseStep4Button on wallet settings.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep4Button", - "start": { - "column": 29, - "line": 31 - } + "defaultMessage": "!!!This wallet does not contain the minimum required amount of {minVotingRegistrationFunds} ADA. Please select a different wallet with a minimum balance of {minVotingRegistrationFunds} ADA.", + "description": "errorMinVotingFunds Error Label on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorMinVotingFunds" }, { - "defaultMessage": "!!!Read support portal article", - "description": "Label for the recoveryPhraseStep4SupportTitle on wallet settings.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep4SupportTitle", - "start": { - "column": 35, - "line": 36 - } + "defaultMessage": "!!!This wallet cannot be registered for voting as it contains rewards balance only.", + "description": "errorMinVotingFundsRewardsOnly Error Label on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorMinVotingFundsRewardsOnly" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360035341914", - "description": "Label for the recoveryPhraseStep4SupportUrl on wallet settings.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx", - "id": "wallet.settings.recoveryPhraseStep4SupportUrl", - "start": { - "column": 33, - "line": 42 - } + "defaultMessage": "!!!This wallet cannot be registered for voting as it is a legacy Byron wallet.", + "description": "Byron wallet error message on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorLegacyWallet" + }, + { + "defaultMessage": "!!!The wallet cannot be registered for voting while it is being synced with the blockchain.", + "description": "Restoring wallet error message on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorRestoringWallet" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.continueButtonLabel" } ], - "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.json" + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Do you have your wallet recovery phrase?", - "description": "Label for the recoveryPhraseVerificationTitle on wallet settings.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.title", - "start": { - "column": 9, - "line": 26 - } + "defaultMessage": "!!!Confirmation of voting registration requires approximately 5 minutes. Please leave Daedalus running.", + "description": "Description voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.description" }, { - "defaultMessage": "!!!Funds in this wallet can only be recovered using the correct wallet recovery phrase, which is a unique {wordCount}-word string you were shown and asked to write down when creating this wallet. You can re-enter your wallet recovery phrase to verify that you have the correct recovery phrase for this wallet.", - "description": "Label for the recoveryPhraseVerificationDescription on wallet settings.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.description", - "start": { - "column": 15, - "line": 32 - } + "defaultMessage": "!!!Please restart the voting registration process by clicking Restart voting registration.", + "description": "Message for restart voting registration on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.descriptionRestart" }, { - "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in {timeUntilWarning}.", - "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.neverOkTimeUntil", - "start": { - "column": 20, - "line": 39 - } + "defaultMessage": "!!!The voting registration process was not completed correctly.", + "description": "Error message on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.errorMessage" }, { - "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few months.", - "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.neverOkFewMonths", - "start": { - "column": 20, - "line": 46 - } + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.continueButtonLabel" }, { - "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few weeks.", - "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.neverOkFewWeeks", - "start": { - "column": 19, - "line": 53 - } + "defaultMessage": "!!!Restart voting registration", + "description": "Label for restart button on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.restartButtonLabel" }, { - "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few days.", - "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.neverOkFewDays", - "start": { - "column": 18, - "line": 60 - } + "defaultMessage": "!!!Transaction pending...", + "description": "Label for pending transaction state on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.transactionPendingLabel" }, { - "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase.", - "description": "Label for the recoveryPhraseVerificationNeverWarning on wallet settings.", - "end": { - "column": 3, - "line": 73 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.neverWarning", - "start": { - "column": 16, - "line": 67 - } + "defaultMessage": "!!!Transaction confirmed", + "description": "Label for confirmed transaction state on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.transactionConfirmedLabel" }, { - "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase.", - "description": "Label for the recoveryPhraseVerificationNeverNotification on wallet settings.", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.neverNotification", - "start": { - "column": 21, - "line": 74 - } + "defaultMessage": "!!!Waiting for confirmation...", + "description": "Label for confirming transaction state on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.waitingForConfirmationsLabel" }, { - "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}.", - "description": "Label for the recoveryPhraseVerificationCheckedOk on wallet settings.", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.checkedOk", - "start": { - "column": 13, - "line": 81 - } + "defaultMessage": "!!!{currentCount} of {expectedCount}", + "description": "Label for number of confirmations on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.confirmationsCountLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please enter a PIN for your Fund{nextVotingFundNumber} voting registration. The PIN you set here, and the QR code which you will get in the next step, will be required for you to vote using the Catalyst Voting app on your smartphone.", + "description": "Description on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.description" }, { - "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}.", - "description": "Label for the recoveryPhraseVerificationCheckedWarning on wallet settings.", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.checkedWarning", - "start": { - "column": 18, - "line": 88 - } + "defaultMessage": "!!!It is important to remember your PIN. If you forget your PIN, you will not be able to use this registration for voting, and you will need to repeat the registration process.", + "description": "Reminder on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.reminder" }, { - "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}. We recommend that you verify your wallet recovery phrase again.", - "description": "Label for the recoveryPhraseVerificationCheckedNotification on wallet settings.", - "end": { - "column": 3, - "line": 101 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.checkedNotification", - "start": { - "column": 23, - "line": 95 - } + "defaultMessage": "!!!Enter PIN", + "description": "Label for pin code input on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.enterPinCodeLabel" }, { - "defaultMessage": "!!!If this wallet was restored from a paper wallet certificate, you cannot use this feature to verify your wallet recovery phrase. Paper wallet recovery phrase to regular wallet recovery phrase conversion will be available in Daedalus soon.", - "description": "Description for the paperWallet instructions on wallet settings.", - "end": { - "column": 3, - "line": 108 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.paperWalletDescription", - "start": { - "column": 26, - "line": 102 - } + "defaultMessage": "!!!Repeat PIN", + "description": "Label for repeat pin code on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.repeatPinCodeLabel" }, { - "defaultMessage": "!!!Paper wallet", - "description": "Title for the paperWallet instructions on wallet settings.", - "end": { - "column": 3, - "line": 113 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.paperWalletTitle", - "start": { - "column": 20, - "line": 109 - } + "defaultMessage": "!!!Invalid PIN", + "description": "Error message shown when repeat pin code is invalid.", + "id": "voting.votingRegistration.enterPinCode.step.errors.invalidPinCode" }, { - "defaultMessage": "!!!Verify wallet recovery phrase", - "description": "Label for the recoveryPhraseVerificationButton on wallet settings.", - "end": { - "column": 3, - "line": 119 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.button", - "start": { - "column": 10, - "line": 114 - } + "defaultMessage": "!!!PIN doesn’t match", + "description": "Error message shown when repeat pin code is invalid.", + "id": "voting.votingRegistration.enterPinCode.step.errors.invalidRepeatPinCode" }, { - "defaultMessage": "!!!ヶ月,か月", - "description": "Label for the recoveryPhraseVerificationButton on wallet settings.", - "end": { - "column": 3, - "line": 126 - }, - "file": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx", - "id": "wallet.settings.recoveryPhraseVerification.timeUntilWarningReplacement", - "start": { - "column": 31, - "line": 120 - } + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.continueButtonLabel" } ], - "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.json" + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Transaction assurance security level", - "description": "Label for the \"Transaction assurance security level\" dropdown.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.assurance", - "start": { - "column": 23, - "line": 37 - } + "defaultMessage": "!!!Please complete your registration now.", + "description": "Qr code title on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeTitle" }, { - "defaultMessage": "!!!Undelegating your wallet", - "description": "Undelegate wallet header on the wallet settings page.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.undelegateWallet.header", - "start": { - "column": 26, - "line": 43 - } + "defaultMessage": "!!!Open the Catalyst Voting app on your smartphone, scan the QR code, and enter your PIN to complete the voting registration process.", + "description": "Part 1 of Qr code description of use on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeDescription1" }, { - "defaultMessage": "!!!If you are planning to stop using this wallet and remove all funds, you should first undelegate it to recover your 2 ada deposit. You will continue getting delegation rewards during the three Cardano epochs after undelegating your wallet.", - "description": "Undelegate wallet warning explaining the consequences.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.undelegateWallet.warning", - "start": { - "column": 27, - "line": 48 - } + "defaultMessage": "!!!Your registration remains valid across all Catalyst funding rounds. Ensure that you save your QR code and PIN so you can reconnect your wallet to the voting app if you are logged out, or if you want to connect a new device.", + "description": "Part 2 of Qr code description of use on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeDescription2" }, { - "defaultMessage": "!!!This wallet is synchronizing with the blockchain, so this wallet's delegation status is currently unknown, and undelegation is not possible.", - "description": "Undelegate wallet disabled warning explaining why it is disabled.", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.undelegateWallet.disabledWarning", - "start": { - "column": 35, - "line": 54 - } + "defaultMessage": "!!!Warning: After closing this window the QR code will no longer be available. If you do not keep a PDF copy of the QR code, you might not be able to participate in voting.", + "description": "Qr code warning on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeWarning" }, { - "defaultMessage": "!!!Delegate your wallet", - "description": "Delegate wallet header on the wallet settings page.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.delegateWallet.header", - "start": { - "column": 24, - "line": 61 - } + "defaultMessage": "!!!I understand that I will not be able to retrieve this QR code again after closing this window.", + "description": "First checkbox label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.checkbox1Label" }, { - "defaultMessage": "!!!This wallet is not delegated. Please, delegate the stake from this wallet to earn rewards and support the Cardano network's security.", - "description": "Delegate wallet warning.", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.delegateWallet.warning", - "start": { - "column": 25, - "line": 66 - } + "defaultMessage": "!!!I acknowledge that I must have the downloaded PDF with the QR code, to vote with Fund{nextVotingFundNumber}.", + "description": "Second checkbox label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.checkbox2Label" }, { - "defaultMessage": "!!!This wallet is synchronizing with the blockchain, so this wallet's delegation status is currently unknown, and delegation is not possible.", - "description": "Delegate wallet disabled warning explaining why it is disabled.", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.delegateWallet.disabledWarning", - "start": { - "column": 33, - "line": 72 - } + "defaultMessage": "!!!Close", + "description": "\"Close\" button label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.closeButtonLabel" }, { - "defaultMessage": "!!!Name", - "description": "Label for the \"Name\" text input on the wallet settings page.", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.name.label", - "start": { - "column": 8, - "line": 79 - } + "defaultMessage": "!!!Save as PDF", + "description": "\"Save as PDF\" button label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.saveAsPdfButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please sign the voting registration transaction. This transaction links your wallet balance with your Fund{nextVotingFundNumber} voting registration, as a proof of your voting power. Funds will not leave your wallet, but registration requires paying transaction fees, as displayed on-screen.", + "description": "Description on the voting registration \"sign\" step.", + "id": "voting.votingRegistration.register.step.description" }, { - "defaultMessage": "!!!Password", - "description": "Label for the \"Password\" field.", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.password", - "start": { - "column": 17, - "line": 84 - } + "defaultMessage": "!!!Submit registration transaction", + "description": "Label for continue button on the voting registration \"sign\" step.", + "id": "voting.votingRegistration.register.step.continueButtonLabel" }, { - "defaultMessage": "!!!Last updated", - "description": "Last updated X time ago message.", - "end": { - "column": 3, - "line": 93 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.passwordLastUpdated", - "start": { - "column": 23, - "line": 89 - } + "defaultMessage": "!!!Fees", + "description": "Fees label on the voting registration \"sign\" step.", + "id": "voting.votingRegistration.register.step.feesLabel" }, { - "defaultMessage": "!!!You still don't have password", - "description": "You still don't have password set message.", - "end": { - "column": 3, - "line": 98 - }, - "file": "source/renderer/app/components/wallet/settings/WalletSettings.tsx", - "id": "wallet.settings.passwordNotSet", - "start": { - "column": 18, - "line": 94 - } - } - ], - "path": "source/renderer/app/components/wallet/settings/WalletSettings.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Spending password", + "description": "Placeholder for \"spending password\"", + "id": "voting.votingRegistration.register.step.spendingPasswordPlaceholder" + }, { - "defaultMessage": "!!!+ {amount} of fees", - "description": "Label for the \"+ 12.042481 of fees\" message above amount input field.", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/wallet/skins/AmountInputSkin.tsx", - "id": "wallet.amountInput.feesLabel", - "start": { - "column": 13, - "line": 8 - } + "defaultMessage": "!!!Spending password", + "description": "Label for \"spending password\"", + "id": "voting.votingRegistration.register.step.spendingPasswordLabel" }, { "defaultMessage": "!!!Calculating fees", - "description": "Label for the \"Calculating fees\" message above amount input field.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/skins/AmountInputSkin.tsx", - "id": "wallet.amountInput.calculatingFeesLabel", - "start": { - "column": 24, - "line": 14 - } - } - ], - "path": "source/renderer/app/components/wallet/skins/AmountInputSkin.json" - }, - { - "descriptors": [ + "description": "\"Calculating fees\" message in the \"sign\" step.", + "id": "voting.votingRegistration.register.step.calculatingFees" + }, { - "defaultMessage": "!!!Tokens", - "description": "Tokens title in the wallet summary", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummary.tsx", - "id": "wallet.summary.assets.tokensTitle", - "start": { - "column": 19, - "line": 14 - } + "defaultMessage": "!!!Learn more", + "description": "\"Learn more\" link on the \"sign\" step.", + "id": "voting.votingRegistration.register.step.learnMoreLink" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900006490763", + "description": "Learn more\" link URL on the \"sign\" step.", + "id": "voting.votingRegistration.register.step.learntMoreLinkUrl" } ], - "path": "source/renderer/app/components/wallet/summary/WalletSummary.json" + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Converts as", - "description": "\"Currency - title\" label on Wallet summary currency page", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummaryCurrency.tsx", - "id": "wallet.summary.currency.title", - "start": { - "column": 17, - "line": 17 - } + "defaultMessage": "!!!On the following screen, you will be given a list of {walletRecoveryPhraseWordCount} words to write down on paper and keep in a safe place. This list of words is the wallet recovery phrase for the wallet you are creating.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions1" }, { - "defaultMessage": "!!!converted {fetchedTimeAgo}", - "description": "\"Currency - last fetched\" label on Wallet summary currency page", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummaryCurrency.tsx", - "id": "wallet.summary.currency.lastFetched", - "start": { - "column": 23, - "line": 22 - } + "defaultMessage": "!!!The simplest way to keep your wallet recovery phrase secure is to never store it digitally or online. If you decide to use an online service, such as a password manager with an encrypted database, it is your responsibility to make sure that you use it correctly.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions2" }, { - "defaultMessage": "!!!fetching conversion rates", - "description": "\"Currency - Fetching\" label on Wallet summary currency page", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummaryCurrency.tsx", - "id": "wallet.summary.currency.isFetchingRate", - "start": { - "column": 26, - "line": 28 - } - } - ], - "path": "source/renderer/app/components/wallet/summary/WalletSummaryCurrency.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Using your recovery phrase is the only way to recover your wallet if your computer is lost, broken, stolen, or stops working.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions3" + }, { - "defaultMessage": "!!!{total} transactions, {pending} pending", - "description": "\"Number of transactions\" label on Wallet summary header page", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummaryHeader.tsx", - "id": "wallet.summary.header.transactionsLabel", - "start": { - "column": 21, - "line": 17 - } + "defaultMessage": "!!!Continue", + "description": "Label for button \"Continue\" on wallet backup dialog", + "id": "wallet.backup.privacy.warning.dialog.button.labelContinue" + }, + { + "defaultMessage": "!!!I confirm that nobody can see my screen, because anyone who knows my recovery phrase will be able to spend the ada in my new wallet.", + "description": "Label for the checkbox on wallet backup dialog describing that nobody should be watching when recovery phrase is shown", + "id": "wallet.backup.privacy.warning.dialog.checkbox.label.nobodyWatching" } ], - "path": "source/renderer/app/components/wallet/summary/WalletSummaryHeader.json" + "path": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!{total} rewards earned, {unspent} unspent rewards", - "description": "Headline for the Decentralisation notification.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummaryHeaderRewards.tsx", - "id": "wallet.summary.header.rewardsSummary", - "start": { - "column": 11, - "line": 20 - } - }, - { - "defaultMessage": "!!!All the ada in this wallet is in the rewards account.\n Since transaction fees cannot be paid with rewards, please send 2 or\n more ada to this wallet to cover transaction fees.", - "description": "Tooltip describing that rewards are unspendable on the Wallet summary header", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/wallet/summary/WalletSummaryHeaderRewards.tsx", - "id": "wallet.summary.header.unspendableTooltip", - "start": { - "column": 22, - "line": 25 - } + "defaultMessage": "!!!Please make sure you write down the {walletRecoveryPhraseWordCount} words of your wallet recovery phrase on a piece of paper in the exact order shown here.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.recovery.phrase.display.dialog.backup.instructions" + }, + { + "defaultMessage": "!!!Yes, I have written down my wallet recovery phrase.", + "description": "Label for button \"Yes, I have written down my wallet recovery phrase.\" on wallet backup dialog", + "id": "wallet.backup.recovery.phrase.display.dialog.button.label.iHaveWrittenItDown" } ], - "path": "source/renderer/app/components/wallet/summary/WalletSummaryHeaderRewards.json" + "path": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseDisplayDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Tokens", - "description": "Number of tokens title on Wallet summary assets page", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx", - "id": "wallet.summary.assets.tokensTitle", - "start": { - "column": 15, - "line": 9 - } + "defaultMessage": "!!!Please enter your {wordCount}-word wallet recovery phrase. Make sure you enter the words in the correct order.", + "description": "Instructions for verifying wallet recovery phrase on dialog for entering wallet recovery phrase.", + "id": "wallet.backup.recovery.phrase.entry.dialog.verification.instructions" }, { - "defaultMessage": "!!!Want to find out more about native tokens?", - "description": "\"Learn more\" text in the Wallets Summary No Tokens component", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx", - "id": "wallet.summary.noTokens.learnMore.textTop", - "start": { - "column": 20, - "line": 14 - } + "defaultMessage": "!!!Verify your recovery phrase", + "description": "Label for the recovery phrase input on dialog for entering wallet recovery phrase.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputLabel" }, { - "defaultMessage": "!!!Start by visiting the IOHK blog for a useful primer.", - "description": "\"Learn more\" text in the Wallets Summary No Tokens component", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx", - "id": "wallet.summary.noTokens.learnMore.textBottom", - "start": { - "column": 23, - "line": 19 - } + "defaultMessage": "!!!Enter your {numberOfWords}-word recovery phrase", + "description": "Placeholder hint for the mnemonics autocomplete.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputHint" }, { - "defaultMessage": "!!!Learn more", - "description": "\"Learn more\" label or button in the Wallets Summary No Tokens component", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx", - "id": "wallet.summary.noTokens.learnMore.linkLabel", - "start": { - "column": 22, - "line": 24 - } + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder for the mnemonics autocomplete.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputPlaceholder" }, { - "defaultMessage": "!!!https://iohk.io/en/blog/posts/2021/02/04/native-tokens-to-bring-new-utility-to-life-on-cardano/", - "description": "\"Learn more\" link URL in the Wallets Summary No Tokens component", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx", - "id": "wallet.summary.noTokens.learnMore.linkUrl", - "start": { - "column": 20, - "line": 30 - } + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputNoResults" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInvalidMnemonics" + }, + { + "defaultMessage": "!!!Confirm", + "description": "Label for button \"Confirm\" on wallet backup dialog", + "id": "wallet.recovery.phrase.show.entry.dialog.button.labelConfirm" + }, + { + "defaultMessage": "!!!I understand that the simplest way to keep my wallet recovery phrase secure is to never store it digitally or online. If I decide to use an online service, such as a password manager with an encrypted database, it is my responsibility to make sure that I use it correctly.", + "description": "Term on wallet creation to store recovery phrase offline", + "id": "wallet.backup.recovery.phrase.entry.dialog.terms.and.condition.offline" + }, + { + "defaultMessage": "!!!I understand that the only way to recover my wallet if my computer is lost, broken, stolen, or stops working is to use my wallet recovery phrase.", + "description": "Term and condition on wallet backup dialog describing that wallet can only be recovered with a security phrase", + "id": "wallet.backup.recovery.phrase.entry.dialog.terms.and.condition.recovery" } ], - "path": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.json" + "path": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Add tokens", - "description": "Token picker title", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.title", - "start": { - "column": 9, - "line": 4 - } - }, - { - "defaultMessage": "!!!All tokens", - "description": "Label for all tokens option", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.allTokensLabel", - "start": { - "column": 18, - "line": 9 - } + "defaultMessage": "!!!Import Wallet", + "description": "headline for \"Import wallet from file\" dialog.", + "id": "wallet.file.import.dialog.headline" }, { - "defaultMessage": "!!!Favorites", - "description": "Label for favorite tokens option", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.favoriteTokensLabel", - "start": { - "column": 23, - "line": 14 - } + "defaultMessage": "!!!Import file", + "description": "Label \"Import file\" on the dialog for importing a wallet from a file.", + "id": "wallet.file.import.dialog.walletFileLabel" }, { - "defaultMessage": "!!!Select all", - "description": "Label for select all button label", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.checkAllLabel", - "start": { - "column": 17, - "line": 19 - } + "defaultMessage": "!!!Drop file here or click to choose", + "description": "Hint for the file upload field on the dialog for importing a wallet from a file.", + "id": "wallet.file.import.dialog.walletFileHint" }, { - "defaultMessage": "!!!{checkedCount} out of {maxTokens} tokens.", - "description": "Label of selected tokens count", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.checkedCountLabel", - "start": { - "column": 21, - "line": 24 - } + "defaultMessage": "!!!Wallet name", + "description": "Label for the \"wallet name\" input in the wallet file import dialog.", + "id": "wallet.file.import.dialog.wallet.name.input.label" }, { - "defaultMessage": "!!!Cancel", - "description": "Label of cancel button", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.cancelButtonLabel", - "start": { - "column": 21, - "line": 29 - } + "defaultMessage": "!!!e.g: Shopping Wallet", + "description": "Hint for the \"Wallet name\" in the wallet file import dialog.", + "id": "wallet.file.import.dialog.wallet.name.input.hint" }, { - "defaultMessage": "!!!Add", - "description": "Label of add button", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.addButtonLabel", - "start": { - "column": 18, - "line": 34 - } + "defaultMessage": "!!!Import wallet", + "description": "Label \"Import wallet\" submit button on the dialog for importing a wallet from a file.", + "id": "wallet.file.import.dialog.submitLabel" }, { - "defaultMessage": "!!!Clear selection", - "description": "Label of clear selection button", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.clearAll", - "start": { - "column": 12, - "line": 39 - } + "defaultMessage": "!!!Wallet password", + "description": "Label for the \"Wallet password\" input in the wallet file import dialog.", + "id": "wallet.file.import.dialog.spendingPasswordLabel" }, { - "defaultMessage": "!!!Results do not match search query", - "description": "Text for no results", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.noResults", - "start": { - "column": 13, - "line": 44 - } + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the wallet file import dialog.", + "id": "wallet.file.import.dialog.repeatPasswordLabel" }, { - "defaultMessage": "!!!You have already reached a maximum of {maxTokens} tokens for your transaction. To add another token you need to remove one from a list.", - "description": "Max tokens warning", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts", - "id": "wallet.token.picker.maxTokensWarning", - "start": { - "column": 20, - "line": 49 - } + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the wallet file import dialog.", + "id": "wallet.file.import.dialog.passwordFieldPlaceholder" } ], - "path": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.json" + "path": "source/renderer/app/components/wallet/file-import/WalletFileImportDialog.tsx" }, { "descriptors": [ + { + "defaultMessage": "!!!Summary", + "description": "Label for the \"Summary\" nav button in the wallet navigation.", + "id": "wallet.navigation.summary" + }, { "defaultMessage": "!!!Send", - "description": "Send button on Wallet summary assets page", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts", - "id": "wallet.summary.asset.tokenSendButton", - "start": { - "column": 19, - "line": 4 - } + "description": "Label for the \"Send\" nav button in the wallet navigation.", + "id": "wallet.navigation.send" }, { - "defaultMessage": "!!!Amount", - "description": "Amount label on Wallet summary assets page", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts", - "id": "wallet.summary.asset.amountLabel", - "start": { - "column": 15, - "line": 9 - } + "defaultMessage": "!!!Receive", + "description": "Label for the \"Receive\" nav button in the wallet navigation.", + "id": "wallet.navigation.receive" + }, + { + "defaultMessage": "!!!Transactions", + "description": "Label for the \"Transactions\" nav button in the wallet navigation.", + "id": "wallet.navigation.transactions" + }, + { + "defaultMessage": "!!!Tokens", + "description": "Label for the \"Tokens\" nav button in the wallet navigation.", + "id": "wallet.navigation.tokens" }, { "defaultMessage": "!!!Settings", - "description": "Settings label on Wallet summary assets page", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts", - "id": "wallet.summary.asset.settings.button.label", - "start": { - "column": 23, - "line": 14 - } + "description": "Label for the \"Settings\" nav button in the wallet navigation.", + "id": "wallet.navigation.settings" }, { - "defaultMessage": "!!!Recommended configuration for decimal places for this native token is available.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts", - "id": "assets.warning.available", - "start": { - "column": 35, - "line": 19 - } + "defaultMessage": "!!!Wallet UTXO distribution", + "description": "Label for the \"Wallet UTXO distribution\" nav button in the wallet navigation.", + "id": "wallet.navigation.utxo" }, { - "defaultMessage": "!!!You are not using the recommended decimal place configuration for this native token.", - "description": "Asset settings recommended pop over content", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts", - "id": "assets.warning.notUsing", - "start": { - "column": 34, - "line": 25 - } + "defaultMessage": "!!!More", + "description": "Label for the \"More\" nav button in the wallet navigation.", + "id": "wallet.navigation.more" } ], - "path": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.json" + "path": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!No results matching your query", - "description": "No results on the WalletTokensList", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts", - "id": "wallet.tokens.list.search.noResults", - "start": { - "column": 13, - "line": 4 - } + "defaultMessage": "!!!The wallet is not responding.", + "description": "Title on the NotResponding dialog.", + "id": "wallet.notResponding.title" }, { - "defaultMessage": "!!!Search Results", - "description": "Search Results on the WalletTokensList", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts", - "id": "wallet.tokens.list.search.searchResults", - "start": { - "column": 17, - "line": 9 - } + "defaultMessage": "!!!The {walletName} wallet is not responding. This is caused by a known but rare issue, which is currently being fixed. Please restart the Cardano node by clicking the button below, which should resolve the issue. If the issue persists, or if it happens again, please submit a support request.", + "description": "Description on the NotResponding dialog.", + "id": "wallet.notResponding.description" }, { - "defaultMessage": "!!!Amount", - "description": "Amount header on the WalletTokensList", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts", - "id": "wallet.tokens.list.column.amount", - "start": { - "column": 16, - "line": 14 - } + "defaultMessage": "!!!Restart Cardano Node", + "description": "Restart Node Button Label on the NotResponding dialog.", + "id": "wallet.notResponding.restartNodeButtonLabel" }, { - "defaultMessage": "!!!Token", - "description": "Token header on the WalletTokensList", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts", - "id": "wallet.tokens.list.column.token", - "start": { - "column": 15, - "line": 19 - } + "defaultMessage": "!!!Submit a support request", + "description": "Submit Support Request Label on the NotResponding dialog", + "id": "wallet.notResponding.submitSupportRequestLabel" }, { - "defaultMessage": "!!!View all tokens", - "description": "View all button label on the WalletTokensList", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts", - "id": "wallet.tokens.list.viewAllButton.label", - "start": { - "column": 22, - "line": 24 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "Submit Support Request Url on the NotResponding dialog", + "id": "wallet.notResponding.submitSupportRequestUrl" } ], - "path": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.json" + "path": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Search tokens", - "description": "Search placeholder for the Wallet Tokens search", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens-search/WalletTokensSearch.tsx", - "id": "wallet.tokens.search.placeholder", - "start": { - "column": 15, - "line": 14 - } - } - ], - "path": "source/renderer/app/components/wallet/tokens/wallet-tokens-search/WalletTokensSearch.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Paper wallet certificate", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" headline.", + "id": "paper.wallet.create.certificate.completion.dialog.headline" + }, { - "defaultMessage": "!!!Favorites", - "description": "Favorites list title label", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens.tsx", - "id": "wallet.tokens.list.favorites.title", - "start": { - "column": 22, - "line": 13 - } + "defaultMessage": "!!!You may wish to fold your paper wallet certificate and glue together the edges to store it securely. Please keep your certificate safe.", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" subtitle.", + "id": "paper.wallet.create.certificate.completion.dialog.subtitle" }, { - "defaultMessage": "!!!Tokens", - "description": "Favorites list title label", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens.tsx", - "id": "wallet.tokens.list.tokens.title", - "start": { - "column": 19, - "line": 18 - } + "defaultMessage": "!!!When you wish to import your wallet back into Daedalus crop any glued edges of the certificate to open it. To check your balance on the paper wallet at any time, you may use the link below. Copy or save the URL to your browser bookmarks to do this easily", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" link instructions.", + "id": "paper.wallet.create.certificate.completion.dialog.linkInstructions" }, { - "defaultMessage": "!!!The balance and transaction history of this wallet is being synced with the blockchain.", - "description": "Syncing transactions message shown during async wallet restore in the wallet send form.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens.tsx", - "id": "wallet.send.form.syncingTransactionsMessage", - "start": { - "column": 18, - "line": 23 - } - } - ], - "path": "source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!To receive funds to your paper wallet simply share your wallet address with others.", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" address instructions.", + "id": "paper.wallet.create.certificate.completion.dialog.addressInstructions" + }, { - "defaultMessage": "!!!Cancel pending transaction", - "description": "Label for the cancel pending transaction button", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionButton.tsx", - "id": "wallet.transaction.pending.cancelTransactionButton", - "start": { - "column": 15, - "line": 8 - } + "defaultMessage": "!!!Cardano explorer link", + "description": "\"Paper wallet create certificate completion dialog\" cardano link label.", + "id": "paper.wallet.create.certificate.completion.dialog.cardanoLinkLabel" }, { - "defaultMessage": "!!!Remove failed transaction", - "description": "Label for the remove failed transaction button", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionButton.tsx", - "id": "wallet.transaction.failed.removeTransactionButton", - "start": { - "column": 15, - "line": 13 - } + "defaultMessage": "!!!copied", + "description": "\"Paper wallet create certificate completion dialog\" address copied.", + "id": "paper.wallet.create.certificate.completion.dialog.addressCopiedLabel" + }, + { + "defaultMessage": "!!!Wallet address", + "description": "\"Paper wallet create certificate completion dialog\" wallet address label.", + "id": "paper.wallet.create.certificate.completion.dialog.addressLabel" + }, + { + "defaultMessage": "!!!Finish", + "description": "\"Paper wallet create certificate completion dialog\" finish button label.", + "id": "paper.wallet.create.certificate.completion.dialog.finishButtonLabel" } ], - "path": "source/renderer/app/components/wallet/transactions/CancelTransactionButton.json" + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Confirm transaction cancellation?", - "description": "Headline for the pending transaction cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx", - "id": "cancel.transaction.confirmation.dialog.headline", - "start": { - "column": 12, - "line": 9 - } + "defaultMessage": "!!!Abort paper wallet certificate creation?", + "description": "Headline for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.headline" }, { - "defaultMessage": "!!!This transaction was submitted to the Cardano network some time ago, but has not been finalized yet. You can try to cancel the transaction now to release the pending funds, but there is a chance that the transaction will be finalized regardless. In this case, the transaction will reappear in your wallet as a completed transaction.", - "description": "Content for the pending transaction cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx", - "id": "cancel.transaction.confirmation.dialog.content1", - "start": { - "column": 12, - "line": 15 - } + "defaultMessage": "!!!At this point, your paper wallet certificate is not complete and verifications steps are not yet done.", + "description": "Content for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.contentPart1" }, { - "defaultMessage": "!!!To ensure that this transfer of funds is processed as soon as possible, we recommend that you cancel this transaction and submit a new one to the network.", - "description": "Content for the pending transaction cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx", - "id": "cancel.transaction.confirmation.dialog.content2", - "start": { - "column": 12, - "line": 22 - } + "defaultMessage": "!!!At this point, your paper wallet certificate is not complete and verifications steps are not yet done.", + "description": "Content for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.contentPart2" }, { - "defaultMessage": "!!!No, keep the transaction pending", - "description": "\"Cancel\" button label for the pending transaction cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx", - "id": "cancel.transaction.confirmation.dialog.button.backLabel", - "start": { - "column": 21, - "line": 29 - } + "defaultMessage": "!!!Back", + "description": "\"Cancel\" button label for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.button.backLabel" }, { - "defaultMessage": "!!!Yes, cancel the transaction", - "description": "\"Confirm\" button label for the pending transaction cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx", - "id": "cancel.transaction.confirmation.dialog.button.confirmLabel", - "start": { - "column": 22, - "line": 35 - } + "defaultMessage": "!!!Abort", + "description": "\"Abort\" button label for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.button.abortLabel" } ], - "path": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.json" + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!All Transactions", - "description": "All Transactions button label.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.allTransactions", - "start": { - "column": 19, - "line": 38 - } - }, - { - "defaultMessage": "!!!Reset Filter", - "description": "Reset Filter button label.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.resetFilter", - "start": { - "column": 15, - "line": 43 - } + "defaultMessage": "!!!Create a paper wallet certificate", + "description": "Headline for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.headline" }, { - "defaultMessage": "!!!Received", - "description": "Incoming filter type.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.incoming", - "start": { - "column": 12, - "line": 48 - } + "defaultMessage": "!!!Create a paper wallet certificate to store funds offline.", + "description": "Subtitle for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.subtitle" }, { - "defaultMessage": "!!!Sent", - "description": "Outgoing filter type.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.outgoing", - "start": { - "column": 12, - "line": 53 - } + "defaultMessage": "!!!The paper wallet certificate will not be associated with any of your existing wallets. A new, empty wallet will be created.", + "description": "subtitle2 for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.subtitle2" }, { - "defaultMessage": "!!!Time", - "description": "Date range of filter.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.dateRange", - "start": { - "column": 13, - "line": 58 - } + "defaultMessage": "!!!Instructions", + "description": "Instructions list label for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.label" }, { - "defaultMessage": "!!!Select time range", - "description": "Select time range indication of filter.", - "end": { - "column": 3, - "line": 67 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.selectTimeRange", - "start": { - "column": 19, - "line": 63 - } + "defaultMessage": "!!!Your printed certificate will include your paper wallet recovery phrase of {paperWalletRecoveryPhraseWordCount} words. Note that your paper wallet recovery phrase is different to the {walletRecoveryPhraseWordCount}-word recovery phrases used to restore your regular Daedalus wallet.", + "description": "Wallet certificate create instructions dialog definition 1.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition1" }, { - "defaultMessage": "!!!Last 7 days", - "description": "Last 7 days range of filter.", - "end": { - "column": 3, - "line": 72 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.last7Days", - "start": { - "column": 13, - "line": 68 - } + "defaultMessage": "!!!For security reasons, the last {paperWalletWrittenWordsCount} words of your paper wallet recovery phrase will not be printed on the paper wallet certificate itself. You will need to write them on your certificate by hand in a moment.", + "description": "Wallet certificate create instructions dialog definition 2.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition2" }, { - "defaultMessage": "!!!Last 30 days", - "description": "Last 30 days range of filter.", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.last30Days", - "start": { - "column": 14, - "line": 73 - } + "defaultMessage": "!!!Use the address on your certificate to send funds to your paper wallet.", + "description": "Wallet certificate create instructions dialog definition 3.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition3" }, { - "defaultMessage": "!!!Last 90 days", - "description": "Last 90 days range of filter.", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.last90Days", - "start": { - "column": 14, - "line": 78 - } + "defaultMessage": "!!!Your paper wallet will be offline so will not be held in Daedalus. To check the balance of the wallet, input the address on the certificate into", + "description": "Wallet certificate create instructions dialog definition 4.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition4" }, { - "defaultMessage": "!!!This year", - "description": "This year date range of filter.", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.thisYear", - "start": { - "column": 12, - "line": 83 - } + "defaultMessage": "!!!Store your certificate containing your paper wallet recovery phrase in a safe place.", + "description": "Wallet certificate create instructions dialog definition 5.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition5" }, { - "defaultMessage": "!!!Custom", - "description": "Custom date range of filter.", - "end": { - "column": 3, - "line": 92 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.custom", - "start": { - "column": 10, - "line": 88 - } + "defaultMessage": "!!!When you click “Save PDF file for printing” you will be prompted to choose a location on your computer where the PDF file will be saved. After that open the saved PDF file and print it.", + "description": "Wallet certificate create instructions dialog - printing instructions.", + "id": "paper.wallet.create.certificate.instructions.dialog.printingInstructions" }, { - "defaultMessage": "!!!Amount of ada", - "description": "Amount range of filter.", - "end": { - "column": 3, - "line": 97 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.amountRange", - "start": { - "column": 15, - "line": 93 - } + "defaultMessage": "!!!Cardano Explorer", + "description": "Wallet certificate create instructions dialog \"Cardano Explorer\" label", + "id": "paper.wallet.create.certificate.instructions.dialog.cardanoExplorer" }, { - "defaultMessage": "!!!Apply", - "description": "Filter button label.", - "end": { - "column": 3, - "line": 102 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx", - "id": "wallet.transaction.filter.apply", - "start": { - "column": 9, - "line": 98 - } - } - ], - "path": "source/renderer/app/components/wallet/transactions/FilterDialog.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!{filtered} out of {total} transactions match your filter.", - "description": "Filter result info.", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/components/wallet/transactions/FilterResultInfo.tsx", - "id": "wallet.transaction.filter.resultInfo", - "start": { - "column": 14, - "line": 7 - } + "defaultMessage": "!!!Save PDF file for printing", + "description": "\"Wallet certificate create instructions dialog\" print button label.", + "id": "paper.wallet.create.certificate.instructions.dialog.button.printLabel" } ], - "path": "source/renderer/app/components/wallet/transactions/FilterResultInfo.json" + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Card payment", - "description": "Transaction type shown for credit card payments.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.type.card", - "start": { - "column": 8, - "line": 33 - } + "defaultMessage": "!!!Verify printed certificate", + "description": "Headline for the \"Paper wallet create certificate print dialog\".", + "id": "paper.wallet.create.certificate.print.dialog.headline" }, { - "defaultMessage": "!!!{typeOfTransaction} transaction", - "description": "Transaction type shown for {currency} transactions.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.type", - "start": { - "column": 8, - "line": 38 - } + "defaultMessage": "!!!Check your paper wallet certificate and make sure everything is readable and correctly printed. You can test this by scanning the QR code with a QR scanner application on your mobile phone.", + "description": "\"Paper wallet create certificate print dialog\" subtitle.", + "id": "paper.wallet.create.certificate.print.dialog.subtitle" }, { - "defaultMessage": "!!!Exchange", - "description": "Transaction type shown for money exchanges between currencies.", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.type.exchange", - "start": { - "column": 12, - "line": 43 - } + "defaultMessage": "!!!Your certificate is not yet complete and does not contain all the data needed to restore your paper wallet. In the next step, you will need to write down an additional {paperWalletWrittenWordsCount} words to your paper wallet recovery phrase.", + "description": "\"Paper wallet create certificate print dialog\" info.", + "id": "paper.wallet.create.certificate.print.dialog.info" }, { - "defaultMessage": "!!!Transaction ID", - "description": "Transaction ID.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.transactionId", - "start": { - "column": 17, - "line": 49 - } + "defaultMessage": "!!!Yes, the paper wallet certificate printed successfully.", + "description": "\"Paper wallet create certificate print dialog\" certificate printed confirmation.", + "id": "paper.wallet.create.certificate.print.dialog.certificatePrintedConfirmation" }, { - "defaultMessage": "!!!Transaction Metadata", - "description": "Transaction Metadata.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.transactionMetadata", - "start": { - "column": 23, - "line": 54 - } + "defaultMessage": "!!!Yes, first {paperWalletPrintedWordsCount} words of the paper wallet recovery phrase are readable.", + "description": "\"Paper wallet create certificate print dialog\" certificate readable confirmation.", + "id": "paper.wallet.create.certificate.print.dialog.certificateReadableConfirmation" }, { - "defaultMessage": "Transaction metadata is not moderated and may contain inappropriate content. Show unmoderated content.", - "description": "", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.transactionMetadataDescription", - "start": { - "column": 34, - "line": 59 - } - }, + "defaultMessage": "!!!Yes, the QR code is scannable.", + "description": "\"Paper wallet create certificate print dialog\" QR scannable confirmation.", + "id": "paper.wallet.create.certificate.print.dialog.qrScannableConfirmation" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Transaction metadata", - "description": "Transaction metadata label", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.metadataLabel", - "start": { - "column": 17, - "line": 65 - } + "defaultMessage": "!!!Complete your certificate", + "description": "Headline for the \"Paper wallet create certificate securing password dialog\".", + "id": "paper.wallet.create.certificate.securingPassword.dialog.headline" }, { - "defaultMessage": "!!!Transaction metadata is not moderated and may contain inappropriate content.", - "description": "Transaction metadata disclaimer", - "end": { - "column": 3, - "line": 75 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.metadataDisclaimer", - "start": { - "column": 22, - "line": 70 - } + "defaultMessage": "!!!To complete your paper wallet certificate you will need to write the remaining {paperWalletWrittenWordsCount} words of your paper wallet recovery phrase on your certificate.", + "description": "\"Paper wallet create certificate securing password dialog\" first info label.", + "id": "paper.wallet.create.certificate.securingPassword.dialog.infoLabel1" }, { - "defaultMessage": "!!!Show unmoderated content", - "description": "Transaction metadata confirmation toggle", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.metadataConfirmationLabel", - "start": { - "column": 29, - "line": 76 - } + "defaultMessage": "!!!The password can optionally be written on the certificate or kept securely in other location. Here is the placeholder on the certificate intended for your password.", + "description": "You may write the remaining words here:", + "id": "paper.wallet.create.certificate.securingPassword.dialog.infoLabel2" }, { - "defaultMessage": "!!!Conversion rate", - "description": "Conversion rate.", - "end": { - "column": 3, - "line": 85 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.conversion.rate", - "start": { - "column": 18, - "line": 81 - } - }, + "defaultMessage": "!!!I have written the remaining {paperWalletWrittenWordsCount} words on the certificate.", + "description": "\"Paper wallet create certificate securing password dialog\" secure password confirmation.", + "id": "paper.wallet.create.certificate.securingPassword.dialog.securingPasswordConfirmation" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!{transactionsType} sent", - "description": "Label \"{transactionsType} sent\" for the transaction.", - "end": { - "column": 3, - "line": 90 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.sent", - "start": { - "column": 8, - "line": 86 - } + "defaultMessage": "!!!Verify certificate", + "description": "Headline for the \"Paper wallet create certificate verification dialog\".", + "id": "paper.wallet.create.certificate.verification.dialog.headline" }, { - "defaultMessage": "!!!{transactionsType} received", - "description": "Label \"{transactionsType} received\" for the transaction.", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.received", - "start": { - "column": 12, - "line": 91 - } + "defaultMessage": "!!!Enter your paper wallet recovery phrase to verify your paper wallet certificate.", + "description": "\"Paper wallet create certificate verification dialog\" subtitle.", + "id": "paper.wallet.create.certificate.verification.dialog.subtitle" }, { - "defaultMessage": "!!!From address", - "description": "From address", - "end": { - "column": 3, - "line": 100 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.address.from", - "start": { - "column": 15, - "line": 96 - } + "defaultMessage": "!!!Make sure you enter all {fullPhraseWordCount} words for the paper wallet recovery phrase, first {printedWordCount} words printed on the certificate followed by the {writtenWordCount} words you wrote by hand.", + "description": "\"Paper wallet create certificate verification dialog\" subtitle.", + "id": "paper.wallet.create.certificate.verification.dialog.instructions" }, { - "defaultMessage": "!!!From addresses", - "description": "From addresses", - "end": { - "column": 3, - "line": 105 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.addresses.from", - "start": { - "column": 17, - "line": 101 - } + "defaultMessage": "!!!Paper wallet recovery phrase", + "description": "\"Paper wallet create certificate verification dialog\" recovery phrase label.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.label" }, { - "defaultMessage": "!!!From rewards", - "description": "From rewards", - "end": { - "column": 3, - "line": 110 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.rewards.from", - "start": { - "column": 15, - "line": 106 - } + "defaultMessage": "!!!Enter recovery phrase", + "description": "\"Paper wallet create certificate verification dialog\" recovery phrase hint.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.hint" }, { - "defaultMessage": "!!!To address", - "description": "To address", - "end": { - "column": 3, - "line": 115 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.address.to", - "start": { - "column": 13, - "line": 111 - } + "defaultMessage": "!!!No results", + "description": "\"Paper wallet create certificate verification dialog\" recovery phrase no results label.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.noResults" }, { - "defaultMessage": "!!!To addresses", - "description": "To addresses", - "end": { - "column": 3, - "line": 120 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.addresses.to", - "start": { - "column": 15, - "line": 116 - } + "defaultMessage": "!!!Clear", + "description": "\"Paper wallet create certificate verification dialog\" button clear label.", + "id": "paper.wallet.create.certificate.verification.dialog.button.clearLabel" }, { - "defaultMessage": "!!!Receiver", - "description": "Receiver", - "end": { - "column": 3, - "line": 125 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.receiverLabel", - "start": { - "column": 17, - "line": 121 - } + "defaultMessage": "!!!I understand that the paper wallet I create will not be stored in Daedalus.", + "description": "\"Paper wallet create certificate verification dialog\" storing understandance confirmation.", + "id": "paper.wallet.create.certificate.verification.dialog.storingUnderstandanceConfirmationLabel" }, { - "defaultMessage": "!!!Token", - "description": "Token label", - "end": { - "column": 3, - "line": 130 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.assetLabel", - "start": { - "column": 14, - "line": 126 - } - }, + "defaultMessage": "!!!I understand that my paper wallet can be recovered only by using my paper wallet certificate.", + "description": "\"Paper wallet create certificate verification dialog\" recovering understandance confirmation.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveringUnderstandanceConfirmationLabel" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Transaction fee", - "description": "Transaction fee", - "end": { - "column": 3, - "line": 135 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.transactionFee", - "start": { - "column": 18, - "line": 131 - } + "defaultMessage": "!!!Available wallet addresses", + "description": "Instructions Title on the wallet \"Receive page\"", + "id": "wallet.receive.page.instructions.instructionsTitle" }, { - "defaultMessage": "!!!Deposit", - "description": "Deposit", - "end": { - "column": 3, - "line": 140 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.deposit", - "start": { - "column": 11, - "line": 136 - } + "defaultMessage": "!!!Share any of these wallet addresses to receive payments in ada or a native Cardano token.", + "description": "Instructions Description on the wallet \"Receive page\"", + "id": "wallet.receive.page.instructions.instructionsDescription" }, { - "defaultMessage": "!!!Transaction amount", - "description": "Transaction amount.", - "end": { - "column": 3, - "line": 145 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.transactionAmount", - "start": { - "column": 21, - "line": 141 - } + "defaultMessage": "!!!Receiving addresses", + "description": "Addresses Title on the wallet \"Receive page\"", + "id": "wallet.receive.page.addresses.addressesTitle" }, { - "defaultMessage": "!!!Multiple tokens", - "description": "Multiple tokens.", - "end": { - "column": 3, - "line": 150 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.multipleTokens", - "start": { - "column": 18, - "line": 146 - } + "defaultMessage": "!!!Show used", + "description": "Label for \"show used\" wallet addresses link on the wallet \"Receive page\"", + "id": "wallet.receive.page.showUsedLabel" }, { - "defaultMessage": "!!!Tokens sent", - "description": "Tokens sent.", - "end": { - "column": 3, - "line": 155 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.tokensSent", - "start": { - "column": 14, - "line": 151 - } - }, + "defaultMessage": "!!!Privacy warning: Please note that all of your receiving addresses include your stake key. When you share a receiving address, the recipient can search the blockchain using your stake key to locate all addresses associated with your wallet, and also discover your wallet balance and transaction history.", + "description": "Privacy warning on the wallet \"Receive page\"", + "id": "wallet.receive.page.instructions.privacyWarning" + } + ], + "path": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Tokens received", - "description": "Tokens received.", - "end": { - "column": 3, - "line": 160 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.tokensReceived", - "start": { - "column": 18, - "line": 156 - } + "defaultMessage": "!!!Share", + "description": "Label for \"Share\" link on the wallet \"Receive page\"", + "id": "wallet.receive.page.shareAddressLabel" + } + ], + "path": "source/renderer/app/components/wallet/receive/AddressActions.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Copy address", + "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", + "id": "wallet.receive.page.copyAddressLabel" }, { - "defaultMessage": "!!!Fetching token data", - "description": "\"Fetching token data...\" message.", - "end": { - "column": 3, - "line": 165 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.fetchingTokenData", - "start": { - "column": 21, - "line": 161 - } + "defaultMessage": "!!!Your wallet address", + "description": "Label for wallet address on the wallet \"Receive page\"", + "id": "wallet.receive.page.walletAddressLabel" }, { - "defaultMessage": "!!!This transaction has been pending for a long time. To release the funds used by this transaction, you can try canceling it.", - "description": "Note to cancel a transaction that has been pending too long", - "end": { - "column": 3, - "line": 171 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.pending.cancelPendingTxnNote", - "start": { - "column": 24, - "line": 166 - } + "defaultMessage": "!!!Share this wallet address to receive payments. To protect your privacy, always use a new address when requesting funds. To generate a new address please enter your spending password and press the ‘Generate a new address’ button.", + "description": "Wallet receive payments instructions on the wallet \"Receive page\"", + "id": "wallet.receive.page.walletReceiveInstructions" }, { - "defaultMessage": "!!!Why should I cancel this transaction?", - "description": "Link to support article for canceling a pending transaction", - "end": { - "column": 3, - "line": 176 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.pending.cancelPendingTxnSupportArticle", - "start": { - "column": 34, - "line": 172 - } + "defaultMessage": "!!!Generate a new address", + "description": "Label for \"Generate new address\" button on the wallet \"Receive page\"", + "id": "wallet.receive.page.generateNewAddressButtonLabel" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360038113814", - "description": "Url to support article for canceling a pending transaction", - "end": { - "column": 3, - "line": 182 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.pending.supportArticleUrl", - "start": { - "column": 21, - "line": 177 - } + "defaultMessage": "!!!Receiving addresses", + "description": "\"Generated addresses\" section title on the wallet \"Receive page\"", + "id": "wallet.receive.page.receivingAddressesSectionTitle" }, { - "defaultMessage": "!!!No addresses", - "description": "Input Addresses label.", - "end": { - "column": 3, - "line": 187 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.noInputAddressesLabel", - "start": { - "column": 25, - "line": 183 - } + "defaultMessage": "!!!Password", + "description": "Placeholder for \"spending password\" on the wallet \"Receive page\"", + "id": "wallet.receive.page.spendingPasswordPlaceholder" + } + ], + "path": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!PDF note", + "description": "placeholder on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.inputLabel" }, { - "defaultMessage": "!!!Open this transaction in Cardano explorer", - "description": "Unresolved Input Addresses link label.", - "end": { - "column": 3, - "line": 192 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.unresolvedInputAddressesLinkLabel", - "start": { - "column": 37, - "line": 188 - } + "defaultMessage": "!!!Add a note to the sender", + "description": "inputPlaceholder on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.inputPlaceholder" }, { - "defaultMessage": "!!!to see these addresses.", - "description": "Unresolved Input Addresses additional label.", - "end": { - "column": 3, - "line": 197 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.unresolvedInputAddressesAdditionalLabel", - "start": { - "column": 43, - "line": 193 - } + "defaultMessage": "!!!Save QR code image", + "description": "saveQRCodeImage on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.saveQRCodeImage" }, { - "defaultMessage": "!!!This transaction was submitted to the Cardano network, but it expired, so it failed. Transactions on the Cardano network have a ‘time to live’ attribute, which passed before the network processed the transaction. Please, remove it to release the funds (UTXOs) used by this transaction to use those funds in another transaction.", - "description": "Note to cancel a transaction that has been failed", - "end": { - "column": 3, - "line": 203 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.failed.cancelFailedTxnNote", - "start": { - "column": 23, - "line": 198 - } + "defaultMessage": "!!!Download as PDF", + "description": "downloadPDFButton on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.downloadPDFButton" }, { - "defaultMessage": "!!!Why should I cancel failed transactions?", - "description": "Link to support article for removing a failed transaction", - "end": { - "column": 3, - "line": 208 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.failed.cancelFailedTxnSupportArticle", - "start": { - "column": 33, - "line": 204 - } + "defaultMessage": "!!!Share wallet address", + "description": "dialogTitle on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.dialogTitle" }, { - "defaultMessage": "!!!Transaction confirmed", - "description": "Transaction state \"confirmed\"", - "end": { - "column": 3, - "line": 215 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.state.confirmed", - "start": { - "column": 26, - "line": 211 - } + "defaultMessage": "!!!Copy address", + "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", + "id": "wallet.receive.dialog.copyAddressLabel" }, { - "defaultMessage": "!!!Transaction pending", - "description": "Transaction state \"pending\"", - "end": { - "column": 3, - "line": 220 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.state.pending", - "start": { - "column": 31, - "line": 216 - } + "defaultMessage": "!!!Receiving address path", + "description": "Tooltip for the receiving address path", + "id": "wallet.receive.dialog.spendingPathTooltip" }, { - "defaultMessage": "!!!Transaction failed", - "description": "Transaction state \"failed\"", - "end": { - "column": 3, - "line": 225 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.state.failed", - "start": { - "column": 30, - "line": 221 - } + "defaultMessage": "!!!Rewards address path", + "description": "Tooltip for the rewards address path", + "id": "wallet.receive.dialog.stakingPathTooltip" }, { - "defaultMessage": "!!!Confirmed", - "description": "Transaction state \"confirmed\"", - "end": { - "column": 3, - "line": 232 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.state.confirmedHeading", - "start": { - "column": 26, - "line": 228 - } + "defaultMessage": "!!!Submit a request to IOHK Support", + "description": "Support request button label", + "id": "wallet.receive.dialog.supportRequestButtonLabel" }, { - "defaultMessage": "!!!Pending", - "description": "Transaction state \"pending\"", - "end": { - "column": 3, - "line": 237 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.state.pendingHeading", - "start": { - "column": 31, - "line": 233 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "Support request link URL", + "id": "wallet.receive.dialog.supportRequestLinkUrl" }, { - "defaultMessage": "!!!Failed", - "description": "Transaction state \"failed\"", - "end": { - "column": 3, - "line": 242 - }, - "file": "source/renderer/app/components/wallet/transactions/Transaction.tsx", - "id": "wallet.transaction.state.failedHeading", - "start": { - "column": 30, - "line": 238 - } - } - ], - "path": "source/renderer/app/components/wallet/transactions/Transaction.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Yes, I am sure I have compared the address displayed in Daedalus with the address displayed on the {deviceType} device by comparing the beginning and ending of the address.", + "description": "Invalid address confirmation checkbox label", + "id": "wallet.receive.dialog.invalidAddressConfirmationLabel" + }, { - "defaultMessage": "!!!No transactions", - "description": "Message shown when wallet has no transactions yet.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactions.tsx", - "id": "wallet.transactions.no.transactions", - "start": { - "column": 18, - "line": 18 - } - } - ], - "path": "source/renderer/app/components/wallet/transactions/WalletTransactions.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Is the address you have verified correct?", + "description": "Verification options section label", + "id": "wallet.receive.dialog.verificationCheckOptionsLabel" + }, { - "defaultMessage": "!!!Transactions", - "description": "Label for the \"Transactions\" header.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactionsHeader.tsx", - "id": "wallet.transactions.header.transactions", - "start": { - "column": 16, - "line": 15 - } + "defaultMessage": "!!!Yes", + "description": "Verification option \"Valid\" label", + "id": "wallet.receive.dialog.verificationCheckOptionValid" }, { - "defaultMessage": "!!!Export CSV", - "description": "Label for the \"Export CSV\" button.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactionsHeader.tsx", - "id": "wallet.transactions.header.exportCSV.button.label", - "start": { - "column": 24, - "line": 20 - } - } - ], - "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsHeader.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!No, I am sure that address displayed in Daedalus is different from the address displayed on my {deviceType} device", + "description": "Verification option \"Invalid\" label", + "id": "wallet.receive.dialog.verificationCheckOptionInvalid" + }, { - "defaultMessage": "!!!Today", - "description": "Label for the \"Today\" label on the wallet summary page.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.tsx", - "id": "wallet.summary.transactionsList.todayLabel", - "start": { - "column": 9, - "line": 21 - } + "defaultMessage": "!!!No, reverify", + "description": "Verification option \"Reverify\" label", + "id": "wallet.receive.dialog.verificationCheckOptionReverify" }, { - "defaultMessage": "!!!Yesterday", - "description": "Label for the \"Yesterday\" label on the wallet summary page.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.tsx", - "id": "wallet.summary.transactionsList.yesterdayLabel", - "start": { - "column": 13, - "line": 26 - } + "defaultMessage": "!!!Daedalus verified the address", + "description": "Daedalus verification status check label", + "id": "wallet.receive.dialog.softwareCheckLabel" }, { - "defaultMessage": "!!!Show more transactions", - "description": "Label for the \"Show more transactions\" button on the wallet summary page.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.tsx", - "id": "wallet.summary.transactionsList.showMoreTransactionsButtonLabel", - "start": { - "column": 35, - "line": 31 - } + "defaultMessage": "!!!You have verified the address", + "description": "User verification status check label", + "id": "wallet.receive.dialog.confirmationCheckLabel" }, { - "defaultMessage": "!!!Your transaction history for this wallet is being synced with the blockchain.", - "description": "Syncing transactions message on async wallet restore.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.tsx", - "id": "wallet.summary.transactionsList.syncingTransactionsMessage", - "start": { - "column": 30, - "line": 37 - } + "defaultMessage": "!!!Please compare the address displayed here on the screen with the address displayed on the {deviceType} device by comparing at least the first 5 characters at the start of the address after the \"addr\" part and at least 5 characters at the end of the address.", + "description": "Address verification instructions", + "id": "wallet.receive.dialog.addressVerificationInstructions" + }, + { + "defaultMessage": "!!!Warning, your copy of Daedalus may be hacked!", + "description": "Invalid address \"Warning\" title", + "id": "wallet.receive.dialog.invalidAddressWarningTitle" + }, + { + "defaultMessage": "!!!You have manually compared the address shown in Daedalus with the address shown on the hardware wallet device and reported that they are different. If this is the case, please contact support and make sure you download and attach logs.", + "description": "Invalid address \"Warning\" description", + "id": "wallet.receive.dialog.invalidAddressWarningDescription" } ], - "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.json" + "path": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Transfer funds", - "description": "Title in the transfer funds form.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.tsx", - "id": "wallet.transferFunds.dialog1.title", - "start": { - "column": 15, - "line": 14 - } + "defaultMessage": "!!!Title", + "description": "Label for the \"Title\" text input in the wallet send form.", + "id": "wallet.send.form.title.label" }, { - "defaultMessage": "!!!From Byron legacy wallet", - "description": "sourceWallet in the transfer funds form.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.tsx", - "id": "wallet.transferFunds.dialog1.sourceWallet", - "start": { - "column": 16, - "line": 19 - } + "defaultMessage": "!!!E.g: Money for Frank", + "description": "Hint inside the \"Receiver\" text input in the wallet send form.", + "id": "wallet.send.form.title.hint" }, { - "defaultMessage": "!!!To Shelley-compatible wallet", - "description": "targetWallet in the transfer funds form.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.tsx", - "id": "wallet.transferFunds.dialog1.targetWallet", - "start": { - "column": 16, - "line": 24 - } + "defaultMessage": "!!!Receiver", + "description": "Label for the \"Receiver\" text input in the wallet send form.", + "id": "wallet.send.form.receiver.label" }, { - "defaultMessage": "!!!Continue", - "description": "buttonLabel in the transfer funds form.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.tsx", - "id": "wallet.transferFunds.dialog1.continueLabel", - "start": { - "column": 15, - "line": 29 - } - } - ], - "path": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Paste an address", + "description": "Hint inside the \"Receiver\" text input in the wallet send form.", + "id": "wallet.send.form.receiver.placeholder" + }, { - "defaultMessage": "!!!Transfer funds from the legacy wallet", - "description": "Title in the transfer funds form.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.title", - "start": { - "column": 15, - "line": 24 - } + "defaultMessage": "!!!Token", + "description": "Label for the \"Token\" number input in the wallet send form.", + "id": "wallet.send.form.asset.label" }, { - "defaultMessage": "!!!Confirm transfer from {sourceWalletName}wallet to the {targetWalletName} wallet.", - "description": "description in the transfer funds form.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.description.label", - "start": { - "column": 15, - "line": 29 - } + "defaultMessage": "!!!Ada", + "description": "Label for the \"Ada\" input in the wallet send form.", + "id": "wallet.send.form.asset.adaLabel" }, { - "defaultMessage": "!!!{sourceWalletName} amount", - "description": "Label Source wallet Amount in the transfer funds form", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.sourceWalletAmount.label", - "start": { - "column": 27, - "line": 35 - } + "defaultMessage": "!!!Remove", + "description": "Label for the \"Remove\" button in the wallet send form.", + "id": "wallet.send.form.button.removeLabel" }, { - "defaultMessage": "!!!Fees", - "description": "Label Fees in the transfer funds form", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.fees.label", - "start": { - "column": 13, - "line": 40 - } + "defaultMessage": "!!!Clear", + "description": "Label for the \"Clear\" button in the wallet send form.", + "id": "wallet.send.form.button.clearLabel" }, { - "defaultMessage": "!!!Total", - "description": "Total Fees in the transfer funds form", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.total.label", - "start": { - "column": 14, - "line": 45 - } + "defaultMessage": "!!!This receiver address belongs to the same wallet from which you are sending funds. If you proceed with this transaction, the transferred funds will remain in this wallet, and you will incur transaction fees, as outlined in Estimated fees.", + "description": "Label for the same wallet tooltip in the wallet send form.", + "id": "wallet.send.form.sameWalletLabel" }, { - "defaultMessage": "!!!Leftovers", - "description": "Label Leftovers in the transfer funds form", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.leftovers.label", - "start": { - "column": 18, - "line": 50 - } + "defaultMessage": "!!!+ Add a token", + "description": "Label for the \"+ Add a token\" button in the wallet send form.", + "id": "wallet.send.form.button.addAssetButtonLabel" }, { - "defaultMessage": "!!!Learn more", - "description": "Label Leftovers in the transfer funds form", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.leftovers.LearnMore.label", - "start": { - "column": 27, - "line": 55 - } + "defaultMessage": "!!!Estimated fees", + "description": "Label for the \"Estimated fees\" number input in the wallet send form.", + "id": "wallet.send.form.estimatedFee.label" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/", - "description": "Label Leftovers in the transfer funds form", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.leftovers.LearnMore.url", - "start": { - "column": 25, - "line": 60 - } + "defaultMessage": "!!!of", + "description": "Label for the \"of\" max ADA value in the wallet send form.", + "id": "wallet.send.form.of.label" }, { - "defaultMessage": "!!!Transfer funds", - "description": "buttonLabel in the transfer funds form.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.label.buttonLabel", - "start": { - "column": 15, - "line": 65 - } + "defaultMessage": "!!!a minimum of {minimumAda} ADA required", + "description": "Label for the min ADA required value in the wallet send form.", + "id": "wallet.send.form.minAdaRequired" }, { - "defaultMessage": "!!!Spending password", - "description": "passphraseFieldPlaceholder in the transfer funds form.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.passphraseFieldPlaceholder", - "start": { - "column": 30, - "line": 70 - } + "defaultMessage": "!!!This transaction requires a minimum of {minimumAda} ADA to be sent.", + "description": "Tooltip for the min ADA required value in the wallet send form.", + "id": "wallet.send.form.minAdaRequiredWithAssetTooltip" }, { - "defaultMessage": "!!!Spending password", - "description": "passphraseLabel in the transfer funds form.", - "end": { - "column": 3, - "line": 79 - }, - "file": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx", - "id": "wallet.transferFunds.dialog2.passphraseLabel", - "start": { - "column": 19, - "line": 75 - } - } - ], - "path": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!A minimum of {minimumAda} ADA needs to be sent with every transaction.", + "description": "Tooltip for the min ADA required value in the wallet send form.", + "id": "wallet.send.form.minAdaRequiredWithNoAssetTooltip" + }, { - "defaultMessage": "!!!Wallet UTXO distribution", - "description": "Title for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.title", - "start": { - "column": 9, - "line": 28 - } + "defaultMessage": "!!!Description", + "description": "Label for the \"description\" text area in the wallet send form.", + "id": "wallet.send.form.description.label" }, { - "defaultMessage": "!!!This wallet contains {formattedWalletAmount} ADA on {walletUtxosAmount} UTXOs (unspent transaction outputs). Examine the histogram below to see the distribution of UTXOs with different amounts of ada.", - "description": "Description for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.description", - "start": { - "column": 15, - "line": 33 - } + "defaultMessage": "!!!You can add a message if you want", + "description": "Hint in the \"description\" text area in the wallet send form.", + "id": "wallet.send.form.description.hint" }, { - "defaultMessage": "!!!This wallet is empty so it does not contain any UTXOs (unspent transaction outputs).", - "description": "Empty wallet description for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.emptyWallet", - "start": { - "column": 15, - "line": 39 - } + "defaultMessage": "!!!Reset", + "description": "Label for the reset button on the wallet send form.", + "id": "wallet.send.form.reset" }, { - "defaultMessage": "!!!Find out more", - "description": "\"Find out more\" link on the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.findOutMoreLink", - "start": { - "column": 19, - "line": 45 - } + "defaultMessage": "!!!Send", + "description": "Label for the send button on the wallet send form.", + "id": "wallet.send.form.send" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360034118013", - "description": "\"Find out more\" link URL on the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 55 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.findOutMoreLinkUrl", - "start": { - "column": 22, - "line": 50 - } + "defaultMessage": "!!!Please enter a valid amount.", + "description": "Error message shown when invalid amount was entered.", + "id": "wallet.send.form.errors.invalidAmount" }, { - "defaultMessage": "!!!amount", - "description": "Label X for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.labelX", - "start": { - "column": 10, - "line": 56 - } + "defaultMessage": "!!!Please enter a title with at least 3 characters.", + "description": "Error message shown when invalid transaction title was entered.", + "id": "wallet.send.form.errors.invalidTitle" }, { - "defaultMessage": "!!!Nº UTXO", - "description": "Label Y for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.labelY", - "start": { - "column": 10, - "line": 61 - } + "defaultMessage": "!!!Calculating fees", + "description": "Label for the \"Calculating fees\" message for amount input field.", + "id": "wallet.send.form.calculatingFeesLabel" }, { - "defaultMessage": "!!!Pending transactions may affect the accuracy of data presented here.
You have {pendingTxnsCount} pending transaction{txnsPlural}.", - "description": "Number of pending transactions for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 72 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx", - "id": "wallet.settings.utxos.pendingTransactions", - "start": { - "column": 23, - "line": 66 - } - } - ], - "path": "source/renderer/app/components/wallet/utxo/WalletUtxo.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!UPDATE", + "description": "Label for the \"UPDATE\" button responsible to set minimum amount required for transaction .", + "id": "wallet.send.form.asset.updateAdaAmountButton" + }, { - "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
{walletAmount} ADA", - "description": "Tooltip for the \"Wallet Utxos - first bar\" screen.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxoTooltip.tsx", - "id": "wallet.settings.utxos.tooltipFirst", - "start": { - "column": 16, - "line": 9 - } + "defaultMessage": "!!!to the minimum of {minimumAda} ADA required", + "description": "Description for the \"UPDATE\" button when ADA amount is less than required ", + "id": "wallet.send.form.updateAdaAmountDescription" }, { - "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
between {previousWalletAmount} and {walletAmount} ADA", - "description": "Tooltip for the \"Wallet Utxos\" screen.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxoTooltip.tsx", - "id": "wallet.settings.utxos.tooltip", - "start": { - "column": 11, - "line": 15 - } + "defaultMessage": "!!!Note: the ada field was automatically updated because this transaction requires a minimum of {minimumAda} ADA.", + "description": "Minimum amount update notice", + "id": "wallet.send.form.minimumAmountNote" }, { - "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
{walletAmount} ADA", - "description": "Tooltip for the \"Wallet Utxos - last bar\" screen.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/wallet/utxo/WalletUtxoTooltip.tsx", - "id": "wallet.settings.utxos.tooltipLast", - "start": { - "column": 15, - "line": 21 - } + "defaultMessage": "!!!Note: the ada field was automatically updated to {adaAmount} ADA because now it fulfills the minimum amount of {minimumAda} ADA for the transaction.", + "description": "Restored ada amount to original user input", + "id": "wallet.send.form.restoredAdaAmount" } ], - "path": "source/renderer/app/components/wallet/utxo/WalletUtxoTooltip.json" + "path": "source/renderer/app/components/wallet/send-form/messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Create a new wallet", - "description": "Title \"Create a new wallet\" in the wallet create form.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.title", - "start": { - "column": 15, - "line": 12 - } + "defaultMessage": "!!!The balance and transaction history of this wallet is being synced with the blockchain.", + "description": "Syncing transactions message shown during async wallet restore in the wallet send form.", + "id": "wallet.send.form.syncingTransactionsMessage" + }, + { + "defaultMessage": "!!!Favorites", + "description": "Favorites list title label", + "id": "wallet.tokens.list.favorites.title" + }, + { + "defaultMessage": "!!!Tokens", + "description": "Favorites list title label", + "id": "wallet.tokens.list.tokens.title" } ], - "path": "source/renderer/app/components/wallet/wallet-create/WalletCreateDialog.json" + "path": "source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Create a new wallet", - "description": "Title \"Create a new wallet\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.title", - "start": { - "column": 15, - "line": 13 - } + "defaultMessage": "!!!Set a password for {walletName} wallet", + "description": "Title for the \"Change wallet password\" dialog when there is no password set.", + "id": "wallet.settings.changePassword.dialog.title.setPassword" }, { - "defaultMessage": "!!!Step {currentStep} of {totalSteps}", - "description": "Step counters in the wallet create dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.stepsCounter", - "start": { - "column": 16, - "line": 18 - } + "defaultMessage": "!!!Change password", + "description": "Title for the \"Change wallet password\" dialog when there is already password set.", + "id": "wallet.settings.changePassword.dialog.title.changePassword" }, { - "defaultMessage": "!!!Instructions", - "description": "Step \"Instructions\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.instructionsStep", - "start": { - "column": 20, - "line": 23 - } - }, + "defaultMessage": "!!!Spending password", + "description": "Label for the \"Spending password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.spendingPasswordLabel" + }, { - "defaultMessage": "!!!Template", - "description": "Step \"Template\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.templateStep", - "start": { - "column": 16, - "line": 28 - } + "defaultMessage": "!!!Current password", + "description": "Label for the \"Current password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.currentPasswordLabel" }, { - "defaultMessage": "!!!Mnemonics", - "description": "Step \"Mnemonics\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.mnemonicsStep", - "start": { - "column": 17, - "line": 33 - } + "defaultMessage": "!!!New password", + "description": "Label for the \"New password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.newPasswordLabel" }, { - "defaultMessage": "!!!Validate", - "description": "Step \"Validate\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.validateStep", - "start": { - "column": 16, - "line": 38 - } + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.repeatPasswordLabel" }, { - "defaultMessage": "!!!Hash & Image", - "description": "Step \"HashImage\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.hashImageStep", - "start": { - "column": 17, - "line": 43 - } + "defaultMessage": "!!!Type current password", + "description": "Placeholder for the \"Current password\" inputs in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.currentPasswordFieldPlaceholder" }, { - "defaultMessage": "!!!Config", - "description": "Step \"Config\" in the wallet create dialog.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx", - "id": "wallet.create.dialog.configStep", - "start": { - "column": 14, - "line": 48 - } + "defaultMessage": "!!!Type new password", + "description": "Placeholder for the \"New password\" inputs in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.newPasswordFieldPlaceholder" + }, + { + "defaultMessage": "!!!Repeat new password", + "description": "Placeholder for the \"Repeat password\" inputs in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.repeatPasswordFieldPlaceholder" } ], - "path": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.json" + "path": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Import wallets", - "description": "Import wallets dialog title", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.title", - "start": { - "column": 9, - "line": 26 - } - }, - { - "defaultMessage": "!!!

This feature enables you to import wallets from the production version of Daedalus, or from the Daedalus state directory.

If you don’t have the complete state directory, then you will need either the ‘Secrets’ or ‘Secrets-1.0’ folder containing the ‘secret.key’ file to be able to import a wallet, although without the complete state directory Daedalus won’t be able to detect your wallet names.

If you don’t have either the ‘Secrets’ or the ‘Secrets-1.0’ folder containing the ‘secret.key’ file, then you cannot import wallets using this feature.

", - "description": "

This feature enables you to import wallets from the production version of Daedalus, or from the Daedalus state directory.

If you don’t have the complete state directory, then you will need either the ‘Secrets’ or ‘Secrets-1.0’ folder containing the ‘secret.key’ file to be able to import a wallet, although without the complete state directory Daedalus won’t be able to detect your wallet names.

If you don’t have either the ‘Secrets’ or the ‘Secrets-1.0’ folder containing the ‘secret.key’ file, then you cannot import wallets using this feature.

", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.description", - "start": { - "column": 15, - "line": 31 - } - }, - { - "defaultMessage": "!!!Select Daedalus state folder:", - "description": "Select Daedalus state folder:", - "end": { - "column": 3, - "line": 42 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.stateFolderLabel", - "start": { - "column": 20, - "line": 38 - } - }, - { - "defaultMessage": "!!!Select Daedalus 'secret.key' file:", - "description": "Select Daedalus 'secret.key' file:", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.secretFileLabel", - "start": { - "column": 19, - "line": 43 - } - }, - { - "defaultMessage": "!!!Import wallets", - "description": "Import wallets", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.buttonLabel", - "start": { - "column": 15, - "line": 48 - } - }, + "defaultMessage": "!!!Delegate", + "description": "Label for the delegate button on wallet settings", + "id": "wallet.settings.delegateWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/DelegateWalletButton.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!No wallets found. Make sure you have selected a Daedalus state directory which contains the ‘Secrets’ or `Secrets-1.0` folder with a `secret.key` file inside.", - "description": "No wallets found. Make sure you have selected a Daedalus state directory which contains the ‘Secrets’ or `Secrets-1.0` folder with a `secret.key` file inside.", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.stateDirNoWallets", - "start": { - "column": 21, - "line": 53 - } + "defaultMessage": "!!!Delete wallet", + "description": "Delete wallet header on the wallet settings page.", + "id": "wallet.settings.deleteWallet.header" }, { - "defaultMessage": "!!!No wallets found. Make sure you have selected a valid `secret.key` file.", - "description": "No wallets found. Make sure you have selected a valid `secret.key` file.", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.secretFileNoWallets", - "start": { - "column": 23, - "line": 60 - } + "defaultMessage": "!!!Once you delete this wallet it will be removed from the Daedalus interface and you will lose access to any remaining funds in the wallet. The only way to regain access after deletion is by restoring it using your wallet recovery phrase.", + "description": "Delete wallet warning explaining the consequences.", + "id": "wallet.settings.deleteWallet.warning1" }, { - "defaultMessage": "!!!Learn more", - "description": "Learn more", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.linkLabel", - "start": { - "column": 13, - "line": 67 - } + "defaultMessage": "!!!You may wish to verify your recovery phrase before deletion to ensure that you can restore this wallet in the future, if desired.", + "description": "Delete wallet warning explaining the consequences.", + "id": "wallet.settings.deleteWallet.warning2" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900000623463", - "description": "\"Learn more\" link URL on the wallet import file dialog", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.linkUrl", - "start": { - "column": 11, - "line": 72 - } - }, + "defaultMessage": "!!!Delete wallet", + "description": "Label for the delete button on wallet settings", + "id": "wallet.settings.deleteWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/DeleteWallet.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Import from:", - "description": "Import from:", - "end": { - "column": 3, - "line": 82 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.importFromLabel", - "start": { - "column": 19, - "line": 78 - } + "defaultMessage": "!!!Export Wallet", + "description": "headline for \"export wallet to file\" dialog.", + "id": "wallet.settings.exportToFile.dialog.headline" }, { - "defaultMessage": "!!!Daedalus state directory", - "description": "Daedalus state directory", - "end": { - "column": 3, - "line": 87 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.stateDirOptionLabel", - "start": { - "column": 23, - "line": 83 - } + "defaultMessage": "!!!You are exporting {walletName} to a file.", + "description": "headline for \"export wallet to file\" dialog.", + "id": "wallet.settings.exportToFile.dialog.introduction" }, { - "defaultMessage": "!!!Daedalus 'secret.key' file", - "description": "Daedalus 'secret.key' file", - "end": { - "column": 3, - "line": 92 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx", - "id": "wallet.import.file.dialog.secretFileOptionLabel", - "start": { - "column": 25, - "line": 88 - } + "defaultMessage": "!!!Export", + "description": "Label for export wallet to file submit button.", + "id": "wallet.settings.exportToFile.dialog.submit.label" } ], - "path": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.json" + "path": "source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Found wallets", - "description": "Select import wallets dialog title", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.title", - "start": { - "column": 9, - "line": 33 - } + "defaultMessage": "!!!ICO Public Key", + "description": "Title for the \"ICO Public Key QR Code\" dialog.", + "id": "wallet.settings.icoPublicKey" }, { - "defaultMessage": "!!!These wallets were found in your Daedalus state directory.

Please select the wallets you want to import.

", - "description": "These wallets were found in your Daedalus state directory. Please select the wallets you want to import.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.description", - "start": { - "column": 15, - "line": 38 - } - }, + "defaultMessage": "!!!Copy ICO public key", + "description": "Copy ICO public key label.", + "id": "wallet.settings.copyICOPublicKey" + } + ], + "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Unnamed wallets", - "description": "unnamedWalletsTitle", - "end": { - "column": 3, - "line": 49 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.unnamedWalletsTitle", - "start": { - "column": 23, - "line": 45 - } + "defaultMessage": "!!!Your wallet's ICO public key enables participation in the initial coin offering presales.", + "description": "ICO public key header on the wallet settings page.", + "id": "wallet.settings.icoPublicKey.description" }, { - "defaultMessage": "!!!Password protected", - "description": "Password protected", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.passwordProtected", - "start": { - "column": 21, - "line": 50 - } - }, + "defaultMessage": "!!!Click the icon on the right to view your ICO public key.", + "description": "ICO public key show instruction.", + "id": "wallet.settings.icoPublicKeyShowInstruction" + } + ], + "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Wallet already exists", - "description": "Wallet already exists", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.walletExists", - "start": { - "column": 16, - "line": 55 - } + "defaultMessage": "!!!Show QR code", + "description": "Show QR code tooltip.", + "id": "wallet.settings.showQRCode" }, { - "defaultMessage": "!!!No password", - "description": "No password", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.noPassword", - "start": { - "column": 14, - "line": 60 - } - }, + "defaultMessage": "!!!Click Reveal on the right-hand side to display the public key of the wallet.", + "description": "Wallet public key show instruction.", + "id": "wallet.settings.walletPublicKeyShowInstruction" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Importing wallet...", - "description": "Importing wallet...", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.importingWallet", - "start": { - "column": 19, - "line": 65 - } + "defaultMessage": "!!!Reveal ICO public key", + "description": "Title \"Choose a stake pool\" on the reveal Wallet Id dialog.", + "id": "wallet.settings.icoPublicKeyDialog.title" }, { - "defaultMessage": "!!!Enter wallet name", - "description": "Enter wallet name", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.walletName", - "start": { - "column": 14, - "line": 70 - } + "defaultMessage": "!!!Please enter your spending password to reveal your ICO’s public key.", + "description": "Description on the reveal Wallet Id dialog.", + "id": "wallet.settings.icoPublicKeyDialog.description" }, { - "defaultMessage": "!!!Name not found", - "description": "Name not found", - "end": { - "column": 3, - "line": 79 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.notFound", - "start": { - "column": 12, - "line": 75 - } - }, + "defaultMessage": "!!!Reveal ICO public key", + "description": "Description on the reveal ICO Id dialog.", + "id": "wallet.settings.icoPublicKeyDialog.button" + } + ], + "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Enter a wallet name first", - "description": "Enter a wallet name first", - "end": { - "column": 3, - "line": 84 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.enterWalletNameTooltip", - "start": { - "column": 26, - "line": 80 - } + "defaultMessage": "!!!Derivation path", + "description": "Tooltip for the derivation path", + "id": "wallet.settings.dialog.derivationPathTooltip" }, { - "defaultMessage": "!!!Daedalus supports up to {maxWalletsCount} wallets. You will need to remove another wallet before you can import this one.", - "description": "Max number of wallets reached", - "end": { - "column": 3, - "line": 90 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.maxWalletsReachedTooltip", - "start": { - "column": 28, - "line": 85 - } + "defaultMessage": "!!!Wallet Public Key", + "description": "Title for the \"Wallet Public Key QR Code\" dialog.", + "id": "wallet.settings.walletPublicKey" }, { - "defaultMessage": "!!!Wallet imported", - "description": "Wallet imported", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.walletImported", - "start": { - "column": 18, - "line": 91 - } - }, + "defaultMessage": "!!!Copy public key", + "description": "Copy public key label.", + "id": "wallet.settings.copyWalletPublicKey" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/settings/PublicKeyQRCodeDialogContainer.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Import selected wallets", - "description": "Import selected wallets", - "end": { - "column": 3, - "line": 100 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.buttonLabel", - "start": { - "column": 15, - "line": 96 - } + "defaultMessage": "!!!Set a password", + "description": "Label for the \"Set a password\" button in the set wallet password dialog.", + "id": "wallet.settings.setWalletPassword.dialog.setPasswordButton" }, { - "defaultMessage": "!!!Learn more", - "description": "Learn more", - "end": { - "column": 3, - "line": 105 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.linkLabel", - "start": { - "column": 13, - "line": 101 - } + "defaultMessage": "!!!To keep your wallet secure and start using it in Daedalus, you need to set a spending password.", + "description": "Message for the \"Set a password\" button in the set wallet password dialog.", + "id": "wallet.settings.setWalletPassword.dialog.setPasswordMessage" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900000623463", - "description": "\"Learn more\" link URL on the wallet import file dialog", - "end": { - "column": 3, - "line": 111 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.linkUrl", - "start": { - "column": 11, - "line": 106 - } - }, + "defaultMessage": "!!!Your wallet is not protected with a password", + "description": "Title for the \"Set wallet password\" dialog when there is not password set.", + "id": "wallet.settings.setWalletPassword.dialog.setPasswordTitle" + } + ], + "path": "source/renderer/app/components/wallet/settings/SetWalletPassword.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Close window", - "description": "Close window", - "end": { - "column": 3, - "line": 116 - }, - "file": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx", - "id": "wallet.select.import.dialog.closeWindow", - "start": { - "column": 15, - "line": 112 - } + "defaultMessage": "!!!Undelegate", + "description": "Label for the undelegate button on wallet settings", + "id": "wallet.settings.undelegateWalletButtonLabel" } ], - "path": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.json" + "path": "source/renderer/app/components/wallet/settings/UndelegateWalletButton.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Name your restored wallet and set a spending password to keep your wallet secure.", - "description": "Description1 for Configuration Step", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.description1", - "start": { - "column": 16, - "line": 29 - } + "defaultMessage": "!!!Undelegate", + "description": "Title for the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.title" }, { - "defaultMessage": "!!!Wallet names and spending passwords are only stored locally and are not stored on the blockchain. You can give your restored wallet a new name and set a new spending password, you don’t need to match the wallet name and spending password you were using before. Only the recovery phrase from your original wallet is needed to restore a wallet.", - "description": "Description2 for Configuration Step", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.description2", - "start": { - "column": 16, - "line": 35 - } + "defaultMessage": "!!!Undelegate", + "description": "Label for the \"Undelegate\" button in the undelegate wallet dialog.", + "id": "wallet.settings.undelegate.dialog.confirmButtonLabel" }, { - "defaultMessage": "!!!Wallet name", - "description": "Label for Wallet Name Input", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.input.walletName.label", - "start": { - "column": 19, - "line": 41 - } + "defaultMessage": "!!!

The stake from your wallet {walletName} is currently delegated to the [{stakePoolTicker}] {stakePoolName} stake pool.

Do you want to undelegate your stake and stop earning rewards?

", + "description": "Description of current delegation of wallet in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.descriptionWithTicker" }, { - "defaultMessage": "!!!Name the wallet you are restoring", - "description": "Placeholder for Wallet Name Input", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.input.walletName.placeholder", - "start": { - "column": 25, - "line": 46 - } + "defaultMessage": "!!!

The stake from your wallet {walletName} is currently delegated to the {stakePoolTicker} stake pool.

Do you want to undelegate your stake and stop earning rewards?

", + "description": "Description of current delegation of wallet in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.descriptionWithUnknownTicker" }, { - "defaultMessage": "!!!Enter password", - "description": "Label for the \"Wallet password\" input in the wallet restore dialog.", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.input.spendingPassword.label", - "start": { - "column": 25, - "line": 51 - } + "defaultMessage": "!!!unknown", + "description": "unknown stake pool label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.unknownStakePoolLabel" }, { - "defaultMessage": "!!!Repeat password", - "description": "Label for the \"Repeat password\" input in the wallet restore dialog.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.input.repeatPassword.label", - "start": { - "column": 23, - "line": 57 - } + "defaultMessage": "!!!I understand that I am not supporting the Cardano network when my stake is undelegated.", + "description": "Notice to confirm if the user understands unsupporting Cardano network after undelegation", + "id": "wallet.settings.undelegate.dialog.confirmUnsupportNotice" }, { - "defaultMessage": "!!!Password", - "description": "Placeholder for the \"Password\" inputs in the wallet restore dialog.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.input.passwordFields.placeholder", - "start": { - "column": 29, - "line": 63 - } + "defaultMessage": "!!!I understand that I will not be eligible to earn rewards when my stake is undelegated.", + "description": "Notice to confirm if the user understands non-earning rewards after undelegation", + "id": "wallet.settings.undelegate.dialog.confirmIneligibleNotice" }, { - "defaultMessage": "!!!Continue", - "description": "Placeholder for the dialog \"Continue\" button", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.restore.dialog.step.configuration.continueButtonLabel", - "start": { - "column": 23, - "line": 70 - } + "defaultMessage": "!!!Fees", + "description": "Fees label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.feesLabel" }, { - "defaultMessage": "!!!It is really good to use Password Manager apps to improve security. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris mattis diam non nulla sollicitudin, ac ultrices purus luctus.", - "description": "Tooltip for the password input in the create wallet dialog.", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx", - "id": "wallet.dialog.passwordTooltip", - "start": { - "column": 19, - "line": 75 - } - } - ], - "path": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Enter word #{wordNumber}", - "description": "Placeholder for the mnemonics autocomplete.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx", - "id": "wallet.restore.dialog.step.mnemonics.autocomplete.placeholder", - "start": { - "column": 27, - "line": 23 - } + "defaultMessage": "!!!Deposits reclaimed", + "description": "Deposits reclaimed label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.depositLabel" }, { - "defaultMessage": "!!!Enter your 12, 18 or 24-word recovery phrase", - "description": "Placeholder for the multi-length mnemonics autocomplete.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx", - "id": "wallet.restore.dialog.step.mnemonics.autocomplete.multiLengthPhrase.placeholder", - "start": { - "column": 33, - "line": 28 - } + "defaultMessage": "!!!Spending password", + "description": "Spending password label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.spendingPasswordLabel" }, { - "defaultMessage": "!!!No results", - "description": "\"No results\" message for the mnemonics autocomplete search results.", - "end": { - "column": 3, - "line": 39 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx", - "id": "wallet.restore.dialog.step.mnemonics.autocomplete.noResults", - "start": { - "column": 25, - "line": 34 - } + "defaultMessage": "!!!Type your spending password here", + "description": "Spending password placeholder in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.spendingPasswordPlaceholder" }, { - "defaultMessage": "!!!Check recovery phrase", - "description": "Label for the mnemonics Continue button.", - "end": { - "column": 3, - "line": 44 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx", - "id": "wallet.restore.dialog.step.mnemonics.autocomplete.continueButtonLabel", - "start": { - "column": 23, - "line": 40 - } + "defaultMessage": "!!!Incorrect spending password.", + "description": "Label for password error in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.passwordError" }, { - "defaultMessage": "!!!Invalid recovery phrase", - "description": "Label for invalid recovery phrase", - "end": { - "column": 3, - "line": 50 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx", - "id": "wallet.restore.dialog.step.mnemonics.autocomplete.invalidRecoveryPhrase", - "start": { - "column": 25, - "line": 45 - } + "defaultMessage": "!!!Calculating fees", + "description": "\"Calculating fees\" message in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.calculatingFees" } ], - "path": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.json" + "path": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Close", - "description": "Label for Close button on the wallet restore \"success\" step dialog.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.tsx", - "id": "wallet.restore.dialog.step.success.dialog.close", - "start": { - "column": 20, - "line": 18 - } + "defaultMessage": "!!!Wallet undelegated", + "description": "Title for the \"Undelegate Result\" dialog.", + "id": "wallet.settings.undelegate.result.dialog.title" }, { - "defaultMessage": "!!!Your wallet has been successfully restored.", - "description": "Description \"line 1\" on the wallet restore \"success\" step dialog.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.tsx", - "id": "wallet.restore.dialog.step.success.dialog.description.line1", - "start": { - "column": 20, - "line": 24 - } + "defaultMessage": "!!!The stake from your wallet {walletName} is no longer delegated and you will soon stop earning rewards for this wallet.", + "description": "Description 1 for the \"Undelegate Result\" dialog.", + "id": "wallet.settings.undelegate.result.dialog.description1" }, { - "defaultMessage": "!!!Restored wallets should have all the funds and transaction history of the original wallet. If your restored wallet does not have the funds and transaction history you were expecting, please check that you have the correct wallet recovery phrase for the wallet you were intending to restore.", - "description": "Description \"line 2\" on the wallet restore \"success\" step dialog.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.tsx", - "id": "wallet.restore.dialog.step.success.dialog.description.line2", - "start": { - "column": 20, - "line": 30 - } - }, - { - "defaultMessage": "!!!If your restored wallet is empty, but you were expecting it to have funds, please check that you used the correct wallet recovery phrase during the restoration process.", - "description": "Description \"line 3\" on the wallet restore \"success\" step dialog.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.tsx", - "id": "wallet.restore.dialog.step.success.dialog.description.line3", - "start": { - "column": 20, - "line": 37 - } + "defaultMessage": "!!!Your new delegation preferences are now posted on the blockchain and will take effect after both the current and next Cardano epochs have completed in {timeUntilNextEpochStart}. During this time, your previous delegation preferences are still active.", + "description": "Description 2 for the \"Undelegate Result\" dialog.", + "id": "wallet.settings.undelegate.result.dialog.description2" } ], - "path": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.json" + "path": "source/renderer/app/components/wallet/settings/UndelegateWalletSuccessDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!What kind of wallet would you like to restore?", - "description": "Label for the \"labelwalletKind\" checkbox.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.walletKind", - "start": { - "column": 19, - "line": 26 - } - }, - { - "defaultMessage": "!!!Daedalus wallet", - "description": "Label for the \"labelWalletKindDaedalus\" checkbox.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.walletKindDaedalus", - "start": { - "column": 27, - "line": 31 - } - }, - { - "defaultMessage": "!!!Yoroi wallet", - "description": "Label for the \"labelWalletKindYoroi\" checkbox.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.walletKindYoroi", - "start": { - "column": 24, - "line": 36 - } - }, - { - "defaultMessage": "!!!Hardware wallet", - "description": "Label for the \"labelWalletKindHardware\" checkbox.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.walletKindHardware", - "start": { - "column": 27, - "line": 41 - } - }, - { - "defaultMessage": "!!!What kind of Daedalus wallet would you like to restore?", - "description": "Label for the \"labelDaedalusWalletKind\" checkbox.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind", - "start": { - "column": 27, - "line": 46 - } + "defaultMessage": "!!!Unpair wallet", + "description": "Unpair wallet header on the wallet settings page.", + "id": "wallet.settings.unpairWallet.header" }, { - "defaultMessage": "!!!12 words (Byron legacy wallet)", - "description": "Label for the \"labelDaedalusWalletKind12WordByron\" checkbox.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind12WordByron", - "start": { - "column": 38, - "line": 52 - } + "defaultMessage": "!!!Once you unpair this wallet it will be removed from the Daedalus interface and you will lose access to any remaining funds in the wallet. The only way to regain access after deletion is by restoring it using your wallet recovery phrase.", + "description": "Unpair wallet warning explaining the consequences.", + "id": "wallet.settings.unpairWallet.warning" }, { - "defaultMessage": "!!!15 words (Incentivized Testnet Rewards wallet)", - "description": "Label for the \"labelDaedalusWalletKind15WordShelley\" checkbox.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind15WordShelley", - "start": { - "column": 40, - "line": 58 - } - }, + "defaultMessage": "!!!Unpair wallet", + "description": "Label for the unpair button on wallet settings", + "id": "wallet.settings.unpairWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/UnpairWallet.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!24 words (Shelley wallet)", - "description": "Label for the \"labelDaedalusWalletKind24WordShelley\" checkbox.", - "end": { - "column": 3, - "line": 72 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind24WordShelley", - "start": { - "column": 40, - "line": 66 - } + "defaultMessage": "!!!Reveal wallet public key", + "description": "Title \"Choose a stake pool\" on the reveal Wallet Id dialog.", + "id": "wallet.settings.walletPublicKeyDialog.title" }, { - "defaultMessage": "!!!27 words - paper wallet (Byron legacy wallet)", - "description": "Label for the \"labelDaedalusWalletKind27WordPaper\" checkbox.", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind27WordPaper", - "start": { - "column": 38, - "line": 73 - } + "defaultMessage": "!!!Please enter your spending password to reveal your wallet’s public key.", + "description": "Description on the reveal Wallet Id dialog.", + "id": "wallet.settings.walletPublicKeyDialog.description" }, { - "defaultMessage": "!!!What kind of Yoroi wallet would you like to restore?", - "description": "Label for the \"labelYoroiWalletKind\" checkbox.", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKind", - "start": { - "column": 24, - "line": 79 - } - }, + "defaultMessage": "!!!Reveal wallet public key", + "description": "Description on the reveal Wallet Id dialog.", + "id": "wallet.settings.walletPublicKeyDialog.button" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletPublicKeyDialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!15 words (Byron legacy wallet)", - "description": "Label for the \"labelDaedalusWalletKind15WordByron\" checkbox.", - "end": { - "column": 3, - "line": 89 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKindByronLegacy15Word", - "start": { - "column": 35, - "line": 84 - } + "defaultMessage": "!!!Wallet recovery phrase verification", + "description": "Label for the recoveryPhraseStep1Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Title" }, { - "defaultMessage": "!!!15 words (Shelley wallet)", - "description": "Label for the \"labelDaedalusWalletKind15WordShelley\" checkbox.", - "end": { - "column": 3, - "line": 96 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKindShelley15Word", - "start": { - "column": 37, - "line": 90 - } + "defaultMessage": "!!!To verify that you have the correct recovery phrase for this wallet, you can enter it on the following screen.", + "description": "Label for the recoveryPhraseStep1Paragraph1 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Paragraph1" }, { - "defaultMessage": "!!!What kind of hardware wallet would you like to restore?", - "description": "Label for the \"labelHardwareWalletKind\" checkbox.", - "end": { - "column": 3, - "line": 102 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKind", - "start": { - "column": 27, - "line": 97 - } + "defaultMessage": "!!!Are you being watched? Please make sure that nobody can see your screen while you are entering your wallet recovery phrase.", + "description": "Label for the recoveryPhraseStep1Paragraph2 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Paragraph2" }, { - "defaultMessage": "!!!24 words - Ledger (Byron legacy wallet)", - "description": "Label for the \"labelHardwareWalletKindLedger\" checkbox.", - "end": { - "column": 3, - "line": 107 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKindLedger", - "start": { - "column": 33, - "line": 103 - } - }, + "defaultMessage": "!!!Continue", + "description": "Label for the recoveryPhraseStep1Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Button" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!24 words - Trezor (Byron legacy wallet)", - "description": "Label for the \"labelHardwareWalletKindTrezor\" checkbox.", - "end": { - "column": 3, - "line": 112 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKindTrezor", - "start": { - "column": 33, - "line": 108 - } + "defaultMessage": "!!!Wallet recovery phrase verification", + "description": "Label for the recoveryPhraseStep2Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Title" }, { - "defaultMessage": "!!!Hardware wallets store your private keys securely on a physical device so they are immune to common computer threats such as viruses and software bugs. Recovery phrases for hardware wallets should always be kept offline. By entering your hardware wallet recovery phrase in Daedalus, you expose your hardware wallet private keys to the security risks associated with computers and software.", - "description": "Label for the \"hardwareWalletDisclaimer1\" disclaimer.", - "end": { - "column": 3, - "line": 118 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer1", - "start": { - "column": 29, - "line": 113 - } + "defaultMessage": "!!!Please enter your wallet recovery phrase. Make sure you enter the words in the correct order.", + "description": "Label for the recoveryPhraseStep2Description on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Description" }, { - "defaultMessage": "!!!All of your assets held on your hardware wallet device are associated with the same wallet recovery phrase and its corresponding private key. If you hold assets other than ada on your hardware wallet device, you expose all of those assets to security risks.", - "description": "Label for the \"hardwareWalletDisclaimer2\" disclaimer.", - "end": { - "column": 3, - "line": 124 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer2", - "start": { - "column": 29, - "line": 119 - } + "defaultMessage": "!!!Recovery phrase", + "description": "Label for the recoveryPhraseStep2Subtitle on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Subtitle" }, { - "defaultMessage": "!!!We strongly recommend that you delete the Byron legacy wallet that was restored from your hardware wallet once you have moved funds into a Shelley wallet.", - "description": "Label for the \"hardwareWalletDisclaimer3\" disclaimer.", - "end": { - "column": 3, - "line": 130 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer3", - "start": { - "column": 29, - "line": 125 - } + "defaultMessage": "!!!Verify", + "description": "Label for the recoveryPhraseStep2Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Button" }, { - "defaultMessage": "!!!I understand and accept responsibility for the security concerns of restoring a hardware wallet on a computer.", - "description": "Label for the \"hardwareWalletCheckbox1\" disclaimer.", - "end": { - "column": 3, - "line": 136 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox1", - "start": { - "column": 27, - "line": 131 - } + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder \"Enter word #{wordNumber}\" for the recovery phrase input on the verification dialog.", + "id": "wallet.settings.recoveryPhraseInputPlaceholder" }, { - "defaultMessage": "!!!I understand that I should delete the Byron legacy wallet I am restoring from a hardware wallet after moving funds to a Shelley wallet.", - "description": "Label for the \"hardwareWalletCheckbox2\" disclaimer.", - "end": { - "column": 3, - "line": 142 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox2", - "start": { - "column": 27, - "line": 137 - } + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "wallet.settings.recoveryPhraseInputNoResults" }, { - "defaultMessage": "!!!I understand that I am exposing all of the assets that are stored on my hardware wallet device, and not just ada, to security risks.", - "description": "Label for the \"hardwareWalletCheckbox2\" disclaimer.", - "end": { - "column": 3, - "line": 148 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx", - "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox3", - "start": { - "column": 27, - "line": 143 - } + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "wallet.settings.recoveryPhraseStep2InvalidMnemonics" } ], - "path": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.json" + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Are you sure?", - "description": "Headline for the wallet restoration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.tsx", - "id": "wallet.restore.dialog.confirmation.headline", - "start": { - "column": 12, - "line": 9 - } + "defaultMessage": "!!!verification successful", + "description": "Label for the recoveryPhraseStep3Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Title" }, { - "defaultMessage": "!!!You haven’t submitted this information yet. If you close the window now, you will lose your progress and have to start again.", - "description": "Content for the wallet restoration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.tsx", - "id": "wallet.restore.dialog.confirmation.content", - "start": { - "column": 11, - "line": 15 - } + "defaultMessage": "!!!You have verified the recovery phrase for this wallet. You can use it at any time to recover the funds in this wallet on another computer, even if using a different version of Daedalus.", + "description": "Label for the recoveryPhraseStep3Paragraph1 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Paragraph1" }, { - "defaultMessage": "!!!Back to wallet restoration", - "description": "\"Cancel\" button label for the wallet restoration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.tsx", - "id": "wallet.restore.dialog.confirmation.button.cancelButtonLabel", - "start": { - "column": 21, - "line": 22 - } + "defaultMessage": "!!!Please make sure to return your wallet recovery phrase to a secure place for safekeeping. Anyone with access to your wallet recovery phrase can take control of your funds.", + "description": "Label for the recoveryPhraseStep3Paragraph2 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Paragraph2" }, { - "defaultMessage": "!!!Close window", - "description": "\"Abort\" button label for the wallet restoration cancellation confirmation dialog.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.tsx", - "id": "wallet.restore.dialog.confirmation.button.confirmButtonLabel", - "start": { - "column": 22, - "line": 28 - } + "defaultMessage": "!!!Finish", + "description": "Label for the recoveryPhraseStep3Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Button" } ], - "path": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.json" + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Restore a wallet", - "description": "Title \"Create a new wallet\" in the wallet restore form.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.title", - "start": { - "column": 15, - "line": 15 - } + "defaultMessage": "!!!verification failure", + "description": "Label for the recoveryPhraseStep4Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Title" }, { - "defaultMessage": "!!!Restore a wallet", - "description": "Title \"Create a new wallet\" in the wallet restore form.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.titleSuccess", - "start": { - "column": 22, - "line": 20 - } + "defaultMessage": "!!!The wallet recovery phrase you have entered does not match the recovery phrase of this wallet. Make sure you have entered the wallet recovery phrase which was written down during the wallet creation process for this wallet and make sure the words are in the correct order.", + "description": "Label for the recoveryPhraseStep4Paragraph1 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Paragraph1" }, { - "defaultMessage": "!!!Step {currentStep} of {totalSteps}", - "description": "Step counters in the wallet restore dialog.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.stepsCounter", - "start": { - "column": 16, - "line": 25 - } - } - ], - "path": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!If you are unable to verify your wallet recovery phrase, you should create a new wallet and move all of the funds from this wallet to the new wallet. If you do this, make sure you keep the wallet recovery phrase for the new wallet safe and secure.", + "description": "Label for the recoveryPhraseStep4Paragraph2 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Paragraph2" + }, { - "defaultMessage": "!!!Type", - "description": "Step \"Type\" in the wallet restore dialog.", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreSteps.tsx", - "id": "wallet.restore.dialog.typeStep", - "start": { - "column": 12, - "line": 13 - } + "defaultMessage": "!!!Verify recovery phrase again", + "description": "Label for the recoveryPhraseStep4Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Button" }, { - "defaultMessage": "!!!Recovery Phrase", - "description": "Step \"Recovery Phrase\" in the wallet restore dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreSteps.tsx", - "id": "wallet.restore.dialog.mnemonicsStep", - "start": { - "column": 17, - "line": 18 - } + "defaultMessage": "!!!Read support portal article", + "description": "Label for the recoveryPhraseStep4SupportTitle on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4SupportTitle" }, { - "defaultMessage": "!!!Configuration", - "description": "Step \"Configuration\" in the wallet restore dialog.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreSteps.tsx", - "id": "wallet.restore.dialog.configurationStep", - "start": { - "column": 21, - "line": 23 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360035341914", + "description": "Label for the recoveryPhraseStep4SupportUrl on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4SupportUrl" } ], - "path": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreSteps.json" + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Add wallet", - "description": "Label for the \"Add wallet\" title on the wallet add dialog.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.title.label", - "start": { - "column": 9, - "line": 15 - } + "defaultMessage": "!!!Do you have your wallet recovery phrase?", + "description": "Label for the recoveryPhraseVerificationTitle on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.title" }, { - "defaultMessage": "!!!Create", - "description": "Label for the \"Create\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.create.label", - "start": { - "column": 15, - "line": 20 - } + "defaultMessage": "!!!Funds in this wallet can only be recovered using the correct wallet recovery phrase, which is a unique {wordCount}-word string you were shown and asked to write down when creating this wallet. You can re-enter your wallet recovery phrase to verify that you have the correct recovery phrase for this wallet.", + "description": "Label for the recoveryPhraseVerificationDescription on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.description" }, { - "defaultMessage": "!!!Create a new wallet", - "description": "Description for the \"Create a new wallet\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.create.description", - "start": { - "column": 21, - "line": 25 - } + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in {timeUntilWarning}.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkTimeUntil" }, { - "defaultMessage": "!!!Join", - "description": "Label for the \"Join\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.join.label", - "start": { - "column": 13, - "line": 31 - } + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few months.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkFewMonths" }, { - "defaultMessage": "!!!Join a shared wallet with up to 5 people", - "description": "Description for the \"Join\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.join.description", - "start": { - "column": 19, - "line": 36 - } + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few weeks.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkFewWeeks" }, { - "defaultMessage": "!!!Pair", - "description": "Label for the \"Connect\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.connect.label", - "start": { - "column": 16, - "line": 41 - } + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few days.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkFewDays" }, { - "defaultMessage": "!!!Pair a hardware wallet device", - "description": "Description for the \"Connect\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 51 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.connect.description", - "start": { - "column": 22, - "line": 46 - } + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase.", + "description": "Label for the recoveryPhraseVerificationNeverWarning on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverWarning" }, { - "defaultMessage": "!!!Restore", - "description": "Label for the \"Restore\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 56 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.restore.label", - "start": { - "column": 16, - "line": 52 - } + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase.", + "description": "Label for the recoveryPhraseVerificationNeverNotification on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverNotification" }, { - "defaultMessage": "!!!Restore a wallet or paper wallet using wallet recovery phrase", - "description": "Description for the \"Restore\" button with paper wallet certificate on the wallet add dialog.", - "end": { - "column": 3, - "line": 63 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.restore.withCertificate.description", - "start": { - "column": 37, - "line": 57 - } + "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}.", + "description": "Label for the recoveryPhraseVerificationCheckedOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.checkedOk" }, { - "defaultMessage": "!!!Restore wallet from backup", - "description": "Description for the \"Restore\" button without paper wallet certificate on the wallet add dialog.", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.restore.withoutCertificate.description", - "start": { - "column": 40, - "line": 64 - } + "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}.", + "description": "Label for the recoveryPhraseVerificationCheckedWarning on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.checkedWarning" }, { - "defaultMessage": "!!!Import", - "description": "Label for the \"Import\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.import.label", - "start": { - "column": 15, - "line": 70 - } + "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}. We recommend that you verify your wallet recovery phrase again.", + "description": "Label for the recoveryPhraseVerificationCheckedNotification on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.checkedNotification" }, { - "defaultMessage": "!!!Import wallets from an earlier version of Daedalus or the Daedalus state directory", - "description": "Description for the \"Import\" button on the wallet add dialog.", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.import.description", - "start": { - "column": 21, - "line": 75 - } + "defaultMessage": "!!!If this wallet was restored from a paper wallet certificate, you cannot use this feature to verify your wallet recovery phrase. Paper wallet recovery phrase to regular wallet recovery phrase conversion will be available in Daedalus soon.", + "description": "Description for the paperWallet instructions on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.paperWalletDescription" }, { - "defaultMessage": "!!!Wallet restoration is currently in progress. Until it completes, it is not possible to restore or import new wallets.", - "description": "Restore notification message shown during async wallet restore on the wallet add screen.", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.restoreNotificationMessage", - "start": { - "column": 30, - "line": 82 - } + "defaultMessage": "!!!Paper wallet", + "description": "Title for the paperWallet instructions on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.paperWalletTitle" }, { - "defaultMessage": "!!!You have reached the maximum of 50 wallets.
No more wallets can be added.", - "description": "\"Maximum number of wallets reached\" notification message shown on the wallet add screen if user has 50 wallets.", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/wallet/WalletAdd.tsx", - "id": "wallet.add.dialog.maxNumberOfWalletsNotificationMessage", - "start": { - "column": 41, - "line": 89 - } + "defaultMessage": "!!!Verify wallet recovery phrase", + "description": "Label for the recoveryPhraseVerificationButton on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.button" + }, + { + "defaultMessage": "!!!ヶ月,か月", + "description": "Label for the recoveryPhraseVerificationButton on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.timeUntilWarningReplacement" } ], - "path": "source/renderer/app/components/wallet/WalletAdd.json" + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Pair a hardware wallet device", - "description": "Title \"Connect a hardware wallet device\" in the connect wallet dialog.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.title", - "start": { - "column": 15, - "line": 38 - } + "defaultMessage": "!!!Transaction assurance security level", + "description": "Label for the \"Transaction assurance security level\" dropdown.", + "id": "wallet.settings.assurance" }, { - "defaultMessage": "!!!Cancel", - "description": "Label for the \"Cancel\" button in the connect wallet dialog", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.button.cancel", - "start": { - "column": 16, - "line": 44 - } + "defaultMessage": "!!!Undelegating your wallet", + "description": "Undelegate wallet header on the wallet settings page.", + "id": "wallet.settings.undelegateWallet.header" }, { - "defaultMessage": "!!!

Daedalus currently supports Ledger Nano S, Ledger Nano X, and Trezor Model T hardware wallet devices.

If you are pairing your device with Daedalus for the first time, please follow the instructions below.

If you have already paired your device with Daedalus, you don’t need to repeat this step. Just connect your device when you need to confirm a transaction.

", - "description": "Follow instructions label", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.instructions", - "start": { - "column": 16, - "line": 49 - } + "defaultMessage": "!!!If you are planning to stop using this wallet and remove all funds, you should first undelegate it to recover your 2 ada deposit. You will continue getting delegation rewards during the three Cardano epochs after undelegating your wallet.", + "description": "Undelegate wallet warning explaining the consequences.", + "id": "wallet.settings.undelegateWallet.warning" }, { - "defaultMessage": "!!!

Daedalus currently supports only Trezor Model T hardware wallet devices.

If you are pairing your device with Daedalus for the first time, please follow the instructions below.

If you have already paired your device with Daedalus, you don’t need to repeat this step. Just connect your device when you need to confirm a transaction.

", - "description": "Follow instructions label", - "end": { - "column": 3, - "line": 60 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.instructionsTrezorOnly", - "start": { - "column": 26, - "line": 55 - } + "defaultMessage": "!!!This wallet is synchronizing with the blockchain, so this wallet's delegation status is currently unknown, and undelegation is not possible.", + "description": "Undelegate wallet disabled warning explaining why it is disabled.", + "id": "wallet.settings.undelegateWallet.disabledWarning" }, { - "defaultMessage": "!!!If you are experiencing issues pairing your hardware wallet device, please {supportLink}", - "description": "Connecting issue support description", - "end": { - "column": 3, - "line": 66 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.connectingIssueSupportLabel", - "start": { - "column": 31, - "line": 61 - } + "defaultMessage": "!!!Delegate your wallet", + "description": "Delegate wallet header on the wallet settings page.", + "id": "wallet.settings.delegateWallet.header" }, { - "defaultMessage": "!!!read the instructions.", - "description": "Connecting issue support link", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.connectingIssueSupportLink", - "start": { - "column": 30, - "line": 67 - } + "defaultMessage": "!!!This wallet is not delegated. Please, delegate the stake from this wallet to earn rewards and support the Cardano network's security.", + "description": "Delegate wallet warning.", + "id": "wallet.settings.delegateWallet.warning" }, { - "defaultMessage": "https://support.ledger.com/hc/en-us/articles/115005165269", - "description": "Link to support article", - "end": { - "column": 3, - "line": 76 - }, - "file": "source/renderer/app/components/wallet/WalletConnectDialog.tsx", - "id": "wallet.connect.dialog.connectingIssueSupportLinkUrl", - "start": { - "column": 33, - "line": 72 - } - } - ], - "path": "source/renderer/app/components/wallet/WalletConnectDialog.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!This wallet is synchronizing with the blockchain, so this wallet's delegation status is currently unknown, and delegation is not possible.", + "description": "Delegate wallet disabled warning explaining why it is disabled.", + "id": "wallet.settings.delegateWallet.disabledWarning" + }, { - "defaultMessage": "!!!Create a new wallet", - "description": "Title \"Create a new wallet\" in the wallet create form.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.title", - "start": { - "column": 15, - "line": 30 - } + "defaultMessage": "!!!Name", + "description": "Label for the \"Name\" text input on the wallet settings page.", + "id": "wallet.settings.name.label" }, { - "defaultMessage": "!!!Wallet name", - "description": "Label for the \"Wallet Name\" text input in the wallet create form.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.name.label", - "start": { - "column": 14, - "line": 35 - } + "defaultMessage": "!!!Password", + "description": "Label for the \"Password\" field.", + "id": "wallet.settings.password" }, { - "defaultMessage": "!!!Enter wallet name", - "description": "Hint for the \"Wallet Name\" text input in the wallet create form.", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.walletNameHint", - "start": { - "column": 18, - "line": 41 - } + "defaultMessage": "!!!Last updated", + "description": "Last updated X time ago message.", + "id": "wallet.settings.passwordLastUpdated" }, { - "defaultMessage": "!!!Create Shelley wallet", - "description": "Label for the \"Create Shelley wallet\" button on create wallet dialog.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.create.personal.wallet.button.label", - "start": { - "column": 24, - "line": 47 - } + "defaultMessage": "!!!You still don't have password", + "description": "You still don't have password set message.", + "id": "wallet.settings.passwordNotSet" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletSettings.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!+ {amount} of fees", + "description": "Label for the \"+ 12.042481 of fees\" message above amount input field.", + "id": "wallet.amountInput.feesLabel" }, { - "defaultMessage": "!!!Spending password", - "description": "Password creation label.", - "end": { - "column": 3, - "line": 57 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.passwordSectionLabel", - "start": { - "column": 24, - "line": 53 - } + "defaultMessage": "!!!Calculating fees", + "description": "Label for the \"Calculating fees\" message above amount input field.", + "id": "wallet.amountInput.calculatingFeesLabel" + } + ], + "path": "source/renderer/app/components/wallet/skins/AmountInputSkin.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Tokens", + "description": "Number of tokens title on Wallet summary assets page", + "id": "wallet.summary.assets.tokensTitle" }, { - "defaultMessage": "!!!Keep your wallet secure by setting a spending password", - "description": "Password creation description.", - "end": { - "column": 3, - "line": 62 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.passwordSectionDescription", - "start": { - "column": 30, - "line": 58 - } + "defaultMessage": "!!!Want to find out more about native tokens?", + "description": "\"Learn more\" text in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.textTop" }, { - "defaultMessage": "!!!Enter password", - "description": "Label for the \"Wallet password\" input in the create wallet dialog.", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.spendingPasswordLabel", - "start": { - "column": 25, - "line": 63 - } + "defaultMessage": "!!!Start by visiting the IOHK blog for a useful primer.", + "description": "\"Learn more\" text in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.textBottom" }, { - "defaultMessage": "!!!Repeat password", - "description": "Label for the \"Repeat password\" input in the create wallet dialog.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.repeatPasswordLabel", - "start": { - "column": 23, - "line": 69 - } + "defaultMessage": "!!!Learn more", + "description": "\"Learn more\" label or button in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.linkLabel" }, { - "defaultMessage": "!!!Password", - "description": "Placeholder for the \"Password\" inputs in the create wallet dialog.", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.create.dialog.passwordFieldPlaceholder", - "start": { - "column": 28, - "line": 75 - } - }, - { - "defaultMessage": "We recommend using a password manager app to manage and store your spending password. Generate a unique password using a password manager and paste it here. Passwords should never be reused.", - "description": "Tooltip for the password input in the wallet dialog.", - "end": { - "column": 3, - "line": 86 - }, - "file": "source/renderer/app/components/wallet/WalletCreateDialog.tsx", - "id": "wallet.dialog.passwordTooltip", - "start": { - "column": 19, - "line": 81 - } + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2021/02/04/native-tokens-to-bring-new-utility-to-life-on-cardano/", + "description": "\"Learn more\" link URL in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.linkUrl" } ], - "path": "source/renderer/app/components/wallet/WalletCreateDialog.json" + "path": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Restore a wallet", - "description": "Label \"Restore wallet\" on the wallet restore dialog.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.title.label", - "start": { - "column": 9, - "line": 43 - } + "defaultMessage": "!!!Converts as", + "description": "\"Currency - title\" label on Wallet summary currency page", + "id": "wallet.summary.currency.title" }, { - "defaultMessage": "!!!Wallet name", - "description": "Label for the wallet name input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.wallet.name.input.label", - "start": { - "column": 24, - "line": 48 - } + "defaultMessage": "!!!converted {fetchedTimeAgo}", + "description": "\"Currency - last fetched\" label on Wallet summary currency page", + "id": "wallet.summary.currency.lastFetched" }, { - "defaultMessage": "!!!Name the wallet you are restoring", - "description": "Hint \"Name the wallet you are restoring\" for the wallet name input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 59 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.wallet.name.input.hint", - "start": { - "column": 23, - "line": 54 - } - }, + "defaultMessage": "!!!fetching conversion rates", + "description": "\"Currency - Fetching\" label on Wallet summary currency page", + "id": "wallet.summary.currency.isFetchingRate" + } + ], + "path": "source/renderer/app/components/wallet/summary/WalletSummaryCurrency.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Number of words in the recovery phrase", - "description": "Label for the recovery phrase type options on the wallet restore dialog.", - "end": { - "column": 3, - "line": 65 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.type.options.label", - "start": { - "column": 27, - "line": 60 - } - }, + "defaultMessage": "!!!{total} transactions, {pending} pending", + "description": "\"Number of transactions\" label on Wallet summary header page", + "id": "wallet.summary.header.transactionsLabel" + } + ], + "path": "source/renderer/app/components/wallet/summary/WalletSummaryHeader.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!! words", - "description": "Word for the recovery phrase type on the wallet restore dialog.", - "end": { - "column": 3, - "line": 71 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.type.word", - "start": { - "column": 32, - "line": 66 - } + "defaultMessage": "!!!{total} rewards earned, {unspent} unspent rewards", + "description": "Headline for the Decentralisation notification.", + "id": "wallet.summary.header.rewardsSummary" }, { - "defaultMessage": "!!!Rewards wallet", - "description": "Label for the recovery phrase type 15-word option on the wallet restore dialog.", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.type.15word.option", - "start": { - "column": 34, - "line": 72 - } - }, + "defaultMessage": "!!!All the ada in this wallet is in the rewards account. Since transaction fees cannot be paid with rewards, please send 2 or more ada to this wallet to cover transaction fees.", + "description": "Tooltip describing that rewards are unspendable on the Wallet summary header", + "id": "wallet.summary.header.unspendableTooltip" + } + ], + "path": "source/renderer/app/components/wallet/summary/WalletSummaryHeaderRewards.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Balance wallet", - "description": "Label for the recovery phrase type 12-word option on the wallet restore dialog.", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.type.12word.option", - "start": { - "column": 34, - "line": 78 - } + "defaultMessage": "!!!Cancel pending transaction", + "description": "Label for the cancel pending transaction button", + "id": "wallet.transaction.pending.cancelTransactionButton" }, { - "defaultMessage": "!!!Recovery phrase", - "description": "Label for the recovery phrase input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 89 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.input.label", - "start": { - "column": 28, - "line": 84 - } - }, + "defaultMessage": "!!!Remove failed transaction", + "description": "Label for the remove failed transaction button", + "id": "wallet.transaction.failed.removeTransactionButton" + } + ], + "path": "source/renderer/app/components/wallet/transactions/CancelTransactionButton.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Enter recovery phrase", - "description": "Hint \"Enter recovery phrase\" for the recovery phrase input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 95 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.input.hint", - "start": { - "column": 27, - "line": 90 - } + "defaultMessage": "!!!Confirm transaction cancellation?", + "description": "Headline for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.headline" }, { - "defaultMessage": "!!!New", - "description": "Label \"new\" on the wallet restore dialog.", - "end": { - "column": 3, - "line": 100 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.newLabel", - "start": { - "column": 12, - "line": 96 - } + "defaultMessage": "!!!This transaction was submitted to the Cardano network some time ago, but has not been finalized yet. You can try to cancel the transaction now to release the pending funds, but there is a chance that the transaction will be finalized regardless. In this case, the transaction will reappear in your wallet as a completed transaction.", + "description": "Content for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.content1" }, { - "defaultMessage": "!!!No results", - "description": "\"No results\" message for the recovery phrase input search results.", - "end": { - "column": 3, - "line": 106 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.recovery.phrase.input.noResults", - "start": { - "column": 27, - "line": 101 - } + "defaultMessage": "!!!To ensure that this transfer of funds is processed as soon as possible, we recommend that you cancel this transaction and submit a new one to the network.", + "description": "Content for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.content2" }, { - "defaultMessage": "!!!Restore wallet", - "description": "Label for the \"Restore wallet\" button on the wallet restore dialog.", - "end": { - "column": 3, - "line": 112 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.restore.wallet.button.label", - "start": { - "column": 21, - "line": 107 - } + "defaultMessage": "!!!No, keep the transaction pending", + "description": "\"Cancel\" button label for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.button.backLabel" }, { - "defaultMessage": "!!!Invalid recovery phrase", - "description": "Error message shown when invalid recovery phrase was entered.", - "end": { - "column": 3, - "line": 118 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.form.errors.invalidRecoveryPhrase", - "start": { - "column": 25, - "line": 113 - } + "defaultMessage": "!!!Yes, cancel the transaction", + "description": "\"Confirm\" button label for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.button.confirmLabel" + } + ], + "path": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!All Transactions", + "description": "All Transactions button label.", + "id": "wallet.transaction.filter.allTransactions" }, { - "defaultMessage": "!!!Spending password", - "description": "Password creation label.", - "end": { - "column": 3, - "line": 123 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.passwordSectionLabel", - "start": { - "column": 24, - "line": 119 - } + "defaultMessage": "!!!Reset Filter", + "description": "Reset Filter button label.", + "id": "wallet.transaction.filter.resetFilter" }, { - "defaultMessage": "!!!Keep your wallet secure by setting the spending password", - "description": "Password creation description.", - "end": { - "column": 3, - "line": 129 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.passwordSectionDescription", - "start": { - "column": 30, - "line": 124 - } + "defaultMessage": "!!!Received", + "description": "Incoming filter type.", + "id": "wallet.transaction.filter.incoming" }, { - "defaultMessage": "!!!Enter password", - "description": "Label for the \"Wallet password\" input in the wallet restore dialog.", - "end": { - "column": 3, - "line": 135 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.spendingPasswordLabel", - "start": { - "column": 25, - "line": 130 - } + "defaultMessage": "!!!Sent", + "description": "Outgoing filter type.", + "id": "wallet.transaction.filter.outgoing" }, { - "defaultMessage": "!!!Repeat password", - "description": "Label for the \"Repeat password\" input in the wallet restore dialog.", - "end": { - "column": 3, - "line": 141 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.repeatPasswordLabel", - "start": { - "column": 23, - "line": 136 - } + "defaultMessage": "!!!Time", + "description": "Date range of filter.", + "id": "wallet.transaction.filter.dateRange" }, { - "defaultMessage": "!!!Password", - "description": "Placeholder for the \"Password\" inputs in the wallet restore dialog.", - "end": { - "column": 3, - "line": 147 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.passwordFieldPlaceholder", - "start": { - "column": 28, - "line": 142 - } + "defaultMessage": "!!!Select time range", + "description": "Select time range indication of filter.", + "id": "wallet.transaction.filter.selectTimeRange" }, { - "defaultMessage": "!!!Daedalus wallet", - "description": "Tab title \"Daedalus wallet\" in the wallet restore dialog.", - "end": { - "column": 3, - "line": 152 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.tab.title.recoveryPhrase", - "start": { - "column": 26, - "line": 148 - } + "defaultMessage": "!!!Last 7 days", + "description": "Last 7 days range of filter.", + "id": "wallet.transaction.filter.last7Days" }, { - "defaultMessage": "!!!Daedalus paper wallet", - "description": "Tab title \"Daedalus paper wallet\" in the wallet restore dialog.", - "end": { - "column": 3, - "line": 158 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.tab.title.certificate", - "start": { - "column": 23, - "line": 153 - } + "defaultMessage": "!!!Last 30 days", + "description": "Last 30 days range of filter.", + "id": "wallet.transaction.filter.last30Days" }, { - "defaultMessage": "!!!Yoroi wallet", - "description": "Tab title \"Yoroi wallet\" in the wallet restore dialog.", - "end": { - "column": 3, - "line": 163 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.tab.title.yoroi", - "start": { - "column": 17, - "line": 159 - } + "defaultMessage": "!!!Last 90 days", + "description": "Last 90 days range of filter.", + "id": "wallet.transaction.filter.last90Days" }, { - "defaultMessage": "!!!27-word paper wallet recovery phrase", - "description": "Label for the shielded recovery phrase input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 169 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.shielded.recovery.phrase.input.label", - "start": { - "column": 36, - "line": 164 - } + "defaultMessage": "!!!This year", + "description": "This year date range of filter.", + "id": "wallet.transaction.filter.thisYear" }, { - "defaultMessage": "!!!Enter your {numberOfWords}-word paper wallet recovery phrase", - "description": "Hint \"Enter your 27-word paper wallet recovery phrase.\" for the recovery phrase input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 176 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.shielded.recovery.phrase.input.hint", - "start": { - "column": 35, - "line": 170 - } + "defaultMessage": "!!!Custom", + "description": "Custom date range of filter.", + "id": "wallet.transaction.filter.custom" }, { - "defaultMessage": "!!!Enter word #{wordNumber}", - "description": "Placeholder \"Enter word #\" for the recovery phrase input on the wallet restore dialog.", - "end": { - "column": 3, - "line": 182 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.shielded.recovery.phrase.input.placeholder", - "start": { - "column": 42, - "line": 177 - } + "defaultMessage": "!!!Amount of ada", + "description": "Amount range of filter.", + "id": "wallet.transaction.filter.amountRange" }, { - "defaultMessage": "!!!Restore paper wallet", - "description": "Label for the \"Restore paper wallet\" button on the wallet restore dialog.", - "end": { - "column": 3, - "line": 188 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.restore.dialog.paper.wallet.button.label", - "start": { - "column": 33, - "line": 183 - } - }, - { - "defaultMessage": "We recommend using a password manager app to manage and store your spending password. Generate a unique password using a password manager and paste it here. Passwords should never be reused.", - "description": "Tooltip for the password input in the wallet dialog.", - "end": { - "column": 3, - "line": 194 - }, - "file": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx", - "id": "wallet.dialog.passwordTooltip", - "start": { - "column": 19, - "line": 189 - } + "defaultMessage": "!!!Apply", + "description": "Filter button label.", + "id": "wallet.transaction.filter.apply" } ], - "path": "source/renderer/app/components/wallet/WalletRestoreDialog.json" + "path": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Back to top", - "description": "\"backToTop\" button label.", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/components/widgets/BackToTopButton.tsx", - "id": "backToTopButton.label", - "start": { - "column": 18, - "line": 8 - } + "defaultMessage": "!!!{filtered} out of {total} transactions match your filter.", + "description": "Filter result info.", + "id": "wallet.transaction.filter.resultInfo" } ], - "path": "source/renderer/app/components/widgets/BackToTopButton.json" + "path": "source/renderer/app/components/wallet/transactions/FilterResultInfo.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!change", - "description": "Label \"change\" on inline editing inputs in inactive state.", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/components/widgets/forms/InlineEditingInput.tsx", - "id": "inline.editing.input.change.label", - "start": { - "column": 10, - "line": 25 - } + "defaultMessage": "!!!Card payment", + "description": "Transaction type shown for credit card payments.", + "id": "wallet.transaction.type.card" }, { - "defaultMessage": "!!!cancel", - "description": "Label \"cancel\" on inline editing inputs in inactive state.", - "end": { - "column": 3, - "line": 34 - }, - "file": "source/renderer/app/components/widgets/forms/InlineEditingInput.tsx", - "id": "inline.editing.input.cancel.label", - "start": { - "column": 10, - "line": 30 - } + "defaultMessage": "!!!{typeOfTransaction} transaction", + "description": "Transaction type shown for {currency} transactions.", + "id": "wallet.transaction.type" }, { - "defaultMessage": "!!!Your changes have been saved", - "description": "Message \"Your changes have been saved\" for inline editing (eg. on Profile Settings page).", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/widgets/forms/InlineEditingInput.tsx", - "id": "inline.editing.input.changesSaved", - "start": { - "column": 16, - "line": 35 - } - } - ], - "path": "source/renderer/app/components/widgets/forms/InlineEditingInput.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Syncing", - "description": "syncingLabel for ItemDropdownOption", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/components/widgets/forms/ItemDropdownOption.tsx", - "id": "widgets.itemsDropdown.syncingLabel", - "start": { - "column": 16, - "line": 13 - } + "defaultMessage": "!!!Exchange", + "description": "Transaction type shown for money exchanges between currencies.", + "id": "wallet.transaction.type.exchange" }, { - "defaultMessage": "!!!Syncing {syncingProgress}%", - "description": "syncingLabel for WalletsDropdown", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/components/widgets/forms/ItemDropdownOption.tsx", - "id": "widgets.itemsDropdown.syncingLabelProgress", - "start": { - "column": 24, - "line": 18 - } - } - ], - "path": "source/renderer/app/components/widgets/forms/ItemDropdownOption.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Language", - "description": "Label for the language select.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx", - "id": "profile.settings.languageSelect.label", - "start": { - "column": 21, - "line": 21 - } + "defaultMessage": "!!!Transaction ID", + "description": "Transaction ID.", + "id": "wallet.transaction.transactionId" }, { - "defaultMessage": "!!!Number format", - "description": "Label for the number select.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx", - "id": "profile.settings.numberSelect.label", - "start": { - "column": 27, - "line": 26 - } + "defaultMessage": "!!!Transaction Metadata", + "description": "Transaction Metadata.", + "id": "wallet.transaction.transactionMetadata" }, { - "defaultMessage": "!!!Date format", - "description": "Label for the date select.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx", - "id": "profile.settings.dateSelect.label", - "start": { - "column": 25, - "line": 31 - } + "defaultMessage": "Transaction metadata is not moderated and may contain inappropriate content. Show unmoderated content.", + "description": "", + "id": "wallet.transaction.transactionMetadataDescription" }, { - "defaultMessage": "!!!Time format", - "description": "Label for the time select.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx", - "id": "profile.settings.timeSelect.label", - "start": { - "column": 25, - "line": 36 - } + "defaultMessage": "!!!Transaction metadata", + "description": "Transaction metadata label", + "id": "wallet.transaction.metadataLabel" }, { - "defaultMessage": "!!!Continue", - "description": "Label for the \"Language select\" form submit button.", - "end": { - "column": 3, - "line": 45 - }, - "file": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx", - "id": "profile.settings.submitLabel", - "start": { - "column": 15, - "line": 41 - } - } - ], - "path": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Newsfeed", - "description": "Newsfeed", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/components/widgets/NewsFeedIcon.tsx", - "id": "news.newsfeed.iconTooltip", - "start": { - "column": 15, - "line": 20 - } - } - ], - "path": "source/renderer/app/components/widgets/NewsFeedIcon.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Blocks synced {percentage}%", - "description": "Label for the blocks synced info overlay on node sync status icon.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/components/widgets/NodeSyncStatusIcon.tsx", - "id": "cardano.node.sync.status.blocksSynced", - "start": { - "column": 16, - "line": 13 - } - } - ], - "path": "source/renderer/app/components/widgets/NodeSyncStatusIcon.json" - }, - { - "descriptors": [ - { - "defaultMessage": "!!!Cardano mainnet - Daedalus Flight", - "description": "Label for Daedalus Flight with version.", - "end": { - "column": 3, - "line": 11 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.daedalusFlightLabel", - "start": { - "column": 10, - "line": 7 - } + "defaultMessage": "!!!Transaction metadata is not moderated and may contain inappropriate content.", + "description": "Transaction metadata disclaimer", + "id": "wallet.transaction.metadataDisclaimer" }, { - "defaultMessage": "!!!Testnet vx", - "description": "Label for testnet with version.", - "end": { - "column": 3, - "line": 16 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.testnetLabel", - "start": { - "column": 11, - "line": 12 - } + "defaultMessage": "!!!Show unmoderated content", + "description": "Transaction metadata confirmation toggle", + "id": "wallet.transaction.metadataConfirmationLabel" }, { - "defaultMessage": "!!!Staging vx", - "description": "Label for staging network with version.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.stagingLabel", - "start": { - "column": 11, - "line": 17 - } + "defaultMessage": "!!!Conversion rate", + "description": "Conversion rate.", + "id": "wallet.transaction.conversion.rate" }, { - "defaultMessage": "!!!Shelley QA", - "description": "Label for shelley_qa with version.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.shelleyQaLabel", - "start": { - "column": 14, - "line": 22 - } + "defaultMessage": "!!!{transactionsType} sent", + "description": "Label \"{transactionsType} sent\" for the transaction.", + "id": "wallet.transaction.sent" }, { - "defaultMessage": "!!!Alonzo Purple", - "description": "Label for alonzo_purple with version.", - "end": { - "column": 3, - "line": 31 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.alonzoPurpleLabel", - "start": { - "column": 17, - "line": 27 - } + "defaultMessage": "!!!{transactionsType} received", + "description": "Label \"{transactionsType} received\" for the transaction.", + "id": "wallet.transaction.received" }, { - "defaultMessage": "!!!Selfnode vx", - "description": "Label for selfnode with version.", - "end": { - "column": 3, - "line": 36 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.selfnodeLabel", - "start": { - "column": 12, - "line": 32 - } + "defaultMessage": "!!!From address", + "description": "From address", + "id": "wallet.transaction.address.from" }, { - "defaultMessage": "!!!Development vx", - "description": "Label for development with version.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx", - "id": "test.environment.developmentLabel", - "start": { - "column": 15, - "line": 37 - } - } - ], - "path": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!From addresses", + "description": "From addresses", + "id": "wallet.transaction.addresses.from" + }, { - "defaultMessage": "!!!Preparing logs for download", - "description": "Notification for download logs in progress in the Loading and Settings pages.", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadLogsProgress", - "start": { - "column": 24, - "line": 19 - } + "defaultMessage": "!!!From rewards", + "description": "From rewards", + "id": "wallet.transaction.rewards.from" }, { - "defaultMessage": "!!!Logs successfully downloaded", - "description": "Notification for download logs in the Loading and Settings pages.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadLogsSuccess", - "start": { - "column": 23, - "line": 25 - } + "defaultMessage": "!!!To address", + "description": "To address", + "id": "wallet.transaction.address.to" }, { - "defaultMessage": "!!!CSV file successfully downloaded", - "description": "Notification for download Rewards CSV file.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadRewardsCSVSuccess", - "start": { - "column": 29, - "line": 31 - } + "defaultMessage": "!!!To addresses", + "description": "To addresses", + "id": "wallet.transaction.addresses.to" }, { - "defaultMessage": "!!!CSV file successfully downloaded", - "description": "Notification for download Transactions CSV file.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadTransactionsCSVSuccess", - "start": { - "column": 34, - "line": 36 - } + "defaultMessage": "!!!Receiver", + "description": "Receiver", + "id": "wallet.transaction.receiverLabel" }, { - "defaultMessage": "!!!Public key: {publicKey} copied to clipboard", - "description": "Notification for the wallet public key copy success in the Wallet Settings page.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.copyWalletPublicKey", - "start": { - "column": 23, - "line": 41 - } + "defaultMessage": "!!!Token", + "description": "Token label", + "id": "wallet.transaction.assetLabel" }, { - "defaultMessage": "!!!ICO Public key: {publicKey} copied to clipboard", - "description": "Notification for the ICO public key copy success in the Wallet Settings page.", - "end": { - "column": 3, - "line": 54 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.copyICOPublicKey", - "start": { - "column": 20, - "line": 48 - } + "defaultMessage": "!!!Transaction fee", + "description": "Transaction fee", + "id": "wallet.transaction.transactionFee" }, { - "defaultMessage": "!!!Address: {address} copied to clipboard", - "description": "Notification for the wallet address copy success in the Wallet Receive page.", - "end": { - "column": 3, - "line": 61 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.copyAddress", - "start": { - "column": 15, - "line": 55 - } + "defaultMessage": "!!!Deposit", + "description": "Deposit", + "id": "wallet.transaction.deposit" }, { - "defaultMessage": "!!!{param}: {shortValue} copied to clipboard", - "description": "Notification for the wallet assetItem copy success in the Wallet Receive page.", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.copyAssetParam", - "start": { - "column": 18, - "line": 62 - } + "defaultMessage": "!!!Transaction amount", + "description": "Transaction amount.", + "id": "wallet.transaction.transactionAmount" }, { - "defaultMessage": "!!!Address: {walletAddress} PDF successfully downloaded", - "description": "Notification for the wallet address PDF download success in the Wallet Receive page.", - "end": { - "column": 3, - "line": 75 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadAddressPDFSuccess", - "start": { - "column": 29, - "line": 69 - } + "defaultMessage": "!!!Multiple tokens", + "description": "Multiple tokens.", + "id": "wallet.transaction.multipleTokens" }, { - "defaultMessage": "!!!PDF successfully downloaded", - "description": "Notification for the wallet voting PDF download success in the Voting Registration dialog.", - "end": { - "column": 3, - "line": 81 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadVotingPDFSuccess", - "start": { - "column": 28, - "line": 76 - } + "defaultMessage": "!!!Tokens sent", + "description": "Tokens sent.", + "id": "wallet.transaction.tokensSent" }, { - "defaultMessage": "!!!Address: {walletAddress} QR code image successfully downloaded", - "description": "Notification for the wallet address PDF download success in the Wallet Receive page.", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.downloadQRCodeImageSuccess", - "start": { - "column": 30, - "line": 82 - } + "defaultMessage": "!!!Tokens received", + "description": "Tokens received.", + "id": "wallet.transaction.tokensReceived" }, { - "defaultMessage": "!!!Daedalus state directory copied to clipboard", - "description": "Notification for the state directory copy success in the Diagnostics page.", - "end": { - "column": 3, - "line": 94 - }, - "file": "source/renderer/app/containers/notifications/NotificationsContainer.tsx", - "id": "notification.copyStateDirectoryPath", - "start": { - "column": 26, - "line": 89 - } + "defaultMessage": "!!!Fetching token data", + "description": "\"Fetching token data...\" message.", + "id": "wallet.transaction.fetchingTokenData" + }, + { + "defaultMessage": "!!!This transaction has been pending for a long time. To release the funds used by this transaction, you can try canceling it.", + "description": "Note to cancel a transaction that has been pending too long", + "id": "wallet.transaction.pending.cancelPendingTxnNote" + }, + { + "defaultMessage": "!!!Why should I cancel this transaction?", + "description": "Link to support article for canceling a pending transaction", + "id": "wallet.transaction.pending.cancelPendingTxnSupportArticle" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360038113814", + "description": "Url to support article for canceling a pending transaction", + "id": "wallet.transaction.pending.supportArticleUrl" + }, + { + "defaultMessage": "!!!No addresses", + "description": "Input Addresses label.", + "id": "wallet.transaction.noInputAddressesLabel" + }, + { + "defaultMessage": "!!!Open this transaction in Cardano explorer", + "description": "Unresolved Input Addresses link label.", + "id": "wallet.transaction.unresolvedInputAddressesLinkLabel" + }, + { + "defaultMessage": "!!!to see these addresses.", + "description": "Unresolved Input Addresses additional label.", + "id": "wallet.transaction.unresolvedInputAddressesAdditionalLabel" + }, + { + "defaultMessage": "!!!This transaction was submitted to the Cardano network, but it expired, so it failed. Transactions on the Cardano network have a ‘time to live’ attribute, which passed before the network processed the transaction. Please, remove it to release the funds (UTXOs) used by this transaction to use those funds in another transaction.", + "description": "Note to cancel a transaction that has been failed", + "id": "wallet.transaction.failed.cancelFailedTxnNote" + }, + { + "defaultMessage": "!!!Why should I cancel failed transactions?", + "description": "Link to support article for removing a failed transaction", + "id": "wallet.transaction.failed.cancelFailedTxnSupportArticle" + }, + { + "defaultMessage": "!!!Transaction confirmed", + "description": "Transaction state \"confirmed\"", + "id": "wallet.transaction.state.confirmed" + }, + { + "defaultMessage": "!!!Transaction pending", + "description": "Transaction state \"pending\"", + "id": "wallet.transaction.state.pending" + }, + { + "defaultMessage": "!!!Transaction failed", + "description": "Transaction state \"failed\"", + "id": "wallet.transaction.state.failed" + }, + { + "defaultMessage": "!!!Confirmed", + "description": "Transaction state \"confirmed\"", + "id": "wallet.transaction.state.confirmedHeading" + }, + { + "defaultMessage": "!!!Pending", + "description": "Transaction state \"pending\"", + "id": "wallet.transaction.state.pendingHeading" + }, + { + "defaultMessage": "!!!Failed", + "description": "Transaction state \"failed\"", + "id": "wallet.transaction.state.failedHeading" } ], - "path": "source/renderer/app/containers/notifications/NotificationsContainer.json" + "path": "source/renderer/app/components/wallet/transactions/Transaction.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", - "description": "\"submit a support request\" link URL in the \"Report a problem\" section on the support settings page.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/containers/settings/categories/SupportSettingsPage.tsx", - "id": "settings.support.reportProblem.linkUrl", - "start": { - "column": 25, - "line": 9 - } + "defaultMessage": "!!!No transactions", + "description": "Message shown when wallet has no transactions yet.", + "id": "wallet.transactions.no.transactions" } ], - "path": "source/renderer/app/containers/settings/categories/SupportSettingsPage.json" + "path": "source/renderer/app/components/wallet/transactions/WalletTransactions.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/", - "description": "\"Learn more\" link URL on the delegation setup \"intro\" dialog.", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.tsx", - "id": "staking.delegationSetup.intro.step.dialog.learnMore.url", - "start": { - "column": 20, - "line": 17 - } - }, - { - "defaultMessage": "!!!Wallet", - "description": "Step 1 label text on delegation steps dialog.", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.tsx", - "id": "staking.delegationSetup.steps.step.1.label", - "start": { - "column": 29, - "line": 23 - } - }, - { - "defaultMessage": "!!!Stake pool", - "description": "Step 2 label text on delegation steps dialog.", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.tsx", - "id": "staking.delegationSetup.steps.step.2.label", - "start": { - "column": 29, - "line": 28 - } + "defaultMessage": "!!!Transactions", + "description": "Label for the \"Transactions\" header.", + "id": "wallet.transactions.header.transactions" }, { - "defaultMessage": "!!!Confirmation", - "description": "Step 3 label text on delegation steps dialog.", - "end": { - "column": 3, - "line": 37 - }, - "file": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.tsx", - "id": "staking.delegationSetup.steps.step.3.label", - "start": { - "column": 29, - "line": 33 - } + "defaultMessage": "!!!Export CSV", + "description": "Label for the \"Export CSV\" button.", + "id": "wallet.transactions.header.exportCSV.button.label" } ], - "path": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.json" + "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsHeader.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!This wallet does not contain the minimum amount of {calculatedMinRewardsReceiverBalance} ADA which is required to cover the necessary transaction fees. Please select a wallet with a minimum amount of {calculatedMinRewardsReceiverBalance} ADA and click continue.", - "description": "errorMinRewardFunds Error Label on the delegation setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/containers/staking/dialogs/redeem-itn-rewards/Step1ConfigurationContainer.tsx", - "id": "staking.redeemItnRewards.step1.errorMessage", - "start": { - "column": 23, - "line": 17 - } + "defaultMessage": "!!!Today", + "description": "Label for the \"Today\" label on the wallet summary page.", + "id": "wallet.summary.transactionsList.todayLabel" }, { - "defaultMessage": "!!!This wallet can’t be used for rewards redemption while it’s being synced.", - "description": "RestoringWallet Error Label on the rewards redemption setup \"choose wallet\" step dialog.", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/containers/staking/dialogs/redeem-itn-rewards/Step1ConfigurationContainer.tsx", - "id": "staking.redeemItnRewards.step1.errorRestoringWallet", - "start": { - "column": 24, - "line": 24 - } - } - ], - "path": "source/renderer/app/containers/staking/dialogs/redeem-itn-rewards/Step1ConfigurationContainer.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Yesterday", + "description": "Label for the \"Yesterday\" label on the wallet summary page.", + "id": "wallet.summary.transactionsList.yesterdayLabel" + }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc", - "description": "\"Learn more\" link URL in the staking countdown page", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/containers/staking/StakingCountdownPage.tsx", - "id": "staking.countdown.learnMore.linkUrl", - "start": { - "column": 20, - "line": 8 - } + "defaultMessage": "!!!Show more transactions", + "description": "Label for the \"Show more transactions\" button on the wallet summary page.", + "id": "wallet.summary.transactionsList.showMoreTransactionsButtonLabel" + }, + { + "defaultMessage": "!!!Your transaction history for this wallet is being synced with the blockchain.", + "description": "Syncing transactions message on async wallet restore.", + "id": "wallet.summary.transactionsList.syncingTransactionsMessage" } ], - "path": "source/renderer/app/containers/staking/StakingCountdownPage.json" + "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!https://staking.cardano.org/", - "description": "\"Learn more\" link URL in the staking rewards page", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/containers/staking/StakingRewardsPage.tsx", - "id": "staking.rewards.learnMore.linkUrl", - "start": { - "column": 20, - "line": 10 - } + "defaultMessage": "!!!Search transaction", + "description": "Hint in the transactions search box.", + "id": "wallet.transactions.search.hint" } ], - "path": "source/renderer/app/containers/staking/StakingRewardsPage.json" + "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsSearch.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet", - "description": "Step 1 label text on voting registration.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx", - "id": "voting.votingRegistration.steps.step.1.label", - "start": { - "column": 32, - "line": 19 - } - }, - { - "defaultMessage": "!!!Register", - "description": "Step 2 label text on voting registration.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx", - "id": "voting.votingRegistration.steps.step.2.label", - "start": { - "column": 32, - "line": 24 - } + "defaultMessage": "!!!Transfer funds", + "description": "Title in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.title" }, { - "defaultMessage": "!!!Confirm", - "description": "Step 3 label text on voting registration.", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx", - "id": "voting.votingRegistration.steps.step.3.label", - "start": { - "column": 32, - "line": 29 - } + "defaultMessage": "!!!From Byron legacy wallet", + "description": "sourceWallet in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.sourceWallet" }, { - "defaultMessage": "!!!PIN", - "description": "Step 4 label text on voting registration.", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx", - "id": "voting.votingRegistration.steps.step.4.label", - "start": { - "column": 32, - "line": 34 - } + "defaultMessage": "!!!To Shelley-compatible wallet", + "description": "targetWallet in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.targetWallet" }, { - "defaultMessage": "QR code", - "description": "Step 5 label text on voting registration.", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx", - "id": "voting.votingRegistration.steps.step.5.label", - "start": { - "column": 32, - "line": 39 - } + "defaultMessage": "!!!Continue", + "description": "buttonLabel in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.continueLabel" } ], - "path": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.json" + "path": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Confirm transaction", - "description": "Title for the \"Confirm transaction\" dialog.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.title", - "start": { - "column": 15, - "line": 5 - } + "defaultMessage": "!!!Transfer funds from the legacy wallet", + "description": "Title in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.title" }, { - "defaultMessage": "!!!Spending password", - "description": "Label for the \"Spending password\" input in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.passphraseLabel", - "start": { - "column": 19, - "line": 10 - } + "defaultMessage": "!!!Confirm transfer from {sourceWalletName}wallet to the {targetWalletName} wallet.", + "description": "description in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.description.label" }, { - "defaultMessage": "!!!Type your spending password", - "description": "Placeholder for the \"Spending password\" inputs in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 21 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.passphraseFieldPlaceholder", - "start": { - "column": 30, - "line": 16 - } + "defaultMessage": "!!!{sourceWalletName} amount", + "description": "Label Source wallet Amount in the transfer funds form", + "id": "wallet.transferFunds.dialog2.sourceWalletAmount.label" }, { - "defaultMessage": "!!!{Warning}, flight candidate versions of Daedalus are connected to Cardano mainnet. If you confirm this transaction, your ada will be sent for real.", - "description": "Text for the \"Flight candidate\" warning in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.flightCandidateWarning", - "start": { - "column": 26, - "line": 22 - } + "defaultMessage": "!!!Fees", + "description": "Label Fees in the transfer funds form", + "id": "wallet.transferFunds.dialog2.fees.label" }, { - "defaultMessage": "!!!I understand that real ada will be moved as part of this transaction and that this action is irreversible.", - "description": "Label for the \"Flight candidate\" warning checkbox in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.flightCandidateCheckboxLabel", - "start": { - "column": 32, - "line": 29 - } + "defaultMessage": "!!!Total", + "description": "Total Fees in the transfer funds form", + "id": "wallet.transferFunds.dialog2.total.label" }, { - "defaultMessage": "!!!Send", - "description": "Label for the send button in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 41 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.submit", - "start": { - "column": 19, - "line": 36 - } + "defaultMessage": "!!!Leftovers", + "description": "Label Leftovers in the transfer funds form", + "id": "wallet.transferFunds.dialog2.leftovers.label" }, { - "defaultMessage": "!!!Back", - "description": "Label for the back button in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 47 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.back", - "start": { - "column": 19, - "line": 42 - } + "defaultMessage": "!!!Learn more", + "description": "Label Leftovers in the transfer funds form", + "id": "wallet.transferFunds.dialog2.leftovers.LearnMore.label" }, { - "defaultMessage": "!!!Warning: This transaction will reduce your wallet's balance to less than 2 ada. Your wallet's balance should always be over 2 ada to spend future staking rewards.", - "description": "Warning: This transaction will reduce your wallet's balance", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.emptyingWarning", - "start": { - "column": 19, - "line": 48 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/", + "description": "Label Leftovers in the transfer funds form", + "id": "wallet.transferFunds.dialog2.leftovers.LearnMore.url" }, { - "defaultMessage": "!!!To", - "description": "Label for the \"To\" in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.addressToLabel", - "start": { - "column": 18, - "line": 54 - } + "defaultMessage": "!!!Transfer funds", + "description": "buttonLabel in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.label.buttonLabel" }, { - "defaultMessage": "!!!Amount", - "description": "Label for the \"Amount\" in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.amountLabel", - "start": { - "column": 15, - "line": 59 - } + "defaultMessage": "!!!Spending password", + "description": "passphraseFieldPlaceholder in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.passphraseFieldPlaceholder" }, { - "defaultMessage": "!!!Token", - "description": "Token", - "end": { - "column": 3, - "line": 69 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.assetLabel", - "start": { - "column": 14, - "line": 65 - } - }, + "defaultMessage": "!!!Spending password", + "description": "passphraseLabel in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.passphraseLabel" + } + ], + "path": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Transaction fee", - "description": "Label for the \"Fees\" in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 74 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.feesLabel", - "start": { - "column": 13, - "line": 70 - } + "defaultMessage": "!!!Wallet UTXO distribution", + "description": "Title for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.title" }, { - "defaultMessage": "!!!Total", - "description": "Label for the \"Total\" in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 80 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.totalLabel", - "start": { - "column": 14, - "line": 75 - } + "defaultMessage": "!!!This wallet contains {formattedWalletAmount} ADA on {walletUtxosAmount} UTXOs (unspent transaction outputs). Examine the histogram below to see the distribution of UTXOs with different amounts of ada.", + "description": "Description for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.description" }, { - "defaultMessage": "!!!Receiver", - "description": "Label for the \"Receiver\" in the wallet send confirmation dialog.", - "end": { - "column": 3, - "line": 86 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.receiver.label", - "start": { - "column": 17, - "line": 81 - } + "defaultMessage": "!!!This wallet is empty so it does not contain any UTXOs (unspent transaction outputs).", + "description": "Empty wallet description for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.emptyWallet" }, { - "defaultMessage": "!!!unformatted amount", - "description": "Label for \"unformatted amount\"", - "end": { - "column": 3, - "line": 91 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.unformattedAmountLabel", - "start": { - "column": 26, - "line": 87 - } + "defaultMessage": "!!!Find out more", + "description": "\"Find out more\" link on the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.findOutMoreLink" }, { - "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", - "description": "Message for \"unformatted amount\"", - "end": { - "column": 3, - "line": 98 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.unformattedAmountMessageForSoftwareWallets", - "start": { - "column": 46, - "line": 92 - } + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360034118013", + "description": "\"Find out more\" link URL on the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.findOutMoreLinkUrl" }, { - "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", - "description": "Message for \"unformatted amount\"", - "end": { - "column": 3, - "line": 105 - }, - "file": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts", - "id": "wallet.send.confirmationDialog.unformattedAmountMessageForHardwareWallets", - "start": { - "column": 46, - "line": 99 - } + "defaultMessage": "!!!amount", + "description": "Label X for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.labelX" + }, + { + "defaultMessage": "!!!Nº UTXO", + "description": "Label Y for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.labelY" + }, + { + "defaultMessage": "!!!Pending transactions may affect the accuracy of data presented here.
You have {pendingTxnsCount} pending transaction{txnsPlural}.", + "description": "Number of pending transactions for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.pendingTransactions" } ], - "path": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.json" + "path": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Delete Wallet", - "description": "Title for the \"Delete wallet\" dialog.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx", - "id": "wallet.settings.delete.dialog.title", - "start": { - "column": 15, - "line": 10 - } - }, - { - "defaultMessage": "!!!Delete", - "description": "Label for the \"Delete (x)\" button in the delete wallet dialog.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx", - "id": "wallet.settings.delete.dialog.confirmButtonLabel", - "start": { - "column": 22, - "line": 15 - } - }, - { - "defaultMessage": "!!!Do you really want to delete {walletName} wallet?", - "description": "Question if the user really wants to delete the wallet.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx", - "id": "wallet.settings.delete.dialog.confirmationQuestion", - "start": { - "column": 24, - "line": 21 - } + "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
{walletAmount} ADA", + "description": "Tooltip for the \"Wallet Utxos - first bar\" screen.", + "id": "wallet.settings.utxos.tooltipFirst" }, { - "defaultMessage": "!!!Make sure you have access to backup before continuing. Otherwise, you will lose all your funds connected to this wallet.", - "description": "Notice to confirm if the user has made a backup of his wallet", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx", - "id": "wallet.settings.delete.dialog.confirmBackupNotice", - "start": { - "column": 23, - "line": 27 - } + "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
between {previousWalletAmount} and {walletAmount} ADA", + "description": "Tooltip for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.tooltip" }, { - "defaultMessage": "!!!Enter the name of the wallet to confirm deletion:", - "description": "Instruction for recovery word on delete wallet dialog", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx", - "id": "wallet.settings.delete.dialog.enterRecoveryWordLabel", - "start": { - "column": 26, - "line": 34 - } + "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
{walletAmount} ADA", + "description": "Tooltip for the \"Wallet Utxos - last bar\" screen.", + "id": "wallet.settings.utxos.tooltipLast" } ], - "path": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.json" + "path": "source/renderer/app/components/wallet/utxo/WalletUtxoTooltip.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet Public Key", - "description": "Title for the \"Wallet Public Key QR Code\" dialog.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/PublicKeyQRCodeDialogContainer.tsx", - "id": "wallet.settings.walletPublicKey", - "start": { - "column": 15, - "line": 16 - } + "defaultMessage": "!!!Import wallets", + "description": "Import wallets dialog title", + "id": "wallet.import.file.dialog.title" }, { - "defaultMessage": "!!!Copy public key", - "description": "Copy public key label.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/PublicKeyQRCodeDialogContainer.tsx", - "id": "wallet.settings.copyWalletPublicKey", - "start": { - "column": 22, - "line": 21 - } + "defaultMessage": "!!!

This feature enables you to import wallets from the production version of Daedalus, or from the Daedalus state directory.

If you don’t have the complete state directory, then you will need either the ‘Secrets’ or ‘Secrets-1.0’ folder containing the ‘secret.key’ file to be able to import a wallet, although without the complete state directory Daedalus won’t be able to detect your wallet names.

If you don’t have either the ‘Secrets’ or the ‘Secrets-1.0’ folder containing the ‘secret.key’ file, then you cannot import wallets using this feature.

", + "description": "

This feature enables you to import wallets from the production version of Daedalus, or from the Daedalus state directory.

If you don’t have the complete state directory, then you will need either the ‘Secrets’ or ‘Secrets-1.0’ folder containing the ‘secret.key’ file to be able to import a wallet, although without the complete state directory Daedalus won’t be able to detect your wallet names.

If you don’t have either the ‘Secrets’ or the ‘Secrets-1.0’ folder containing the ‘secret.key’ file, then you cannot import wallets using this feature.

", + "id": "wallet.import.file.dialog.description" }, { - "defaultMessage": "!!!Derivation path", - "description": "Tooltip for the derivation path", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/PublicKeyQRCodeDialogContainer.tsx", - "id": "wallet.settings.dialog.derivationPathTooltip", - "start": { - "column": 25, - "line": 26 - } - } - ], - "path": "source/renderer/app/containers/wallet/dialogs/settings/PublicKeyQRCodeDialogContainer.json" - }, - { - "descriptors": [ + "defaultMessage": "!!!Select Daedalus state folder:", + "description": "Select Daedalus state folder:", + "id": "wallet.import.file.dialog.stateFolderLabel" + }, { - "defaultMessage": "!!!Unpair Wallet", - "description": "Title for the \"Unpair wallet\" dialog.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/UnpairWalletDialogContainer.tsx", - "id": "wallet.settings.unpair.dialog.title", - "start": { - "column": 15, - "line": 10 - } + "defaultMessage": "!!!Select Daedalus 'secret.key' file:", + "description": "Select Daedalus 'secret.key' file:", + "id": "wallet.import.file.dialog.secretFileLabel" }, { - "defaultMessage": "!!!Delete", - "description": "Label for the \"Unpair (x)\" button in the unpair wallet dialog.", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/UnpairWalletDialogContainer.tsx", - "id": "wallet.settings.unpair.dialog.confirmButtonLabel", - "start": { - "column": 22, - "line": 15 - } + "defaultMessage": "!!!Import wallets", + "description": "Import wallets", + "id": "wallet.import.file.dialog.buttonLabel" }, { - "defaultMessage": "!!!Do you really want to unpair {walletName} wallet?", - "description": "Question if the user really wants to unpair the wallet.", - "end": { - "column": 3, - "line": 26 - }, - "file": "source/renderer/app/containers/wallet/dialogs/settings/UnpairWalletDialogContainer.tsx", - "id": "wallet.settings.unpair.dialog.confirmationQuestion", - "start": { - "column": 24, - "line": 21 - } + "defaultMessage": "!!!No wallets found. Make sure you have selected a Daedalus state directory which contains the ‘Secrets’ or `Secrets-1.0` folder with a `secret.key` file inside.", + "description": "No wallets found. Make sure you have selected a Daedalus state directory which contains the ‘Secrets’ or `Secrets-1.0` folder with a `secret.key` file inside.", + "id": "wallet.import.file.dialog.stateDirNoWallets" + }, + { + "defaultMessage": "!!!No wallets found. Make sure you have selected a valid `secret.key` file.", + "description": "No wallets found. Make sure you have selected a valid `secret.key` file.", + "id": "wallet.import.file.dialog.secretFileNoWallets" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more", + "id": "wallet.import.file.dialog.linkLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900000623463", + "description": "\"Learn more\" link URL on the wallet import file dialog", + "id": "wallet.import.file.dialog.linkUrl" + }, + { + "defaultMessage": "!!!Import from:", + "description": "Import from:", + "id": "wallet.import.file.dialog.importFromLabel" + }, + { + "defaultMessage": "!!!Daedalus state directory", + "description": "Daedalus state directory", + "id": "wallet.import.file.dialog.stateDirOptionLabel" + }, + { + "defaultMessage": "!!!Daedalus 'secret.key' file", + "description": "Daedalus 'secret.key' file", + "id": "wallet.import.file.dialog.secretFileOptionLabel" } ], - "path": "source/renderer/app/containers/wallet/dialogs/settings/UnpairWalletDialogContainer.json" + "path": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Address", - "description": "\"Address\" word in the Address PDF export", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/containers/wallet/WalletReceivePage.tsx", - "id": "wallet.receive.pdf.filenamePrefix", - "start": { - "column": 11, - "line": 18 - } + "defaultMessage": "!!!Found wallets", + "description": "Select import wallets dialog title", + "id": "wallet.select.import.dialog.title" + }, + { + "defaultMessage": "!!!These wallets were found in your Daedalus state directory.

Please select the wallets you want to import.

", + "description": "These wallets were found in your Daedalus state directory. Please select the wallets you want to import.", + "id": "wallet.select.import.dialog.description" + }, + { + "defaultMessage": "!!!Unnamed wallets", + "description": "unnamedWalletsTitle", + "id": "wallet.select.import.dialog.unnamedWalletsTitle" + }, + { + "defaultMessage": "!!!Password protected", + "description": "Password protected", + "id": "wallet.select.import.dialog.passwordProtected" + }, + { + "defaultMessage": "!!!Wallet already exists", + "description": "Wallet already exists", + "id": "wallet.select.import.dialog.walletExists" + }, + { + "defaultMessage": "!!!No password", + "description": "No password", + "id": "wallet.select.import.dialog.noPassword" + }, + { + "defaultMessage": "!!!Importing wallet...", + "description": "Importing wallet...", + "id": "wallet.select.import.dialog.importingWallet" + }, + { + "defaultMessage": "!!!Enter wallet name", + "description": "Enter wallet name", + "id": "wallet.select.import.dialog.walletName" + }, + { + "defaultMessage": "!!!Name not found", + "description": "Name not found", + "id": "wallet.select.import.dialog.notFound" + }, + { + "defaultMessage": "!!!Enter a wallet name first", + "description": "Enter a wallet name first", + "id": "wallet.select.import.dialog.enterWalletNameTooltip" + }, + { + "defaultMessage": "!!!Daedalus supports up to {maxWalletsCount} wallets. You will need to remove another wallet before you can import this one.", + "description": "Max number of wallets reached", + "id": "wallet.select.import.dialog.maxWalletsReachedTooltip" + }, + { + "defaultMessage": "!!!Wallet imported", + "description": "Wallet imported", + "id": "wallet.select.import.dialog.walletImported" + }, + { + "defaultMessage": "!!!Import selected wallets", + "description": "Import selected wallets", + "id": "wallet.select.import.dialog.buttonLabel" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more", + "id": "wallet.select.import.dialog.linkLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900000623463", + "description": "\"Learn more\" link URL on the wallet import file dialog", + "id": "wallet.select.import.dialog.linkUrl" + }, + { + "defaultMessage": "!!!Close window", + "description": "Close window", + "id": "wallet.select.import.dialog.closeWindow" } ], - "path": "source/renderer/app/containers/wallet/WalletReceivePage.json" + "path": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!No recent transactions", - "description": "Message shown when wallet has no transactions on wallet summary page.", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/containers/wallet/WalletSummaryPage.tsx", - "id": "wallet.summary.page.no.transactions", - "start": { - "column": 18, - "line": 20 - } + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder for the mnemonics autocomplete.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.placeholder" + }, + { + "defaultMessage": "!!!Enter your 12, 18 or 24-word recovery phrase", + "description": "Placeholder for the multi-length mnemonics autocomplete.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.multiLengthPhrase.placeholder" + }, + { + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the mnemonics autocomplete search results.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.noResults" + }, + { + "defaultMessage": "!!!Check recovery phrase", + "description": "Label for the mnemonics Continue button.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.continueButtonLabel" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Label for invalid recovery phrase", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.invalidRecoveryPhrase" } ], - "path": "source/renderer/app/containers/wallet/WalletSummaryPage.json" + "path": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Toggle discreet mode on.", - "description": "Text for the tooltip on \"discreet mode\" button when mode is on", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/features/discreet-mode/ui/discreet-toggle-top-bar/DiscreetToggleTopBar.messages.ts", - "id": "discreetMode.discreetToggle.on", - "start": { - "column": 6, - "line": 4 - } + "defaultMessage": "!!!Close", + "description": "Label for Close button on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.close" }, { - "defaultMessage": "!!!Toggle discreet mode off.", - "description": "Text for the tooltip on \"discreet mode\" button when mode is off", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/features/discreet-mode/ui/discreet-toggle-top-bar/DiscreetToggleTopBar.messages.ts", - "id": "discreetMode.discreetToggle.off", - "start": { - "column": 7, - "line": 10 - } + "defaultMessage": "!!!Your wallet has been successfully restored.", + "description": "Description \"line 1\" on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.description.line1" }, { - "defaultMessage": "!!!You can toggle auto discreet mode in Settings.", - "description": "Text for the tooltip on \"discreet mode\" button description", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/features/discreet-mode/ui/discreet-toggle-top-bar/DiscreetToggleTopBar.messages.ts", - "id": "discreetMode.discreetToggle.description", - "start": { - "column": 15, - "line": 16 - } + "defaultMessage": "!!!Restored wallets should have all the funds and transaction history of the original wallet. If your restored wallet does not have the funds and transaction history you were expecting, please check that you have the correct wallet recovery phrase for the wallet you were intending to restore.", + "description": "Description \"line 2\" on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.description.line2" + }, + { + "defaultMessage": "!!!If your restored wallet is empty, but you were expecting it to have funds, please check that you used the correct wallet recovery phrase during the restoration process.", + "description": "Description \"line 3\" on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.description.line3" } ], - "path": "source/renderer/app/features/discreet-mode/ui/discreet-toggle-top-bar/DiscreetToggleTopBar.messages.json" + "path": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Ada", - "description": "\"Ada\" name", - "end": { - "column": 3, - "line": 8 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.ada.name", - "start": { - "column": 11, - "line": 4 - } + "defaultMessage": "!!!What kind of wallet would you like to restore?", + "description": "Label for the \"labelwalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKind" }, { - "defaultMessage": "!!!ADA", - "description": "\"ADA\" unit", - "end": { - "column": 3, - "line": 13 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.ada.unit", - "start": { - "column": 11, - "line": 9 - } + "defaultMessage": "!!!Daedalus wallet", + "description": "Label for the \"labelWalletKindDaedalus\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKindDaedalus" }, { - "defaultMessage": "!!!ADA", - "description": "Name for \"Ada\" unit.", - "end": { - "column": 3, - "line": 18 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.currency.ada", - "start": { - "column": 12, - "line": 14 - } + "defaultMessage": "!!!Yoroi wallet", + "description": "Label for the \"labelWalletKindYoroi\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKindYoroi" }, { - "defaultMessage": "!!!This field is required.", - "description": "Error message when required fields are left empty.", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.fieldIsRequired", - "start": { - "column": 19, - "line": 19 - } + "defaultMessage": "!!!Hardware wallet", + "description": "Label for the \"labelWalletKindHardware\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKindHardware" }, { - "defaultMessage": "!!!{actual} of {required} words entered", - "description": "Info message displayed above mnemonic inputs about actual vs. required words entered", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.info.knownMnemonicWordCount", - "start": { - "column": 26, - "line": 24 - } + "defaultMessage": "!!!What kind of Daedalus wallet would you like to restore?", + "description": "Label for the \"labelDaedalusWalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind" }, { - "defaultMessage": "!!!{actual} words entered", - "description": "Info message displayed above mnemonic inputs about how many words have been entered", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.info.unknownMnemonicWordCount", - "start": { - "column": 28, - "line": 30 - } + "defaultMessage": "!!!12 words (Byron legacy wallet)", + "description": "Label for the \"labelDaedalusWalletKind12WordByron\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind12WordByron" }, { - "defaultMessage": "!!!Invalid email entered, please check.", - "description": "Error message shown when invalid email was entered.", - "end": { - "column": 3, - "line": 40 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.invalidEmail", - "start": { - "column": 16, - "line": 36 - } + "defaultMessage": "!!!15 words (Incentivized Testnet Rewards wallet)", + "description": "Label for the \"labelDaedalusWalletKind15WordShelley\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind15WordShelley" }, { - "defaultMessage": "!!!Wallet name requires at least 3 and at most 40 letters", - "description": "Error message shown when invalid wallet name was entered in create wallet dialog.", - "end": { - "column": 3, - "line": 46 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.invalidWalletName", - "start": { - "column": 21, - "line": 41 - } + "defaultMessage": "!!!24 words (Shelley wallet)", + "description": "Label for the \"labelDaedalusWalletKind24WordShelley\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind24WordShelley" }, { - "defaultMessage": "!!!Insecure", - "description": "Error message shown when insecure wallet password was entered in a password input.", - "end": { - "column": 3, - "line": 52 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.invalidSpendingPassword", - "start": { - "column": 27, - "line": 47 - } + "defaultMessage": "!!!27 words - paper wallet (Byron legacy wallet)", + "description": "Label for the \"labelDaedalusWalletKind27WordPaper\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind27WordPaper" }, { - "defaultMessage": "!!!Weak", - "description": "Error message shown when weak wallet password was entered in a password input.", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.weakSpendingPassword", - "start": { - "column": 24, - "line": 53 - } + "defaultMessage": "!!!What kind of Yoroi wallet would you like to restore?", + "description": "Label for the \"labelYoroiWalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKind" }, { - "defaultMessage": "!!!Strong", - "description": "Error message shown when strong wallet password was entered in a password input.", - "end": { - "column": 3, - "line": 64 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.strongSpendingPassword", - "start": { - "column": 26, - "line": 59 - } + "defaultMessage": "!!!15 words (Byron legacy wallet)", + "description": "Label for the \"labelDaedalusWalletKind15WordByron\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKindByronLegacy15Word" }, { - "defaultMessage": "!!!Doesn't match.", - "description": "Error message shown when wallet password and repeat passwords don't match in create wallet dialog.", - "end": { - "column": 3, - "line": 70 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.invalidRepeatPassword", - "start": { - "column": 25, - "line": 65 - } + "defaultMessage": "!!!15 words (Shelley wallet)", + "description": "Label for the \"labelDaedalusWalletKind15WordShelley\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKindShelley15Word" }, { - "defaultMessage": "!!!The file you are trying to replace is open. Please close it and try again.", - "description": "Error message shown when the file the user tries to replace is open.", - "end": { - "column": 3, - "line": 77 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.paperWalletOpenPdfError", - "start": { - "column": 27, - "line": 71 - } + "defaultMessage": "!!!What kind of hardware wallet would you like to restore?", + "description": "Label for the \"labelHardwareWalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKind" }, { - "defaultMessage": "!!!The file you are trying to replace is open. Please close it and try again.", - "description": "Error message shown when the file the user tries to replace is open.", - "end": { - "column": 3, - "line": 84 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.errors.rewardsOpenCsvError", - "start": { - "column": 23, - "line": 78 - } + "defaultMessage": "!!!24 words - Ledger (Byron legacy wallet)", + "description": "Label for the \"labelHardwareWalletKindLedger\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKindLedger" }, { - "defaultMessage": "!!!Note that password needs to be at least 10 characters and at most 255 characters long.", - "description": "Password instructions note.", - "end": { - "column": 3, - "line": 90 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.passwordInstructions", - "start": { - "column": 24, - "line": 85 - } + "defaultMessage": "!!!24 words - Trezor (Byron legacy wallet)", + "description": "Label for the \"labelHardwareWalletKindTrezor\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKindTrezor" }, { - "defaultMessage": "!!!Cancel", - "description": "The word \"cancel\" reused at several places (like cancel buttons)", - "end": { - "column": 3, - "line": 96 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.cancel", - "start": { - "column": 10, - "line": 91 - } + "defaultMessage": "!!!Hardware wallets store your private keys securely on a physical device so they are immune to common computer threats such as viruses and software bugs. Recovery phrases for hardware wallets should always be kept offline. By entering your hardware wallet recovery phrase in Daedalus, you expose your hardware wallet private keys to the security risks associated with computers and software.", + "description": "Label for the \"hardwareWalletDisclaimer1\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer1" }, { - "defaultMessage": "!!!Close", - "description": "The word \"close\" reused at several places (like cancel buttons)", - "end": { - "column": 3, - "line": 102 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.close", - "start": { - "column": 9, - "line": 97 - } + "defaultMessage": "!!!All of your assets held on your hardware wallet device are associated with the same wallet recovery phrase and its corresponding private key. If you hold assets other than ada on your hardware wallet device, you expose all of those assets to security risks.", + "description": "Label for the \"hardwareWalletDisclaimer2\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer2" }, { - "defaultMessage": "!!!Change", - "description": "The word \"change\" reused at several places (like change buttons)", - "end": { - "column": 3, - "line": 108 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.change", - "start": { - "column": 10, - "line": 103 - } + "defaultMessage": "!!!We strongly recommend that you delete the Byron legacy wallet that was restored from your hardware wallet once you have moved funds into a Shelley wallet.", + "description": "Label for the \"hardwareWalletDisclaimer3\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer3" }, { - "defaultMessage": "!!!Create", - "description": "The word \"create\" reused at several places (like create buttons)", - "end": { - "column": 3, - "line": 114 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.create", - "start": { - "column": 10, - "line": 109 - } + "defaultMessage": "!!!I understand and accept responsibility for the security concerns of restoring a hardware wallet on a computer.", + "description": "Label for the \"hardwareWalletCheckbox1\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox1" }, { - "defaultMessage": "!!!Remove", - "description": "The word \"remove\" reused at several places (like remove buttons)", - "end": { - "column": 3, - "line": 120 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.remove", - "start": { - "column": 10, - "line": 115 - } + "defaultMessage": "!!!I understand that I should delete the Byron legacy wallet I am restoring from a hardware wallet after moving funds to a Shelley wallet.", + "description": "Label for the \"hardwareWalletCheckbox2\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox2" }, { - "defaultMessage": "!!!Save", - "description": "The word \"save\" reused at several places (like save buttons)", - "end": { - "column": 3, - "line": 125 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.save", - "start": { - "column": 8, - "line": 121 - } + "defaultMessage": "!!!I understand that I am exposing all of the assets that are stored on my hardware wallet device, and not just ada, to security risks.", + "description": "Label for the \"hardwareWalletCheckbox2\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox3" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Drop file here", + "description": "Label \"Drop file here\" on the file upload widget.", + "id": "ImageUploadWidget.dropFileHint" }, { - "defaultMessage": "!!!English", - "description": "Language name for \"English\" language.", - "end": { - "column": 3, - "line": 130 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.language.english", - "start": { - "column": 19, - "line": 126 - } + "defaultMessage": "!!!or click to upload", + "description": "Label \"or click to upload\" on the file upload widget.", + "id": "ImageUploadWidget.clickToUploadLabel" + } + ], + "path": "source/renderer/app/components/widgets/forms/ImageUploadWidget.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your changes have been saved", + "description": "Message \"Your changes have been saved\" for inline editing (eg. on Wallet Settings page).", + "id": "inline.editing.dropdown.changesSaved" + } + ], + "path": "source/renderer/app/components/widgets/forms/InlineEditingDropdown.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Syncing", + "description": "syncingLabel for ItemDropdownOption", + "id": "widgets.itemsDropdown.syncingLabel" }, { - "defaultMessage": "!!!Japanese", - "description": "Language name for \"Japanese\" language.", - "end": { - "column": 3, - "line": 135 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.language.japanese", - "start": { - "column": 20, - "line": 131 - } + "defaultMessage": "!!!Syncing {syncingProgress}%", + "description": "syncingLabel for WalletsDropdown", + "id": "widgets.itemsDropdown.syncingLabelProgress" + } + ], + "path": "source/renderer/app/components/widgets/forms/ItemDropdownOption.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Language", + "description": "Label for the language select.", + "id": "profile.settings.languageSelect.label" }, { - "defaultMessage": "!!!Chinese", - "description": "Language name for \"Chinese\" language.", - "end": { - "column": 3, - "line": 140 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.language.chinese", - "start": { - "column": 19, - "line": 136 - } + "defaultMessage": "!!!Number format", + "description": "Label for the number select.", + "id": "profile.settings.numberSelect.label" }, { - "defaultMessage": "!!!Korean", - "description": "Language name for \"Korean\" language.", - "end": { - "column": 3, - "line": 145 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.language.korean", - "start": { - "column": 18, - "line": 141 - } + "defaultMessage": "!!!Date format", + "description": "Label for the date select.", + "id": "profile.settings.dateSelect.label" }, { - "defaultMessage": "!!!German", - "description": "Language name for \"German\" language.", - "end": { - "column": 3, - "line": 150 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.language.german", - "start": { - "column": 18, - "line": 146 - } + "defaultMessage": "!!!Time format", + "description": "Label for the time select.", + "id": "profile.settings.timeSelect.label" }, { - "defaultMessage": "!!!Croatian", - "description": "Language name for \"Croatian\" language.", - "end": { - "column": 3, - "line": 155 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.language.croatian", - "start": { - "column": 20, - "line": 151 - } + "defaultMessage": "!!!Continue", + "description": "Label for the \"Language select\" form submit button.", + "id": "profile.settings.submitLabel" + } + ], + "path": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "\"submit a support request\" link URL in the \"Report a problem\" section on the support settings page.", + "id": "settings.support.reportProblem.linkUrl" + } + ], + "path": "source/renderer/app/containers/settings/categories/SupportSettingsPage.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/", + "description": "\"Learn more\" link URL on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.learnMore.url" }, { - "defaultMessage": "!!!:", - "description": "Colon punctuation.", - "end": { - "column": 3, - "line": 160 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.punctuation.colon", - "start": { - "column": 20, - "line": 156 - } + "defaultMessage": "!!!Wallet", + "description": "Step 1 label text on delegation steps dialog.", + "id": "staking.delegationSetup.steps.step.1.label" }, { - "defaultMessage": "!!!.", - "description": "Final dot punctuation.", - "end": { - "column": 3, - "line": 165 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.punctuation.dot", - "start": { - "column": 18, - "line": 161 - } + "defaultMessage": "!!!Stake pool", + "description": "Step 2 label text on delegation steps dialog.", + "id": "staking.delegationSetup.steps.step.2.label" }, { - "defaultMessage": "!!!Recovery phrase", - "description": "Title for the \"Recovery Phrase\" dialog.", - "end": { - "column": 3, - "line": 170 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "wallet.backup.recovery.phrase.dialog.title", - "start": { - "column": 29, - "line": 166 - } + "defaultMessage": "!!!Confirmation", + "description": "Step 3 label text on delegation steps dialog.", + "id": "staking.delegationSetup.steps.step.3.label" + } + ], + "path": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet", + "description": "Step 1 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.1.label" }, { - "defaultMessage": "!!!Spending Password", - "description": "Label for the \"Wallet password\" input in the create wallet dialog.", - "end": { - "column": 3, - "line": 176 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.spendingPasswordLabel", - "start": { - "column": 25, - "line": 171 - } + "defaultMessage": "!!!Register", + "description": "Step 2 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.2.label" }, { - "defaultMessage": "!!!Password", - "description": "Placeholder for the \"Password\" inputs in the create wallet dialog.", - "end": { - "column": 3, - "line": 182 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.spendingPasswordPlaceholder", - "start": { - "column": 31, - "line": 177 - } + "defaultMessage": "!!!Confirm", + "description": "Step 3 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.3.label" }, { - "defaultMessage": "!!!Continue", - "description": "Label \"Continue\" in dialogs.", - "end": { - "column": 3, - "line": 187 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.dialog.button.continue", - "start": { - "column": 29, - "line": 183 - } + "defaultMessage": "!!!PIN", + "description": "Step 4 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.4.label" }, { - "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", - "description": "URL for the \"Known Issues\" link in the \"Help and support\" section on the support settings page", - "end": { - "column": 3, - "line": 194 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "settings.support.faq.faqLinkURL", - "start": { - "column": 14, - "line": 188 - } + "defaultMessage": "QR code", + "description": "Step 5 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.5.label" + } + ], + "path": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Verifying on-disk blockchain state", + "description": "One of three progress names on the loading screen.", + "id": "loading.screen.validatingChunk" }, { - "defaultMessage": "!!!Cardano", - "description": "Name for \"Cardano\" client.", - "end": { - "column": 3, - "line": 199 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.apiName.cardano", - "start": { - "column": 11, - "line": 195 - } + "defaultMessage": "!!!Verifying the integrity of the blockchain calculating hashes", + "description": "Description of one of three progress names on the loading screen.", + "id": "loading.screen.validatingChunkDescription" }, { - "defaultMessage": "!!!Mainnet", - "description": "\"mainnet\" Cardano network", - "end": { - "column": 3, - "line": 204 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.mainnet", - "start": { - "column": 19, - "line": 200 - } + "defaultMessage": "!!!Replaying ledger from on-disk blockchain", + "description": "One of three progress names on the loading screen.", + "id": "loading.screen.replayedBlock" }, { - "defaultMessage": "!!!Staging", - "description": "\"staging\" Cardano network", - "end": { - "column": 3, - "line": 209 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.staging", - "start": { - "column": 19, - "line": 205 - } + "defaultMessage": "!!!Looking for a ledger snapshot and updating (recomputing) the latest state", + "description": "Description of one of three progress names on the loading screen.", + "id": "loading.screen.replayedBlockDescription" }, { - "defaultMessage": "!!!Testnet", - "description": "\"testnet\" Cardano network", - "end": { - "column": 3, - "line": 214 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.testnet", - "start": { - "column": 19, - "line": 210 - } + "defaultMessage": "!!!Syncing blockchain", + "description": "One of three progress names on the loading screen.", + "id": "loading.screen.pushingLedger" }, { - "defaultMessage": "!!!Shelley QA", - "description": "\"Shelley QA\" Cardano network", - "end": { - "column": 3, - "line": 219 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.shelley_qa", - "start": { - "column": 22, - "line": 215 - } + "defaultMessage": "!!!Performing initial chain selection and finalizing blockchain state", + "description": "Description of one of three progress names on the loading screen.", + "id": "loading.screen.pushingLedgerDescription" + } + ], + "path": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cancel Fund{nextVotingFundNumber} voting registration?", + "description": "Headline for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.headline" }, { - "defaultMessage": "!!!Alonzo Purple", - "description": "\"Alonzo Purple\" Cardano network", - "end": { - "column": 3, - "line": 224 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.alonzo_purple", - "start": { - "column": 25, - "line": 220 - } + "defaultMessage": "!!!Are you sure that you want to cancel Fund{nextVotingFundNumber} voting registration? The transaction fee you paid for the voting registration transaction will be lost and you will need to repeat the registration from the beginning.", + "description": "Content for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.content" }, { - "defaultMessage": "!!!Development", - "description": "\"development\" Cardano network", - "end": { - "column": 3, - "line": 229 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.development", - "start": { - "column": 23, - "line": 225 - } + "defaultMessage": "!!!Cancel registration", + "description": "\"Cancel registration\" button label for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.button.cancelButtonLabel" }, { - "defaultMessage": "!!!Selfnode", - "description": "\"selfnode\" Cardano network", - "end": { - "column": 3, - "line": 234 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "environment.network.selfnode", - "start": { - "column": 20, - "line": 230 - } + "defaultMessage": "!!!Continue registration", + "description": "\"Continue registration\" button label for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.button.confirmButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Register for Fund{nextVotingFundNumber} voting", + "description": "Tile \"Register to vote\" for voting registration", + "id": "voting.votingRegistration.dialog.dialogTitle" + }, + { + "defaultMessage": "!!!Step {step} of {stepCount}", + "description": "Sub title for voting registration", + "id": "voting.votingRegistration.dialog.subtitle" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/VotingRegistrationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Add tokens", + "description": "Token picker title", + "id": "wallet.token.picker.title" }, { - "defaultMessage": "!!!years", - "description": "Label for years value in duration.", - "end": { - "column": 3, - "line": 239 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.duration.years", - "start": { - "column": 9, - "line": 235 - } + "defaultMessage": "!!!All tokens", + "description": "Label for all tokens option", + "id": "wallet.token.picker.allTokensLabel" }, { - "defaultMessage": "!!!months", - "description": "Label for months value in duration.", - "end": { - "column": 3, - "line": 244 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.duration.months", - "start": { - "column": 10, - "line": 240 - } + "defaultMessage": "!!!Favorites", + "description": "Label for favorite tokens option", + "id": "wallet.token.picker.favoriteTokensLabel" }, { - "defaultMessage": "!!!days", - "description": "Label for days value in duration.", - "end": { - "column": 3, - "line": 249 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.duration.days", - "start": { - "column": 8, - "line": 245 - } + "defaultMessage": "!!!Select all", + "description": "Label for select all button label", + "id": "wallet.token.picker.checkAllLabel" }, { - "defaultMessage": "!!!hours", - "description": "Label for hours value in duration.", - "end": { - "column": 3, - "line": 254 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.duration.hours", - "start": { - "column": 9, - "line": 250 - } + "defaultMessage": "!!!{checkedCount} out of {maxTokens} tokens.", + "description": "Label of selected tokens count", + "id": "wallet.token.picker.checkedCountLabel" }, { - "defaultMessage": "!!!minutes", - "description": "Label for minutes value in duration.", - "end": { - "column": 3, - "line": 259 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.duration.minutes", - "start": { - "column": 11, - "line": 255 - } + "defaultMessage": "!!!Cancel", + "description": "Label of cancel button", + "id": "wallet.token.picker.cancelButtonLabel" }, { - "defaultMessage": "!!!seconds", - "description": "Label for seconds value in duration.", - "end": { - "column": 3, - "line": 264 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.duration.seconds", - "start": { - "column": 11, - "line": 260 - } + "defaultMessage": "!!!Add", + "description": "Label of add button", + "id": "wallet.token.picker.addButtonLabel" }, { - "defaultMessage": "!!!from", - "description": "From label of range.", - "end": { - "column": 3, - "line": 269 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.range.from", - "start": { - "column": 13, - "line": 265 - } + "defaultMessage": "!!!Clear selection", + "description": "Label of clear selection button", + "id": "wallet.token.picker.clearAll" }, { - "defaultMessage": "!!!to", - "description": "To label of range.", - "end": { - "column": 3, - "line": 274 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.range.to", - "start": { - "column": 11, - "line": 270 - } + "defaultMessage": "!!!Results do not match search query", + "description": "Text for no results", + "id": "wallet.token.picker.noResults" }, { - "defaultMessage": "!!!Filter", - "description": "Filter label.", - "end": { - "column": 3, - "line": 279 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.filter", - "start": { - "column": 10, - "line": 275 - } + "defaultMessage": "!!!You have already reached a maximum of {maxTokens} tokens for your transaction. To add another token you need to remove one from a list.", + "description": "Max tokens warning", + "id": "wallet.token.picker.maxTokensWarning" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No results matching your query", + "description": "No results on the WalletTokensList", + "id": "wallet.tokens.list.search.noResults" }, { - "defaultMessage": "!!!All", - "description": "All label.", - "end": { - "column": 3, - "line": 284 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.all", - "start": { - "column": 7, - "line": 280 - } + "defaultMessage": "!!!Search Results", + "description": "Search Results on the WalletTokensList", + "id": "wallet.tokens.list.search.searchResults" }, { - "defaultMessage": "!!!Reset", - "description": "Reset label.", - "end": { - "column": 3, - "line": 289 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.reset", - "start": { - "column": 9, - "line": 285 - } + "defaultMessage": "!!!Amount", + "description": "Amount header on the WalletTokensList", + "id": "wallet.tokens.list.column.amount" }, { "defaultMessage": "!!!Token", - "description": "Token description.", - "end": { - "column": 3, - "line": 294 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.token", - "start": { - "column": 9, - "line": 290 - } + "description": "Token header on the WalletTokensList", + "id": "wallet.tokens.list.column.token" }, { - "defaultMessage": "!!!Reveal", - "description": "Reveal label.", - "end": { - "column": 3, - "line": 299 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.reveal", - "start": { - "column": 10, - "line": 295 - } - }, + "defaultMessage": "!!!View all tokens", + "description": "View all button label on the WalletTokensList", + "id": "wallet.tokens.list.viewAllButton.label" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Hide", - "description": "Hide label.", - "end": { - "column": 3, - "line": 304 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.hide", - "start": { - "column": 8, - "line": 300 - } - }, + "defaultMessage": "!!!Search tokens", + "description": "Search placeholder for the Wallet Tokens search", + "id": "wallet.tokens.search.placeholder" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-tokens-search/WalletTokensSearch.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!View", - "description": "View label.", - "end": { - "column": 3, - "line": 309 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.view", - "start": { - "column": 8, - "line": 305 - } + "defaultMessage": "!!!Are you sure?", + "description": "Headline for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.headline" }, { - "defaultMessage": "!!!Copy", - "description": "Copy label.", - "end": { - "column": 3, - "line": 314 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.labels.copy", - "start": { - "column": 8, - "line": 310 - } + "defaultMessage": "!!!You haven’t submitted this information yet. If you close the window now, you will lose your progress and have to start again.", + "description": "Content for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.content" }, { - "defaultMessage": "!!!Daedalus is synchronizing with the Cardano blockchain, and the process is currently {syncPercentage}% complete. This feature will become available once Daedalus is fully synchronized.", - "description": "Info message displayed for features which are unavailable while Daedalus is syncing", - "end": { - "column": 3, - "line": 321 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.info.featureUnavailableWhileSyncing", - "start": { - "column": 34, - "line": 315 - } + "defaultMessage": "!!!Back to wallet restoration", + "description": "\"Cancel\" button label for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.button.cancelButtonLabel" }, { - "defaultMessage": "!!!No results", - "description": "Dropdown search \"No results\" message", - "end": { - "column": 3, - "line": 326 - }, - "file": "source/renderer/app/i18n/global-messages.ts", - "id": "global.search.noResultsMessage", - "start": { - "column": 26, - "line": 322 - } + "defaultMessage": "!!!Close window", + "description": "\"Abort\" button label for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.button.confirmButtonLabel" } ], - "path": "source/renderer/app/i18n/global-messages.json" + "path": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!PDF creation date {date} {time}", - "description": "PDF title", - "end": { - "column": 3, - "line": 12 - }, - "file": "source/renderer/app/utils/addressPDFGenerator.ts", - "id": "wallet.receive.pdf.creationDate", - "start": { - "column": 16, - "line": 8 - } - }, - { - "defaultMessage": "!!!Note:", - "description": "PDF title", - "end": { - "column": 3, - "line": 17 - }, - "file": "source/renderer/app/utils/addressPDFGenerator.ts", - "id": "wallet.receive.pdf.noteLabel", - "start": { - "column": 13, - "line": 13 - } - }, - { - "defaultMessage": "!!!Daedalus Cardano ada address", - "description": "PDF title", - "end": { - "column": 3, - "line": 22 - }, - "file": "source/renderer/app/utils/addressPDFGenerator.ts", - "id": "wallet.receive.pdf.title", - "start": { - "column": 9, - "line": 18 - } + "defaultMessage": "!!!Restore a wallet", + "description": "Title \"Create a new wallet\" in the wallet restore form.", + "id": "wallet.restore.dialog.title" }, { - "defaultMessage": "!!!Daedalus wallet", - "description": "PDF author", - "end": { - "column": 3, - "line": 27 - }, - "file": "source/renderer/app/utils/addressPDFGenerator.ts", - "id": "wallet.receive.pdf.author", - "start": { - "column": 10, - "line": 23 - } + "defaultMessage": "!!!Restore a wallet", + "description": "Title \"Create a new wallet\" in the wallet restore form.", + "id": "wallet.restore.dialog.titleSuccess" }, { - "defaultMessage": "!!!Cardano Network:", - "description": "PDF networkLabel", - "end": { - "column": 3, - "line": 32 - }, - "file": "source/renderer/app/utils/addressPDFGenerator.ts", - "id": "wallet.receive.pdf.networkLabel", - "start": { - "column": 16, - "line": 28 - } + "defaultMessage": "!!!Step {currentStep} of {totalSteps}", + "description": "Step counters in the wallet restore dialog.", + "id": "wallet.restore.dialog.stepsCounter" } ], - "path": "source/renderer/app/utils/addressPDFGenerator.json" + "path": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreDialog.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!Wallet address", - "description": "Paper wallet pdf \"Wallet address\" label.", - "end": { - "column": 3, - "line": 9 - }, - "file": "source/renderer/app/utils/paperWalletPdfGenerator.ts", - "id": "paper.wallet.pdf.walletAddress.label", - "start": { - "column": 22, - "line": 5 - } + "defaultMessage": "!!!Type", + "description": "Step \"Type\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.typeStep" }, { - "defaultMessage": "!!!Paper wallet recovery phrase", - "description": "Paper wallet pdf \"Paper wallet recovery phrase\" label.", - "end": { - "column": 3, - "line": 14 - }, - "file": "source/renderer/app/utils/paperWalletPdfGenerator.ts", - "id": "paper.wallet.pdf.recoveryPhrase.label", - "start": { - "column": 23, - "line": 10 - } + "defaultMessage": "!!!Recovery Phrase", + "description": "Step \"Recovery Phrase\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.mnemonicsStep" }, { - "defaultMessage": "!!!Password", - "description": "Paper wallet pdf \"Password\" label.", - "end": { - "column": 3, - "line": 19 - }, - "file": "source/renderer/app/utils/paperWalletPdfGenerator.ts", - "id": "paper.wallet.pdf.password.label", - "start": { - "column": 17, - "line": 15 - } - }, + "defaultMessage": "!!!Configuration", + "description": "Step \"Configuration\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.configurationStep" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreSteps.tsx" + }, + { + "descriptors": [ { - "defaultMessage": "!!!Daedalus paper wallet certificate", - "description": "PDF title", - "end": { - "column": 3, - "line": 24 - }, - "file": "source/renderer/app/utils/paperWalletPdfGenerator.ts", - "id": "paper.wallet.pdf.info.title", - "start": { - "column": 13, - "line": 20 - } + "defaultMessage": "!!!This wallet does not contain the minimum amount of {calculatedMinRewardsReceiverBalance} ADA which is required to cover the necessary transaction fees. Please select a wallet with a minimum amount of {calculatedMinRewardsReceiverBalance} ADA and click continue.", + "description": "errorMinRewardFunds Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.redeemItnRewards.step1.errorMessage" }, { - "defaultMessage": "!!!Daedalus wallet", - "description": "PDF author", - "end": { - "column": 3, - "line": 29 - }, - "file": "source/renderer/app/utils/paperWalletPdfGenerator.ts", - "id": "paper.wallet.pdf.info.author", - "start": { - "column": 14, - "line": 25 - } + "defaultMessage": "!!!This wallet can’t be used for rewards redemption while it’s being synced.", + "description": "RestoringWallet Error Label on the rewards redemption setup \"choose wallet\" step dialog.", + "id": "staking.redeemItnRewards.step1.errorRestoringWallet" } ], - "path": "source/renderer/app/utils/paperWalletPdfGenerator.json" + "path": "source/renderer/app/containers/staking/dialogs/redeem-itn-rewards/Step1ConfigurationContainer.tsx" }, { "descriptors": [ { - "defaultMessage": "!!!ID", - "description": "Transactions CSV column - ID", - "end": { - "column": 3, - "line": 23 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.id", - "start": { - "column": 12, - "line": 19 - } + "defaultMessage": "!!!Confirm transaction", + "description": "Title for the \"Confirm transaction\" dialog.", + "id": "wallet.send.confirmationDialog.title" }, { - "defaultMessage": "!!!Type", - "description": "Transactions CSV column - Type", - "end": { - "column": 3, - "line": 28 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.type", - "start": { - "column": 14, - "line": 24 - } + "defaultMessage": "!!!Spending password", + "description": "Label for the \"Spending password\" input in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.passphraseLabel" }, { - "defaultMessage": "!!!TOTAL (ADA)", - "description": "Transactions CSV column - TOTAL", - "end": { - "column": 3, - "line": 33 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.amount.total", - "start": { - "column": 15, - "line": 29 - } + "defaultMessage": "!!!Type your spending password", + "description": "Placeholder for the \"Spending password\" inputs in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.passphraseFieldPlaceholder" }, { - "defaultMessage": "!!!Sent amount (ADA)", - "description": "Transactions CSV column - Sent amount", - "end": { - "column": 3, - "line": 38 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.amount.sent", - "start": { - "column": 20, - "line": 34 - } + "defaultMessage": "!!!{Warning}, flight candidate versions of Daedalus are connected to Cardano mainnet. If you confirm this transaction, your ada will be sent for real.", + "description": "Text for the \"Flight candidate\" warning in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.flightCandidateWarning" }, { - "defaultMessage": "!!!Deposit amount (ADA)", - "description": "Transactions CSV column - Deposit amount", - "end": { - "column": 3, - "line": 43 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.amount.deposit", - "start": { - "column": 23, - "line": 39 - } + "defaultMessage": "!!!I understand that real ada will be moved as part of this transaction and that this action is irreversible.", + "description": "Label for the \"Flight candidate\" warning checkbox in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.flightCandidateCheckboxLabel" }, { - "defaultMessage": "!!!Fee (ADA)", - "description": "Transactions CSV column - Fee", - "end": { - "column": 3, - "line": 48 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.amount.fee", - "start": { - "column": 13, - "line": 44 - } + "defaultMessage": "!!!Send", + "description": "Label for the send button in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.submit" }, { - "defaultMessage": "!!!Tokens (unformatted amount)", - "description": "Transactions CSV column - Tokens", - "end": { - "column": 3, - "line": 53 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.tokens", - "start": { - "column": 16, - "line": 49 - } + "defaultMessage": "!!!Back", + "description": "Label for the back button in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.back" }, { - "defaultMessage": "!!!Date & time", - "description": "Transactions CSV column - DateTime", - "end": { - "column": 3, - "line": 58 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.dateTime", - "start": { - "column": 18, - "line": 54 - } + "defaultMessage": "!!!Warning: This transaction will reduce your wallet's balance to less than 2 ada. Your wallet's balance should always be over 2 ada to spend future staking rewards.", + "description": "Warning: This transaction will reduce your wallet's balance", + "id": "wallet.send.confirmationDialog.emptyingWarning" }, { - "defaultMessage": "!!!Status", - "description": "Transactions CSV column - Status", - "end": { - "column": 3, - "line": 63 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.status", - "start": { - "column": 16, - "line": 59 - } + "defaultMessage": "!!!To", + "description": "Label for the \"To\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.addressToLabel" }, { - "defaultMessage": "!!!Addresses from", - "description": "Transactions CSV column - AddressesFrom", - "end": { - "column": 3, - "line": 68 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.addressesFrom", - "start": { - "column": 23, - "line": 64 - } + "defaultMessage": "!!!Amount", + "description": "Label for the \"Amount\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.amountLabel" }, { - "defaultMessage": "!!!Addresses to", - "description": "Transactions CSV column - AddressesTo", - "end": { - "column": 3, - "line": 73 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.addressesTo", - "start": { - "column": 21, - "line": 69 - } + "defaultMessage": "!!!Token", + "description": "Token", + "id": "wallet.send.confirmationDialog.assetLabel" }, { - "defaultMessage": "!!!Withdrawals", - "description": "Transactions CSV column - Withdrawals", - "end": { - "column": 3, - "line": 78 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.column.withdrawals", - "start": { - "column": 21, - "line": 74 - } + "defaultMessage": "!!!Transaction fee", + "description": "Label for the \"Fees\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.feesLabel" }, { - "defaultMessage": "!!!Sent", - "description": "Transactions CSV value - Type Sent", - "end": { - "column": 3, - "line": 83 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.value.type.sent", - "start": { - "column": 17, - "line": 79 - } + "defaultMessage": "!!!Total", + "description": "Label for the \"Total\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.totalLabel" }, { - "defaultMessage": "!!!Received", - "description": "Transactions CSV value - Type Received", - "end": { - "column": 3, - "line": 88 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.value.type.received", - "start": { - "column": 21, - "line": 84 - } + "defaultMessage": "!!!Receiver", + "description": "Label for the \"Receiver\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.receiver.label" }, { - "defaultMessage": "!!!Confirmed", - "description": "Transactions CSV value - Status Confirmed", - "end": { - "column": 3, - "line": 93 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.value.statusConfirmed", - "start": { - "column": 24, - "line": 89 - } + "defaultMessage": "!!!unformatted amount", + "description": "Label for \"unformatted amount\"", + "id": "wallet.send.confirmationDialog.unformattedAmountLabel" }, { - "defaultMessage": "!!!Pending", - "description": "Transactions CSV value - Status Pending", - "end": { - "column": 3, - "line": 98 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.value.statusPending", - "start": { - "column": 22, - "line": 94 - } + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", + "description": "Message for \"unformatted amount\"", + "id": "wallet.send.confirmationDialog.unformattedAmountMessageForSoftwareWallets" }, { - "defaultMessage": "!!!Transactions", - "description": "Transactions CSV \"Transactions\" filename", - "end": { - "column": 3, - "line": 103 - }, - "file": "source/renderer/app/utils/transactionsCsvGenerator.ts", - "id": "wallet.transactions.csv.filenamePrefix", - "start": { - "column": 18, - "line": 99 - } + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", + "description": "Message for \"unformatted amount\"", + "id": "wallet.send.confirmationDialog.unformattedAmountMessageForHardwareWallets" } ], - "path": "source/renderer/app/utils/transactionsCsvGenerator.json" + "path": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts" }, { "descriptors": [ { - "defaultMessage": "!!!Fund{nextVotingFundNumber} Voting Registration", - "description": "PDF title", - "end": { - "column": 3, - "line": 15 - }, - "file": "source/renderer/app/utils/votingPDFGenerator.ts", - "id": "voting.votingRegistration.pdf.title", - "start": { - "column": 9, - "line": 11 - } + "defaultMessage": "!!!Delete Wallet", + "description": "Title for the \"Delete wallet\" dialog.", + "id": "wallet.settings.delete.dialog.title" }, { - "defaultMessage": "!!!Wallet name", - "description": "PDF wallet name title", - "end": { - "column": 3, - "line": 20 - }, - "file": "source/renderer/app/utils/votingPDFGenerator.ts", - "id": "voting.votingRegistration.pdf.walletNameLabel", - "start": { - "column": 19, - "line": 16 - } + "defaultMessage": "!!!Delete", + "description": "Label for the \"Delete (x)\" button in the delete wallet dialog.", + "id": "wallet.settings.delete.dialog.confirmButtonLabel" }, { - "defaultMessage": "!!!voting-registration", - "description": "PDF filename title", - "end": { - "column": 3, - "line": 25 - }, - "file": "source/renderer/app/utils/votingPDFGenerator.ts", - "id": "voting.votingRegistration.pdf.filename", - "start": { - "column": 12, - "line": 21 - } + "defaultMessage": "!!!Do you really want to delete {walletName} wallet?", + "description": "Question if the user really wants to delete the wallet.", + "id": "wallet.settings.delete.dialog.confirmationQuestion" }, { - "defaultMessage": "!!!Cardano network:", - "description": "PDF networkLabel label", - "end": { - "column": 3, - "line": 30 - }, - "file": "source/renderer/app/utils/votingPDFGenerator.ts", - "id": "voting.votingRegistration.pdf.networkLabel", - "start": { - "column": 16, - "line": 26 - } + "defaultMessage": "!!!Make sure you have access to backup before continuing. Otherwise, you will lose all your funds connected to this wallet.", + "description": "Notice to confirm if the user has made a backup of his wallet", + "id": "wallet.settings.delete.dialog.confirmBackupNotice" }, { - "defaultMessage": "!!!Daedalus wallet", - "description": "PDF author", - "end": { - "column": 3, - "line": 35 - }, - "file": "source/renderer/app/utils/votingPDFGenerator.ts", - "id": "voting.votingRegistration.pdf.author", - "start": { - "column": 10, - "line": 31 - } + "defaultMessage": "!!!Enter the name of the wallet to confirm deletion:", + "description": "Instruction for recovery word on delete wallet dialog", + "id": "wallet.settings.delete.dialog.enterRecoveryWordLabel" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Unpair Wallet", + "description": "Title for the \"Unpair wallet\" dialog.", + "id": "wallet.settings.unpair.dialog.title" + }, + { + "defaultMessage": "!!!Delete", + "description": "Label for the \"Unpair (x)\" button in the unpair wallet dialog.", + "id": "wallet.settings.unpair.dialog.confirmButtonLabel" + }, + { + "defaultMessage": "!!!Do you really want to unpair {walletName} wallet?", + "description": "Question if the user really wants to unpair the wallet.", + "id": "wallet.settings.unpair.dialog.confirmationQuestion" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/settings/UnpairWalletDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Toggle discreet mode on.", + "description": "Text for the tooltip on \"discreet mode\" button when mode is on", + "id": "discreetMode.discreetToggle.on" + }, + { + "defaultMessage": "!!!Toggle discreet mode off.", + "description": "Text for the tooltip on \"discreet mode\" button when mode is off", + "id": "discreetMode.discreetToggle.off" + }, + { + "defaultMessage": "!!!You can toggle auto discreet mode in Settings.", + "description": "Text for the tooltip on \"discreet mode\" button description", + "id": "discreetMode.discreetToggle.description" } ], - "path": "source/renderer/app/utils/votingPDFGenerator.json" + "path": "source/renderer/app/features/discreet-mode/ui/discreet-toggle-top-bar/DiscreetToggleTopBar.messages.ts" } ] \ No newline at end of file diff --git a/source/renderer/app/i18n/locales/en-US.json b/source/renderer/app/i18n/locales/en-US.json index 24ab166d43..b7b7998f7c 100755 --- a/source/renderer/app/i18n/locales/en-US.json +++ b/source/renderer/app/i18n/locales/en-US.json @@ -1,4 +1,6 @@ { + "ImageUploadWidget.clickToUploadLabel": "!!!or click to upload", + "ImageUploadWidget.dropFileHint": "!!!Drop file here", "api.errors.ApiMethodNotYetImplementedError": "This API method is not yet implemented.", "api.errors.CanNotCalculateTransactionFeesError": "Cannot calculate fees while there are pending transactions.", "api.errors.ForbiddenMnemonicError": "Invalid recovery phrase. Submitted recovery phrase is one of the example recovery phrases from the documentation and should not be used for wallets holding funds.", @@ -36,6 +38,12 @@ "appUpdate.overlay.postponeInstall.link.label": "Postpone the update", "appUpdate.overlay.subtitle": "You are currently running Daedalus version {currentAppVersion}.
Daedalus version {availableAppVersion} is now available to download.", "appUpdate.overlay.title": "Software update available!", + "asset.transactionConfirmation.assetLabel": "!!!Token #{assetNumber}", + "asset.transactionConfirmation.insufficientBalance": "!!!Insufficient funds. The balance of the token in this wallet is {formattedBalance} (Unformatted: {unformattedBalance})", + "asset.transactionConfirmation.missingToken": "!!!There is no such token in this wallet", + "asset.transactionConfirmation.unformattedAmountLabel": "!!!unformatted amount", + "asset.transactionConfirmation.unformattedAmountMessageForHardwareWallets": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", + "asset.transactionConfirmation.unformattedAmountMessageForSoftwareWallets": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", "assets.assetAmount.unformattedAmount": "Unformatted amount: {amount}", "assets.assetToken.param.assetName": "Asset name", "assets.assetToken.param.blank": "Blank", @@ -131,6 +139,16 @@ "daedalus.diagnostics.dialog.systemTimeIgnored": "System time ignored", "daedalus.diagnostics.dialog.unknownDiskSpace": "Unknown", "daedalus.diagnostics.dialog.unknownDiskSpaceSupportUrl": "https://iohk.zendesk.com/hc/en-us/articles/360035654533", + "dapp.transaction.request.additionalData.label": "!!!Additional data", + "dapp.transaction.request.error.notEnoughAda": "!!!This wallet does not contain the minimum amount of {adaBalanceRequired} which is required for delegation to be available. Please select a wallet with a minimum amount of {adaBalanceRequired}.", + "dapp.transaction.request.fromWalletLabel": "!!!From wallet", + "dapp.transaction.request.metaData.label": "!!!Meta data", + "dapp.transaction.request.receiver.label": "!!!Receiver", + "dapp.transaction.request.subtitle": "!!!triggered from {triggeredFrom}", + "dapp.transaction.request.title": "!!!Transaction request", + "dapp.transaction.request.transactionFee.label": "!!!Transaction fee", + "dapp.transaction.request.walletsDropdown.addWalletLabel": "!!!Add a wallet", + "dapp.transaction.request.walletsDropdown.placeholder": "!!!Select a wallet", "discreetMode.discreetToggle.description": "You can toggle auto discreet mode in Settings.", "discreetMode.discreetToggle.off": "Toggle discreet mode off.", "discreetMode.discreetToggle.on": "Toggle discreet mode on.", @@ -193,6 +211,7 @@ "global.search.noResultsMessage": "No results", "global.spendingPasswordLabel": "Spending Password", "global.spendingPasswordPlaceholder": "Password", + "inline.editing.dropdown.changesSaved": "!!!Your changes have been saved", "inline.editing.input.cancel.label": "cancel", "inline.editing.input.change.label": "change", "inline.editing.input.changesSaved": "Your changes have been saved", @@ -379,6 +398,12 @@ "sidebar.wallets.sortByDateTooltip": "Sort by creation date", "sidebar.wallets.sortByNameButton": "A – Z", "sidebar.wallets.sortByNameTooltip": "Sort by name", + "staking.chart.tooltip.commitments.label": "!!!commitments", + "staking.chart.tooltip.mpc.phase.label": "!!!MPC phase", + "staking.chart.tooltip.openings.label": "!!!openings", + "staking.chart.tooltip.shares.label": "!!!shares", + "staking.chart.tooltip.slot.label": "!!!slot", + "staking.chart.tooltip.transactions.label": "!!!transactions", "staking.countdown.learnMore.linkUrl": "https://iohk.zendesk.com/hc/en-us", "staking.delegationCenter.bodyTitle": "Wallets", "staking.delegationCenter.currentEpochTitle": "Now", @@ -470,6 +495,11 @@ "staking.epochs.tableBody.slots": "slots", "staking.epochs.tableHeader.performance": "Performance", "staking.epochs.tableHeader.sharedRewards": "Shared rewards", + "staking.info.buttonLabel": "!!!Learn more", + "staking.info.description": "!!!Cardano is transitioning from a federated system operated by its creators to a decentralized system operated by a community of stake pool operators. During this transition, blocks will be produced both by the federated nodes and by stake pools. The percentage of blocks produced by stake pools will increase every epoch until block production in the Cardano network becomes fully decentralized.", + "staking.info.heading": "!!!Cardano is transitioning into a decentralized system", + "staking.info.learnMore.linkUrl": "!!!https://iohk.zendesk.com/hc", + "staking.info.percentage": "!!!Currently, {percentage}% of the blocks are produced by the stake pools.", "staking.infoCountdown.buttonLabel": "Learn more", "staking.infoCountdown.countdownTitle": "Alonzo upgrade in", "staking.infoCountdown.description.after": "The ‘Alonzo’ protocol upgrade is now live on Cardano, enabling highly-anticipated new smart contract capabilities, by integrating Plutus scripts onto the blockchain. This important milestone opens up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", @@ -809,6 +839,15 @@ "wallet.create.dialog.validateStep": "Validate", "wallet.create.dialog.walletNameHint": "Enter wallet name", "wallet.dialog.passwordTooltip": "We recommend using a password manager app to manage and store your spending password. Generate a unique password using a password manager and paste it here. Passwords should never be reused.", + "wallet.file.import.dialog.headline": "!!!Import Wallet", + "wallet.file.import.dialog.passwordFieldPlaceholder": "!!!Password", + "wallet.file.import.dialog.repeatPasswordLabel": "!!!Repeat password", + "wallet.file.import.dialog.spendingPasswordLabel": "!!!Wallet password", + "wallet.file.import.dialog.submitLabel": "!!!Import wallet", + "wallet.file.import.dialog.wallet.name.input.hint": "!!!e.g: Shopping Wallet", + "wallet.file.import.dialog.wallet.name.input.label": "!!!Wallet name", + "wallet.file.import.dialog.walletFileHint": "!!!Drop file here or click to choose", + "wallet.file.import.dialog.walletFileLabel": "!!!Import file", "wallet.hardware.deviceStatus.connecting": "Connect your device and enter your PIN to unlock it", "wallet.hardware.deviceStatus.connecting.failed": "Disconnect and reconnect your hardware wallet to restart the process.", "wallet.hardware.deviceStatus.connecting.known": "Connect the \"{walletName}\" device and enter your PIN to unlock it", @@ -1270,6 +1309,7 @@ "wallet.transactions.header.exportCSV.button.label": "Export CSV", "wallet.transactions.header.transactions": "Transactions", "wallet.transactions.no.transactions": "No transactions", + "wallet.transactions.search.hint": "!!!Search transaction", "wallet.transferFunds.dialog1.continueLabel": "Continue", "wallet.transferFunds.dialog1.sourceWallet": "From Byron legacy wallet", "wallet.transferFunds.dialog1.targetWallet": "To Shelley-compatible wallet", diff --git a/source/renderer/app/i18n/locales/ja-JP.json b/source/renderer/app/i18n/locales/ja-JP.json index 01c6a43352..a8fa102e24 100755 --- a/source/renderer/app/i18n/locales/ja-JP.json +++ b/source/renderer/app/i18n/locales/ja-JP.json @@ -1,4 +1,6 @@ { + "ImageUploadWidget.clickToUploadLabel": "!!!or click to upload", + "ImageUploadWidget.dropFileHint": "!!!Drop file here", "api.errors.ApiMethodNotYetImplementedError": "このAPIはまだ実装されていません。", "api.errors.CanNotCalculateTransactionFeesError": "処理中のトランザクションがあるため、手数料を計算できません。", "api.errors.ForbiddenMnemonicError": "ウォレットの復元フレーズが無効です。送信された復元フレーズは参照用復元フレーズ例の1つです。資金を保有しているウォレットには使用できません。", @@ -36,6 +38,12 @@ "appUpdate.overlay.postponeInstall.link.label": "後で更新する", "appUpdate.overlay.subtitle": "このDaedalusはバージョン{currentAppVersion}です。
現在Daedalus {availableAppVersion}がダウンロード可能です", "appUpdate.overlay.title": "ソフトウェアが更新できます!", + "asset.transactionConfirmation.assetLabel": "!!!Token #{assetNumber}", + "asset.transactionConfirmation.insufficientBalance": "!!!Insufficient funds. The balance of the token in this wallet is {formattedBalance} (Unformatted: {unformattedBalance})", + "asset.transactionConfirmation.missingToken": "!!!There is no such token in this wallet", + "asset.transactionConfirmation.unformattedAmountLabel": "!!!unformatted amount", + "asset.transactionConfirmation.unformattedAmountMessageForHardwareWallets": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", + "asset.transactionConfirmation.unformattedAmountMessageForSoftwareWallets": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", "assets.assetAmount.unformattedAmount": "書式なしの金額:{amount}", "assets.assetToken.param.assetName": "アセット名", "assets.assetToken.param.blank": "なし", @@ -131,6 +139,16 @@ "daedalus.diagnostics.dialog.systemTimeIgnored": "システム時刻無視", "daedalus.diagnostics.dialog.unknownDiskSpace": "不明", "daedalus.diagnostics.dialog.unknownDiskSpaceSupportUrl": "https://iohk.zendesk.com/hc/ja/articles/360035654533", + "dapp.transaction.request.additionalData.label": "!!!Additional data", + "dapp.transaction.request.error.notEnoughAda": "!!!This wallet does not contain the minimum amount of {adaBalanceRequired} which is required for delegation to be available. Please select a wallet with a minimum amount of {adaBalanceRequired}.", + "dapp.transaction.request.fromWalletLabel": "!!!From wallet", + "dapp.transaction.request.metaData.label": "!!!Meta data", + "dapp.transaction.request.receiver.label": "!!!Receiver", + "dapp.transaction.request.subtitle": "!!!triggered from {triggeredFrom}", + "dapp.transaction.request.title": "!!!Transaction request", + "dapp.transaction.request.transactionFee.label": "!!!Transaction fee", + "dapp.transaction.request.walletsDropdown.addWalletLabel": "!!!Add a wallet", + "dapp.transaction.request.walletsDropdown.placeholder": "!!!Select a wallet", "discreetMode.discreetToggle.description": "設定で自動ディスクリートモードに切り替えられます", "discreetMode.discreetToggle.off": "ディスクリートモードオフ。", "discreetMode.discreetToggle.on": "ディスクリートモードオン。", @@ -193,6 +211,7 @@ "global.search.noResultsMessage": "検索結果はありません", "global.spendingPasswordLabel": "送金時パスワード", "global.spendingPasswordPlaceholder": "パスワード", + "inline.editing.dropdown.changesSaved": "!!!Your changes have been saved", "inline.editing.input.cancel.label": "キャンセル", "inline.editing.input.change.label": "変更", "inline.editing.input.changesSaved": "変更は保存されました", @@ -379,6 +398,12 @@ "sidebar.wallets.sortByDateTooltip": "作成日で並べ替える", "sidebar.wallets.sortByNameButton": "A – Z", "sidebar.wallets.sortByNameTooltip": "ウォレット名で並べ替える", + "staking.chart.tooltip.commitments.label": "!!!commitments", + "staking.chart.tooltip.mpc.phase.label": "!!!MPC phase", + "staking.chart.tooltip.openings.label": "!!!openings", + "staking.chart.tooltip.shares.label": "!!!shares", + "staking.chart.tooltip.slot.label": "!!!slot", + "staking.chart.tooltip.transactions.label": "!!!transactions", "staking.countdown.learnMore.linkUrl": "https://iohk.zendesk.com/hc/ja", "staking.delegationCenter.bodyTitle": "ウォレット", "staking.delegationCenter.currentEpochTitle": "現在", @@ -470,6 +495,11 @@ "staking.epochs.tableBody.slots": "スロット", "staking.epochs.tableHeader.performance": "パフォーマンス", "staking.epochs.tableHeader.sharedRewards": "報酬の割当て", + "staking.info.buttonLabel": "!!!Learn more", + "staking.info.description": "!!!Cardano is transitioning from a federated system operated by its creators to a decentralized system operated by a community of stake pool operators. During this transition, blocks will be produced both by the federated nodes and by stake pools. The percentage of blocks produced by stake pools will increase every epoch until block production in the Cardano network becomes fully decentralized.", + "staking.info.heading": "!!!Cardano is transitioning into a decentralized system", + "staking.info.learnMore.linkUrl": "!!!https://iohk.zendesk.com/hc", + "staking.info.percentage": "!!!Currently, {percentage}% of the blocks are produced by the stake pools.", "staking.infoCountdown.buttonLabel": "もっと知る", "staking.infoCountdown.countdownTitle": "Alonzoアップグレードまであと", "staking.infoCountdown.description.after": "Alonzoプロトコルアップグレードは現在Cardanoで稼働しています。ブロックチェーンにPlutusスクリプトを統合することにより、心待ちにされていた新しいスマートコントラクト機能をCardanoにもたらしています。この重要なマイルストンによって、スマートコントラクト、DeFi機能、CardanoにおけるDApp開発というまったく新しい世界が広がります。", @@ -809,6 +839,15 @@ "wallet.create.dialog.validateStep": "!!!Validate", "wallet.create.dialog.walletNameHint": "ウォレット名を入力してください", "wallet.dialog.passwordTooltip": "送信時パスワードの管理および保存には、パスワード管理アプリの使用が推奨されます。パスワード管理アプリで専用パスワードを生成し、ここに張り付けてください。パスワードは絶対に再利用しないでください。", + "wallet.file.import.dialog.headline": "!!!Import Wallet", + "wallet.file.import.dialog.passwordFieldPlaceholder": "!!!Password", + "wallet.file.import.dialog.repeatPasswordLabel": "!!!Repeat password", + "wallet.file.import.dialog.spendingPasswordLabel": "!!!Wallet password", + "wallet.file.import.dialog.submitLabel": "!!!Import wallet", + "wallet.file.import.dialog.wallet.name.input.hint": "!!!e.g: Shopping Wallet", + "wallet.file.import.dialog.wallet.name.input.label": "!!!Wallet name", + "wallet.file.import.dialog.walletFileHint": "!!!Drop file here or click to choose", + "wallet.file.import.dialog.walletFileLabel": "!!!Import file", "wallet.hardware.deviceStatus.connecting": "デバイスを接続してPINを入力し、ロックを解除してください", "wallet.hardware.deviceStatus.connecting.failed": "ハードウェアウォレットを切断して再接続し、もう一度プロセスを始めてください。", "wallet.hardware.deviceStatus.connecting.known": "「{walletName}」デバイスを接続してPINを入力し、ロックを解除してください", @@ -1270,6 +1309,7 @@ "wallet.transactions.header.exportCSV.button.label": "CSVをエクスポートする", "wallet.transactions.header.transactions": "トランザクション", "wallet.transactions.no.transactions": "トランザクションはありません", + "wallet.transactions.search.hint": "!!!Search transaction", "wallet.transferFunds.dialog1.continueLabel": "続ける", "wallet.transferFunds.dialog1.sourceWallet": "送金元Byronレガシーウォレット", "wallet.transferFunds.dialog1.targetWallet": "入金先Shelley対応ウォレット", diff --git a/source/renderer/app/index.tsx b/source/renderer/app/index.tsx index 2579b4d148..1dd930ec81 100755 --- a/source/renderer/app/index.tsx +++ b/source/renderer/app/index.tsx @@ -14,7 +14,7 @@ import Action from './actions/lib/Action'; import translations from './i18n/translations'; import '!style-loader!css-loader!sass-loader!./themes/index.global.scss'; // eslint-disable-line -import { setupApi } from './api/index'; +import { setupApi } from './api'; import LocalStorageApi from './api/utils/localStorage'; import { DiscreetModeFeatureProvider, diff --git a/source/renderer/app/stores/AppUpdateStore.ts b/source/renderer/app/stores/AppUpdateStore.ts index 16e589bf40..cdc21ebc0a 100644 --- a/source/renderer/app/stores/AppUpdateStore.ts +++ b/source/renderer/app/stores/AppUpdateStore.ts @@ -177,8 +177,9 @@ export default class AppUpdateStore extends Store { // @ts-ignore ts-migrate(2749) FIXME: 'News' refers to a value, but is being used as a t... Remove this comment to see the full error message _checkNewAppUpdate = async (update: News) => { const { version, url } = this.getUpdateInfo(update); - // @ts-ignore ts-migrate(1320) FIXME: Type of 'await' operand must either be a valid pro... Remove this comment to see the full error message - const appUpdateCompleted = await this.getAppUpdateCompletedRequest.execute(); + const appUpdateCompleted = + // @ts-ignore ts-migrate(1320) FIXME: Type of 'await' operand must either be a valid pro... Remove this comment to see the full error message + await this.getAppUpdateCompletedRequest.execute(); /* * The update was already installed and the installer was already deleted. @@ -207,8 +208,9 @@ export default class AppUpdateStore extends Store { // Cancels if the update download is already in progress if (this.isUpdateDownloading) return false; // Is there an 'Automatic Update Failed' flag? - // @ts-ignore ts-migrate(1320) FIXME: Type of 'await' operand must either be a valid pro... Remove this comment to see the full error message - const isAutomaticUpdateFailed = await this.getAppAutomaticUpdateFailedRequest.execute(); + const isAutomaticUpdateFailed = + // @ts-ignore ts-migrate(1320) FIXME: Type of 'await' operand must either be a valid pro... Remove this comment to see the full error message + await this.getAppAutomaticUpdateFailedRequest.execute(); if (isAutomaticUpdateFailed) { runInAction(() => { diff --git a/source/renderer/app/stores/ProfileStore.ts b/source/renderer/app/stores/ProfileStore.ts index 6be759acb9..cf7f724a19 100644 --- a/source/renderer/app/stores/ProfileStore.ts +++ b/source/renderer/app/stores/ProfileStore.ts @@ -275,7 +275,8 @@ export default class ProfileStore extends Store { @computed get termsOfUse(): string { - return require(`../i18n/locales/terms-of-use/${this.currentLocale}.md`); + return require(`../i18n/locales/terms-of-use/${this.currentLocale}.md`) + .default; } @computed diff --git a/source/renderer/app/stores/StakingStore.ts b/source/renderer/app/stores/StakingStore.ts index 127d5b2fc7..704fa767c6 100644 --- a/source/renderer/app/stores/StakingStore.ts +++ b/source/renderer/app/stores/StakingStore.ts @@ -169,8 +169,10 @@ export default class StakingStore extends Store { @observable calculateDelegationFeeRequest: Request< DelegationCalculateFeeResponse + > = new Request( // @ts-ignore ts-migrate(2339) FIXME: Property 'api' does not exist on type 'StakingStor... Remove this comment to see the full error message - > = new Request(this.api.ada.calculateDelegationFee); + this.api.ada.calculateDelegationFee + ); // @REDEEM TODO: Proper type it when the API endpoint is implemented. @observable getRedeemItnRewardsFeeRequest: Request = new Request( diff --git a/source/renderer/app/stores/VotingStore.ts b/source/renderer/app/stores/VotingStore.ts index f9e9ce5c3c..5ab01a9511 100644 --- a/source/renderer/app/stores/VotingStore.ts +++ b/source/renderer/app/stores/VotingStore.ts @@ -351,9 +351,9 @@ export default class VotingStore extends Store { index, absoluteSlotNumber, }); - // @ts-ignore ts-migrate(1320) FIXME: Type of 'await' operand must either be a valid pro... Remove this comment to see the full error message - transaction = await this.createVotingRegistrationTransactionRequest.execute( - { + transaction = + // @ts-ignore ts-migrate(1320) FIXME: Type of 'await' operand must either be a valid pro... Remove this comment to see the full error message + await this.createVotingRegistrationTransactionRequest.execute({ address: address.id, addressHex: stakeAddressHex, amount, @@ -363,8 +363,7 @@ export default class VotingStore extends Store { stakeKey, signature: signature.toString('hex'), absoluteSlotNumber, - } - ); + }); } this._setTransactionId(transaction.id); diff --git a/source/renderer/app/types/enumTypes.ts b/source/renderer/app/types/enumTypes.ts new file mode 100644 index 0000000000..0d460d5ff0 --- /dev/null +++ b/source/renderer/app/types/enumTypes.ts @@ -0,0 +1,10 @@ +type $ElementType< + T extends { [P in K & any]: any }, + K extends keyof T | number +> = T[K]; + +export type EnumMap< + K extends string, + V, + O extends Record = any +> = O & Record>; diff --git a/source/renderer/app/utils/shelleyLedger.ts b/source/renderer/app/utils/shelleyLedger.ts index 55aa38a9dd..28f26b9ca1 100644 --- a/source/renderer/app/utils/shelleyLedger.ts +++ b/source/renderer/app/utils/shelleyLedger.ts @@ -158,10 +158,10 @@ export const prepareTokenBundle = (assets: CoinSelectionAssetsType) => { return tokenBundle; }; -export const ShelleyTxOutput = ( +export function ShelleyTxOutput( output: CoinSelectionOutput, addressStyle: AddressStyle -) => { +) { const { address, amount, derivationPath, assets } = output; const adaCoinQuantity = amount.quantity; const coins = @@ -186,12 +186,12 @@ export const ShelleyTxOutput = ( stakingPath: isChange ? [2147485500, 2147485463, 2147483648, 2, 0] : null, encodeCBOR, }; -}; -export const ShelleyTxCert = (cert: { +} +export function ShelleyTxCert(cert: { type: string; accountAddress: string; pool: string | null | undefined; -}) => { +}) { const { type, accountAddress, pool } = cert; let hash; let poolHash; @@ -221,7 +221,7 @@ export const ShelleyTxCert = (cert: { poolHash: poolHash || null, encodeCBOR, }; -}; +} export const ShelleyTxWithdrawal = ( withdrawals: Array ) => { diff --git a/source/renderer/app/utils/walletUtils.ts b/source/renderer/app/utils/walletUtils.ts index 52fa934f70..a3611fee61 100644 --- a/source/renderer/app/utils/walletUtils.ts +++ b/source/renderer/app/utils/walletUtils.ts @@ -1,5 +1,5 @@ import BigNumber from 'bignumber.js'; -import Wallet from '../domains/Wallet'; // @ts-ignore TODO: fix this in flowconfig +import Wallet from '../domains/Wallet'; export default import('@iohk-jormungandr/wallet-js').then((modules) => modules); const MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS = 10; // 1 ADA | unit: ADA diff --git a/source/renderer/index.ejs b/source/renderer/index.ejs new file mode 100644 index 0000000000..a4a1f0b727 --- /dev/null +++ b/source/renderer/index.ejs @@ -0,0 +1,26 @@ + + + + + + Daedalus + + + +
+ + diff --git a/source/renderer/index.html b/source/renderer/index.html deleted file mode 100644 index 3240d9fa0f..0000000000 --- a/source/renderer/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - -
- - - - diff --git a/source/renderer/webpack.config.js b/source/renderer/webpack.config.js index 9e0f2430a4..4f06240f38 100644 --- a/source/renderer/webpack.config.js +++ b/source/renderer/webpack.config.js @@ -1,29 +1,34 @@ const path = require('path'); const webpack = require('webpack'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const AutoDllPlugin = require('autodll-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); -// Process env flags from buildkite -const isTestEnv = process.env.NODE_ENV === 'test'; -const isCi = process.env.CI && process.env.CI !== ''; +const isDevelopment = process.env.NODE_ENV === 'development'; module.exports = { - mode: 'development', - devtool: 'inline-cheap-module-source-map', - entry: './source/renderer/index.ts', - optimization: { - // https://github.com/webpack/webpack/issues/7470 - nodeEnv: false, + entry: { + index: './source/renderer/index.ts', }, output: { - path: path.join(__dirname, './dist/renderer'), - filename: 'index.js', + path: path.join(process.cwd(), 'dist/renderer'), + assetModuleFilename: 'assets/[hash][ext][query]', }, - // https://github.com/chentsulin/webpack-target-electron-renderer#how-this-module-works - target: isTestEnv ? 'electron-renderer' : 'web', - cache: true, - resolve: { - extensions: ['.tsx', '.ts', '.js', '.json'], + mode: isDevelopment ? 'development' : 'production', + target: 'web', + devtool: isDevelopment ? 'eval-source-map' : 'source-map', + optimization: { + minimize: false, + }, + devServer: { + hot: true, + static: { + directory: path.join(__dirname, '../../dist'), + }, + client: { + overlay: true, + progress: true, + }, }, module: { rules: [ @@ -31,29 +36,35 @@ module.exports = { test: /\.tsx?$/, include: /source/, exclude: /source\/main/, - use: (isCi ? [] : ['cache-loader', 'thread-loader']).concat([ - { - loader: 'babel-loader', - options: { - presets: [ - '@babel/preset-env', - '@babel/preset-react', - '@babel/preset-typescript', - ], + loader: 'swc-loader', + options: { + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + decorators: true, + }, + transform: { + react: { + refresh: isDevelopment, + }, }, + target: 'es2019', + loose: false, }, - ]), + }, }, { test: /\.scss/, use: [ - MiniCssExtractPlugin.loader, + isDevelopment ? 'style-loader' : MiniCssExtractPlugin.loader, { loader: 'css-loader', options: { + modules: { + localIdentName: '[name]_[local]', + }, sourceMap: true, - modules: true, - localIdentName: '[name]_[local]', importLoaders: true, }, }, @@ -61,6 +72,7 @@ module.exports = { loader: 'sass-loader', options: { sourceMap: true, + implementation: require.resolve('sass'), }, }, ], @@ -79,41 +91,42 @@ module.exports = { { test: /\.(woff2?|eot|ttf|otf|png|jpe?g|gif|svg)(\?.*)?$/, exclude: /\.inline\.svg$/, - use: { - loader: 'file-loader', - options: { - name: '[name].[ext]', - outputPath: 'assets/', - }, - }, + type: 'asset/resource', }, { test: /\.md$/, - use: [ - { loader: 'html-loader', options: { importLoaders: true } }, - { loader: 'markdown-loader?gfm=false' }, - ], + use: ['html-loader', 'markdown-loader?gfm=false'], }, ], }, + resolve: { + symlinks: true, // for native libraries + extensions: ['.ts', '.tsx', '.js', '.json'], + alias: { + react: require.resolve('react'), // else, it’s added a few times to index.js 🙄 + }, + fallback: { + process: require.resolve('process/browser'), + path: require.resolve('path-browserify'), + crypto: require.resolve('crypto-browserify'), + stream: require.resolve('stream-browserify'), + http: require.resolve('stream-http'), + https: require.resolve('https-browserify'), + url: require.resolve('url'), + buffer: require.resolve('buffer/'), // https://www.npmjs.com/package/buffer#usage + }, + }, + experiments: { + syncWebAssembly: true, + }, plugins: [ - new MiniCssExtractPlugin({ - filename: 'styles.css', + new webpack.ProvidePlugin({ + process: 'process/browser', + Buffer: ['buffer', 'Buffer'], }), new webpack.DefinePlugin( Object.assign( - { - 'process.env.API_VERSION': JSON.stringify( - process.env.API_VERSION || 'dev' - ), - 'process.env.NETWORK': JSON.stringify( - process.env.NETWORK || 'development' - ), - 'process.env.MOBX_DEV_TOOLS': process.env.MOBX_DEV_TOOLS || 0, - 'process.env.BUILD_NUMBER': JSON.stringify( - process.env.BUILD_NUMBER || 'dev' - ), - }, + {}, process.env.NODE_ENV === 'production' ? { // Only bake in NODE_ENV value for production builds. @@ -122,43 +135,19 @@ module.exports = { : {} ) ), - new AutoDllPlugin({ - inherit: !isCi, - filename: 'vendor.dll.js', - context: path.join(__dirname, '..'), - entry: { - vendor: [ - 'aes-js', - 'bignumber.js', - 'bip39', - 'blakejs', - 'bs58', - 'classnames', - 'es6-error', - 'history', - 'humanize-duration', - 'lodash', - 'mobx', - 'mobx-react', - 'mobx-react-form', - 'mobx-react-router', - 'moment', - 'pbkdf2', - 'qrcode.react', - 'react', - 'react-copy-to-clipboard', - 'react-datetime', - 'react-dom', - 'react-router', - 'react-router-dom', - 'react-svg-inline', - 'recharts', - 'route-parser', - 'safe-buffer', - 'unorm', - 'validator', - ], - }, + new webpack.EnvironmentPlugin({ + API_VERSION: 'dev', + NETWORK: 'development', + BUILD_NUMBER: 'dev', + }), + new HtmlWebpackPlugin({ + template: 'source/renderer/index.ejs', + inject: 'body', + scriptLoading: 'blocking', + }), + new MiniCssExtractPlugin({ + filename: 'styles.css', }), + isDevelopment && new ReactRefreshWebpackPlugin(), ].filter(Boolean), }; diff --git a/storybook/addons.ts b/storybook/addons.ts deleted file mode 100644 index 8d6b378085..0000000000 --- a/storybook/addons.ts +++ /dev/null @@ -1,4 +0,0 @@ -import '@storybook/addon-knobs/register'; -import '@storybook/addon-actions/register'; -import '@storybook/addon-links/register'; -import './addons/DaedalusMenu/register'; diff --git a/storybook/addons/DaedalusMenu/DaedalusMenu.tsx b/storybook/addons/DaedalusMenu/DaedalusMenu.tsx index 8c5775f65f..24682e513c 100644 --- a/storybook/addons/DaedalusMenu/DaedalusMenu.tsx +++ b/storybook/addons/DaedalusMenu/DaedalusMenu.tsx @@ -60,12 +60,6 @@ class DaedalusMenu extends Component { // @ts-ignore ts-migrate(2322) FIXME: Type 'URLSearchParams' is not assignable to type '... Remove this comment to see the full error message parent.window.location.hash = hash; }; - handleSetParam = (param: string, value: string) => { - const query = set({}, param, value); - this.setState(query); - this.setHashParam(param, value); - sessionStorage.setItem(param, value); // updateParam(query); - }; render() { const { themeName, localeName, osName } = this.state; diff --git a/storybook/addons/DaedalusMenu/index.ts b/storybook/addons/DaedalusMenu/index.ts index c1cfdc8e5a..07c83e5cfa 100644 --- a/storybook/addons/DaedalusMenu/index.ts +++ b/storybook/addons/DaedalusMenu/index.ts @@ -8,12 +8,16 @@ export const setInitialState = (initialState: Record) => value, }) ); + channel.on('daedalusMenu/updateParam', (query) => { channel.emit('daedalusMenu/paramUpdated', query); }); + export const updateParam = (query: Record) => channel.emit('daedalusMenu/updateParam', query); -export const onReceiveParam = (cb: (...args: Array) => any) => - channel.on('daedalusMenu/updateParam', (query) => { - cb(query); - }); + +export const onReceiveParam = (cb: (...args: Array) => any) => { + const eventHandler = (query) => cb(query); + channel.on('daedalusMenu/updateParam', eventHandler); + return () => channel.off('daedalusMenu/updateParam', eventHandler); +}; diff --git a/storybook/addons/DaedalusMenu/register.tsx b/storybook/addons/DaedalusMenu/register.tsx index 46e5bd0e7a..d7cc481dd4 100644 --- a/storybook/addons/DaedalusMenu/register.tsx +++ b/storybook/addons/DaedalusMenu/register.tsx @@ -2,15 +2,13 @@ import React from 'react'; import addons, { types } from '@storybook/addons'; import DaedalusMenu from './DaedalusMenu'; -/* eslint-disable react/display-name */ const ADDON_ID = 'daedalusmenu'; const PANEL_ID = `${ADDON_ID}/panel`; -addons.register(ADDON_ID, (api) => { - const render = () => ; - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ type: types; render: () => JSX... Remove this comment to see the full error message +addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { + title: 'Daedalus Menu', type: types.TOOL, - render, + render: () => , }); }); diff --git a/storybook/config.tsx b/storybook/config.tsx deleted file mode 100644 index 60509e0b5e..0000000000 --- a/storybook/config.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import './monkeyPatchDateTime'; -import React from 'react'; -import { configure, addDecorator } from '@storybook/react'; -import StoryWrapper from './stories/_support/StoryWrapper'; -import '!style-loader!css-loader!sass-loader!../source/renderer/app/themes/index.global.scss'; // eslint-disable-line - -addDecorator((story) => { - return {story}; -}); - -function loadStories() { - require('./stories'); -} - -configure(loadStories, module); diff --git a/storybook/main.ts b/storybook/main.ts new file mode 100644 index 0000000000..ed45a86576 --- /dev/null +++ b/storybook/main.ts @@ -0,0 +1,116 @@ +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const webpack = require('webpack'); + +module.exports = { + core: { + builder: 'webpack5', + }, + stories: ['../storybook/stories/index.ts'], + addons: [ + '@storybook/addon-knobs', + '@storybook/addon-actions', + '@storybook/addon-links', + require.resolve('./addons/DaedalusMenu/register.tsx'), + ], + // Make whatever fine-grained changes you need + webpackFinal: async (config, { configType }) => { + // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION' + // You can change the configuration based on that. + // 'PRODUCTION' is used when building the static version of storybook. + // Make whatever fine-grained changes you need + + config.plugins = [ + ...config.plugins, + new webpack.ProvidePlugin({ + Buffer: ['buffer', 'Buffer'], + }), + new webpack.ProvidePlugin({ + process: 'process/browser', + }), + ]; + config.experiments = { + syncWebAssembly: true, + }; + config.resolve = { + extensions: ['.ts', '.tsx', '.js', '.json'], + fallback: { + process: require.resolve('process/browser'), + path: require.resolve('path-browserify'), + crypto: require.resolve('crypto-browserify'), + stream: require.resolve('stream-browserify'), + http: require.resolve('stream-http'), + https: require.resolve('https-browserify'), + url: require.resolve('url'), + buffer: require.resolve('buffer/'), // https://www.npmjs.com/package/buffer#usage + os: require.resolve('os-browserify/browser'), + }, + }; + config.module.rules.push( + { + test: /\.tsx?$/, + loader: 'swc-loader', + options: { + parseMap: true, + sourceMaps: true, + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + decorators: true, + }, + transform: { + react: { + runtime: 'automatic', + }, + }, + target: 'es2019', + loose: false, + }, + }, + }, + { + test: /\.scss/, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + modules: { + localIdentName: '[name]_[local]', + }, + sourceMap: true, + importLoaders: true, + }, + }, + { + loader: 'sass-loader', + options: { + sourceMap: true, + implementation: require.resolve('sass'), + }, + }, + ], + }, + { + test: /\.css/, + use: [ + MiniCssExtractPlugin.loader, + { loader: 'css-loader', options: { sourceMap: true } }, + ], + }, + { + test: /\.inline\.svg$/, + use: 'svg-inline-loader', + type: 'javascript/auto', + }, + { + test: /\.(woff2?|eot|ttf|otf|png|jpe?g|gif|svg)(\?.*)?$/, + exclude: /\.inline\.svg$/, + type: 'asset/resource', + } + ); + + // Return the altered config + return config; + }, +}; diff --git a/storybook/presets.ts b/storybook/presets.ts deleted file mode 100644 index ba481f0ea5..0000000000 --- a/storybook/presets.ts +++ /dev/null @@ -1,5 +0,0 @@ -import path from 'path'; - -// This preset fixes loading DaedalusMenu addon -// https://github.com/storybookjs/storybook/issues/7196#issuecomment-505858914 -export default [path.resolve(__dirname, './ts-preset')]; diff --git a/storybook/preview-head.html b/storybook/preview-head.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/storybook/preview.tsx b/storybook/preview.tsx new file mode 100644 index 0000000000..ac159533b0 --- /dev/null +++ b/storybook/preview.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import timemachine from 'timemachine'; +import StoryWrapper from './stories/_support/StoryWrapper'; +import '!style-loader!css-loader!sass-loader!../source/renderer/app/themes/index.global.scss'; // eslint-disable-line + +import './stories/_support/environment'; + +export const decorators = [(story) => {story}]; +timemachine.config({ + dateString: 'Sat, 01 Jan 2022 10:00:00 GMT', +}); diff --git a/storybook/stories/_support/StoryWrapper.tsx b/storybook/stories/_support/StoryWrapper.tsx index 54f49ff385..a3e6c8976c 100644 --- a/storybook/stories/_support/StoryWrapper.tsx +++ b/storybook/stories/_support/StoryWrapper.tsx @@ -25,18 +25,26 @@ type State = { osName: string; }; export default class StoryWrapper extends Component { + unregisterReceiveParam: () => void = () => {}; constructor(props: Props) { super(props); - onReceiveParam(this.handleReceiveParam); const { themeName, localeName, osName } = getInitialState(); this.state = { themeName, localeName, osName, }; + } + + componentDidMount() { + this.unregisterReceiveParam = onReceiveParam(this.handleReceiveParam); setInitialState(this.state); } + componentWillUnmount() { + this.unregisterReceiveParam(); + } + handleReceiveParam = ({ param, value, diff --git a/storybook/stories/_support/utils.ts b/storybook/stories/_support/utils.ts index 9ce6d2c72f..6124f103b4 100644 --- a/storybook/stories/_support/utils.ts +++ b/storybook/stories/_support/utils.ts @@ -109,8 +109,8 @@ export const generateWallet = ( total: [], }, reward: string | number = 0, - delegatedStakePool?: StakePool, - hasPassword?: boolean, + delegatedStakePool: StakePool = null, + hasPassword = false, status: SyncStateStatus = WalletSyncStateStatuses.READY, isHardwareWallet = false, id: string = generateHash() @@ -171,10 +171,10 @@ export const generateAssetToken = ( policyId: string, assetName = '', fingerprint = '', - quantity: number, - metadata: AssetMetadata | null | undefined, - decimals: number | null | undefined, - recommendedDecimals: number | null | undefined + quantity = 0, + metadata?: AssetMetadata | null, + decimals?: number | null, + recommendedDecimals?: number | null ): AssetToken => ({ policyId, assetName, @@ -238,7 +238,7 @@ export const generateRandomTransaction = (index: number) => generateTransaction( TransactionTypes.INCOME, moment().subtract(index, 'days').toDate(), - new BigNumber(faker.random.number(5)) + new BigNumber(faker.datatype.number(5)) ); export const generateMultipleTransactions = ( amount: number diff --git a/storybook/stories/assets/Asset.stories.tsx b/storybook/stories/assets/Asset.stories.tsx index c343ae8637..e380b5e994 100644 --- a/storybook/stories/assets/Asset.stories.tsx +++ b/storybook/stories/assets/Asset.stories.tsx @@ -6,7 +6,7 @@ import { withKnobs, boolean, number, text } from '@storybook/addon-knobs'; import StoryDecorator from '../_support/StoryDecorator'; import Asset from '../../../source/renderer/app/components/assets/Asset'; -storiesOf('Assets|Asset pill', module) +storiesOf('Assets / Asset pill', module) .addDecorator((story) => {story()}) .addDecorator(withKnobs) // ====== Stories ====== .add('Default', () => { diff --git a/storybook/stories/assets/AssetSettingsDialog.stories.tsx b/storybook/stories/assets/AssetSettingsDialog.stories.tsx index e8d0480f98..7b94cddc94 100644 --- a/storybook/stories/assets/AssetSettingsDialog.stories.tsx +++ b/storybook/stories/assets/AssetSettingsDialog.stories.tsx @@ -18,7 +18,7 @@ const asset = { recommendedDecimals: null, metadata: null, }; -storiesOf('Assets|AssetSettingsDialog', module) +storiesOf('Assets / AssetSettingsDialog', module) .addDecorator((story) => ( {story()} diff --git a/storybook/stories/common/ItemsDropdown.stories.tsx b/storybook/stories/common/ItemsDropdown.stories.tsx index c8d0c7cbfa..00231ff862 100644 --- a/storybook/stories/common/ItemsDropdown.stories.tsx +++ b/storybook/stories/common/ItemsDropdown.stories.tsx @@ -79,7 +79,7 @@ const stakePoolsOptions = stakePoolsList.reduce((obj, pool) => { obj[`[${ticker}] ${name} - (${ranking})`] = pool; return obj; }, {}); -storiesOf('Common|ItemsDropdown', module) +storiesOf('Common / ItemsDropdown', module) .addDecorator((story: any, context: any) => { if (context.name === 'CountdownWidget') { return story(); diff --git a/storybook/stories/common/Widgets.stories.tsx b/storybook/stories/common/Widgets.stories.tsx index bf0c777339..8097e48d98 100644 --- a/storybook/stories/common/Widgets.stories.tsx +++ b/storybook/stories/common/Widgets.stories.tsx @@ -79,7 +79,7 @@ const messages = defineMessages({ description: 'Save description.', }, }); -storiesOf('Common|Widgets', module) +storiesOf('Common / Widgets', module) .addDecorator((story: any, context: any) => { if (context.name === 'CountdownWidget') { return story(); diff --git a/storybook/stories/dapps/TransactionRequest.stories.tsx b/storybook/stories/dapps/TransactionRequest.stories.tsx index 0e6e2540ee..8ca327eeec 100644 --- a/storybook/stories/dapps/TransactionRequest.stories.tsx +++ b/storybook/stories/dapps/TransactionRequest.stories.tsx @@ -11,14 +11,12 @@ import StoryProvider, { WALLETS_V2 } from '../_support/StoryProvider'; import { generateAssetToken } from '../_support/utils'; const allAssets = [ - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 4. generateAssetToken( '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', 'token1rjklcrnsdzqp65wjgrg55sy9723kw09m5z2345', 50 ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c', '', @@ -28,16 +26,12 @@ const allAssets = [ name: 'MakerDAO', ticker: 'DAI', description: 'Test description', - unit: { - name: 'DAI', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), ]; -storiesOf('dApps|TransactionRequest', module) +storiesOf('dApps / TransactionRequest', module) .addDecorator((story) => ( {story()} diff --git a/storybook/stories/navigation/Sidebar.stories.tsx b/storybook/stories/navigation/Sidebar.stories.tsx index 6b89507b5b..9c8a10ca33 100644 --- a/storybook/stories/navigation/Sidebar.stories.tsx +++ b/storybook/stories/navigation/Sidebar.stories.tsx @@ -105,7 +105,7 @@ const sidebarMenusHardware = observable({ }, }); let emptyMenus; -storiesOf('Navigation|Sidebar', module) +storiesOf('Navigation / Sidebar', module) .addDecorator((story) => ( {story()} diff --git a/storybook/stories/navigation/SidebarCategory.stories.tsx b/storybook/stories/navigation/SidebarCategory.stories.tsx index ea9ccb3ced..35d4b83f06 100644 --- a/storybook/stories/navigation/SidebarCategory.stories.tsx +++ b/storybook/stories/navigation/SidebarCategory.stories.tsx @@ -12,7 +12,7 @@ const category = { route: 'WALLETS', tooltipTextId: 'wallets', }; -storiesOf('Navigation|Sidebar', module) +storiesOf('Navigation / Sidebar', module) .addDecorator((story) => {story()}) // ====== Stories ====== .add('Inactive', () => ( ( diff --git a/storybook/stories/news/AlertsOverlay.stories.tsx b/storybook/stories/news/AlertsOverlay.stories.tsx index a85dcd043e..e362025c6b 100644 --- a/storybook/stories/news/AlertsOverlay.stories.tsx +++ b/storybook/stories/news/AlertsOverlay.stories.tsx @@ -87,7 +87,7 @@ const getAlerts = (locale: string) => [ }), ]; -storiesOf('News|Overlays', module) +storiesOf('News / Overlays', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) diff --git a/storybook/stories/news/AppUpdateOverlay.stories.tsx b/storybook/stories/news/AppUpdateOverlay.stories.tsx index 03e8f5a76f..9360318377 100644 --- a/storybook/stories/news/AppUpdateOverlay.stories.tsx +++ b/storybook/stories/news/AppUpdateOverlay.stories.tsx @@ -7,7 +7,7 @@ import AppUpdateOverlay from '../../../source/renderer/app/components/appUpdate/ import { update, version, availableAppVersion } from './_utils/fakeDataUpdate'; import { rangeMap } from '../../../source/renderer/app/utils/numbers'; -storiesOf('News|Overlays', module) +storiesOf('News / Overlays', module) .addDecorator((story) => {story()}) .addDecorator(withKnobs) // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ locale }: { locale: string; }... Remove this comment to see the full error message diff --git a/storybook/stories/news/IncidentOverlay.stories.tsx b/storybook/stories/news/IncidentOverlay.stories.tsx index 9c16397107..34787484c4 100644 --- a/storybook/stories/news/IncidentOverlay.stories.tsx +++ b/storybook/stories/news/IncidentOverlay.stories.tsx @@ -7,7 +7,7 @@ import IncidentOverlay from '../../../source/renderer/app/components/news/Incide import { dateOptions } from '../_support/profileSettings'; import { DATE_ENGLISH_OPTIONS } from '../../../source/renderer/app/config/profileConfig'; -storiesOf('News|Overlays', module) +storiesOf('News / Overlays', module) .addDecorator((story) => ( {/* @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ action: { label: string; url: ... Remove this comment to see the full error message */} diff --git a/storybook/stories/news/NewsFeed.stories.tsx b/storybook/stories/news/NewsFeed.stories.tsx index 9e8a1793f6..b53528db33 100644 --- a/storybook/stories/news/NewsFeed.stories.tsx +++ b/storybook/stories/news/NewsFeed.stories.tsx @@ -17,7 +17,7 @@ const updateDownloadProgressOptions = { max: 100, step: 1, }; -storiesOf('News|NewsFeed', module) +storiesOf('News / NewsFeed', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) // ====== Stories ====== diff --git a/storybook/stories/nodes/about/About.stories.tsx b/storybook/stories/nodes/about/About.stories.tsx index 901c3f639e..f9525ae36c 100644 --- a/storybook/stories/nodes/about/About.stories.tsx +++ b/storybook/stories/nodes/about/About.stories.tsx @@ -5,7 +5,7 @@ import StoryDecorator from '../../_support/StoryDecorator'; import AboutDialog from '../../../../source/renderer/app/containers/static/AboutDialog'; import { aboutDialogProps } from '../_utils/props'; -storiesOf('Nodes|About', module) +storiesOf('Nodes / About', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) diff --git a/storybook/stories/nodes/environment/TopBarEnvironment.stories.tsx b/storybook/stories/nodes/environment/TopBarEnvironment.stories.tsx index 7f7faea52e..59ebab5a50 100644 --- a/storybook/stories/nodes/environment/TopBarEnvironment.stories.tsx +++ b/storybook/stories/nodes/environment/TopBarEnvironment.stories.tsx @@ -113,7 +113,7 @@ const topBarProductionEnv = (currentTheme) => ( ); -storiesOf('Nodes|Environment', module) +storiesOf('Nodes / Environment', module) .addDecorator((story) => ( {story()} diff --git a/storybook/stories/nodes/errors/Errors.stories.tsx b/storybook/stories/nodes/errors/Errors.stories.tsx index 566772ff91..dfd16f14ed 100644 --- a/storybook/stories/nodes/errors/Errors.stories.tsx +++ b/storybook/stories/nodes/errors/Errors.stories.tsx @@ -6,7 +6,7 @@ import StoryDecorator from '../../_support/StoryDecorator'; import { NoDiskSpaceErrorStory } from './NoDiskSpaceError.stories'; import { SystemTimeErrorStory } from './SystemTimeError.stories'; -storiesOf('Nodes | Errors', module) +storiesOf('Nodes / Errors', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) // ====== Stories ====== diff --git a/storybook/stories/nodes/errors/NoDiskSpaceError.stories.tsx b/storybook/stories/nodes/errors/NoDiskSpaceError.stories.tsx index 57a76ed6bb..02136613f4 100644 --- a/storybook/stories/nodes/errors/NoDiskSpaceError.stories.tsx +++ b/storybook/stories/nodes/errors/NoDiskSpaceError.stories.tsx @@ -2,13 +2,15 @@ import React from 'react'; import { text } from '@storybook/addon-knobs'; import NoDiskSpaceError from '../../../../source/renderer/app/components/loading/no-disk-space-error/NoDiskSpaceError'; -export const NoDiskSpaceErrorStory = () => ( - -); +export function NoDiskSpaceErrorStory() { + return ( + + ); +} diff --git a/storybook/stories/nodes/errors/SystemTimeError.stories.tsx b/storybook/stories/nodes/errors/SystemTimeError.stories.tsx index deca9d3432..ff5a4bcd61 100644 --- a/storybook/stories/nodes/errors/SystemTimeError.stories.tsx +++ b/storybook/stories/nodes/errors/SystemTimeError.stories.tsx @@ -3,13 +3,15 @@ import { boolean, number } from '@storybook/addon-knobs'; import { action } from '@storybook/addon-actions'; import SystemTimeError from '../../../../source/renderer/app/components/loading/system-time-error/SystemTimeError'; -export const SystemTimeErrorStory = ({ locale }: { locale: string }) => ( - -); +export function SystemTimeErrorStory({ locale }: { locale: string }) { + return ( + + ); +} diff --git a/storybook/stories/nodes/splash/Splash.stories.tsx b/storybook/stories/nodes/splash/Splash.stories.tsx index 00dbdde07d..cfd3578472 100644 --- a/storybook/stories/nodes/splash/Splash.stories.tsx +++ b/storybook/stories/nodes/splash/Splash.stories.tsx @@ -3,7 +3,7 @@ import { storiesOf } from '@storybook/react'; import SplashNetworkFlight from '../../../../source/renderer/app/components/splash/SplashNetworkFlight'; import StoryDecorator from '../../_support/StoryDecorator'; -storiesOf('Nodes|Splash Network Info', module) +storiesOf('Nodes / Splash Network Info', module) .addDecorator((story) => {story()}) .add('Flight', () => ( null} openExternalLink={() => null} /> diff --git a/storybook/stories/nodes/status/Diagnostics.stories.tsx b/storybook/stories/nodes/status/Diagnostics.stories.tsx index 393865519f..fbf3ea3afc 100644 --- a/storybook/stories/nodes/status/Diagnostics.stories.tsx +++ b/storybook/stories/nodes/status/Diagnostics.stories.tsx @@ -32,7 +32,7 @@ const coreInfo = { daedalusStateDirectoryPath: '/Users/daedalus/Library/Application Support/Daedalus Demo', }; -storiesOf('Nodes|Status', module) +storiesOf('Nodes / Status', module) .addDecorator((story) => {story()}) .addDecorator(withKnobs) // ====== Stories ====== .add('Daedalus Diagnostics', () => ( diff --git a/storybook/stories/nodes/syncing/Syncing.stories.tsx b/storybook/stories/nodes/syncing/Syncing.stories.tsx index ab38f5663b..7f0dd3793a 100644 --- a/storybook/stories/nodes/syncing/Syncing.stories.tsx +++ b/storybook/stories/nodes/syncing/Syncing.stories.tsx @@ -10,7 +10,7 @@ import { ConnectivityIssuesSyncingConnectingStory, } from './SyncingConnecting.stories'; -storiesOf('Nodes|Connecting and Loading', module) +storiesOf('Nodes / Connecting and Loading', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) // ====== Stories ====== diff --git a/storybook/stories/nodes/syncing/SyncingConnecting.stories.tsx b/storybook/stories/nodes/syncing/SyncingConnecting.stories.tsx index e7812adee3..94e18f3c36 100644 --- a/storybook/stories/nodes/syncing/SyncingConnecting.stories.tsx +++ b/storybook/stories/nodes/syncing/SyncingConnecting.stories.tsx @@ -31,124 +31,130 @@ const makeBlockSyncProgress = () => ({ }), }); -export const DefaultSyncingConnectingStory = () => ( - 'default')} - disableDownloadLogs={boolean('disableDownloadLogs', true)} - showNewsFeedIcon - blockSyncProgress={makeBlockSyncProgress()} - /> -); -export const ConnectivityIssuesSyncingConnectingStory = () => ( - 'default')} - disableDownloadLogs={boolean('disableDownloadLogs', false)} - showNewsFeedIcon - /> -); -export const LoadingWalletDataSyncingConnectingStory = () => ( - 'default')} - disableDownloadLogs={false} - showNewsFeedIcon - /> -); +export function DefaultSyncingConnectingStory() { + return ( + 'default')} + disableDownloadLogs={boolean('disableDownloadLogs', true)} + showNewsFeedIcon + blockSyncProgress={makeBlockSyncProgress()} + /> + ); +} +export function ConnectivityIssuesSyncingConnectingStory() { + return ( + 'default')} + disableDownloadLogs={boolean('disableDownloadLogs', false)} + showNewsFeedIcon + /> + ); +} +export function LoadingWalletDataSyncingConnectingStory() { + return ( + 'default')} + disableDownloadLogs={false} + showNewsFeedIcon + /> + ); +} diff --git a/storybook/stories/nodes/updates/DataLayerMigration.stories.tsx b/storybook/stories/nodes/updates/DataLayerMigration.stories.tsx index bc8160420c..0f9c5f4004 100644 --- a/storybook/stories/nodes/updates/DataLayerMigration.stories.tsx +++ b/storybook/stories/nodes/updates/DataLayerMigration.stories.tsx @@ -2,6 +2,6 @@ import React from 'react'; import { action } from '@storybook/addon-actions'; import DataLayerMigrationForm from '../../../../source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm'; -export const DataLayerMigrationStory = () => ( - -); +export function DataLayerMigrationStory() { + return ; +} diff --git a/storybook/stories/nodes/updates/Updates.stories.tsx b/storybook/stories/nodes/updates/Updates.stories.tsx index 899252c413..ba21f75d19 100644 --- a/storybook/stories/nodes/updates/Updates.stories.tsx +++ b/storybook/stories/nodes/updates/Updates.stories.tsx @@ -6,7 +6,7 @@ import StoryDecorator from '../../_support/StoryDecorator'; // Stories import { DataLayerMigrationStory } from './DataLayerMigration.stories'; -storiesOf('Nodes|Updates', module) +storiesOf('Nodes / Updates', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) // ====== Stories ====== diff --git a/storybook/stories/notifications/Notifications.stories.tsx b/storybook/stories/notifications/Notifications.stories.tsx index 162dc02389..3724afdc7c 100644 --- a/storybook/stories/notifications/Notifications.stories.tsx +++ b/storybook/stories/notifications/Notifications.stories.tsx @@ -14,7 +14,7 @@ import Notification from '../../../source/renderer/app/components/notifications/ import InlineNotification from '../../../source/renderer/app/components/notifications/InlineNotification'; import { NOTIFICATION_DEFAULT_DURATION } from '../../../source/renderer/app/config/timingConfig'; -storiesOf('Common|Notifications', module) +storiesOf('Common / Notifications', module) .addDecorator((story) => {story()}) .addDecorator(withKnobs) // ====== Stories ====== .add( diff --git a/storybook/stories/settings/general/General.stories.tsx b/storybook/stories/settings/general/General.stories.tsx index afd4b65ef8..bc1de062c6 100644 --- a/storybook/stories/settings/general/General.stories.tsx +++ b/storybook/stories/settings/general/General.stories.tsx @@ -37,7 +37,7 @@ const getParamName = (obj, itemName): any => Object.entries(obj).find((entry: [any, any]) => itemName === entry[1]); /* eslint-disable consistent-return */ -storiesOf('Settings|General', module) +storiesOf('Settings / General', module) .addDecorator(SettingsWrapper) // ====== Stories ====== .add('General', () => ( {story()}) // ====== Stories ====== // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ locale }: { locale: string; }... Remove this comment to see the full error message .add('Select Language - initial', ({ locale }: { locale: string }) => ( diff --git a/storybook/stories/settings/utils/SettingsWrapper.tsx b/storybook/stories/settings/utils/SettingsWrapper.tsx index 4b4247caa5..b42802daa0 100644 --- a/storybook/stories/settings/utils/SettingsWrapper.tsx +++ b/storybook/stories/settings/utils/SettingsWrapper.tsx @@ -16,7 +16,10 @@ const pageNames = { }; /* eslint-disable react/display-name */ -export default (story: Record, context: Record) => { +export default function ( + story: Record, + context: Record +) { const storyWithKnobs = withKnobs(story, context); const menu = ( , context: Record) => { ); -}; +} diff --git a/storybook/stories/staking/CountdownParty.stories.tsx b/storybook/stories/staking/CountdownParty.stories.tsx index 62a5087645..fbb8e37a3f 100644 --- a/storybook/stories/staking/CountdownParty.stories.tsx +++ b/storybook/stories/staking/CountdownParty.stories.tsx @@ -9,7 +9,7 @@ import NodeSyncStatusIcon from '../../../source/renderer/app/components/widgets/ import NewsFeedIcon from '../../../source/renderer/app/components/widgets/NewsFeedIcon'; import TadaButton from '../../../source/renderer/app/components/widgets/TadaButton'; -storiesOf('Decentralization | Countdown', module) +storiesOf('Decentralization / Countdown', module) .addDecorator(withKnobs) .addDecorator((story) => {story()}) // ====== Stories ====== .add('Countdown party', () => { diff --git a/storybook/stories/staking/DelegationCenter.stories.tsx b/storybook/stories/staking/DelegationCenter.stories.tsx index ae8bf14277..f3b9500772 100644 --- a/storybook/stories/staking/DelegationCenter.stories.tsx +++ b/storybook/stories/staking/DelegationCenter.stories.tsx @@ -351,7 +351,7 @@ const wallets = [ RECOVERY_PHRASE_VERIFICATION_TYPES.NEVER_VERIFIED, }), ]; -export const StakingDelegationCenterStory = ({ +export function StakingDelegationCenterStory({ locale, isLoading, isEpochsInfoAvailable, @@ -361,38 +361,40 @@ export const StakingDelegationCenterStory = ({ isLoading: boolean; isEpochsInfoAvailable: boolean; currentTheme: string; -}) => ( - - find(STAKE_POOLS, (stakePool) => stakePool.id === poolId) - } - numberOfStakePools={STAKE_POOLS.length} - networkTip={networkTip} - nextEpoch={nextEpoch} - // @ts-ignore ts-migrate(2769) FIXME: No overload matches this call. - fetchingStakePoolsFailed={isLoading} - futureEpoch={futureEpoch} - currentLocale={locale} - isLoading={isLoading} - isEpochsInfoAvailable={isEpochsInfoAvailable} - slotLength={null} - epochLength={null} - containerClassName="StakingWithNavigation_page" - currentTheme={currentTheme} - numberOfRankedStakePools={ - STAKE_POOLS.slice( - 0, - number('Pools', 300, { - range: true, - min: 37, - max: 300, - step: 1, - }) - ).length - } - onOpenExternalLink={action('onOpenExternalLink')} - /> -); +}) { + return ( + + find(STAKE_POOLS, (stakePool) => stakePool.id === poolId) + } + numberOfStakePools={STAKE_POOLS.length} + networkTip={networkTip} + nextEpoch={nextEpoch} + // @ts-ignore ts-migrate(2769) FIXME: No overload matches this call. + fetchingStakePoolsFailed={isLoading} + futureEpoch={futureEpoch} + currentLocale={locale} + isLoading={isLoading} + isEpochsInfoAvailable={isEpochsInfoAvailable} + slotLength={null} + epochLength={null} + containerClassName="StakingWithNavigation_page" + currentTheme={currentTheme} + numberOfRankedStakePools={ + STAKE_POOLS.slice( + 0, + number('Pools', 300, { + range: true, + min: 37, + max: 300, + step: 1, + }) + ).length + } + onOpenExternalLink={action('onOpenExternalLink')} + /> + ); +} diff --git a/storybook/stories/staking/Epochs.stories.tsx b/storybook/stories/staking/Epochs.stories.tsx index b2f376c653..dee6bdbbb2 100644 --- a/storybook/stories/staking/Epochs.stories.tsx +++ b/storybook/stories/staking/Epochs.stories.tsx @@ -14,29 +14,31 @@ const endDateTimeKnob = (name, defaultValue) => { return new Date(stringTimestamp).toISOString(); }; -export const StakingEpochsStory = () => ( - -); +export function StakingEpochsStory() { + return ( + + ); +} diff --git a/storybook/stories/staking/RedeemItnWallets.stories.tsx b/storybook/stories/staking/RedeemItnWallets.stories.tsx index fc6bf42c46..ab32f6f809 100644 --- a/storybook/stories/staking/RedeemItnWallets.stories.tsx +++ b/storybook/stories/staking/RedeemItnWallets.stories.tsx @@ -74,7 +74,7 @@ const WALLETS = [ // undefined, // true, // WalletSyncStateStatuses.SYNCING -export const Step1ConfigurationDialogStory = () => { +export function Step1ConfigurationDialogStory() { const redeemWallet = select( 'Redeem Wallet', WALLETS.reduce((obj, wallet) => { @@ -104,8 +104,8 @@ export const Step1ConfigurationDialogStory = () => { suggestedMnemonics={validWords} /> ); -}; -export const Step2ConfirmationDialogStory = () => { +} +export function Step2ConfirmationDialogStory() { const redeemWallet = select( 'Redeem Wallet', WALLETS.reduce((obj, wallet) => { @@ -128,8 +128,8 @@ export const Step2ConfirmationDialogStory = () => { isSubmitting={boolean('isSubmitting', false)} /> ); -}; -export const Step3SuccessDialogStory = () => { +} +export function Step3SuccessDialogStory() { const redeemWallet = select( 'Redeem Wallet', WALLETS.reduce((obj, wallet) => { @@ -150,21 +150,21 @@ export const Step3SuccessDialogStory = () => { onClose={action('onClose')} /> ); -}; -export const Step3FailureDialogStory = () => { +} +export function Step3FailureDialogStory() { return ( ); -}; -export const NoWalletsDialogDialogStory = () => { +} +export function NoWalletsDialogDialogStory() { return ( ); -}; -export const RedemptionUnavailableDialogDialogStory = () => { +} +export function RedemptionUnavailableDialogDialogStory() { return ( { })} /> ); -}; +} diff --git a/storybook/stories/staking/Rewards.stories.tsx b/storybook/stories/staking/Rewards.stories.tsx index a09780a332..4099e5cf85 100644 --- a/storybook/stories/staking/Rewards.stories.tsx +++ b/storybook/stories/staking/Rewards.stories.tsx @@ -14,15 +14,17 @@ const rewards = map(REWARDS, (reward) => { unspent: new BigNumber(reward.unspent), }; }); -export const StakingRewardsStory = () => ( - -); +export function StakingRewardsStory() { + return ( + + ); +} diff --git a/storybook/stories/staking/StakePools.stories.tsx b/storybook/stories/staking/StakePools.stories.tsx index 252db277b3..6c3d058969 100644 --- a/storybook/stories/staking/StakePools.stories.tsx +++ b/storybook/stories/staking/StakePools.stories.tsx @@ -72,7 +72,7 @@ type Props = { locale: string; isLoading: boolean; }; -export const StakePoolsStory = (props: Props) => { +export function StakePoolsStory(props: Props) { const selectedWallet = select( 'selectedWallet', { @@ -121,4 +121,4 @@ export const StakePoolsStory = (props: Props) => { selectedDelegationWalletId={selectedWallet} /> ); -}; +} diff --git a/storybook/stories/staking/StakePoolsTable.stories.tsx b/storybook/stories/staking/StakePoolsTable.stories.tsx index 22f5c94d0e..b3a363b4c2 100644 --- a/storybook/stories/staking/StakePoolsTable.stories.tsx +++ b/storybook/stories/staking/StakePoolsTable.stories.tsx @@ -14,70 +14,40 @@ const listTitle = { type Props = { currentTheme: string; }; -export const StakePoolsTableStory = (props: Props) => { +export function StakePoolsTableStory(props: Props) { return ( - -
+ +

- -

- -

- { max: 300, step: 1, }) - ).length - } - onTableHeaderMouseEnter={() => {}} - onTableHeaderMouseLeave={() => {}} + ).length, + }} /> -

-
+ + {}} + onTableHeaderMouseLeave={() => {}} + /> + ); -}; +} diff --git a/storybook/stories/staking/Staking.stories.tsx b/storybook/stories/staking/Staking.stories.tsx index 4b45cbbdc5..4f5f744904 100644 --- a/storybook/stories/staking/Staking.stories.tsx +++ b/storybook/stories/staking/Staking.stories.tsx @@ -89,7 +89,7 @@ const decorator = (story, context) => { ); }; -storiesOf('Decentralization | Countdown', module) +storiesOf('Decentralization / Countdown', module) .addDecorator(decorator) .add( pageNames.countdown, @@ -108,7 +108,7 @@ storiesOf('Decentralization | Countdown', module) id: 'countdown', } ); -storiesOf('Decentralization | Staking', module) +storiesOf('Decentralization / Staking', module) .addDecorator(decorator) // ====== Stories ====== .add( pageNames['delegation-center'], @@ -273,7 +273,7 @@ storiesOf('Decentralization | Staking', module) id: 'undelegate-confirmation-result', } ); -storiesOf('Decentralization | Redeem ITN Rewards', module) +storiesOf('Decentralization / Redeem ITN Rewards', module) .addDecorator(decorator) // ====== Stories ====== .add('Step 1', Step1ConfigurationDialogStory, { id: 'redeem-itn-wallets-story', diff --git a/storybook/stories/staking/StakingWrapper.tsx b/storybook/stories/staking/StakingWrapper.tsx index 02324ab06c..dea904dae1 100644 --- a/storybook/stories/staking/StakingWrapper.tsx +++ b/storybook/stories/staking/StakingWrapper.tsx @@ -17,7 +17,7 @@ const pageNames = { epochs: 'Epochs', info: 'Info', }; -export default (story, context) => { +export default function (story, context) { const storyWithKnobs = withKnobs(story, context); const getItemFromContext = () => context.parameters.id; @@ -56,4 +56,4 @@ export default (story, context) => {
); -}; +} diff --git a/storybook/stories/staking/Undelegate.stories.tsx b/storybook/stories/staking/Undelegate.stories.tsx index c125113034..d7e34f5fe1 100644 --- a/storybook/stories/staking/Undelegate.stories.tsx +++ b/storybook/stories/staking/Undelegate.stories.tsx @@ -66,42 +66,46 @@ const hardwareWallet = generateWallet( 'ready', true ); -export const StakingUndelegateConfirmationStory = (props: { +export function StakingUndelegateConfirmationStory(props: { unknownStakePool?: boolean; isHardwareWallet?: boolean; -}) => ( - null} - onExternalLinkClick={() => null} - isSubmitting={false} - error={null} - fees={{ - fee: new BigNumber(number('fee', 3)), - deposits: new BigNumber(0), - depositsReclaimed: new BigNumber(number('depositsReclaimed', 10)), - }} - hwDeviceStatus="ready" - isTrezor={boolean('isTrezor', false)} - /> -); -export const StakingUndelegateConfirmationResultStory = ({ +}) { + return ( + null} + onExternalLinkClick={() => null} + isSubmitting={false} + error={null} + fees={{ + fee: new BigNumber(number('fee', 3)), + deposits: new BigNumber(0), + depositsReclaimed: new BigNumber(number('depositsReclaimed', 10)), + }} + hwDeviceStatus="ready" + isTrezor={boolean('isTrezor', false)} + /> + ); +} +export function StakingUndelegateConfirmationResultStory({ locale, }: { locale: string; -}) => ( - null} - currentLocale={locale} - futureEpochStartTime={moment().add(35, 'hour').toString()} - /> -); +}) { + return ( + null} + currentLocale={locale} + futureEpochStartTime={moment().add(35, 'hour').toString()} + /> + ); +} diff --git a/storybook/stories/voting/Voting.stories.tsx b/storybook/stories/voting/Voting.stories.tsx index 7e3acbcd93..8c624e26a3 100644 --- a/storybook/stories/voting/Voting.stories.tsx +++ b/storybook/stories/voting/Voting.stories.tsx @@ -104,7 +104,7 @@ const votingInfo = { onExternalLinkClick: action('onExternalLinkClick'), }; -storiesOf('Voting|Voting Registration Wizard', module) +storiesOf('Voting / Voting Registration Wizard', module) .addDecorator((story) => ( {story()} @@ -187,7 +187,7 @@ storiesOf('Voting|Voting Registration Wizard', module) nextFundNumber={8} /> )); -storiesOf('Voting|Voting Info', module) +storiesOf('Voting / Voting Info', module) .addDecorator((story) => ( diff --git a/storybook/stories/wallets/_utils/HardwareWalletWithNavigationLayout.tsx b/storybook/stories/wallets/_utils/HardwareWalletWithNavigationLayout.tsx index 644e7dd743..2757e0cc3b 100644 --- a/storybook/stories/wallets/_utils/HardwareWalletWithNavigationLayout.tsx +++ b/storybook/stories/wallets/_utils/HardwareWalletWithNavigationLayout.tsx @@ -23,9 +23,6 @@ export default class WalletWithNavigationLayout extends Component { stores: null, storiesProps: null, }; - getItemFromContext = (context: contextType) => { - return context.kind.replace('Wallets|', '').toLocaleLowerCase(); - }; render() { const { stores, context, children } = this.props; diff --git a/storybook/stories/wallets/_utils/HardwareWalletsWrapper.tsx b/storybook/stories/wallets/_utils/HardwareWalletsWrapper.tsx index 07a8ad5cc6..312249e9b4 100644 --- a/storybook/stories/wallets/_utils/HardwareWalletsWrapper.tsx +++ b/storybook/stories/wallets/_utils/HardwareWalletsWrapper.tsx @@ -4,7 +4,7 @@ import StoryLayout from '../../_support/StoryLayout'; import StoryProvider from '../../_support/StoryProvider'; import StoryDecorator from '../../_support/StoryDecorator'; -export default (story: any, context: any) => { +export default function (story: any, context: any) { const storyWithKnobs = withKnobs(story, context); return ( @@ -15,4 +15,4 @@ export default (story: any, context: any) => { ); -}; +} diff --git a/storybook/stories/wallets/_utils/WalletWithNavigationLayout.tsx b/storybook/stories/wallets/_utils/WalletWithNavigationLayout.tsx index 0f31d99e15..2f4aad2bb6 100644 --- a/storybook/stories/wallets/_utils/WalletWithNavigationLayout.tsx +++ b/storybook/stories/wallets/_utils/WalletWithNavigationLayout.tsx @@ -24,9 +24,6 @@ export default class WalletWithNavigationLayout extends Component { stores: null, storiesProps: null, }; - getItemFromContext = (context: contextType) => { - return context.kind.replace('Wallets|', '').toLocaleLowerCase(); - }; render() { const { stores, context, children } = this.props; diff --git a/storybook/stories/wallets/_utils/WalletsWrapper.tsx b/storybook/stories/wallets/_utils/WalletsWrapper.tsx index 384cdfbc18..d3e4bf8c07 100644 --- a/storybook/stories/wallets/_utils/WalletsWrapper.tsx +++ b/storybook/stories/wallets/_utils/WalletsWrapper.tsx @@ -5,7 +5,7 @@ import StoryProvider from '../../_support/StoryProvider'; import StoryDecorator from '../../_support/StoryDecorator'; import WalletWithNavigationLayout from './WalletWithNavigationLayout'; -export default (story: any, context: any) => { +export default function (story: any, context: any) { const storyWithKnobs = withKnobs(story, context); return ( @@ -22,4 +22,4 @@ export default (story: any, context: any) => {
); -}; +} diff --git a/storybook/stories/wallets/addWallet/Add.stories.tsx b/storybook/stories/wallets/addWallet/Add.stories.tsx index a30879cc58..c7884da75d 100644 --- a/storybook/stories/wallets/addWallet/Add.stories.tsx +++ b/storybook/stories/wallets/addWallet/Add.stories.tsx @@ -14,7 +14,7 @@ const wrapperStyles = { }; /* eslint-disable consistent-return */ -storiesOf('Wallets|Add Wallet', module) // ====== Stories ====== +storiesOf('Wallets / Add Wallet', module) // ====== Stories ====== .add('Add', () => ( // @ts-ignore ts-migrate(2322) FIXME: Type '{ alignItems: string; backgroundColor: strin... Remove this comment to see the full error message
diff --git a/storybook/stories/wallets/addWallet/Create.stories.tsx b/storybook/stories/wallets/addWallet/Create.stories.tsx index 6094a11adf..1705220f7e 100644 --- a/storybook/stories/wallets/addWallet/Create.stories.tsx +++ b/storybook/stories/wallets/addWallet/Create.stories.tsx @@ -6,7 +6,7 @@ import WalletCreateDialog from '../../../../source/renderer/app/components/walle // Assets and helpers import WalletsWrapper from '../_utils/WalletsWrapper'; -storiesOf('Wallets|Add Wallet', module) +storiesOf('Wallets / Add Wallet', module) .addDecorator(WalletsWrapper) .add('Create - New process', () => ) // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ locale }: { locale: string; }... Remove this comment to see the full error message diff --git a/storybook/stories/wallets/addWallet/Import.stories.tsx b/storybook/stories/wallets/addWallet/Import.stories.tsx index c22ecd80e7..da9623e512 100644 --- a/storybook/stories/wallets/addWallet/Import.stories.tsx +++ b/storybook/stories/wallets/addWallet/Import.stories.tsx @@ -5,7 +5,7 @@ import { storiesOf } from '@storybook/react'; import WalletsWrapper from '../_utils/WalletsWrapper'; import WalletFileImportDialog from '../../../../source/renderer/app/components/wallet/file-import/WalletFileImportDialog'; -storiesOf('Wallets|Add Wallet', module) +storiesOf('Wallets / Add Wallet', module) .addDecorator(WalletsWrapper) .add('Import', () => ( { const walletKindSelect = select( diff --git a/storybook/stories/wallets/addWallet/RestoreOld.stories.tsx b/storybook/stories/wallets/addWallet/RestoreOld.stories.tsx index 699ba6c3a1..558bf5d9eb 100644 --- a/storybook/stories/wallets/addWallet/RestoreOld.stories.tsx +++ b/storybook/stories/wallets/addWallet/RestoreOld.stories.tsx @@ -7,7 +7,7 @@ import WalletsWrapper from '../_utils/WalletsWrapper'; // Screens import WalletRestoreDialog from '../../../../source/renderer/app/components/wallet/WalletRestoreDialog'; -storiesOf('Wallets|Add Wallet', module) +storiesOf('Wallets / Add Wallet', module) .addDecorator(WalletsWrapper) .add('Restore - Old', () => ( (
diff --git a/storybook/stories/wallets/hardwareWallets/HardwareWallets.stories.tsx b/storybook/stories/wallets/hardwareWallets/HardwareWallets.stories.tsx index 33be972527..35db19f34d 100644 --- a/storybook/stories/wallets/hardwareWallets/HardwareWallets.stories.tsx +++ b/storybook/stories/wallets/hardwareWallets/HardwareWallets.stories.tsx @@ -29,7 +29,7 @@ const trezorDevice = { path: null, firmwareVersion: MINIMAL_TREZOR_FIRMWARE_VERSION, }; -storiesOf('Wallets|Hardware Wallets', module) +storiesOf('Wallets / Hardware Wallets', module) .addDecorator(HardwareWalletsWrapper) // ====== Stories ====== .add('Hardware wallet connect Ledger step 1', () => ( ( diff --git a/storybook/stories/wallets/legacyWallets/LegacyNotification.stories.tsx b/storybook/stories/wallets/legacyWallets/LegacyNotification.stories.tsx index 1be1528ab1..e10ce3e671 100644 --- a/storybook/stories/wallets/legacyWallets/LegacyNotification.stories.tsx +++ b/storybook/stories/wallets/legacyWallets/LegacyNotification.stories.tsx @@ -5,7 +5,7 @@ import { withKnobs, boolean, text } from '@storybook/addon-knobs'; import StoryDecorator from '../../_support/StoryDecorator'; import LegacyNotification from '../../../../source/renderer/app/components/notifications/LegacyNotification'; -storiesOf('Wallets|Legacy Wallets', module) +storiesOf('Wallets / Legacy Wallets', module) .addDecorator((story) => {story()}) .addDecorator(withKnobs) // ====== Stories ====== .add('Legacy Notification', () => ( diff --git a/storybook/stories/wallets/legacyWallets/TransferFunds.stories.tsx b/storybook/stories/wallets/legacyWallets/TransferFunds.stories.tsx index 5e4ecf51b8..8a52fecd76 100644 --- a/storybook/stories/wallets/legacyWallets/TransferFunds.stories.tsx +++ b/storybook/stories/wallets/legacyWallets/TransferFunds.stories.tsx @@ -12,7 +12,7 @@ import { LOVELACES_PER_ADA } from '../../../../source/renderer/app/config/number // Helpers import WalletsWrapper from '../_utils/WalletsWrapper'; -storiesOf('Wallets|Legacy Wallets', module) +storiesOf('Wallets / Legacy Wallets', module) .addDecorator(WalletsWrapper) .addDecorator(withKnobs) // ====== Stories ====== .add('Transfer Funds - Step1', () => { diff --git a/storybook/stories/wallets/paperWallets/PaperWallets.stories.tsx b/storybook/stories/wallets/paperWallets/PaperWallets.stories.tsx index f39fca035e..a2a0102678 100644 --- a/storybook/stories/wallets/paperWallets/PaperWallets.stories.tsx +++ b/storybook/stories/wallets/paperWallets/PaperWallets.stories.tsx @@ -9,7 +9,7 @@ import SecuringPasswordDialog from '../../../../source/renderer/app/components/w import VerificationDialog from '../../../../source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog'; import CompletionDialog from '../../../../source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog'; -storiesOf('Wallets|Paper Wallets', module) +storiesOf('Wallets / Paper Wallets', module) .addDecorator((story) => {story()}) // ====== Stories ====== .add('Instructions', () => (
diff --git a/storybook/stories/wallets/receive/WalletReceive.stories.tsx b/storybook/stories/wallets/receive/WalletReceive.stories.tsx index b792543483..86f96f9593 100644 --- a/storybook/stories/wallets/receive/WalletReceive.stories.tsx +++ b/storybook/stories/wallets/receive/WalletReceive.stories.tsx @@ -16,7 +16,7 @@ const onToggleSubMenus = { listen: action('onToggleSubMenus:listen'), remove: action('onToggleSubMenus:remove'), }; -storiesOf('Wallets|Receive', module) +storiesOf('Wallets / Receive', module) .addDecorator(WalletsWrapper) // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ locale }: { locale: string; }... Remove this comment to see the full error message .add('Receive - sequential', ({ locale }: { locale: string }) => { diff --git a/storybook/stories/wallets/send/WalletSend.stories.tsx b/storybook/stories/wallets/send/WalletSend.stories.tsx index 22e151cc9a..5f43d24b25 100644 --- a/storybook/stories/wallets/send/WalletSend.stories.tsx +++ b/storybook/stories/wallets/send/WalletSend.stories.tsx @@ -21,7 +21,6 @@ import type { WalletTokens } from '../../../../source/renderer/app/api/assets/ty import { WalletSendConfirmationDialogView } from '../../../../source/renderer/app/containers/wallet/dialogs/send-confirmation/SendConfirmation.view'; const allAssets = [ - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c', '', @@ -31,22 +30,16 @@ const allAssets = [ name: 'MakerDAO', ticker: 'DAI', description: 'Test description', - unit: { - name: 'DAI', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 4. generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', 'tokenb0ca20391caaf66a4d4d7897d281f9c136cd3513136945b2342', 400 ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', @@ -56,15 +49,10 @@ const allAssets = [ name: 'Tether', ticker: 'USDT', description: 'Test description', - unit: { - name: 'USDT', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65cn72542b0ca10391caaf66a4d4d2897d281f3c136cd3513136945b', '', @@ -74,10 +62,6 @@ const allAssets = [ name: 'USD Coin', ticker: 'USDC', description: 'Test description', - unit: { - name: 'USDC', - decimals: 6, - }, url: 'http://example.com', logo: '', } @@ -220,7 +204,7 @@ const sendFormAssetData = walletTokens.total.map((assetTotal) => { }, }; }); -storiesOf('Wallets|Send', module) +storiesOf('Wallets / Send', module) .addDecorator(WalletsWrapper) .add('Send - No Assets', () => ( ( {withKnobs(story, context)} )) diff --git a/storybook/stories/wallets/settings/PublicKeyQRCode.stories.tsx b/storybook/stories/wallets/settings/PublicKeyQRCode.stories.tsx index 49cdfebe38..2fa7e5b9f1 100644 --- a/storybook/stories/wallets/settings/PublicKeyQRCode.stories.tsx +++ b/storybook/stories/wallets/settings/PublicKeyQRCode.stories.tsx @@ -5,7 +5,7 @@ import WalletsWrapper from '../_utils/WalletsWrapper'; // Components import PublicKeyQRCodeDialog from '../../../../source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog'; -storiesOf('Wallets|Settings', module) +storiesOf('Wallets / Settings', module) .addDecorator(WalletsWrapper) .add('Public Key - QR Code', (props) => ( {story()}) // ====== Stories ====== .add('Delete - Countdown', () => (
diff --git a/storybook/stories/wallets/settings/WalletPublicKey.stories.tsx b/storybook/stories/wallets/settings/WalletPublicKey.stories.tsx index e9f4ecaedc..9cd7d50092 100644 --- a/storybook/stories/wallets/settings/WalletPublicKey.stories.tsx +++ b/storybook/stories/wallets/settings/WalletPublicKey.stories.tsx @@ -7,7 +7,7 @@ import WalletsWrapper from '../_utils/WalletsWrapper'; // Components import WalletPublicKeyDialog from '../../../../source/renderer/app/components/wallet/settings/WalletPublicKeyDialog'; -storiesOf('Wallets|Settings', module) +storiesOf('Wallets / Settings', module) .addDecorator(WalletsWrapper) .addDecorator(withKnobs) .add('Public Key - Spending Password', () => ( diff --git a/storybook/stories/wallets/settings/WalletRecoveryPhraseVerification.stories.tsx b/storybook/stories/wallets/settings/WalletRecoveryPhraseVerification.stories.tsx index 0da81f58e9..bbdc52f4e2 100644 --- a/storybook/stories/wallets/settings/WalletRecoveryPhraseVerification.stories.tsx +++ b/storybook/stories/wallets/settings/WalletRecoveryPhraseVerification.stories.tsx @@ -19,7 +19,7 @@ import StoryDecorator from '../../_support/StoryDecorator'; // Screens import WalletRecoveryPhraseVerificationWidget from '../../../../source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget'; -storiesOf('Wallets|Settings', module) +storiesOf('Wallets / Settings', module) .addDecorator((story, context) => ( {withKnobs(story, context)} )) // ====== Stories ====== diff --git a/storybook/stories/wallets/settings/WalletSettings.stories.tsx b/storybook/stories/wallets/settings/WalletSettings.stories.tsx index b008bffa59..fb790b203f 100644 --- a/storybook/stories/wallets/settings/WalletSettings.stories.tsx +++ b/storybook/stories/wallets/settings/WalletSettings.stories.tsx @@ -11,7 +11,7 @@ import './WalletPublicKey.stories'; import './PublicKeyQRCode.stories'; /* eslint-disable consistent-return */ -storiesOf('Wallets|Settings', module) +storiesOf('Wallets / Settings', module) .addDecorator(WalletsWrapper) // @ts-ignore ts-migrate(2741) FIXME: Property 'locale' is missing in type '{ id: string... Remove this comment to see the full error message .add('Wallet Settings', (props) => ); diff --git a/storybook/stories/wallets/settings/WalletSettingsScreen.stories.tsx b/storybook/stories/wallets/settings/WalletSettingsScreen.stories.tsx index 3900c9bc3e..4a1a743438 100644 --- a/storybook/stories/wallets/settings/WalletSettingsScreen.stories.tsx +++ b/storybook/stories/wallets/settings/WalletSettingsScreen.stories.tsx @@ -136,14 +136,14 @@ const getWalletDates = (type: string, status: string) => { }; }; -export default (props: { locale: Locale }) => { +export default function (props: { locale: Locale }) { const { locale } = props; // @ts-ignore ts-migrate(2339) FIXME: Property 'type' does not exist on type 'SelectType... Remove this comment to see the full error message const { type, status } = select( 'Wallet Recovery Phrase Verification', // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ 'Never Checked - Ok': { type: ... Remove this comment to see the full error message recoveryPhraseVerificationDateOptions, - 'Already Checked - Ok', + recoveryPhraseVerificationDateOptions['Already Checked - Ok'], recoveryPhraseId ); const { recoveryPhraseVerificationDate, creationDate } = getWalletDates( @@ -441,4 +441,4 @@ export default (props: { locale: Locale }) => { isDelegating={false} /> ); -}; +} diff --git a/storybook/stories/wallets/settings/WalletUnpair.stories.tsx b/storybook/stories/wallets/settings/WalletUnpair.stories.tsx index 46f7f82bd3..ac1e6adfb7 100644 --- a/storybook/stories/wallets/settings/WalletUnpair.stories.tsx +++ b/storybook/stories/wallets/settings/WalletUnpair.stories.tsx @@ -27,7 +27,7 @@ const messages: WalletSettingRemoveMessages = defineMessages({ description: 'Question if the user really wants to unpair the wallet.', }, }); -storiesOf('Wallets|Settings', module) +storiesOf('Wallets / Settings', module) .addDecorator((story) => {story()}) // ====== Stories ====== .add('Unpair - Accepted', () => (
diff --git a/storybook/stories/wallets/summary/WalletSummary.stories.tsx b/storybook/stories/wallets/summary/WalletSummary.stories.tsx index 81613091d6..cde504cac5 100644 --- a/storybook/stories/wallets/summary/WalletSummary.stories.tsx +++ b/storybook/stories/wallets/summary/WalletSummary.stories.tsx @@ -16,21 +16,18 @@ import currenciesList from '../../../../source/renderer/app/config/currenciesLis import WalletSummary from '../../../../source/renderer/app/components/wallet/summary/WalletSummary'; const allAssets = [ - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 4. generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', 'token1rjklcrnsdzqp65wjgrg55sy9723kw09m5z1234', 100 ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 4. generateAssetToken( '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', 'token1rjklcrnsdzqp65wjgrg55sy9723kw09m5z2345', 100 ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65cn72542b0ca10391caaf66a4d4d2897d281f3c136cd3513136945b', '', @@ -40,15 +37,10 @@ const allAssets = [ name: 'USD Coin', ticker: 'USDC', description: 'Test description', - unit: { - name: 'USDC', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c', '', @@ -58,10 +50,6 @@ const allAssets = [ name: 'MakerDAO', ticker: 'DAI', description: 'Test description', - unit: { - name: 'DAI', - decimals: 6, - }, url: 'http://example.com', logo: '', } @@ -163,7 +151,7 @@ const walletAssets = assets.total.map((assetTotal) => { }); /* eslint-disable consistent-return */ -storiesOf('Wallets|Summary', module) +storiesOf('Wallets / Summary', module) .addDecorator(WalletsWrapper) // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ locale }: { locale: string; }... Remove this comment to see the full error message .add('Wallet Summary', ({ locale }: { locale: string }) => { @@ -190,13 +178,8 @@ storiesOf('Wallets|Summary', module) const currencySelected = select( 'currencySelected', - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ aed: { code: string; decimalDi... Remove this comment to see the full error message currenciesList, - { - id: 'uniswap-state-dollar', - symbol: 'usd', - name: 'unified Stable Dollar', - }, + currenciesList.usd, 'Currency' ); const wallet = generateWallet('Wallet name', '45119903750165', assets); diff --git a/storybook/stories/wallets/summary/WalletSummaryHeader.stories.tsx b/storybook/stories/wallets/summary/WalletSummaryHeader.stories.tsx index 460c341d1f..980c36665a 100644 --- a/storybook/stories/wallets/summary/WalletSummaryHeader.stories.tsx +++ b/storybook/stories/wallets/summary/WalletSummaryHeader.stories.tsx @@ -15,7 +15,7 @@ function WalletSummaryHeaderDecorator(story: any, context: any) { ); } -storiesOf('Wallets|Summary', module) +storiesOf('Wallets / Summary', module) .addDecorator(WalletSummaryHeaderDecorator) .add('Wallet Summary Header', () => { const rewardsGroup = 'Rewards'; diff --git a/storybook/stories/wallets/tokens/WalletTokens.stories.tsx b/storybook/stories/wallets/tokens/WalletTokens.stories.tsx index 315e78062f..a691c85b5b 100644 --- a/storybook/stories/wallets/tokens/WalletTokens.stories.tsx +++ b/storybook/stories/wallets/tokens/WalletTokens.stories.tsx @@ -15,7 +15,6 @@ import WalletsWrapper from '../_utils/WalletsWrapper'; import WalletTokens from '../../../../source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens'; const assets = [ - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c', '', @@ -25,22 +24,16 @@ const assets = [ name: 'MakerDAO', ticker: 'DAI', description: 'Test description', - unit: { - name: 'DAI', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 4. generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '546f6b656e2077697468206c61726765206e616d65', 'tokenb0ca20391caaf66a4d4d7897d281f9c136cd3513136945b2342', 400 ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7897e291f9c136cd3513136945c', '', @@ -50,15 +43,10 @@ const assets = [ name: 'Nope', ticker: 'NOPE', description: 'The one with zero balance', - unit: { - name: 'NOPE', - decimals: 0, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', @@ -68,15 +56,10 @@ const assets = [ name: 'Tether', ticker: 'USDT', description: 'Test description', - unit: { - name: 'USDT', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65cn72542b0ca10391caaf66a4d4d2897d281f3c136cd3513136945b', '', @@ -86,10 +69,6 @@ const assets = [ name: 'USD Coin', ticker: 'USDC', description: 'Test description', - unit: { - name: 'USDC', - decimals: 6, - }, url: 'http://example.com', logo: '', } @@ -157,7 +136,7 @@ const walletTokens = { }, ], }; -storiesOf('Wallets|Tokens', module) +storiesOf('Wallets / Tokens', module) .addDecorator(WalletsWrapper) .addDecorator(withKnobs) // ====== Stories ====== .add( diff --git a/storybook/stories/wallets/tokens/WalletTokensList.stories.tsx b/storybook/stories/wallets/tokens/WalletTokensList.stories.tsx index 605dde1257..b13965d294 100644 --- a/storybook/stories/wallets/tokens/WalletTokensList.stories.tsx +++ b/storybook/stories/wallets/tokens/WalletTokensList.stories.tsx @@ -16,7 +16,6 @@ import type { WalletTokens } from '../../../../source/renderer/app/api/assets/ty import WalletTokensList from '../../../../source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList'; const assets = [ - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c', '', @@ -26,22 +25,16 @@ const assets = [ name: 'MakerDAO', ticker: 'DAI', description: 'Test description', - unit: { - name: 'DAI', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 4. generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', 'tokenb0ca20391caaf66a4d4e7897d282f9c136cd3513136945c2542', 400 ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', @@ -51,15 +44,10 @@ const assets = [ name: 'Tether', ticker: 'USDT', description: 'Test description', - unit: { - name: 'USDT', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. generateAssetToken( '65cn72542b0ca10391caaf66a4d4d2897d281f3c136cd3513136945b', '', @@ -69,15 +57,10 @@ const assets = [ name: 'USD Coin', ticker: 'USDC', description: 'Test description', - unit: { - name: 'USDC', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 6. generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7s97d281f9c136cd3513136945b', '', @@ -161,7 +144,7 @@ const walletTokens: WalletTokens = { }, ], }; -storiesOf('Wallets|Tokens', module) +storiesOf('Wallets / Tokens', module) .addDecorator((story) => ( {story()} diff --git a/storybook/stories/wallets/transactions/Transaction.stories.tsx b/storybook/stories/wallets/transactions/Transaction.stories.tsx index 83462364e3..9623b5725c 100644 --- a/storybook/stories/wallets/transactions/Transaction.stories.tsx +++ b/storybook/stories/wallets/transactions/Transaction.stories.tsx @@ -108,7 +108,7 @@ const transactionTokens = [ ]; /* eslint-disable consistent-return */ -storiesOf('Wallets|Transactions', module) +storiesOf('Wallets / Transactions', module) .addDecorator(withKnobs) .addDecorator((story, context) => ( diff --git a/storybook/stories/wallets/transactions/TransactionMetadata.stories.tsx b/storybook/stories/wallets/transactions/TransactionMetadata.stories.tsx index 2c497a98fc..12c42f0047 100644 --- a/storybook/stories/wallets/transactions/TransactionMetadata.stories.tsx +++ b/storybook/stories/wallets/transactions/TransactionMetadata.stories.tsx @@ -3,5 +3,5 @@ import { storiesOf } from '@storybook/react'; import { TransactionMetadataView } from '../../../../source/renderer/app/components/wallet/transactions/metadata/TransactionMetadataView'; import { EXAMPLE_METADATA } from '../../_support/utils'; -storiesOf('Wallets|Transactions', module) // ====== Stories ====== +storiesOf('Wallets / Transactions', module) // ====== Stories ====== .add('Metadata', () => ); diff --git a/storybook/stories/wallets/transactions/TransactionsList.stories.tsx b/storybook/stories/wallets/transactions/TransactionsList.stories.tsx index 30f878c1fc..b9871ce8df 100644 --- a/storybook/stories/wallets/transactions/TransactionsList.stories.tsx +++ b/storybook/stories/wallets/transactions/TransactionsList.stories.tsx @@ -35,7 +35,6 @@ type Props = { totalAvailable: number; }; const assetDetails = { - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c': generateAssetToken( '65bc72542b0ca20391caaf66a4d4e7897d282f9c136cd3513136945c', '', @@ -45,15 +44,10 @@ const assetDetails = { name: 'MakerDAO', ticker: 'DAI', description: 'Test description', - unit: { - name: 'DAI', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. '65bc72542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b': generateAssetToken( '65bc72542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', @@ -63,15 +57,10 @@ const assetDetails = { name: 'TrueUSD', ticker: 'TUSD', description: 'Test description', - unit: { - name: 'TUSD', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b': generateAssetToken( '65ac82542b0ca20391caaf66a4d4d7897d281f9c136cd3513136945b', '', @@ -81,15 +70,10 @@ const assetDetails = { name: 'Tether', ticker: 'USDT', description: 'Test description', - unit: { - name: 'USDT', - decimals: 6, - }, url: 'http://example.com', logo: '', } ), - // @ts-ignore ts-migrate(2554) FIXME: Expected 7 arguments, but got 5. '65cn72542b0ca10391caaf66a4d4d2897d281f3c136cd3513136945b': generateAssetToken( '65cn72542b0ca10391caaf66a4d4d2897d281f3c136cd3513136945b', '', @@ -99,10 +83,6 @@ const assetDetails = { name: 'USD Coin', ticker: 'USDC', description: 'Test description', - unit: { - name: 'USDC', - decimals: 6, - }, url: 'http://example.com', logo: '', } @@ -149,7 +129,7 @@ const getAsset = ( ): Asset | null | undefined => assetDetails[`${policyId}${assetName}`]; /* eslint-disable consistent-return */ -storiesOf('Wallets|Transactions', module) +storiesOf('Wallets / Transactions', module) .addDecorator(withKnobs) .addDecorator((getStory, props) => { const transactionsOption = select( diff --git a/storybook/stories/wallets/transactions/Utxo.stories.tsx b/storybook/stories/wallets/transactions/Utxo.stories.tsx index 36d1d9c116..587e4a38cb 100644 --- a/storybook/stories/wallets/transactions/Utxo.stories.tsx +++ b/storybook/stories/wallets/transactions/Utxo.stories.tsx @@ -16,7 +16,7 @@ const cfg = { }; /* eslint-disable consistent-return */ -storiesOf('Wallets|Transactions', module) +storiesOf('Wallets / Transactions', module) .addDecorator(WalletsWrapper) // ====== Stories ====== .add('UTXO Distribution', () => ( { - const [jsxRule] = config.module.rules; - jsxRule.use.unshift('thread-loader'); - // Use Auto DLL plugin for faster development builds - if (!isCi) { - const [htmlWebpackPlugin] = config.plugins; - const { templateParameters } = htmlWebpackPlugin.options; - htmlWebpackPlugin.options.templateParameters = (...args) => - Object.assign(templateParameters.call(null, ...args), { - dlls: ['./vendor.dll.js'], - }); - config.plugins.push( - new AutoDllPlugin({ - inject: true, - filename: 'vendor.dll.js', - entry: { - vendor: [ - '@storybook/addon-actions', - '@storybook/addon-knobs', - '@storybook/addon-links', - '@storybook/addons', - '@storybook/core', - '@storybook/react', - 'aes-js', - 'bignumber.js', - 'bip39', - 'blakejs', - 'bs58', - 'classnames', - 'es6-error', - '@faker-js/faker', - 'humanize-duration', - 'lodash', - 'mobx', - 'mobx-react', - 'mobx-react-form', - 'mobx-react-router', - 'moment', - 'pbkdf2', - 'qrcode.react', - 'react', - 'react-copy-to-clipboard', - 'react-datetime', - 'react-dom', - 'react-router', - 'react-svg-inline', - 'recharts', - 'route-parser', - 'safe-buffer', - 'unorm', - 'validator', - ], - }, - }) - ); - } - return { - ...config, - cache: !isCi, - devtool: isCi ? 'none' : config.devtool, - optimization: { - minimize: false, - }, - resolve: { - extensions: ['.tsx', '.ts', '.js', '.json'], - }, - module: { - rules: [ - jsxRule, - { - test: /\.tsx?$/, - loader: 'babel-loader', - options: { - presets: [ - '@babel/preset-env', - '@babel/preset-react', - '@babel/preset-typescript', - ], - }, - }, - { - test: /\.scss/, - use: [ - { - loader: 'style-loader', - }, - { - loader: 'css-loader', - options: { - sourceMap: !isCi, - modules: true, - localIdentName: '[name]_[local]', - importLoaders: true, - }, - }, - { loader: 'fast-sass-loader', options: { sourceMap: !isCi } }, - ], - }, - { - test: /\.css/, - use: [{ loader: 'css-loader', options: { sourceMap: !isCi } }], - }, - { - test: /\.inline\.svg$/, - use: 'svg-inline-loader', - }, - { - test: /\.(woff2?|eot|ttf|otf|png|jpe?g|gif|svg)(\?.*)?$/, - exclude: /\.inline\.svg$/, - use: { - loader: 'url-loader', - options: { - limit: 10000, - }, - }, - }, - { - test: /\.md$/, - use: [ - { loader: 'html-loader', options: { importLoaders: true } }, - { loader: 'markdown-loader?gfm=false' }, - ], - }, - ], - }, - node: { - fs: 'empty', - }, - }; -}; diff --git a/tests/_utils/TestBed.tsx b/tests/_utils/TestBed.tsx index eb0ff4b2b4..506348c6ac 100644 --- a/tests/_utils/TestBed.tsx +++ b/tests/_utils/TestBed.tsx @@ -1,11 +1,14 @@ import React, { ReactElement } from 'react'; import { IntlProvider } from 'react-intl'; -import { render } from "@testing-library/react"; +import { render } from '@testing-library/react'; import { ThemeProvider } from 'react-polymorph/lib/components/ThemeProvider'; import { SimpleSkins } from 'react-polymorph/lib/skins/simple'; import { SimpleDefaults } from 'react-polymorph/lib/themes/simple'; -import { BrowserLocalStorageBridge, DiscreetModeFeatureProvider } from '../../source/renderer/app/features'; +import { + BrowserLocalStorageBridge, + DiscreetModeFeatureProvider, +} from '../../source/renderer/app/features'; import translations from '../../source/renderer/app/i18n/locales/en-US.json'; import { daedalusTheme } from '../../source/renderer/app/themes/daedalus'; import { themeOverrides } from '../../source/renderer/app/themes/overrides'; @@ -19,9 +22,7 @@ const TestBed = ({ children }: { children: ReactElement }) => ( > - - {children} - + {children} @@ -29,6 +30,6 @@ const TestBed = ({ children }: { children: ReactElement }) => ( const createTestBed = (component: ReactElement) => { return render({component}); -} +}; export default createTestBed; diff --git a/tests/_utils/TestDecorator.tsx b/tests/_utils/TestDecorator.tsx index 822945505e..364f1dd931 100644 --- a/tests/_utils/TestDecorator.tsx +++ b/tests/_utils/TestDecorator.tsx @@ -1,24 +1,28 @@ -import React, { Component, Children } from "react"; +import React from 'react'; // @ts-ignore ts-migrate(2305) FIXME: Module '"react"' has no exported member 'Node'. -import type { Node } from "react"; -import { ThemeProvider } from "react-polymorph/lib/components/ThemeProvider"; -import { IntlProvider, addLocaleData } from "react-intl"; -import { SimpleSkins } from "react-polymorph/lib/skins/simple"; -import { SimpleDefaults } from "react-polymorph/lib/themes/simple"; -import en from "react-intl/locale-data/en"; -import { daedalusTheme } from "../../source/renderer/app/themes/daedalus"; -import { themeOverrides } from "../../source/renderer/app/themes/overrides"; -import translations from "../../source/renderer/app/i18n/locales/en-US.json"; +import type { Node } from 'react'; +import { ThemeProvider } from 'react-polymorph/lib/components/ThemeProvider'; +import { IntlProvider } from 'react-intl'; +import { SimpleSkins } from 'react-polymorph/lib/skins/simple'; +import { SimpleDefaults } from 'react-polymorph/lib/themes/simple'; +import { daedalusTheme } from '../../source/renderer/app/themes/daedalus'; +import { themeOverrides } from '../../source/renderer/app/themes/overrides'; +import translations from '../../source/renderer/app/i18n/locales/en-US.json'; type Props = { children: Node; }; -export function TestDecorator({ - children -}: Props) { - return - - {children} - - ; -} \ No newline at end of file +export function TestDecorator({ children }: Props) { + return ( + + + {children} + + + ); +} diff --git a/tests/addresses/e2e/steps/addresses.ts b/tests/addresses/e2e/steps/addresses.ts index 811bdb6e85..2e2e8db49c 100644 --- a/tests/addresses/e2e/steps/addresses.ts +++ b/tests/addresses/e2e/steps/addresses.ts @@ -1,83 +1,114 @@ -import { Given, Then, When } from "cucumber"; -import { expect } from "chai"; -import { find } from "lodash"; -import { getVisibleElementsCountForSelector } from "../../../common/e2e/steps/helpers"; -import { getWalletByName } from "../../../wallets/e2e/steps/helpers"; +import { Given, Then, When } from 'cucumber'; +import { expect } from 'chai'; +import { find } from 'lodash'; +import { getVisibleElementsCountForSelector } from '../../../common/e2e/steps/helpers'; +import { getWalletByName } from '../../../wallets/e2e/steps/helpers'; const SELECTORS = { ADDRESS_ACTIVE: '.WalletReceive_hash', ADDRESS_COMPONENT: '.Address', ADDRESS_USED: '.AddressSequential_usedWalletAddress', GENERATE_ADDRESS_BTN: '.generateAddressButton:not(.WalletReceive_spinning)', - GENERATE_ADDRESS_PASSWORD_INPUT: '.WalletReceiveRandom_spendingPassword .SimpleFormField_inputWrapper input', - SHOW_USED_SWITCH: '.SimpleSwitch_switch' + GENERATE_ADDRESS_PASSWORD_INPUT: + '.WalletReceiveRandom_spendingPassword .SimpleFormField_inputWrapper input', + SHOW_USED_SWITCH: '.SimpleSwitch_switch', }; Given('I create {int} addresses', async function (numberOfAddresses) { for (let i = 0; i < numberOfAddresses; i++) { await this.client.waitForExist(SELECTORS.GENERATE_ADDRESS_PASSWORD_INPUT); - await this.client.setValue(SELECTORS.GENERATE_ADDRESS_PASSWORD_INPUT, 'Secret1234'); + await this.client.setValue( + SELECTORS.GENERATE_ADDRESS_PASSWORD_INPUT, + 'Secret1234' + ); await this.waitAndClick(SELECTORS.GENERATE_ADDRESS_BTN); } }); -Given('I have {int} generated wallet addresses', async function (numberOfAddresses) { +Given('I have {int} generated wallet addresses', async function ( + numberOfAddresses +) { for (let i = 0; i < numberOfAddresses; i++) { - await this.client.executeAsync(done => { - const { - active - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.wallets; + await this.client.executeAsync((done) => { + const { active } = daedalus.stores.wallets; if (!active) { return done(); } - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - return daedalus.stores.addresses._createByronWalletAddress({ - walletId: active.id, - passphrase: 'Secret1234' - }).then(done); + return daedalus.stores.addresses + ._createByronWalletAddress({ + walletId: active.id, + passphrase: 'Secret1234', + }) + .then(done); }); } }); When('I click the ShowUsed switch', async function () { await this.waitAndClick(SELECTORS.SHOW_USED_SWITCH); }); -When(/^I enter wallet password in generate address input field "([^"]*)"$/, async function (password) { - const selector = '.WalletReceiveRandom_spendingPassword .SimpleFormField_inputWrapper input'; - await this.client.waitForExist(selector); - await this.client.setValue(selector, password); -}); +When( + /^I enter wallet password in generate address input field "([^"]*)"$/, + async function (password) { + const selector = + '.WalletReceiveRandom_spendingPassword .SimpleFormField_inputWrapper input'; + await this.client.waitForExist(selector); + await this.client.setValue(selector, password); + } +); When('I click "Generate a new address" button', async function () { await this.waitAndClick('.generateAddressButton'); }); -Then('I should see {int} used addresses', { - timeout: 60000 -}, async function (numberOfAddresses) { - const addressSelector = SELECTORS.ADDRESS_USED; - await this.client.waitForVisible('.VirtualAddressesList_list'); - await this.client.execute(() => { - const scrollableListContainer = window.document.getElementsByClassName('ReactVirtualized__Grid__innerScrollContainer'); - const scrollableList = window.document.getElementsByClassName('VirtualAddressesList_list'); - const listHeight = scrollableListContainer[0].getBoundingClientRect().height; - // Scroll to bottom - scrollableList[0].scroll(0, listHeight); - }); - const addressesFound = await getVisibleElementsCountForSelector(this.client, addressSelector, addressSelector, 60000); - expect(addressesFound).to.equal(numberOfAddresses); -}); -Then('I should not see any used addresses', { - timeout: 60000 -}, async function () { - await this.client.waitForVisible('.VirtualAddressesList_list'); - await this.client.execute(() => { - const scrollableListContainer = window.document.getElementsByClassName('ReactVirtualized__Grid__innerScrollContainer'); - const scrollableList = window.document.getElementsByClassName('VirtualAddressesList_list'); - const listHeight = scrollableListContainer[0].getBoundingClientRect().height; - // Scroll to bottom - scrollableList[0].scroll(0, listHeight); - }); - await this.client.waitForVisible(SELECTORS.ADDRESS_USED, null, true); -}); +Then( + 'I should see {int} used addresses', + { + timeout: 60000, + }, + async function (numberOfAddresses) { + const addressSelector = SELECTORS.ADDRESS_USED; + await this.client.waitForVisible('.VirtualAddressesList_list'); + await this.client.execute(() => { + const scrollableListContainer = window.document.getElementsByClassName( + 'ReactVirtualized__Grid__innerScrollContainer' + ); + const scrollableList = window.document.getElementsByClassName( + 'VirtualAddressesList_list' + ); + const listHeight = scrollableListContainer[0].getBoundingClientRect() + .height; + // Scroll to bottom + scrollableList[0].scroll(0, listHeight); + }); + const addressesFound = await getVisibleElementsCountForSelector( + this.client, + addressSelector, + addressSelector, + 60000 + ); + expect(addressesFound).to.equal(numberOfAddresses); + } +); +Then( + 'I should not see any used addresses', + { + timeout: 60000, + }, + async function () { + await this.client.waitForVisible('.VirtualAddressesList_list'); + await this.client.execute(() => { + const scrollableListContainer = window.document.getElementsByClassName( + 'ReactVirtualized__Grid__innerScrollContainer' + ); + const scrollableList = window.document.getElementsByClassName( + 'VirtualAddressesList_list' + ); + const listHeight = scrollableListContainer[0].getBoundingClientRect() + .height; + // Scroll to bottom + scrollableList[0].scroll(0, listHeight); + }); + await this.client.waitForVisible(SELECTORS.ADDRESS_USED, null, true); + } +); Then('I should see {int} addresses', async function (numberOfAddresses) { let addresses = await this.client.getAttribute('.Address', 'class'); @@ -85,54 +116,73 @@ Then('I should see {int} addresses', async function (numberOfAddresses) { addresses = [addresses]; } - ; expect(addresses.length).to.equal(numberOfAddresses); }); Then('I should see the following addresses:', async function (table) { const expectedAddresses = table.hashes(); let addresses; await this.client.waitUntil(async () => { - addresses = await this.client.getAttribute(SELECTORS.ADDRESS_COMPONENT, 'class'); + addresses = await this.client.getAttribute( + SELECTORS.ADDRESS_COMPONENT, + 'class' + ); return addresses.length === expectedAddresses.length; }); if (addresses) { - addresses.forEach((address, index) => expect(address).to.include(expectedAddresses[index].ClassName)); + addresses.forEach((address, index) => + expect(address).to.include(expectedAddresses[index].ClassName) + ); } }); Then('The active address should be the newest one', async function () { const { - value: { - id: lastGeneratedAddress - } - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = await this.client.execute(() => daedalus.stores.addresses.lastGeneratedAddress); + value: { id: lastGeneratedAddress }, + } = await this.client.execute( + () => daedalus.stores.addresses.lastGeneratedAddress + ); const activeAddress = await this.client.getText('.WalletReceiveRandom_hash'); expect(lastGeneratedAddress).to.equal(activeAddress); }); -Then(/^I should see the following error messages on the wallet receive screen:$/, async function (data) { - let errorsOnScreen = await this.waitAndGetText('.WalletReceiveRandom_error'); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +Then( + /^I should see the following error messages on the wallet receive screen:$/, + async function (data) { + let errorsOnScreen = await this.waitAndGetText( + '.WalletReceiveRandom_error' + ); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); -Then(/^The active address belongs to "([^"]*)" wallet$/, async function (walletName) { - const { - id: walletId, +); +Then(/^The active address belongs to "([^"]*)" wallet$/, async function ( + walletName +) { + const { id: walletId, isLegacy } = await getWalletByName.call( + this, + walletName + ); + const walletAddresses = await this.client.executeAsync( + (walletId, isLegacy, done) => { + daedalus.api.ada + .getAddresses({ + walletId, + isLegacy, + }) + .then((response) => done(response)) + .catch((error) => done(error)); + }, + walletId, isLegacy - } = await getWalletByName.call(this, walletName); - const walletAddresses = await this.client.executeAsync((walletId, isLegacy, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.getAddresses({ - walletId, - isLegacy - }).then(response => done(response)).catch(error => done(error)); - }, walletId, isLegacy); + ); const activeAddress = await this.client.getText('.WalletReceiveRandom_hash'); - const walletAddress = find(walletAddresses.value, address => address.id === activeAddress); + const walletAddress = find( + walletAddresses.value, + (address) => address.id === activeAddress + ); expect(walletAddress.id).to.equal(activeAddress); }); diff --git a/tests/app/e2e/steps/about-dialog.ts b/tests/app/e2e/steps/about-dialog.ts index aea39858b9..9b839c9e2b 100644 --- a/tests/app/e2e/steps/about-dialog.ts +++ b/tests/app/e2e/steps/about-dialog.ts @@ -1,27 +1,26 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import packageJson from "../../../../package.json"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import packageJson from '../../../../package.json'; const SELECTORS = { CONTAINER: '.About_container', - VERSION: '.About_daedalusVersion' + VERSION: '.About_daedalusVersion', }; Given(/^I open the About dialog$/, async function () { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. this.client.execute(() => daedalus.actions.app.openAboutDialog.trigger()); }); When(/^I close the About dialog$/, function () { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. this.client.execute(() => daedalus.actions.app.closeAboutDialog.trigger()); }); Then(/^the About dialog is (hidden|visible)/, async function (state) { const isVisible = state === 'visible'; return this.client.waitForVisible(SELECTORS.CONTAINER, null, !isVisible); }); -Then(/^the About dialog and package.json show the same Daedalus version/, async function () { - const { - version: packageJsonVersion - } = packageJson; - const aboutVersion = await this.waitAndGetText(SELECTORS.VERSION); - expect(aboutVersion).to.equal(packageJsonVersion); -}); \ No newline at end of file +Then( + /^the About dialog and package.json show the same Daedalus version/, + async function () { + const { version: packageJsonVersion } = packageJson; + const aboutVersion = await this.waitAndGetText(SELECTORS.VERSION); + expect(aboutVersion).to.equal(packageJsonVersion); + } +); diff --git a/tests/app/e2e/steps/app-version-difference.ts b/tests/app/e2e/steps/app-version-difference.ts index 36c613c7f5..b10ca57775 100644 --- a/tests/app/e2e/steps/app-version-difference.ts +++ b/tests/app/e2e/steps/app-version-difference.ts @@ -1,41 +1,52 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { environment } from "../../../../source/main/environment"; -import { getVisibleTextsForSelector } from "../../../common/e2e/steps/helpers"; -import { i18nHelpers } from "../../../settings/e2e/steps/helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { environment } from '../../../../source/main/environment'; +import { getVisibleTextsForSelector } from '../../../common/e2e/steps/helpers'; +import { i18nHelpers } from '../../../settings/e2e/steps/helpers'; const currentAppVersion = environment.version; const currentAppVersionChunks = currentAppVersion.split('.'); -const { - formatMessage -} = i18nHelpers; -const nextAppVersion = [currentAppVersionChunks[0], parseInt(currentAppVersionChunks[1], 10) + 1, currentAppVersionChunks[2]].join('.'); +const { formatMessage } = i18nHelpers; +const nextAppVersion = [ + currentAppVersionChunks[0], + parseInt(currentAppVersionChunks[1], 10) + 1, + currentAppVersionChunks[2], +].join('.'); const SELECTORS = { DESCRIPTION: 'appUpdate.manualUpdateOverlay.description2', OVERLAY: '.ManualUpdate_content', - VERSION_INFO: '.ManualUpdate_content .ManualUpdate_description p:nth-child(2)' + VERSION_INFO: + '.ManualUpdate_content .ManualUpdate_description p:nth-child(2)', }; -Given(/^There is a newer application version available$/, async function () {// await this.client.execute(version => { +Given(/^There is a newer application version available$/, async function () { + // await this.client.execute(version => { // daedalus.api.ada.setLatestAppVersion(version); // }, nextAppVersion); }); Then(/^I should see the "Manual Update" overlay$/, function () { return this.client.waitForVisible(SELECTORS.OVERLAY); }); -Then(/^The overlay should accurately display the version info$/, async function () { - const [renderedText] = await getVisibleTextsForSelector(this.client, SELECTORS.VERSION_INFO); - let expectedText = await formatMessage(this.client, { - id: SELECTORS.DESCRIPTION, - values: { - currentAppVersion, - availableAppVersion: nextAppVersion - } - }); - // Expected text contains HTML tags so we need to strip them before running comparison - expectedText = expectedText.replace(/<[^>]*>?/gm, ''); - expect(renderedText).to.equal(expectedText); -}); -When(/^I trigger the apply-update endpoint$/, async function () {// await this.client.executeAsync(done => { +Then( + /^The overlay should accurately display the version info$/, + async function () { + const [renderedText] = await getVisibleTextsForSelector( + this.client, + SELECTORS.VERSION_INFO + ); + let expectedText = await formatMessage(this.client, { + id: SELECTORS.DESCRIPTION, + values: { + currentAppVersion, + availableAppVersion: nextAppVersion, + }, + }); + // Expected text contains HTML tags so we need to strip them before running comparison + expectedText = expectedText.replace(/<[^>]*>?/gm, ''); + expect(renderedText).to.equal(expectedText); + } +); +When(/^I trigger the apply-update endpoint$/, async function () { + // await this.client.executeAsync(done => { // daedalus.api.ada // .applyUpdate() // .then(done) @@ -43,4 +54,4 @@ When(/^I trigger the apply-update endpoint$/, async function () {// await this.c // throw e; // }); // }); -}); \ No newline at end of file +}); diff --git a/tests/app/e2e/steps/cardano-node.ts b/tests/app/e2e/steps/cardano-node.ts index 60c84726db..ee71303296 100644 --- a/tests/app/e2e/steps/cardano-node.ts +++ b/tests/app/e2e/steps/cardano-node.ts @@ -1,12 +1,19 @@ -import { Given, Then } from "cucumber"; -import { CardanoNodeStates } from "../../../../source/common/types/cardano-node.types"; -import { getCardanoNodeState, waitForCardanoNodeToExit } from "./helpers"; +import { Given, Then } from 'cucumber'; +import { CardanoNodeStates } from '../../../../source/common/types/cardano-node.types'; +import { getCardanoNodeState, waitForCardanoNodeToExit } from './helpers'; Given(/^cardano-node is running$/, async function () { - await this.client.waitUntil(async () => (await getCardanoNodeState(this.client)) === CardanoNodeStates.RUNNING); + await this.client.waitUntil( + async () => + (await getCardanoNodeState(this.client)) === CardanoNodeStates.RUNNING + ); }); -Then(/^cardano-node process is not running$/, { - timeout: 61000 -}, async function () { - await waitForCardanoNodeToExit(this.client); -}); \ No newline at end of file +Then( + /^cardano-node process is not running$/, + { + timeout: 61000, + }, + async function () { + await waitForCardanoNodeToExit(this.client); + } +); diff --git a/tests/app/e2e/steps/daedalus-process.ts b/tests/app/e2e/steps/daedalus-process.ts index a71695b93f..4a8c9d6ead 100644 --- a/tests/app/e2e/steps/daedalus-process.ts +++ b/tests/app/e2e/steps/daedalus-process.ts @@ -1,19 +1,21 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { waitUntilTextInSelector } from "../../../common/e2e/steps/helpers"; -import { refreshClient, waitForCardanoNodeToExit, waitForDaedalusToExit } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { waitUntilTextInSelector } from '../../../common/e2e/steps/helpers'; +import { + refreshClient, + waitForCardanoNodeToExit, + waitForDaedalusToExit, +} from './helpers'; const CONNECTING_TITLE = '.SyncingConnectingStatus_headline'; Given(/^Daedalus is running$/, function () { expect(this.app.isRunning()).to.equal(true); }); Given('I am on the connecting screen', async function () { - this.client.executeAsync(done => { + this.client.executeAsync((done) => { // Simulate that there is no connection to cardano node - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.api.ada.setSyncProgress(0); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.networkStatus._updateNetworkStatus().then(done); }); await this.client.waitForVisible('.SyncingConnectingStatus_connecting'); @@ -22,48 +24,50 @@ When(/^I refresh the main window$/, async function () { await refreshClient(this.client); }); When(/^I close the main window$/, async function () { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. await this.client.execute(() => daedalus.stores.window.closeWindow()); }); Then(/^Daedalus process is not running$/, async function () { await waitForDaedalusToExit(this.client); }); -Then(/^Daedalus should quit$/, { - timeout: 70000 -}, async function () { - await waitForCardanoNodeToExit(this.client); - await waitForDaedalusToExit(this.client); -}); -Then(/^I should see the loading screen with "([^"]*)"$/, async function (message) { +Then( + /^Daedalus should quit$/, + { + timeout: 70000, + }, + async function () { + await waitForCardanoNodeToExit(this.client); + await waitForDaedalusToExit(this.client); + } +); +Then(/^I should see the loading screen with "([^"]*)"$/, async function ( + message +) { await waitUntilTextInSelector(this.client, { selector: CONNECTING_TITLE, - text: message + text: message, }); }); Then(/^I should see the main UI/, function () { return this.client.waitForVisible('.SidebarLayout_component'); }); -Given('I set the syncing progress to {int} percent', async function (percentage) { +Given('I set the syncing progress to {int} percent', async function ( + percentage +) { this.client.executeAsync((percentage, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.api.ada.setSyncProgress(percentage); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.networkStatus._updateNetworkStatus().then(done); }, percentage); }); When('I reset the syncing progress', async function () { - this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + this.client.executeAsync((done) => { daedalus.api.ada.setSyncProgress(null); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.networkStatus._updateNetworkStatus().then(done); }); }); When(/^I disconnect app$/, function () { this.client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.networkStatus._setDisconnected(true); }); -}); \ No newline at end of file +}); diff --git a/tests/app/e2e/steps/data-layer-migration.ts b/tests/app/e2e/steps/data-layer-migration.ts index 9bf6346679..3396bcc083 100644 --- a/tests/app/e2e/steps/data-layer-migration.ts +++ b/tests/app/e2e/steps/data-layer-migration.ts @@ -1,12 +1,11 @@ -import { Given, When, Then } from "cucumber"; +import { Given, When, Then } from 'cucumber'; const SELECTORS = { COMPONENT: '.DataLayerMigrationForm_component', - SUBMIT_BTN: '.DataLayerMigrationForm_submitButton' + SUBMIT_BTN: '.DataLayerMigrationForm_submitButton', }; Given(/^I haven't accepted the data layer migration$/, async function () { await this.client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.api.localStorage.unsetDataLayerMigrationAcceptance(); }); }); @@ -18,4 +17,4 @@ Then(/^I should not see the Data Layer Migration screen$/, function () { }); When(/^I click the migration button$/, function () { return this.waitAndClick(`${SELECTORS.COMPONENT} ${SELECTORS.SUBMIT_BTN}`); -}); \ No newline at end of file +}); diff --git a/tests/app/e2e/steps/helpers.ts b/tests/app/e2e/steps/helpers.ts index 61cc6c6b40..c0d336da26 100644 --- a/tests/app/e2e/steps/helpers.ts +++ b/tests/app/e2e/steps/helpers.ts @@ -1,27 +1,45 @@ -import { When } from "cucumber"; -import { getProcessesByName } from "../../../../source/main/utils/processes"; +import { When } from 'cucumber'; +import { getProcessesByName } from '../../../../source/main/utils/processes'; const ACTIVE_RESTORE_NOTIFICATION = '.ActiveRestoreNotification'; -// @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. -export const getCardanoNodeState = async (client: Record) => (await client.execute(() => daedalus.stores.networkStatus.cardanoNodeState)).value; +export const getCardanoNodeState = async (client: Record) => + (await client.execute(() => daedalus.stores.networkStatus.cardanoNodeState)) + .value; export const refreshClient = async (client: Record) => { await client.url(`file://${__dirname}/../../../../dist/renderer/index.html`); }; const oneHour = 60 * 60 * 1000; // Helper step to pause execution for up to an hour ;) -When(/^I freeze$/, { - timeout: oneHour -}, callback => { - setTimeout(callback, oneHour); -}); -// @ts-ignore ts-migrate(2741) FIXME: Property 'isHidden' is missing in type '{}' but re... Remove this comment to see the full error message -export const waitForActiveRestoreNotification = (client: Record, { - isHidden -}: { - isHidden: boolean; -} = {}) => client.waitForVisible(ACTIVE_RESTORE_NOTIFICATION, null, isHidden); -export const waitForCardanoNodeToExit = async (client: Record) => client.waitUntil(async () => (await getProcessesByName('cardano-node')).length === 0, 61000); -export const waitForDaedalusToExit = async (client: Record, timeout = 61000) => { - const daedalusProcessName = process.platform === 'linux' ? 'electron' : 'Electron'; - return client.waitUntil(async () => (await getProcessesByName(daedalusProcessName)).length === 0, timeout); -}; \ No newline at end of file +When( + /^I freeze$/, + { + timeout: oneHour, + }, + (callback) => { + setTimeout(callback, oneHour); + } +); +export const waitForActiveRestoreNotification = ( + client: Record, + { + isHidden, + }: { + isHidden?: boolean; + } = {} +) => client.waitForVisible(ACTIVE_RESTORE_NOTIFICATION, null, isHidden); +export const waitForCardanoNodeToExit = async (client: Record) => + client.waitUntil( + async () => (await getProcessesByName('cardano-node')).length === 0, + 61000 + ); +export const waitForDaedalusToExit = async ( + client: Record, + timeout = 61000 +) => { + const daedalusProcessName = + process.platform === 'linux' ? 'electron' : 'Electron'; + return client.waitUntil( + async () => (await getProcessesByName(daedalusProcessName)).length === 0, + timeout + ); +}; diff --git a/tests/app/e2e/steps/inject-fault.ts b/tests/app/e2e/steps/inject-fault.ts index 8d83727cf4..bffa697c9e 100644 --- a/tests/app/e2e/steps/inject-fault.ts +++ b/tests/app/e2e/steps/inject-fault.ts @@ -1,10 +1,12 @@ -import { When } from "cucumber"; +import { When } from 'cucumber'; When(/^I inject fault named "([^"]*)"$/, async function (faultName) { await this.client.executeAsync((name, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.setCardanoNodeFault([name, true]).then(done).catch(e => { - throw e; - }); + daedalus.api.ada + .setCardanoNodeFault([name, true]) + .then(done) + .catch((e) => { + throw e; + }); }, faultName); -}); \ No newline at end of file +}); diff --git a/tests/app/e2e/steps/local-time-difference.ts b/tests/app/e2e/steps/local-time-difference.ts index 08c42b31cc..2296b4c1fe 100644 --- a/tests/app/e2e/steps/local-time-difference.ts +++ b/tests/app/e2e/steps/local-time-difference.ts @@ -1,25 +1,37 @@ -import { Given, Then } from "cucumber"; -import { expectTextInSelector } from "../../../common/e2e/steps/helpers"; +import { Given, Then } from 'cucumber'; +import { expectTextInSelector } from '../../../common/e2e/steps/helpers'; const SELECTORS = { ERROR_COMPONENT: '.SystemTimeError_component', - TIME_OFF: '.time-off' + TIME_OFF: '.time-off', }; -Given('I set the local time difference to be {int} seconds', async function (seconds) { +Given('I set the local time difference to be {int} seconds', async function ( + seconds +) { const differenceTime = seconds * 1000000; // unit: microseconds await this.client.executeAsync((timeDifference, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.setLocalTimeDifference(timeDifference).then(() => daedalus.stores.networkStatus._updateNetworkStatus()).then(() => daedalus.stores.networkStatus._updateNetworkClock()).then(done).catch(error => done(error)); + daedalus.api.ada + .setLocalTimeDifference(timeDifference) + .then(() => daedalus.stores.networkStatus._updateNetworkStatus()) + .then(() => daedalus.stores.networkStatus._updateNetworkClock()) + .then(done) + .catch((error) => done(error)); }, differenceTime); }); -Then(/^the system time error overlay should be (hidden|visible)$/, function (state) { +Then(/^the system time error overlay should be (hidden|visible)$/, function ( + state +) { const isVisible = state === 'visible'; - return this.client.waitForVisible(SELECTORS.ERROR_COMPONENT, null, !isVisible); + return this.client.waitForVisible( + SELECTORS.ERROR_COMPONENT, + null, + !isVisible + ); }); Then('the system time difference should be {string}', async function (text) { await expectTextInSelector(this.client, { selector: SELECTORS.TIME_OFF, - text + text, }); -}); \ No newline at end of file +}); diff --git a/tests/app/e2e/steps/no-disk-space.ts b/tests/app/e2e/steps/no-disk-space.ts index 52ea040909..da93231f05 100644 --- a/tests/app/e2e/steps/no-disk-space.ts +++ b/tests/app/e2e/steps/no-disk-space.ts @@ -1,5 +1,5 @@ -import { Given, Then, When } from "cucumber"; -import type { Daedalus } from "../../../types"; +import { Given, Then, When } from 'cucumber'; +import type { Daedalus } from '../../../types'; let diskSpaceRequired; const HUNDRED_TB = 100 * 1e12; // 100 TB | unit: bytes @@ -17,11 +17,16 @@ Given(/^I set the required space to 1 KB$/, () => { }); When(/^I check the disk space$/, function () { this.client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.networkStatus._checkDiskSpace(); }, diskSpaceRequired); }); -Then(/^The No Disk Space overlay should be (hidden|visible)$/, function (state) { +Then(/^The No Disk Space overlay should be (hidden|visible)$/, function ( + state +) { const waitForHidden = state === 'hidden'; - return this.client.waitForVisible(NO_DISK_SPACE_COMPONENT, null, waitForHidden); -}); \ No newline at end of file + return this.client.waitForVisible( + NO_DISK_SPACE_COMPONENT, + null, + waitForHidden + ); +}); diff --git a/tests/app/e2e/steps/node-restart.ts b/tests/app/e2e/steps/node-restart.ts index 6804b4ba16..97819fe81b 100644 --- a/tests/app/e2e/steps/node-restart.ts +++ b/tests/app/e2e/steps/node-restart.ts @@ -1,18 +1,21 @@ -import { Given, When, Then } from "cucumber"; -import { waitUntilTextInSelector } from "../../../common/e2e/steps/helpers"; +import { Given, When, Then } from 'cucumber'; +import { waitUntilTextInSelector } from '../../../common/e2e/steps/helpers'; const CARDANO_NODE_STATE = '.cardanoNodeState .DaedalusDiagnostics_layoutData'; Given(/^I open the "Diagnostic" screen$/, async function () { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - this.client.execute(() => daedalus.actions.app.openDaedalusDiagnosticsDialog.trigger()); + this.client.execute(() => + daedalus.actions.app.openDaedalusDiagnosticsDialog.trigger() + ); return this.client.waitForVisible('.DaedalusDiagnostics_component'); }); -Then(/^I should see the Cardano Node state is "([^"]*)"$/, async function (message) { +Then(/^I should see the Cardano Node state is "([^"]*)"$/, async function ( + message +) { await waitUntilTextInSelector(this.client, { selector: CARDANO_NODE_STATE, - text: message + text: message, }); }); When(/^I click on the "Restart Cardano Node" button$/, function () { return this.client.click('.DaedalusDiagnostics_cardanoNodeStatusBtn'); -}); \ No newline at end of file +}); diff --git a/tests/app/e2e/steps/trouble-connecting-notification.ts b/tests/app/e2e/steps/trouble-connecting-notification.ts index 57952469a6..8dcd22888d 100644 --- a/tests/app/e2e/steps/trouble-connecting-notification.ts +++ b/tests/app/e2e/steps/trouble-connecting-notification.ts @@ -1,24 +1,37 @@ -import { Then } from "cucumber"; -import { waitUntilTextInSelector } from "../../../common/e2e/steps/helpers"; +import { Then } from 'cucumber'; +import { waitUntilTextInSelector } from '../../../common/e2e/steps/helpers'; const SELECTORS = { REPORT_ISSUE_BTN: '.ReportIssue_actionButton.reportIssueButton', REPORT_ISSUE_HEADER: '.ReportIssue_reportIssueText', - SYNCING_CONNECTING_COMPONENT: '.SyncingConnecting_component' + SYNCING_CONNECTING_COMPONENT: '.SyncingConnecting_component', }; Then(/^I should not see the loading screen$/, async function () { - await this.client.waitForVisible(SELECTORS.SYNCING_CONNECTING_COMPONENT, null, true); -}); -Then(/^I should see the report issue notification displaying "([^"]*)"$/, async function (text) { - await waitUntilTextInSelector(this.client, { - selector: SELECTORS.REPORT_ISSUE_HEADER, - text - }); + await this.client.waitForVisible( + SELECTORS.SYNCING_CONNECTING_COMPONENT, + null, + true + ); }); +Then( + /^I should see the report issue notification displaying "([^"]*)"$/, + async function (text) { + await waitUntilTextInSelector(this.client, { + selector: SELECTORS.REPORT_ISSUE_HEADER, + text, + }); + } +); Then(/^I should not see the report issue notification$/, async function () { await this.client.waitForVisible(SELECTORS.REPORT_ISSUE_HEADER, null, true); }); -Then(/^The report issue button should be (hidden|visible)$/, async function (state) { +Then(/^The report issue button should be (hidden|visible)$/, async function ( + state +) { const waitForHidden = state === 'hidden'; - await this.client.waitForVisible(SELECTORS.REPORT_ISSUE_BTN, null, waitForHidden); -}); \ No newline at end of file + await this.client.waitForVisible( + SELECTORS.REPORT_ISSUE_BTN, + null, + waitForHidden + ); +}); diff --git a/tests/app/e2e/steps/trouble-syncing-notification.ts b/tests/app/e2e/steps/trouble-syncing-notification.ts index cdbfa864f7..5542388e24 100644 --- a/tests/app/e2e/steps/trouble-syncing-notification.ts +++ b/tests/app/e2e/steps/trouble-syncing-notification.ts @@ -1,10 +1,10 @@ -import { Then } from "cucumber"; -import { waitUntilTextInSelector } from "../../../common/e2e/steps/helpers"; +import { Then } from 'cucumber'; +import { waitUntilTextInSelector } from '../../../common/e2e/steps/helpers'; const SYNCING_STATUS_HEADER = '.SyncingConnectingTitle_syncing h1'; Then(/^I should see the syncing status with "([^"]*)"$/, async function (text) { await waitUntilTextInSelector(this.client, { selector: SYNCING_STATUS_HEADER, - text + text, }); -}); \ No newline at end of file +}); diff --git a/tests/assets/unit/assets.spec.ts b/tests/assets/unit/assets.spec.ts index d002fed5b7..8d682e5aae 100644 --- a/tests/assets/unit/assets.spec.ts +++ b/tests/assets/unit/assets.spec.ts @@ -1,76 +1,95 @@ -import BigNumber from "bignumber.js"; -import { hasTokensLeftAfterTransaction } from "../../../source/renderer/app/utils/assets"; +import BigNumber from 'bignumber.js'; +import { hasTokensLeftAfterTransaction } from '../../../source/renderer/app/utils/assets'; -const allAvailableTokens = [{ - policyId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', - assetName: '', - quantity: new BigNumber(6), - fingerprint: 'asset1cvmyrfrc7lpht2hcjwr9lulzyyjv27uxh3kcz0', - metadata: { - url: 'https://developers.cardano.org/', - name: 'Testcoin', - ticker: 'TEST', - description: 'Testcoin crypto powered by Cardano testnet.' +const allAvailableTokens = [ + { + policyId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', + assetName: '', + quantity: new BigNumber(6), + fingerprint: 'asset1cvmyrfrc7lpht2hcjwr9lulzyyjv27uxh3kcz0', + metadata: { + url: 'https://developers.cardano.org/', + name: 'Testcoin', + ticker: 'TEST', + description: 'Testcoin crypto powered by Cardano testnet.', + }, + recommendedDecimals: null, + uniqueId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', }, - recommendedDecimals: null, - uniqueId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7' -}, { - policyId: '94d4cdbcffb09ebd4780d94f932a657dc4852530fa8013df66c72d4c', - assetName: '676f6f64636f696e', - quantity: new BigNumber(1), - fingerprint: 'asset13x2a44r5cp3kuys2x7sgz5062r6q9hl8htkpup', - metadata: { - url: 'https://good.io', - name: 'GoodCoin', - description: 'Coin that is good!!! 👍' + { + policyId: '94d4cdbcffb09ebd4780d94f932a657dc4852530fa8013df66c72d4c', + assetName: '676f6f64636f696e', + quantity: new BigNumber(1), + fingerprint: 'asset13x2a44r5cp3kuys2x7sgz5062r6q9hl8htkpup', + metadata: { + url: 'https://good.io', + name: 'GoodCoin', + description: 'Coin that is good!!! 👍', + }, + recommendedDecimals: null, + uniqueId: + '94d4cdbcffb09ebd4780d94f932a657dc4852530fa8013df66c72d4c676f6f64636f696e', }, - recommendedDecimals: null, - uniqueId: '94d4cdbcffb09ebd4780d94f932a657dc4852530fa8013df66c72d4c676f6f64636f696e' -}, { - policyId: '789ef8ae89617f34c07f7f6a12e4d65146f958c0bc15a97b4ff169f1', - assetName: '', - quantity: new BigNumber(2), - fingerprint: 'asset1656gm7zkherdvxkn52mhaxkkw343qtkqgv0h8c', - metadata: { - url: 'https://sad.io', - name: 'SadCoin', - ticker: 'SAD', - description: 'Coin with no asset name' + { + policyId: '789ef8ae89617f34c07f7f6a12e4d65146f958c0bc15a97b4ff169f1', + assetName: '', + quantity: new BigNumber(2), + fingerprint: 'asset1656gm7zkherdvxkn52mhaxkkw343qtkqgv0h8c', + metadata: { + url: 'https://sad.io', + name: 'SadCoin', + ticker: 'SAD', + description: 'Coin with no asset name', + }, + recommendedDecimals: null, + uniqueId: '789ef8ae89617f34c07f7f6a12e4d65146f958c0bc15a97b4ff169f1', }, - recommendedDecimals: null, - uniqueId: '789ef8ae89617f34c07f7f6a12e4d65146f958c0bc15a97b4ff169f1' -}]; -const initialSelectedAssets = [{ - policyId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', - assetName: '', - quantity: new BigNumber(6), - fingerprint: 'asset1cvmyrfrc7lpht2hcjwr9lulzyyjv27uxh3kcz0', - metadata: { - url: 'https://developers.cardano.org/', - name: 'Testcoin', - ticker: 'TEST', - description: 'Testcoin crypto powered by Cardano testnet.' +]; +const initialSelectedAssets = [ + { + policyId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', + assetName: '', + quantity: new BigNumber(6), + fingerprint: 'asset1cvmyrfrc7lpht2hcjwr9lulzyyjv27uxh3kcz0', + metadata: { + url: 'https://developers.cardano.org/', + name: 'Testcoin', + ticker: 'TEST', + description: 'Testcoin crypto powered by Cardano testnet.', + }, + recommendedDecimals: null, + uniqueId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', }, - recommendedDecimals: null, - uniqueId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7' -}]; +]; describe('Function hasTokenLeftAfterTransaction returns:', () => { it(' if some assets are left in the wallet', () => { - const selectedAssets = ["3", "1", "1"]; + const selectedAssets = ['3', '1', '1']; // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ policyId: string; assetName: ... Remove this comment to see the full error message - const result = hasTokensLeftAfterTransaction(allAvailableTokens, allAvailableTokens, selectedAssets); + const result = hasTokensLeftAfterTransaction( + allAvailableTokens, + allAvailableTokens, + selectedAssets + ); expect(result).toBe(true); }); it(' if no tokens and no assets are left in the wallet', () => { - const selectedAssets = ["6", "1", "2"]; + const selectedAssets = ['6', '1', '2']; // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ policyId: string; assetName: ... Remove this comment to see the full error message - const result = hasTokensLeftAfterTransaction(allAvailableTokens, allAvailableTokens, selectedAssets); + const result = hasTokensLeftAfterTransaction( + allAvailableTokens, + allAvailableTokens, + selectedAssets + ); expect(result).toBe(false); }); it(' in case all assets of a token are spend but other tokens are are left in the wallet', () => { - const selectedAssets = ["1"]; + const selectedAssets = ['1']; // @ts-ignore ts-migrate(2345) FIXME: Argument of type '({ policyId: string; assetName: ... Remove this comment to see the full error message - const result = hasTokensLeftAfterTransaction(allAvailableTokens, initialSelectedAssets, selectedAssets); + const result = hasTokensLeftAfterTransaction( + allAvailableTokens, + initialSelectedAssets, + selectedAssets + ); expect(result).toBe(true); }); }); diff --git a/tests/common/e2e/.eslintrc b/tests/common/e2e/.eslintrc new file mode 100644 index 0000000000..35b1fa5364 --- /dev/null +++ b/tests/common/e2e/.eslintrc @@ -0,0 +1,6 @@ +{ + "rules": { + "jest/no-standalone-expect": 0, + "jest/valid-expect": 0 + } +} diff --git a/tests/common/e2e/steps/config.ts b/tests/common/e2e/steps/config.ts index ad80382a9c..a3de26cf5e 100644 --- a/tests/common/e2e/steps/config.ts +++ b/tests/common/e2e/steps/config.ts @@ -1,4 +1,4 @@ export const DEFAULT_TIMEOUT = 20000; export const testStorageKeys = { - BYRON_MNEMONICS_INDEX: 'byron-mnemonics-index' -}; \ No newline at end of file + BYRON_MNEMONICS_INDEX: 'byron-mnemonics-index', +}; diff --git a/tests/common/e2e/steps/helpers.ts b/tests/common/e2e/steps/helpers.ts index 95105c0a6e..d82bb6fe6e 100644 --- a/tests/common/e2e/steps/helpers.ts +++ b/tests/common/e2e/steps/helpers.ts @@ -1,21 +1,28 @@ -import fs from "fs"; -import path from "path"; -import { expect } from "chai"; -import { generateFileNameWithTimestamp } from "../../../../source/common/utils/files"; -import ensureDirectoryExists from "../../../../source/main/utils/ensureDirectoryExists"; -import { DEFAULT_TIMEOUT } from "./config"; +import fs from 'fs'; +import path from 'path'; +import { expect } from 'chai'; +import { generateFileNameWithTimestamp } from '../../../../source/common/utils/files'; +import ensureDirectoryExists from '../../../../source/main/utils/ensureDirectoryExists'; +import { DEFAULT_TIMEOUT } from './config'; -export const notFoundWalletsErrorMessage = 'No wallet(s) found with the given name(s).'; -export const expectTextInSelector = async (client: Record, { - selector, - text -}: { - selector: string; - text: string; -}) => { - let textOnScreen = await waitAndGetText.call({ - client - }, selector); +export const notFoundWalletsErrorMessage = + 'No wallet(s) found with the given name(s).'; +export const expectTextInSelector = async ( + client: Record, + { + selector, + text, + }: { + selector: string; + text: string; + } +) => { + let textOnScreen = await waitAndGetText.call( + { + client, + }, + selector + ); // The selector could exist multiple times in the DOM if (typeof textOnScreen === 'string') textOnScreen = [textOnScreen]; // We only compare the first result @@ -25,39 +32,74 @@ export const generateScreenshotFilePath = (prefix: string) => { const prefixParts = prefix.split('/'); const testName = prefixParts.pop(); const testPath = prefixParts.slice(1).join('/'); - const filePath = path.resolve(__dirname, '../../../../tests-report/screenshots/', testPath); + const filePath = path.resolve( + __dirname, + '../../../../tests-report/screenshots/', + testPath + ); const extension = 'png'; const fileName = generateFileNameWithTimestamp({ prefix: testName, - extension + extension, }); ensureDirectoryExists(filePath); return `${filePath}/${fileName}`; }; -export const getTestNameFromTestFile = (testFile: string) => testFile.split('.feature').join(''); -export const getVisibleElementsCountForSelector = async (client: Record, selectSelector: string, waitSelector: string = selectSelector, ...waitArgs: Array) => { - const elements = await getVisibleElementsForSelector(client, selectSelector, waitSelector, ...waitArgs); +export const getTestNameFromTestFile = (testFile: string) => + testFile.split('.feature').join(''); +export const getVisibleElementsCountForSelector = async ( + client: Record, + selectSelector: string, + waitSelector: string = selectSelector, + ...waitArgs: Array +) => { + const elements = await getVisibleElementsForSelector( + client, + selectSelector, + waitSelector, + ...waitArgs + ); return elements.value ? elements.value.length : 0; }; -export const getVisibleElementsForSelector = async (client: Record, selectSelector: string, waitSelector: string = selectSelector, ...waitArgs: Array) => { +export const getVisibleElementsForSelector = async ( + client: Record, + selectSelector: string, + waitSelector: string = selectSelector, + ...waitArgs: Array +) => { await client.waitForVisible(waitSelector, ...waitArgs); return client.elements(selectSelector); }; -export const getVisibleTextsForSelector = async (client: Record, selector: string): Promise> => { - const texts = await waitAndGetText.call({ - client - }, selector); +export const getVisibleTextsForSelector = async ( + client: Record, + selector: string +): Promise> => { + const texts = await waitAndGetText.call( + { + client, + }, + selector + ); return [].concat(texts); }; -export const saveScreenshot = async (context: Record, file: any) => await context.browserWindow.capturePage().then(imageBuffer => fs.writeFile(file, imageBuffer, err => { - if (err) { - console.log(err); - } -})).catch(err => { - // eslint-disable-next-line no-console - console.log(err); -}); -export const waitAndClick = async function (selector: string, ...waitArgs: Array) { +export const saveScreenshot = async (context: Record, file: any) => + await context.browserWindow + .capturePage() + .then((imageBuffer) => + fs.writeFile(file, imageBuffer, (err) => { + if (err) { + console.log(err); + } + }) + ) + .catch((err) => { + // eslint-disable-next-line no-console + console.log(err); + }); +export const waitAndClick = async function ( + selector: string, + ...waitArgs: Array +) { await this.client.waitForVisible(selector, ...waitArgs); await this.client.waitForEnabled(selector, ...waitArgs); return this.client.click(selector); @@ -66,41 +108,62 @@ export const waitAndGetText = async function (selector: string) { await this.client.waitForText(selector); return this.client.getText(selector); }; -export const waitAndSetValue = async function (selector: string, value: string) { +export const waitAndSetValue = async function ( + selector: string, + value: string +) { await this.client.waitForExist(selector); return this.client.setValue(selector, value); }; -export const waitUntilTextInSelector = async (client: Record, { - selector, - text, - ignoreCase = false -}: { - selector: string; - text: string; - ignoreCase?: boolean; -}) => client.waitUntil(async () => { - let textOnScreen = await waitAndGetText.call({ - client - }, selector); - // The selector could exist multiple times in the DOM - if (typeof textOnScreen === 'string') textOnScreen = [textOnScreen]; - - // We only compare the first result - if (ignoreCase) { - return textOnScreen[0].toLowerCase() === text.toLowerCase(); +export const waitUntilTextInSelector = async ( + client: Record, + { + selector, + text, + ignoreCase = false, + }: { + selector: string; + text: string; + ignoreCase?: boolean; } +) => + client.waitUntil(async () => { + let textOnScreen = await waitAndGetText.call( + { + client, + }, + selector + ); + // The selector could exist multiple times in the DOM + if (typeof textOnScreen === 'string') textOnScreen = [textOnScreen]; + + // We only compare the first result + if (ignoreCase) { + return textOnScreen[0].toLowerCase() === text.toLowerCase(); + } - return textOnScreen[0] === text; -}); + return textOnScreen[0] === text; + }); export const timeout = (ms: number) => { - return new Promise(resolve => setTimeout(resolve, ms)); + return new Promise((resolve) => setTimeout(resolve, ms)); }; -export const scrollIntoView = async (client: Record, targetSelector: string) => { - const isVisibleWithinViewport = await client.isVisibleWithinViewport(targetSelector); +export const scrollIntoView = async ( + client: Record, + targetSelector: string +) => { + const isVisibleWithinViewport = await client.isVisibleWithinViewport( + targetSelector + ); if (!isVisibleWithinViewport) { - await client.execute(target => { - const targetElement = window.document.evaluate(target, window.document, null, window.XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; + await client.execute((target) => { + const targetElement = window.document.evaluate( + target, + window.document, + null, + window.XPathResult.FIRST_ORDERED_NODE_TYPE, + null + ).singleNodeValue; // @ts-ignore ts-migrate(2339) FIXME: Property 'scrollIntoView' does not exist on type '... Remove this comment to see the full error message targetElement.scrollIntoView(); }, targetSelector); @@ -108,9 +171,14 @@ export const scrollIntoView = async (client: Record, targetSelector await timeout(500); } }; -export const clickInputByLabel = async function (label: string, isExactText = true) { +export const clickInputByLabel = async function ( + label: string, + isExactText = true +) { const className = 'SimpleFormField_label'; - const textSelector = isExactText ? `text()="${label}"` : `contains(text(),'${label}'`; + const textSelector = isExactText + ? `text()="${label}"` + : `contains(text(),'${label}'`; const selector = `//label[@class="${className}" and ${textSelector}]//following-sibling::div//input`; await this.waitAndClick(selector); }; @@ -119,12 +187,19 @@ export const clickOptionByValue = async function (value: string) { await this.waitAndClick(selector); }; export const clickOptionByIndex = async function (index: number) { - const selector = `(//div[contains(@class, 'SimpleSelect_isOpen')]//li[contains(@class, 'SimpleOptions_option')])[${index + 1}]`; + const selector = `(//div[contains(@class, 'SimpleSelect_isOpen')]//li[contains(@class, 'SimpleOptions_option')])[${ + index + 1 + }]`; await this.waitAndClick(selector); }; -export const getInputValueByLabel = async function (label: string, isExactText = true) { +export const getInputValueByLabel = async function ( + label: string, + isExactText = true +) { const className = 'SimpleFormField_label'; - const textSelector = isExactText ? `text()="${label}"` : `contains(text(),'${label}'`; + const textSelector = isExactText + ? `text()="${label}"` + : `contains(text(),'${label}'`; const selector = `//label[@class="${className}" and ${textSelector}]//following-sibling::div//input`; await this.client.waitForVisible(selector); const text = await this.client.getValue(selector); @@ -136,6 +211,9 @@ const avoidTimeout = async (description: string) => { return 'skipped'; }; -export const skippablePromise = async (testCaseName: string, pm: Promise) => { +export const skippablePromise = async ( + testCaseName: string, + pm: Promise +) => { return await Promise.race([avoidTimeout(testCaseName), pm]); -}; \ No newline at end of file +}; diff --git a/tests/common/unit/networks.spec.ts b/tests/common/unit/networks.spec.ts index 6219b4446d..b3bc3194f8 100644 --- a/tests/common/unit/networks.spec.ts +++ b/tests/common/unit/networks.spec.ts @@ -1,4 +1,4 @@ -import { getNetworkExplorerUri } from "../../../source/renderer/app/utils/network"; +import { getNetworkExplorerUri } from '../../../source/renderer/app/utils/network'; describe('Function getNetworkExplorerUri returns:', () => { it('the correct Url for TESTNET', () => { @@ -23,4 +23,4 @@ describe('Function getNetworkExplorerUri passing no arguments', () => { const result = getNetworkExplorerUri(''); expect(result).toBe('explorer.cardano.org'); }); -}); \ No newline at end of file +}); diff --git a/tests/common/unit/steps/mnemonics-form-validation.steps.ts b/tests/common/unit/steps/mnemonics-form-validation.steps.ts index 9308db7bce..6b96d8427f 100644 --- a/tests/common/unit/steps/mnemonics-form-validation.steps.ts +++ b/tests/common/unit/steps/mnemonics-form-validation.steps.ts @@ -1,9 +1,12 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { sampleSize } from "lodash"; -import sinon from "sinon"; -import validWords from "../../../../source/common/config/crypto/valid-words.en"; -import { validateMnemonics, INCOMPLETE_MNEMONIC_MARKER } from "../../../../source/renderer/app/utils/validations"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { sampleSize } from 'lodash'; +import sinon from 'sinon'; +import validWords from '../../../../source/common/config/crypto/valid-words.en'; +import { + validateMnemonics, + INCOMPLETE_MNEMONIC_MARKER, +} from '../../../../source/renderer/app/utils/validations'; const STUB_VALIDATOR_RETURN_VALUE = Symbol('validator return value'); Given('I require {int} mnemonic words', function (requiredWordsCount) { @@ -24,9 +27,17 @@ Then('the result should be an incomplete mnemonic marker', async function () { Then('the mnemonics validator should not have been called', async function () { expect(this.context.validator.called).to.equal(false); }); -Then('the result should be the return value of the mnemonics validator', async function () { - expect(this.context.result).to.equal(STUB_VALIDATOR_RETURN_VALUE); -}); -Then('the mnemonics validator should have been called with the provided words', async function () { - expect(this.context.validator.calledWithExactly(this.context.providedWords)).to.equal(true); -}); \ No newline at end of file +Then( + 'the result should be the return value of the mnemonics validator', + async function () { + expect(this.context.result).to.equal(STUB_VALIDATOR_RETURN_VALUE); + } +); +Then( + 'the mnemonics validator should have been called with the provided words', + async function () { + expect( + this.context.validator.calledWithExactly(this.context.providedWords) + ).to.equal(true); + } +); diff --git a/tests/delegation/e2e/steps/delegation-pending.ts b/tests/delegation/e2e/steps/delegation-pending.ts index 94227fa5a9..6f2d0a4c94 100644 --- a/tests/delegation/e2e/steps/delegation-pending.ts +++ b/tests/delegation/e2e/steps/delegation-pending.ts @@ -1,143 +1,170 @@ -import { Given, Then } from "cucumber"; -import { expect } from "chai"; -import { last } from "lodash"; +import { Given, Then } from 'cucumber'; +import { expect } from 'chai'; +import { last } from 'lodash'; let walletsTickers = []; -Given(/^the wallets have the following pending delegations:$/, async function (delegationScenariosTable) { +Given(/^the wallets have the following pending delegations:$/, async function ( + delegationScenariosTable +) { const delegationScenarios = delegationScenariosTable.hashes(); await this.client.waitUntil(async () => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const stakePools = await this.client.execute(() => daedalus.stores.staking.stakePools); + const stakePools = await this.client.execute( + () => daedalus.stores.staking.stakePools + ); return stakePools.value.length; }); - const walletsTickersInfo = await this.client.executeAsync((delegationScenarios, done) => { - const statusOptions = { - delegated: 'delegating', - undelegated: 'not_delegating' - }; - const walletsTickers = []; - const modifiedWallets = []; - - for (let index = 0; index < delegationScenarios.length; index++) { - const delegationQueue = delegationScenarios[index].DELEGATION_SCENARIO.split(' > '); - const modifiedWallet: { - name: string; - delegatedStakePoolId?: string; - delegationStakePoolStatus?: string; - lastDelegationStakePoolId?: string; - pendingDelegations: Array>; - syncState: Record; - } = { - name: `Modified Wallet ${index + 1}`, - pendingDelegations: [], - syncState: { - status: 'ready' - } + const walletsTickersInfo = await this.client.executeAsync( + (delegationScenarios, done) => { + const statusOptions = { + delegated: 'delegating', + undelegated: 'not_delegating', }; - const { - stakePools - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.staking; - const tickers = delegationQueue.map((delegationInfo, index) => { - const status = statusOptions[delegationInfo]; - const stakePool = status === 'delegating' ? stakePools[index] : null; - const ticker = stakePool ? `[${stakePool.ticker}]` : 'UNDELEGATED'; - const stakePoolId = stakePool ? stakePool.id : null; - return { - status, - ticker, - stakePoolId + const walletsTickers = []; + const modifiedWallets = []; + + for (let index = 0; index < delegationScenarios.length; index++) { + const delegationQueue = delegationScenarios[ + index + ].DELEGATION_SCENARIO.split(' > '); + const modifiedWallet: { + name: string; + delegatedStakePoolId?: string; + delegationStakePoolStatus?: string; + lastDelegationStakePoolId?: string; + pendingDelegations: Array>; + syncState: Record; + } = { + name: `Modified Wallet ${index + 1}`, + pendingDelegations: [], + syncState: { + status: 'ready', + }, }; - }); - walletsTickers.push(tickers); - tickers.forEach(({ - stakePoolId, - status - }, index) => { - if (index === 0) { - modifiedWallet.delegatedStakePoolId = stakePoolId; - modifiedWallet.delegationStakePoolStatus = status; - } else { - modifiedWallet.lastDelegationStakePoolId = stakePoolId; - modifiedWallet.pendingDelegations[index - 1] = { + const { stakePools } = daedalus.stores.staking; + const tickers = delegationQueue.map((delegationInfo, index) => { + const status = statusOptions[delegationInfo]; + const stakePool = status === 'delegating' ? stakePools[index] : null; + const ticker = stakePool ? `[${stakePool.ticker}]` : 'UNDELEGATED'; + const stakePoolId = stakePool ? stakePool.id : null; + return { status, - target: stakePoolId, - changes_at: { - epoch_start_time: '2020-02-02T02:02:57Z', - epoch_number: 123456789 - } + ticker, + stakePoolId, }; - } - }); - modifiedWallets.push(modifiedWallet); - } + }); + walletsTickers.push(tickers); + tickers.forEach(({ stakePoolId, status }, index) => { + if (index === 0) { + modifiedWallet.delegatedStakePoolId = stakePoolId; + modifiedWallet.delegationStakePoolStatus = status; + } else { + modifiedWallet.lastDelegationStakePoolId = stakePoolId; + modifiedWallet.pendingDelegations[index - 1] = { + status, + target: stakePoolId, + changes_at: { + epoch_start_time: '2020-02-02T02:02:57Z', + epoch_number: 123456789, + }, + }; + } + }); + modifiedWallets.push(modifiedWallet); + } - // @ts-ignore - daedalus.api.ada.setTestingWallets(modifiedWallets); - done(walletsTickers); - }, delegationScenarios); + // @ts-ignore + daedalus.api.ada.setTestingWallets(modifiedWallets); + done(walletsTickers); + }, + delegationScenarios + ); walletsTickers = walletsTickersInfo.value; }); -Then(/^the wallets should correctly display the correct stake pool tickers$/, { - timeout: 60000 -}, async function () { - const walletNameSelector = '.WalletRow_title'; - await this.client.waitForVisible(walletNameSelector); - // Waits for the patchAdaApi to transform the wallet values - await this.client.waitUntil(async () => { - const walletNames = await this.waitAndGetText(walletNameSelector); - return last(walletNames) === `Modified Wallet ${walletsTickers.length}`; - }); - const tickerSelector = '.tickerText'; - await this.client.waitForVisible(tickerSelector); - - for (let index = 0; index < walletsTickers.length; index++) { - const expectedTickers = walletsTickers[index]; - let tickerTexts = await this.waitAndGetText(`.WalletRow_component:nth-child(${index + 1}) ${tickerSelector}`); - if (!Array.isArray(tickerTexts)) tickerTexts = [tickerTexts]; - expect(tickerTexts.length).to.equal(expectedTickers.length); - tickerTexts.forEach((tickerText, index) => { - const { - ticker: expectedTickerText - } = expectedTickers[index]; - expect(tickerText).to.equal(expectedTickerText); +Then( + /^the wallets should correctly display the correct stake pool tickers$/, + { + timeout: 60000, + }, + async function () { + const walletNameSelector = '.WalletRow_title'; + await this.client.waitForVisible(walletNameSelector); + // Waits for the patchAdaApi to transform the wallet values + await this.client.waitUntil(async () => { + const walletNames = await this.waitAndGetText(walletNameSelector); + return last(walletNames) === `Modified Wallet ${walletsTickers.length}`; }); + const tickerSelector = '.tickerText'; + await this.client.waitForVisible(tickerSelector); + + for (let index = 0; index < walletsTickers.length; index++) { + const expectedTickers = walletsTickers[index]; + let tickerTexts = await this.waitAndGetText( + `.WalletRow_component:nth-child(${index + 1}) ${tickerSelector}` + ); + if (!Array.isArray(tickerTexts)) tickerTexts = [tickerTexts]; + expect(tickerTexts.length).to.equal(expectedTickers.length); + tickerTexts.forEach((tickerText, index) => { + const { ticker: expectedTickerText } = expectedTickers[index]; + expect(tickerText).to.equal(expectedTickerText); + }); + } } -}); -Then(/^the ADA logo should be displayed as follows:$/, async function (visibilityTable) { +); +Then(/^the ADA logo should be displayed as follows:$/, async function ( + visibilityTable +) { const visibility = visibilityTable.hashes(); for (let index = 0; index < visibility.length; index++) { const shouldBeVisible = visibility[index].ADA_LOGO === 'visible'; - await this.client.waitForVisible(`.WalletRow_component:nth-child(${index + 1}) .WalletRow_activeAdaSymbol`, null, !shouldBeVisible); + await this.client.waitForVisible( + `.WalletRow_component:nth-child(${index + 1}) .WalletRow_activeAdaSymbol`, + null, + !shouldBeVisible + ); } }); -Then(/^the tooltips should be displayed as follows:$/, async function (tooltipsTable) { +Then(/^the tooltips should be displayed as follows:$/, async function ( + tooltipsTable +) { const tooltipsScenarios = tooltipsTable.hashes(); for (let index = 0; index < tooltipsScenarios.length; index++) { - const expectedTooltips = tooltipsScenarios[index].TOOLTIPS.split(' > ').filter(value => value !== 'none'); + const expectedTooltips = tooltipsScenarios[index].TOOLTIPS.split( + ' > ' + ).filter((value) => value !== 'none'); if (expectedTooltips.length) { - let tooltipTexts = await this.client.getHTML(`.WalletRow_component:nth-child(${index + 1}) .WalletRow_status .WalletRow_tooltipLabelWrapper span`); + let tooltipTexts = await this.client.getHTML( + `.WalletRow_component:nth-child(${ + index + 1 + }) .WalletRow_status .WalletRow_tooltipLabelWrapper span` + ); if (!Array.isArray(tooltipTexts)) tooltipTexts = [tooltipTexts]; expect(tooltipTexts.length).to.equal(expectedTooltips.length); expectedTooltips.forEach((expectedTooltip, index) => { const tooltipText = tooltipTexts[index]; - const expectedExcerpt = expectedTooltip === 'earning_rewards' ? 'Earning rewards' : 'From epoch'; + const expectedExcerpt = + expectedTooltip === 'earning_rewards' + ? 'Earning rewards' + : 'From epoch'; expect(tooltipText).to.have.string(expectedExcerpt); }); } } }); -Then(/^the action links should be displayed as follows:$/, async function (linksTable) { +Then(/^the action links should be displayed as follows:$/, async function ( + linksTable +) { const linksScenarios = linksTable.hashes(); for (let index = 0; index < linksScenarios.length; index++) { const expectedLinkExcerpts = linksScenarios[index].LINKS.split(' or '); - const linksHTML = await this.client.getHTML(`.WalletRow_component:nth-child(${index + 1}) .WalletRow_action`); - expectedLinkExcerpts.forEach(expectedLinkExcerpt => { + const linksHTML = await this.client.getHTML( + `.WalletRow_component:nth-child(${index + 1}) .WalletRow_action` + ); + expectedLinkExcerpts.forEach((expectedLinkExcerpt) => { expect(linksHTML).to.have.string(expectedLinkExcerpt); }); } -}); \ No newline at end of file +}); diff --git a/tests/delegation/e2e/steps/delegation.ts b/tests/delegation/e2e/steps/delegation.ts index 29362a5a52..ddc16172f2 100644 --- a/tests/delegation/e2e/steps/delegation.ts +++ b/tests/delegation/e2e/steps/delegation.ts @@ -1,237 +1,313 @@ -import { Given, Then } from "cucumber"; -import { expect } from "chai"; -import BigNumber from "bignumber.js"; -import { navigateTo } from "../../../navigation/e2e/steps/helpers"; -import { timeout, notFoundWalletsErrorMessage } from "../../../common/e2e/steps/helpers"; -import { getCurrentEpoch, getNextEpoch } from "./helpers"; +import { Given, Then } from 'cucumber'; +import { expect } from 'chai'; +import BigNumber from 'bignumber.js'; +import { navigateTo } from '../../../navigation/e2e/steps/helpers'; +import { + timeout, + notFoundWalletsErrorMessage, +} from '../../../common/e2e/steps/helpers'; +import { getCurrentEpoch, getNextEpoch } from './helpers'; Given(/^I am on the Delegation "([^"]*)" screen$/, async function (screenName) { return navigateTo.call(this, `/staking/${screenName}`); }); -Then(/^I should see a "Create a Shelley wallet" notification$/, async function () { - await this.client.waitForVisible('.DelegationCenterNoWallets_component'); -}); +Then( + /^I should see a "Create a Shelley wallet" notification$/, + async function () { + await this.client.waitForVisible('.DelegationCenterNoWallets_component'); + } +); Then(/^I should only see Reward wallets listed$/, async function () { - await this.client.waitForVisible('//div[@class="WalletRow_title" and starts-with(text(), "Reward Wallet")]'); - await this.client.waitForVisible('//div[@class="WalletRow_title" and starts-with(text(), "Legacy Wallet")]', null, true); -}); -Then(/^the current and next epoch countdown are correctly displayed$/, async function () { - await this.client.waitForVisible('.DelegationCenterHeader_countdownContainer'); - await this.client.waitForVisible('.DelegationCenterHeader_heading'); - await this.client.waitForVisible('.DelegationCenterHeader_epochsContainer'); - await this.client.waitForVisible('.CountdownWidget_timeLeftContainer'); -}); -Then(/^the current and next epoch countdown have correct data$/, async function () { - const currentEpoch = await getCurrentEpoch.call(this); - const nextEpoch = await getNextEpoch.call(this); - return nextEpoch === currentEpoch + 1; + await this.client.waitForVisible( + '//div[@class="WalletRow_title" and starts-with(text(), "Reward Wallet")]' + ); + await this.client.waitForVisible( + '//div[@class="WalletRow_title" and starts-with(text(), "Legacy Wallet")]', + null, + true + ); }); +Then( + /^the current and next epoch countdown are correctly displayed$/, + async function () { + await this.client.waitForVisible( + '.DelegationCenterHeader_countdownContainer' + ); + await this.client.waitForVisible('.DelegationCenterHeader_heading'); + await this.client.waitForVisible('.DelegationCenterHeader_epochsContainer'); + await this.client.waitForVisible('.CountdownWidget_timeLeftContainer'); + } +); +Then( + /^the current and next epoch countdown have correct data$/, + async function () { + const currentEpoch = await getCurrentEpoch.call(this); + const nextEpoch = await getNextEpoch.call(this); + return nextEpoch === currentEpoch + 1; + } +); let pool; -Then(/^the "([^"]*)" wallet should display the "([^"]*)" option$/, async function (walletName, optionText) { - const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; - const visibleOption = await this.waitAndGetText(selector); - expect(visibleOption).to.equal(optionText); -}); -Given(/^the "([^"]*)" wallet was delegated to the first Stake Pool$/, async function (walletName) { - await this.client.waitUntil(async () => { - const { - value: stakePoolsListIsLoaded - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = await this.client.executeAsync(done => done(daedalus.stores.staking.stakePools.length > 0)); - return stakePoolsListIsLoaded; - }); - const data = await this.client.executeAsync((walletName, passphrase, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const pool = daedalus.stores.staking.stakePools[0]; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const wallet = daedalus.stores.wallets.getWalletByName(walletName); - - if (pool && wallet) { - const { - id: stakePoolId - } = pool; +Then( + /^the "([^"]*)" wallet should display the "([^"]*)" option$/, + async function (walletName, optionText) { + const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; + const visibleOption = await this.waitAndGetText(selector); + expect(visibleOption).to.equal(optionText); + } +); +Given( + /^the "([^"]*)" wallet was delegated to the first Stake Pool$/, + async function (walletName) { + await this.client.waitUntil(async () => { const { - id: walletId - } = wallet; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.staking.joinStakePool.trigger({ - stakePoolId, - walletId, - passphrase - }); - } + value: stakePoolsListIsLoaded, + } = await this.client.executeAsync((done) => + done(daedalus.stores.staking.stakePools.length > 0) + ); + return stakePoolsListIsLoaded; + }); + const data = await this.client.executeAsync( + (walletName, passphrase, done) => { + const pool = daedalus.stores.staking.stakePools[0]; + const wallet = daedalus.stores.wallets.getWalletByName(walletName); - done(pool); - }, walletName, 'Secret1234'); - pool = data.value; -}); -Given(/^the "([^"]*)" wallet was delegated to a Stake Pool with no metadata$/, async function () { - const walletWithNoMetadata = { - id: 'walletWithNoMetadata', - addressPoolGap: 0, - name: 'Wallet - No Metadata', - amount: new BigNumber(500), - availableAmount: new BigNumber(500), - reward: new BigNumber(500), - passwordUpdateDate: new Date(), - syncState: { - status: { - quantity: 10, - unit: 'percentage' - } - }, - isLegacy: false, - delegatedStakePoolId: 'stakePoolWithNoMetadata' - }; - const stakePoolWithNoMetadata = { - id: 'stakePoolWithNoMetadata', - ticker: '', - homepage: '', - pledgeAddress: '', - performance: 100, - producedBlocks: 1, - controlledStake: '100', - cost: '0', - description: 'Stake Pool with no metadata', - isCharity: false, - name: 'SP No Metadata', - profitMargin: 0, - ranking: 1, - retiring: null, - saturation: 999.9000161273987 - }; - await this.client.execute((wallet, stakePool) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.setTestingWallets([wallet]); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.setTestingStakePools([stakePool]); - }, walletWithNoMetadata, stakePoolWithNoMetadata); -}); -Then(/^the "([^"]*)" wallet should display the delegated Stake Pool ticker$/, async function (walletName) { - const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="SimpleTooltip_root TooltipOverrides_root"]//span[@class="WalletRow_ticker tickerText"]`; - const visibleStakePoolTicker = await this.waitAndGetText(selector); - expect(visibleStakePoolTicker).to.equal(`[${pool.ticker}]`); -}); + if (pool && wallet) { + const { id: stakePoolId } = pool; + const { id: walletId } = wallet; + daedalus.actions.staking.joinStakePool.trigger({ + stakePoolId, + walletId, + passphrase, + }); + } + + done(pool); + }, + walletName, + 'Secret1234' + ); + pool = data.value; + } +); +Given( + /^the "([^"]*)" wallet was delegated to a Stake Pool with no metadata$/, + async function () { + const walletWithNoMetadata = { + id: 'walletWithNoMetadata', + addressPoolGap: 0, + name: 'Wallet - No Metadata', + amount: new BigNumber(500), + availableAmount: new BigNumber(500), + reward: new BigNumber(500), + passwordUpdateDate: new Date(), + syncState: { + status: { + quantity: 10, + unit: 'percentage', + }, + }, + isLegacy: false, + delegatedStakePoolId: 'stakePoolWithNoMetadata', + }; + const stakePoolWithNoMetadata = { + id: 'stakePoolWithNoMetadata', + ticker: '', + homepage: '', + pledgeAddress: '', + performance: 100, + producedBlocks: 1, + controlledStake: '100', + cost: '0', + description: 'Stake Pool with no metadata', + isCharity: false, + name: 'SP No Metadata', + profitMargin: 0, + ranking: 1, + retiring: null, + saturation: 999.9000161273987, + }; + await this.client.execute( + (wallet, stakePool) => { + daedalus.api.ada.setTestingWallets([wallet]); + daedalus.api.ada.setTestingStakePools([stakePool]); + }, + walletWithNoMetadata, + stakePoolWithNoMetadata + ); + } +); +Then( + /^the "([^"]*)" wallet should display the delegated Stake Pool ticker$/, + async function (walletName) { + const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="SimpleTooltip_root TooltipOverrides_root"]//span[@class="WalletRow_ticker tickerText"]`; + const visibleStakePoolTicker = await this.waitAndGetText(selector); + expect(visibleStakePoolTicker).to.equal(`[${pool.ticker}]`); + } +); Given(/^the "([^"]*)" wallet is undelegated$/, async function (wallet) { - await this.client.executeAsync((walletName, passphrase, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const pool = daedalus.stores.staking.stakePools[0]; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const wallet = daedalus.stores.wallets.getWalletByName(walletName); + await this.client.executeAsync( + (walletName, passphrase, done) => { + const pool = daedalus.stores.staking.stakePools[0]; + const wallet = daedalus.stores.wallets.getWalletByName(walletName); - if (pool && wallet) { - const { - id: stakePoolId - } = pool; - const { - id: walletId - } = wallet; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.staking.quitStakePool.trigger({ - stakePoolId, - walletId, - passphrase - }); - } + if (pool && wallet) { + const { id: stakePoolId } = pool; + const { id: walletId } = wallet; + daedalus.actions.staking.quitStakePool.trigger({ + stakePoolId, + walletId, + passphrase, + }); + } - done(pool); - }, wallet, 'Secret1234'); + done(pool); + }, + wallet, + 'Secret1234' + ); }); Then(/^I hover "([^"]*)" wallet row$/, async function (walletName) { - await this.waitAndClick(`//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div`); -}); -Then(/^I should see the "([^"]*)" wallet with "Undelegate" and "Redelegate" actions$/, async function (walletName) { - await this.client.waitForVisible(`//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`); - await this.client.waitForVisible(`//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionUndelegate"]`); + await this.waitAndClick( + `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div` + ); }); -Then(/^I should see the "([^"]*)" wallet as undelegated$/, async function (walletName) { - await this.client.waitForVisible(`//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`); +Then( + /^I should see the "([^"]*)" wallet with "Undelegate" and "Redelegate" actions$/, + async function (walletName) { + await this.client.waitForVisible( + `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]` + ); + await this.client.waitForVisible( + `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionUndelegate"]` + ); + } +); +Then(/^I should see the "([^"]*)" wallet as undelegated$/, async function ( + walletName +) { + await this.client.waitForVisible( + `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]` + ); const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_ticker tickerText"]`; const visibleStakePoolTicker = await this.waitAndGetText(selector); expect(visibleStakePoolTicker).to.equal('UNDELEGATED'); }); -Given(/^I start the wallet delegation process for the "([^"]*)" wallet$/, async function (walletName) { - const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; - await this.waitAndClick(selector); - await this.waitAndClick('//button[text()="Continue"]'); -}); +Given( + /^I start the wallet delegation process for the "([^"]*)" wallet$/, + async function (walletName) { + const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; + await this.waitAndClick(selector); + await this.waitAndClick('//button[text()="Continue"]'); + } +); Given('I click the wallet selector', async function () { await this.waitAndClick('.SimpleFormField_inputWrapper'); }); -Then(/^I should not see delegation actions for "([^"]*)" wallet$/, async function (walletName) { - const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; - await this.client.waitForVisible(selector, null, true); -}); -Then(/^The "([^"]*)" wallet option should display the correct Stake Pool ticker$/, async function (walletName) { - const selector = `//div[@class="WalletsDropdownOption_label" and text()="${walletName}"]//preceding-sibling::div[@class="WalletsDropdownOption_ticker"]`; - const visibleStakePoolTicker = await this.waitAndGetText(selector); - expect(visibleStakePoolTicker).to.equal(`[${pool.ticker}]`); -}); +Then( + /^I should not see delegation actions for "([^"]*)" wallet$/, + async function (walletName) { + const selector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; + await this.client.waitForVisible(selector, null, true); + } +); +Then( + /^The "([^"]*)" wallet option should display the correct Stake Pool ticker$/, + async function (walletName) { + const selector = `//div[@class="WalletsDropdownOption_label" and text()="${walletName}"]//preceding-sibling::div[@class="WalletsDropdownOption_ticker"]`; + const visibleStakePoolTicker = await this.waitAndGetText(selector); + expect(visibleStakePoolTicker).to.equal(`[${pool.ticker}]`); + } +); Then('I close the delegation process dialog', async function () { await this.waitAndClick('.DialogCloseButton_component'); }); -Given(/^I successfully delegate my "([^"]*)" wallet$/, { - timeout: 60000 -}, async function (walletName) { - const delegateActionSelector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; - await this.waitAndClick(delegateActionSelector); - const continueButtonSelector = '//button[text()="Continue"]'; - const confirmButtonSelector = '.confirmButton'; - // Intro step - await this.client.waitForVisible(continueButtonSelector); - await this.client.click(continueButtonSelector); - // Choose wallet step - await this.client.waitForVisible(continueButtonSelector); - await this.client.waitForEnabled(continueButtonSelector); - await this.client.click(continueButtonSelector); - // Select pool step - await this.waitAndClick('.ThumbPool_component'); - await this.client.waitForVisible(continueButtonSelector); - await this.client.waitForEnabled(continueButtonSelector); - await this.client.click(continueButtonSelector); - // Enter password step - await this.client.waitForVisible('.SimpleInput_input'); - const input = this.client.element('.SimpleInput_input'); - input.setValue('Secret1234'); - // Confirmation step - await this.client.waitForVisible(confirmButtonSelector); - await this.client.waitForEnabled(confirmButtonSelector); - await this.client.click(confirmButtonSelector); - await this.waitAndClick('.closeButton'); -}); +Given( + /^I successfully delegate my "([^"]*)" wallet$/, + { + timeout: 60000, + }, + async function (walletName) { + const delegateActionSelector = `//div[@class="WalletRow_title" and text()="${walletName}"]//parent::div//parent::div//span[@class="WalletRow_actionDelegate"]`; + await this.waitAndClick(delegateActionSelector); + const continueButtonSelector = '//button[text()="Continue"]'; + const confirmButtonSelector = '.confirmButton'; + // Intro step + await this.client.waitForVisible(continueButtonSelector); + await this.client.click(continueButtonSelector); + // Choose wallet step + await this.client.waitForVisible(continueButtonSelector); + await this.client.waitForEnabled(continueButtonSelector); + await this.client.click(continueButtonSelector); + // Select pool step + await this.waitAndClick('.ThumbPool_component'); + await this.client.waitForVisible(continueButtonSelector); + await this.client.waitForEnabled(continueButtonSelector); + await this.client.click(continueButtonSelector); + // Enter password step + await this.client.waitForVisible('.SimpleInput_input'); + const input = this.client.element('.SimpleInput_input'); + input.setValue('Secret1234'); + // Confirmation step + await this.client.waitForVisible(confirmButtonSelector); + await this.client.waitForEnabled(confirmButtonSelector); + await this.client.click(confirmButtonSelector); + await this.waitAndClick('.closeButton'); + } +); Then(/^I should see a "([^"]*)" message$/, async function (message) { await this.client.waitForVisible(`//*[text()="${message}"]`); }); Then(/^I close the wizard$/, async function () { await this.waitAndClick('.DialogCloseButton_component'); }); -Given('I send {int} ADA from the {string} wallet to the {string} wallet', async function (adaAmount, walletFrom, walletTo) { - await this.client.executeAsync((amount, senderName, receiverName, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const walletSender = daedalus.stores.wallets.getWalletByName(senderName); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const walletReceiver = daedalus.stores.wallets.getWalletByName(receiverName); +Given( + 'I send {int} ADA from the {string} wallet to the {string} wallet', + async function (adaAmount, walletFrom, walletTo) { + await this.client.executeAsync( + (amount, senderName, receiverName, done) => { + const walletSender = daedalus.stores.wallets.getWalletByName( + senderName + ); + const walletReceiver = daedalus.stores.wallets.getWalletByName( + receiverName + ); - if (!walletSender || !walletReceiver || !walletSender.id || !walletReceiver.id) { - return done(new Error(notFoundWalletsErrorMessage)); - } + if ( + !walletSender || + !walletReceiver || + !walletSender.id || + !walletReceiver.id + ) { + return done(new Error(notFoundWalletsErrorMessage)); + } - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - return daedalus.stores.addresses.getAddressesByWalletId(walletReceiver.id).then(addresses => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.wallets.sendMoneyRequest.execute({ - address: addresses[0].id, - amount: amount * 1000000, - passphrase: 'Secret1234', - walletId: walletSender.id - }).then(done); - }); - }, adaAmount, walletFrom, walletTo); - await this.client.waitForVisible(`//div[@class="WalletRow_title" and text()="${walletTo}"]//following-sibling::div[@class="WalletRow_description"]//span`); -}); + return daedalus.stores.addresses + .getAddressesByWalletId(walletReceiver.id) + .then((addresses) => { + daedalus.stores.wallets.sendMoneyRequest + .execute({ + address: addresses[0].id, + amount: amount * 1000000, + passphrase: 'Secret1234', + walletId: walletSender.id, + }) + .then(done); + }); + }, + adaAmount, + walletFrom, + walletTo + ); + await this.client.waitForVisible( + `//div[@class="WalletRow_title" and text()="${walletTo}"]//following-sibling::div[@class="WalletRow_description"]//span` + ); + } +); Then(/^I choose the "([^"]*)" wallet$/, async function (walletName) { await this.waitAndClick('.SimpleFormField_inputWrapper'); - await this.waitAndClick(`//div[@class="WalletsDropdownOption_label" and text()="${walletName}"]`); + await this.waitAndClick( + `//div[@class="WalletsDropdownOption_label" and text()="${walletName}"]` + ); const selector = '//button[text()="Continue"]'; await this.client.waitForVisible(selector); await this.client.waitForEnabled(selector); @@ -243,30 +319,39 @@ Then(/^I choose the first stake pool$/, async function () { await this.client.waitForEnabled(selector); await this.waitAndClick(selector); }); -Then(/^I enter "([^"]*)" as the spending password$/, async function (spendingPassword) { +Then(/^I enter "([^"]*)" as the spending password$/, async function ( + spendingPassword +) { await this.client.waitForVisible('.SimpleInput_input'); const input = this.client.element('.SimpleInput_input'); input.setValue(spendingPassword); await timeout(2000); this.client.click('.confirmButton'); }); -Then(/^I should see a "Loading stake pools" message until the Stake Pools are loaded$/, async function () { - const { - value: stakePoolsLength - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = await this.client.execute(() => daedalus.stores.staking.stakePools.length); +Then( + /^I should see a "Loading stake pools" message until the Stake Pools are loaded$/, + async function () { + const { value: stakePoolsLength } = await this.client.execute( + () => daedalus.stores.staking.stakePools.length + ); - if (!stakePoolsLength) { - await this.client.waitForVisible('.DelegationCenterBody_isLoading'); + if (!stakePoolsLength) { + await this.client.waitForVisible('.DelegationCenterBody_isLoading'); + } } -}); -Then(/^I should see the following error messages on the delegation process dialog:$/, async function (data) { - let errorsOnScreen = await this.waitAndGetText('.DelegationStepsConfirmationDialog_error'); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +); +Then( + /^I should see the following error messages on the delegation process dialog:$/, + async function (data) { + let errorsOnScreen = await this.waitAndGetText( + '.DelegationStepsConfirmationDialog_error' + ); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); \ No newline at end of file +); diff --git a/tests/delegation/e2e/steps/helpers.ts b/tests/delegation/e2e/steps/helpers.ts index 461ef6ee7b..7c64cf983b 100644 --- a/tests/delegation/e2e/steps/helpers.ts +++ b/tests/delegation/e2e/steps/helpers.ts @@ -1,35 +1,47 @@ -import BigNumber from "bignumber.js"; +import BigNumber from 'bignumber.js'; const STAKING_BUTTON_SIDEBAR = '.SidebarCategory_component.staking'; const DELEGATION_CENTER_PAGE = '.StakingWithNavigation_page'; export const delegationCentreStakingHelper = { - stakingButtonVisible: async (client: Record) => client.waitForVisible(STAKING_BUTTON_SIDEBAR), - clickStakingButton: async (client: Record) => client.click(STAKING_BUTTON_SIDEBAR), - delegationCenterVisible: async (client: Record) => client.waitForVisible(DELEGATION_CENTER_PAGE) + stakingButtonVisible: async (client: Record) => + client.waitForVisible(STAKING_BUTTON_SIDEBAR), + clickStakingButton: async (client: Record) => + client.click(STAKING_BUTTON_SIDEBAR), + delegationCenterVisible: async (client: Record) => + client.waitForVisible(DELEGATION_CENTER_PAGE), }; -export const getStakePoolByRanking = async (client: Record, ranking: number) => { - const result = await client.execute(ranking => { - const { - stakePools - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.staking; - return stakePools.find(stakePool => stakePool.ranking === parseInt(ranking, 10)); +export const getStakePoolByRanking = async ( + client: Record, + ranking: number +) => { + const result = await client.execute((ranking) => { + const { stakePools } = daedalus.stores.staking; + return stakePools.find( + (stakePool) => stakePool.ranking === parseInt(ranking, 10) + ); }, ranking); return result.value; }; -export const getCardanoEpochData = async function (epoch: "current" | "next", param: string) { +export const getCardanoEpochData = async function ( + epoch: 'current' | 'next', + param: string +) { const headerIndex = epoch === 'current' ? 1 : 2; - return await this.waitAndGetText(`(//div[@class="DelegationCenterHeader_heading"])[${headerIndex}]//following-sibling::div//div[text()="${param}"]//following-sibling::div[@class="DelegationCenterHeader_fieldValue"]`); + return await this.waitAndGetText( + `(//div[@class="DelegationCenterHeader_heading"])[${headerIndex}]//following-sibling::div//div[text()="${param}"]//following-sibling::div[@class="DelegationCenterHeader_fieldValue"]` + ); }; export const getCurrentEpoch = async function () { return await getCardanoEpochData.call(this, 'current', 'Epoch'); }; export const getNextEpoch = async function () { - const headerText = await this.waitAndGetText(`(//div[@class="DelegationCenterHeader_heading"])[2]`); + const headerText = await this.waitAndGetText( + `(//div[@class="DelegationCenterHeader_heading"])[2]` + ); try { return headerText.match(/[1-9]+/)[0]; } catch (err) { return new Error(err); } -}; \ No newline at end of file +}; diff --git a/tests/delegation/e2e/steps/rewards.ts b/tests/delegation/e2e/steps/rewards.ts index 0ba3df97ec..ac1661759e 100644 --- a/tests/delegation/e2e/steps/rewards.ts +++ b/tests/delegation/e2e/steps/rewards.ts @@ -1,14 +1,26 @@ -import fs from "fs"; -import { When, Then } from "cucumber"; -import path from "path"; -import moment from "moment"; +import fs from 'fs'; +import { When, Then } from 'cucumber'; +import path from 'path'; +import moment from 'moment'; -const exportedCSVPath = path.resolve(__dirname, '../documents/rewards_exported.csv'); -const exportedCSVContent = [['Wallet', 'Reward', 'Date'], ['Test Wallet', '1,000,000.000000 ADA', moment().format('YYYY-MM-DDTHHmmss.0SSS')]]; +const exportedCSVPath = path.resolve( + __dirname, + '../documents/rewards_exported.csv' +); +const exportedCSVContent = [ + ['Wallet', 'Reward', 'Date'], + [ + 'Test Wallet', + '1,000,000.000000 ADA', + moment().format('YYYY-MM-DDTHHmmss.0SSS'), + ], +]; const REWARDS_TAB_BUTTON = '.rewards.NavButton_component.NavButton_normal'; const REWARDS_PAGE = '.StakingRewards_component'; -const NO_REWARDS_SELECTOR = '.StakingRewards_component .StakingRewards_noRewardsLabel'; -const REWARDS_LIST_SELECTOR = '.StakingRewards_component .BorderedBox_component table'; +const NO_REWARDS_SELECTOR = + '.StakingRewards_component .StakingRewards_noRewardsLabel'; +const REWARDS_LIST_SELECTOR = + '.StakingRewards_component .BorderedBox_component table'; When(/^I click on rewards tab button$/, async function () { return this.waitAndClick(REWARDS_TAB_BUTTON); }); @@ -28,16 +40,12 @@ Then(/^I click on the Export to CSV button$/, async function () { */ const data = { filePath: exportedCSVPath, - fileContent: exportedCSVContent + fileContent: exportedCSVContent, }; - await this.client.execute(({ - fileContent, - filePath - }) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + await this.client.execute(({ fileContent, filePath }) => { daedalus.actions.wallets.generateCsv.trigger({ fileContent, - filePath + filePath, }); }, data); this.exportedCSVPath = exportedCSVPath; @@ -53,4 +61,4 @@ Then(/^I should see the CSV file exported$/, async function () { } catch (err) { return false; } -}); \ No newline at end of file +}); diff --git a/tests/delegation/e2e/steps/stake-pools.ts b/tests/delegation/e2e/steps/stake-pools.ts index 1246cb1d4c..95e6c01479 100644 --- a/tests/delegation/e2e/steps/stake-pools.ts +++ b/tests/delegation/e2e/steps/stake-pools.ts @@ -1,68 +1,99 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import BigNumber from "bignumber.js/bignumber"; -import { delegationCentreStakingHelper, getStakePoolByRanking } from "./helpers"; -import { getWalletByName } from "../../../wallets/e2e/steps/helpers"; -import { formattedWalletAmount } from "../../../../source/renderer/app/utils/formatters"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import BigNumber from 'bignumber.js/bignumber'; +import { + delegationCentreStakingHelper, + getStakePoolByRanking, +} from './helpers'; +import { getWalletByName } from '../../../wallets/e2e/steps/helpers'; +import { formattedWalletAmount } from '../../../../source/renderer/app/utils/formatters'; const { stakingButtonVisible, clickStakingButton, - delegationCenterVisible + delegationCenterVisible, } = delegationCentreStakingHelper; -const LOADING_MESSAGE_SELECTOR = '.StakePools_component.StakePools_isLoading .StakePools_loadingBlockWrapper p'; -const STAKE_POOL_TAB_BUTTON = '.stake-pools.NavButton_component.NavButton_normal'; +const LOADING_MESSAGE_SELECTOR = + '.StakePools_component.StakePools_isLoading .StakePools_loadingBlockWrapper p'; +const STAKE_POOL_TAB_BUTTON = + '.stake-pools.NavButton_component.NavButton_normal'; const STAKE_POOL_PAGE = '.StakePools_component'; -const STAKE_POOLS_LIST_SELECTOR = '.StakePoolsList_component .ThumbPool_component:nth-child(1)'; -const STAKE_POOLS_SEARCH_SELECTOR = '.StakePoolsSearch_component .StakePoolsSearch_searchInput.SimpleFormField_root input'; +const STAKE_POOLS_LIST_SELECTOR = + '.StakePoolsList_component .ThumbPool_component:nth-child(1)'; +const STAKE_POOLS_SEARCH_SELECTOR = + '.StakePoolsSearch_component .StakePoolsSearch_searchInput.SimpleFormField_root input'; const SEARCH_RESULTS_LABEL_SELECTOR = '.StakePools_component h2 span'; -const STAKE_POOL_SLUG_SELECTOR = '.StakePoolsList_component .ThumbPool_component:nth-child(3) .ThumbPool_ticker'; -const STAKE_POOL_TOOLTIP_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible'; -const STAKE_POOL_TOOLTIP_DESCRIPTION_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_description'; -const STAKE_POOL_TOOLTIP_TICKER_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_ticker'; -const STAKE_POOL_TOOLTIP_HOMEPAGE_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_homepage'; -const STAKE_POOL_TOOLTIP_RANKING_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_ranking span'; -const STAKE_POOL_TOOLTIP_PROFIT_MARGIN_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_profitMargin span'; -const STAKE_POOL_TOOLTIP_COST_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_cost span'; -const STAKE_POOL_TOOLTIP_PERFORMANCE_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_performance span'; -const STAKE_POOL_TOOLTIP_NAME_SELECTOR = '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_name'; -const STAKE_POOL_TOOLTIP_BUTTON_SELECTOR = '//button[text()="Delegate to this pool"]'; -const DELEGATE_WALLET_SELECTOR = '.DelegationSteps_delegationSteps.DelegationStepsIntroDialog_delegationStepsIntroDialogWrapper'; +const STAKE_POOL_SLUG_SELECTOR = + '.StakePoolsList_component .ThumbPool_component:nth-child(3) .ThumbPool_ticker'; +const STAKE_POOL_TOOLTIP_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible'; +const STAKE_POOL_TOOLTIP_DESCRIPTION_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_description'; +const STAKE_POOL_TOOLTIP_TICKER_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_ticker'; +const STAKE_POOL_TOOLTIP_HOMEPAGE_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_homepage'; +const STAKE_POOL_TOOLTIP_RANKING_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_ranking span'; +const STAKE_POOL_TOOLTIP_PROFIT_MARGIN_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_profitMargin span'; +const STAKE_POOL_TOOLTIP_COST_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_cost span'; +const STAKE_POOL_TOOLTIP_PERFORMANCE_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_performance span'; +const STAKE_POOL_TOOLTIP_NAME_SELECTOR = + '.TooltipPool_component.TooltipPool_isVisible .TooltipPool_name'; +const STAKE_POOL_TOOLTIP_BUTTON_SELECTOR = + '//button[text()="Delegate to this pool"]'; +const DELEGATE_WALLET_SELECTOR = + '.DelegationSteps_delegationSteps.DelegationStepsIntroDialog_delegationStepsIntroDialogWrapper'; const DIALOG_CONTINUE_SELECTOR = '//button[text()="Continue"]'; -const DIALOG_CONFIRM_SELECTOR = '.DelegationSteps_delegationSteps .DialogCloseButton_component'; -const DELEGATION_WALLET_FIRST_STEP_SELECTOR = '.DelegationSteps_delegationSteps.DelegationStepsChooseWalletDialog_delegationStepsChooseWalletDialogWrapper'; -const DELEGATION_WALLET_SECOND_STEP_SELECTOR = '.DelegationSteps_delegationSteps.DelegationStepsChooseStakePoolDialog_delegationStepsChooseStakePoolDialogWrapper'; -const DELEGATION_WALLET_DROPDOWN_SELECTOR = '.DelegationSteps_delegationSteps.DelegationStepsChooseWalletDialog_delegationStepsChooseWalletDialogWrapper .DelegationStepsChooseWalletDialog_walletSelect'; -const SELECTED_STAKE_POOLS_DELEGATION_WALLET_DIALOG_SELECTOR = '.DelegationStepsChooseStakePoolDialog_selectStakePoolLabel span'; -const DELEGATION_WALLET_LAST_STEP_SELECTOR = '.DelegationSteps_content.DelegationStepsConfirmationDialog_content #spendingPassword--1'; -const STAKE_POOLS_DELEGATING_LABEL = '.StakePools_component .StakePools_listTitle'; +const DIALOG_CONFIRM_SELECTOR = + '.DelegationSteps_delegationSteps .DialogCloseButton_component'; +const DELEGATION_WALLET_FIRST_STEP_SELECTOR = + '.DelegationSteps_delegationSteps.DelegationStepsChooseWalletDialog_delegationStepsChooseWalletDialogWrapper'; +const DELEGATION_WALLET_SECOND_STEP_SELECTOR = + '.DelegationSteps_delegationSteps.DelegationStepsChooseStakePoolDialog_delegationStepsChooseStakePoolDialogWrapper'; +const DELEGATION_WALLET_DROPDOWN_SELECTOR = + '.DelegationSteps_delegationSteps.DelegationStepsChooseWalletDialog_delegationStepsChooseWalletDialogWrapper .DelegationStepsChooseWalletDialog_walletSelect'; +const SELECTED_STAKE_POOLS_DELEGATION_WALLET_DIALOG_SELECTOR = + '.DelegationStepsChooseStakePoolDialog_selectStakePoolLabel span'; +const DELEGATION_WALLET_LAST_STEP_SELECTOR = + '.DelegationSteps_content.DelegationStepsConfirmationDialog_content #spendingPassword--1'; +const STAKE_POOLS_DELEGATING_LABEL = + '.StakePools_component .StakePools_listTitle'; Given(/^I am on the Delegation Center screen/, async function () { await stakingButtonVisible(this.client); await clickStakingButton(this.client); await delegationCenterVisible(this.client); }); Given(/^I set stake pools fetch failed$/, async function () { - await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + await this.client.executeAsync((done) => { daedalus.actions.staking.fakeStakePoolsLoading.trigger(true); done(); }); }); -Given(/^I have a wallet "([^"]*)" delegated to stake pool with rank "([^"]*)"$/, async function (walletName, stakePoolRank) { - const wallet = await getWalletByName.call(this, walletName); - const stakePool = await getStakePoolByRanking(this.client, stakePoolRank); - await this.client.execute((stakePoolId, walletId, passphrase) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.staking.joinStakePool.trigger({ - stakePoolId, - walletId, - passphrase - }); - }, stakePool.id, wallet.id, 'Secret1234'); -}); +Given( + /^I have a wallet "([^"]*)" delegated to stake pool with rank "([^"]*)"$/, + async function (walletName, stakePoolRank) { + const wallet = await getWalletByName.call(this, walletName); + const stakePool = await getStakePoolByRanking(this.client, stakePoolRank); + await this.client.execute( + (stakePoolId, walletId, passphrase) => { + daedalus.actions.staking.joinStakePool.trigger({ + stakePoolId, + walletId, + passphrase, + }); + }, + stakePool.id, + wallet.id, + 'Secret1234' + ); + } +); When(/^Stake pools loading failed/, async function () { - const stakePools = await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + const stakePools = await this.client.executeAsync((done) => { daedalus.actions.staking.fakeStakePoolsLoading.trigger(true); done(); }); @@ -75,8 +106,12 @@ When(/^I see the stake pools search input field/, function () { When(/^I enter "([^"]*)" in search input field/, function (data) { return this.client.setValue(STAKE_POOLS_SEARCH_SELECTOR, data); }); -When(/^I click on stake pool with order number "([^"]*)"/, function (rankNumber) { - return this.waitAndClick(`.StakePoolsList_component .ThumbPool_component:nth-child(${rankNumber})`); +When(/^I click on stake pool with order number "([^"]*)"/, function ( + rankNumber +) { + return this.waitAndClick( + `.StakePoolsList_component .ThumbPool_component:nth-child(${rankNumber})` + ); }); When(/^I click "continue" button/, async function () { await this.client.waitForEnabled(DIALOG_CONTINUE_SELECTOR); @@ -85,44 +120,77 @@ When(/^I click "continue" button/, async function () { When(/^I click "confirm" button/, function () { return this.waitAndClick(DIALOG_CONFIRM_SELECTOR); }); -Then(/^I should see stake pool tooltip with order number "([^"]*)"/, async function (rankNumber) { - const stakePoolRankingText = await this.waitAndGetText(STAKE_POOL_TOOLTIP_RANKING_SELECTOR); - const stakePoolRanking = Array.isArray(stakePoolRankingText) ? stakePoolRankingText[0] : stakePoolRankingText; - expect(stakePoolRanking).to.equal(rankNumber); -}); +Then( + /^I should see stake pool tooltip with order number "([^"]*)"/, + async function (rankNumber) { + const stakePoolRankingText = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_RANKING_SELECTOR + ); + const stakePoolRanking = Array.isArray(stakePoolRankingText) + ? stakePoolRankingText[0] + : stakePoolRankingText; + expect(stakePoolRanking).to.equal(rankNumber); + } +); When(/^I click on "Delegate to this pool"/, function () { return this.waitAndClick(STAKE_POOL_TOOLTIP_BUTTON_SELECTOR); }); -When(/^I enter staking pool spending password "([^"]*)" and click "confirm" button$/, async function (password) { - await this.client.setValue(DELEGATION_WALLET_LAST_STEP_SELECTOR, password); - return this.waitAndClick(DIALOG_CONFIRM_SELECTOR); -}); +When( + /^I enter staking pool spending password "([^"]*)" and click "confirm" button$/, + async function (password) { + await this.client.setValue(DELEGATION_WALLET_LAST_STEP_SELECTOR, password); + return this.waitAndClick(DIALOG_CONFIRM_SELECTOR); + } +); When(/^I click on delegated stake pool/, async function () { - await this.waitAndClick('.StakePoolsList_component.stakePoolsDelegatingList .ThumbPool_component:nth-child(1)'); -}); -Then(/^Stake pool with rank "([^"]*)" tooltip shows correct data$/, async function (stakePoolRank) { - const stakePool = await getStakePoolByRanking(this.client, stakePoolRank); - await this.client.waitForVisible(STAKE_POOL_TOOLTIP_SELECTOR); - const stakePoolDescription = await this.waitAndGetText(STAKE_POOL_TOOLTIP_DESCRIPTION_SELECTOR); - const stakePoolTicker = await this.waitAndGetText(STAKE_POOL_TOOLTIP_TICKER_SELECTOR); - const stakePoolHomepage = await this.waitAndGetText(STAKE_POOL_TOOLTIP_HOMEPAGE_SELECTOR); - const stakePoolPerformanceText = await this.waitAndGetText(STAKE_POOL_TOOLTIP_PERFORMANCE_SELECTOR); - const stakePoolCost = await this.waitAndGetText(STAKE_POOL_TOOLTIP_COST_SELECTOR); - const stakePoolName = await this.waitAndGetText(STAKE_POOL_TOOLTIP_NAME_SELECTOR); - const stakePoolProfitMargin = await this.waitAndGetText(STAKE_POOL_TOOLTIP_PROFIT_MARGIN_SELECTOR); - const stakePoolRanking = await this.waitAndGetText(STAKE_POOL_TOOLTIP_RANKING_SELECTOR); - const cost = new BigNumber(stakePool.cost.c); - const formattedCost = formattedWalletAmount(cost, true, false); - const stakePoolPerformance = Array.isArray(stakePoolPerformanceText) ? stakePoolPerformanceText[0] : stakePoolPerformanceText; - expect(stakePool.ticker).to.equal(stakePoolTicker); - expect(stakePool.homepage).to.equal(stakePoolHomepage); - expect(`${stakePool.performance}%`).to.equal(stakePoolPerformance); - expect(formattedCost).to.equal(stakePoolCost); - expect(stakePool.description).to.equal(stakePoolDescription); - expect(stakePool.name).to.equal(stakePoolName); - expect(`${stakePool.profitMargin}%`).to.equal(stakePoolProfitMargin); - expect(stakePool.ranking).to.equal(parseInt(stakePoolRanking, 10)); + await this.waitAndClick( + '.StakePoolsList_component.stakePoolsDelegatingList .ThumbPool_component:nth-child(1)' + ); }); +Then( + /^Stake pool with rank "([^"]*)" tooltip shows correct data$/, + async function (stakePoolRank) { + const stakePool = await getStakePoolByRanking(this.client, stakePoolRank); + await this.client.waitForVisible(STAKE_POOL_TOOLTIP_SELECTOR); + const stakePoolDescription = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_DESCRIPTION_SELECTOR + ); + const stakePoolTicker = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_TICKER_SELECTOR + ); + const stakePoolHomepage = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_HOMEPAGE_SELECTOR + ); + const stakePoolPerformanceText = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_PERFORMANCE_SELECTOR + ); + const stakePoolCost = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_COST_SELECTOR + ); + const stakePoolName = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_NAME_SELECTOR + ); + const stakePoolProfitMargin = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_PROFIT_MARGIN_SELECTOR + ); + const stakePoolRanking = await this.waitAndGetText( + STAKE_POOL_TOOLTIP_RANKING_SELECTOR + ); + const cost = new BigNumber(stakePool.cost.c); + const formattedCost = formattedWalletAmount(cost, true, false); + const stakePoolPerformance = Array.isArray(stakePoolPerformanceText) + ? stakePoolPerformanceText[0] + : stakePoolPerformanceText; + expect(stakePool.ticker).to.equal(stakePoolTicker); + expect(stakePool.homepage).to.equal(stakePoolHomepage); + expect(`${stakePool.performance}%`).to.equal(stakePoolPerformance); + expect(formattedCost).to.equal(stakePoolCost); + expect(stakePool.description).to.equal(stakePoolDescription); + expect(stakePool.name).to.equal(stakePoolName); + expect(`${stakePool.profitMargin}%`).to.equal(stakePoolProfitMargin); + expect(stakePool.ranking).to.equal(parseInt(stakePoolRanking, 10)); + } +); Then(/^I should see "Delegate Wallet" dialog/, function () { return this.client.waitForVisible(DELEGATE_WALLET_SELECTOR); }); @@ -139,27 +207,41 @@ Then(/^I choose "([^"]*)" wallet$/, function (walletName) { Then(/^I should see step 2 of 3 screen/, function () { return this.client.waitForVisible(DELEGATION_WALLET_SECOND_STEP_SELECTOR); }); -Then(/^I see following label on the dialog: "([^"]*)"$/, async function (message) { - const selectedStakePoolLabel = await this.waitAndGetText(SELECTED_STAKE_POOLS_DELEGATION_WALLET_DIALOG_SELECTOR); +Then(/^I see following label on the dialog: "([^"]*)"$/, async function ( + message +) { + const selectedStakePoolLabel = await this.waitAndGetText( + SELECTED_STAKE_POOLS_DELEGATION_WALLET_DIALOG_SELECTOR + ); expect(selectedStakePoolLabel.toString().split('.')[0]).to.equal(message); }); -Then(/^I see delegation status message for stake pool with rank "([^"]*)"$/, async function (stakePoolRank) { - const stakePool = await getStakePoolByRanking(this.client, stakePoolRank); - const selectedWallet = await this.client.executeAsync((walletName, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const wallet = daedalus.stores.wallets.getWalletByName(walletName); - done(wallet); - }, this.walletName); - const { - pendingDelegations - } = selectedWallet.value; - const messageWithPendingDelegation = `You are already pending delegation ${this.walletName} wallet to [${stakePool.ticker}] stake pool`; - const messageWithNoPendingDelegation = `You are already delegating ${this.walletName} wallet to [${stakePool.ticker}] stake pool`; - const selectedStakePoolLabel = await this.waitAndGetText(SELECTED_STAKE_POOLS_DELEGATION_WALLET_DIALOG_SELECTOR); - expect(selectedStakePoolLabel.toString().split('.')[0]).to.oneOf([messageWithPendingDelegation, messageWithNoPendingDelegation]); -}); +Then( + /^I see delegation status message for stake pool with rank "([^"]*)"$/, + async function (stakePoolRank) { + const stakePool = await getStakePoolByRanking(this.client, stakePoolRank); + const selectedWallet = await this.client.executeAsync( + (walletName, done) => { + const wallet = daedalus.stores.wallets.getWalletByName(walletName); + done(wallet); + }, + this.walletName + ); + const { pendingDelegations } = selectedWallet.value; + const messageWithPendingDelegation = `You are already pending delegation ${this.walletName} wallet to [${stakePool.ticker}] stake pool`; + const messageWithNoPendingDelegation = `You are already delegating ${this.walletName} wallet to [${stakePool.ticker}] stake pool`; + const selectedStakePoolLabel = await this.waitAndGetText( + SELECTED_STAKE_POOLS_DELEGATION_WALLET_DIALOG_SELECTOR + ); + expect(selectedStakePoolLabel.toString().split('.')[0]).to.oneOf([ + messageWithPendingDelegation, + messageWithNoPendingDelegation, + ]); + } +); Then(/^I should see label: "([^"]*)"$/, async function (message) { - const delegatedStakePoolLabel = await this.waitAndGetText(STAKE_POOLS_DELEGATING_LABEL); + const delegatedStakePoolLabel = await this.waitAndGetText( + STAKE_POOLS_DELEGATING_LABEL + ); expect(delegatedStakePoolLabel).to.equal(message); }); Then(/^I click on stake pools tab button/, async function () { @@ -178,32 +260,39 @@ Then(/^I should not see any stake pool$/, async function () { return this.client.waitForVisible(STAKE_POOLS_LIST_SELECTOR, null, true); }); Then(/^I should see stake pools ordered by rank$/, async function () { - const stakePools = await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.staking.stakePoolsRequest.execute().then(done).catch(error => done(error)); + const stakePools = await this.client.executeAsync((done) => { + daedalus.stores.staking.stakePoolsRequest + .execute() + .then(done) + .catch((error) => done(error)); }); const result = stakePools && stakePools.value ? stakePools.value : []; - const orderCorrect = result.every(({ - ranking - }, i) => parseInt(ranking, 10) === i + 1); + const orderCorrect = result.every( + ({ ranking }, i) => parseInt(ranking, 10) === i + 1 + ); expect(orderCorrect).to.be.true; }); Then(/^I should see the following loading message:$/, async function (message) { - await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + await this.client.executeAsync((done) => { daedalus.actions.staking.fakeStakePoolsLoading.trigger(); done(); }); const loadingMsg = message.hashes()[0]; - const loadingMsgOnScreen = await this.waitAndGetText(LOADING_MESSAGE_SELECTOR); + const loadingMsgOnScreen = await this.waitAndGetText( + LOADING_MESSAGE_SELECTOR + ); const expectedLoadingMsg = await this.intl(loadingMsg.message); expect(loadingMsgOnScreen).to.equal(expectedLoadingMsg); }); -Then(/^I should see search label with text: "([^"]*)"$/, async function (message) { - const searchResultsMessages = await this.waitAndGetText(SEARCH_RESULTS_LABEL_SELECTOR); +Then(/^I should see search label with text: "([^"]*)"$/, async function ( + message +) { + const searchResultsMessages = await this.waitAndGetText( + SEARCH_RESULTS_LABEL_SELECTOR + ); expect(searchResultsMessages).to.equal(message); }); Then(/^I should see stake pool with slug "([^"]*)"$/, async function (slug) { const stakePoolSlug = await this.waitAndGetText(STAKE_POOL_SLUG_SELECTOR); expect(stakePoolSlug).to.equal(slug); -}); \ No newline at end of file +}); diff --git a/tests/mocks/asset.ts b/tests/mocks/asset.ts index 3afbde3919..31507796c2 100644 --- a/tests/mocks/asset.ts +++ b/tests/mocks/asset.ts @@ -7,7 +7,7 @@ export const commonTokenProperties: Token = { assetName: '', quantity: new BigNumber(6), uniqueId: '6b8d07d69639e9413dd637a1a815a7323c69c86abbafb66dbfdb1aa7', -} +}; export const zeroDecimalPlacesToken: AssetToken = { ...commonTokenProperties, @@ -16,11 +16,11 @@ export const zeroDecimalPlacesToken: AssetToken = { url: 'https://developers.cardano.org/', name: 'ZeroDecimalCoin', ticker: 'ZDP', - description: 'Zero decimal coin.' + description: 'Zero decimal coin.', }, recommendedDecimals: 0, decimals: undefined, -} +}; export const withDecimalPlacesToken: AssetToken = { ...commonTokenProperties, @@ -29,8 +29,8 @@ export const withDecimalPlacesToken: AssetToken = { url: 'https://developers.cardano.org/', name: 'Non-zero DecimalCoin', ticker: 'nZDP', - description: 'Non zero decimal coin.' + description: 'Non zero decimal coin.', }, recommendedDecimals: 1, decimals: 2, -} +}; diff --git a/tests/navigation/e2e/steps/general-settings.ts b/tests/navigation/e2e/steps/general-settings.ts index 309a01fe88..c18eb3c09b 100644 --- a/tests/navigation/e2e/steps/general-settings.ts +++ b/tests/navigation/e2e/steps/general-settings.ts @@ -1,9 +1,13 @@ -import { Given, Then } from "cucumber"; -import { navigateTo, waitUntilUrlEquals } from "./helpers"; +import { Given, Then } from 'cucumber'; +import { navigateTo, waitUntilUrlEquals } from './helpers'; -Given(/^I am on the General Settings "([^"]*)" screen$/, async function (screen) { +Given(/^I am on the General Settings "([^"]*)" screen$/, async function ( + screen +) { await navigateTo.call(this, `/settings/${screen}`); }); -Then(/^I should see General Settings "([^"]*)" screen$/, async function (screenName) { +Then(/^I should see General Settings "([^"]*)" screen$/, async function ( + screenName +) { return waitUntilUrlEquals.call(this, `/settings/${screenName}`); -}); \ No newline at end of file +}); diff --git a/tests/navigation/e2e/steps/helpers.ts b/tests/navigation/e2e/steps/helpers.ts index e08c74bb28..3627c0d2a1 100644 --- a/tests/navigation/e2e/steps/helpers.ts +++ b/tests/navigation/e2e/steps/helpers.ts @@ -1,8 +1,8 @@ -import { waitAndClick } from "../../../common/e2e/steps/helpers"; +import { waitAndClick } from '../../../common/e2e/steps/helpers'; const SELECTORS = { ACTIVE_CATEGORY: '.SidebarCategory_active', - ADD_WALLET_BTN: '.SidebarWalletsMenu_addWalletButton' + ADD_WALLET_BTN: '.SidebarWalletsMenu_addWalletButton', }; export const getCurrentAppRoute = async function () { const url = (await this.client.url()).value; @@ -16,29 +16,34 @@ export const waitUntilUrlEquals = function (expectedUrl: string) { }); }; export const navigateTo = function (requestedRoute: string) { - return this.client.execute(route => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + return this.client.execute((route) => { daedalus.actions.router.goToRoute.trigger({ - route + route, }); }, requestedRoute); }; export const sidebarHelpers = { - activateCategory: async (client: Record, { - category - }: { - category: string; - }) => { - await client.execute(cat => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + activateCategory: async ( + client: Record, + { + category, + }: { + category: string; + } + ) => { + await client.execute((cat) => { daedalus.actions.sidebar.activateSidebarCategory.trigger({ category: cat, - showSubMenu: true + showSubMenu: true, }); }, `/${category}`); return client.waitForVisible(`${SELECTORS.ACTIVE_CATEGORY}.${category}`); }, - clickAddWalletButton: (client: Record) => waitAndClick.call({ - client - }, SELECTORS.ADD_WALLET_BTN) -}; \ No newline at end of file + clickAddWalletButton: (client: Record) => + waitAndClick.call( + { + client, + }, + SELECTORS.ADD_WALLET_BTN + ), +}; diff --git a/tests/navigation/e2e/steps/sidebar.ts b/tests/navigation/e2e/steps/sidebar.ts index 29de62e3f5..972a461d6c 100644 --- a/tests/navigation/e2e/steps/sidebar.ts +++ b/tests/navigation/e2e/steps/sidebar.ts @@ -1,5 +1,5 @@ -import { Given, When, Then } from "cucumber"; -import { sidebarHelpers } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { sidebarHelpers } from './helpers'; const SELECTORS = { CATEGORY_ACTIVE: '.SidebarCategory_active', @@ -9,47 +9,54 @@ const SELECTORS = { MENU_VISIBLE: '.SidebarMenu_visible', SIDEBAR_COMPONENT: '.Sidebar_component', TOP_BAR: '.SidebarLayout_topbar', - TOP_BAR_LEFT_ICON: '.TopBar_leftIcon' + TOP_BAR_LEFT_ICON: '.TopBar_leftIcon', }; Given(/^the sidebar submenu is (hidden|visible)/, async function (state) { const isVisible = state === 'visible'; await this.client.waitForVisible(SELECTORS.SIDEBAR_COMPONENT); - await this.client.executeAsync((visible, SELECTORS, done) => { - const { - isShowingSubMenus - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.sidebar; - let sidebarWillAnimate = false; + await this.client.executeAsync( + (visible, SELECTORS, done) => { + const { isShowingSubMenus } = daedalus.stores.sidebar; + let sidebarWillAnimate = false; - if (isShowingSubMenus !== visible) { - sidebarWillAnimate = true; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.sidebar.toggleSubMenus.trigger(); - } + if (isShowingSubMenus !== visible) { + sidebarWillAnimate = true; + daedalus.actions.sidebar.toggleSubMenus.trigger(); + } - if (sidebarWillAnimate) { - // Wait until the sidebar transition is finished -> otherwise webdriver click error! - const sidebarElement = document.querySelectorAll(SELECTORS.SIDEBAR_COMPONENT)[0]; + if (sidebarWillAnimate) { + // Wait until the sidebar transition is finished -> otherwise webdriver click error! + const sidebarElement = document.querySelectorAll( + SELECTORS.SIDEBAR_COMPONENT + )[0]; - const onTransitionFinished = () => { - sidebarElement.removeEventListener('transitioned', onTransitionFinished); - done(); - }; + const onTransitionFinished = () => { + sidebarElement.removeEventListener( + 'transitioned', + onTransitionFinished + ); + done(); + }; - sidebarElement.addEventListener('transitionend', onTransitionFinished); - } else { - done(); - } - }, isVisible, SELECTORS); + sidebarElement.addEventListener('transitionend', onTransitionFinished); + } else { + done(); + } + }, + isVisible, + SELECTORS + ); return this.client.waitForExist(SELECTORS.MENU_VISIBLE, null, !isVisible); }); Given(/^The sidebar shows the "([^"]*)" category$/, function (category) { return sidebarHelpers.activateCategory(this.client, { - category + category, }); }); When(/^I click on the sidebar toggle button$/, function () { - return this.waitAndClick(`${SELECTORS.TOP_BAR} ${SELECTORS.TOP_BAR_LEFT_ICON}`); + return this.waitAndClick( + `${SELECTORS.TOP_BAR} ${SELECTORS.TOP_BAR_LEFT_ICON}` + ); }); When(/^I click on the "([^"]*)" category in the sidebar$/, function (category) { return this.waitAndClick(`${SELECTORS.CATEGORY_COMPONENT}.${category}`); @@ -58,15 +65,21 @@ When(/^I click on the add wallet button in the sidebar$/, function () { return sidebarHelpers.clickAddWalletButton(this.client); }); When(/^I click on the "([^"]*)" wallet in the sidebar$/, function (walletName) { - return this.waitAndClick(`//*[text()="${walletName}" and @class="SidebarWalletMenuItem_title"]`); + return this.waitAndClick( + `//*[text()="${walletName}" and @class="SidebarWalletMenuItem_title"]` + ); }); Then(/^the sidebar submenu should be (hidden|visible)/, function (state) { const waitForHidden = state === 'hidden'; - return this.client.waitForVisible(SELECTORS.MENU_COMPONENT, null, waitForHidden); + return this.client.waitForVisible( + SELECTORS.MENU_COMPONENT, + null, + waitForHidden + ); }); Then(/^The "([^"]*)" category should be active$/, function (category) { return this.client.waitForVisible(`${SELECTORS.CATEGORY_ACTIVE}.${category}`); }); Then(/^I should see the initial screen$/, function () { return this.client.waitForVisible(SELECTORS.LAYOUT_COMPONENT); -}); \ No newline at end of file +}); diff --git a/tests/news/e2e/documents/dummy-news.json b/tests/news/e2e/documents/dummy-news.json index b7061d8846..fe41f667b6 100644 --- a/tests/news/e2e/documents/dummy-news.json +++ b/tests/news/e2e/documents/dummy-news.json @@ -13,7 +13,7 @@ }, "target": { "daedalusVersion": ">=2.0.0-ITN1", - "platforms":["darwin","win32","linux"] + "platforms": ["darwin", "win32", "linux"] }, "action": { "label": { diff --git a/tests/news/e2e/steps/newsfeed-steps.ts b/tests/news/e2e/steps/newsfeed-steps.ts index 99ddfb2c9f..315b4f2fde 100644 --- a/tests/news/e2e/steps/newsfeed-steps.ts +++ b/tests/news/e2e/steps/newsfeed-steps.ts @@ -1,19 +1,19 @@ -import { expect } from "chai"; -import { get } from "lodash"; -import { Given, When, Then } from "cucumber"; -import moment from "moment"; -import newsDummyJson from "../documents/dummy-news.json"; -import { expectTextInSelector, getVisibleElementsCountForSelector } from "../../../common/e2e/steps/helpers"; +import { expect } from 'chai'; +import { get } from 'lodash'; +import { Given, When, Then } from 'cucumber'; +import moment from 'moment'; +import newsDummyJson from '../documents/dummy-news.json'; +import { + expectTextInSelector, + getVisibleElementsCountForSelector, +} from '../../../common/e2e/steps/helpers'; async function prepareFakeNews(context, fakeNews, preparation, ...args) { // Run custom preparation logic await context.client.executeAsync(preparation, fakeNews, ...args); // Extract the computed newsfeed data from the store - const newsData = await context.client.executeAsync(done => { - const { - newsFeed - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores; + const newsData = await context.client.executeAsync((done) => { + const { newsFeed } = daedalus.stores; // Refresh the newsfeed request & store newsFeed.getNews().then(() => { const d = newsFeed.newsFeedData; @@ -24,7 +24,7 @@ async function prepareFakeNews(context, fakeNews, preparation, ...args) { alerts: d.alerts, infos: d.infos, announcements: d.announcements, - incident: d.incident + incident: d.incident, }); }); }); @@ -35,79 +35,89 @@ async function prepareFakeNews(context, fakeNews, preparation, ...args) { } } -async function prepareNewsOfType(context, type, count = null, markAsRead = false) { - const items = newsDummyJson.items.filter(i => i.type === type).slice(0, count); +async function prepareNewsOfType( + context, + type, + count = null, + markAsRead = false +) { + const items = newsDummyJson.items + .filter((i) => i.type === type) + .slice(0, count); const newsFeed = { updatedAt: Date.now(), - items + items, }; - await prepareFakeNews(context, newsFeed, (news, isRead, done) => { - const { - api - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus; - api.ada.setTestingNewsFeed(news); + await prepareFakeNews( + context, + newsFeed, + (news, isRead, done) => { + const { api } = daedalus; + api.ada.setTestingNewsFeed(news); - if (isRead) { - api.localStorage.markNewsAsRead(news.items.map(i => i.id)).then(done); - } else { - done(); - } - }, markAsRead); + if (isRead) { + api.localStorage.markNewsAsRead(news.items.map((i) => i.id)).then(done); + } else { + done(); + } + }, + markAsRead + ); } // Set newsfeed to open before each newsfeed step export function setNewsFeedIsOpen(client: Record, flag) { - return client.execute(desiredState => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + return client.execute((desiredState) => { if (daedalus.stores.app.newsFeedIsOpen !== desiredState) { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.actions.app.toggleNewsFeed.trigger(); } }, flag); } // Reset the fake news before each newsfeed step export function resetTestNews(client) { - return client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + return client.executeAsync((done) => { daedalus.api.ada.setTestingNewsFeed({ updatedAt: Date.now(), - items: [] + items: [], }); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.newsFeed.getNews().then(done); }); } // GIVEN STEPS -Given(/^there (?:are|is)\s?(\d+)? (read|unread) (\w+?)s?$/, async function (count, read, newsType) { - await prepareNewsOfType(this, newsType, parseInt(count || 2, 10), read === 'read'); +Given(/^there (?:are|is)\s?(\d+)? (read|unread) (\w+?)s?$/, async function ( + count, + read, + newsType +) { + await prepareNewsOfType( + this, + newsType, + parseInt(count || 2, 10), + read === 'read' + ); }); Given('there is no news', async function () { await prepareFakeNews(this, newsDummyJson, (news, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.api.ada.setTestingNewsFeed({ updatedAt: Date.now(), - items: [] + items: [], }); done(); }); }); Given('there is an incident', async function () { await prepareFakeNews(this, newsDummyJson, (news, done) => { - const incident = news.items.find(i => i.type === 'incident'); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + const incident = news.items.find((i) => i.type === 'incident'); daedalus.api.ada.setTestingNewsFeed({ updatedAt: Date.now(), - items: [incident] + items: [incident], }); done(); }); }); Given('the newsfeed server is unreachable', async function () { - this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + this.client.executeAsync((done) => { daedalus.api.ada.setTestingNewsFeed(null); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.stores.newsFeed.getNews().then(done); }); this.news = []; @@ -116,7 +126,7 @@ Given('the latest alert will cover the screen', async function () { const latestAlert = this.news.alerts.unread[0]; await expectTextInSelector(this.client, { selector: '.AlertsOverlay_date', - text: moment(latestAlert.date).format('YYYY-MM-DD') + text: moment(latestAlert.date).format('YYYY-MM-DD'), }); }); // WHEN STEPS @@ -167,16 +177,24 @@ Then('the alert disappears', async function () { Then('the alert overlay opens', async function () { await this.client.waitForVisible('.AlertsOverlay_component'); }); -Then(/^the newsfeed contains (\d+) read (\w+?)s$/, async function (expectedReadNewsCount, newsType) { +Then(/^the newsfeed contains (\d+) read (\w+?)s$/, async function ( + expectedReadNewsCount, + newsType +) { setNewsFeedIsOpen(this.client, true); - const readNewsCount = await getVisibleElementsCountForSelector(this.client, `.NewsItem_${newsType}.NewsItem_isRead`); + const readNewsCount = await getVisibleElementsCountForSelector( + this.client, + `.NewsItem_${newsType}.NewsItem_isRead` + ); expect(readNewsCount).to.equal(expectedReadNewsCount); }); Then(/^the (\w+?) content is shown$/, async function (type) { setNewsFeedIsOpen(this.client, true); - await this.client.waitForVisible(`.NewsItem_${type} .NewsItem_newsItemContentContainer`); + await this.client.waitForVisible( + `.NewsItem_${type} .NewsItem_newsItemContentContainer` + ); }); Then(/^the (\w+?) is marked as read$/, async function (type) { setNewsFeedIsOpen(this.client, true); await this.client.waitForVisible(`.NewsItem_${type}.NewsItem_isRead`); -}); \ No newline at end of file +}); diff --git a/tests/paper-wallets/e2e/steps/paper-wallets-certificate.ts b/tests/paper-wallets/e2e/steps/paper-wallets-certificate.ts index 0780237670..d94e293ce9 100644 --- a/tests/paper-wallets/e2e/steps/paper-wallets-certificate.ts +++ b/tests/paper-wallets/e2e/steps/paper-wallets-certificate.ts @@ -1,10 +1,13 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import path from "path"; -import { fillOutWalletSendForm } from "../../../wallets/e2e/steps/helpers"; -import { waitUntilTextInSelector } from "../../../common/e2e/steps/helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import path from 'path'; +import { fillOutWalletSendForm } from '../../../wallets/e2e/steps/helpers'; +import { waitUntilTextInSelector } from '../../../common/e2e/steps/helpers'; -const paperWalletCertificatePath = path.resolve(__dirname, '../documents/paper-wallet-certificate.pdf'); +const paperWalletCertificatePath = path.resolve( + __dirname, + '../documents/paper-wallet-certificate.pdf' +); Given(/^I see the "Certificate Generation Instructions" dialog$/, function () { return this.client.waitForVisible('.instructionsDialog'); }); @@ -14,12 +17,11 @@ When(/^I click on the print button$/, async function () { * easily. So we just skip that step and pretend the user picked a path */ const data = { - filePath: paperWalletCertificatePath + filePath: paperWalletCertificatePath, }; - await this.client.execute(params => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + await this.client.execute((params) => { daedalus.actions.wallets.generateCertificate.trigger({ - filePath: params.filePath + filePath: params.filePath, }); }, data); }); @@ -37,18 +39,20 @@ When(/^I check all "Print Dialog" checkboxes$/, async function () { When(/^I see the "Securing Additional mnemonics" dialog$/, function () { return this.client.waitForVisible('.SecuringPasswordDialog'); }); -When(/^I click on "I have written the remaining 9 words to the certificate." checkbox$/, function () { - return this.waitAndClick('.SecuringPasswordDialog .SimpleCheckbox_root'); -}); +When( + /^I click on "I have written the remaining 9 words to the certificate." checkbox$/, + function () { + return this.waitAndClick('.SecuringPasswordDialog .SimpleCheckbox_root'); + } +); When(/^I see the "Verify Certificate" dialog$/, function () { return this.client.waitForVisible('.verificationDialog'); }); When(/^I enter paper wallet recovery phrase$/, async function () { const fields = await this.client.execute(() => ({ - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - walletCertificateRecoveryPhrase: daedalus.stores.wallets.walletCertificateRecoveryPhrase, - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - additionalMnemonicWords: daedalus.stores.wallets.additionalMnemonicWords + walletCertificateRecoveryPhrase: + daedalus.stores.wallets.walletCertificateRecoveryPhrase, + additionalMnemonicWords: daedalus.stores.wallets.additionalMnemonicWords, })); const walletCertificateRecoveryPhrase = `${fields.value.walletCertificateRecoveryPhrase} ${fields.value.additionalMnemonicWords}`; @@ -60,7 +64,10 @@ When(/^I enter paper wallet recovery phrase$/, async function () { for (let i = 0; i < recoveryPhrase.length; i++) { const word = recoveryPhrase[i]; - await this.client.setValue('.AutocompleteOverrides_autocompleteWrapper input', word); + await this.client.setValue( + '.AutocompleteOverrides_autocompleteWrapper input', + word + ); await this.client.waitForVisible(`//li[text()="${word}"]`); await this.waitAndClick(`//li[text()="${word}"]`); await this.client.waitForVisible(`//span[text()="${word}"]`); @@ -72,7 +79,10 @@ When(/^I enter wrong paper wallet recovery phrase:$/, async function (table) { for (let i = 0; i < recoveryPhrase.length; i++) { const word = recoveryPhrase[i]; - await this.client.setValue('.AutocompleteOverrides_autocompleteWrapper input', word); + await this.client.setValue( + '.AutocompleteOverrides_autocompleteWrapper input', + word + ); await this.client.waitForVisible(`//li[text()="${word}"]`); await this.waitAndClick(`//li[text()="${word}"]`); await this.client.waitForVisible(`//span[text()="${word}"]`); @@ -83,26 +93,33 @@ When(/^I fill out the send form:$/, async function (table) { values.address = this.certificateWalletAddress; return fillOutWalletSendForm.call(this, values); }); -When(/^I should see the following field error message:$/, async function (data) { +When(/^I should see the following field error message:$/, async function ( + data +) { const error = data.hashes()[0]; await waitUntilTextInSelector(this.client, { selector: '.VerificationDialog_recoveryPhrase .SimpleFormField_error', - text: await this.intl(error.message) + text: await this.intl(error.message), }); }); When(/^Verify certificate checkboxes should be disabled$/, async function () { const chk1 = !(await this.client.isEnabled('.storingUnderstandance input')); - const chk2 = !(await this.client.isEnabled('.recoveringUnderstandance input')); + const chk2 = !(await this.client.isEnabled( + '.recoveringUnderstandance input' + )); expect(chk1 && chk2).to.equal(true); }); When(/^Continue button should be disabled$/, async function () { const isEnabled = await this.client.isEnabled('.continueButton'); expect(isEnabled).to.equal(false); }); -When(/^Verify certificate checkboxes are no longer disabled$/, async function () { - await this.client.waitForEnabled('.storingUnderstandance input'); - await this.client.waitForEnabled('.recoveringUnderstandance input'); -}); +When( + /^Verify certificate checkboxes are no longer disabled$/, + async function () { + await this.client.waitForEnabled('.storingUnderstandance input'); + await this.client.waitForEnabled('.recoveringUnderstandance input'); + } +); When(/^I check all "Verify Certificate" checkboxes$/, async function () { await this.waitAndClick('.storingUnderstandance'); await this.waitAndClick('.recoveringUnderstandance'); @@ -110,30 +127,43 @@ When(/^I check all "Verify Certificate" checkboxes$/, async function () { When(/^I see the "Paper Wallet Certificate" dialog$/, function () { return this.client.waitForVisible('.completionDialog'); }); -When(/^Cardano explorer link and wallet address should be valid$/, async function () { - const visibleCardanoExplorerLink = await this.waitAndGetText('.CompletionDialog_linkInstructionsWrapper .CompletionDialog_infoBox .CompletionDialog_link'); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const walletCertificateAddress = await this.client.execute(() => daedalus.stores.wallets.walletCertificateAddress); - const cardanoExplorerLink = `https://explorer.cardano.org/en/address${walletCertificateAddress.value}`; - this.certificateWalletAddress = walletCertificateAddress.value; - const visibleWalletAddress = await this.waitAndGetText('.CompletionDialog_addressInstructionsWrapper .CompletionDialog_infoBox'); - expect(cardanoExplorerLink).to.equal(visibleCardanoExplorerLink); - expect(walletCertificateAddress.value).to.equal(visibleWalletAddress); -}); +When( + /^Cardano explorer link and wallet address should be valid$/, + async function () { + const visibleCardanoExplorerLink = await this.waitAndGetText( + '.CompletionDialog_linkInstructionsWrapper .CompletionDialog_infoBox .CompletionDialog_link' + ); + const walletCertificateAddress = await this.client.execute( + () => daedalus.stores.wallets.walletCertificateAddress + ); + const cardanoExplorerLink = `https://explorer.cardano.org/en/address${walletCertificateAddress.value}`; + this.certificateWalletAddress = walletCertificateAddress.value; + const visibleWalletAddress = await this.waitAndGetText( + '.CompletionDialog_addressInstructionsWrapper .CompletionDialog_infoBox' + ); + expect(cardanoExplorerLink).to.equal(visibleCardanoExplorerLink); + expect(walletCertificateAddress.value).to.equal(visibleWalletAddress); + } +); When(/^I click on the finish button$/, function () { return this.waitAndClick('.finishButton'); }); -When(/^I should not see the create paper wallet certificate dialog anymore$/, function () { - return this.client.waitForVisible('.completionDialog', null, true); -}); +When( + /^I should not see the create paper wallet certificate dialog anymore$/, + function () { + return this.client.waitForVisible('.completionDialog', null, true); + } +); When(/^I click "Paper wallet certificate" tab$/, function () { return this.waitAndClick('.certificateTab'); }); When(/^I see "Restore wallet with certificate" form$/, function () { - return this.client.waitForVisible('.WalletRestoreDialog_dialogWithCertificateRestore'); + return this.client.waitForVisible( + '.WalletRestoreDialog_dialogWithCertificateRestore' + ); }); Then(/^I should see that address was used$/, async function () { const addressSelector = '.Address_usedWalletAddress .Address_addressId'; const usedAddress = await this.waitAndGetText(addressSelector); expect(usedAddress).to.equal(this.certificateWalletAddress); -}); \ No newline at end of file +}); diff --git a/tests/reporter.ts b/tests/reporter.ts index b39d63d72c..19a54a6e90 100644 --- a/tests/reporter.ts +++ b/tests/reporter.ts @@ -6,6 +6,6 @@ const options = { output: 'tests-report/report.html', reportSuiteAsScenarios: true, scenarioTimestamp: true, - launchReport: true + launchReport: true, }; -reporter.generate(options); \ No newline at end of file +reporter.generate(options); diff --git a/tests/settings/e2e/steps/basic-setup.ts b/tests/settings/e2e/steps/basic-setup.ts index 5739611f7c..75916e73c5 100644 --- a/tests/settings/e2e/steps/basic-setup.ts +++ b/tests/settings/e2e/steps/basic-setup.ts @@ -1,20 +1,18 @@ -import { Given } from "cucumber"; -import { initialSettingsHelpers, migrationHelpers, termsOfUseHelpers } from "./helpers"; +import { Given } from 'cucumber'; +import { + initialSettingsHelpers, + migrationHelpers, + termsOfUseHelpers, +} from './helpers'; -const { - acceptMigration -} = migrationHelpers; -const { - acceptTerms -} = termsOfUseHelpers; -const { - ensureLanguageIsSelected -} = initialSettingsHelpers; +const { acceptMigration } = migrationHelpers; +const { acceptTerms } = termsOfUseHelpers; +const { ensureLanguageIsSelected } = initialSettingsHelpers; Given(/^I have completed the basic setup$/, async function () { await ensureLanguageIsSelected(this.client, { - language: 'en-US' + language: 'en-US', }); await acceptTerms(this.client); await acceptMigration(this.client); return true; -}); \ No newline at end of file +}); diff --git a/tests/settings/e2e/steps/custom-formats.ts b/tests/settings/e2e/steps/custom-formats.ts index fb94c291b2..4adfa6097c 100644 --- a/tests/settings/e2e/steps/custom-formats.ts +++ b/tests/settings/e2e/steps/custom-formats.ts @@ -1,85 +1,121 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { chooseCustomOptionsByValue, getSelectedCustomOptions, getValueFromSelector, doesMatchExpectedValue } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { + chooseCustomOptionsByValue, + getSelectedCustomOptions, + getValueFromSelector, + doesMatchExpectedValue, +} from './helpers'; -Given(/^I choose the following custom formats:$/, async function (formatsTable) { +Given(/^I choose the following custom formats:$/, async function ( + formatsTable +) { const chosenFormats = formatsTable.hashes(); - const [{ - value: numberValue - }, { - value: dateValue - }, { - value: timeValue - }] = chosenFormats; - await chooseCustomOptionsByValue.call(this, numberValue, dateValue, timeValue); + const [ + { value: numberValue }, + { value: dateValue }, + { value: timeValue }, + ] = chosenFormats; + await chooseCustomOptionsByValue.call( + this, + numberValue, + dateValue, + timeValue + ); }); -Given(/^I have changed the following custom formats:$/, async function (formatsTable) { +Given(/^I have changed the following custom formats:$/, async function ( + formatsTable +) { const chosenFormats = formatsTable.hashes(); await this.client.executeAsync((chosenFormats, done) => { - Promise.all(chosenFormats.map(({ - param, - value - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - }) => daedalus.stores.profile._updateUserLocalSetting({ - param: `${param}Format`, - value - }))).then(done); + Promise.all( + chosenFormats.map(({ param, value }) => + daedalus.stores.profile._updateUserLocalSetting({ + param: `${param}Format`, + value, + }) + ) + ).then(done); }, chosenFormats); }); -When(/^the "([^"]*)" wallet has received the transaction amount$/, async function (walletName) { - await this.client.waitUntil(async () => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const walletHasAmount = await this.client.execute(() => daedalus.stores.wallets.active && !daedalus.stores.wallets.active.amount.isZero()); - return walletHasAmount.value; - }); -}); -Then(/^I should see the following chosen options:$/, async function (expectedTable) { +When( + /^the "([^"]*)" wallet has received the transaction amount$/, + async function (walletName) { + await this.client.waitUntil(async () => { + const walletHasAmount = await this.client.execute( + () => + daedalus.stores.wallets.active && + !daedalus.stores.wallets.active.amount.isZero() + ); + return walletHasAmount.value; + }); + } +); +Then(/^I should see the following chosen options:$/, async function ( + expectedTable +) { const expectedValues = expectedTable.hashes(); - const [{ - value: expectedNumber - }, { - value: expectedDate - }, { - value: expectedTime - }] = expectedValues; + const [ + { value: expectedNumber }, + { value: expectedDate }, + { value: expectedTime }, + ] = expectedValues; await this.client.waitUntil(async () => { const { selectedNumber, selectedDate, - selectedTime + selectedTime, } = await getSelectedCustomOptions.call(this); - return selectedNumber === expectedNumber && selectedDate === expectedDate && selectedTime === expectedTime; + return ( + selectedNumber === expectedNumber && + selectedDate === expectedDate && + selectedTime === expectedTime + ); }); const { selectedNumber, selectedDate, - selectedTime + selectedTime, } = await getSelectedCustomOptions.call(this); expect(selectedNumber).to.equal(expectedNumber); expect(selectedDate).to.equal(expectedDate); expect(selectedTime).to.equal(expectedTime); }); -Then(/^the "([^"]*)" should display the following custom formats:$/, async function (screenElement, expectedTable) { - const expectedValues = expectedTable.hashes(); - await this.client.waitUntil(async () => { - const { - param: expectedParam, - value: expectedValue - } = expectedValues[0]; - const matcher = await doesMatchExpectedValue.call(this, screenElement, expectedParam, expectedValue); - return matcher; - }); +Then( + /^the "([^"]*)" should display the following custom formats:$/, + async function (screenElement, expectedTable) { + const expectedValues = expectedTable.hashes(); + await this.client.waitUntil(async () => { + const { param: expectedParam, value: expectedValue } = expectedValues[0]; + const matcher = await doesMatchExpectedValue.call( + this, + screenElement, + expectedParam, + expectedValue + ); + return matcher; + }); - for (let i = 0; i < expectedValues.length; i++) { - const { - param: expectedParam, - value: expectedValue - } = expectedValues[i]; - const matcher = await doesMatchExpectedValue.call(this, screenElement, expectedParam, expectedValue); - expect(matcher).to.be.true; + for (let i = 0; i < expectedValues.length; i++) { + const { param: expectedParam, value: expectedValue } = expectedValues[i]; + const matcher = await doesMatchExpectedValue.call( + this, + screenElement, + expectedParam, + expectedValue + ); + expect(matcher).to.be.true; + } } -}); -Then(/^the "([^"]*)" should display the "([^"]*)" of value "([^"]*)"$/, async function (screenElement, expectedParam, expectedValue) { - const currentValue = await getValueFromSelector.call(this, screenElement, expectedParam); - expect(currentValue).to.equal(expectedValue); -}); \ No newline at end of file +); +Then( + /^the "([^"]*)" should display the "([^"]*)" of value "([^"]*)"$/, + async function (screenElement, expectedParam, expectedValue) { + const currentValue = await getValueFromSelector.call( + this, + screenElement, + expectedParam + ); + expect(currentValue).to.equal(expectedValue); + } +); diff --git a/tests/settings/e2e/steps/general-settings.ts b/tests/settings/e2e/steps/general-settings.ts index 95585ad4a6..08426e281c 100644 --- a/tests/settings/e2e/steps/general-settings.ts +++ b/tests/settings/e2e/steps/general-settings.ts @@ -1,6 +1,6 @@ -import { When, Then } from "cucumber"; -import { expect } from "chai"; -import { camelCase } from "lodash"; +import { When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { camelCase } from 'lodash'; When(/^I click on secondary menu (.*) item$/, async function (buttonName) { const buttonSelector = `.SettingsMenuItem_component.${camelCase(buttonName)}`; @@ -10,19 +10,35 @@ When(/^I click on secondary menu (.*) item$/, async function (buttonName) { When(/^I select second theme$/, async function () { await this.client.click('.DisplaySettings_component button:nth-child(2)'); }); -When(/^I open General Settings language selection dropdown$/, async function () { - await this.client.click('.ProfileSettingsForm_component input:nth-child(1)'); -}); +When( + /^I open General Settings language selection dropdown$/, + async function () { + await this.client.click( + '.ProfileSettingsForm_component input:nth-child(1)' + ); + } +); Then(/^I should see Japanese language as selected$/, async function () { const [selectedLanguage] = await this.client.waitUntil(async () => { - return await this.client.getValue('.ProfileSettingsForm_component .SimpleInput_input'); + return await this.client.getValue( + '.ProfileSettingsForm_component .SimpleInput_input' + ); }); const locale = await this.intl('global.language.japanese'); expect(selectedLanguage).to.equal(locale); }); Then(/^I should see second theme as selected$/, async function () { - await this.client.waitForVisible('.DisplaySettings_component button:nth-child(2).DisplaySettings_active'); + await this.client.waitForVisible( + '.DisplaySettings_component button:nth-child(2).DisplaySettings_active' + ); }); -Then(/^I should see the page with Frequency asked questions title$/, async function () { - return this.client.waitForVisible(await this.intl('settings.support.faq.title'), null, true); -}); \ No newline at end of file +Then( + /^I should see the page with Frequency asked questions title$/, + async function () { + return this.client.waitForVisible( + await this.intl('settings.support.faq.title'), + null, + true + ); + } +); diff --git a/tests/settings/e2e/steps/helpers.ts b/tests/settings/e2e/steps/helpers.ts index d19f567ea7..8edb250c0a 100644 --- a/tests/settings/e2e/steps/helpers.ts +++ b/tests/settings/e2e/steps/helpers.ts @@ -1,43 +1,56 @@ -import { clickInputByLabel, clickOptionByValue, clickOptionByIndex } from "../../../common/e2e/steps/helpers"; +import { + clickInputByLabel, + clickOptionByValue, + clickOptionByIndex, +} from '../../../common/e2e/steps/helpers'; -const DATA_LAYER_MIGRATION_ACCEPTANCE_COMPONENT = '.DataLayerMigrationForm_component'; +const DATA_LAYER_MIGRATION_ACCEPTANCE_COMPONENT = + '.DataLayerMigrationForm_component'; const DEFAULT_LANGUAGE = 'en-US'; const INITIAL_SETTINGS_FORM = '.InitialSettings_component'; const TERMS_OF_USE_FORM = '.TermsOfUseForm_component'; export const screenElementSelectors = { alert: { - date: '.AlertsOverlay_date' + date: '.AlertsOverlay_date', }, incident: { - date: '.IncidentOverlay_date' + date: '.IncidentOverlay_date', }, announcement: { - date: '.NewsItem_newsItemDate' + date: '.NewsItem_newsItemDate', }, info: { - date: '.NewsItem_newsItemDate' + date: '.NewsItem_newsItemDate', }, transaction: { date: '.WalletTransactionsList_groupDate', time: '.Transaction_type', number: '.Transaction_amount', transform: { - time: (value: string) => value.split(',')[1] - } + time: (value: string) => value.split(',')[1], + }, }, 'transaction filter': { - date: '.FilterDialog_fromDateInput input' + date: '.FilterDialog_fromDateInput input', }, 'send form': { - number: '.SimpleInput_input[name="amount"]' + number: '.SimpleInput_input[name="amount"]', }, 'Target Wallet': { - number: '//*[@class="SidebarWalletMenuItem_title" and text()="Target Wallet"]//parent::div//following-sibling::div[@class="SidebarWalletMenuItem_info"]' - } + number: + '//*[@class="SidebarWalletMenuItem_title" and text()="Target Wallet"]//parent::div//following-sibling::div[@class="SidebarWalletMenuItem_info"]', + }, }; const paramsMatchersValues = { - date: (expectedValue: string) => expectedValue.replace('MM', '(0[1-9]|1[0-2])').replace('DD', '(0[1-9]|[12]\\d|3[01])').replace('YYYY', '\\d{4}'), - time: (expectedValue: string) => expectedValue === 'hh:mm:ss A' ? '[0-1]\\d:[0-5]\\d(:[0-5]\\d)? [AP]M' : '[0-2]\\d:[0-5]\\d:([0-5]\\d)?', + date: (expectedValue: string) => + expectedValue + .replace('MM', '(0[1-9]|1[0-2])') + .replace('DD', '(0[1-9]|[12]\\d|3[01])') + .replace('YYYY', '\\d{4}'), + time: (expectedValue: string) => + expectedValue === 'hh:mm:ss A' + ? '[0-1]\\d:[0-5]\\d(:[0-5]\\d)? [AP]M' + : '[0-2]\\d:[0-5]\\d:([0-5]\\d)?', number: (expectedValue: string) => { let [thousandsSeparator, decimalSeparator] = expectedValue.split(''); @@ -47,105 +60,133 @@ const paramsMatchersValues = { } return `((${thousandsSeparator})?\\d+)+${decimalSeparator}\\d{6}$`; - } + }, }; export const i18nHelpers = { - formatMessage: async (client: Record, { - id, - values - }: { - id: string; - values?: Record; - }) => { - const translation = await client.execute((translationId, translationValues) => { - const IntlProvider = require('react-intl').IntlProvider; // eslint-disable-line - + formatMessage: async ( + client: Record, + { + id, + values, + }: { + id: string; + values?: Record; + } + ) => { + const translation = await client.execute( + (translationId, translationValues) => { + const IntlProvider = require('react-intl').IntlProvider; // eslint-disable-line - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const locale = daedalus.stores.profile.currentLocale; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const messages = daedalus.translations; - const intlProvider = new IntlProvider({ - locale, - messages: messages[locale] - }, {}); - return intlProvider.getChildContext().intl.formatMessage({ - id: translationId - }, translationValues); - }, id, values || {}); + const locale = daedalus.stores.profile.currentLocale; + const messages = daedalus.translations; + const intlProvider = new IntlProvider( + { + locale, + messages: messages[locale], + }, + {} + ); + return intlProvider.getChildContext().intl.formatMessage( + { + id: translationId, + }, + translationValues + ); + }, + id, + values || {} + ); return translation.value; }, - // @ts-ignore ts-migrate(2741) FIXME: Property 'language' is missing in type '{}' but re... Remove this comment to see the full error message - setActiveLanguage: async (client: Record, { - language - }: { - language: string; - } = {}) => client.execute(value => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.profile.updateUserLocalSetting.trigger({ - param: 'locale', - value - }); - }, language || DEFAULT_LANGUAGE) + setActiveLanguage: async ( + client: Record, + { + language, + }: { + language: string; + } + ) => + client.execute((value) => { + daedalus.actions.profile.updateUserLocalSetting.trigger({ + param: 'locale', + value, + }); + }, language || DEFAULT_LANGUAGE), }; export const initialSettingsHelpers = { - // @ts-ignore ts-migrate(2741) FIXME: Property 'isHidden' is missing in type '{}' but re... Remove this comment to see the full error message - waitForVisible: async (client: Record, { - isHidden - }: { - isHidden: boolean; - } = {}) => client.waitForVisible(INITIAL_SETTINGS_FORM, null, isHidden), - // @ts-ignore ts-migrate(2741) FIXME: Property 'language' is missing in type '{}' but re... Remove this comment to see the full error message - ensureLanguageIsSelected: async (client: Record, { - language - }: { - language: string; - } = {}) => { + waitForVisible: async ( + client: Record, + { + isHidden, + }: { + isHidden: boolean; + } + ) => client.waitForVisible(INITIAL_SETTINGS_FORM, null, isHidden), + ensureLanguageIsSelected: async ( + client: Record, + { + language, + }: { + language: string; + } + ) => { await i18nHelpers.setActiveLanguage(client, { - language + language, }); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - client.execute(() => daedalus.actions.profile.finishInitialScreenSettings.trigger()); + client.execute(() => + daedalus.actions.profile.finishInitialScreenSettings.trigger() + ); await initialSettingsHelpers.waitForVisible(client, { - isHidden: true + isHidden: true, }); - } + }, }; export const migrationHelpers = { - // @ts-ignore ts-migrate(2741) FIXME: Property 'isHidden' is missing in type '{}' but re... Remove this comment to see the full error message - waitForVisible: async (client: Record, { - isHidden - }: { - isHidden: boolean; - } = {}) => client.waitForVisible(DATA_LAYER_MIGRATION_ACCEPTANCE_COMPONENT, null, isHidden), + waitForVisible: async ( + client: Record, + { + isHidden, + }: { + isHidden: boolean; + } + ) => + client.waitForVisible( + DATA_LAYER_MIGRATION_ACCEPTANCE_COMPONENT, + null, + isHidden + ), acceptMigration: async (client: Record) => { await client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.actions.profile.acceptDataLayerMigration.trigger(); }); await migrationHelpers.waitForVisible(client, { - isHidden: true + isHidden: true, }); - } + }, }; export const termsOfUseHelpers = { - // @ts-ignore ts-migrate(2741) FIXME: Property 'isHidden' is missing in type '{}' but re... Remove this comment to see the full error message - waitForVisible: async (client: Record, { - isHidden - }: { - isHidden: boolean; - } = {}) => client.waitForVisible(TERMS_OF_USE_FORM, null, isHidden), + waitForVisible: async ( + client: Record, + { + isHidden, + }: { + isHidden: boolean; + } + ) => client.waitForVisible(TERMS_OF_USE_FORM, null, isHidden), acceptTerms: async (client: Record) => { await client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.actions.profile.acceptTermsOfUse.trigger(); }); await termsOfUseHelpers.waitForVisible(client, { - isHidden: true + isHidden: true, }); - } + }, }; -export const chooseCustomOptionsByValue = async function (numberValue: string, dateValue: string, timeValue: string) { +export const chooseCustomOptionsByValue = async function ( + numberValue: string, + dateValue: string, + timeValue: string +) { await clickInputByLabel.call(this, 'Number format'); await clickOptionByValue.call(this, numberValue); await clickInputByLabel.call(this, 'Date format'); @@ -153,7 +194,11 @@ export const chooseCustomOptionsByValue = async function (numberValue: string, d await clickInputByLabel.call(this, 'Time format'); await clickOptionByValue.call(this, timeValue); }; -export const chooseCustomOptionsByIndex = async function (numberIndex: number, dateIndex: number, timeIndex: number) { +export const chooseCustomOptionsByIndex = async function ( + numberIndex: number, + dateIndex: number, + timeIndex: number +) { await clickInputByLabel.call(this, 'Number format'); await clickOptionByIndex.call(this, numberIndex); await clickInputByLabel.call(this, 'Date format'); @@ -162,33 +207,35 @@ export const chooseCustomOptionsByIndex = async function (numberIndex: number, d await clickOptionByIndex.call(this, timeIndex); }; export const getSelectedCustomOptions = async function () { - const selectedValues = await this.client.execute(function () { + const selectedValues = await this.client.execute(() => { const { currentNumberFormat, currentDateFormat, - currentTimeFormat - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + currentTimeFormat, } = daedalus.stores.profile; return { currentNumberFormat, currentDateFormat, - currentTimeFormat + currentTimeFormat, }; }); const { currentNumberFormat: selectedNumber, currentDateFormat: selectedDate, - currentTimeFormat: selectedTime + currentTimeFormat: selectedTime, } = selectedValues.value; return { selectedNumber, selectedDate, - selectedTime + selectedTime, }; }; -export const getValueFromSelector = async function (screenElement: string, expectedParam: string) { +export const getValueFromSelector = async function ( + screenElement: string, + expectedParam: string +) { const selector = screenElementSelectors[screenElement][expectedParam]; - const {transform} = screenElementSelectors[screenElement]; + const { transform } = screenElementSelectors[screenElement]; const tagName = await this.client.getTagName(selector); let value; @@ -199,11 +246,22 @@ export const getValueFromSelector = async function (screenElement: string, expec if (Array.isArray(value)) value = value[0]; } - if (transform && transform[expectedParam]) value = transform[expectedParam](value); + if (transform && transform[expectedParam]) + value = transform[expectedParam](value); return value; }; -export const doesMatchExpectedValue = async function (screenElement: string, expectedParam: string, expectedValue: string) { - const currentValue = await getValueFromSelector.call(this, screenElement, expectedParam); - const expectedMatcher = new RegExp(paramsMatchersValues[expectedParam](expectedValue)); +export const doesMatchExpectedValue = async function ( + screenElement: string, + expectedParam: string, + expectedValue: string +) { + const currentValue = await getValueFromSelector.call( + this, + screenElement, + expectedParam + ); + const expectedMatcher = new RegExp( + paramsMatchersValues[expectedParam](expectedValue) + ); return expectedMatcher.test(currentValue); -}; \ No newline at end of file +}; diff --git a/tests/settings/e2e/steps/select-language.ts b/tests/settings/e2e/steps/select-language.ts index de4c013782..412b1a9561 100644 --- a/tests/settings/e2e/steps/select-language.ts +++ b/tests/settings/e2e/steps/select-language.ts @@ -1,19 +1,16 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { initialSettingsHelpers } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { initialSettingsHelpers } from './helpers'; -const { - ensureLanguageIsSelected -} = initialSettingsHelpers; +const { ensureLanguageIsSelected } = initialSettingsHelpers; const INITIAL_SETTINGS_FORM = '.InitialSettings_component'; Given(/^I have selected English language$/, async function () { await ensureLanguageIsSelected(this.client, { - language: 'en-US' + language: 'en-US', }); }); Given(/^I dont have a language set$/, async function () { await this.client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.reset(); }); }); @@ -24,7 +21,9 @@ When(/^I open language selection dropdown$/, function () { return this.waitAndClick('.InitialSettings_component .SimpleInput_input'); }); When(/^I select Japanese language$/, function () { - return this.waitAndClick('//*[@class="SimpleOptions_option OptionsOverrides_option"]//*[contains(text(), "Japanese")]'); + return this.waitAndClick( + '//*[@class="SimpleOptions_option OptionsOverrides_option"]//*[contains(text(), "Japanese")]' + ); }); When(/^I submit the language selection form$/, function () { return this.waitAndClick('.ProfileSettingsForm_submitButton'); @@ -33,9 +32,11 @@ Then(/^I should not see the language selection screen anymore$/, function () { return this.client.waitForVisible(INITIAL_SETTINGS_FORM, null, true); }); Then(/^I should have Japanese language set$/, async function () { - const result = await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.profile.getProfileLocaleRequest.execute().then(done).catch(error => done(error)); + const result = await this.client.executeAsync((done) => { + daedalus.stores.profile.getProfileLocaleRequest + .execute() + .then(done) + .catch((error) => done(error)); }); expect(result.value).to.equal('ja-JP'); -}); \ No newline at end of file +}); diff --git a/tests/settings/e2e/steps/settings.ts b/tests/settings/e2e/steps/settings.ts index 4c14fcaed0..a6f2487c69 100644 --- a/tests/settings/e2e/steps/settings.ts +++ b/tests/settings/e2e/steps/settings.ts @@ -1,13 +1,15 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { navigateTo } from "../../../navigation/e2e/steps/helpers"; -import { waitUntilWalletNamesEqual } from "../../../wallets/e2e/steps/helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { navigateTo } from '../../../navigation/e2e/steps/helpers'; +import { waitUntilWalletNamesEqual } from '../../../wallets/e2e/steps/helpers'; Given(/^I am on the settings screen$/, async function () { await navigateTo.call(this, '/settings'); return this.client.waitForVisible('.SettingsLayout_component'); }); -Given(/^I should see the "([^"]*)" wallet password dialog$/, function (dialogType) { +Given(/^I should see the "([^"]*)" wallet password dialog$/, function ( + dialogType +) { const selector = `.${dialogType}PasswordDialog`; return this.client.waitForVisible(selector); }); @@ -20,20 +22,35 @@ When(/^I submit the wallet password dialog$/, function () { }); When(/^I change wallet password:$/, async function (table) { const fields = table.hashes()[0]; - await this.client.setValue('.ChangeSpendingPasswordDialog_currentPassword input', fields.currentPassword); - await this.client.setValue('.ChangeSpendingPasswordDialog_newPassword input', fields.password); - await this.client.setValue('.ChangeSpendingPasswordDialog_repeatedPassword input', fields.repeatedPassword); + await this.client.setValue( + '.ChangeSpendingPasswordDialog_currentPassword input', + fields.currentPassword + ); + await this.client.setValue( + '.ChangeSpendingPasswordDialog_newPassword input', + fields.password + ); + await this.client.setValue( + '.ChangeSpendingPasswordDialog_repeatedPassword input', + fields.repeatedPassword + ); }); When(/^I enter current wallet password:$/, async function (table) { const fields = table.hashes()[0]; - await this.client.setValue('.ChangeSpendingPasswordDialog_currentPassword input', fields.currentPassword); + await this.client.setValue( + '.ChangeSpendingPasswordDialog_currentPassword input', + fields.currentPassword + ); }); When(/^I click on "name" input field$/, function () { return this.client.click('.WalletSettings_component .walletName'); }); When(/^I enter new wallet name:$/, async function (table) { const fields = table.hashes()[0]; - await this.client.addValue('.WalletSettings_component .walletName input', `${" "}${fields.name}`); + await this.client.addValue( + '.WalletSettings_component .walletName input', + `${' '}${fields.name}` + ); }); When(/^I click outside "name" input field$/, function () { return this.client.click('.WalletSettings_component'); @@ -47,7 +64,8 @@ Then(/^I should see "([^"]*)" label in password field$/, function (label) { }); Then(/^I should see the following error messages:$/, async function (data) { const error = data.hashes()[0]; - const errorSelector = '.ChangeSpendingPasswordDialog_newPassword .SimpleFormField_error'; + const errorSelector = + '.ChangeSpendingPasswordDialog_newPassword .SimpleFormField_error'; const errorsOnScreen = await this.waitAndGetText(errorSelector); const expectedError = await this.intl(error.message); expect(errorsOnScreen).to.equal(expectedError); @@ -55,13 +73,18 @@ Then(/^I should see the following error messages:$/, async function (data) { Then(/^I should not see the change password dialog anymore$/, function () { return this.client.waitForVisible('.changePasswordDialog', null, true); }); -Then(/^I should see the following error messages on the change password dialog:$/, async function (data) { - let errorsOnScreen = await this.waitAndGetText('.ChangeSpendingPasswordDialog_error'); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +Then( + /^I should see the following error messages on the change password dialog:$/, + async function (data) { + let errorsOnScreen = await this.waitAndGetText( + '.ChangeSpendingPasswordDialog_error' + ); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); \ No newline at end of file +); diff --git a/tests/settings/e2e/steps/terms-of-use.ts b/tests/settings/e2e/steps/terms-of-use.ts index fdf1f7ee60..525340b08c 100644 --- a/tests/settings/e2e/steps/terms-of-use.ts +++ b/tests/settings/e2e/steps/terms-of-use.ts @@ -1,17 +1,14 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { termsOfUseHelpers } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { termsOfUseHelpers } from './helpers'; const TERMS_OF_USE_FORM = '.TermsOfUseForm_component'; -const { - acceptTerms -} = termsOfUseHelpers; +const { acceptTerms } = termsOfUseHelpers; Given(/^I have accepted "Terms of use"$/, async function () { await acceptTerms(this.client); }); Given(/^I didn't accept "Terms of use"$/, async function () { await this.client.execute(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. daedalus.reset(); }); }); @@ -28,9 +25,11 @@ Then(/^I should not see the "Terms of use" screen anymore$/, function () { return this.client.waitForVisible(TERMS_OF_USE_FORM, null, true); }); Then(/^I should have "Terms of use" accepted$/, async function () { - const result = await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.profile.getTermsOfUseAcceptanceRequest.execute().then(done).catch(error => done(error)); + const result = await this.client.executeAsync((done) => { + daedalus.stores.profile.getTermsOfUseAcceptanceRequest + .execute() + .then(done) + .catch((error) => done(error)); }); expect(result.value).to.equal(true); -}); \ No newline at end of file +}); diff --git a/tests/settings/unit/steps/file-names.ts b/tests/settings/unit/steps/file-names.ts index 50d3074d1f..8ca7a7ebdc 100644 --- a/tests/settings/unit/steps/file-names.ts +++ b/tests/settings/unit/steps/file-names.ts @@ -1,9 +1,12 @@ -import { Given, Then } from "cucumber"; -import { expect } from "chai"; -import { pickBy, identity } from "lodash"; -import { generateFileNameWithTimestamp, defaultProps } from "../../../../source/common/utils/files"; +import { Given, Then } from 'cucumber'; +import { expect } from 'chai'; +import { pickBy, identity } from 'lodash'; +import { + generateFileNameWithTimestamp, + defaultProps, +} from '../../../../source/common/utils/files'; -const getDataFromFunction = props => { +const getDataFromFunction = (props) => { const filename = generateFileNameWithTimestamp(props); let prefix = filename.match(/^[^-]*[^ -]/i); let extension = filename.match(/\.[0-9a-z]+$/i); @@ -27,7 +30,7 @@ const getDataFromFunction = props => { filename, prefix, extension, - isUTC + isUTC, }; }; @@ -36,8 +39,8 @@ Given('I dont pass any props to the function', function () { filename, extension, prefix, - isUTC - // @ts-ignore ts-migrate(2554) FIXME: Expected 1 arguments, but got 0. + isUTC, + // @ts-ignore ts-migrate(2554) FIXME: Expected 1 arguments, but got 0. } = getDataFromFunction(); this.context.filename = filename; this.context.extension = extension; @@ -47,13 +50,11 @@ Given('I dont pass any props to the function', function () { Given('I pass the following props to the function:', function (data) { let [expectedProps] = data.hashes(); expectedProps = pickBy(expectedProps, identity); - if (expectedProps.isUTC) expectedProps.isUTC = Boolean(expectedProps.isUTC === 'should'); - const { - filename, - extension, - prefix, - isUTC - } = getDataFromFunction(expectedProps); + if (expectedProps.isUTC) + expectedProps.isUTC = Boolean(expectedProps.isUTC === 'should'); + const { filename, extension, prefix, isUTC } = getDataFromFunction( + expectedProps + ); this.context.filename = filename; this.context.extension = extension; this.context.prefix = prefix; @@ -70,4 +71,4 @@ Then('the extension should be {string}', function (extension) { Then(/^the time (should|shouldn't) be converted into UTC/, function (state) { const isUTC = state === 'should'; expect(isUTC).to.equal(this.context.isUTC); -}); \ No newline at end of file +}); diff --git a/tests/setup-common.ts b/tests/setup-common.ts index 44f4e92ddf..c9bac6d2a0 100644 --- a/tests/setup-common.ts +++ b/tests/setup-common.ts @@ -1,12 +1,12 @@ -import { After, Before } from "cucumber"; -import sinon from "sinon"; -import { environment } from "../source/main/environment"; +import { After, Before } from 'cucumber'; +import sinon from 'sinon'; +import { environment } from '../source/main/environment'; global.environment = environment; // Add context object to share data between steps Before(function () { this.context = {}; }); -After(function () { +After(() => { sinon.restore(); -}); \ No newline at end of file +}); diff --git a/tests/setup-e2e.ts b/tests/setup-e2e.ts index b27acee028..d62112632b 100644 --- a/tests/setup-e2e.ts +++ b/tests/setup-e2e.ts @@ -1,35 +1,59 @@ -import path from "path"; -import fs from "fs"; -import { Application } from "spectron"; -import { BeforeAll, Before, After, AfterAll, setDefaultTimeout } from "cucumber"; -import electronPath from "electron"; -import fakeDialog from "spectron-fake-dialog"; -import { includes } from "lodash"; -import { generateScreenshotFilePath, getTestNameFromTestFile, saveScreenshot, waitAndClick, waitAndGetText, waitAndSetValue, skippablePromise } from "./common/e2e/steps/helpers"; -import { DEFAULT_TIMEOUT } from "./common/e2e/steps/config"; -import { setNewsFeedIsOpen, resetTestNews } from "./news/e2e/steps/newsfeed-steps"; -import { refreshClient } from "./app/e2e/steps/helpers"; -import { TEST } from "../source/common/types/environment.types"; -import { environment } from "../source/main/environment"; +import path from 'path'; +import fs from 'fs'; +import { Application } from 'spectron'; +import { + BeforeAll, + Before, + After, + AfterAll, + setDefaultTimeout, +} from 'cucumber'; +import electronPath from 'electron'; +import fakeDialog from 'spectron-fake-dialog'; +import { includes } from 'lodash'; +import { + generateScreenshotFilePath, + getTestNameFromTestFile, + saveScreenshot, + waitAndClick, + waitAndGetText, + waitAndSetValue, + skippablePromise, +} from './common/e2e/steps/helpers'; +import { DEFAULT_TIMEOUT } from './common/e2e/steps/config'; +import { + setNewsFeedIsOpen, + resetTestNews, +} from './news/e2e/steps/newsfeed-steps'; +import { refreshClient } from './app/e2e/steps/helpers'; +import { TEST } from '../source/common/types/environment.types'; +import { environment } from '../source/main/environment'; global.environment = environment; +interface Context { + app?: Application; +} + /* eslint-disable consistent-return */ -const context = {}; +const context: Context = {}; let scenariosCount = 0; -// @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. -const printMainProcessLogs = () => context.app.client.getMainProcessLogs().then(logs => { - // eslint-disable-next-line no-console - console.log('========= DAEDALUS LOGS ========='); - // eslint-disable-next-line no-console - logs.forEach(log => console.log(log)); - // eslint-disable-next-line no-console - console.log('================================='); - return true; -}); +const printMainProcessLogs = () => + context.app.client.getMainProcessLogs().then((logs) => { + // eslint-disable-next-line no-console + console.log('========= DAEDALUS LOGS ========='); + // eslint-disable-next-line no-console + logs.forEach((log) => console.log(log)); + // eslint-disable-next-line no-console + console.log('================================='); + return true; + }); -const defaultWalletKeyFilePath = path.resolve(__dirname, './wallets/e2e/documents/default-wallet.key'); +const defaultWalletKeyFilePath = path.resolve( + __dirname, + './wallets/e2e/documents/default-wallet.key' +); const startApp = async () => { const app = new Application({ @@ -38,20 +62,22 @@ const startApp = async () => { args: ['./dist/main/index.js'], requireName: 'spectronRequire', env: Object.assign({}, process.env, { - NODE_ENV: TEST + NODE_ENV: TEST, }), startTimeout: DEFAULT_TIMEOUT, waitTimeout: DEFAULT_TIMEOUT, chromeDriverLogPath: path.join(__dirname, '../logs/chrome-driver.log'), - webdriverLogPath: path.join(__dirname, '../logs/webdriver') + webdriverLogPath: path.join(__dirname, '../logs/webdriver'), }); fakeDialog.apply(app); await app.start(); // TODO: develop mock that accept custom value to return - fakeDialog.mock([{ - method: 'showOpenDialog', - value: [defaultWalletKeyFilePath] - }]); + fakeDialog.mock([ + { + method: 'showOpenDialog', + value: [defaultWalletKeyFilePath], + }, + ]); await app.client.waitUntilWindowLoaded(); return app; }; @@ -62,169 +88,196 @@ const startApp = async () => { setDefaultTimeout(DEFAULT_TIMEOUT + 1000); function getTagNames(testCase) { - return testCase.pickle.tags.map(t => t.name); + return testCase.pickle.tags.map((t) => t.name); } // Boot up the electron app before all features -BeforeAll({ - timeout: 5 * 60 * 1000 -}, async () => { - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. - context.app = await startApp(); -}); +BeforeAll( + { + timeout: 5 * 60 * 1000, + }, + async () => { + context.app = await startApp(); + } +); // Skip / Execute test depending on node integration -Before(async function (testCase) { +Before(async (testCase) => { const tags = getTagNames(testCase); const isWip = includes(tags, '@wip'); if (isWip) return 'skipped'; }); // Make the electron app accessible in each scenario context -Before({ - tags: '@e2e', - timeout: DEFAULT_TIMEOUT * 2 -}, async function (testCase) { - const tags = getTagNames(testCase); - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. - this.app = context.app; - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. - this.client = context.app.client; - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. - this.browserWindow = context.app.browserWindow; - // Set timeouts of various operations: - // Determines when to interrupt a script that is being evaluated. - this.client.timeouts('script', DEFAULT_TIMEOUT); - // Provides the timeout limit used to interrupt navigation of the browsing context. - this.client.timeouts('pageLoad', DEFAULT_TIMEOUT); - // Do not set 'implicit' timeout here because of this issue: - // https://github.com/webdriverio/webdriverio/issues/974 - // Reset backend - await this.client.executeAsync(done => { - const resetBackend = () => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - if (daedalus.stores.networkStatus.isConnected) { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.wallets._pausePolling().then(() => daedalus.stores.wallets.resetWalletsData()).then(() => daedalus.api.ada.testReset()).then(() => daedalus.api.ada.resetTestOverrides()).then(() => daedalus.api.localStorage.reset()).then(() => daedalus.stores.wallets._resumePolling()).then(() => daedalus.stores.wallets.refreshWalletsData()).then(done).catch(error => done(error)); - } else { - setTimeout(resetBackend, 50); - } - }; +Before( + { + tags: '@e2e', + timeout: DEFAULT_TIMEOUT * 2, + }, + async function (testCase) { + const tags = getTagNames(testCase); + this.app = context.app; + this.client = context.app.client; + this.browserWindow = context.app.browserWindow; + // Set timeouts of various operations: + // Determines when to interrupt a script that is being evaluated. + this.client.timeouts('script', DEFAULT_TIMEOUT); + // Provides the timeout limit used to interrupt navigation of the browsing context. + this.client.timeouts('pageLoad', DEFAULT_TIMEOUT); + // Do not set 'implicit' timeout here because of this issue: + // https://github.com/webdriverio/webdriverio/issues/974 + // Reset backend + await this.client.executeAsync((done) => { + const resetBackend = () => { + if (daedalus.stores.networkStatus.isConnected) { + daedalus.stores.wallets + ._pausePolling() + .then(() => daedalus.stores.wallets.resetWalletsData()) + .then(() => daedalus.api.ada.testReset()) + .then(() => daedalus.api.ada.resetTestOverrides()) + .then(() => daedalus.api.localStorage.reset()) + .then(() => daedalus.stores.wallets._resumePolling()) + .then(() => daedalus.stores.wallets.refreshWalletsData()) + .then(done) + .catch((error) => done(error)); + } else { + setTimeout(resetBackend, 50); + } + }; - resetBackend(); - }); + resetBackend(); + }); - // Load fresh root url with test environment for each test case - if (!tags.includes('@noReload')) { - await refreshClient(this.client); - } + // Load fresh root url with test environment for each test case + if (!tags.includes('@noReload')) { + await refreshClient(this.client); + } - // Ensure that frontend is synced and ready before test case - await this.client.executeAsync(done => { - const waitUntilSyncedAndReady = () => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - if (daedalus.stores.networkStatus.isSynced) { - done(); - } else { - setTimeout(waitUntilSyncedAndReady, 50); - } - }; + // Ensure that frontend is synced and ready before test case + await this.client.executeAsync((done) => { + const waitUntilSyncedAndReady = () => { + if (daedalus.stores.networkStatus.isSynced) { + done(); + } else { + setTimeout(waitUntilSyncedAndReady, 50); + } + }; - waitUntilSyncedAndReady(); - }); -}); -Before({ - tags: '@newsfeed' -}, function () { - setNewsFeedIsOpen(this.client, false); - resetTestNews(this.client); -}); -// adds waitAndClick method to webdriver + waitUntilSyncedAndReady(); + }); + } +); +Before( + { + tags: '@newsfeed', + }, + function () { + setNewsFeedIsOpen(this.client, false); + resetTestNews(this.client); + } +); Before(function (testCase) { - const { - name - } = testCase.pickle; - this.skippablePromise = skippablePromise.bind(this, name); - this.waitAndClick = waitAndClick.bind(this); - this.waitAndGetText = waitAndGetText.bind(this); - this.waitAndSetValue = waitAndSetValue.bind(this); + const { name } = testCase.pickle; + Object.assign(this, { + skippablePromise: skippablePromise.bind(this, name), + waitAndClick: waitAndClick.bind(this), + waitAndGetText: waitAndGetText.bind(this), + waitAndSetValue: waitAndSetValue.bind(this), + }); }); // ads intl method to webdriver -Before({ - tags: '@e2e' -}, function () { - this.intl = async (translationId, translationValues = {}) => { - const translation = await this.client.execute((id, values) => { - const IntlProvider = require('react-intl').IntlProvider; // eslint-disable-line - - - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const locale = daedalus.stores.profile.currentLocale; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const messages = daedalus.translations; - const intlProvider = new IntlProvider({ - locale, - messages: messages[locale] - }, {}); - return intlProvider.getChildContext().intl.formatMessage({ - id - }, values); - }, translationId, translationValues); - return translation.value; - }; -}); +Before( + { + tags: '@e2e', + }, + function () { + this.intl = async (translationId, translationValues = {}) => { + const translation = await this.client.execute( + (id, values) => { + const IntlProvider = require('react-intl').IntlProvider; // eslint-disable-line + + const locale = daedalus.stores.profile.currentLocale; + const messages = daedalus.translations; + const intlProvider = new IntlProvider( + { + locale, + messages: messages[locale], + }, + {} + ); + return intlProvider.getChildContext().intl.formatMessage( + { + id, + }, + values + ); + }, + translationId, + translationValues + ); + return translation.value; + }; + } +); // this ensures that the spectron instance of the app restarts // after the node update acceptance test shuts it down via 'kill-process' // eslint-disable-next-line prefer-arrow-callback -After({ - tags: '@restartApp' -}, async function () { - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. - context.app = await startApp(); -}); +After( + { + tags: '@restartApp', + }, + async () => { + context.app = await startApp(); + } +); // this ensures that the reset-backend call successfully executes // after the app version difference test sets the app to disconnected state // eslint-disable-next-line prefer-arrow-callback -After({ - tags: '@reconnectApp' -}, async function () { - await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.resetTestOverrides(); - - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.networkStatus._updateNetworkStatus().then(done).catch(error => done(error)); - }); -}); +After( + { + tags: '@reconnectApp', + }, + async function () { + await this.client.executeAsync((done) => { + daedalus.api.ada.resetTestOverrides(); + + daedalus.stores.networkStatus + ._updateNetworkStatus() + .then(done) + .catch((error) => done(error)); + }); + } +); // eslint-disable-next-line prefer-arrow-callback -After({ - tags: '@e2e' -}, async function ({ - sourceLocation, - result -}) { - scenariosCount++; - - if (result.status === 'failed') { - const testName = getTestNameFromTestFile(sourceLocation.uri); - const file = generateScreenshotFilePath(testName); - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. - await saveScreenshot(context.app, file); - await printMainProcessLogs(); +After( + { + tags: '@e2e', + }, + async ({ sourceLocation, result }) => { + scenariosCount++; + + if (result.status === 'failed') { + const testName = getTestNameFromTestFile(sourceLocation.uri); + const file = generateScreenshotFilePath(testName); + await saveScreenshot(context.app, file); + await printMainProcessLogs(); + } } -}); -After({ - tags: '@rewardsCsv' -}, async function () { - // Remove exported rewards csv - const file = 'tests/delegation/e2e/documents/rewards_exported.csv'; - fs.unlink(file, err => { - if (err) throw err; - }); -}); +); +After( + { + tags: '@rewardsCsv', + }, + async () => { + // Remove exported rewards csv + const file = 'tests/delegation/e2e/documents/rewards_exported.csv'; + fs.unlink(file, (err) => { + if (err) throw err; + }); + } +); // eslint-disable-next-line prefer-arrow-callback AfterAll(async function () { - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. const allWindowsClosed = (await context.app.client.getWindowCount()) === 0; - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. + // @ts-ignore if (allWindowsClosed || !context.app.running) return; if (scenariosCount === 0) { @@ -235,6 +288,5 @@ AfterAll(async function () { return; } - // @ts-ignore ts-migrate(2339) FIXME: Property 'app' does not exist on type '{}'. return context.app.stop(); -}); \ No newline at end of file +}); diff --git a/tests/transactions/e2e/steps/transactions.ts b/tests/transactions/e2e/steps/transactions.ts index 30853a0529..78f6baf5c3 100644 --- a/tests/transactions/e2e/steps/transactions.ts +++ b/tests/transactions/e2e/steps/transactions.ts @@ -1,71 +1,109 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import BigNumber from "bignumber.js/bignumber"; -import { DECIMAL_PLACES_IN_ADA, LOVELACES_PER_ADA } from "../../../../source/renderer/app/config/numbersConfig"; -import { getVisibleTextsForSelector, clickInputByLabel, clickOptionByIndex } from "../../../common/e2e/steps/helpers"; -import { getWalletByName, fillOutWalletSendForm } from "../../../wallets/e2e/steps/helpers"; -import { getRawWalletId } from "../../../../source/renderer/app/api/utils"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import BigNumber from 'bignumber.js/bignumber'; +import { + DECIMAL_PLACES_IN_ADA, + LOVELACES_PER_ADA, +} from '../../../../source/renderer/app/config/numbersConfig'; +import { + getVisibleTextsForSelector, + clickInputByLabel, + clickOptionByIndex, +} from '../../../common/e2e/steps/helpers'; +import { + getWalletByName, + fillOutWalletSendForm, +} from '../../../wallets/e2e/steps/helpers'; +import { getRawWalletId } from '../../../../source/renderer/app/api/utils'; // This step ensures sequential creation of given transactions // use only when the order is important because it's slower! -Given(/^I have made the following transactions:$/, { - timeout: 40000 -}, async function (table) { - const txData = await Promise.all(table.hashes().map(async t => { - const sourceWallet = await getWalletByName.call(this, t.source); - const destinationWallet = await getWalletByName.call(this, t.destination); - return { - walletId: sourceWallet.id, - destinationWalletId: destinationWallet.id, - // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'BigNumber' is not assignable to ... Remove this comment to see the full error message - amount: parseInt(new BigNumber(t.amount).times(LOVELACES_PER_ADA), 10), - passphrase: 'Secret1234', - isLegacy: sourceWallet.isLegacy - }; - })); - this.transactions = []; - - // Sequentially (and async) create transactions with for loop - for (const tx of txData) { - const txResponse = await this.client.executeAsync((transaction, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.addresses.getAddressesByWalletId(transaction.destinationWalletId).then(addresses => daedalus.api.ada.createTransaction(window.Object.assign(transaction, { - address: addresses[0].id // First address of receiving wallet +Given( + /^I have made the following transactions:$/, + { + timeout: 40000, + }, + async function (table) { + const txData = await Promise.all( + table.hashes().map(async (t) => { + const sourceWallet = await getWalletByName.call(this, t.source); + const destinationWallet = await getWalletByName.call( + this, + t.destination + ); + return { + walletId: sourceWallet.id, + destinationWalletId: destinationWallet.id, + amount: parseInt( + new BigNumber(t.amount).times(LOVELACES_PER_ADA).toString(), + 10 + ), + passphrase: 'Secret1234', + isLegacy: sourceWallet.isLegacy, + }; + }) + ); + this.transactions = []; - }))).then(done); - }, tx); - this.transactions.push(txResponse); + // Sequentially (and async) create transactions with for loop + for (const tx of txData) { + const txResponse = await this.client.executeAsync((transaction, done) => { + daedalus.stores.addresses + .getAddressesByWalletId(transaction.destinationWalletId) + .then((addresses) => + daedalus.api.ada.createTransaction( + window.Object.assign(transaction, { + address: addresses[0].id, // First address of receiving wallet + }) + ) + ) + .then(done); + }, tx); + this.transactions.push(txResponse); + } } -}); -When(/^I fill out the send form with value equals to "([^"]*)" wallet amount$/, async function (walletName) { - const wallet = await getWalletByName.call(this, walletName); - const walletId = getRawWalletId(wallet.id); - const walletAddress = await this.client.executeAsync((walletId, isLegacy, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.getAddresses({ +); +When( + /^I fill out the send form with value equals to "([^"]*)" wallet amount$/, + async function (walletName) { + const wallet = await getWalletByName.call(this, walletName); + const walletId = getRawWalletId(wallet.id); + const walletAddress = await this.client.executeAsync( + (walletId, isLegacy, done) => { + daedalus.api.ada + .getAddresses({ + walletId, + isLegacy, + }) + .then((response) => done(response[0].id)) + .catch((error) => done(error)); + }, walletId, - isLegacy - }).then(response => done(response[0].id)).catch(error => done(error)); - }, walletId, wallet.isLegacy); - // Check for pending transactions - await this.client.executeAsync((wallet, walletAddress, done) => { - const checkPendingTransactions = () => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - if (!daedalus.stores.transactions.pendingTransactionsCount) { - done(); - } else { - setTimeout(checkPendingTransactions, 500); - } - }; + wallet.isLegacy + ); + // Check for pending transactions + await this.client.executeAsync( + (wallet, walletAddress, done) => { + const checkPendingTransactions = () => { + if (!daedalus.stores.transactions.pendingTransactionsCount) { + done(); + } else { + setTimeout(checkPendingTransactions, 500); + } + }; - checkPendingTransactions(); - }, wallet, walletAddress); - // Fill form when there are no pending transactions - const values = { - amount: wallet.amount, - address: walletAddress.value - }; - return fillOutWalletSendForm.call(this, values); -}); + checkPendingTransactions(); + }, + wallet, + walletAddress + ); + // Fill form when there are no pending transactions + const values = { + amount: wallet.amount, + address: walletAddress.value, + }; + return fillOutWalletSendForm.call(this, values); + } +); When(/^I click on the show more transactions button$/, async function () { await this.waitAndClick('.WalletTransactionsList_showMoreTransactionsButton'); }); @@ -75,25 +113,36 @@ When(/^I can see the send form$/, function () { When(/^I fill out the wallet send form with:$/, function (table) { return fillOutWalletSendForm.call(this, table.hashes()[0]); }); -When(/^I fill out the send form with a transaction to "([^"]*)" wallet:$/, async function (walletName, table) { - const values = table.hashes()[0]; - const wallet = await getWalletByName.call(this, walletName); - const walletId = getRawWalletId(wallet.id); - // Get Destination wallet address - const walletAddress = await this.client.executeAsync((walletId, isLegacy, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.getAddresses({ +When( + /^I fill out the send form with a transaction to "([^"]*)" wallet:$/, + async function (walletName, table) { + const values = table.hashes()[0]; + const wallet = await getWalletByName.call(this, walletName); + const walletId = getRawWalletId(wallet.id); + // Get Destination wallet address + const walletAddress = await this.client.executeAsync( + (walletId, isLegacy, done) => { + daedalus.api.ada + .getAddresses({ + walletId, + isLegacy, + }) + .then((response) => done(response[0].id)) + .catch((error) => done(error)); + }, walletId, - isLegacy - }).then(response => done(response[0].id)).catch(error => done(error)); - }, walletId, wallet.isLegacy); - values.address = walletAddress.value; - return fillOutWalletSendForm.call(this, values); -}); + wallet.isLegacy + ); + values.address = walletAddress.value; + return fillOutWalletSendForm.call(this, values); + } +); When(/^the transaction fees are calculated$/, async function () { this.fees = await this.client.waitUntil(async () => { // Expected transactionFeeText format "+ 0.000001 of fees" - const transactionFeeText = await this.waitAndGetText('.AmountInputSkin_fees'); + const transactionFeeText = await this.waitAndGetText( + '.AmountInputSkin_fees' + ); const transactionFeeAmount = new BigNumber(transactionFeeText.substr(2, 8)); return transactionFeeAmount.isGreaterThan(0) ? transactionFeeAmount : false; }); @@ -106,12 +155,22 @@ When(/^I click on the next button in the wallet send form$/, async function () { When(/^I see send money confirmation dialog$/, function () { return this.client.waitForVisible('.WalletSendConfirmationDialog_dialog'); }); -When(/^I enter wallet spending password in confirmation dialog "([^"]*)"$/, async function (password) { - await this.client.setValue('.WalletSendConfirmationDialog_passphrase input', password); -}); +When( + /^I enter wallet spending password in confirmation dialog "([^"]*)"$/, + async function (password) { + await this.client.setValue( + '.WalletSendConfirmationDialog_passphrase input', + password + ); + } +); When(/^I submit the wallet send form$/, async function () { - await this.client.waitForEnabled('.WalletSendConfirmationDialog_dialog .confirmButton'); - return this.client.click('.WalletSendConfirmationDialog_dialog .confirmButton'); + await this.client.waitForEnabled( + '.WalletSendConfirmationDialog_dialog .confirmButton' + ); + return this.client.click( + '.WalletSendConfirmationDialog_dialog .confirmButton' + ); }); When(/^I open the transactions filter$/, async function () { return this.waitAndClick('.FilterButton_actionButton'); @@ -122,63 +181,66 @@ When(/^I choose the first time filter option$/, async function () { }); const screenElementSelectors = { fromAmount: 'input[name="fromAmount"]', - toAmount: 'input[name="toAmount"]' + toAmount: 'input[name="toAmount"]', }; When(/^I enter the following filter values:$/, async function (filterTable) { const filterValues = filterTable.hashes(); for (let i = 0; i < filterValues.length; i++) { - const { - param: filterParam, - value: filterValue - } = filterValues[i]; + const { param: filterParam, value: filterValue } = filterValues[i]; const selector = screenElementSelectors[filterParam]; await this.client.setValue(selector, filterValue); } }); -Then(/^I should see the following filter values:$/, async function (filterTable) { +Then(/^I should see the following filter values:$/, async function ( + filterTable +) { const filterValues = filterTable.hashes(); for (let i = 0; i < filterValues.length; i++) { - const { - param: filterParam, - value: expectedValue - } = filterValues[i]; + const { param: filterParam, value: expectedValue } = filterValues[i]; const selector = screenElementSelectors[filterParam]; let currentValue = await this.client.getValue(selector); if (Array.isArray(currentValue)) currentValue = currentValue[0]; expect(currentValue).to.equal(expectedValue); } }); -Then(/^I should see the following error messages on the wallet send form:$/, async function (data) { - const errorSelector = '.WalletSendForm_component .SimpleFormField_error'; - let errorsOnScreen = await this.waitAndGetText(errorSelector); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +Then( + /^I should see the following error messages on the wallet send form:$/, + async function (data) { + const errorSelector = '.WalletSendForm_component .SimpleFormField_error'; + let errorsOnScreen = await this.waitAndGetText(errorSelector); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); -Then(/^I should see the following error messages on the wallet send confirmation dialog:$/, async function (data) { - const errorSelector = '.WalletSendConfirmationDialog_dialog .WalletSendConfirmationDialog_error'; - let errorsOnScreen = await this.waitAndGetText(errorSelector); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +); +Then( + /^I should see the following error messages on the wallet send confirmation dialog:$/, + async function (data) { + const errorSelector = + '.WalletSendConfirmationDialog_dialog .WalletSendConfirmationDialog_error'; + let errorsOnScreen = await this.waitAndGetText(errorSelector); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); +); // TODO: refactor this to a less hackish solution (fees cannot easily be calculated atm) Then(/^the latest transaction should show:$/, async function (table) { const expectedData = table.hashes()[0]; let transactionTitles = await this.waitAndGetText('.Transaction_title'); transactionTitles = [].concat(transactionTitles); const expectedTransactionTitle = await this.intl(expectedData.title, { - currency: 'Ada' + currency: 'Ada', }); expect(expectedTransactionTitle).to.equal(transactionTitles[0]); let transactionAmounts = await this.waitAndGetText('.Transaction_amount'); @@ -187,7 +249,9 @@ Then(/^the latest transaction should show:$/, async function (table) { // subtract them in order to get a match with expectedData.amountWithoutFees. // NOTE: we use "add()" as this is outgoing transaction and amount is a negative value! const transactionAmount = new BigNumber(transactionAmounts[0]); - const transactionAmountWithoutFees = transactionAmount.plus(this.fees).toFormat(DECIMAL_PLACES_IN_ADA); + const transactionAmountWithoutFees = transactionAmount + .plus(this.fees) + .toFormat(DECIMAL_PLACES_IN_ADA); expect(expectedData.amountWithoutFees).to.equal(transactionAmountWithoutFees); }); Then(/^I should not see any transactions$/, async function () { @@ -198,35 +262,43 @@ Then(/^I should see the no recent transactions message$/, async function () { }); Then(/^I should see the following transactions:$/, async function (table) { // Prepare expected transaction data - const expectedTxs = await Promise.all(table.hashes().map(async tx => { - let title; + const expectedTxs = await Promise.all( + table.hashes().map(async (tx) => { + let title; - switch (tx.type) { - case 'income': - title = 'wallet.transaction.received'; - break; + switch (tx.type) { + case 'income': + title = 'wallet.transaction.received'; + break; - case 'expend': - title = 'wallet.transaction.sent'; - break; + case 'expend': + title = 'wallet.transaction.sent'; + break; - default: - throw new Error('unknown transaction type'); - } + default: + throw new Error('unknown transaction type'); + } - return { - title: await this.intl(title, { - currency: 'Ada' - }), - amount: new BigNumber(tx.amount).toFormat(DECIMAL_PLACES_IN_ADA) - }; - })); + return { + title: await this.intl(title, { + currency: 'Ada', + }), + amount: new BigNumber(tx.amount).toFormat(DECIMAL_PLACES_IN_ADA), + }; + }) + ); // Collect data of visible transactions on screen - const txTitles = await getVisibleTextsForSelector(this.client, '.Transaction_title'); - const txAmounts = await getVisibleTextsForSelector(this.client, '.Transaction_amount'); + const txTitles = await getVisibleTextsForSelector( + this.client, + '.Transaction_title' + ); + const txAmounts = await getVisibleTextsForSelector( + this.client, + '.Transaction_amount' + ); const visibleTxs = txTitles.map((title, index) => ({ title, - amount: txAmounts[index] + amount: txAmounts[index], })); expect(expectedTxs).to.deep.equal(visibleTxs); -}); \ No newline at end of file +}); diff --git a/tests/transactions/e2e/steps/utxos.ts b/tests/transactions/e2e/steps/utxos.ts index 8b907734dd..8669fb1d1c 100644 --- a/tests/transactions/e2e/steps/utxos.ts +++ b/tests/transactions/e2e/steps/utxos.ts @@ -1,7 +1,7 @@ -import { Then } from "cucumber"; -import { expect } from "chai"; -import { getVisibleTextsForSelector } from "../../../common/e2e/steps/helpers"; -import { getWalletUtxosTotalAmount } from "../../../../source/renderer/app/utils/utxoUtils"; +import { Then } from 'cucumber'; +import { expect } from 'chai'; +import { getVisibleTextsForSelector } from '../../../common/e2e/steps/helpers'; +import { getWalletUtxosTotalAmount } from '../../../../source/renderer/app/utils/utxoUtils'; const container = '.WalletUtxo_container'; const selectors = { @@ -10,41 +10,49 @@ const selectors = { description: `${container} > p`, chart: '.WalletUtxo_responsiveContainer', walletAmount: `${container} > p b:nth-child(1)`, - walletUtxosAmount: `${container} > p b:nth-child(2)` + walletUtxosAmount: `${container} > p b:nth-child(2)`, }; -Then('the {string} element renders the following text:', async function (element, data) { +Then('the {string} element renders the following text:', async function ( + element, + data +) { const [expectedTextData] = data.hashes(); - const [renderedText] = await getVisibleTextsForSelector(this.client, selectors[element]); + const [renderedText] = await getVisibleTextsForSelector( + this.client, + selectors[element] + ); const expectedText = await this.intl(expectedTextData.message); expect(renderedText).to.equal(expectedText); }); -Then('the page description displays the correct wallet and UTXOs amount', async function () { - const [renderedWalletAmount] = await getVisibleTextsForSelector(this.client, selectors.walletAmount); - const [renderedWalletUtxosAmount] = await getVisibleTextsForSelector(this.client, selectors.walletUtxosAmount); - const { - value: { - expextedWalletAmount, - distribution - } - } = await this.client.executeAsync(done => { +Then( + 'the page description displays the correct wallet and UTXOs amount', + async function () { + const [renderedWalletAmount] = await getVisibleTextsForSelector( + this.client, + selectors.walletAmount + ); + const [renderedWalletUtxosAmount] = await getVisibleTextsForSelector( + this.client, + selectors.walletUtxosAmount + ); const { - walletUtxos - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.walletSettings || {}; - const { - activeValue - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.wallets; - done({ - expextedWalletAmount: activeValue, - distribution: walletUtxos ? walletUtxos.distribution : {} + value: { expextedWalletAmount, distribution }, + } = await this.client.executeAsync((done) => { + const { walletUtxos } = daedalus.stores.walletSettings || {}; + const { activeValue } = daedalus.stores.wallets; + done({ + expextedWalletAmount: activeValue, + distribution: walletUtxos ? walletUtxos.distribution : {}, + }); }); - }); - const expectedWalletUtxosAmount = getWalletUtxosTotalAmount(distribution); - expect(expextedWalletAmount).to.equal(renderedWalletAmount); - expect(expectedWalletUtxosAmount).to.equal(parseInt(renderedWalletUtxosAmount, 10)); -}); + const expectedWalletUtxosAmount = getWalletUtxosTotalAmount(distribution); + expect(expextedWalletAmount).to.equal(renderedWalletAmount); + expect(expectedWalletUtxosAmount).to.equal( + parseInt(renderedWalletUtxosAmount, 10) + ); + } +); Then(/^the UTXOs chart is (hidden|visible)/, async function (state) { const isVisible = state === 'visible'; await this.client.waitForVisible(selectors.chart, null, !isVisible); -}); \ No newline at end of file +}); diff --git a/tests/transactions/unit/steps/helpers.ts b/tests/transactions/unit/steps/helpers.ts index 692a63ca05..731ec88b28 100644 --- a/tests/transactions/unit/steps/helpers.ts +++ b/tests/transactions/unit/steps/helpers.ts @@ -1,10 +1,7 @@ -export const getHistogramFromTable = data => { +export const getHistogramFromTable = (data) => { const histogram = {}; - data.hashes().forEach(({ - walletAmount, - walletUtxosAmount - }) => { + data.hashes().forEach(({ walletAmount, walletUtxosAmount }) => { histogram[walletAmount] = walletUtxosAmount; }); return histogram; -}; \ No newline at end of file +}; diff --git a/tests/transactions/unit/steps/utxos-chart.ts b/tests/transactions/unit/steps/utxos-chart.ts index 11ba047fad..fd2e54b1d8 100644 --- a/tests/transactions/unit/steps/utxos-chart.ts +++ b/tests/transactions/unit/steps/utxos-chart.ts @@ -1,59 +1,74 @@ -import { Given, Then } from "cucumber"; -import { expect } from "chai"; -import { formattedAmountToLovelace, formattedLovelaceToAmount } from "../../../../source/renderer/app/utils/formatters"; -import { getUtxoChartData, getUtxoWalletPrettyAmount, getWalletUtxosTotalAmount } from "../../../../source/renderer/app/utils/utxoUtils"; -import { getHistogramFromTable } from "./helpers"; +import { Given, Then } from 'cucumber'; +import { expect } from 'chai'; +import { + formattedAmountToLovelace, + formattedLovelaceToAmount, +} from '../../../../source/renderer/app/utils/formatters'; +import { + getUtxoChartData, + getUtxoWalletPrettyAmount, + getWalletUtxosTotalAmount, +} from '../../../../source/renderer/app/utils/utxoUtils'; +import { getHistogramFromTable } from './helpers'; /* eslint-disable no-unused-expressions */ -Given('the `getUtxoChartData` function receives the following props:', function (data) { - const histogram = getHistogramFromTable(data); - const utxoChartData = getUtxoChartData(histogram); - this.context.histogram = histogram; - this.context.utxoChartData = utxoChartData; - this.context.response = utxoChartData; - this.context.sortedHistogram = Object.entries(histogram).sort(); -}); +Given( + 'the `getUtxoChartData` function receives the following props:', + function (data) { + const histogram = getHistogramFromTable(data); + const utxoChartData = getUtxoChartData(histogram); + this.context.histogram = histogram; + this.context.utxoChartData = utxoChartData; + this.context.response = utxoChartData; + this.context.sortedHistogram = Object.entries(histogram).sort(); + } +); Then('the wallet amounts should be sorted sorted ascending', function () { - const { - utxoChartData: arr - } = this.context; - const isSorted = arr.every(({ - walletAmount - }, i) => i < arr.length - 1 ? walletAmount <= arr[i + 1].walletAmount : true); + const { utxoChartData: arr } = this.context; + const isSorted = arr.every(({ walletAmount }, i) => + i < arr.length - 1 ? walletAmount <= arr[i + 1].walletAmount : true + ); expect(isSorted).to.be.true; }); -Then('the wallet amounts should be formatted into human-readable text', function () { - const { - utxoChartData, - sortedHistogram - } = this.context; - const isFormatted = utxoChartData.every(({ - walletAmount - }, index) => walletAmount === formattedLovelaceToAmount(sortedHistogram[index][0])); - expect(isFormatted).to.be.true; -}); +Then( + 'the wallet amounts should be formatted into human-readable text', + function () { + const { utxoChartData, sortedHistogram } = this.context; + const isFormatted = utxoChartData.every( + ({ walletAmount }, index) => + walletAmount === formattedLovelaceToAmount(sortedHistogram[index][0]) + ); + expect(isFormatted).to.be.true; + } +); Then('there should be no wallet amounts greater than 100K', function () { - return this.context.utxoChartData.every(({ - walletRawAmount - }) => walletRawAmount <= 100000); -}); -Then('the wallet UTXO amounts for wallet amounts greater than {int} should be aggregated', function (walletAmount) { - const walletAmountThreshold = formattedAmountToLovelace(String(walletAmount)); - const { - utxoChartData, - sortedHistogram - } = this.context; - const expectedAggregatedUtxosAmount = sortedHistogram.reduce((sum, [amount, walletUtxosAmount]) => { - if (amount >= walletAmountThreshold) sum += parseInt(walletUtxosAmount, 10); - return sum; - }, 0); - const { - walletUtxosAmount: calculatedAggregatedUtxosAmount - } = utxoChartData.find(({ - walletRawAmount - }) => walletRawAmount === 100000); - expect(expectedAggregatedUtxosAmount).to.equal(calculatedAggregatedUtxosAmount); + return this.context.utxoChartData.every( + ({ walletRawAmount }) => walletRawAmount <= 100000 + ); }); +Then( + 'the wallet UTXO amounts for wallet amounts greater than {int} should be aggregated', + function (walletAmount) { + const walletAmountThreshold = formattedAmountToLovelace( + String(walletAmount) + ); + const { utxoChartData, sortedHistogram } = this.context; + const expectedAggregatedUtxosAmount = sortedHistogram.reduce( + (sum, [amount, walletUtxosAmount]) => { + if (amount >= walletAmountThreshold) + sum += parseInt(walletUtxosAmount, 10); + return sum; + }, + 0 + ); + const { + walletUtxosAmount: calculatedAggregatedUtxosAmount, + } = utxoChartData.find(({ walletRawAmount }) => walletRawAmount === 100000); + expect(expectedAggregatedUtxosAmount).to.equal( + calculatedAggregatedUtxosAmount + ); + } +); function getUtxoChartDataReceivesAWalletAmount(walletAmount) { this.context.walletRawAmount = walletAmount; @@ -62,11 +77,12 @@ function getUtxoChartDataReceivesAWalletAmount(walletAmount) { this.context.response = walletPrettyAmount; } -Given('the `getUtxoWalletPrettyAmount` function receives the following {float}', getUtxoChartDataReceivesAWalletAmount); +Given( + 'the `getUtxoWalletPrettyAmount` function receives the following {float}', + getUtxoChartDataReceivesAWalletAmount +); Then('the response should have type {string}', function (type) { - const { - response - } = this.context; + const { response } = this.context; if (type === 'array') { return expect(Array.isArray(response)).to.be.true; @@ -74,33 +90,35 @@ Then('the response should have type {string}', function (type) { return expect(typeof response).to.equal(type); }); -Then('wallet amounts less than {int} should not be modified', function (amount) { - const { - walletAmount, - walletRawAmount - } = this.context; +Then('wallet amounts less than {int} should not be modified', function ( + amount +) { + const { walletAmount, walletRawAmount } = this.context; if (walletRawAmount < amount) { expect(walletAmount).to.equal(String(walletRawAmount)); expect(/[a-zA-Z]/.test(walletAmount)).to.be.false; } }); -Then('wallet amounts equal or greater than {int} should be formatted into human-readable text', function (amount) { - const { - walletAmount, - walletRawAmount - } = this.context; +Then( + 'wallet amounts equal or greater than {int} should be formatted into human-readable text', + function (amount) { + const { walletAmount, walletRawAmount } = this.context; - if (walletRawAmount >= amount) { - expect(walletAmount).to.not.equal(String(walletRawAmount)); - expect(/[a-zA-Z]/.test(walletAmount)).to.be.true; + if (walletRawAmount >= amount) { + expect(walletAmount).to.not.equal(String(walletRawAmount)); + expect(/[a-zA-Z]/.test(walletAmount)).to.be.true; + } } -}); -Given('the `getWalletUtxosTotalAmount` function receives the following props:', function (data) { - const histogram = getHistogramFromTable(data); - this.context.histogram = histogram; - this.context.response = getWalletUtxosTotalAmount(histogram); -}); +); +Given( + 'the `getWalletUtxosTotalAmount` function receives the following props:', + function (data) { + const histogram = getHistogramFromTable(data); + this.context.histogram = histogram; + this.context.response = getWalletUtxosTotalAmount(histogram); + } +); Then('the response should be the number {int}', function (response) { expect(response).to.equal(this.context.response); -}); \ No newline at end of file +}); diff --git a/tests/tsc.nix b/tests/tsc.nix new file mode 100644 index 0000000000..78ab1276fc --- /dev/null +++ b/tests/tsc.nix @@ -0,0 +1,20 @@ +{runCommand, rawapp, source }: +runCommand "daedalus-tsc-ci" { preferLocalBuild = true; } '' + # tsc command fails to ignore the files if node_modules is symlink + # so we have to copy the whole directory to run the test + cp -a ${source}/. . + chmod -R u+w ./ + rm -rf node_modules || true + cp -a ${rawapp.node_modules} node_modules + node_modules/.bin/tsc --noEmit + if [ $? == 0 ] || [ $? == 2 ] + then + echo $? > $out + fi + EXIT_CODE=$? + if [ $EXIT_CODE == 0 ] || [ $EXIT_CODE == 2 ] + then + echo $EXIT_CODE > $out + exit 0 + fi +'' diff --git a/tests/types.ts b/tests/types.ts index 4f9af73f40..ed77443f40 100644 --- a/tests/types.ts +++ b/tests/types.ts @@ -1,12 +1,12 @@ -import { defineParameterType } from "cucumber"; -import type { Api } from "../source/renderer/app/api"; -import type { ActionsMap } from "../source/renderer/app/actions"; -import type { StoresMap } from "../source/renderer/app/stores"; +import { defineParameterType } from 'cucumber'; +import type { Api } from '../source/renderer/app/api'; +import type { ActionsMap } from '../source/renderer/app/actions'; +import type { StoresMap } from '../source/renderer/app/stores'; // Add {bool} parameter type defineParameterType({ name: 'bool', regexp: /true|false/, - transformer: b => b === 'true' + transformer: (b) => b === 'true', }); export type Daedalus = { actions: ActionsMap; @@ -27,12 +27,29 @@ export type WebdriverExecuteResult = { export type WebdriverClient = { click: (selector: string) => Promise; elements: (selector: string) => Promise>; - execute: (script: (...args: Array) => any, ...scriptArgs: Array) => WebdriverExecuteResult; - executeAsync: (script: (...args: Array) => any, ...scriptArgs: Array) => Promise>; + execute: ( + script: (...args: Array) => any, + ...scriptArgs: Array + ) => WebdriverExecuteResult; + executeAsync: ( + script: (...args: Array) => any, + ...scriptArgs: Array + ) => Promise>; getText: (selector: string) => Promise; url: (url: string) => Promise; - waitForEnabled: (selector: string, ms?: number | null, reverse?: boolean) => Promise; + waitForEnabled: ( + selector: string, + ms?: number | null, + reverse?: boolean + ) => Promise; waitForText: (selector: string) => Promise; - waitForVisible: (target: string, ms?: number | null, reverse?: boolean) => Promise; - waitUntil: (script: (...args: Array) => any, timeout?: number) => Promise; -}; \ No newline at end of file + waitForVisible: ( + target: string, + ms?: number | null, + reverse?: boolean + ) => Promise; + waitUntil: ( + script: (...args: Array) => any, + timeout?: number + ) => Promise; +}; diff --git a/tests/wallets/e2e/.eslintrc b/tests/wallets/e2e/.eslintrc new file mode 100644 index 0000000000..35b1fa5364 --- /dev/null +++ b/tests/wallets/e2e/.eslintrc @@ -0,0 +1,6 @@ +{ + "rules": { + "jest/no-standalone-expect": 0, + "jest/valid-expect": 0 + } +} diff --git a/tests/wallets/e2e/steps/balance-wallets-notification.ts b/tests/wallets/e2e/steps/balance-wallets-notification.ts index fe60c437c3..2edee04460 100644 --- a/tests/wallets/e2e/steps/balance-wallets-notification.ts +++ b/tests/wallets/e2e/steps/balance-wallets-notification.ts @@ -1,10 +1,22 @@ -import { Then } from "cucumber"; -import { expect } from "chai"; +import { Then } from 'cucumber'; +import { expect } from 'chai'; -Then(/^"Byron" wallet "([^"]*)" action should be visible in the top bar notification$/, async function (action) { - const notificationAction = await this.waitAndGetText('.LegacyNotification_actions button:nth-child(2)'); - expect(notificationAction).to.equal(action); -}); -Then(/^"Byron" wallet notification should not be displayed in the wallet top bar$/, async function () { - return this.client.waitForVisible('.LegacyNotification_component', null, true); -}); \ No newline at end of file +Then( + /^"Byron" wallet "([^"]*)" action should be visible in the top bar notification$/, + async function (action) { + const notificationAction = await this.waitAndGetText( + '.LegacyNotification_actions button:nth-child(2)' + ); + expect(notificationAction).to.equal(action); + } +); +Then( + /^"Byron" wallet notification should not be displayed in the wallet top bar$/, + async function () { + return this.client.waitForVisible( + '.LegacyNotification_component', + null, + true + ); + } +); diff --git a/tests/wallets/e2e/steps/create-wallet.ts b/tests/wallets/e2e/steps/create-wallet.ts index 97cfbe39ba..6183b67d83 100644 --- a/tests/wallets/e2e/steps/create-wallet.ts +++ b/tests/wallets/e2e/steps/create-wallet.ts @@ -1,5 +1,5 @@ -import { Given, When, Then } from "cucumber"; -import { addWalletPage } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { addWalletPage } from './helpers'; Given(/^I see the add wallet page/, function () { return addWalletPage.waitForVisible(this.client); @@ -10,22 +10,42 @@ Given(/^I see the create wallet dialog$/, function () { Given(/^I dont see the create wallet dialog(?: anymore)?$/, function () { return this.client.waitForVisible('.WalletCreateDialog', null, true); }); -When(/^I click on the create wallet button on the add wallet page/, function () { - return this.waitAndClick('.WalletAdd .createWalletButton'); -}); -When(/^I submit the create wallet with spending password dialog with the following inputs:$/, async function (table) { - const fields = table.hashes()[0]; - await this.client.setValue('.WalletCreateDialog .walletName input', fields.walletName); - await this.client.setValue('.WalletCreateDialog .spendingPassword input', fields.password); - await this.client.setValue('.WalletCreateDialog .repeatedPassword input', fields.repeatedPassword); - return this.waitAndClick('.WalletCreateDialog .primary'); -}); +When( + /^I click on the create wallet button on the add wallet page/, + function () { + return this.waitAndClick('.WalletAdd .createWalletButton'); + } +); +When( + /^I submit the create wallet with spending password dialog with the following inputs:$/, + async function (table) { + const fields = table.hashes()[0]; + await this.client.setValue( + '.WalletCreateDialog .walletName input', + fields.walletName + ); + await this.client.setValue( + '.WalletCreateDialog .spendingPassword input', + fields.password + ); + await this.client.setValue( + '.WalletCreateDialog .repeatedPassword input', + fields.repeatedPassword + ); + return this.waitAndClick('.WalletCreateDialog .primary'); + } +); When(/^I see the create wallet privacy dialog$/, function () { return this.client.waitForVisible('.WalletBackupPrivacyWarningDialog'); }); -When(/^I click on "Please make sure nobody looks your screen" checkbox$/, function () { - return this.waitAndClick('.WalletBackupPrivacyWarningDialog .SimpleCheckbox_root'); -}); +When( + /^I click on "Please make sure nobody looks your screen" checkbox$/, + function () { + return this.waitAndClick( + '.WalletBackupPrivacyWarningDialog .SimpleCheckbox_root' + ); + } +); When(/^I submit the create wallet privacy dialog$/, function () { return this.waitAndClick('.WalletBackupPrivacyWarningDialog .primary'); }); @@ -33,23 +53,33 @@ When(/^I see the create wallet recovery phrase display dialog$/, function () { return this.client.waitForVisible('.WalletRecoveryPhraseDisplayDialog'); }); When(/^I note down the recovery phrase$/, async function () { - const recoveryPhrase = await this.waitAndGetText('.WalletRecoveryPhraseMnemonic_component'); + const recoveryPhrase = await this.waitAndGetText( + '.WalletRecoveryPhraseMnemonic_component' + ); this.recoveryPhrase = recoveryPhrase.split(' '); }); -When(/^I submit the create wallet recovery phrase display dialog$/, function () { - return this.waitAndClick('.WalletRecoveryPhraseDisplayDialog .primary'); -}); +When( + /^I submit the create wallet recovery phrase display dialog$/, + function () { + return this.waitAndClick('.WalletRecoveryPhraseDisplayDialog .primary'); + } +); When(/^I see the create wallet recovery phrase entry dialog$/, function () { return this.client.waitForVisible('.WalletRecoveryPhraseEntryDialog'); }); -When(/^I click on recovery phrase mnemonics in correct order$/, async function () { - for (let i = 0; i < this.recoveryPhrase.length; i++) { - const word = this.recoveryPhrase[i]; - const selector = 'MnemonicWord_root'; - const disabledSelector = 'MnemonicWord_disabled'; - await this.waitAndClick(`//button[contains(@class,'${selector}') and not(contains(@class, '${disabledSelector}')) and text()="${word}"]`); +When( + /^I click on recovery phrase mnemonics in correct order$/, + async function () { + for (let i = 0; i < this.recoveryPhrase.length; i++) { + const word = this.recoveryPhrase[i]; + const selector = 'MnemonicWord_root'; + const disabledSelector = 'MnemonicWord_disabled'; + await this.waitAndClick( + `//button[contains(@class,'${selector}') and not(contains(@class, '${disabledSelector}')) and text()="${word}"]` + ); + } } -}); +); When(/^I click on the "Accept terms" checkboxes$/, async function () { const termsCheckboxes = await this.client.elements('.SimpleCheckbox_root'); @@ -61,6 +91,13 @@ When(/^I click on the "Accept terms" checkboxes$/, async function () { When(/^I submit the create wallet recovery phrase entry dialog$/, function () { return this.waitAndClick('.WalletRecoveryPhraseEntryDialog .primary'); }); -Then(/^I should not see the create wallet recovery phrase entry dialog anymore$/, function () { - return this.client.waitForVisible('.WalletRecoveryPhraseEntryDialog', null, true); -}); \ No newline at end of file +Then( + /^I should not see the create wallet recovery phrase entry dialog anymore$/, + function () { + return this.client.waitForVisible( + '.WalletRecoveryPhraseEntryDialog', + null, + true + ); + } +); diff --git a/tests/wallets/e2e/steps/delete-wallet.ts b/tests/wallets/e2e/steps/delete-wallet.ts index abc4b4aba3..e514e52ed6 100644 --- a/tests/wallets/e2e/steps/delete-wallet.ts +++ b/tests/wallets/e2e/steps/delete-wallet.ts @@ -1,4 +1,4 @@ -import { Given, When, Then } from "cucumber"; +import { Given, When, Then } from 'cucumber'; Given(/^I see delete wallet dialog$/, function () { return this.client.waitForVisible('.DeleteWalletConfirmationDialog_dialog'); @@ -6,15 +6,29 @@ Given(/^I see delete wallet dialog$/, function () { When(/^I click on delete wallet button$/, async function () { return this.waitAndClick('.WalletSettings_deleteWalletBox button'); }); -When(/^I enter "([^"]*)" as name of the wallet to confirm$/, async function (walletName) { - return this.client.setValue('.DeleteWalletConfirmationDialog_confirmationInput input', walletName); -}); -When(/^I click on the "Make sure you have access to backup before continuing" checkbox$/, function () { - return this.waitAndClick('.DeleteWalletConfirmationDialog_dialog .SimpleCheckbox_root'); +When(/^I enter "([^"]*)" as name of the wallet to confirm$/, async function ( + walletName +) { + return this.client.setValue( + '.DeleteWalletConfirmationDialog_confirmationInput input', + walletName + ); }); +When( + /^I click on the "Make sure you have access to backup before continuing" checkbox$/, + function () { + return this.waitAndClick( + '.DeleteWalletConfirmationDialog_dialog .SimpleCheckbox_root' + ); + } +); When(/^I submit the delete wallet dialog$/, function () { return this.client.click('.DeleteWalletConfirmationDialog_dialog .primary'); }); Then(/^I should not see the delete wallet dialog anymore$/, function () { - return this.client.waitForVisible('.DeleteWalletConfirmationDialog_dialog', null, true); -}); \ No newline at end of file + return this.client.waitForVisible( + '.DeleteWalletConfirmationDialog_dialog', + null, + true + ); +}); diff --git a/tests/wallets/e2e/steps/helpers.ts b/tests/wallets/e2e/steps/helpers.ts index 9a3749f43b..86585c8e38 100644 --- a/tests/wallets/e2e/steps/helpers.ts +++ b/tests/wallets/e2e/steps/helpers.ts @@ -1,9 +1,16 @@ -import { expect } from "chai"; -import BigNumber from "bignumber.js"; -import { expectTextInSelector, waitAndClick, notFoundWalletsErrorMessage } from "../../../common/e2e/steps/helpers"; -import { byronMnemonics, shelleyMnemonics } from "../../../../utils/api-importer/mnemonics"; -import { testStorageKeys } from "../../../common/e2e/steps/config"; -import { WalletSyncStateStatuses } from "../../../../source/renderer/app/domains/Wallet"; +import { expect } from 'chai'; +import BigNumber from 'bignumber.js'; +import { + expectTextInSelector, + waitAndClick, + notFoundWalletsErrorMessage, +} from '../../../common/e2e/steps/helpers'; +import { + byronMnemonics, + shelleyMnemonics, +} from '../../../../utils/api-importer/mnemonics'; +import { testStorageKeys } from '../../../common/e2e/steps/config'; +import { WalletSyncStateStatuses } from '../../../../source/renderer/app/domains/Wallet'; const ADD_WALLET = '.WalletAdd'; const IMPORT_WALLET_BUTTON = '.importWalletButton'; @@ -12,102 +19,152 @@ const DEFAULT_LANGUAGE = 'en-US'; let shelleyMnemonicsIndex = 0; export const noWalletsErrorMessage = `The byron wallet for funds transferring was already used and has no longer funds. Remove the "Daedalus Selfnode" directory and run \`nix:dev\` again.`; -export const restoreWalletWithFunds = async (client: Record, { - walletName -}: { - walletName: string; -}) => { +export const restoreWalletWithFunds = async ( + client: Record, + { + walletName, + }: { + walletName: string; + } +) => { const recoveryPhrase = shelleyMnemonics[shelleyMnemonicsIndex++]; - if (shelleyMnemonicsIndex === shelleyMnemonics.length) shelleyMnemonicsIndex = 0; - client.executeAsync((name, recoveryPhrase, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.restoreWallet({ - walletName: name, - recoveryPhrase, - spendingPassword: 'Secret1234' - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - }).then(() => daedalus.stores.wallets.refreshWalletsData().then(done).catch(error => done(error))).catch(error => done(error)); - }, walletName, recoveryPhrase); + if (shelleyMnemonicsIndex === shelleyMnemonics.length) + shelleyMnemonicsIndex = 0; + client.executeAsync( + (name, recoveryPhrase, done) => { + daedalus.api.ada + .restoreWallet({ + walletName: name, + recoveryPhrase, + spendingPassword: 'Secret1234', + }) + .then(() => + daedalus.stores.wallets + .refreshWalletsData() + .then(done) + .catch((error) => done(error)) + ) + .catch((error) => done(error)); + }, + walletName, + recoveryPhrase + ); }; const getMnemonicsIndex = async function (maxIndex: number) { - let index = (await this.localStorage('GET', testStorageKeys.BYRON_MNEMONICS_INDEX)) || { - value: 0 + let index = (await this.localStorage( + 'GET', + testStorageKeys.BYRON_MNEMONICS_INDEX + )) || { + value: 0, }; index = parseInt(index.value, 10); if (isNaN(index)) index = 0; const newIndex = index < maxIndex ? index + 1 : 0; await this.localStorage('POST', { key: testStorageKeys.BYRON_MNEMONICS_INDEX, - value: String(newIndex) + value: String(newIndex), }); return index; }; -export const restoreLegacyWallet = async (client: Record, { - walletName, - hasFunds, - transferFunds -}: { - walletName: string; - hasFunds?: boolean; - transferFunds?: boolean; -}) => { +export const restoreLegacyWallet = async ( + client: Record, + { + walletName, + hasFunds, + transferFunds, + }: { + walletName: string; + hasFunds?: boolean; + transferFunds?: boolean; + } +) => { let recoveryPhrase; if (hasFunds) { const mnemonics = byronMnemonics; - const mnemonicsIndex = await getMnemonicsIndex.call(client, mnemonics.length - 1); + const mnemonicsIndex = await getMnemonicsIndex.call( + client, + mnemonics.length - 1 + ); recoveryPhrase = mnemonics[mnemonicsIndex]; } else { recoveryPhrase = null; } - await client.executeAsync((name, recoveryPhrase, transferFunds, noWalletsErrorMessage, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const mnemonics = recoveryPhrase || daedalus.utils.crypto.generateMnemonic(12); - const recoveryPhraseArray = typeof mnemonics === 'string' ? mnemonics.split(' ') : mnemonics; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.restoreByronRandomWallet({ - walletName: name, - recoveryPhrase: recoveryPhraseArray, - spendingPassword: 'Secret1234' - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - }).then(() => daedalus.stores.wallets.refreshWalletsData().then(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const wallet = daedalus.stores.wallets.getWalletByName(name); + await client.executeAsync( + (name, recoveryPhrase, transferFunds, noWalletsErrorMessage, done) => { + const mnemonics = + recoveryPhrase || daedalus.utils.crypto.generateMnemonic(12); + const recoveryPhraseArray = + typeof mnemonics === 'string' ? mnemonics.split(' ') : mnemonics; + daedalus.api.ada + .restoreByronRandomWallet({ + walletName: name, + recoveryPhrase: recoveryPhraseArray, + spendingPassword: 'Secret1234', + }) + .then(() => + daedalus.stores.wallets + .refreshWalletsData() + .then(() => { + const wallet = daedalus.stores.wallets.getWalletByName(name); - if (!wallet) { - throw new Error(notFoundWalletsErrorMessage); - } + if (!wallet) { + throw new Error(notFoundWalletsErrorMessage); + } - const walletAmount = wallet.amount || new BigNumber(0); + const walletAmount = wallet.amount || new BigNumber(0); - if (transferFunds && walletAmount.isZero()) { - throw new Error(noWalletsErrorMessage); - } + if (transferFunds && walletAmount.isZero()) { + throw new Error(noWalletsErrorMessage); + } - done(); - }).catch(error => done(error))).catch(error => done(error)); - }, walletName, recoveryPhrase, transferFunds, noWalletsErrorMessage); + done(); + }) + .catch((error) => done(error)) + ) + .catch((error) => done(error)); + }, + walletName, + recoveryPhrase, + transferFunds, + noWalletsErrorMessage + ); }; -export const fillOutWalletSendForm = async function (values: Record) { +export const fillOutWalletSendForm = async function ( + values: Record +) { const formSelector = '.WalletSendForm_component'; - await this.waitAndSetValue(`${formSelector} .receiver .SimpleInput_input`, values.address); - await this.waitAndSetValue(`${formSelector} .amount .SimpleInput_input`, values.amount); + await this.waitAndSetValue( + `${formSelector} .receiver .SimpleInput_input`, + values.address + ); + await this.waitAndSetValue( + `${formSelector} .amount .SimpleInput_input`, + values.amount + ); if (values.spendingPassword) { - await this.waitAndSetValue(`${formSelector} .spendingPassword .SimpleInput_input`, values.spendingPassword); + await this.waitAndSetValue( + `${formSelector} .spendingPassword .SimpleInput_input`, + values.spendingPassword + ); } this.context.walletsendFormValues = values; }; export const getNameOfActiveWalletInSidebar = async function () { - return this.waitAndGetText('.SidebarWalletMenuItem_active .SidebarWalletMenuItem_title'); + return this.waitAndGetText( + '.SidebarWalletMenuItem_active .SidebarWalletMenuItem_title' + ); }; export const getWalletByName = async function (walletName: string) { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const wallet = await this.client.execute(walletName => daedalus.stores.wallets.getWalletByName(walletName), walletName); + const wallet = await this.client.execute( + (walletName) => daedalus.stores.wallets.getWalletByName(walletName), + walletName + ); return wallet.value; }; @@ -119,8 +176,7 @@ export const getWalletByName = async function (walletName: string) { */ export const getFixedAmountByName = async function (walletName: string) { await this.client.waitUntil(async () => { - const isRestoring = await this.client.execute(walletName => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + const isRestoring = await this.client.execute((walletName) => { const wallet = daedalus.stores.wallets.getWalletByName(walletName); if (!wallet) { @@ -131,8 +187,7 @@ export const getFixedAmountByName = async function (walletName: string) { }, walletName); return !isRestoring.value; }); - const walletAmount = await this.client.execute(walletName => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + const walletAmount = await this.client.execute((walletName) => { const wallet = daedalus.stores.wallets.getWalletByName(walletName); if (!wallet) { @@ -144,49 +199,54 @@ export const getFixedAmountByName = async function (walletName: string) { }, walletName); return walletAmount.value; }; -export const importWalletHelpers = { - // @ts-ignore ts-migrate(2741) FIXME: Property 'isHidden' is missing in type '{}' but re... Remove this comment to see the full error message - waitForDialog: (client: Record, { - isHidden - }: { - isHidden: boolean; - } = {}) => client.waitForVisible(IMPORT_WALLET_DIALOG, null, isHidden), - // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'Record' is not assi... Remove this comment to see the full error message - clickImport: (client: Record) => waitAndClick(client, `${IMPORT_WALLET_DIALOG} .primary`), - expectError: (client: Record, { - error +export const importWalletWithFunds = async ( + client: Record, + { + keyFilePath, + password, }: { - error: string; - }) => expectTextInSelector(client, { - selector: `${IMPORT_WALLET_DIALOG}_error`, - text: error - }) -}; -export const importWalletWithFunds = async (client: Record, { - keyFilePath, - password -}: { - keyFilePath: string; - password: string | null | undefined; -}) => client.executeAsync((filePath, spendingPassword, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.importWalletFromKey({ - filePath, - spendingPassword - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - }).then(() => daedalus.stores.wallets.refreshWalletsData().then(done).catch(error => done(error))).catch(error => done(error)); -}, keyFilePath, password); -export const isActiveWalletBeingRestored = async (client: Record) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const result = await client.execute(expectedSyncTag => daedalus.stores.wallets.active === expectedSyncTag, WalletSyncStateStatuses.RESTORING); + keyFilePath: string; + password: string | null | undefined; + } +) => + client.executeAsync( + (filePath, spendingPassword, done) => { + daedalus.api.ada + .importWalletFromKey({ + filePath, + spendingPassword, + }) + .then(() => + daedalus.stores.wallets + .refreshWalletsData() + .then(done) + .catch((error) => done(error)) + ) + .catch((error) => done(error)); + }, + keyFilePath, + password + ); +export const isActiveWalletBeingRestored = async ( + client: Record +) => { + const result = await client.execute( + (expectedSyncTag) => daedalus.stores.wallets.active === expectedSyncTag, + WalletSyncStateStatuses.RESTORING + ); return result.value ? result.value.syncState.tag : false; }; -export const waitUntilWalletIsLoaded = async function (walletName: string): Promise { +export const waitUntilWalletIsLoaded = async function ( + walletName: string +): Promise { let wallet = null; + // eslint-disable-next-line @typescript-eslint/no-this-alias const context = this; await context.client.waitUntil(async () => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const result = await context.client.execute(name => daedalus.stores.wallets.getWalletByName(name), walletName); + const result = await context.client.execute( + (name) => daedalus.stores.wallets.getWalletByName(name), + walletName + ); if (result.value) { wallet = result.value; @@ -198,20 +258,28 @@ export const waitUntilWalletIsLoaded = async function (walletName: string): Prom return wallet; }; export const waitUntilWalletNamesEqual = function (walletName: string) { + // eslint-disable-next-line @typescript-eslint/no-this-alias const context = this; return context.client.waitUntil(async () => { - const currentWalletName = await getNameOfActiveWalletInSidebar.call(context); + const currentWalletName = await getNameOfActiveWalletInSidebar.call( + context + ); return currentWalletName === walletName; }); }; export const expectActiveWallet = async function (walletName: string) { const displayedWalletName = await getNameOfActiveWalletInSidebar.call(this); - expect(displayedWalletName.toLowerCase().trim()).to.equal(walletName.toLowerCase().trim()); + expect(displayedWalletName.toLowerCase().trim()).to.equal( + walletName.toLowerCase().trim() + ); }; -export const createWallets = async function (wallets: Array, options: { - sequentially?: boolean; - isLegacy?: boolean; -} = {}) { +export const createWallets = async function ( + wallets: Array, + options: { + sequentially?: boolean; + isLegacy?: boolean; + } = {} +) { if (options.sequentially === true) { await createWalletsSequentially.call(this, wallets); } else { @@ -222,58 +290,82 @@ export const createWallets = async function (wallets: Array, options: { const createWalletsSequentially = async function (wallets: Array) { for (const walletData of wallets) { await this.client.executeAsync((wallet, done) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. const mnemonic = daedalus.utils.crypto.generateMnemonic(24); const walletDetails = { name: wallet.name, mnemonic, - spendingPassword: wallet.password || 'Secret1234' + spendingPassword: wallet.password || 'Secret1234', }; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.createWallet(walletDetails).then(() => daedalus.stores.wallets.walletsRequest.execute().then(storeWallets => daedalus.stores.wallets.refreshWalletsData().then(() => done(storeWallets)).catch(error => done(error))).catch(error => done(error))).catch(error => done(error.stack)); + daedalus.api.ada + .createWallet(walletDetails) + .then(() => + daedalus.stores.wallets.walletsRequest + .execute() + .then((storeWallets) => + daedalus.stores.wallets + .refreshWalletsData() + .then(() => done(storeWallets)) + .catch((error) => done(error)) + ) + .catch((error) => done(error)) + ) + .catch((error) => done(error.stack)); }, walletData); await waitUntilWalletIsLoaded.call(this, walletData.name); } }; const createWalletsAsync = async function (table, isLegacy?: boolean) { - const result = await this.client.executeAsync((wallets, isLegacyWallet, done) => { - const mnemonics = {}; - const { - restoreByronRandomWallet, - createWallet - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.api.ada; - const mnemonicsLength = isLegacyWallet ? 12 : 24; - window.Promise.all(wallets.map(wallet => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const mnemonic = daedalus.utils.crypto.generateMnemonic(mnemonicsLength); - const recoveryPhrase = !isLegacyWallet ? mnemonic : mnemonic.split(' '); - mnemonics[wallet.name] = mnemonic.split(' '); - const walletDetails = { - name: wallet.name, - walletName: wallet.name, - mnemonic, - recoveryPhrase, - spendingPassword: wallet.password || 'Secret1234' - }; + const result = await this.client.executeAsync( + (wallets, isLegacyWallet, done) => { + const mnemonics = {}; + const { restoreByronRandomWallet, createWallet } = daedalus.api.ada; + const mnemonicsLength = isLegacyWallet ? 12 : 24; + window.Promise.all( + wallets.map((wallet) => { + const mnemonic = daedalus.utils.crypto.generateMnemonic( + mnemonicsLength + ); + const recoveryPhrase = !isLegacyWallet + ? mnemonic + : mnemonic.split(' '); + mnemonics[wallet.name] = mnemonic.split(' '); + const walletDetails = { + name: wallet.name, + walletName: wallet.name, + mnemonic, + recoveryPhrase, + spendingPassword: wallet.password || 'Secret1234', + }; - if (!isLegacyWallet) { - return createWallet(walletDetails); - } + if (!isLegacyWallet) { + return createWallet(walletDetails); + } - return restoreByronRandomWallet({ - name: wallet.name, - walletName: wallet.name, - mnemonic, - recoveryPhrase, - spendingPassword: wallet.password || 'Secret1234' - }); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - })).then(() => daedalus.stores.wallets.refreshWalletsData().then(() => done({ - mnemonics - })).catch(error => done(error))).catch(error => done(error)); - }, table, isLegacy); + return restoreByronRandomWallet({ + name: wallet.name, + walletName: wallet.name, + mnemonic, + recoveryPhrase, + spendingPassword: wallet.password || 'Secret1234', + }); + }) + ) + .then(() => + daedalus.stores.wallets + .refreshWalletsData() + .then(() => + done({ + mnemonics, + }) + ) + .catch((error) => done(error)) + ) + .catch((error) => done(error)); + }, + table, + isLegacy + ); this.mnemonics = Object.assign({}, result.value.mnemonics, this.mnemonics); }; @@ -282,6 +374,7 @@ export const getCurrentAppRoute = async function () { return url.substring(url.indexOf('#/') + 1); // return without the hash }; export const waitUntilUrlEquals = function (expectedUrl: string) { + // eslint-disable-next-line @typescript-eslint/no-this-alias const context = this; return context.client.waitUntil(async () => { const url = await getCurrentAppRoute.call(context); @@ -289,106 +382,30 @@ export const waitUntilUrlEquals = function (expectedUrl: string) { }); }; export const navigateTo = function (requestedRoute: string) { - return this.client.execute(route => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. + return this.client.execute((route) => { daedalus.actions.router.goToRoute.trigger({ - route + route, }); }, requestedRoute); }; -export const sidebar = { - activateCategory: async (client: Record, { - category - }: { - category: string; - }) => { - await client.execute(cat => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.sidebar.activateSidebarCategory.trigger({ - category: cat, - showSubMenu: true - }); - }, `/${category}`); - return client.waitForVisible(`.SidebarCategory_active.${category}`); - }, - // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'Record' is not assi... Remove this comment to see the full error message - clickAddWalletButton: (client: Record) => waitAndClick(client, '.SidebarWalletsMenu_addWalletButton') -}; export const addWalletPage = { - waitForVisible: (client: Record, { - isHidden - }: { - isHidden?: boolean; - } = {}) => client.waitForVisible(ADD_WALLET, null, isHidden), - // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'Record' is not assi... Remove this comment to see the full error message - clickImportButton: (client: Record) => waitAndClick(client, `${ADD_WALLET} ${IMPORT_WALLET_BUTTON}`) + waitForVisible: ( + client: Record, + { + isHidden, + }: { + isHidden?: boolean; + } = {} + ) => client.waitForVisible(ADD_WALLET, null, isHidden), }; -export default { - waitForDialog: (client: Record, { - isHidden +export const waitForActiveRestoreNotification = ( + client: Record, + { + isHidden, }: { isHidden?: boolean; - } = {}) => client.waitForVisible(IMPORT_WALLET_DIALOG, null, isHidden), - selectFile: (client: Record, { - filePath - }: { - filePath: string; - }) => client.chooseFile(`${IMPORT_WALLET_DIALOG} .FileUploadWidget_dropZone input`, filePath), - // @ts-ignore ts-migrate(2345) FIXME: Argument of type 'Record' is not assi... Remove this comment to see the full error message - clickImport: (client: Record) => waitAndClick(client, `${IMPORT_WALLET_DIALOG} .primary`), - expectError: (client: Record, { - error - }: { - error: string; - }) => expectTextInSelector(client, { - selector: `${IMPORT_WALLET_DIALOG}_error`, - text: error - }) -}; -export const i18n = { - formatMessage: async (client: Record, { - id, - values - }: { - id: string; - values?: Record; - }) => { - const translation = await client.execute((translationId, translationValues) => { - const IntlProvider = require('react-intl').IntlProvider; // eslint-disable-line - - - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const locale = daedalus.stores.profile.currentLocale; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const messages = daedalus.translations; - const intlProvider = new IntlProvider({ - locale, - messages: messages[locale] - }, {}); - return intlProvider.getChildContext().intl.formatMessage({ - id: translationId - }, translationValues); - }, id, values || {}); - return translation.value; - }, - // @ts-ignore ts-migrate(2741) FIXME: Property 'language' is missing in type '{}' but re... Remove this comment to see the full error message - setActiveLanguage: async (client: Record, { - language - }: { - language: string; - } = {}) => client.execute(value => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.actions.profile.updateUserLocalSetting.trigger({ - param: 'locale', - value - }); - }, language || DEFAULT_LANGUAGE) -}; -export const waitForActiveRestoreNotification = (client: Record, { - isHidden -}: { - isHidden?: boolean; -} = {}) => client.waitForVisible('.ActiveRestoreNotification', null, isHidden); + } = {} +) => client.waitForVisible('.ActiveRestoreNotification', null, isHidden); export const getWalletType = async function (_type = '') { let type = _type ? _type.trim() : null; if (type === 'byron') return 'byron'; @@ -399,42 +416,44 @@ export const getWalletType = async function (_type = '') { return type; }; -export const restoreWallet = async function (walletName: string, kind: string, subkind: string, recovery_phrase: string) { - await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. +export const restoreWallet = async function ( + walletName: string, + kind: string, + subkind: string, + recovery_phrase: string +) { + await this.client.executeAsync((done) => { daedalus.stores.wallets._pausePolling().then(done); }); const recoveryPhrase = recovery_phrase.split(' '); - await this.client.executeAsync((walletName, kind, subkind, recoveryPhrase, done) => { - const { - restoreWalletSetKind, - restoreWalletSetMnemonics, - restoreWalletSetConfig - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.actions.wallets; - restoreWalletSetKind.trigger({ - kind - }); - restoreWalletSetKind.trigger({ - param: kind, - kind: subkind - }); - const { + await this.client.executeAsync( + (walletName, kind, subkind, recoveryPhrase, done) => { + const { restoreWalletSetKind } = daedalus.actions.wallets; + restoreWalletSetKind.trigger({ + kind, + }); + restoreWalletSetKind.trigger({ + param: kind, + kind: subkind, + }); + const { restoreRequest } = daedalus.stores.wallets; + const spendingPassword = 'Secret1234'; + const data = { + recoveryPhrase, + walletName, + spendingPassword, + }; restoreRequest - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.wallets; - const spendingPassword = 'Secret1234'; - const data = { - recoveryPhrase, - walletName, - spendingPassword - }; - restoreRequest.execute(data).then(() => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.wallets._resumePolling(); - - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.wallets.refreshWalletsData().then(done); - }).catch(error => done(error)); - }, walletName, kind, subkind, recoveryPhrase); -}; \ No newline at end of file + .execute(data) + .then(() => { + daedalus.stores.wallets._resumePolling(); + daedalus.stores.wallets.refreshWalletsData().then(done); + }) + .catch((error) => done(error)); + }, + walletName, + kind, + subkind, + recoveryPhrase + ); +}; diff --git a/tests/wallets/e2e/steps/import-and-migrate-wallets.ts b/tests/wallets/e2e/steps/import-and-migrate-wallets.ts index 92d5455754..50d5545ed2 100644 --- a/tests/wallets/e2e/steps/import-and-migrate-wallets.ts +++ b/tests/wallets/e2e/steps/import-and-migrate-wallets.ts @@ -1,90 +1,140 @@ -import fs from "fs"; -import path from "path"; -import { When, Then, Given } from "cucumber"; -import { expect } from "chai"; -import { difference } from "lodash"; -import { MAX_ADA_WALLETS_COUNT } from "../../../../source/renderer/app/config/numbersConfig"; +import fs from 'fs'; +import path from 'path'; +import { When, Then, Given } from 'cucumber'; +import { expect } from 'chai'; +import { difference } from 'lodash'; +import { MAX_ADA_WALLETS_COUNT } from '../../../../source/renderer/app/config/numbersConfig'; const IMPORT_WALLETS_OVERLAY_SELECTOR = '.WalletImportFileDialog_overlay'; -const IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR = '.WalletImportFileDialog_stateFolderLabel'; -const STATE_INPUT_FOLDER_SELECTOR = '.WalletImportFileDialog_stateFolderInput input'; +const IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR = + '.WalletImportFileDialog_stateFolderLabel'; +const STATE_INPUT_FOLDER_SELECTOR = + '.WalletImportFileDialog_stateFolderInput input'; const IMPORT_WALLETS_BUTTON_SELECTOR = '.WalletImportFileDialog_actionButton'; const WALLET_IMPORT_BIG_BUTTON_SELECTOR = '.WalletAdd .importWalletButton'; const NO_WALLETS_SELECTOR = '.WalletImportFileDialog_noWalletError'; -const WALLET_SELECT_IMPORT_DIALOG_SELECTOR = '.WalletSelectImportDialog_component'; +const WALLET_SELECT_IMPORT_DIALOG_SELECTOR = + '.WalletSelectImportDialog_component'; const NAMED_WALLET_INPUTS_SELECTOR = '.namedWalletsRow .SimpleInput_input'; -const IMPORT_CHOICE_SELECTOR = '.RadioSet_radiosContainer.RadioSet_verticallyAligned .SimpleRadio_label'; +const IMPORT_CHOICE_SELECTOR = + '.RadioSet_radiosContainer.RadioSet_verticallyAligned .SimpleRadio_label'; const UNNAMED_WALLET_INPUTS_SELECTOR = '.unnamedWalletsRow .SimpleInput_input'; -const WALLET_CHECKBOXES_SELECTOR = '.WalletSelectImportDialog_walletsRow .SimpleCheckbox_check'; +const WALLET_CHECKBOXES_SELECTOR = + '.WalletSelectImportDialog_walletsRow .SimpleCheckbox_check'; const IS_CHECKBOX_CHECKDE_SELECTOR = 'SimpleCheckbox_checked'; const IS_CHECKBOX_DISABLED_SELECTOR = 'SimpleCheckbox_disabled'; -const WALLET_SELECT_IMPORT_ACTION_BUTTON_SELECTOR = '.WalletSelectImportDialog_actionButton'; -const WALLET_SELECT_IMPORT_ACTION_BUTTON_SPINNER_SELECTOR = '.WalletSelectImportDialog_actionButton .LoadingSpinner_component'; -const WALLET_SELECT_IMPORT_ACTION_BUTTON_DISABLED_SELECTOR = '.WalletSelectImportDialog_actionButton.WalletSelectImportDialog_disabled'; -const STATUS_ICON_CHECKMARK_SELECTOR = '.WalletSelectImportDialog_walletsStatusIconCheckmark'; +const WALLET_SELECT_IMPORT_ACTION_BUTTON_SELECTOR = + '.WalletSelectImportDialog_actionButton'; +const WALLET_SELECT_IMPORT_ACTION_BUTTON_SPINNER_SELECTOR = + '.WalletSelectImportDialog_actionButton .LoadingSpinner_component'; +const WALLET_SELECT_IMPORT_ACTION_BUTTON_DISABLED_SELECTOR = + '.WalletSelectImportDialog_actionButton.WalletSelectImportDialog_disabled'; +const STATUS_ICON_CHECKMARK_SELECTOR = + '.WalletSelectImportDialog_walletsStatusIconCheckmark'; const WALLET_STATUS_LABEL_SELECTOR = '.WalletSelectImportDialog_walletsStatus'; -const WALLET_SELECT_IMPORT_DIALOG_CLOSE_BUTTON_SELECTOR = '.WalletSelectImportDialog_closeButton'; -const WALLET_SELECT_IMPORT_DIALOG_CLOSE_LINK_SELECTOR = '.WalletSelectImportDialog_closeWindowLink'; +const WALLET_SELECT_IMPORT_DIALOG_CLOSE_BUTTON_SELECTOR = + '.WalletSelectImportDialog_closeButton'; +const WALLET_SELECT_IMPORT_DIALOG_CLOSE_LINK_SELECTOR = + '.WalletSelectImportDialog_closeWindowLink'; const SIDEBAR_WALLETS_TITLE_SELECTOR = '.SidebarWalletMenuItem_title'; const NAMED_WALLET_ROW_SELECTOR = '.namedWalletsRow'; -const NAMED_WALLET_CHECKBOXES_SELECTOR = '.namedWalletsRow .SimpleCheckbox_root'; -const TOOLTIP_SELECTOR = '.WalletSelectImportDialog_maxWalletsReachedTooltip .SimpleBubble_root .SimpleBubble_bubble'; +const NAMED_WALLET_CHECKBOXES_SELECTOR = + '.namedWalletsRow .SimpleCheckbox_root'; +const TOOLTIP_SELECTOR = + '.WalletSelectImportDialog_maxWalletsReachedTooltip .SimpleBubble_root .SimpleBubble_bubble'; Given(/^I have wallet migration enabled/, async function () { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - await this.client.execute(() => daedalus.stores.walletMigration._enableTestWalletMigration()); + await this.client.execute(() => + daedalus.stores.walletMigration._enableTestWalletMigration() + ); }); Given(/^I set (wrong )?import path$/, async function (isWrong) { - const importDir = isWrong ? '../documents/import-files-wrong' : '../documents/import-files'; + const importDir = isWrong + ? '../documents/import-files-wrong' + : '../documents/import-files'; const importPath = path.resolve(__dirname, importDir); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - await this.client.execute(path => daedalus.stores.walletMigration._setFakedImportPath(path), importPath); + await this.client.execute( + (path) => daedalus.stores.walletMigration._setFakedImportPath(path), + importPath + ); }); Given(/^I set (wrong )?import secret key path$/, async function (isWrong) { - const importDir = isWrong ? '../documents/import-files/Secrets-1.0/wrong-secret.key' : '../documents/import-files/Secrets-1.0/secret.key'; + const importDir = isWrong + ? '../documents/import-files/Secrets-1.0/wrong-secret.key' + : '../documents/import-files/Secrets-1.0/secret.key'; const importPath = path.resolve(__dirname, importDir); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - await this.client.execute(path => daedalus.stores.walletMigration._setFakedImportPath(path), importPath); -}); -When(/^I click on the import wallet button on the add wallet page/, async function () { - this.waitAndClick(WALLET_IMPORT_BIG_BUTTON_SELECTOR); + await this.client.execute( + (path) => daedalus.stores.walletMigration._setFakedImportPath(path), + importPath + ); }); +When( + /^I click on the import wallet button on the add wallet page/, + async function () { + this.waitAndClick(WALLET_IMPORT_BIG_BUTTON_SELECTOR); + } +); When(/^I see the import wallets overlay$/, function () { - return this.client.waitForVisible(IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR); + return this.client.waitForVisible( + IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR + ); }); When(/^I should see import selection label:$/, async function (dataTable) { - const selectedImportOption = await this.waitAndGetText(IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR); + const selectedImportOption = await this.waitAndGetText( + IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR + ); const labelId = dataTable.hashes()[0].label; const expectedLabel = await this.intl(labelId); expect(selectedImportOption).to.equal(expectedLabel); }); -When(/^I should see import file selection error message:$/, async function (dataTable) { +When(/^I should see import file selection error message:$/, async function ( + dataTable +) { const errorOnScreen = await this.waitAndGetText(NO_WALLETS_SELECTOR); const errorId = dataTable.hashes()[0].message; const expectedError = await this.intl(errorId); expect(errorOnScreen).to.equal(expectedError); }); -When(/^I should see Daedalus State directory as predefined import path$/, async function () { - await this.client.waitForVisible(STATE_INPUT_FOLDER_SELECTOR); - const selectedDirectory = await this.client.getValue(STATE_INPUT_FOLDER_SELECTOR); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const predefinedStateDirectory = await this.client.execute(() => daedalus.stores.walletMigration.defaultExportSourcePath); - expect(selectedDirectory).to.equal(predefinedStateDirectory.value); -}); +When( + /^I should see Daedalus State directory as predefined import path$/, + async function () { + await this.client.waitForVisible(STATE_INPUT_FOLDER_SELECTOR); + const selectedDirectory = await this.client.getValue( + STATE_INPUT_FOLDER_SELECTOR + ); + const predefinedStateDirectory = await this.client.execute( + () => daedalus.stores.walletMigration.defaultExportSourcePath + ); + expect(selectedDirectory).to.equal(predefinedStateDirectory.value); + } +); When(/^I click "Import wallets" button$/, function () { this.waitAndClick(IMPORT_WALLETS_BUTTON_SELECTOR); }); -When(/^I click "Import selected wallets" button and wait until operation is finished$/, async function () { - await this.waitAndClick(WALLET_SELECT_IMPORT_ACTION_BUTTON_SELECTOR); - await this.client.waitForExist(WALLET_SELECT_IMPORT_ACTION_BUTTON_SPINNER_SELECTOR, 10000, true); -}); +When( + /^I click "Import selected wallets" button and wait until operation is finished$/, + async function () { + await this.waitAndClick(WALLET_SELECT_IMPORT_ACTION_BUTTON_SELECTOR); + await this.client.waitForExist( + WALLET_SELECT_IMPORT_ACTION_BUTTON_SPINNER_SELECTOR, + 10000, + true + ); + } +); When(/^I should see wallet select import dialog$/, async function () { await this.client.waitForVisible(WALLET_SELECT_IMPORT_DIALOG_SELECTOR); }); When(/^I should not see wallet select import dialog$/, async function () { - return this.client.waitForVisible(WALLET_SELECT_IMPORT_DIALOG_SELECTOR, null, true); + return this.client.waitForVisible( + WALLET_SELECT_IMPORT_DIALOG_SELECTOR, + null, + true + ); }); When(/^I edit first wallet name$/, async function () { - const namedWalletElements = await this.client.elements(NAMED_WALLET_INPUTS_SELECTOR); + const namedWalletElements = await this.client.elements( + NAMED_WALLET_INPUTS_SELECTOR + ); const firstNamedWallet = namedWalletElements.value[0].ELEMENT; await this.client.elementIdClick(firstNamedWallet); this.client.elementIdValue(firstNamedWallet, ' EDITED'); @@ -96,14 +146,21 @@ When(/^I select import from secret key$/, async function () { }); When(/^I should see wallets properly listed$/, async function () { await this.client.waitForVisible(WALLET_SELECT_IMPORT_DIALOG_SELECTOR); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const exportedWallets = await this.client.execute(() => daedalus.stores.walletMigration.exportedWallets); + const exportedWallets = await this.client.execute( + () => daedalus.stores.walletMigration.exportedWallets + ); this.exportedWallets = exportedWallets.value; - const unnamedWallets = exportedWallets.value.filter(wallet => !wallet.name); - const namedWalletsCount = Math.abs(exportedWallets.value.length - unnamedWallets.length); + const unnamedWallets = exportedWallets.value.filter((wallet) => !wallet.name); + const namedWalletsCount = Math.abs( + exportedWallets.value.length - unnamedWallets.length + ); const unnamedWalletsCount = unnamedWallets.length; - const namedWalletElements = await this.client.elements(NAMED_WALLET_INPUTS_SELECTOR); - const unnamedWalletElements = await this.client.elements(UNNAMED_WALLET_INPUTS_SELECTOR); + const namedWalletElements = await this.client.elements( + NAMED_WALLET_INPUTS_SELECTOR + ); + const unnamedWalletElements = await this.client.elements( + UNNAMED_WALLET_INPUTS_SELECTOR + ); // All named wallets are listed expect(namedWalletsCount).to.equal(namedWalletElements.value.length); // All unnamed wallets are listed @@ -112,32 +169,51 @@ When(/^I should see wallets properly listed$/, async function () { // Named wallet inputs have value for (let i = 0; i < namedWalletElements.value.length; i++) { const namedWalletInputElement = namedWalletElements.value[i].ELEMENT; - const namedWalletInputElementValue = await this.client.elementIdAttribute(namedWalletInputElement, 'value'); + const namedWalletInputElementValue = await this.client.elementIdAttribute( + namedWalletInputElement, + 'value' + ); expect(namedWalletInputElementValue.value).to.not.be.empty; } // Unnamed wallet inputs have NO value for (let i = 0; i < unnamedWalletElements.value.length; i++) { const unnamedWalletInputElement = unnamedWalletElements.value[i].ELEMENT; - const unnamedWalletInputElementValue = await this.client.elementIdAttribute(unnamedWalletInputElement, 'value'); + const unnamedWalletInputElementValue = await this.client.elementIdAttribute( + unnamedWalletInputElement, + 'value' + ); expect(unnamedWalletInputElementValue.value).to.be.empty; } }); -When(/^I should see that all wallets are available for import$/, async function () { - await this.client.waitForVisible(WALLET_SELECT_IMPORT_DIALOG_SELECTOR); - const listedWalletElements = await this.client.elements(WALLET_CHECKBOXES_SELECTOR); +When( + /^I should see that all wallets are available for import$/, + async function () { + await this.client.waitForVisible(WALLET_SELECT_IMPORT_DIALOG_SELECTOR); + const listedWalletElements = await this.client.elements( + WALLET_CHECKBOXES_SELECTOR + ); - for (let i = 0; i < this.exportedWallets.length; i++) { - const listedWalletElement = listedWalletElements.value[i].ELEMENT; - const checkboxClasses = await this.client.elementIdAttribute(listedWalletElement, 'class'); - const isChecked = checkboxClasses.value.indexOf(IS_CHECKBOX_CHECKDE_SELECTOR) >= 0; - expect(isChecked).to.equal(false); // Checkbox presented and not checked + for (let i = 0; i < this.exportedWallets.length; i++) { + const listedWalletElement = listedWalletElements.value[i].ELEMENT; + const checkboxClasses = await this.client.elementIdAttribute( + listedWalletElement, + 'class' + ); + const isChecked = + checkboxClasses.value.indexOf(IS_CHECKBOX_CHECKDE_SELECTOR) >= 0; + expect(isChecked).to.equal(false); // Checkbox presented and not checked + } } -}); -When(/^I select all (named|unnamed) wallets for import$/, async function (_type) { +); +When(/^I select all (named|unnamed) wallets for import$/, async function ( + _type +) { const selector = `.${_type}WalletsRow .SimpleCheckbox_root`; const walletCheckboxes = await this.client.elements(selector); - const selectedNamedWallets = this.exportedWallets.filter(wallet => wallet.hasName); + const selectedNamedWallets = this.exportedWallets.filter( + (wallet) => wallet.hasName + ); for (let i = 0; i < walletCheckboxes.value.length; i++) { const walletCheckbox = walletCheckboxes.value[i].ELEMENT; @@ -145,58 +221,101 @@ When(/^I select all (named|unnamed) wallets for import$/, async function (_type) } const walletNames = []; - const walletInputElements = await this.client.elements(`.${_type}WalletsRow .SimpleInput_input`); + const walletInputElements = await this.client.elements( + `.${_type}WalletsRow .SimpleInput_input` + ); for (let i = 0; i < walletInputElements.value.length; i++) { const walletInputElement = walletInputElements.value[i].ELEMENT; - const walletName = await this.client.elementIdAttribute(walletInputElement, 'value'); + const walletName = await this.client.elementIdAttribute( + walletInputElement, + 'value' + ); walletNames.push(walletName.value); } if (!this.selectedWallets) { this.selectedWallets = walletNames; } else { - walletNames.map(walletName => { + walletNames.map((walletName) => { this.selectedWallets.push(walletName); }); } }); -When('I select wallet with index {int} for import', async function (walletIndex) { - const walletCheckboxes = await this.client.elements(NAMED_WALLET_CHECKBOXES_SELECTOR); +When('I select wallet with index {int} for import', async function ( + walletIndex +) { + const walletCheckboxes = await this.client.elements( + NAMED_WALLET_CHECKBOXES_SELECTOR + ); const walletCheckbox = walletCheckboxes.value[walletIndex].ELEMENT; await this.client.elementIdClick(walletCheckbox); }); -When('I hover import selection checkbox for wallet with index {int}', async function (walletIndex) { - const walletCheckboxes = await this.client.elements(NAMED_WALLET_CHECKBOXES_SELECTOR); - const walletCheckbox = walletCheckboxes.value[walletIndex].ELEMENT; - await this.client.elementIdClick(walletCheckbox); -}); -Then('Import selection checkbox for wallet with index {int} is disabled', async function (walletIndex) { - const walletCheckboxes = await this.client.elements(NAMED_WALLET_CHECKBOXES_SELECTOR); - const walletCheckbox = walletCheckboxes.value[walletIndex].ELEMENT; - const checkboxClasses = await this.client.elementIdAttribute(walletCheckbox, 'class'); - const isDisabled = checkboxClasses.value.indexOf(IS_CHECKBOX_DISABLED_SELECTOR) >= 0; - expect(isDisabled).to.equal(true); // Checkbox presented and disabled -}); -When('I should see maximum wallets reached tooltip for wallet with index {int}', async function (walletIndex) { - const walletRows = await this.client.elements(NAMED_WALLET_ROW_SELECTOR); - const walletRow = walletRows.value[walletIndex].ELEMENT; - const walletTooltip = await this.client.elementIdElement(walletRow, TOOLTIP_SELECTOR); - const tooltipText = await this.client.elementIdText(walletTooltip.value.ELEMENT); - const expectedTooltipText = await this.intl('wallet.select.import.dialog.maxWalletsReachedTooltip', { - maxWalletsCount: MAX_ADA_WALLETS_COUNT - }); - expect(tooltipText.value).to.equal(expectedTooltipText); // Checkbox presented and disabled -}); -When(/^"Import selected wallets" button is (enabled|disabled)$/, async function (state) { - if (state === 'enabled') { - await this.client.waitForEnabled(WALLET_SELECT_IMPORT_ACTION_BUTTON_SELECTOR); - } else { - await this.client.waitForVisible(WALLET_SELECT_IMPORT_ACTION_BUTTON_DISABLED_SELECTOR); +When( + 'I hover import selection checkbox for wallet with index {int}', + async function (walletIndex) { + const walletCheckboxes = await this.client.elements( + NAMED_WALLET_CHECKBOXES_SELECTOR + ); + const walletCheckbox = walletCheckboxes.value[walletIndex].ELEMENT; + await this.client.elementIdClick(walletCheckbox); } -}); +); +Then( + 'Import selection checkbox for wallet with index {int} is disabled', + async function (walletIndex) { + const walletCheckboxes = await this.client.elements( + NAMED_WALLET_CHECKBOXES_SELECTOR + ); + const walletCheckbox = walletCheckboxes.value[walletIndex].ELEMENT; + const checkboxClasses = await this.client.elementIdAttribute( + walletCheckbox, + 'class' + ); + const isDisabled = + checkboxClasses.value.indexOf(IS_CHECKBOX_DISABLED_SELECTOR) >= 0; + expect(isDisabled).to.equal(true); // Checkbox presented and disabled + } +); +When( + 'I should see maximum wallets reached tooltip for wallet with index {int}', + async function (walletIndex) { + const walletRows = await this.client.elements(NAMED_WALLET_ROW_SELECTOR); + const walletRow = walletRows.value[walletIndex].ELEMENT; + const walletTooltip = await this.client.elementIdElement( + walletRow, + TOOLTIP_SELECTOR + ); + const tooltipText = await this.client.elementIdText( + walletTooltip.value.ELEMENT + ); + const expectedTooltipText = await this.intl( + 'wallet.select.import.dialog.maxWalletsReachedTooltip', + { + maxWalletsCount: MAX_ADA_WALLETS_COUNT, + } + ); + expect(tooltipText.value).to.equal(expectedTooltipText); // Checkbox presented and disabled + } +); +When( + /^"Import selected wallets" button is (enabled|disabled)$/, + async function (state) { + if (state === 'enabled') { + await this.client.waitForEnabled( + WALLET_SELECT_IMPORT_ACTION_BUTTON_SELECTOR + ); + } else { + await this.client.waitForVisible( + WALLET_SELECT_IMPORT_ACTION_BUTTON_DISABLED_SELECTOR + ); + } + } +); When(/^I enter random names to all unnamed wallets$/, async function () { - const listedWalletElements = await this.client.elements(UNNAMED_WALLET_INPUTS_SELECTOR); + const listedWalletElements = await this.client.elements( + UNNAMED_WALLET_INPUTS_SELECTOR + ); for (let i = 0; i < listedWalletElements.value.length; i++) { const walletName = `Unnamed Wallet ${i}`; @@ -208,54 +327,89 @@ When(/^I enter random names to all unnamed wallets$/, async function () { // Click outside to apply last entered values await this.waitAndClick('.WalletSelectImportDialog_title'); }); -When(/^I close import wallets dialog by clicking on "([^"]*)" button$/, function (closeAction) { - if (closeAction === 'Close window') { - // Close link at the bottom - this.waitAndClick(WALLET_SELECT_IMPORT_DIALOG_CLOSE_LINK_SELECTOR); - } else { - // Close (X) button in top right corner - this.waitAndClick(WALLET_SELECT_IMPORT_DIALOG_CLOSE_BUTTON_SELECTOR); +When( + /^I close import wallets dialog by clicking on "([^"]*)" button$/, + function (closeAction) { + if (closeAction === 'Close window') { + // Close link at the bottom + this.waitAndClick(WALLET_SELECT_IMPORT_DIALOG_CLOSE_LINK_SELECTOR); + } else { + // Close (X) button in top right corner + this.waitAndClick(WALLET_SELECT_IMPORT_DIALOG_CLOSE_BUTTON_SELECTOR); + } } -}); -Then(/^I should see that all (named|unnamed) wallets are imported$/, async function (state) { - const walletRows = await this.client.elements(`.${state}WalletsRow`); +); +Then( + /^I should see that all (named|unnamed) wallets are imported$/, + async function (state) { + const walletRows = await this.client.elements(`.${state}WalletsRow`); - for (let i = 0; i < walletRows.value.length; i++) { - const walletRow = walletRows.value[i].ELEMENT; - // Check if imported wallet checkeckmark checked - const checkmarkElement = await this.client.elementIdElement(walletRow, STATUS_ICON_CHECKMARK_SELECTOR); - expect(checkmarkElement.value).to.not.be.empty; // Checkmark checked + for (let i = 0; i < walletRows.value.length; i++) { + const walletRow = walletRows.value[i].ELEMENT; + // Check if imported wallet checkeckmark checked + const checkmarkElement = await this.client.elementIdElement( + walletRow, + STATUS_ICON_CHECKMARK_SELECTOR + ); + expect(checkmarkElement.value).to.not.be.empty; // Checkmark checked - // Check if "Wallet imported" label is presented - const statusLabel = await this.client.elementIdElement(walletRow, WALLET_STATUS_LABEL_SELECTOR); - const statusLabelText = await this.client.elementIdText(statusLabel.value.ELEMENT); - const expectedLabel = await this.intl('wallet.select.import.dialog.walletImported'); - expect(statusLabelText.value).to.equal(expectedLabel); // Wallet imported label + // Check if "Wallet imported" label is presented + const statusLabel = await this.client.elementIdElement( + walletRow, + WALLET_STATUS_LABEL_SELECTOR + ); + const statusLabelText = await this.client.elementIdText( + statusLabel.value.ELEMENT + ); + const expectedLabel = await this.intl( + 'wallet.select.import.dialog.walletImported' + ); + expect(statusLabelText.value).to.equal(expectedLabel); // Wallet imported label + } } -}); -Then(/^I should see that all (named|unnamed) already exists$/, async function (state) { +); +Then(/^I should see that all (named|unnamed) already exists$/, async function ( + state +) { const walletRows = await this.client.elements(`.${state}WalletsRow`); for (let i = 0; i < walletRows.value.length; i++) { const walletRow = walletRows.value[i].ELEMENT; // Check if imported wallet checkeckmark checked - const checkmarkElement = await this.client.elementIdElement(walletRow, STATUS_ICON_CHECKMARK_SELECTOR); + const checkmarkElement = await this.client.elementIdElement( + walletRow, + STATUS_ICON_CHECKMARK_SELECTOR + ); expect(checkmarkElement.value).to.not.be.empty; // Checkmark checked // Check if "Wallet already exist" label is presented - const statusLabel = await this.client.elementIdElement(walletRow, WALLET_STATUS_LABEL_SELECTOR); - const statusLabelText = await this.client.elementIdText(statusLabel.value.ELEMENT); - const expectedLabel = await this.intl('wallet.select.import.dialog.walletExists'); + const statusLabel = await this.client.elementIdElement( + walletRow, + WALLET_STATUS_LABEL_SELECTOR + ); + const statusLabelText = await this.client.elementIdText( + statusLabel.value.ELEMENT + ); + const expectedLabel = await this.intl( + 'wallet.select.import.dialog.walletExists' + ); expect(statusLabelText.value).to.equal(expectedLabel); // Wallet imported label } }); Then(/^I should not see the import wallet dialog anymore$/, function () { - return this.client.waitForVisible(IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR, null, true); + return this.client.waitForVisible( + IMPORT_WALLETS_OVERLAY_IMPORT_CHOICE_LABEL_SELECTOR, + null, + true + ); }); Then(/^I should see all imported wallets in left sidebar$/, async function () { - const expectedWallets = await this.waitAndGetText(SIDEBAR_WALLETS_TITLE_SELECTOR); + const expectedWallets = await this.waitAndGetText( + SIDEBAR_WALLETS_TITLE_SELECTOR + ); await this.client.waitUntil(async () => { - const walletsMatch = difference(expectedWallets, this.selectedWallets).length === 0; + const walletsMatch = + difference(expectedWallets, this.selectedWallets).length === 0; return walletsMatch; }); -}); \ No newline at end of file +}); diff --git a/tests/wallets/e2e/steps/recovery-phrase-verification-steps.ts b/tests/wallets/e2e/steps/recovery-phrase-verification-steps.ts index a24a787353..a9baf986c3 100644 --- a/tests/wallets/e2e/steps/recovery-phrase-verification-steps.ts +++ b/tests/wallets/e2e/steps/recovery-phrase-verification-steps.ts @@ -1,6 +1,7 @@ -import { Given, When, Then } from "cucumber"; +import { Given, When, Then } from 'cucumber'; -const SETTINGS_PAGE_STATUS_SELECTOR = '.WalletRecoveryPhraseVerificationWidget_status'; +const SETTINGS_PAGE_STATUS_SELECTOR = + '.WalletRecoveryPhraseVerificationWidget_status'; const SETTINGS_PAGE_BUTTON_SELECTOR = `${SETTINGS_PAGE_STATUS_SELECTOR} .WalletRecoveryPhraseVerificationWidget_statusButton`; const DIALOG_SELECTOR = '.Dialog_dialogWrapper'; const DIALOG_CHECKBOX_SELECTOR = `${DIALOG_SELECTOR} .SimpleCheckbox_check`; @@ -9,33 +10,34 @@ const DIALOG_SUCCESSFUL_SELECTOR = '.verification-successful'; const DIALOG_UNSUCCESSFUL_SELECTOR = '.verification-unsuccessful'; const DIALOG_VERIFY_AGAIN_BUTTON_SELECTOR = `${DIALOG_SELECTOR} button.attention`; const DIALOG_CLOSE_BUTTON_SELECTOR = `${DIALOG_SELECTOR} .DialogCloseButton_component`; -const DIALOG_VERIFY_BUTTON_SELECTOR = '.WalletRecoveryPhraseStepDialogs_dialog button.primary'; -Given('the last recovery phrase veryfication was done {int} days ago', async function (daysAgo) { - await this.client.executeAsync((days, done) => { - const { - id: walletId - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.stores.wallets.active; - const date = new Date(); - date.setDate(date.getDate() - days); - const recoveryPhraseVerificationDate = date.toISOString(); - const { - setWalletLocalData - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - } = daedalus.actions.walletsLocal; - setWalletLocalData.once(done); - setWalletLocalData.trigger({ - walletId, - updatedWalletData: { - recoveryPhraseVerificationDate - } - }); - }, daysAgo); -}); -Then('I should see a {string} recovery phrase veryfication feature', async function (status) { - const statusClassname = `${SETTINGS_PAGE_STATUS_SELECTOR}${status}`; - return this.client.waitForVisible(statusClassname); -}); +const DIALOG_VERIFY_BUTTON_SELECTOR = + '.WalletRecoveryPhraseStepDialogs_dialog button.primary'; +Given( + 'the last recovery phrase veryfication was done {int} days ago', + async function (daysAgo) { + await this.client.executeAsync((days, done) => { + const { id: walletId } = daedalus.stores.wallets.active; + const date = new Date(); + date.setDate(date.getDate() - days); + const recoveryPhraseVerificationDate = date.toISOString(); + const { setWalletLocalData } = daedalus.actions.walletsLocal; + setWalletLocalData.once(done); + setWalletLocalData.trigger({ + walletId, + updatedWalletData: { + recoveryPhraseVerificationDate, + }, + }); + }, daysAgo); + } +); +Then( + 'I should see a {string} recovery phrase veryfication feature', + async function (status) { + const statusClassname = `${SETTINGS_PAGE_STATUS_SELECTOR}${status}`; + return this.client.waitForVisible(statusClassname); + } +); When(/^I click the recovery phrase veryfication button$/, function () { return this.waitAndClick(SETTINGS_PAGE_BUTTON_SELECTOR); }); @@ -43,30 +45,45 @@ When(/^I click the checkbox and Continue button$/, function () { this.waitAndClick(DIALOG_CHECKBOX_SELECTOR); return this.waitAndClick(DIALOG_CONTINUE_BUTTON_SELECTOR); }); -When(/^I enter the recovery phrase mnemonics (correctly|incorrectly)$/, async function (_type) { - const recoveryPhrase = await this.client.execute((type, mnemonics) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const activeWallet = daedalus.stores.wallets.active; - const correctMnemonics = mnemonics[activeWallet.name]; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const incorrectMnemonics = daedalus.utils.crypto.generateMnemonic(correctMnemonics.length).split(' '); - return type === 'correctly' ? correctMnemonics : incorrectMnemonics; - }, _type, this.mnemonics); +When( + /^I enter the recovery phrase mnemonics (correctly|incorrectly)$/, + async function (_type) { + const recoveryPhrase = await this.client.execute( + (type, mnemonics) => { + const activeWallet = daedalus.stores.wallets.active; + const correctMnemonics = mnemonics[activeWallet.name]; + const incorrectMnemonics = daedalus.utils.crypto + .generateMnemonic(correctMnemonics.length) + .split(' '); + return type === 'correctly' ? correctMnemonics : incorrectMnemonics; + }, + _type, + this.mnemonics + ); - for (let i = 0; i < recoveryPhrase.value.length; i++) { - const word = recoveryPhrase.value[i]; - await this.client.setValue('.AutocompleteOverrides_autocompleteWrapper input', word); - await this.client.waitForVisible(`//li[text()="${word}"]`); - await this.waitAndClick(`//li[text()="${word}"]`); - await this.client.waitForVisible(`//span[text()="${word}"]`); + for (let i = 0; i < recoveryPhrase.value.length; i++) { + const word = recoveryPhrase.value[i]; + await this.client.setValue( + '.AutocompleteOverrides_autocompleteWrapper input', + word + ); + await this.client.waitForVisible(`//li[text()="${word}"]`); + await this.waitAndClick(`//li[text()="${word}"]`); + await this.client.waitForVisible(`//span[text()="${word}"]`); + } } -}); -When(/^I enter the "([^"]*)" recovery phrase mnemonics$/, async function (_recoveryPhrase) { +); +When(/^I enter the "([^"]*)" recovery phrase mnemonics$/, async function ( + _recoveryPhrase +) { const recoveryPhrase = _recoveryPhrase.split(' '); for (let i = 0; i < recoveryPhrase.length; i++) { const word = recoveryPhrase[i]; - await this.client.setValue('.AutocompleteOverrides_autocompleteWrapper input', word); + await this.client.setValue( + '.AutocompleteOverrides_autocompleteWrapper input', + word + ); await this.client.waitForVisible(`//li[text()="${word}"]`); await this.waitAndClick(`//li[text()="${word}"]`); await this.client.waitForVisible(`//span[text()="${word}"]`); @@ -90,4 +107,4 @@ When(/^I click the Verify again button$/, async function () { }); When(/^I click the close button$/, async function () { return this.waitAndClick(DIALOG_CLOSE_BUTTON_SELECTOR); -}); \ No newline at end of file +}); diff --git a/tests/wallets/e2e/steps/restore-wallet.ts b/tests/wallets/e2e/steps/restore-wallet.ts index bb55c69a36..a40a8e1336 100644 --- a/tests/wallets/e2e/steps/restore-wallet.ts +++ b/tests/wallets/e2e/steps/restore-wallet.ts @@ -1,38 +1,66 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { isActiveWalletBeingRestored, waitForActiveRestoreNotification, getWalletByName } from "./helpers"; -import { waitUntilTextInSelector, scrollIntoView } from "../../../common/e2e/steps/helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { + isActiveWalletBeingRestored, + waitForActiveRestoreNotification, + getWalletByName, +} from './helpers'; +import { + waitUntilTextInSelector, + scrollIntoView, +} from '../../../common/e2e/steps/helpers'; Given(/^I see the restore wallet dialog$/, function () { return this.client.waitForVisible('.WalletRestoreDialog_component'); }); -When(/^I click on the restore wallet button on the add wallet page$/, function () { - return this.waitAndClick('.WalletAdd .restoreWalletButton'); -}); -When(/^I enter wallet name "([^"]*)" in restore wallet dialog$/, async function (walletName) { - return this.client.setValue('.ConfigurationDialog_input.walletName input', walletName); -}); -When(/^I clear the recovery phrase in restore wallet dialog$/, async function () { - const words = await this.client.elements('.SimpleAutocomplete_selectedWordRemoveButton'); +When( + /^I click on the restore wallet button on the add wallet page$/, + function () { + return this.waitAndClick('.WalletAdd .restoreWalletButton'); + } +); +When( + /^I enter wallet name "([^"]*)" in restore wallet dialog$/, + async function (walletName) { + return this.client.setValue( + '.ConfigurationDialog_input.walletName input', + walletName + ); + } +); +When( + /^I clear the recovery phrase in restore wallet dialog$/, + async function () { + const words = await this.client.elements( + '.SimpleAutocomplete_selectedWordRemoveButton' + ); - for (let i = words.value.length - 1; i > -1; i--) { - const wordId = words.value[i].ELEMENT; - await this.client.elementIdClick(wordId); + for (let i = words.value.length - 1; i > -1; i--) { + const wordId = words.value[i].ELEMENT; + await this.client.elementIdClick(wordId); + } } -}); -When(/^I enter recovery phrase in restore wallet dialog:$/, async function (table) { +); +When(/^I enter recovery phrase in restore wallet dialog:$/, async function ( + table +) { const fields = table.hashes()[0]; const recoveryPhrase = fields.recoveryPhrase.split(' '); for (let i = 0; i < recoveryPhrase.length; i++) { const word = recoveryPhrase[i]; - await this.client.setValue('.AutocompleteOverrides_autocompleteWrapper input', word); + await this.client.setValue( + '.AutocompleteOverrides_autocompleteWrapper input', + word + ); await this.client.waitForVisible(`//li[text()="${word}"]`); await this.waitAndClick(`//li[text()="${word}"]`); await this.client.waitForVisible(`//span[text()="${word}"]`); } }); -When(/^I enter wallet password in restore wallet dialog:$/, async function (table) { +When(/^I enter wallet password in restore wallet dialog:$/, async function ( + table +) { const fields = table.hashes()[0]; await this.client.setValue('.spendingPassword input', fields.password); await this.client.setValue('.repeatPassword input', fields.repeatedPassword); @@ -42,24 +70,31 @@ When(/^I submit the restore wallet dialog$/, function () { }); Then(/^I should see section "([^"]*)"$/, async function (text) { await waitUntilTextInSelector(this.client, { - selector: '.WalletRestoreDialog_component .Dialog_content > div:last-child .RadioSet_label', - text + selector: + '.WalletRestoreDialog_component .Dialog_content > div:last-child .RadioSet_label', + text, }); }); Then(/^I should not see the restore wallet dialog anymore$/, function () { return this.client.waitForVisible('.WalletRestoreDialog', null, true); }); -Then(/^I should see the restore status notification while restore is running$/, async function () { - // Only check the rendered DOM if the restore is still in progress - if (await isActiveWalletBeingRestored(this.client)) { - await waitForActiveRestoreNotification(this.client); +Then( + /^I should see the restore status notification while restore is running$/, + async function () { + // Only check the rendered DOM if the restore is still in progress + if (await isActiveWalletBeingRestored(this.client)) { + await waitForActiveRestoreNotification(this.client); + } } -}); -Then(/^I should not see the restore status notification once restore is finished$/, async function () { - await waitForActiveRestoreNotification(this.client, { - isHidden: true - }); -}); +); +Then( + /^I should not see the restore status notification once restore is finished$/, + async function () { + await waitForActiveRestoreNotification(this.client, { + isHidden: true, + }); + } +); When(/^I click Check recovery phrase button$/, function () { return this.waitAndClick('.primary'); }); @@ -67,7 +102,7 @@ Then(/^I should see a screen titled "([^"]*)"$/, async function (text) { await waitUntilTextInSelector(this.client, { selector: '.Dialog_title h1', text, - ignoreCase: true + ignoreCase: true, }); }); Then(/^I click on option "([^"]*)"$/, async function (text) { @@ -79,7 +114,10 @@ Then(/^I confirm "([^"]*)"$/, async function (text) { await scrollIntoView(this.client, targetSelector); await this.client.click(targetSelector); }); -Then(/^"([^"]*)" wallet should have "([^"]*)" as id$/, async function (walletName, walletId) { +Then(/^"([^"]*)" wallet should have "([^"]*)" as id$/, async function ( + walletName, + walletId +) { const wallet = await getWalletByName.call(this, walletName); expect(wallet.id).to.equal(walletId); }); @@ -88,5 +126,9 @@ Given(/^I go back to the previous step$/, function () { }); Then(/^The error message should be (hidden|visible)$/, function (state) { const isVisible = state === 'visible'; - return this.client.waitForVisible('.ConfigurationDialog_error', null, !isVisible); -}); \ No newline at end of file + return this.client.waitForVisible( + '.ConfigurationDialog_error', + null, + !isVisible + ); +}); diff --git a/tests/wallets/e2e/steps/transfer-funds-wizard.ts b/tests/wallets/e2e/steps/transfer-funds-wizard.ts index 2741ff318c..adbd51cb1d 100644 --- a/tests/wallets/e2e/steps/transfer-funds-wizard.ts +++ b/tests/wallets/e2e/steps/transfer-funds-wizard.ts @@ -1,8 +1,8 @@ -import { When, Then } from "cucumber"; -import { expect } from "chai"; -import BigNumber from "bignumber.js/bignumber"; -import { formattedWalletAmount } from "../../../../source/renderer/app/utils/formatters"; -import { noWalletsErrorMessage, getFixedAmountByName } from "./helpers"; +import { When, Then } from 'cucumber'; +import { expect } from 'chai'; +import BigNumber from 'bignumber.js/bignumber'; +import { formattedWalletAmount } from '../../../../source/renderer/app/utils/formatters'; +import { noWalletsErrorMessage, getFixedAmountByName } from './helpers'; When(/^I click "Byron" wallet top bar notification action$/, function () { return this.waitAndClick('.LegacyNotification_actions button:nth-child(2)'); @@ -16,80 +16,149 @@ When(/^I select "([^"]*)" wallet$/, function (walletName) { When(/^I click continue button on "Transfer ada" wizard$/, function () { return this.waitAndClick('.Dialog_actions .SimpleButton_root'); }); -When(/^I enter spending password in "Transfer ada" wizard step 2 dialog:$/, async function (table) { - const fields = table.hashes()[0]; - await this.client.setValue('.TransferFundsStep2Dialog_dialog input', fields.password); -}); -When(/^I click continue button on "Transfer ada" wizard step 2 dialog$/, function () { - return this.waitAndClick('.TransferFundsStep2Dialog_dialog .confirmButton'); -}); -When(/^I see "Transfer ada" wizard step 2 transfer funds button disabled$/, async function () { - const isEnabled = await this.client.isEnabled('.TransferFundsStep2Dialog_dialog .confirmButton'); - expect(isEnabled).to.equal(false); -}); +When( + /^I enter spending password in "Transfer ada" wizard step 2 dialog:$/, + async function (table) { + const fields = table.hashes()[0]; + await this.client.setValue( + '.TransferFundsStep2Dialog_dialog input', + fields.password + ); + } +); +When( + /^I click continue button on "Transfer ada" wizard step 2 dialog$/, + function () { + return this.waitAndClick('.TransferFundsStep2Dialog_dialog .confirmButton'); + } +); +When( + /^I see "Transfer ada" wizard step 2 transfer funds button disabled$/, + async function () { + const isEnabled = await this.client.isEnabled( + '.TransferFundsStep2Dialog_dialog .confirmButton' + ); + expect(isEnabled).to.equal(false); + } +); When(/^I see initial wallets balance$/, async function () { // Wait for balance to be visible - const shelleyWalletName = await this.waitAndGetText('.SidebarWalletsMenu_wallets button:nth-child(1) .SidebarWalletMenuItem_title'); - const byronWalletName = await this.waitAndGetText('.SidebarWalletsMenu_wallets button:nth-child(2) .SidebarWalletMenuItem_title'); + const shelleyWalletName = await this.waitAndGetText( + '.SidebarWalletsMenu_wallets button:nth-child(1) .SidebarWalletMenuItem_title' + ); + const byronWalletName = await this.waitAndGetText( + '.SidebarWalletsMenu_wallets button:nth-child(2) .SidebarWalletMenuItem_title' + ); // Set initial values for further use - const shelleyFixedWalletAmount = await getFixedAmountByName.call(this, shelleyWalletName); - const byronFixedWalletAmount = await getFixedAmountByName.call(this, byronWalletName); + const shelleyFixedWalletAmount = await getFixedAmountByName.call( + this, + shelleyWalletName + ); + const byronFixedWalletAmount = await getFixedAmountByName.call( + this, + byronWalletName + ); this.shelleyWalletAmount = new BigNumber(shelleyFixedWalletAmount); this.byronWalletAmount = new BigNumber(byronFixedWalletAmount); if (this.byronWalletAmount.isZero()) throw new Error(noWalletsErrorMessage); }); -Then(/^"Transfer ada" wizard step 2 dialog continue button should be disabled$/, async function () { - await this.client.waitForEnabled('.TransferFundsStep2Dialog_dialog .confirmButton'); -}); +Then( + /^"Transfer ada" wizard step 2 dialog continue button should be disabled$/, + async function () { + await this.client.waitForEnabled( + '.TransferFundsStep2Dialog_dialog .confirmButton' + ); + } +); Then(/^I should see "Transfer ada" wizard step 2 dialog$/, async function () { await this.client.waitForVisible('.TransferFundsStep2Dialog_dialog'); // Set transfer funds fee - const transferFee = await this.waitAndGetText('.TransferFundsStep2Dialog_dialog .Dialog_content div:nth-child(3) .TransferFundsStep2Dialog_amount'); + const transferFee = await this.waitAndGetText( + '.TransferFundsStep2Dialog_dialog .Dialog_content div:nth-child(3) .TransferFundsStep2Dialog_amount' + ); this.transferFee = transferFee.replace('+ ', ''); }); -Then(/^I should not see "Transfer ada" wizard step 2 wizard dialog anymore$/, { - timeout: 60000 -}, // Transferring funds sometimes last more than "Default" test timeout -function () { - return this.client.waitForVisible('.TransferFundsStep2Dialog_dialog', null, true); -}); +Then( + /^I should not see "Transfer ada" wizard step 2 wizard dialog anymore$/, + { + timeout: 60000, + }, // Transferring funds sometimes last more than "Default" test timeout + function () { + return this.client.waitForVisible( + '.TransferFundsStep2Dialog_dialog', + null, + true + ); + } +); Then(/^I should see "Add wallet" wizard$/, async function () { return this.client.waitForVisible('.TransferFundsStep1Dialog_label'); }); Then(/^I should see "Transfer ada" wizard$/, async function () { return this.client.waitForVisible('.TransferFundsStep1Dialog_label'); }); -Then(/^I should see increased shelley wallet byron and 0 ADA in Daedalus Byron wallet$/, async function () { - const shelleySelector = '.SidebarWalletsMenu_wallets button:nth-child(1) .SidebarWalletMenuItem_info'; - const byronSelector = '.SidebarWalletsMenu_wallets button:nth-child(2) .SidebarWalletMenuItem_info'; - const transferSumWithoutFees = this.shelleyWalletAmount.plus(this.byronWalletAmount); - const transferSumWithFees = transferSumWithoutFees.minus(this.transferFee); - const initialShelleyFormattedAmount = formattedWalletAmount(this.shelleyWalletAmount, true, false); - const initialByronFormattedAmount = formattedWalletAmount(this.byronWalletAmount, true, false); - const expectedShelleyAmount = formattedWalletAmount(transferSumWithFees, true, false); - const expectedByronAmount = '0 ADA'; - let shelleyWalletFormattedAmount; - let byronWalletFormattedAmount; - await this.client.waitUntil(async () => { - shelleyWalletFormattedAmount = await this.waitAndGetText(shelleySelector); - byronWalletFormattedAmount = await this.waitAndGetText(byronSelector); - return shelleyWalletFormattedAmount !== initialShelleyFormattedAmount && byronWalletFormattedAmount !== initialByronFormattedAmount; - }); - expect(shelleyWalletFormattedAmount).to.equal(expectedShelleyAmount); - expect(byronWalletFormattedAmount).to.equal(expectedByronAmount); -}); -Then(/^I should see the following error messages on transfer wizard step 2 dialog:$/, async function (data) { - const errorSelector = '.TransferFundsStep2Dialog_dialog .TransferFundsStep2Dialog_error'; - let errorsOnScreen = await this.waitAndGetText(errorSelector); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +Then( + /^I should see increased shelley wallet byron and 0 ADA in Daedalus Byron wallet$/, + async function () { + const shelleySelector = + '.SidebarWalletsMenu_wallets button:nth-child(1) .SidebarWalletMenuItem_info'; + const byronSelector = + '.SidebarWalletsMenu_wallets button:nth-child(2) .SidebarWalletMenuItem_info'; + const transferSumWithoutFees = this.shelleyWalletAmount.plus( + this.byronWalletAmount + ); + const transferSumWithFees = transferSumWithoutFees.minus(this.transferFee); + const initialShelleyFormattedAmount = formattedWalletAmount( + this.shelleyWalletAmount, + true, + false + ); + const initialByronFormattedAmount = formattedWalletAmount( + this.byronWalletAmount, + true, + false + ); + const expectedShelleyAmount = formattedWalletAmount( + transferSumWithFees, + true, + false + ); + const expectedByronAmount = '0 ADA'; + let shelleyWalletFormattedAmount; + let byronWalletFormattedAmount; + await this.client.waitUntil(async () => { + shelleyWalletFormattedAmount = await this.waitAndGetText(shelleySelector); + byronWalletFormattedAmount = await this.waitAndGetText(byronSelector); + return ( + shelleyWalletFormattedAmount !== initialShelleyFormattedAmount && + byronWalletFormattedAmount !== initialByronFormattedAmount + ); + }); + expect(shelleyWalletFormattedAmount).to.equal(expectedShelleyAmount); + expect(byronWalletFormattedAmount).to.equal(expectedByronAmount); + } +); +Then( + /^I should see the following error messages on transfer wizard step 2 dialog:$/, + async function (data) { + const errorSelector = + '.TransferFundsStep2Dialog_dialog .TransferFundsStep2Dialog_error'; + let errorsOnScreen = await this.waitAndGetText(errorSelector); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); -Then(/^"Transfer ada" wizard step 2 dialog continue button should not be disabled anymore$/, async function () { - const isEnabled = await this.client.isEnabled('.TransferFundsStep2Dialog_dialog .confirmButton'); - expect(isEnabled).to.equal(true); -}); \ No newline at end of file +); +Then( + /^"Transfer ada" wizard step 2 dialog continue button should not be disabled anymore$/, + async function () { + const isEnabled = await this.client.isEnabled( + '.TransferFundsStep2Dialog_dialog .confirmButton' + ); + expect(isEnabled).to.equal(true); + } +); diff --git a/tests/wallets/e2e/steps/wallet-not-responding.ts b/tests/wallets/e2e/steps/wallet-not-responding.ts index f7900f23fe..923393535a 100644 --- a/tests/wallets/e2e/steps/wallet-not-responding.ts +++ b/tests/wallets/e2e/steps/wallet-not-responding.ts @@ -1,27 +1,41 @@ -import { When, Then } from "cucumber"; -import { WalletSyncStateStatuses } from "../../../../source/renderer/app/domains/Wallet"; +import { When, Then } from 'cucumber'; +import { WalletSyncStateStatuses } from '../../../../source/renderer/app/domains/Wallet'; When(/^the "([^"]*)" wallet is not responding$/, async function (walletName) { - await this.client.execute((walletName, status) => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - const walletIndex: number = daedalus.stores.wallets.all.findIndex(wallet => wallet.name === walletName); - const modifiedWallet: { - name: string; - syncState: Record; - } = { - name: walletName, - syncState: { - status - } - }; - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.api.ada.setTestingWallet(modifiedWallet, walletIndex); - }, walletName, WalletSyncStateStatuses.NOT_RESPONDING); + await this.client.execute( + (walletName, status) => { + const walletIndex: number = daedalus.stores.wallets.all.findIndex( + (wallet) => wallet.name === walletName + ); + const modifiedWallet: { + name: string; + syncState: Record; + } = { + name: walletName, + syncState: { + status, + }, + }; + daedalus.api.ada.setTestingWallet(modifiedWallet, walletIndex); + }, + walletName, + WalletSyncStateStatuses.NOT_RESPONDING + ); }); -Then(/^the "Not Responding" Overlay should be (hidden|visible)/, async function (state) { - const shouldBeHidden = state === 'hidden'; - await this.client.waitForVisible('.NotResponding_component', null, shouldBeHidden); -}); -Then(/^the wallet navigation should switch to the "summary" tab/, async function () { - await this.client.waitForVisible('.WalletSummary_component'); -}); \ No newline at end of file +Then( + /^the "Not Responding" Overlay should be (hidden|visible)/, + async function (state) { + const shouldBeHidden = state === 'hidden'; + await this.client.waitForVisible( + '.NotResponding_component', + null, + shouldBeHidden + ); + } +); +Then( + /^the wallet navigation should switch to the "summary" tab/, + async function () { + await this.client.waitForVisible('.WalletSummary_component'); + } +); diff --git a/tests/wallets/e2e/steps/wallets-limit.ts b/tests/wallets/e2e/steps/wallets-limit.ts index ec0fdaa8fd..2b4405bfef 100644 --- a/tests/wallets/e2e/steps/wallets-limit.ts +++ b/tests/wallets/e2e/steps/wallets-limit.ts @@ -1,44 +1,74 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { createWallets, getWalletByName } from "./helpers"; -import { MAX_ADA_WALLETS_COUNT } from "../../../../source/renderer/app/config/numbersConfig"; -import { sidebarHelpers } from "../../../navigation/e2e/steps/helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { createWallets, getWalletByName } from './helpers'; +import { MAX_ADA_WALLETS_COUNT } from '../../../../source/renderer/app/config/numbersConfig'; +import { sidebarHelpers } from '../../../navigation/e2e/steps/helpers'; -Given('I create wallets until I reach the maximum number permitted', async function () { - const wallets = [...Array(MAX_ADA_WALLETS_COUNT)].map((x, i) => ({ - name: `Wallet ${i + 1}`, - password: 'Secret1234' - })); - await createWallets.call(this, wallets); -}); -When('I should see maximum number of wallets in the wallets list', async function () { - await this.client.waitUntil(async () => { - const walletMenuItems = await this.client.elements('.SidebarWalletMenuItem_component'); - return walletMenuItems.value.length === MAX_ADA_WALLETS_COUNT; - }); -}); +Given( + 'I create wallets until I reach the maximum number permitted', + async function () { + const wallets = [...Array(MAX_ADA_WALLETS_COUNT)].map((x, i) => ({ + name: `Wallet ${i + 1}`, + password: 'Secret1234', + })); + await createWallets.call(this, wallets); + } +); +When( + 'I should see maximum number of wallets in the wallets list', + async function () { + await this.client.waitUntil(async () => { + const walletMenuItems = await this.client.elements( + '.SidebarWalletMenuItem_component' + ); + return walletMenuItems.value.length === MAX_ADA_WALLETS_COUNT; + }); + } +); When('I delete the last wallet', async function () { const wallet = await getWalletByName.call(this, 'Wallet 20'); - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - await this.client.execute((walletId, isLegacy) => daedalus.actions.wallets.deleteWallet.trigger({ - walletId, - isLegacy - }), wallet.id, wallet.isLegacy); + await this.client.execute( + (walletId, isLegacy) => + daedalus.actions.wallets.deleteWallet.trigger({ + walletId, + isLegacy, + }), + wallet.id, + wallet.isLegacy + ); await this.client.waitUntil(async () => { - const wallets = await this.client.elements('.SidebarWalletMenuItem_component'); + const wallets = await this.client.elements( + '.SidebarWalletMenuItem_component' + ); return wallets.value.length < MAX_ADA_WALLETS_COUNT; }); }); -Then(/^the buttons in the Add Wallet screen should be (disabled|enabled)/, async function (state) { - const isDisabled = state === 'disabled' ? 'true' : null; - sidebarHelpers.clickAddWalletButton(this.client); - await this.client.waitForVisible('.WalletAdd_buttonsContainer .BigButtonForDialogs_component'); - const buttonsAreDisabled = await this.client.getAttribute('.WalletAdd_buttonsContainer .BigButtonForDialogs_component', 'disabled'); - // Excludes the "Join shared wallet" button - buttonsAreDisabled.splice(1, 1); - expect(buttonsAreDisabled).to.be.an('array').that.include(isDisabled).and.not.include(!isDisabled); -}); -Then('I should see a disclaimer saying I have reached the maximum number of wallets', async function () { - const disclaimer = await this.waitAndGetText('.WalletAdd_notification'); - expect(disclaimer.replace(/\n/, ' ')).to.equal(`You have reached the maximum of ${MAX_ADA_WALLETS_COUNT} wallets. No more wallets can be added.`); -}); \ No newline at end of file +Then( + /^the buttons in the Add Wallet screen should be (disabled|enabled)/, + async function (state) { + const isDisabled = state === 'disabled' ? 'true' : null; + sidebarHelpers.clickAddWalletButton(this.client); + await this.client.waitForVisible( + '.WalletAdd_buttonsContainer .BigButtonForDialogs_component' + ); + const buttonsAreDisabled = await this.client.getAttribute( + '.WalletAdd_buttonsContainer .BigButtonForDialogs_component', + 'disabled' + ); + // Excludes the "Join shared wallet" button + buttonsAreDisabled.splice(1, 1); + expect(buttonsAreDisabled) + .to.be.an('array') + .that.include(isDisabled) + .and.not.include(!isDisabled); + } +); +Then( + 'I should see a disclaimer saying I have reached the maximum number of wallets', + async function () { + const disclaimer = await this.waitAndGetText('.WalletAdd_notification'); + expect(disclaimer.replace(/\n/, ' ')).to.equal( + `You have reached the maximum of ${MAX_ADA_WALLETS_COUNT} wallets. No more wallets can be added.` + ); + } +); diff --git a/tests/wallets/e2e/steps/wallets-ordering.ts b/tests/wallets/e2e/steps/wallets-ordering.ts index 10bfe4adcc..f8eb9333d0 100644 --- a/tests/wallets/e2e/steps/wallets-ordering.ts +++ b/tests/wallets/e2e/steps/wallets-ordering.ts @@ -1,8 +1,12 @@ -import { Then } from "cucumber"; -import { expect } from "chai"; +import { Then } from 'cucumber'; +import { expect } from 'chai'; -Then(/^I should see the wallets in the following order:$/, async function (table) { +Then(/^I should see the wallets in the following order:$/, async function ( + table +) { const expectedWallets = table.hashes(); const wallets = await this.waitAndGetText('.SidebarWalletMenuItem_title'); - wallets.forEach((wallet, index) => expect(wallet).to.equal(expectedWallets[index].name)); -}); \ No newline at end of file + wallets.forEach((wallet, index) => + expect(wallet).to.equal(expectedWallets[index].name) + ); +}); diff --git a/tests/wallets/e2e/steps/wallets.ts b/tests/wallets/e2e/steps/wallets.ts index bc2f2f861d..902040c916 100644 --- a/tests/wallets/e2e/steps/wallets.ts +++ b/tests/wallets/e2e/steps/wallets.ts @@ -1,70 +1,110 @@ -import { Given, When, Then } from "cucumber"; -import { expect } from "chai"; -import { createWallets, getWalletByName, waitUntilWalletIsLoaded, restoreWalletWithFunds, restoreLegacyWallet, waitUntilUrlEquals, navigateTo, getWalletType, restoreWallet } from "./helpers"; +import { Given, When, Then } from 'cucumber'; +import { expect } from 'chai'; +import { + createWallets, + getWalletByName, + waitUntilWalletIsLoaded, + restoreWalletWithFunds, + restoreLegacyWallet, + waitUntilUrlEquals, + navigateTo, + getWalletType, + restoreWallet, +} from './helpers'; // Create shelley or byron wallets -Given(/^I have (created )?the following (byron )?wallets:$/, async function (mode, _type, table) { +Given(/^I have (created )?the following (byron )?wallets:$/, async function ( + mode, + _type, + table +) { const type = await getWalletType.call(this, _type); const isLegacy = type === 'byron'; const sequentially = mode === 'created '; const wallets = table.hashes(); await createWallets.call(this, wallets, { sequentially, - isLegacy + isLegacy, }); // Ensure that ALL wallets are loaded - await Promise.all(wallets.map(async (wallet) => await waitUntilWalletIsLoaded.call(this, wallet.name))); + await Promise.all( + wallets.map( + async (wallet) => await waitUntilWalletIsLoaded.call(this, wallet.name) + ) + ); }); // Restore a wallet of any kind -Given(/^I have restored the "([^"]*)" wallet of "([^"]*)" kind, "([^"]*)" subkind and "([^"]*)" recovery phrase$/, { - timeout: 60000 -}, async function (walletName, kind, subkind, recovery_phrase) { - await restoreWallet.call(this, walletName, kind, subkind, recovery_phrase); - await waitUntilWalletIsLoaded.call(this, walletName); -}); +Given( + /^I have restored the "([^"]*)" wallet of "([^"]*)" kind, "([^"]*)" subkind and "([^"]*)" recovery phrase$/, + { + timeout: 60000, + }, + async function (walletName, kind, subkind, recovery_phrase) { + await restoreWallet.call(this, walletName, kind, subkind, recovery_phrase); + await waitUntilWalletIsLoaded.call(this, walletName); + } +); // Create a single wallet with funds -Given(/^I have a "([^"]*)" (byron )?wallet with funds$/, async function (walletName, _type) { +Given(/^I have a "([^"]*)" (byron )?wallet with funds$/, async function ( + walletName, + _type +) { const type = await getWalletType.call(this, _type); if (type === 'shelley') { await restoreWalletWithFunds(this.client, { - walletName + walletName, }); } else { await restoreLegacyWallet(this.client, { walletName, - hasFunds: true + hasFunds: true, }); } await waitUntilWalletIsLoaded.call(this, walletName); }); // Create a single wallet with no funds -Given(/^I have a "([^"]*)" (byron )?wallet$/, async function (walletName, _type) { +Given(/^I have a "([^"]*)" (byron )?wallet$/, async function ( + walletName, + _type +) { const type = await getWalletType.call(this, _type); const isLegacy = type === 'byron'; if (!isLegacy) { - await createWallets.call(this, [{ - name: walletName - }], {}); + await createWallets.call( + this, + [ + { + name: walletName, + }, + ], + {} + ); } else { await restoreLegacyWallet(this.client, { walletName, - hasFunds: false + hasFunds: false, }); } await waitUntilWalletIsLoaded.call(this, walletName); }); -Given(/^I have a "([^"]*)" byron wallet for transferring funds$/, async function (walletName) { - await restoreLegacyWallet(this.client, { - walletName, - hasFunds: true, - transferFunds: true - }); - await waitUntilWalletIsLoaded.call(this, walletName); -}); -Given(/^I am on the "([^"]*)" wallet "([^"]*)" screen$/, async function (walletName, screen) { +Given( + /^I have a "([^"]*)" byron wallet for transferring funds$/, + async function (walletName) { + await restoreLegacyWallet(this.client, { + walletName, + hasFunds: true, + transferFunds: true, + }); + await waitUntilWalletIsLoaded.call(this, walletName); + } +); +Given(/^I am on the "([^"]*)" wallet "([^"]*)" screen$/, async function ( + walletName, + screen +) { const proceedToScreen = async () => { const wallet = await waitUntilWalletIsLoaded.call(this, walletName); @@ -77,43 +117,59 @@ Given(/^I am on the "([^"]*)" wallet "([^"]*)" screen$/, async function (walletN await proceedToScreen(); }); -Given('I have {int} restored (byron )?wallets', async function (numberOfWallets, _type) { +Given('I have {int} restored (byron )?wallets', async function ( + numberOfWallets, + _type +) { const type = await getWalletType.call(this, _type); const isLegacy = type === 'byron'; const wallets = [...Array(numberOfWallets)].map((x, i) => ({ name: `Wallet ${i + 1}`, - password: 'Secret1234' + password: 'Secret1234', })); await createWallets.call(this, wallets, { - isLegacy + isLegacy, }); }); When(/^I have one wallet address$/, function () { return this.client.waitForVisible('.receiveAddress-1'); }); When(/^I enter spending password "([^"]*)"$/, function (password) { - return this.client.setValue('.WalletReceiveRandom_spendingPassword input', password); + return this.client.setValue( + '.WalletReceiveRandom_spendingPassword input', + password + ); }); When(/^I click the wallet (.*) button$/, async function (buttonName) { const buttonSelector = `.NavButton_component.${buttonName}`; await this.client.waitForVisible(buttonSelector); await this.client.click(buttonSelector); }); -When(/^I submit the create wallet dialog with the following inputs:$/, async function (table) { - const fields = table.hashes()[0]; - await this.client.setValue('.WalletCreateDialog .walletName input', fields.walletName); - return this.client.click('.WalletCreateDialog .primary'); -}); +When( + /^I submit the create wallet dialog with the following inputs:$/, + async function (table) { + const fields = table.hashes()[0]; + await this.client.setValue( + '.WalletCreateDialog .walletName input', + fields.walletName + ); + return this.client.click('.WalletCreateDialog .primary'); + } +); When(/^I click continue$/, function () { return this.waitAndClick('.primary'); }); When(/^I click close$/, function () { return this.waitAndClick('.primary'); }); -Then(/^I should have newly created "([^"]*)" wallet loaded$/, async function (walletName) { - await this.client.executeAsync(done => { - // @ts-ignore ts-migrate(2304) FIXME: Cannot find name 'daedalus'. - daedalus.stores.wallets.walletsRequest.execute().then(done).catch(error => done(error)); +Then(/^I should have newly created "([^"]*)" wallet loaded$/, async function ( + walletName +) { + await this.client.executeAsync((done) => { + daedalus.stores.wallets.walletsRequest + .execute() + .then(done) + .catch((error) => done(error)); }); const wallet = await getWalletByName.call(this, walletName); expect(wallet).to.be.an('object'); @@ -121,7 +177,10 @@ Then(/^I should have newly created "([^"]*)" wallet loaded$/, async function (wa Then(/^I should be on some wallet page$/, async function () { return this.client.waitForVisible('.Navigation_component'); }); -Then(/^I should be on the "([^"]*)" wallet "([^"]*)" screen$/, async function (walletName, screenName) { +Then(/^I should be on the "([^"]*)" wallet "([^"]*)" screen$/, async function ( + walletName, + screenName +) { const wallet = await getWalletByName.call(this, walletName); return waitUntilUrlEquals.call(this, `/wallets/${wallet.id}/${screenName}`); }); @@ -130,26 +189,42 @@ Then(/^I should be on the "([^"]*)" screen$/, async function (screenName) { }); // Extended timeout is used for this step as it takes more than DEFAULT_TIMEOUT // for the receiver wallet's balance to be updated on the backend after creating transactions -Then(/^the balance of "([^"]*)" wallet should be:$/, { - timeout: 60000 -}, async function (walletName, table) { - const expectedData = table.hashes()[0]; - const receiverWallet = await getWalletByName.call(this, walletName); - return this.client.waitUntil(async () => { - const receiverWalletByron = await this.waitAndGetText(`.SidebarWalletsMenu_wallets .Wallet_${receiverWallet.id} .SidebarWalletMenuItem_info`); - return receiverWalletByron === `${expectedData.balance} ADA`; - }, 60000); -}); -Then(/^"Byron" wallet badge should be visible in the wallet sidebar$/, async function () { - return this.client.waitForVisible('.SidebarWalletMenuItem_active .LegacyBadge_component'); -}); -Then(/^I should see the following error messages on the wallet restore dialog:$/, async function (data) { - let errorsOnScreen = await this.waitAndGetText('.ConfigurationDialog_error'); - if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; - const errors = data.hashes(); +Then( + /^the balance of "([^"]*)" wallet should be:$/, + { + timeout: 60000, + }, + async function (walletName, table) { + const expectedData = table.hashes()[0]; + const receiverWallet = await getWalletByName.call(this, walletName); + return this.client.waitUntil(async () => { + const receiverWalletByron = await this.waitAndGetText( + `.SidebarWalletsMenu_wallets .Wallet_${receiverWallet.id} .SidebarWalletMenuItem_info` + ); + return receiverWalletByron === `${expectedData.balance} ADA`; + }, 60000); + } +); +Then( + /^"Byron" wallet badge should be visible in the wallet sidebar$/, + async function () { + return this.client.waitForVisible( + '.SidebarWalletMenuItem_active .LegacyBadge_component' + ); + } +); +Then( + /^I should see the following error messages on the wallet restore dialog:$/, + async function (data) { + let errorsOnScreen = await this.waitAndGetText( + '.ConfigurationDialog_error' + ); + if (typeof errorsOnScreen === 'string') errorsOnScreen = [errorsOnScreen]; + const errors = data.hashes(); - for (let i = 0; i < errors.length; i++) { - const expectedError = await this.intl(errors[i].message); - expect(errorsOnScreen[i]).to.equal(expectedError); + for (let i = 0; i < errors.length; i++) { + const expectedError = await this.intl(errors[i].message); + expect(errorsOnScreen[i]).to.equal(expectedError); + } } -}); \ No newline at end of file +); diff --git a/tests/wallets/unit/steps/mnemonics.ts b/tests/wallets/unit/steps/mnemonics.ts index 47dcba58da..9d708b8fc1 100644 --- a/tests/wallets/unit/steps/mnemonics.ts +++ b/tests/wallets/unit/steps/mnemonics.ts @@ -1,16 +1,30 @@ -import readline from "readline"; -import { expect } from "chai"; -import { Given, When, Then } from "cucumber"; -import { range, concat } from "lodash"; -import { generateAccountMnemonics, generateAdditionalMnemonics, scrambleMnemonics, unscrambleMnemonics } from "../../../../source/renderer/app/api/utils/mnemonics"; -import { mnemonicToSeedHex, getScrambledInput, generateMnemonic } from "../../../../source/renderer/app/utils/crypto"; -import { isValidMnemonic } from "../../../../source/common/config/crypto/decrypt"; -import { WALLET_RECOVERY_PHRASE_WORD_COUNT } from "../../../../source/renderer/app/config/cryptoConfig"; +import readline from 'readline'; +import { expect } from 'chai'; +import { Given, When, Then } from 'cucumber'; +import { range, concat } from 'lodash'; +import { + generateAccountMnemonics, + generateAdditionalMnemonics, + scrambleMnemonics, + unscrambleMnemonics, +} from '../../../../source/renderer/app/api/utils/mnemonics'; +import { + mnemonicToSeedHex, + getScrambledInput, + generateMnemonic, +} from '../../../../source/renderer/app/utils/crypto'; +import { isValidMnemonic } from '../../../../source/common/config/crypto/decrypt'; +import { WALLET_RECOVERY_PHRASE_WORD_COUNT } from '../../../../source/renderer/app/config/cryptoConfig'; -const isValidWalletRecoveryPhrase = mnemonic => isValidMnemonic(mnemonic, WALLET_RECOVERY_PHRASE_WORD_COUNT); +const isValidWalletRecoveryPhrase = (mnemonic) => + isValidMnemonic(mnemonic, WALLET_RECOVERY_PHRASE_WORD_COUNT); -Given('I generate {int} wallet recovery mnemonics', function (numberOfMnemonics) { - this.context.mnemonics = range(numberOfMnemonics).map(() => generateAccountMnemonics(WALLET_RECOVERY_PHRASE_WORD_COUNT).join(' ')); +Given('I generate {int} wallet recovery mnemonics', function ( + numberOfMnemonics +) { + this.context.mnemonics = range(numberOfMnemonics).map(() => + generateAccountMnemonics(WALLET_RECOVERY_PHRASE_WORD_COUNT).join(' ') + ); }); Given('I generate {int} word mnemonic', function (numberOfWords) { this.context.mnemonic = generateMnemonic(numberOfWords); @@ -22,53 +36,70 @@ Then('all generated wallet recovery mnemonics should be valid', function () { } } }); -Given('I generate and validate an unbound number of wallet recovery mnemonics', function () { - let numberOfTestsExecuted = 0; - let generated = true; +Given( + 'I generate and validate an unbound number of wallet recovery mnemonics', + function () { + let numberOfTestsExecuted = 0; + let generated = true; - while (generated) { - const mnemonic = generateAccountMnemonics(WALLET_RECOVERY_PHRASE_WORD_COUNT).join(' '); + while (generated) { + const mnemonic = generateAccountMnemonics( + WALLET_RECOVERY_PHRASE_WORD_COUNT + ).join(' '); - if (!isValidWalletRecoveryPhrase(mnemonic)) { - generated = false; - throw new Error(`"${mnemonic}" is not valid`); - } + if (!isValidWalletRecoveryPhrase(mnemonic)) { + generated = false; + throw new Error(`"${mnemonic}" is not valid`); + } - numberOfTestsExecuted++; - readline.clearLine(process.stdout, 0); - readline.cursorTo(process.stdout, 0); - process.stdout.write(`${numberOfTestsExecuted} mnemonics validated.`); + numberOfTestsExecuted++; + readline.clearLine(process.stdout, 0); + readline.cursorTo(process.stdout, 0); + process.stdout.write(`${numberOfTestsExecuted} mnemonics validated.`); + } } -}); +); When('I generate additional mnemonic words', function () { - this.context.additionalMnemonicWords = generateAdditionalMnemonics().join(' '); + this.context.additionalMnemonicWords = generateAdditionalMnemonics().join( + ' ' + ); }); When('I generate spending password from 9-word mnemonic', function () { // @ts-ignore ts-migrate(2554) FIXME: Expected 2 arguments, but got 1. - this.context.spendingPassword = mnemonicToSeedHex(this.context.additionalMnemonicWords); + this.context.spendingPassword = mnemonicToSeedHex( + this.context.additionalMnemonicWords + ); }); When('I generate 18-word scrambled mnemonic', function () { this.context.scrambledMnemonic = scrambleMnemonics({ passphrase: this.context.spendingPassword, - scrambledInput: this.context.mnemonic + scrambledInput: this.context.mnemonic, }); }); -When('I generate 27-word paper wallet certificate recovery phrase', function () { - this.context.paperWalletCertificateRecoveryPhrase = concat(this.context.scrambledMnemonic, this.context.additionalMnemonicWords.split(' ')); -}); +When( + 'I generate 27-word paper wallet certificate recovery phrase', + function () { + this.context.paperWalletCertificateRecoveryPhrase = concat( + this.context.scrambledMnemonic, + this.context.additionalMnemonicWords.split(' ') + ); + } +); When('I unscramble mnemonics', function () { // Split recovery phrase to 18 (scrambled mnemonics) + 9 (mnemonics seed) mnemonics - const { - passphrase, - scrambledInput - } = getScrambledInput(this.context.paperWalletCertificateRecoveryPhrase); + const { passphrase, scrambledInput } = getScrambledInput( + this.context.paperWalletCertificateRecoveryPhrase + ); // Unscramble 18-word wallet certificate mnemonic to 12-word initial mnemonic this.context.unscrambledMnemonic = unscrambleMnemonics({ passphrase, - scrambledInput + scrambledInput, }); }); -Then('Unscrambled mnemonic should be same as generated 12-word mnemonic', function () { - const unscrambledMnemonic = this.context.unscrambledMnemonic.join(' '); - expect(unscrambledMnemonic).to.equal(this.context.mnemonic); -}); \ No newline at end of file +Then( + 'Unscrambled mnemonic should be same as generated 12-word mnemonic', + function () { + const unscrambledMnemonic = this.context.unscrambledMnemonic.join(' '); + expect(unscrambledMnemonic).to.equal(this.context.mnemonic); + } +); diff --git a/tests/wallets/unit/steps/spending-password.ts b/tests/wallets/unit/steps/spending-password.ts index d0053ce392..9514807fbf 100644 --- a/tests/wallets/unit/steps/spending-password.ts +++ b/tests/wallets/unit/steps/spending-password.ts @@ -1,6 +1,6 @@ -import { Given, Then } from "cucumber"; -import { expect } from "chai"; -import { isValidSpendingPassword } from "../../../../source/renderer/app/utils/validations"; +import { Given, Then } from 'cucumber'; +import { expect } from 'chai'; +import { isValidSpendingPassword } from '../../../../source/renderer/app/utils/validations'; /* eslint-disable no-unused-expressions */ Given('I use the spending password {string}', function (password) { @@ -11,4 +11,4 @@ Then('the spending password validation should fail', function () { }); Then('the spending password validation should succeed', function () { expect(isValidSpendingPassword(this.context.spendingPassword)).to.be.true; -}); \ No newline at end of file +}); diff --git a/tests/wallets/unit/wallet-utils.spec.ts b/tests/wallets/unit/wallet-utils.spec.ts index 1fcebc861f..b0030e34b7 100644 --- a/tests/wallets/unit/wallet-utils.spec.ts +++ b/tests/wallets/unit/wallet-utils.spec.ts @@ -1,5 +1,10 @@ -import BigNumber from "bignumber.js"; -import { isWalletRewardsWithdrawalPossible, shouldShowEmptyWalletWarning } from "../../../source/renderer/app/utils/walletUtils"; +import BigNumber from 'bignumber.js'; +import Wallet from '../../../source/renderer/app/domains/Wallet'; +import { + isWalletRewardsWithdrawalPossible, + shouldShowEmptyWalletWarning, +} from '../../../source/renderer/app/utils/walletUtils'; + // As a user using a shelly wallet when sending ADA and the balance // after the transactions remains < 10 ADA, the following Warning message // is displayed in the send confirmation dialog @@ -8,13 +13,17 @@ describe('Function shouldShowEmptyWalletWarning returns:', () => { MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS`, () => { const transactionAmount = new BigNumber(100); const walletBalance = new BigNumber(101); - expect(isWalletRewardsWithdrawalPossible(transactionAmount, walletBalance)).toBe(false); + expect( + isWalletRewardsWithdrawalPossible(transactionAmount, walletBalance) + ).toBe(false); }); it(` in case the balance after transaction is higher than MINIMUM_MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS`, () => { const transactionAmount = new BigNumber(100); const walletBalance = new BigNumber(110); - expect(isWalletRewardsWithdrawalPossible(transactionAmount, walletBalance)).toBe(true); + expect( + isWalletRewardsWithdrawalPossible(transactionAmount, walletBalance) + ).toBe(true); }); // This does not apply if // @@ -33,11 +42,12 @@ describe('Function shouldShowEmptyWalletWarning returns:', () => { const wallet = { amount: walletBalance, isLegacy, - isDelegating - }; + isDelegating, + } as Wallet; const hasAssets = false; - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ amount: BigNumber; isLegacy: b... Remove this comment to see the full error message - expect(shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets)).toBe(true); + expect( + shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets) + ).toBe(true); }); it(` in case of: - remain balance less than MINIMUM_MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS @@ -51,11 +61,12 @@ describe('Function shouldShowEmptyWalletWarning returns:', () => { const wallet = { amount: walletBalance, isLegacy, - isDelegating - }; + isDelegating, + } as Wallet; const hasAssets = false; - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ amount: BigNumber; isLegacy: b... Remove this comment to see the full error message - expect(shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets)).toBe(false); + expect( + shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets) + ).toBe(false); }); it(` in case of: - remain balance less than MINIMUM_MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS @@ -69,11 +80,12 @@ describe('Function shouldShowEmptyWalletWarning returns:', () => { const wallet = { amount: walletBalance, isLegacy, - isDelegating - }; + isDelegating, + } as Wallet; const hasAssets = false; - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ amount: BigNumber; isLegacy: b... Remove this comment to see the full error message - expect(shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets)).toBe(true); + expect( + shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets) + ).toBe(true); }); it(` in case of: - remain balance far more than MINIMUM_MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS @@ -87,11 +99,12 @@ describe('Function shouldShowEmptyWalletWarning returns:', () => { const wallet = { amount: walletBalance, isLegacy, - isDelegating - }; + isDelegating, + } as Wallet; const hasAssets = false; - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ amount: BigNumber; isLegacy: b... Remove this comment to see the full error message - expect(shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets)).toBe(false); + expect( + shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets) + ).toBe(false); }); it(` in case of: - remain balance less than MINIMUM_MINIMUM_ADA_BALANCE_FOR_WITHDRAWING_REWARDS @@ -105,10 +118,11 @@ describe('Function shouldShowEmptyWalletWarning returns:', () => { const wallet = { amount: walletBalance, isLegacy, - isDelegating - }; + isDelegating, + } as Wallet; const hasAssets = true; - // @ts-ignore ts-migrate(2345) FIXME: Argument of type '{ amount: BigNumber; isLegacy: b... Remove this comment to see the full error message - expect(shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets)).toBe(true); + expect( + shouldShowEmptyWalletWarning(totalAmountToSpend, wallet, hasAssets) + ).toBe(true); }); -}); \ No newline at end of file +}); diff --git a/translations/formatter.js b/translations/formatter.js new file mode 100644 index 0000000000..41eb534157 --- /dev/null +++ b/translations/formatter.js @@ -0,0 +1,18 @@ +const groupBy = require('lodash/groupBy'); +const values = require('lodash/values'); +const pick = require('lodash/pick'); +// Custom formatter as described here +// https://formatjs.io/docs/tooling/cli#extraction +module.exports = { + format(messages) { + const messagesIncludingIds = Object.entries(messages).map(([id, data]) => ({ id, ...data })); + return values(groupBy(messagesIncludingIds, 'file')).map((fileDescriptor) => ({ + // required format for react-intl-translations-manager + // https://www.npmjs.com/package/react-intl-translations-manager#provideextractedmessages + descriptors: fileDescriptor.map(message => { + return pick(message, ['id', 'defaultMessage', 'description']) + }), + path: fileDescriptor[0].file, + })); + } +}; diff --git a/translations/messages.json b/translations/messages.json new file mode 100644 index 0000000000..b49de0c1d9 --- /dev/null +++ b/translations/messages.json @@ -0,0 +1,7587 @@ +[ + { + "descriptors": [ + { + "defaultMessage": "!!!Incorrect wallet password.", + "description": "\"Incorrect wallet password.\" error message.", + "id": "api.errors.IncorrectPasswordError" + }, + { + "defaultMessage": "!!!Wallet you are trying to restore already exists.", + "description": "\"Wallet you are trying to restore already exists.\" error message.", + "id": "api.errors.WalletAlreadyRestoredError" + }, + { + "defaultMessage": "!!!Invalid recovery phrase. Submitted recovery phrase is one of the example recovery phrases from the documentation and should not be used for wallets holding funds.", + "description": "\"Forbidden Mnemonic: an example Mnemonic has been submitted.\" error message", + "id": "api.errors.ForbiddenMnemonicError" + }, + { + "defaultMessage": "!!!Wallet you are trying to import already exists.", + "description": "\"Wallet you are trying to import already exists.\" error message.", + "id": "api.errors.WalletAlreadyImportedError" + }, + { + "defaultMessage": "!!!Wallet could not be imported, please make sure you are providing a correct file.", + "description": "\"Wallet could not be imported, please make sure you are providing a correct file.\" error message.", + "id": "api.errors.WalletFileImportError" + }, + { + "defaultMessage": "!!!Invalid phrase entered, please check.", + "description": "Error message shown when invalid bip39 mnemonic was entered.", + "id": "global.errors.invalidMnemonic" + }, + { + "defaultMessage": "!!!Not enough money to make this transaction.", + "description": "\"Not enough money to make this transaction.\" error message.", + "id": "api.errors.NotEnoughMoneyToSendError" + }, + { + "defaultMessage": "!!!Cannot calculate fees while there are pending transactions.", + "description": "\"Cannot calculate fees while there are pending transactions.\" error message", + "id": "api.errors.CanNotCalculateTransactionFeesError" + }, + { + "defaultMessage": "!!!Not enough ada for fees. Try sending a smaller amount.", + "description": "\"Not enough ada for fees. Try sending a smaller amount.\" error message", + "id": "api.errors.NotEnoughFundsForTransactionFeesError" + }, + { + "defaultMessage": "!!!Your wallet contains only reward funds. Please send at least one ADA to your wallet so that you can spend the funds.", + "description": "\"Your wallet contains only reward funds. Please send at least one ADA to your wallet so that you can spend the funds.\" error message", + "id": "api.errors.inputsDepleted" + }, + { + "defaultMessage": "!!!Transaction too big due to too many inputs.", + "description": "\"Transaction too big due to too many inputs.\" error message.", + "id": "api.errors.TooBigTransactionError" + }, + { + "defaultMessage": "!!!Not enough ada. Try sending a smaller amount.", + "description": "\"Not enough ada . Try sending a smaller amount.\" error message", + "id": "api.errors.NotEnoughFundsForTransactionError" + }, + { + "defaultMessage": "!!!Please enter a valid address.", + "description": "Error message shown when invalid address was entered.", + "id": "api.errors.invalidAddress" + }, + { + "defaultMessage": "!!!Learn more.", + "description": "\"Transaction too big due to too many inputs.\" error link label.", + "id": "api.errors.TooBigTransactionErrorLinkLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360017733353", + "description": "\"Transaction too big due to too many inputs.\" error link URL.", + "id": "api.errors.TooBigTransactionErrorLinkURL" + }, + { + "defaultMessage": "!!!Invalid transaction.", + "description": "\"Invalid transaction.\" error message", + "id": "api.errors.utxoTooSmall" + }, + { + "defaultMessage": "!!!Funds cannot be transferred from this wallet because it contains some unspent transaction outputs (UTXOs), with amounts of ada that are too small to be migrated.", + "description": "\"Funds cannot be transferred from this wallet because it contains some unspent transaction outputs (UTXOs), with amounts of ada that are too small to be migrated.\" error message", + "id": "api.errors.nothingToMigrate" + }, + { + "defaultMessage": "!!!This URL is not a valid SMASH server", + "description": "\"This URL is not a valid SMASH server\" error message", + "id": "api.errors.invalidSmashServer" + }, + { + "defaultMessage": "!!!Insufficient funds to support tokens. You need at least an additional {adaAmount} ADA in your wallet to process this transaction.", + "description": "\"Balance after transaction would not leave enough ada in the wallet to support tokens remaining in wallet", + "id": "api.errors.NotEnoughFundsForTransactionFeesErrorWithTokens" + } + ], + "path": "source/renderer/app/api/errors.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Ada", + "description": "\"Ada\" name", + "id": "global.ada.name" + }, + { + "defaultMessage": "!!!ADA", + "description": "\"ADA\" unit", + "id": "global.ada.unit" + }, + { + "defaultMessage": "!!!ADA", + "description": "Name for \"Ada\" unit.", + "id": "environment.currency.ada" + }, + { + "defaultMessage": "!!!This field is required.", + "description": "Error message when required fields are left empty.", + "id": "global.errors.fieldIsRequired" + }, + { + "defaultMessage": "!!!{actual} of {required} words entered", + "description": "Info message displayed above mnemonic inputs about actual vs. required words entered", + "id": "global.info.knownMnemonicWordCount" + }, + { + "defaultMessage": "!!!{actual} words entered", + "description": "Info message displayed above mnemonic inputs about how many words have been entered", + "id": "global.info.unknownMnemonicWordCount" + }, + { + "defaultMessage": "!!!Invalid email entered, please check.", + "description": "Error message shown when invalid email was entered.", + "id": "global.errors.invalidEmail" + }, + { + "defaultMessage": "!!!Wallet name requires at least 3 and at most 40 letters", + "description": "Error message shown when invalid wallet name was entered in create wallet dialog.", + "id": "global.errors.invalidWalletName" + }, + { + "defaultMessage": "!!!Insecure", + "description": "Error message shown when insecure wallet password was entered in a password input.", + "id": "global.errors.invalidSpendingPassword" + }, + { + "defaultMessage": "!!!Weak", + "description": "Error message shown when weak wallet password was entered in a password input.", + "id": "global.errors.weakSpendingPassword" + }, + { + "defaultMessage": "!!!Strong", + "description": "Error message shown when strong wallet password was entered in a password input.", + "id": "global.errors.strongSpendingPassword" + }, + { + "defaultMessage": "!!!Doesn't match.", + "description": "Error message shown when wallet password and repeat passwords don't match in create wallet dialog.", + "id": "global.errors.invalidRepeatPassword" + }, + { + "defaultMessage": "!!!The file you are trying to replace is open. Please close it and try again.", + "description": "Error message shown when the file the user tries to replace is open.", + "id": "global.errors.paperWalletOpenPdfError" + }, + { + "defaultMessage": "!!!The file you are trying to replace is open. Please close it and try again.", + "description": "Error message shown when the file the user tries to replace is open.", + "id": "global.errors.rewardsOpenCsvError" + }, + { + "defaultMessage": "!!!Note that password needs to be at least 10 characters and at most 255 characters long.", + "description": "Password instructions note.", + "id": "global.passwordInstructions" + }, + { + "defaultMessage": "!!!Cancel", + "description": "The word \"cancel\" reused at several places (like cancel buttons)", + "id": "global.labels.cancel" + }, + { + "defaultMessage": "!!!Close", + "description": "The word \"close\" reused at several places (like cancel buttons)", + "id": "global.labels.close" + }, + { + "defaultMessage": "!!!Change", + "description": "The word \"change\" reused at several places (like change buttons)", + "id": "global.labels.change" + }, + { + "defaultMessage": "!!!Create", + "description": "The word \"create\" reused at several places (like create buttons)", + "id": "global.labels.create" + }, + { + "defaultMessage": "!!!Remove", + "description": "The word \"remove\" reused at several places (like remove buttons)", + "id": "global.labels.remove" + }, + { + "defaultMessage": "!!!Save", + "description": "The word \"save\" reused at several places (like save buttons)", + "id": "global.labels.save" + }, + { + "defaultMessage": "!!!English", + "description": "Language name for \"English\" language.", + "id": "global.language.english" + }, + { + "defaultMessage": "!!!Japanese", + "description": "Language name for \"Japanese\" language.", + "id": "global.language.japanese" + }, + { + "defaultMessage": "!!!Chinese", + "description": "Language name for \"Chinese\" language.", + "id": "global.language.chinese" + }, + { + "defaultMessage": "!!!Korean", + "description": "Language name for \"Korean\" language.", + "id": "global.language.korean" + }, + { + "defaultMessage": "!!!German", + "description": "Language name for \"German\" language.", + "id": "global.language.german" + }, + { + "defaultMessage": "!!!Croatian", + "description": "Language name for \"Croatian\" language.", + "id": "global.language.croatian" + }, + { + "defaultMessage": "!!!:", + "description": "Colon punctuation.", + "id": "global.punctuation.colon" + }, + { + "defaultMessage": "!!!.", + "description": "Final dot punctuation.", + "id": "global.punctuation.dot" + }, + { + "defaultMessage": "!!!Recovery phrase", + "description": "Title for the \"Recovery Phrase\" dialog.", + "id": "wallet.backup.recovery.phrase.dialog.title" + }, + { + "defaultMessage": "!!!Spending Password", + "description": "Label for the \"Wallet password\" input in the create wallet dialog.", + "id": "global.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the create wallet dialog.", + "id": "global.spendingPasswordPlaceholder" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label \"Continue\" in dialogs.", + "id": "global.dialog.button.continue" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", + "description": "URL for the \"Known Issues\" link in the \"Help and support\" section on the support settings page", + "id": "settings.support.faq.faqLinkURL" + }, + { + "defaultMessage": "!!!Cardano", + "description": "Name for \"Cardano\" client.", + "id": "environment.apiName.cardano" + }, + { + "defaultMessage": "!!!Mainnet", + "description": "\"mainnet\" Cardano network", + "id": "environment.network.mainnet" + }, + { + "defaultMessage": "!!!Staging", + "description": "\"staging\" Cardano network", + "id": "environment.network.staging" + }, + { + "defaultMessage": "!!!Testnet", + "description": "\"testnet\" Cardano network", + "id": "environment.network.testnet" + }, + { + "defaultMessage": "!!!Shelley QA", + "description": "\"Shelley QA\" Cardano network", + "id": "environment.network.shelley_qa" + }, + { + "defaultMessage": "!!!Alonzo Purple", + "description": "\"Alonzo Purple\" Cardano network", + "id": "environment.network.alonzo_purple" + }, + { + "defaultMessage": "!!!Development", + "description": "\"development\" Cardano network", + "id": "environment.network.development" + }, + { + "defaultMessage": "!!!Selfnode", + "description": "\"selfnode\" Cardano network", + "id": "environment.network.selfnode" + }, + { + "defaultMessage": "!!!years", + "description": "Label for years value in duration.", + "id": "global.duration.years" + }, + { + "defaultMessage": "!!!months", + "description": "Label for months value in duration.", + "id": "global.duration.months" + }, + { + "defaultMessage": "!!!days", + "description": "Label for days value in duration.", + "id": "global.duration.days" + }, + { + "defaultMessage": "!!!hours", + "description": "Label for hours value in duration.", + "id": "global.duration.hours" + }, + { + "defaultMessage": "!!!minutes", + "description": "Label for minutes value in duration.", + "id": "global.duration.minutes" + }, + { + "defaultMessage": "!!!seconds", + "description": "Label for seconds value in duration.", + "id": "global.duration.seconds" + }, + { + "defaultMessage": "!!!from", + "description": "From label of range.", + "id": "global.range.from" + }, + { + "defaultMessage": "!!!to", + "description": "To label of range.", + "id": "global.range.to" + }, + { + "defaultMessage": "!!!Filter", + "description": "Filter label.", + "id": "global.labels.filter" + }, + { + "defaultMessage": "!!!All", + "description": "All label.", + "id": "global.labels.all" + }, + { + "defaultMessage": "!!!Reset", + "description": "Reset label.", + "id": "global.labels.reset" + }, + { + "defaultMessage": "!!!Reveal", + "description": "Reveal label.", + "id": "global.labels.reveal" + }, + { + "defaultMessage": "!!!Hide", + "description": "Hide label.", + "id": "global.labels.hide" + }, + { + "defaultMessage": "!!!View", + "description": "View label.", + "id": "global.labels.view" + }, + { + "defaultMessage": "!!!Copy", + "description": "Copy label.", + "id": "global.labels.copy" + }, + { + "defaultMessage": "!!!Daedalus is synchronizing with the Cardano blockchain, and the process is currently {syncPercentage}% complete. This feature will become available once Daedalus is fully synchronized.", + "description": "Info message displayed for features which are unavailable while Daedalus is syncing", + "id": "global.info.featureUnavailableWhileSyncing" + }, + { + "defaultMessage": "!!!No results", + "description": "Dropdown search \"No results\" message", + "id": "global.search.noResultsMessage" + } + ], + "path": "source/renderer/app/i18n/global-messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Token", + "description": "Token description.", + "id": "global.labels.token" + } + ], + "path": "source/renderer/app/components/widgets/forms/MnemonicInputWidget.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!PDF creation date {date} {time}", + "description": "PDF title", + "id": "wallet.receive.pdf.creationDate" + }, + { + "defaultMessage": "!!!Note:", + "description": "PDF title", + "id": "wallet.receive.pdf.noteLabel" + }, + { + "defaultMessage": "!!!Daedalus Cardano ada address", + "description": "PDF title", + "id": "wallet.receive.pdf.title" + }, + { + "defaultMessage": "!!!Daedalus wallet", + "description": "PDF author", + "id": "wallet.receive.pdf.author" + }, + { + "defaultMessage": "!!!Cardano Network:", + "description": "PDF networkLabel", + "id": "wallet.receive.pdf.networkLabel" + } + ], + "path": "source/renderer/app/utils/addressPDFGenerator.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet address", + "description": "Paper wallet pdf \"Wallet address\" label.", + "id": "paper.wallet.pdf.walletAddress.label" + }, + { + "defaultMessage": "!!!Paper wallet recovery phrase", + "description": "Paper wallet pdf \"Paper wallet recovery phrase\" label.", + "id": "paper.wallet.pdf.recoveryPhrase.label" + }, + { + "defaultMessage": "!!!Password", + "description": "Paper wallet pdf \"Password\" label.", + "id": "paper.wallet.pdf.password.label" + }, + { + "defaultMessage": "!!!Daedalus paper wallet certificate", + "description": "PDF title", + "id": "paper.wallet.pdf.info.title" + }, + { + "defaultMessage": "!!!Daedalus wallet", + "description": "PDF author", + "id": "paper.wallet.pdf.info.author" + } + ], + "path": "source/renderer/app/utils/paperWalletPdfGenerator.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!ID", + "description": "Transactions CSV column - ID", + "id": "wallet.transactions.csv.column.id" + }, + { + "defaultMessage": "!!!Type", + "description": "Transactions CSV column - Type", + "id": "wallet.transactions.csv.column.type" + }, + { + "defaultMessage": "!!!TOTAL (ADA)", + "description": "Transactions CSV column - TOTAL", + "id": "wallet.transactions.csv.column.amount.total" + }, + { + "defaultMessage": "!!!Sent amount (ADA)", + "description": "Transactions CSV column - Sent amount", + "id": "wallet.transactions.csv.column.amount.sent" + }, + { + "defaultMessage": "!!!Deposit amount (ADA)", + "description": "Transactions CSV column - Deposit amount", + "id": "wallet.transactions.csv.column.amount.deposit" + }, + { + "defaultMessage": "!!!Fee (ADA)", + "description": "Transactions CSV column - Fee", + "id": "wallet.transactions.csv.column.amount.fee" + }, + { + "defaultMessage": "!!!Tokens (unformatted amount)", + "description": "Transactions CSV column - Tokens", + "id": "wallet.transactions.csv.column.tokens" + }, + { + "defaultMessage": "!!!Date & time", + "description": "Transactions CSV column - DateTime", + "id": "wallet.transactions.csv.column.dateTime" + }, + { + "defaultMessage": "!!!Status", + "description": "Transactions CSV column - Status", + "id": "wallet.transactions.csv.column.status" + }, + { + "defaultMessage": "!!!Addresses from", + "description": "Transactions CSV column - AddressesFrom", + "id": "wallet.transactions.csv.column.addressesFrom" + }, + { + "defaultMessage": "!!!Addresses to", + "description": "Transactions CSV column - AddressesTo", + "id": "wallet.transactions.csv.column.addressesTo" + }, + { + "defaultMessage": "!!!Withdrawals", + "description": "Transactions CSV column - Withdrawals", + "id": "wallet.transactions.csv.column.withdrawals" + }, + { + "defaultMessage": "!!!Sent", + "description": "Transactions CSV value - Type Sent", + "id": "wallet.transactions.csv.value.type.sent" + }, + { + "defaultMessage": "!!!Received", + "description": "Transactions CSV value - Type Received", + "id": "wallet.transactions.csv.value.type.received" + }, + { + "defaultMessage": "!!!Confirmed", + "description": "Transactions CSV value - Status Confirmed", + "id": "wallet.transactions.csv.value.statusConfirmed" + }, + { + "defaultMessage": "!!!Pending", + "description": "Transactions CSV value - Status Pending", + "id": "wallet.transactions.csv.value.statusPending" + }, + { + "defaultMessage": "!!!Transactions", + "description": "Transactions CSV \"Transactions\" filename", + "id": "wallet.transactions.csv.filenamePrefix" + } + ], + "path": "source/renderer/app/utils/transactionsCsvGenerator.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Fund{nextVotingFundNumber} Voting Registration", + "description": "PDF title", + "id": "voting.votingRegistration.pdf.title" + }, + { + "defaultMessage": "!!!Wallet name", + "description": "PDF wallet name title", + "id": "voting.votingRegistration.pdf.walletNameLabel" + }, + { + "defaultMessage": "!!!voting-registration", + "description": "PDF filename title", + "id": "voting.votingRegistration.pdf.filename" + }, + { + "defaultMessage": "!!!Cardano network:", + "description": "PDF networkLabel label", + "id": "voting.votingRegistration.pdf.networkLabel" + }, + { + "defaultMessage": "!!!Daedalus wallet", + "description": "PDF author", + "id": "voting.votingRegistration.pdf.author" + } + ], + "path": "source/renderer/app/utils/votingPDFGenerator.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!An error occurred.", + "description": "Generic error message.", + "id": "api.errors.GenericApiError" + }, + { + "defaultMessage": "!!!This API method is not yet implemented.", + "description": "\"This API method is not yet implemented.\" error message.", + "id": "api.errors.ApiMethodNotYetImplementedError" + } + ], + "path": "source/renderer/app/api/common/errors.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Software update available!", + "description": "\"title\" for the App Update Overlay", + "id": "appUpdate.overlay.title" + }, + { + "defaultMessage": "!!!You are currently running Daedalus version {currentAppVersion}.
Daedalus version {availableAppVersion} is now available to download.", + "description": "\"subtitle\" for the App Update Overlay", + "id": "appUpdate.overlay.subtitle" + }, + { + "defaultMessage": "!!!I understand that I need to complete the installation before starting Daedalus.", + "description": "\"checkboxLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.checkboxLabel" + }, + { + "defaultMessage": "!!!Quit Daedalus and start the installation", + "description": "\"buttonLaunchInstallerLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.button.launchInstaller.label" + }, + { + "defaultMessage": "!!!Install the update and restart Daedalus", + "description": "\"buttonInstallUpdateLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.button.installUpdate.label" + }, + { + "defaultMessage": "!!!Postpone the update", + "description": "\"manualUpdateLinkLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.postponeInstall.link.label" + }, + { + "defaultMessage": "!!!Installing update...", + "description": "\"installingUpdateLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.installingUpdate.link.label" + }, + { + "defaultMessage": "!!!Download in progress", + "description": "\"downloadProgressLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.downloadProgressLabel" + }, + { + "defaultMessage": "!!!{downloadTimeLeft} left", + "description": "\"downloadTimeLeft\" for the App Update Overlay", + "id": "appUpdate.overlay.downloadTimeLeft" + }, + { + "defaultMessage": "!!!({totalDownloaded} of {totalDownloadSize} downloaded)", + "description": "\"downloadProgressData\" for the App Update Overlay", + "id": "appUpdate.overlay.downloadProgressData" + }, + { + "defaultMessage": "!!!We were unable to launch the update installer automatically.", + "description": "\"manualUpdateDescriptionError\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.description.error" + }, + { + "defaultMessage": "!!!We were unable to install the update.", + "description": "\"manualUpdateDescriptionErrorLinux\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.description.errorLinux" + }, + { + "defaultMessage": "!!!Please manually update Daedalus to its latest version.", + "description": "\"manualUpdateDescriptionAction\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.description.action" + }, + { + "defaultMessage": "!!!Follow instructions and manually update", + "description": "\"manualUpdateButtonLabel\" for the App Update Overlay", + "id": "appUpdate.overlay.manualUpdate.button.label" + }, + { + "defaultMessage": "!!!https://daedaluswallet.io/en/download/", + "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Mainnet", + "id": "appUpdate.overlay.manualUpdate.button.url.mainnet" + }, + { + "defaultMessage": "!!!https://daedaluswallet.io/en/flight/", + "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Flight", + "id": "appUpdate.overlay.manualUpdate.button.url.flight" + }, + { + "defaultMessage": "!!!https://developers.cardano.org/en/testnets/cardano/get-started/wallet/", + "description": "\"manualUpdateButtonUrl\" for the App Update Overlay on Testnet", + "id": "appUpdate.overlay.manualUpdate.button.url.testnet" + } + ], + "path": "source/renderer/app/components/appUpdate/AppUpdateOverlay.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Fingerprint", + "description": "\"fingerprint\" param.", + "id": "assets.assetToken.param.fingerprint" + }, + { + "defaultMessage": "!!!Policy Id", + "description": "\"policyId\" param.", + "id": "assets.assetToken.param.policyId" + }, + { + "defaultMessage": "!!!Asset name", + "description": "\"assetName\" param.", + "id": "assets.assetToken.param.assetName" + }, + { + "defaultMessage": "!!!Name", + "description": "\"name\" param.", + "id": "assets.assetToken.param.name" + }, + { + "defaultMessage": "!!!Ticker", + "description": "\"ticker\" param.", + "id": "assets.assetToken.param.ticker" + }, + { + "defaultMessage": "!!!Description", + "description": "\"description\" param.", + "id": "assets.assetToken.param.description" + }, + { + "defaultMessage": "!!!Blank", + "description": "\"Blank\" param value.", + "id": "assets.assetToken.param.blank" + }, + { + "defaultMessage": "!!!You can configure the number of decimal places for this native token.", + "description": "Asset settings pop over content", + "id": "assets.assetToken.settings.cogPopOver" + } + ], + "path": "source/renderer/app/components/assets/AssetContent.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Recommended configuration for decimal places for this native token is available.", + "description": "Asset settings recommended pop over content", + "id": "assets.warning.available" + }, + { + "defaultMessage": "!!!You are not using the recommended decimal place configuration for this native token.", + "description": "Asset settings recommended pop over content", + "id": "assets.warning.notUsing" + }, + { + "defaultMessage": "!!!Send", + "description": "Send button on Wallet summary assets page", + "id": "wallet.summary.asset.tokenSendButton" + }, + { + "defaultMessage": "!!!Amount", + "description": "Amount label on Wallet summary assets page", + "id": "wallet.summary.asset.amountLabel" + }, + { + "defaultMessage": "!!!Settings", + "description": "Settings label on Wallet summary assets page", + "id": "wallet.summary.asset.settings.button.label" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-token/WalletToken.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Unformatted amount {amount}", + "description": "Unformatted amount", + "id": "assets.assetAmount.unformattedAmount" + } + ], + "path": "source/renderer/app/components/assets/AssetAmount.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Native token settings", + "description": "\"title\" for the Asset settings dialog", + "id": "assets.settings.dialog.title" + }, + { + "defaultMessage": "!!!Updates made here will be applied in other wallets containing this token too.", + "description": "\"description\" for the Asset settings dialog", + "id": "assets.settings.dialog.description" + }, + { + "defaultMessage": "!!!Unformatted amount", + "description": "\"formattedBalanceLabel\" for the Asset settings dialog", + "id": "assets.settings.dialog.formattedAmount.label" + }, + { + "defaultMessage": "!!!Formatted amount", + "description": "\"unformattedBalanceLabel\" for the Asset settings dialog", + "id": "assets.settings.dialog.unformattedAmount.label" + }, + { + "defaultMessage": "!!!Number of decimal places", + "description": "\"decimalPrecisionLabel\" for the Asset settings dialog", + "id": "assets.settings.dialog.decimalPrecision.label" + }, + { + "defaultMessage": "!!!(recommended)", + "description": "\"recommended\" for the Asset settings dialog", + "id": "assets.settings.dialog.recommended" + }, + { + "defaultMessage": "!!!(default)", + "description": "\"default\" for the Asset settings dialog", + "id": "assets.settings.dialog.default" + } + ], + "path": "source/renderer/app/components/assets/AssetSettingsDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Token #{assetNumber}", + "description": "\"assetLabel\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.assetLabel" + }, + { + "defaultMessage": "!!!unformatted amount", + "description": "\"unformattedAmountLabel\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.unformattedAmountLabel" + }, + { + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", + "description": "\"unformattedAmountMessageForHardwareWallets\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.unformattedAmountMessageForHardwareWallets" + }, + { + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", + "description": "\"unformattedAmountMessageForSoftwareWallets\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.unformattedAmountMessageForSoftwareWallets" + }, + { + "defaultMessage": "!!!There is no such token in this wallet", + "description": "\"missingToken\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.missingToken" + }, + { + "defaultMessage": "!!!Insufficient funds. The balance of the token in this wallet is {formattedBalance} (Unformatted: {unformattedBalance})", + "description": "\"insufficientBalance\" item on AssetTransactionConfirmation.", + "id": "asset.transactionConfirmation.insufficientBalance" + } + ], + "path": "source/renderer/app/components/assets/AssetTransactionConfirmation.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Transaction request", + "description": "\"title\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.title" + }, + { + "defaultMessage": "!!!triggered from {triggeredFrom}", + "description": "\"subtitle\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.subtitle" + }, + { + "defaultMessage": "!!!From wallet", + "description": "\"fromWalletLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.fromWalletLabel" + }, + { + "defaultMessage": "!!!Receiver", + "description": "\"receiver\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.receiver.label" + }, + { + "defaultMessage": "!!!Select a wallet", + "description": "\"walletsDropdownPlaceholder\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.walletsDropdown.placeholder" + }, + { + "defaultMessage": "!!!Add a wallet", + "description": "\"addWalletLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.walletsDropdown.addWalletLabel" + }, + { + "defaultMessage": "!!!Transaction fee", + "description": "\"transactionFeeLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.transactionFee.label" + }, + { + "defaultMessage": "!!!Additional data", + "description": "\"additionalDataLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.additionalData.label" + }, + { + "defaultMessage": "!!!Meta data", + "description": "\"metaDataLabel\" in the dApp transaction request dialog", + "id": "dapp.transaction.request.metaData.label" + }, + { + "defaultMessage": "!!!This wallet does not contain the minimum amount of {adaBalanceRequired} which is required for delegation to be available. Please select a wallet with a minimum amount of {adaBalanceRequired}.", + "description": "\"Not enough ada\" error in the dApp transaction request dialog", + "id": "dapp.transaction.request.error.notEnoughAda" + } + ], + "path": "source/renderer/app/components/dapp/DappTransactionRequest.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Connect your device and enter your PIN to unlock it", + "description": "\"Connect your device and enter your PIN to unlock it\" device state", + "id": "wallet.hardware.deviceStatus.connecting" + }, + { + "defaultMessage": "!!!Disconnect and reconnect your device to restart the process.", + "description": "\"Connect failed\" device state", + "id": "wallet.hardware.deviceStatus.connecting.failed" + }, + { + "defaultMessage": "!!!Connect the \"{walletName}\" device", + "description": "\"Connect the IOHK Trezor 1 device\" device state", + "id": "wallet.hardware.deviceStatus.connecting.known" + }, + { + "defaultMessage": "!!!Launch Cardano application on your device", + "description": "\"Launch Cardano application on your device\" device state", + "id": "wallet.hardware.deviceStatus.launching_cardano_app" + }, + { + "defaultMessage": "!!!Export the public key on your device", + "description": "\"Confirm exporting your public key on your device\" device state", + "id": "wallet.hardware.deviceStatus.exporting_public_key" + }, + { + "defaultMessage": "!!!Exporting the public key failed", + "description": "\"Exporting public key failed\" device state", + "id": "wallet.hardware.deviceStatus.exporting_public_key_failed" + }, + { + "defaultMessage": "!!!We do not recognize this wallet on your device. Please ensure that you are using the same device that you selected for pairing {walletName} and that you have entered the correct passphrase.", + "description": "\"Unrecognized wallet\" device state", + "id": "wallet.hardware.deviceStatus.unrecognized_wallet" + }, + { + "defaultMessage": "!!!Disconnect and reconnect your device to restart the process.", + "description": "\"Disconnect and reconnect your device to start the process again\" device state", + "id": "wallet.hardware.deviceStatus.exportingPublicKeyError" + }, + { + "defaultMessage": "!!!Enter passphrase if needed", + "description": "\"Enter passphrase if needed\" device sub-state", + "id": "wallet.hardware.deviceStatus.enterPassphrase" + }, + { + "defaultMessage": "!!!Device ready", + "description": "\"Device ready\" device state", + "id": "wallet.hardware.deviceStatus.ready" + }, + { + "defaultMessage": "!!!Confirm the transaction using the \"{walletName}\" device", + "description": "\"Confirm the transaction using the IOHK Trezor 1 device\" device state", + "id": "wallet.hardware.deviceStatus.verifying_transaction" + }, + { + "defaultMessage": "!!!Transaction verification and signing failed", + "description": "\"Transaction verification and signing failed\" device state", + "id": "wallet.hardware.deviceStatus.verifying_transaction_failed" + }, + { + "defaultMessage": "!!!Transaction confirmed", + "description": "\"Transaction verified and signed\" device state", + "id": "wallet.hardware.deviceStatus.verifying_transaction_succeeded" + }, + { + "defaultMessage": "!!!Trezor Bridge not installed!", + "description": "\"Trezor Bridge not installed! {instructionsLink}\" device state", + "id": "wallet.hardware.deviceStatus.trezor_bridge_failure" + }, + { + "defaultMessage": "!!!Installation instructions", + "description": "Trezor Bridge installation instructions link label", + "id": "wallet.hardware.deviceStatus.trezor_bridge_failure.link.label" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", + "description": "URL for the \"Trezor Bridge\" update", + "id": "wallet.hardware.deviceStatus.trezor_bridge_failure.link.url" + }, + { + "defaultMessage": "!!!Unsupported firmware! {instructionsLink}", + "description": "\"Unsupported firmware!\" device state", + "id": "wallet.hardware.deviceStatus.wrong_firmware" + }, + { + "defaultMessage": "!!!Firmware update instructions", + "description": "Firmware update installation instructions link label", + "id": "wallet.hardware.deviceStatus.wrong_firmware.link.label" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360011451693", + "description": "URL for the \"Firmware Update\"", + "id": "wallet.hardware.deviceStatus.wrong_firmware.link.url" + }, + { + "defaultMessage": "!!!The device is not supported!", + "description": "\"The device is not supported!\" device state", + "id": "wallet.hardware.deviceStatus.unsupported_device" + }, + { + "defaultMessage": "!!!Outdated Ledger software!! {instructionsLink}", + "description": "\"Unsupported firmware!\" device state", + "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version" + }, + { + "defaultMessage": "!!!Software update instructions", + "description": "Firmware update installation instructions link label", + "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version.link.label" + }, + { + "defaultMessage": "!!!https://support.ledger.com/hc/en-us/articles/360020095874-Cardano-ADA-", + "description": "URL for the \"Firmware Update\"", + "id": "wallet.hardware.deviceStatus.wrong_cardano_app_version.link.url" + }, + { + "defaultMessage": "!!!Verify address on your \"{walletName}\" device", + "description": "\"Verify receiving address on your Hardware Wallet device", + "id": "wallet.hardware.deviceStatus.verifying_address" + }, + { + "defaultMessage": "!!!Please answer the question below", + "description": "\"Confirm receiving address on your Hardware Wallet device", + "id": "wallet.hardware.deviceStatus.verifying_address_confirmation" + }, + { + "defaultMessage": "!!!Address verification failed", + "description": "\"Address verification failed\" device state", + "id": "wallet.hardware.deviceStatus.verifying_address_failed" + }, + { + "defaultMessage": "!!!Verification was aborted by the user", + "description": "\"Address verification aborted\" device state", + "id": "wallet.hardware.deviceStatus.verifying_address_aborted" + }, + { + "defaultMessage": "!!!Address verified", + "description": "\"Address verified\" device state", + "id": "wallet.hardware.deviceStatus.verifying_address_succeeded" + } + ], + "path": "source/renderer/app/components/hardware-wallet/HardwareWalletStatus.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "Newsfeed is empty", + "description": "Newsfeed is empty", + "id": "news.newsfeed.empty" + }, + { + "defaultMessage": "Trying to fetch the newsfeed...", + "description": "Trying to fetch the newsfeed...", + "id": "news.newsfeed.noFetch" + }, + { + "defaultMessage": "Newsfeed", + "description": "Newsfeed", + "id": "news.newsfeed.title" + } + ], + "path": "source/renderer/app/components/news/NewsFeed.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Byron", + "description": "Label \"Byron\" on the legacy badge.", + "id": "wallet.byron.badge.label" + } + ], + "path": "source/renderer/app/components/notifications/LegacyBadge.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Move funds from {activeWalletName}", + "description": "Title \"Move funds from the legacy wallet\" on the legacy notification.", + "id": "wallet.byron.notification.moveFundsTitle" + }, + { + "defaultMessage": "!!!Create a Shelley wallet", + "description": "Title \"Create a Shelley wallet\" on the legacy notification.", + "id": "wallet.byron.notification.addWalletTitle" + }, + { + "defaultMessage": "!!!\"{activeWalletName}\"\" is a Byron legacy wallet that does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new wallet that is Shelley-compatible.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.moveFundsDescription.line1" + }, + { + "defaultMessage": "!!!You can create a {moveFundsLink} or move funds to one of your existing wallets.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.moveFundsDescription.line2" + }, + { + "defaultMessage": "!!!brand new wallet", + "description": "Legacy notification link label.", + "id": "wallet.byron.notification.moveFundsDescription.line2.link.label" + }, + { + "defaultMessage": "!!!\"{transferWalletName}\"\" is a legacy wallet. It does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new, Shelley-compatible wallet. You can create a brand new wallet or move funds to one of the existing wallets.", + "description": "Legacy notification description WithFunds.", + "id": "wallet.legacy.notification.descriptionWithFunds" + }, + { + "defaultMessage": "!!!\"{activeWalletName}\"\" is a Byron legacy wallet that does not support Shelley delegation features. To earn ada from delegating your stake, please move all funds from this wallet to a new wallet that is Shelley-compatible.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.addWalletDescription.line1" + }, + { + "defaultMessage": "!!!Since all of your wallets are Byron legacy wallets you will first need to create a new Shelley wallet.", + "description": "Legacy notification description.", + "id": "wallet.byron.notification.addWalletDescription.line2" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more action of legacy notification.", + "id": "wallet.byron.notification.actionLearnMore" + }, + { + "defaultMessage": "!!!Move ada to an existing wallet", + "description": "Move Move ada from this wallet of legacy notification.", + "id": "wallet.byron.notification.actionMove" + }, + { + "defaultMessage": "!!!Create a new wallet", + "description": "Create a new wallet action of legacy notification.", + "id": "wallet.byron.notification.addWallet" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360038726373", + "description": "\"Learn more\" link URL", + "id": "wallet.byron.notification.learnMore.url" + } + ], + "path": "source/renderer/app/components/notifications/LegacyNotification.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The balance and transaction history of this wallet is {percentage}% synced with the blockchain.", + "description": "Status message \"Wallet restore in progress\" shown while wallet is being restored.", + "id": "wallet.statusMessages.activeRestore" + } + ], + "path": "source/renderer/app/components/notifications/RestoreNotification.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallets", + "description": "Text for the tooltip of wallets category", + "id": "sidebar.categoryTooltip.wallets" + }, + { + "defaultMessage": "!!!Staking", + "description": "Text for the tooltip of staking category", + "id": "sidebar.categoryTooltip.staking" + }, + { + "defaultMessage": "!!!Settings", + "description": "Text for the tooltip of settings category", + "id": "sidebar.categoryTooltip.settings" + }, + { + "defaultMessage": "!!!Voting", + "description": "Text for the tooltip of voting category", + "id": "sidebar.categoryTooltip.voting" + } + ], + "path": "source/renderer/app/components/sidebar/SidebarCategory.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Mainnet vx", + "description": "Label for mainnet network with version.", + "id": "test.environment.mainnetLabel" + } + ], + "path": "source/renderer/app/components/sidebar/SidebarCategoryNetworkInfo.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cardano mainnet - Daedalus Flight", + "description": "Label for Daedalus Flight with version.", + "id": "test.environment.daedalusFlightLabel" + }, + { + "defaultMessage": "!!!Testnet vx", + "description": "Label for testnet with version.", + "id": "test.environment.testnetLabel" + }, + { + "defaultMessage": "!!!Staging vx", + "description": "Label for staging network with version.", + "id": "test.environment.stagingLabel" + }, + { + "defaultMessage": "!!!Shelley QA", + "description": "Label for shelley_qa with version.", + "id": "test.environment.shelleyQaLabel" + }, + { + "defaultMessage": "!!!Alonzo Purple", + "description": "Label for alonzo_purple with version.", + "id": "test.environment.alonzoPurpleLabel" + }, + { + "defaultMessage": "!!!Selfnode vx", + "description": "Label for selfnode with version.", + "id": "test.environment.selfnodeLabel" + }, + { + "defaultMessage": "!!!Development vx", + "description": "Label for development with version.", + "id": "test.environment.developmentLabel" + } + ], + "path": "source/renderer/app/components/widgets/WalletTestEnvironmentLabel.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Daedalus", + "description": "Daedalus", + "id": "static.splash.network.title" + }, + { + "defaultMessage": "!!!FLIGHT", + "description": "FLIGHT", + "id": "static.splash.network.flightVersionName" + }, + { + "defaultMessage": "!!!CARDANO MAINNET", + "description": "Rewards", + "id": "static.splash.network.flightNetworkName" + }, + { + "defaultMessage": "!!!Thank you for downloading the Daedalus Flight wallet! This version of Daedalus is specially created so users can test new features and we can squash usability bugs before pushing releases to the mainnet production version of the Daedalus wallet.", + "description": "flightDescription1 on network splash screen", + "id": "static.splash.network.flightDescription1" + }, + { + "defaultMessage": "!!!Although Flight candidates are designed to test functionality, this is on the mainnet and will be using mainnet ada. Transactions made using Flight candidates will be real ada payments. If you are not a power user, we recommend you stick to using our stable, fully-tested production Daedalus wallet client. It is very important to note that transactions performed in Daedalus Flight are real and your funds will be transferred because the Cardano blockchain will be validating all transactions on mainnet.", + "description": "flightDescription2 on network splash screen", + "id": "static.splash.network.flightDescription2" + }, + { + "defaultMessage": "!!!This is a separate and secure installation, but you will be able to run both Flight and production versions of Daedalus at the same time. To help you differentiate between the two wallets, Daedalus Flight will have a different, dark-blue-and-yellow user interface theme.", + "description": "flightDescription3 on network splash screen", + "id": "static.splash.network.flightDescription3" + }, + { + "defaultMessage": "!!!If you already have a production version of Daedalus installed on your computer, your wallets should be visible in this Flight version as well, and you should have access to your ada in both versions of Daedalus.", + "description": "flightDescription4 on network splash screen", + "id": "static.splash.network.flightDescription4" + }, + { + "defaultMessage": "!!!If you do spot any bugs or inconsistencies in balances and transaction history when using Flight candidates, or want to suggest improvements, feed them directly back to the IOHK development team by submitting a support ticket from the wallet. Wherever relevant, please include your wallet logs so the team can properly assess any issues.", + "description": "flightDescription5 on network splash screen", + "id": "static.splash.network.flightDescription5" + }, + { + "defaultMessage": "!!!I understand", + "description": "I understand", + "id": "static.splash.network.buttonLabel" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more", + "id": "static.splash.network.linkLabel" + }, + { + "defaultMessage": "!!!https://daedaluswallet.io/flight", + "description": "\"Learn more\" link URL on the network splash screen", + "id": "static.splash.network.flightLinkUrl" + } + ], + "path": "source/renderer/app/components/splash/SplashNetworkFlight.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Daedalus", + "description": "About \"title\"", + "id": "static.about.title" + }, + { + "defaultMessage": "!!!Daedalus Team:", + "description": "About page daedalus team headline", + "id": "static.about.content.daedalus.headline" + }, + { + "defaultMessage": "!!!Cardano Team:", + "description": "About page cardano team headline", + "id": "static.about.content.cardano.headline" + }, + { + "defaultMessage": "!!!Alan McNicholas, Aleksandar Djordjevic, Alexander Rukin, Brian McKenna, Charles Hoskinson, Daniel Main, Danilo Prates, Darko Mijić, Dmitrii Gaico, Dominik Guzei, Elin Liu, Gabriela Ponce, Jane Wild, Jeremy Wood, Juli Sudi, Junko Oda, Laurie Wang, Lucas Araujo, Manus McCole, Marcin Mazurek, Michael Bishop, Michael Chappell, Mior Sufian, Nikola Glumac, Piotr Stachyra, Przemysław Włodek, Renan Ferreira, Rhys Bartels-Waller, Richard Wild, Robert Moore, Rodney Lorrimar, Sam Jeston, Samuel Leathers, Serge Kosyrev, Szymon Masłowski, Tatyana Valkevych, Tomas Vrana, Tomislav Horaček, Yakov Karavelov", + "description": "About page daedalus team members", + "id": "static.about.content.daedalus.members" + }, + { + "defaultMessage": "!!!Alan McNicholas, Alejandro Garcia, Alexander Diemand, Alexander Vieth, Anatoli Ivanou, Andreas Triantafyllos, Ante Kegalj, Armando Santos, Ben Ford, Charles Hoskinson, Dan Friedman, Deepak Kapiswe, Denis Shevchenko, Dorin Solomon, Duncan Coutts, Edsko de Vries, Erik de Castro Lopo, Gerard Moroney, Hiroto Shioi, Jane Wild, Jean-Christophe Mincke, Jeremy Wood, Johannes Lund, Jordan Millar, Karl Knutsson, Kristijan Šarić, Lars Brünjes, Laurie Wang, Liz Bancroft, Luke Nadur, Marc Fontaine, Marcin Szamotulski, Matt Parsons, Matthias Benkort, Michael Bishop, Michael Hueschen, Moritz Angermann, Neil Davis, Niamh Ahern, Nicholas Clarke, Nicolas Di Prima, Noel Rimbert, Patrick Kelly, Pawel Jakubas, Peter Gaži, Peter Thompson, Philipp Kant, Piotr Stachyra, Ravi Patel, Richard Wild, Rob Cohen, Rodney Lorrimar, Ryan Lemmer, Samuel Leathers, Serge Kosyrev, Tatyana Valkevych, Tom Flynn, Vasileios Gkoumas, Vincent Hanquez", + "description": "About page cardano team members", + "id": "static.about.content.cardano.members" + }, + { + "defaultMessage": "!!!Input Output HK Limited. Licensed under", + "description": "About \"copyright\"", + "id": "static.about.copyright" + }, + { + "defaultMessage": "!!!Apache 2.0 license", + "description": "About page license name", + "id": "static.about.license" + }, + { + "defaultMessage": "!!!MacOS build 3769, with Cardano 1.0.4", + "description": "About page build information", + "id": "static.about.buildInfo" + } + ], + "path": "source/renderer/app/components/static/About.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!SYSTEM INFO", + "description": "System info", + "id": "daedalus.diagnostics.dialog.system.info" + }, + { + "defaultMessage": "!!!Platform", + "description": "Platform", + "id": "daedalus.diagnostics.dialog.platform" + }, + { + "defaultMessage": "!!!Platform version", + "description": "Platform version", + "id": "daedalus.diagnostics.dialog.platform.version" + }, + { + "defaultMessage": "!!!CPU", + "description": "CPU", + "id": "daedalus.diagnostics.dialog.cpu" + }, + { + "defaultMessage": "!!!RAM", + "description": "RAM", + "id": "daedalus.diagnostics.dialog.ram" + }, + { + "defaultMessage": "!!!Available disk space", + "description": "Available disk space", + "id": "daedalus.diagnostics.dialog.availableDiskSpace" + }, + { + "defaultMessage": "!!!Unknown", + "description": "Unknown amount of disk space", + "id": "daedalus.diagnostics.dialog.unknownDiskSpace" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc", + "description": "\"Support\" link URL while disk space is unknown", + "id": "daedalus.diagnostics.dialog.unknownDiskSpaceSupportUrl" + }, + { + "defaultMessage": "!!!Recommended system requirements status", + "description": "Displayed on the left of the Recommended system requirements status row", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatus" + }, + { + "defaultMessage": "!!!Low", + "description": "Displayed on the right of the Recommended system requirements status row when hardware requirements are insufficient", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusLowValue" + }, + { + "defaultMessage": "!!!Good", + "description": "Displayed on the right of the Recommended system requirements status row when hardware requirements are ok", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusGoodValue" + }, + { + "defaultMessage": "!!!Your system specifications do not meet Daedalus’ recommended hardware requirements. We suggest using a machine with at least 16 GB of RAM", + "description": "Visible on hovering over Recommended system requirement status when status is Low", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusLowTooltip" + }, + { + "defaultMessage": "!!!Your system specifications meet Daedalus’ recommended hardware requirements", + "description": "Visible on hovering over Recommended system requirement status when status is Good", + "id": "daedalus.diagnostics.dialog.hasMetHardwareRequirementsStatusGoodTooltip" + }, + { + "defaultMessage": "!!!RTS Flags Mode", + "description": "Indicates whether RTS Flags Mode is enabled or not", + "id": "daedalus.diagnostics.dialog.isRTSFlagsModeEnabled" + }, + { + "defaultMessage": "!!!CORE INFO", + "description": "CORE INFO", + "id": "daedalus.diagnostics.dialog.coreInfo" + }, + { + "defaultMessage": "!!!Daedalus version", + "description": "Daedalus version", + "id": "daedalus.diagnostics.dialog.daedalusVersion" + }, + { + "defaultMessage": "!!!Daedalus build number", + "description": "Daedalus build number", + "id": "daedalus.diagnostics.dialog.daedalusBuildNumber" + }, + { + "defaultMessage": "!!!Daedalus main process ID", + "description": "Daedalus main process ID", + "id": "daedalus.diagnostics.dialog.daedalusMainProcessID" + }, + { + "defaultMessage": "!!!Daedalus renderer process ID", + "description": "Daedalus renderer process ID", + "id": "daedalus.diagnostics.dialog.daedalusProcessID" + }, + { + "defaultMessage": "!!!Daedalus 'Blank Screen Fix' active", + "description": "Daedalus 'Blank Screen Fix' active", + "id": "daedalus.diagnostics.dialog.blankScreenFix" + }, + { + "defaultMessage": "!!!Cardano node version", + "description": "Cardano node version", + "id": "daedalus.diagnostics.dialog.cardanoNodeVersion" + }, + { + "defaultMessage": "!!!Cardano node process ID", + "description": "Cardano node process ID", + "id": "daedalus.diagnostics.dialog.cardanoNodePID" + }, + { + "defaultMessage": "!!!Cardano node port", + "description": "Cardano node port", + "id": "daedalus.diagnostics.dialog.cardanoNodeApiPort" + }, + { + "defaultMessage": "!!!Cardano wallet process ID", + "description": "Cardano wallet process ID", + "id": "daedalus.diagnostics.dialog.cardanoWalletPID" + }, + { + "defaultMessage": "!!!Cardano wallet version", + "description": "Cardano wallet version", + "id": "daedalus.diagnostics.dialog.cardanoWalletVersion" + }, + { + "defaultMessage": "!!!Cardano wallet port", + "description": "Cardano wallet port", + "id": "daedalus.diagnostics.dialog.cardanoWalletApiPort" + }, + { + "defaultMessage": "!!!Cardano network", + "description": "Cardano network", + "id": "daedalus.diagnostics.dialog.cardanoNetwork" + }, + { + "defaultMessage": "!!!Daedalus state directory", + "description": "Daedalus state directory", + "id": "daedalus.diagnostics.dialog.stateDirectory" + }, + { + "defaultMessage": "!!!Open", + "description": "Open", + "id": "daedalus.diagnostics.dialog.stateDirectoryPathOpenBtn" + }, + { + "defaultMessage": "!!!CONNECTION ERROR", + "description": "CONNECTION ERROR", + "id": "daedalus.diagnostics.dialog.connectionError" + }, + { + "defaultMessage": "!!!DAEDALUS STATUS", + "description": "DAEDALUS STATUS", + "id": "daedalus.diagnostics.dialog.daedalusStatus" + }, + { + "defaultMessage": "!!!Connected", + "description": "Connected", + "id": "daedalus.diagnostics.dialog.connected" + }, + { + "defaultMessage": "!!!Synced", + "description": "Synced", + "id": "daedalus.diagnostics.dialog.synced" + }, + { + "defaultMessage": "!!!Sync percentage", + "description": "Sync percentage", + "id": "daedalus.diagnostics.dialog.syncPercentage" + }, + { + "defaultMessage": "!!!Local time difference", + "description": "Local time difference", + "id": "daedalus.diagnostics.dialog.localTimeDifference" + }, + { + "defaultMessage": "!!!System time correct", + "description": "System time correct", + "id": "daedalus.diagnostics.dialog.systemTimeCorrect" + }, + { + "defaultMessage": "!!!System time ignored", + "description": "System time ignored", + "id": "daedalus.diagnostics.dialog.systemTimeIgnored" + }, + { + "defaultMessage": "!!!Checking system time", + "description": "Checking system time", + "id": "daedalus.diagnostics.dialog.checkingNodeTime" + }, + { + "defaultMessage": "!!!CARDANO NODE STATUS", + "description": "CARDANO NODE STATUS", + "id": "daedalus.diagnostics.dialog.cardanoNodeStatus" + }, + { + "defaultMessage": "!!!Restarting Cardano node...", + "description": "Restarting Cardano node...", + "id": "daedalus.diagnostics.dialog.cardanoNodeStatusRestarting" + }, + { + "defaultMessage": "!!!Restart Cardano node", + "description": "Restart Cardano node", + "id": "daedalus.diagnostics.dialog.cardanoNodeStatusRestart" + }, + { + "defaultMessage": "!!!Cardano node state", + "description": "Cardano node state", + "id": "daedalus.diagnostics.dialog.cardanoNodeState" + }, + { + "defaultMessage": "!!!Updated", + "description": "Updated", + "id": "daedalus.diagnostics.dialog.nodeHasBeenUpdated" + }, + { + "defaultMessage": "!!!Crashed", + "description": "Crashed", + "id": "daedalus.diagnostics.dialog.nodeHasCrashed" + }, + { + "defaultMessage": "!!!Errored", + "description": "Errored", + "id": "daedalus.diagnostics.dialog.nodeHasErrored" + }, + { + "defaultMessage": "!!!Stopped", + "description": "Stopped", + "id": "daedalus.diagnostics.dialog.nodeHasStopped" + }, + { + "defaultMessage": "!!!Exiting", + "description": "Exiting", + "id": "daedalus.diagnostics.dialog.nodeIsExiting" + }, + { + "defaultMessage": "!!!Running", + "description": "Running", + "id": "daedalus.diagnostics.dialog.nodeIsRunning" + }, + { + "defaultMessage": "!!!Starting", + "description": "Starting", + "id": "daedalus.diagnostics.dialog.nodeIsStarting" + }, + { + "defaultMessage": "!!!Stopping", + "description": "Stopping", + "id": "daedalus.diagnostics.dialog.nodeIsStopping" + }, + { + "defaultMessage": "!!!Unrecoverable", + "description": "Unrecoverable", + "id": "daedalus.diagnostics.dialog.nodeIsUnrecoverable" + }, + { + "defaultMessage": "!!!Updating", + "description": "Updating", + "id": "daedalus.diagnostics.dialog.nodeIsUpdating" + }, + { + "defaultMessage": "!!!Cardano node responding", + "description": "Cardano node responding", + "id": "daedalus.diagnostics.dialog.cardanoNodeResponding" + }, + { + "defaultMessage": "!!!Cardano node subscribed", + "description": "Cardano node subscribed", + "id": "daedalus.diagnostics.dialog.cardanoNodeSubscribed" + }, + { + "defaultMessage": "!!!Cardano node time correct", + "description": "Cardano node time correct", + "id": "daedalus.diagnostics.dialog.cardanoNodeTimeCorrect" + }, + { + "defaultMessage": "!!!Cardano node syncing", + "description": "Cardano node syncing", + "id": "daedalus.diagnostics.dialog.cardanoNodeSyncing" + }, + { + "defaultMessage": "!!!Cardano node in sync", + "description": "Cardano node in sync", + "id": "daedalus.diagnostics.dialog.cardanoNodeInSync" + }, + { + "defaultMessage": "!!!Checking...", + "description": "Checking...", + "id": "daedalus.diagnostics.dialog.localTimeDifferenceChecking" + }, + { + "defaultMessage": "!!!Check time", + "description": "Check time", + "id": "daedalus.diagnostics.dialog.localTimeDifferenceCheckTime" + }, + { + "defaultMessage": "!!!Yes", + "description": "Yes", + "id": "daedalus.diagnostics.dialog.statusOn" + }, + { + "defaultMessage": "!!!No", + "description": "No", + "id": "daedalus.diagnostics.dialog.statusOff" + }, + { + "defaultMessage": "!!!On", + "description": "On", + "id": "daedalus.diagnostics.dialog.statusOnForUserSettings" + }, + { + "defaultMessage": "!!!Off", + "description": "Off", + "id": "daedalus.diagnostics.dialog.statusOffForUserSettings" + }, + { + "defaultMessage": "!!!NTP service unreachable", + "description": "NTP service unreachable", + "id": "daedalus.diagnostics.dialog.serviceUnreachable" + }, + { + "defaultMessage": "!!!message", + "description": "message", + "id": "daedalus.diagnostics.dialog.message" + }, + { + "defaultMessage": "!!!code", + "description": "code", + "id": "daedalus.diagnostics.dialog.code" + }, + { + "defaultMessage": "!!!Last network block", + "description": "Last network block", + "id": "daedalus.diagnostics.dialog.lastNetworkBlock" + }, + { + "defaultMessage": "!!!Last synchronized block", + "description": "Last synchronized block", + "id": "daedalus.diagnostics.dialog.lastSynchronizedBlock" + }, + { + "defaultMessage": "!!!epoch", + "description": "epoch", + "id": "daedalus.diagnostics.dialog.epoch" + }, + { + "defaultMessage": "!!!slot", + "description": "slot", + "id": "daedalus.diagnostics.dialog.slot" + } + ], + "path": "source/renderer/app/components/status/DaedalusDiagnostics.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "Newsletter", + "description": "\"Newsletter\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.newsletter" + }, + { + "defaultMessage": "Announcements Channel", + "description": "\"Announcements Channel\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.announcements" + }, + { + "defaultMessage": "Community Chat", + "description": "\"Community Chat\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.community" + }, + { + "defaultMessage": "Projects", + "description": "\"Projects\" link for Project Catalyst footer", + "id": "voting.catalystFooterLinks.projects" + } + ], + "path": "source/renderer/app/components/voting/VotingFooterLinks.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Voting registration for Fund{nextVotingFundNumber} is not available as you currently do not have any Shelley-compatible wallets.", + "description": "\"No wallets\" headLine on the voting info page.", + "id": "voting.info.noWallets.headLine" + }, + { + "defaultMessage": "!!!Create a new wallet and transfer a minimum of {minVotingFunds} ADA (or restore an existing wallet with funds), then return here to register for voting.", + "description": "\"No wallets\" instructions on the voting info page.", + "id": "voting.info.noWallets.instructions" + }, + { + "defaultMessage": "!!!Create wallet", + "description": "Label for \"Create New Wallet\" button on the voting info page.", + "id": "voting.info.noWallets.createWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/VotingNoWallets.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Add wallet", + "description": "Label for the \"Add wallet\" title on the wallet add dialog.", + "id": "wallet.add.dialog.title.label" + }, + { + "defaultMessage": "!!!Create", + "description": "Label for the \"Create\" button on the wallet add dialog.", + "id": "wallet.add.dialog.create.label" + }, + { + "defaultMessage": "!!!Create a new wallet", + "description": "Description for the \"Create a new wallet\" button on the wallet add dialog.", + "id": "wallet.add.dialog.create.description" + }, + { + "defaultMessage": "!!!Join", + "description": "Label for the \"Join\" button on the wallet add dialog.", + "id": "wallet.add.dialog.join.label" + }, + { + "defaultMessage": "!!!Join a shared wallet with up to 5 people", + "description": "Description for the \"Join\" button on the wallet add dialog.", + "id": "wallet.add.dialog.join.description" + }, + { + "defaultMessage": "!!!Pair", + "description": "Label for the \"Connect\" button on the wallet add dialog.", + "id": "wallet.add.dialog.connect.label" + }, + { + "defaultMessage": "!!!Pair a hardware wallet device", + "description": "Description for the \"Connect\" button on the wallet add dialog.", + "id": "wallet.add.dialog.connect.description" + }, + { + "defaultMessage": "!!!Restore", + "description": "Label for the \"Restore\" button on the wallet add dialog.", + "id": "wallet.add.dialog.restore.label" + }, + { + "defaultMessage": "!!!Restore a wallet or paper wallet using wallet recovery phrase", + "description": "Description for the \"Restore\" button with paper wallet certificate on the wallet add dialog.", + "id": "wallet.add.dialog.restore.withCertificate.description" + }, + { + "defaultMessage": "!!!Restore wallet from backup", + "description": "Description for the \"Restore\" button without paper wallet certificate on the wallet add dialog.", + "id": "wallet.add.dialog.restore.withoutCertificate.description" + }, + { + "defaultMessage": "!!!Import", + "description": "Label for the \"Import\" button on the wallet add dialog.", + "id": "wallet.add.dialog.import.label" + }, + { + "defaultMessage": "!!!Import wallets from an earlier version of Daedalus or the Daedalus state directory", + "description": "Description for the \"Import\" button on the wallet add dialog.", + "id": "wallet.add.dialog.import.description" + }, + { + "defaultMessage": "!!!Wallet restoration is currently in progress. Until it completes, it is not possible to restore or import new wallets.", + "description": "Restore notification message shown during async wallet restore on the wallet add screen.", + "id": "wallet.add.dialog.restoreNotificationMessage" + }, + { + "defaultMessage": "!!!You have reached the maximum of 50 wallets.
No more wallets can be added.", + "description": "\"Maximum number of wallets reached\" notification message shown on the wallet add screen if user has 50 wallets.", + "id": "wallet.add.dialog.maxNumberOfWalletsNotificationMessage" + } + ], + "path": "source/renderer/app/components/wallet/WalletAdd.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Pair a hardware wallet device", + "description": "Title \"Connect a hardware wallet device\" in the connect wallet dialog.", + "id": "wallet.connect.dialog.title" + }, + { + "defaultMessage": "!!!Cancel", + "description": "Label for the \"Cancel\" button in the connect wallet dialog", + "id": "wallet.connect.dialog.button.cancel" + }, + { + "defaultMessage": "!!!

Daedalus currently supports Ledger Nano S, Ledger Nano X, and Trezor Model T hardware wallet devices.

If you are pairing your device with Daedalus for the first time, please follow the instructions below.

If you have already paired your device with Daedalus, you don’t need to repeat this step. Just connect your device when you need to confirm a transaction.

", + "description": "Follow instructions label", + "id": "wallet.connect.dialog.instructions" + }, + { + "defaultMessage": "!!!

Daedalus currently supports only Trezor Model T hardware wallet devices.

If you are pairing your device with Daedalus for the first time, please follow the instructions below.

If you have already paired your device with Daedalus, you don’t need to repeat this step. Just connect your device when you need to confirm a transaction.

", + "description": "Follow instructions label", + "id": "wallet.connect.dialog.instructionsTrezorOnly" + }, + { + "defaultMessage": "!!!If you are experiencing issues pairing your hardware wallet device, please {supportLink}", + "description": "Connecting issue support description", + "id": "wallet.connect.dialog.connectingIssueSupportLabel" + }, + { + "defaultMessage": "!!!read the instructions.", + "description": "Connecting issue support link", + "id": "wallet.connect.dialog.connectingIssueSupportLink" + }, + { + "defaultMessage": "https://support.ledger.com/hc/en-us/articles/115005165269", + "description": "Link to support article", + "id": "wallet.connect.dialog.connectingIssueSupportLinkUrl" + } + ], + "path": "source/renderer/app/components/wallet/WalletConnectDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Create a new wallet", + "description": "Title \"Create a new wallet\" in the wallet create dialog.", + "id": "wallet.create.dialog.title" + }, + { + "defaultMessage": "!!!Step {currentStep} of {totalSteps}", + "description": "Step counters in the wallet create dialog.", + "id": "wallet.create.dialog.stepsCounter" + }, + { + "defaultMessage": "!!!Instructions", + "description": "Step \"Instructions\" in the wallet create dialog.", + "id": "wallet.create.dialog.instructionsStep" + }, + { + "defaultMessage": "!!!Template", + "description": "Step \"Template\" in the wallet create dialog.", + "id": "wallet.create.dialog.templateStep" + }, + { + "defaultMessage": "!!!Mnemonics", + "description": "Step \"Mnemonics\" in the wallet create dialog.", + "id": "wallet.create.dialog.mnemonicsStep" + }, + { + "defaultMessage": "!!!Validate", + "description": "Step \"Validate\" in the wallet create dialog.", + "id": "wallet.create.dialog.validateStep" + }, + { + "defaultMessage": "!!!Hash & Image", + "description": "Step \"HashImage\" in the wallet create dialog.", + "id": "wallet.create.dialog.hashImageStep" + }, + { + "defaultMessage": "!!!Config", + "description": "Step \"Config\" in the wallet create dialog.", + "id": "wallet.create.dialog.configStep" + } + ], + "path": "source/renderer/app/components/wallet/wallet-create/WalletCreateSteps.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet name", + "description": "Label for the \"Wallet Name\" text input in the wallet create form.", + "id": "wallet.create.dialog.name.label" + }, + { + "defaultMessage": "!!!Enter wallet name", + "description": "Hint for the \"Wallet Name\" text input in the wallet create form.", + "id": "wallet.create.dialog.walletNameHint" + }, + { + "defaultMessage": "!!!Create Shelley wallet", + "description": "Label for the \"Create Shelley wallet\" button on create wallet dialog.", + "id": "wallet.create.dialog.create.personal.wallet.button.label" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Password creation label.", + "id": "wallet.create.dialog.passwordSectionLabel" + }, + { + "defaultMessage": "!!!Keep your wallet secure by setting a spending password", + "description": "Password creation description.", + "id": "wallet.create.dialog.passwordSectionDescription" + }, + { + "defaultMessage": "!!!Enter password", + "description": "Label for the \"Wallet password\" input in the create wallet dialog.", + "id": "wallet.create.dialog.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the create wallet dialog.", + "id": "wallet.create.dialog.repeatPasswordLabel" + }, + { + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the create wallet dialog.", + "id": "wallet.create.dialog.passwordFieldPlaceholder" + } + ], + "path": "source/renderer/app/components/wallet/WalletCreateDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!It is really good to use Password Manager apps to improve security. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris mattis diam non nulla sollicitudin, ac ultrices purus luctus.", + "description": "Tooltip for the password input in the create wallet dialog.", + "id": "wallet.dialog.passwordTooltip" + }, + { + "defaultMessage": "!!!Name your restored wallet and set a spending password to keep your wallet secure.", + "description": "Description1 for Configuration Step", + "id": "wallet.restore.dialog.step.configuration.description1" + }, + { + "defaultMessage": "!!!Wallet names and spending passwords are only stored locally and are not stored on the blockchain. You can give your restored wallet a new name and set a new spending password, you don’t need to match the wallet name and spending password you were using before. Only the recovery phrase from your original wallet is needed to restore a wallet.", + "description": "Description2 for Configuration Step", + "id": "wallet.restore.dialog.step.configuration.description2" + }, + { + "defaultMessage": "!!!Wallet name", + "description": "Label for Wallet Name Input", + "id": "wallet.restore.dialog.step.configuration.input.walletName.label" + }, + { + "defaultMessage": "!!!Name the wallet you are restoring", + "description": "Placeholder for Wallet Name Input", + "id": "wallet.restore.dialog.step.configuration.input.walletName.placeholder" + }, + { + "defaultMessage": "!!!Enter password", + "description": "Label for the \"Wallet password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.step.configuration.input.spendingPassword.label" + }, + { + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.step.configuration.input.repeatPassword.label" + }, + { + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the wallet restore dialog.", + "id": "wallet.restore.dialog.step.configuration.input.passwordFields.placeholder" + }, + { + "defaultMessage": "!!!Continue", + "description": "Placeholder for the dialog \"Continue\" button", + "id": "wallet.restore.dialog.step.configuration.continueButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/ConfigurationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Restore a wallet", + "description": "Label \"Restore wallet\" on the wallet restore dialog.", + "id": "wallet.restore.dialog.title.label" + }, + { + "defaultMessage": "!!!Wallet name", + "description": "Label for the wallet name input on the wallet restore dialog.", + "id": "wallet.restore.dialog.wallet.name.input.label" + }, + { + "defaultMessage": "!!!Name the wallet you are restoring", + "description": "Hint \"Name the wallet you are restoring\" for the wallet name input on the wallet restore dialog.", + "id": "wallet.restore.dialog.wallet.name.input.hint" + }, + { + "defaultMessage": "!!!Number of words in the recovery phrase", + "description": "Label for the recovery phrase type options on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.options.label" + }, + { + "defaultMessage": "!!! words", + "description": "Word for the recovery phrase type on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.word" + }, + { + "defaultMessage": "!!!Rewards wallet", + "description": "Label for the recovery phrase type 15-word option on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.15word.option" + }, + { + "defaultMessage": "!!!Balance wallet", + "description": "Label for the recovery phrase type 12-word option on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.type.12word.option" + }, + { + "defaultMessage": "!!!Recovery phrase", + "description": "Label for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.input.label" + }, + { + "defaultMessage": "!!!Enter recovery phrase", + "description": "Hint \"Enter recovery phrase\" for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.input.hint" + }, + { + "defaultMessage": "!!!New", + "description": "Label \"new\" on the wallet restore dialog.", + "id": "wallet.restore.dialog.recovery.phrase.newLabel" + }, + { + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "wallet.restore.dialog.recovery.phrase.input.noResults" + }, + { + "defaultMessage": "!!!Restore wallet", + "description": "Label for the \"Restore wallet\" button on the wallet restore dialog.", + "id": "wallet.restore.dialog.restore.wallet.button.label" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "wallet.restore.dialog.form.errors.invalidRecoveryPhrase" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Password creation label.", + "id": "wallet.restore.dialog.passwordSectionLabel" + }, + { + "defaultMessage": "!!!Keep your wallet secure by setting the spending password", + "description": "Password creation description.", + "id": "wallet.restore.dialog.passwordSectionDescription" + }, + { + "defaultMessage": "!!!Enter password", + "description": "Label for the \"Wallet password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the wallet restore dialog.", + "id": "wallet.restore.dialog.repeatPasswordLabel" + }, + { + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the wallet restore dialog.", + "id": "wallet.restore.dialog.passwordFieldPlaceholder" + }, + { + "defaultMessage": "!!!Daedalus wallet", + "description": "Tab title \"Daedalus wallet\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.tab.title.recoveryPhrase" + }, + { + "defaultMessage": "!!!Daedalus paper wallet", + "description": "Tab title \"Daedalus paper wallet\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.tab.title.certificate" + }, + { + "defaultMessage": "!!!Yoroi wallet", + "description": "Tab title \"Yoroi wallet\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.tab.title.yoroi" + }, + { + "defaultMessage": "!!!27-word paper wallet recovery phrase", + "description": "Label for the shielded recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.shielded.recovery.phrase.input.label" + }, + { + "defaultMessage": "!!!Enter your {numberOfWords}-word paper wallet recovery phrase", + "description": "Hint \"Enter your 27-word paper wallet recovery phrase.\" for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.shielded.recovery.phrase.input.hint" + }, + { + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder \"Enter word #\" for the recovery phrase input on the wallet restore dialog.", + "id": "wallet.restore.dialog.shielded.recovery.phrase.input.placeholder" + }, + { + "defaultMessage": "!!!Restore paper wallet", + "description": "Label for the \"Restore paper wallet\" button on the wallet restore dialog.", + "id": "wallet.restore.dialog.paper.wallet.button.label" + } + ], + "path": "source/renderer/app/components/wallet/WalletRestoreDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Back to top", + "description": "\"backToTop\" button label.", + "id": "backToTopButton.label" + } + ], + "path": "source/renderer/app/components/widgets/BackToTopButton.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Newsfeed", + "description": "Newsfeed", + "id": "news.newsfeed.iconTooltip" + } + ], + "path": "source/renderer/app/components/widgets/NewsFeedIcon.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Blocks synced {percentage}%", + "description": "Label for the blocks synced info overlay on node sync status icon.", + "id": "cardano.node.sync.status.blocksSynced" + } + ], + "path": "source/renderer/app/components/widgets/NodeSyncStatusIcon.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Preparing logs for download", + "description": "Notification for download logs in progress in the Loading and Settings pages.", + "id": "notification.downloadLogsProgress" + }, + { + "defaultMessage": "!!!Logs successfully downloaded", + "description": "Notification for download logs in the Loading and Settings pages.", + "id": "notification.downloadLogsSuccess" + }, + { + "defaultMessage": "!!!CSV file successfully downloaded", + "description": "Notification for download Rewards CSV file.", + "id": "notification.downloadRewardsCSVSuccess" + }, + { + "defaultMessage": "!!!CSV file successfully downloaded", + "description": "Notification for download Transactions CSV file.", + "id": "notification.downloadTransactionsCSVSuccess" + }, + { + "defaultMessage": "!!!Public key: {publicKey} copied to clipboard", + "description": "Notification for the wallet public key copy success in the Wallet Settings page.", + "id": "notification.copyWalletPublicKey" + }, + { + "defaultMessage": "!!!ICO Public key: {publicKey} copied to clipboard", + "description": "Notification for the ICO public key copy success in the Wallet Settings page.", + "id": "notification.copyICOPublicKey" + }, + { + "defaultMessage": "!!!Address: {address} copied to clipboard", + "description": "Notification for the wallet address copy success in the Wallet Receive page.", + "id": "notification.copyAddress" + }, + { + "defaultMessage": "!!!{param}: {shortValue} copied to clipboard", + "description": "Notification for the wallet assetItem copy success in the Wallet Receive page.", + "id": "notification.copyAssetParam" + }, + { + "defaultMessage": "!!!Address: {walletAddress} PDF successfully downloaded", + "description": "Notification for the wallet address PDF download success in the Wallet Receive page.", + "id": "notification.downloadAddressPDFSuccess" + }, + { + "defaultMessage": "!!!PDF successfully downloaded", + "description": "Notification for the wallet voting PDF download success in the Voting Registration dialog.", + "id": "notification.downloadVotingPDFSuccess" + }, + { + "defaultMessage": "!!!Address: {walletAddress} QR code image successfully downloaded", + "description": "Notification for the wallet address PDF download success in the Wallet Receive page.", + "id": "notification.downloadQRCodeImageSuccess" + }, + { + "defaultMessage": "!!!Daedalus state directory copied to clipboard", + "description": "Notification for the state directory copy success in the Diagnostics page.", + "id": "notification.copyStateDirectoryPath" + } + ], + "path": "source/renderer/app/containers/notifications/NotificationsContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc", + "description": "\"Learn more\" link URL in the staking countdown page", + "id": "staking.countdown.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/containers/staking/StakingCountdownPage.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://staking.cardano.org/", + "description": "\"Learn more\" link URL in the staking rewards page", + "id": "staking.rewards.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/containers/staking/StakingRewardsPage.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Address", + "description": "\"Address\" word in the Address PDF export", + "id": "wallet.receive.pdf.filenamePrefix" + } + ], + "path": "source/renderer/app/containers/wallet/WalletReceivePage.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No recent transactions", + "description": "Message shown when wallet has no transactions on wallet summary page.", + "id": "wallet.summary.page.no.transactions" + } + ], + "path": "source/renderer/app/containers/wallet/WalletSummaryPage.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Recommended hardware requirements status", + "description": "Title of the RTS flags recommendation overlay", + "id": "knownIssues.rtsRecommendationOverlay.title" + }, + { + "defaultMessage": "!!!

Your system specifications do not meet Daedalus’ recommended hardware requirements.

You can enable RAM management (RTS Flags), an experimental setting that can reduce memory usage on computers with less than 16GB of RAM.

You can enable it now by clicking the ‘Enable and quit’ button. Note that you will have to restart Daedalus for this change to take effect. To enable or disable it at any time, go to the Help menu.

", + "description": "Content of the RTS flags recommendation overlay", + "id": "knownIssues.rtsRecommendationOverlay.content" + }, + { + "defaultMessage": "!!!Enable and quit", + "description": "Enable and quit button label", + "id": "knownIssues.rtsRecommendationOverlay.enableAndQuitButtonLabel" + }, + { + "defaultMessage": "!!!Decide later", + "description": "Decide later button label", + "id": "knownIssues.rtsRecommendationOverlay.decideLaterButtonLabel" + } + ], + "path": "source/renderer/app/components/knownIssues/RTSFlagsRecommendationOverlay/RTSFlagsRecommendationOverlay.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Enable RTS flags (RAM management system)", + "description": "Headline for the RTS flags dialog - when enabling", + "id": "knownIssues.dialog.enableRtsFlagsMode.title" + }, + { + "defaultMessage": "!!!When enabled, the Cardano node will attempt to reduce its RAM usage. You will need to restart Daedalus for this change to take effect.", + "description": "Main body of the dialog - when enabling", + "id": "knownIssues.dialog.enableRtsFlagsMode.explanation" + }, + { + "defaultMessage": "!!!Enable and quit", + "description": "Enable RTS flags button label", + "id": "knownIssues.dialog.enableRtsFlagsMode.actionButton" + }, + { + "defaultMessage": "!!!Disable RTS flags (RAM management system)", + "description": "Headline for the RTS flags dialog - when disabling", + "id": "knownIssues.dialog.disableRtsFlagsMode.title" + }, + { + "defaultMessage": "!!!When disabled, the Cardano node will start in default mode. You will need to restart Daedalus for this change to take effect.", + "description": "Main body of the dialog - when disabling", + "id": "knownIssues.dialog.disableRtsFlagsMode.explanation" + }, + { + "defaultMessage": "!!!Disable and quit", + "description": "Disable RTS flags button label", + "id": "knownIssues.dialog.disableRtsFlagsMode.actionButton" + }, + { + "defaultMessage": "!!!I understand that I will need to launch Daedalus manually", + "description": "Manual relaunch confirmation checkbox label", + "id": "knownIssues.dialog.toggleRtsFlagsMode.manualRelaunchConfirmationCheckboxLabel" + } + ], + "path": "source/renderer/app/components/knownIssues/ToggleRTSFlagsDialog/ToggleRTSFlagsDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Daedalus requires at least {diskSpaceRequired} of hard drive space to operate. Your computer is missing {diskSpaceMissing} of available space. Please delete some files to increase available hard drive space to continue using Daedalus.

It is recommended to have at least 15% of hard drive space available ({diskSpaceRecommended} in your case) for normal and stable operation of the operating system and installed programs. We strongly recommend that you free up at least that amount of space from your hard drive.", + "description": "Content of No disk space overlay", + "id": "noDiskSpace.error.overlayContent" + }, + { + "defaultMessage": "!!!Daedalus requires more hard drive space", + "description": "Title of No disk space overlay", + "id": "noDiskSpace.error.overlayTitle" + } + ], + "path": "source/renderer/app/components/loading/no-disk-space-error/NoDiskSpaceError.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Having trouble connecting to network?", + "description": "Report connecting issue text on the loading screen.", + "id": "loading.screen.reportIssue.connecting.text" + }, + { + "defaultMessage": "!!!Open support ticket", + "description": "Open support ticket button label on the loading.", + "id": "loading.screen.reportIssue.buttonLabel" + }, + { + "defaultMessage": "!!!Read the article", + "description": "Read the article button label on the loading.", + "id": "loading.screen.readArticle.buttonLabel" + }, + { + "defaultMessage": "!!!Download logs", + "description": "Download logs button label on the loading.", + "id": "loading.screen.reportIssue.downloadLogsLinkLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "Link to Open Support page", + "id": "loading.screen.reportIssue.reportIssueButtonUrl" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360010522913", + "description": "Link to connectivity issue article page", + "id": "loading.screen.readIssueArticle.connectivityIssueArticleUrl" + } + ], + "path": "source/renderer/app/components/loading/syncing-connecting/ReportIssue.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cardano node is running!", + "description": "Message \"Cardano node is running\" on the status icon tooltip", + "id": "status.icons.nodeIsRunning" + }, + { + "defaultMessage": "!!!Cardano node is starting!", + "description": "Message \"Node is starting\" on the status icon tooltip", + "id": "status.icons.nodeIsStarting" + }, + { + "defaultMessage": "!!!Cardano node is exiting!", + "description": "Message \"Cardano node is exiting\" on the status icon tooltip", + "id": "status.icons.nodeIsExiting" + }, + { + "defaultMessage": "!!!Cardano node is stopping!", + "description": "Message \"Cardano node is stopping\" on the status icon tooltip", + "id": "status.icons.nodeIsStopping" + }, + { + "defaultMessage": "!!!Cardano node has stopped!", + "description": "Message \"Cardano node has stopped\" on the status icon tooltip", + "id": "status.icons.nodeHasStopped" + }, + { + "defaultMessage": "!!!Cardano node is updating!", + "description": "Message \"Cardano node is updating\" on the status icon tooltip", + "id": "status.icons.nodeIsUpdating" + }, + { + "defaultMessage": "!!!Cardano node has been updated!", + "description": "Message \"Cardano node has been updated\" on the status icon tooltip", + "id": "status.icons.nodeHasBeenUpdated" + }, + { + "defaultMessage": "!!!Cardano node has crashed!", + "description": "Message \"Cardano node has crashed\" on the status icon tooltip", + "id": "status.icons.nodeHasCrashed" + }, + { + "defaultMessage": "!!!Cardano node has errored!", + "description": "Message \"Cardano node has errored\" on the status icon tooltip", + "id": "status.icons.nodeHasErrored" + }, + { + "defaultMessage": "!!!Cardano node is unrecoverable!", + "description": "Message \"Cardano node is unrecoverable\" on the status icon tooltip", + "id": "status.icons.nodeIsUnrecoverable" + }, + { + "defaultMessage": "!!!Check your Internet connection!", + "description": "Message \"Check your Internet connection\" on the status icon tooltip", + "id": "status.icons.checkYourInternetConnection" + }, + { + "defaultMessage": "!!!Cardano node is responding!", + "description": "Message \"Cardano node is responding\" on the status icon tooltip", + "id": "status.icons.isNodeRespondingOn" + }, + { + "defaultMessage": "!!!Cardano node is not responding!", + "description": "Message \"Cardano node is not responding\" on the status icon tooltip", + "id": "status.icons.isNodeRespondingOff" + }, + { + "defaultMessage": "!!!Checking if Cardano node is responding!", + "description": "Message \"Checking if Cardano node is responding\" on the status icon tooltip", + "id": "status.icons.isNodeRespondingLoading" + }, + { + "defaultMessage": "!!!Cardano node is subscribed!", + "description": "Message \"Cardano node is subscribed\" on the status icon tooltip", + "id": "status.icons.isNodeSubscribedOn" + }, + { + "defaultMessage": "!!!Cardano node is not subscribed!", + "description": "Message \"Cardano node is not subscribed\" on the status icon tooltip", + "id": "status.icons.isNodeSubscribedOff" + }, + { + "defaultMessage": "!!!Checking if Cardano node is subscribed!", + "description": "Message \"Checking if Cardano node is subscribed\" on the status icon tooltip", + "id": "status.icons.isNodeSubscribedLoading" + }, + { + "defaultMessage": "!!!Cardano node time is correct!", + "description": "Message \"Cardano node time is correct\" on the status icon tooltip", + "id": "status.icons.isNodeTimeCorrectOn" + }, + { + "defaultMessage": "!!!Cardano node time is not correct!", + "description": "Message \"Cardano node time is not correct\" on the status icon tooltip", + "id": "status.icons.isNodeTimeCorrectOff" + }, + { + "defaultMessage": "!!!Checking if Cardano node time is correct!", + "description": "Message \"Checking if Cardano node time is correct\" on the status icon tooltip", + "id": "status.icons.isNodeTimeCorrectLoading" + }, + { + "defaultMessage": "!!!Cardano node is syncing!", + "description": "Message \"Cardano node is syncing\" on the status icon tooltip", + "id": "status.icons.isNodeSyncingOn" + }, + { + "defaultMessage": "!!!Cardano node is not syncing!", + "description": "Message \"Cardano node is not syncing\" on the status icon tooltip", + "id": "status.icons.isNodeSyncingOff" + }, + { + "defaultMessage": "!!!Checking if Cardano node is syncing!", + "description": "Message \"Checking if Cardano node is syncing\" on the status icon tooltip", + "id": "status.icons.isNodeSyncingLoading" + } + ], + "path": "source/renderer/app/components/loading/syncing-connecting/StatusIcons.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Starting Cardano node", + "description": "Message \"Starting Cardano node\" on the loading screen.", + "id": "loading.screen.startingCardanoMessage" + }, + { + "defaultMessage": "!!!This process validates the integrity of local blockchain data.", + "description": "Message \"Starting Cardano node\" on the loading screen.", + "id": "loading.screen.startingCardanoDescription" + }, + { + "defaultMessage": "!!!Stopping Cardano node", + "description": "Message \"Stopping Cardano node\" on the loading screen.", + "id": "loading.screen.stoppingCardanoMessage" + }, + { + "defaultMessage": "!!!This process updates the databases and could take several minutes.
To preserve data integrity, please wait until this process is complete.", + "description": "Message \"Stopping Cardano node\" on the loading screen.", + "id": "loading.screen.stoppingCardanoDescription" + }, + { + "defaultMessage": "!!!Cardano node stopped", + "description": "Message \"Cardano node stopped\" on the loading screen.", + "id": "loading.screen.stoppedCardanoMessage" + }, + { + "defaultMessage": "!!!Updating Cardano node", + "description": "Message \"Updating Cardano node\" on the loading screen.", + "id": "loading.screen.updatingCardanoMessage" + }, + { + "defaultMessage": "!!!Cardano node updated", + "description": "Message \"Cardano node updated\" on the loading screen.", + "id": "loading.screen.updatedCardanoMessage" + }, + { + "defaultMessage": "!!!Cardano node crashed", + "description": "Message \"Cardano node crashed\" on the loading screen.", + "id": "loading.screen.crashedCardanoMessage" + }, + { + "defaultMessage": "!!!Unable to start Cardano node. Please submit a support request.", + "description": "Message \"Unable to start Cardano node. Please submit a support request.\" on the loading screen.", + "id": "loading.screen.unrecoverableCardanoMessage" + }, + { + "defaultMessage": "!!!Connecting to network", + "description": "Message \"Connecting to network\" on the loading screen.", + "id": "loading.screen.connectingToNetworkMessage" + }, + { + "defaultMessage": "!!!Network connection lost - reconnecting", + "description": "Message \"Network connection lost - reconnecting\" on the loading screen.", + "id": "loading.screen.reconnectingToNetworkMessage" + }, + { + "defaultMessage": "!!!Loading wallet data", + "description": "Message \"Loading wallet data\" on the loading screen.", + "id": "loading.screen.loadingWalletData" + }, + { + "defaultMessage": "!!!TLS certificate is not valid, please restart Daedalus.", + "description": "The TLS cert is not valid and Daedalus should be restarted", + "id": "loading.screen.errors.tlsCertificateNotValidPleaseRestartError" + } + ], + "path": "source/renderer/app/components/loading/syncing-connecting/SyncingConnectingStatus.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Unable to sync - incorrect time", + "description": "Title of Sync error overlay", + "id": "systemTime.error.overlayTitle" + }, + { + "defaultMessage": "!!!Attention, Daedalus is unable to sync with the blockchain because the time on your machine is different from the global time. Your time is off by 2 hours 12 minutes 54 seconds.", + "description": "First paragraph of Sync error overlay", + "id": "systemTime.error.overlayTextP1" + }, + { + "defaultMessage": "!!!To synchronise the time and fix the issue, please read our {supportPortalLink} article.", + "description": "Second paragraph of Sync error overlay", + "id": "systemTime.error.overlayTextP2" + }, + { + "defaultMessage": "!!!Attention, Daedalus is unable to check if the clock on your computer is synchronized with global time because NTP (Network Time Protocol) servers are unreachable, possibly due to firewalls on your network.", + "description": "Text of Sync error overlay when NTP service is unreachable", + "id": "systemTime.error.ntpUnreachableTextP1" + }, + { + "defaultMessage": "!!!If your computer clock is off by more than 15 seconds, Daedalus will be unable to connect to the network. If you have this issue, please read our Support Portal article to synchronize the time on your machine.", + "description": "Text of Sync error overlay when NTP service is unreachable", + "id": "systemTime.error.ntpUnreachableTextP2" + }, + { + "defaultMessage": "!!!Support Portal", + "description": "\"Support Portal\" link text", + "id": "systemTime.error.supportPortalLink" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360010230873", + "description": "Link to \"Machine clock out of sync with Cardano network\" support page", + "id": "systemTime.error.supportPortalLinkUrl" + }, + { + "defaultMessage": "!!!Check the time again", + "description": "Text of Check the time again button", + "id": "systemTime.error.onCheckTheTimeAgainLink" + }, + { + "defaultMessage": "!!!Continue without clock synchronization checks", + "description": "Text of \"Continue without clock synchronization checks\" button", + "id": "systemTime.error.onContinueWithoutClockSyncCheckLink" + } + ], + "path": "source/renderer/app/components/loading/system-time-error/SystemTimeError.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet data migration", + "description": "Title for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.title" + }, + { + "defaultMessage": "!!!You have installed a version of Daedalus that changes how wallet data is stored and managed. Because of this, all of your wallets need to be restored and synchronized with the complete history of the Cardano blockchain.", + "description": "Content for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.content1" + }, + { + "defaultMessage": "!!!This is an automatic process and does not require any action on your behalf.", + "description": "Content for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.content2" + }, + { + "defaultMessage": "!!!Your transaction history and used addresses will appear in your wallets as they are recovered during the restoration process. Addresses that were not used will not be recovered because they are not recorded on the blockchain. If funds were sent to those addresses you will receive the funds and those addresses will appear in your wallet.", + "description": "Content for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.content3" + }, + { + "defaultMessage": "!!!Start migration", + "description": "Submit label for the Data Layer Migration screen.", + "id": "profile.dataLayerMigration.submitLabel" + } + ], + "path": "source/renderer/app/components/profile/data-layer-migration/DataLayerMigrationForm.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!I agree with terms of service", + "description": "Label for the \"I agree with terms of service\" checkbox.", + "id": "profile.termsOfUse.checkboxLabel" + }, + { + "defaultMessage": "!!!I understand that the terms of use are only available in English and agree to the terms of use", + "description": "Label for the \"I agree with terms of service\" checkbox when terms of use are not translated.", + "id": "profile.termsOfUse.checkboxLabelWithDisclaimer" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for the \"Terms of service\" form submit button.", + "id": "profile.termsOfUse.submitLabel" + } + ], + "path": "source/renderer/app/components/profile/terms-of-use/TermsOfUseForm.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Theme", + "description": "Label for the \"Theme\" selection on the display settings page.", + "id": "settings.display.themeLabel" + }, + { + "defaultMessage": "!!!Incentivized Testnet", + "description": "Name of the \"Incentivized Testnet\" theme on the display settings page.", + "id": "settings.display.themeNames.incentivizedTestnet" + }, + { + "defaultMessage": "!!!Light blue", + "description": "Name of the \"Light blue\" theme on the display settings page.", + "id": "settings.display.themeNames.lightBlue" + }, + { + "defaultMessage": "!!!Cardano", + "description": "Name of the \"Cardano\" theme on the display settings page.", + "id": "settings.display.themeNames.cardano" + }, + { + "defaultMessage": "!!!Dark blue", + "description": "Name of the \"Dark blue\" theme on the display settings page.", + "id": "settings.display.themeNames.darkBlue" + }, + { + "defaultMessage": "!!!Dark Cardano", + "description": "Name of the \"Dark cardano\" theme on the display settings page.", + "id": "settings.display.themeNames.darkCardano" + }, + { + "defaultMessage": "!!!Flight Candidate", + "description": "Name of the \"Flight Candidate\" theme on the display settings page.", + "id": "settings.display.themeNames.flightCandidate" + }, + { + "defaultMessage": "!!!Shelley Testnet", + "description": "Name of the \"Shelley Testnet\" theme on the display settings page.", + "id": "settings.display.themeNames.shelleyTestnet" + }, + { + "defaultMessage": "!!!Yellow", + "description": "Name of the \"Yellow\" theme on the display settings page.", + "id": "settings.display.themeNames.yellow" + }, + { + "defaultMessage": "!!!White", + "description": "Name of the \"White\" theme on the display settings page.", + "id": "settings.display.themeNames.white" + } + ], + "path": "source/renderer/app/components/settings/categories/DisplaySettings.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Discreet mode", + "description": "Title for the \"Discreet mode\" setting in the security category.", + "id": "settings.security.discreetMode.title" + }, + { + "defaultMessage": "!!!This mode uses asterisks to hide sensitive data", + "description": "Description for the \"Discreet mode\" setting in the security category.", + "id": "settings.security.discreetMode.description" + }, + { + "defaultMessage": "!!!Start the application in Discreet mode", + "description": "Title for the \"Open in discreet mode\" setting in the security category.", + "id": "settings.security.openInDiscreetMode.title" + }, + { + "defaultMessage": "!!!Daedalus will start with Discreet mode enabled by default", + "description": "Description for the \"Open in discreet mode\" setting in the security category.", + "id": "settings.security.openInDiscreetMode.description" + } + ], + "path": "source/renderer/app/components/settings/categories/SecuritySettings.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The {link} is an off-chain metadata server that enables the fast loading of stake pool details. Stake pools are also curated and each server has a different curation policy.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.description" + }, + { + "defaultMessage": "!!!Stakepool Metadata Aggregation Server (SMASH)", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionLinkLabel" + }, + { + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2020/11/17/in-pools-we-trust/", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionLinkUrl" + }, + { + "defaultMessage": "!!!The IOHK server ensures that registered stake pools are valid, helps to avoid duplicated ticker names or trademarks, and checks that the pools do not feature potentially offensive or harmful information.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKContent1" + }, + { + "defaultMessage": "!!!This allows us to deal with any scams, trolls, or abusive behavior by filtering out potentially problematic actors. {link} about the IOHK SMASH server.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKContent2" + }, + { + "defaultMessage": "!!!Read more", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKLinkLabel" + }, + { + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2020/11/17/in-pools-we-trust/", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionIOHKLinkUrl" + }, + { + "defaultMessage": "!!!This option is not recommended! Without the off-chain metadata server your Daedalus client will fetch this data by contacting every stake pool individually, which is a very slow and resource-consuming process. The list of stake pools received is not curated, so Daedalus will receive legitimate pools, duplicates, and fake pools. An added risk to this process is that your antivirus or antimalware software could recognize the thousands of network requests as malicious behavior by the Daedalus client.", + "description": "description for the Stake Pools settings page.", + "id": "settings.stakePools.smash.descriptionNone" + }, + { + "defaultMessage": "!!!Off-chain metadata server (SMASH)", + "description": "smashSelectLabel for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.label" + }, + { + "defaultMessage": "!!!IOHK (Recommended)", + "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.IOHKServer" + }, + { + "defaultMessage": "!!!None - let my Daedalus client fetch the data", + "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.direct" + }, + { + "defaultMessage": "!!!Custom server", + "description": "smashSelectCustomServer option for the \"Smash\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smash.select.customServer" + }, + { + "defaultMessage": "!!!SMASH server URL", + "description": "smashURLInputLabel for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.label" + }, + { + "defaultMessage": "!!!Enter custom server URL", + "description": "smashUrlInputPlaceholder for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.placeholder" + }, + { + "defaultMessage": "!!!Invalid URL", + "description": "invalidUrl for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.invalidUrl" + }, + { + "defaultMessage": "!!!The URL should start with \"https://\"", + "description": "invalidUrlPrefix for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.invalidUrlPrefix" + }, + { + "defaultMessage": "!!!Only \"https://\" protocol and hostname (e.g. domain.com) are allowed", + "description": "invalidUrlParameter for the \"Smash Custom Server\" selection on the Stake Pools settings page.", + "id": "settings.stakePools.smashUrl.input.invalidUrlParameter" + } + ], + "path": "source/renderer/app/components/settings/categories/StakePoolsSettings.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your changes have been saved", + "description": "Message \"Your changes have been saved\" for inline editing (eg. on Profile Settings page).", + "id": "inline.editing.input.changesSaved" + }, + { + "defaultMessage": "!!!change", + "description": "Label \"change\" on inline editing inputs in inactive state.", + "id": "inline.editing.input.change.label" + }, + { + "defaultMessage": "!!!cancel", + "description": "Label \"cancel\" on inline editing inputs in inactive state.", + "id": "inline.editing.input.cancel.label" + } + ], + "path": "source/renderer/app/components/widgets/forms/InlineEditingInput.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Help and support", + "description": "Title \"Help and support\" on the support settings page.", + "id": "settings.support.faq.title" + }, + { + "defaultMessage": "!!!If you are experiencing a problem, please look for guidance using the list of {faqLink} on the support pages. If you can’t find a solution, please submit a support ticket.", + "description": "Content for the \"Help and support\" section on the support settings page.", + "id": "settings.support.faq.content" + }, + { + "defaultMessage": "!!!Known Issues", + "description": "\"Known Issues\" link in the \"Help and support\" section on the support settings page", + "id": "settings.support.faq.faqLink" + }, + { + "defaultMessage": "!!!Steps for creating a support request:", + "description": "Title \"Steps for creating a support request\" on the support settings page.", + "id": "settings.support.steps.title" + }, + { + "defaultMessage": "!!!Download the logs", + "description": "Title \"Download the logs\" on the support settings page.", + "id": "settings.support.steps.downloadLogs.title" + }, + { + "defaultMessage": "!!!Please {downloadLogsLink} and attach the downloaded file when submitting a support request to help the support team investigate the issue. Logs do not contain sensitive information.", + "description": "Description of \"Download the logs\" on the support settings page.", + "id": "settings.support.steps.downloadLogs.description" + }, + { + "defaultMessage": "!!!download your logs here", + "description": "\"download your logs here\" link in the Logs section on the support settings page", + "id": "settings.support.steps.downloadLogs.link" + }, + { + "defaultMessage": "!!!Report a problem", + "description": "Title \"Report a problem\" on the support settings page.", + "id": "settings.support.steps.reportProblem.title" + }, + { + "defaultMessage": "!!!Please {downloadLogsLink} and attach the downloaded file when submitting a support request to help the support team investigate the issue. Logs do not contain sensitive information.", + "description": "Description of \"Download the logs\" on the support settings page.", + "id": "settings.support.steps.reportProblem.description" + }, + { + "defaultMessage": "!!!download your logs here", + "description": "\"download your logs here\" link in the Logs section on the support settings page", + "id": "settings.support.steps.reportProblem.link" + } + ], + "path": "source/renderer/app/components/settings/categories/SupportSettings.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Display ada balances in other currency", + "description": "titleLabel for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.titleLabel" + }, + { + "defaultMessage": "!!!Select a conversion currency for displaying your ada balances.", + "description": "currencyDescription for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.description" + }, + { + "defaultMessage": "!!!Select currency", + "description": "currencySelectLabel for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.selectLabel" + }, + { + "defaultMessage": "!!!Conversion rates are provided by CoinGecko without any warranty. Please use the calculated conversion value only as a reference. Converted balances reflect the current global average price of ada on active cryptocurrency exchanges, as tracked by CoinGecko. Ada conversion is available only to fiat and cryptocurrencies that are supported by CoinGecko, other local currency conversions may not be available.", + "description": "currencyDisclaimer for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.disclaimer" + }, + { + "defaultMessage": "!!!Powered by", + "description": "currencyPoweredByLabel for the Currency settings in the Wallets settings page.", + "id": "settings.wallets.currency.poweredBy.label" + } + ], + "path": "source/renderer/app/components/settings/categories/WalletsSettings.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!General", + "description": "Label for the \"General\" link in the settings menu.", + "id": "settings.menu.general.link.label" + }, + { + "defaultMessage": "!!!Security", + "description": "Label for the \"Security\" link in the settings menu.", + "id": "settings.menu.security.link.label" + }, + { + "defaultMessage": "!!!Wallets", + "description": "Label for the \"Wallets\" link in the settings menu.", + "id": "settings.menu.wallets.link.label" + }, + { + "defaultMessage": "!!!Stake Pools", + "description": "Label for the \"Support\" link in the settings menu.", + "id": "settings.menu.stakePools.link.label" + }, + { + "defaultMessage": "!!!Support", + "description": "Label for the \"Support\" link in the settings menu.", + "id": "settings.menu.support.link.label" + }, + { + "defaultMessage": "!!!Terms of service", + "description": "Label for the \"Terms of service\" link in the settings menu.", + "id": "settings.menu.termsOfUse.link.label" + }, + { + "defaultMessage": "!!!Themes", + "description": "Label for the \"Themes\" link in the settings menu.", + "id": "settings.menu.display.link.label" + } + ], + "path": "source/renderer/app/components/settings/menu/SettingsMenu.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Add wallet", + "description": "Label for the \"Add wallet\" button in wallet sidebar menu.", + "id": "sidebar.wallets.addWallet" + }, + { + "defaultMessage": "!!!Date", + "description": "Label for the \"Date\" sort button", + "id": "sidebar.wallets.sortByDateButton" + }, + { + "defaultMessage": "!!!Sort wallets by creation date", + "description": "Tooltip message for Date sort button", + "id": "sidebar.wallets.sortByDateTooltip" + }, + { + "defaultMessage": "!!!Balance", + "description": "Label for the \"Balance\" sort button", + "id": "sidebar.wallets.sortByBalanceButton" + }, + { + "defaultMessage": "!!!Sort wallets by balance", + "description": "Tooltip message for Balance sort button", + "id": "sidebar.wallets.sortByBalanceTooltip" + }, + { + "defaultMessage": "!!!A – Z", + "description": "Label for the \"Name\" sort button", + "id": "sidebar.wallets.sortByNameButton" + }, + { + "defaultMessage": "!!!Sort wallets by name", + "description": "Tooltip message for Name sort button", + "id": "sidebar.wallets.sortByNameTooltip" + } + ], + "path": "source/renderer/app/components/sidebar/wallets/SidebarWalletsMenu.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Filter", + "description": "Search placeholder for the sidebar wallet menu", + "id": "sidebar.wallets.search.placeholder" + } + ], + "path": "source/renderer/app/components/sidebar/wallets/WalletSearch.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Shelley upgrade", + "description": "Headline for the Decentralisation notification.", + "id": "staking.delegationCountdown.heading" + }, + { + "defaultMessage": "!!!Cardano will soon start transitioning from a federated to a decentralized system. The first step is the activation of the Shelley upgrade. Once the upgrade is complete, stake pools will start registering and users will be able to delegate their wallets. Two epochs (10 days) later, stake pools will begin producing blocks and users could start earning rewards from delegating their stakes. The first rewards, where due, will be distributed two more epochs later (10 days).", + "description": "Info for the Decentralisation notification.", + "id": "staking.delegationCountdown.description" + }, + { + "defaultMessage": "!!!Rewards begin in", + "description": "Description for the Decentralisation notification.", + "id": "staking.delegationCountdown.timeLeftDesc" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Button Label for the Decentralisation notification.", + "id": "staking.delegationCountdown.buttonLabel" + } + ], + "path": "source/renderer/app/components/staking/countdown/StakingCountdown.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallets", + "description": "Title for the Delegation center body section.", + "id": "staking.delegationCenter.bodyTitle" + }, + { + "defaultMessage": "!!!Now", + "description": "Title for the Delegation current epoch.", + "id": "staking.delegationCenter.currentEpochTitle" + }, + { + "defaultMessage": "!!!Loading stake pools", + "description": "Loading stake pool message for the Delegation center body section.", + "id": "staking.delegationCenter.loadingStakePoolsMessage" + } + ], + "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterBody.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Epoch", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.epoch" + }, + { + "defaultMessage": "!!!Current slot", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.currentSlot" + }, + { + "defaultMessage": "!!!Total slots", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.totalSlots" + }, + { + "defaultMessage": "!!!Next Cardano epoch starts in", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.headingLeft" + }, + { + "defaultMessage": "!!!Current Cardano epoch", + "description": "Headline for the Delegation center.", + "id": "staking.delegationCenter.headingRight" + }, + { + "defaultMessage": "!!!Changes to delegation preferences will take effect after both the current and next Cardano epochs have completed. Epochs on the Incentivized Testnet last one day. Any changes made now will take effect in {timeUntilFutureEpoch}.", + "description": "Delegation description for the Delegation center.", + "id": "staking.delegationCenter.description" + } + ], + "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterHeader.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The delegation center is not available because you currently do not have any Shelley-compatible wallets.", + "description": "\"No wallets\" headLine on the Delegation centre Page.", + "id": "staking.delegationCenter.noWallets.headLine" + }, + { + "defaultMessage": "!!!Create a new wallet and transfer in a minimum of {minDelegationFunds} ADA (or restore an existing wallet with funds), then return here to delegate your stake.", + "description": "\"No wallets\" instructions on the Delegation centre Page.", + "id": "staking.delegationCenter.noWallets.instructions" + }, + { + "defaultMessage": "!!!Create wallet", + "description": "Label for \"Create New Wallet\" button on the Delegation centre Page.", + "id": "staking.delegationCenter.noWallets.createWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-center/DelegationCenterNoWallets.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{amount} ADA", + "description": "Amount of each wallet for the Delegation center body section.", + "id": "staking.delegationCenter.walletAmount" + }, + { + "defaultMessage": "!!!Undelegated", + "description": "Undelegated label for the Delegation center body section.", + "id": "staking.delegationCenter.notDelegated" + }, + { + "defaultMessage": "!!!Undelegate", + "description": "Remove delegation label for the Delegation center body section.", + "id": "staking.delegationCenter.removeDelegation" + }, + { + "defaultMessage": "!!!From epoch {fromEpoch}", + "description": "Delegated stake pool tooltip ticker for the Delegation center body section.", + "id": "staking.delegationCenter.stakePoolTooltipTickerEpoch" + }, + { + "defaultMessage": "!!!Currently earning rewards", + "description": "Delegated stake pool tooltip ticker for the Delegation center body section.", + "id": "staking.delegationCenter.stakePoolTooltipTickerEarningRewards" + }, + { + "defaultMessage": "!!!Delegate", + "description": "Delegate label for the Delegation center body section.", + "id": "staking.delegationCenter.delegate" + }, + { + "defaultMessage": "!!!Redelegate", + "description": "Redelegate label for the Delegation center body section.", + "id": "staking.delegationCenter.redelegate" + }, + { + "defaultMessage": "!!!unknown", + "description": "unknown stake pool label for the Delegation center body section.", + "id": "staking.delegationCenter.unknownStakePoolLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-center/WalletRow.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Syncing {syncingProgress}%", + "description": "unknown stake pool label on staking rewards page.", + "id": "staking.delegationCenter.syncingTooltipLabel" + }, + { + "defaultMessage": "!!!Earned delegation rewards", + "description": "Title \"Earned delegation rewards\" label on the staking rewards page.", + "id": "staking.rewards.title" + }, + { + "defaultMessage": "!!!Rewards", + "description": "Filename prefix for the \"Export CSV\" on the staking rewards page.", + "id": "staking.rewards.csvFilenamePrefix" + }, + { + "defaultMessage": "!!!Export CSV", + "description": "Label for the \"Export CSV\" button on the staking rewards page.", + "id": "staking.rewards.exportButtonLabel" + }, + { + "defaultMessage": "!!!No rewards", + "description": "\"No rewards\" rewards label on staking rewards page.", + "id": "staking.rewards.no.rewards" + }, + { + "defaultMessage": "!!!Wallet", + "description": "Table header \"Wallet\" label on staking rewards page", + "id": "staking.rewards.tableHeader.wallet" + }, + { + "defaultMessage": "!!!Total rewards earned (ADA)", + "description": "Table header \"Total Reward\" label on staking rewards page", + "id": "staking.rewards.tableHeader.total" + }, + { + "defaultMessage": "!!!Unspent (ADA)", + "description": "Table header \"Unspent\" label on staking rewards page", + "id": "staking.rewards.tableHeader.unspent" + }, + { + "defaultMessage": "!!!Rewards address", + "description": "Table header \"Rewards address\" label on staking rewards page", + "id": "staking.rewards.tableHeader.rewardsAddress" + }, + { + "defaultMessage": "!!!Date", + "description": "Table header \"Date\" label in exported csv file", + "id": "staking.rewards.tableHeader.date" + }, + { + "defaultMessage": "!!!

Rewards earned by delegating your stake are automatically collected into your reward account.

Rewards earned on the Incentivized Testnet are not added to your Rewards wallet balance. They will be paid to you in real ada on the Cardano mainnet after the end of the Incentivized Testnet.

If you are using funds from this wallet to operate a stake pool, the rewards displayed here may include your pledged stake, which will not be counted when reward balances are paid out on the Cardano mainnet.

", + "description": "Rewards description text on staking rewards page", + "id": "staking.rewards.note" + }, + { + "defaultMessage": "!!!View in explorer", + "description": "View in explorer button label on staking rewards page.", + "id": "staking.rewards.actionViewInExplorer" + } + ], + "path": "source/renderer/app/components/staking/rewards/StakingRewards.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Choose a stake pool", + "description": "Title \"Choose a stake pool\" on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.title" + }, + { + "defaultMessage": "!!!Currently selected stake pool:", + "description": "Description on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.description" + }, + { + "defaultMessage": "!!!Select a stake pool to receive your delegated funds in the {selectedWalletName} wallet.", + "description": "Select / Selected pool section label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectStakePoolLabel" + }, + { + "defaultMessage": "!!!You have selected [{selectedPoolTicker}] stake pool to delegate to for {selectedWalletName} wallet.", + "description": "\"Selected Pools\" Selected pool label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectedStakePoolLabel" + }, + { + "defaultMessage": "!!!The [{selectedPoolTicker}] stake pool which you have selected to delegate your {selectedWalletName} wallet funds is about to retire.", + "description": "\"Selected Pools\" Selected pool label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.selectedStakePoolLabelRetiring" + }, + { + "defaultMessage": "!!!You are already delegating {selectedWalletName} wallet to [{selectedPoolTicker}] stake pool. If you wish to re-delegate your stake, please select a different pool.", + "description": "\"You are already delegating to stake pool\" label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.delegatedStakePoolLabel" + }, + { + "defaultMessage": "!!!You are already pending delegation {selectedWalletName} wallet to [{selectedPoolTicker}] stake pool. If you wish to re-delegate your stake, please select a different pool.", + "description": "\"You are already delegating to stake pool\" label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.delegatedStakePoolNextLabel" + }, + { + "defaultMessage": "!!!Choose one of your recent stake pool choices:", + "description": "Recent \"Pool\" choice section label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.recentPoolsLabel" + }, + { + "defaultMessage": "!!!Or select a stake pool from the list of all available stake pools:", + "description": "Search \"Pools\" input label on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.searchInput.label" + }, + { + "defaultMessage": "!!!Search stake pools", + "description": "Search \"Pools\" input placeholder on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.searchInput.placeholder" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the delegation setup \"choose stake pool\" dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.continueButtonLabel" + }, + { + "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", + "description": "Step indicator label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.stepIndicatorLabel" + }, + { + "defaultMessage": "!!!The stake pool you have selected is about to be retired. If you continue the delegation process, you will need to delegate your stake to another pool at least one complete epoch before the current pool’s retirement date to avoid losing rewards.", + "description": "Retiring Pool Footer label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseStakePool.step.dialog.retiringPoolFooter" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseStakePoolDialog.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delegate wallet", + "description": "Title \"Delegate wallet\" on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.title" + }, + { + "defaultMessage": "!!!Choose a wallet that holds the funds you want to delegate. The selected wallet must contain a minimum amount of {minDelegationFunds} ADA for delegation to be an option.", + "description": "Description on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.description" + }, + { + "defaultMessage": "!!!Wallet", + "description": "Label \"Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.selectWalletInputLabel" + }, + { + "defaultMessage": "!!!Select Wallet", + "description": "Placeholder \"Select Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.selectWalletInputPlaceholder" + }, + { + "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", + "description": "Step indicator label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.stepIndicatorLabel" + }, + { + "defaultMessage": "!!!This wallet does not contain the minimum amount of {minDelegationFunds} ADA which is required for delegation to be available. Please select a wallet with a minimum amount of {minDelegationFunds} ADA and click continue.", + "description": "errorMinDelegationFunds Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.errorMinDelegationFunds" + }, + { + "defaultMessage": "!!!This wallet contains only rewards balances so it cannot be delegated.", + "description": "errorMinDelegationFundsRewardsOnly Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.errorMinDelegationFundsRewardsOnly" + }, + { + "defaultMessage": "!!!This wallet can’t be used for delegation while it’s being synced.", + "description": "RestoringWallet Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.errorRestoringWallet" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.delegationSetup.chooseWallet.step.dialog.continueButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsChooseWalletDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Confirm Delegation", + "description": "Title \"Confirm Delegation\" on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.title" + }, + { + "defaultMessage": "!!!STEP {currentStep} OF {totalSteps}", + "description": "Step indicator label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.stepIndicatorLabel" + }, + { + "defaultMessage": "!!!Confirm your delegation choice to [{selectedPoolTicker}] stake pool for your {selectedWalletName} wallet.", + "description": "Description on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.description" + }, + { + "defaultMessage": "!!!Stake pool ID", + "description": "Stake pool ID label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.stakePoolIdLabel" + }, + { + "defaultMessage": "!!!Fees", + "description": "Fees label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.feesLabel" + }, + { + "defaultMessage": "!!!Deposit", + "description": "Deposit label on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.depositLabel" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Placeholder for \"spending password\"", + "id": "staking.delegationSetup.confirmation.step.dialog.spendingPasswordPlaceholder" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Label for \"spending password\"", + "id": "staking.delegationSetup.confirmation.step.dialog.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Confirm", + "description": "Label for continue button on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.confirmButtonLabel" + }, + { + "defaultMessage": "!!!Cancel", + "description": "Label for \"Cancel\" button on the delegation setup \"confirmation\" step dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.cancelButtonLabel" + }, + { + "defaultMessage": "!!!Calculating fees", + "description": "\"Calculating fees\" message in the \"confirmation\" dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.calculatingFees" + }, + { + "defaultMessage": "!!!Calculating deposit", + "description": "\"Calculating deposit\" message in the \"confirmation\" dialog.", + "id": "staking.delegationSetup.confirmation.step.dialog.calculatingDeposit" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsConfirmationDialog.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delegate wallet", + "description": "Title \"Delegation Setup\" on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.title" + }, + { + "defaultMessage": "!!!Follow these steps to configure delegation preferences for your wallet. Please be aware that the last step of delegation confirmation will incur transaction fees.", + "description": "Description on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.description" + }, + { + "defaultMessage": "!!!Learn more", + "description": "\"Learn more\" button label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.learnMore.buttonLabel" + }, + { + "defaultMessage": "!!!Wallet selection", + "description": "Steps explanation list item 1 label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step1" + }, + { + "defaultMessage": "!!!Stake pool selection", + "description": "Steps explanation list item 2 label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step2" + }, + { + "defaultMessage": "!!!Delegation confirmation", + "description": "Steps explanation list item 3 label on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.stepsExplanation.step3" + }, + { + "defaultMessage": "!!!Cancel", + "description": "Label for close button on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.cancelButtonLabel" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.continueButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsIntroDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delegation is currently unavailable", + "description": "Title \"Delegation Setup\" on the delegation setup not available dialog.", + "id": "staking.delegationSetup.notAvailable.dialog.title" + }, + { + "defaultMessage": "!!!None of your Shelley wallets currently hold the minimum amount of {minDelegationFunds} ADA required for delegation.", + "description": "Description on the delegation setup not available dialog.", + "id": "staking.delegationSetup.notAvailable.dialog.description" + }, + { + "defaultMessage": "!!!Close", + "description": "Label for close button on the delegation setup not available dialog.", + "id": "staking.delegationSetup.notAvailable.dialog.closeButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsNotAvailableDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet Delegated", + "description": "Title \"Wallet Delegated\" on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.title" + }, + { + "defaultMessage": "!!!The stake from your wallet {delegatedWalletName} is now delegated to the [{delegatedStakePoolTicker}] {delegatedStakePoolName} stake pool.", + "description": "Description \"line 1\" on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.description.line1" + }, + { + "defaultMessage": "!!!Your new delegation preferences are now posted on the Cardano blockchain. These preferences will take effect after both the current and the next Cardano epochs have completed in {timeUntilNextEpochStart}. During this time, your previous delegation preferences remain active.", + "description": "Description \"line 2\" on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.description.line2" + }, + { + "defaultMessage": "!!!Close", + "description": "Label for Close button on the delegation setup \"success\" step dialog.", + "id": "staking.delegationSetup.success.step.dialog.closeButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/DelegationStepsSuccessDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The selected stake pool will become oversaturated by {oversaturationPercentage}%, which will reduce future rewards for all delegators to that pool.", + "description": "Warning shown if pool is going to be saturated if delegation happens", + "id": "staking.delegationSetup.confirmation.step.dialog.oversaturationWarning" + } + ], + "path": "source/renderer/app/components/staking/delegation-setup-wizard/OversaturationText.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!current epoch", + "description": "Headline for the current epoch.", + "id": "staking.epochs.currentHeading" + }, + { + "defaultMessage": "!!!previous epoch", + "description": "Headline for the previous epoch.", + "id": "staking.epochs.previousHeading" + } + ], + "path": "source/renderer/app/components/staking/epochs/StakingEpochs.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Stake pool", + "description": "Table header \"Stake pool\" label on staking epochs page", + "id": "staking.epochs.currentEpoch.tableHeader.pool" + }, + { + "defaultMessage": "!!!Slots elected", + "description": "Table header \"Slots elected\" label on staking epochs page", + "id": "staking.epochs.currentEpoch.tableHeader.slotsElected" + } + ], + "path": "source/renderer/app/components/staking/epochs/StakingEpochsCurrentEpochData.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No results", + "description": "\"No results\" results label on staking epochs page.", + "id": "staking.epochs.no.results" + } + ], + "path": "source/renderer/app/components/staking/epochs/StakingEpochsNoData.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Stake pool", + "description": "Table header \"Stake pool\" label on staking epochs page", + "id": "staking.epochs.previousEpoch.tableHeader.pool" + }, + { + "defaultMessage": "!!!Slots elected", + "description": "Table header \"Slots elected\" label on staking epochs page", + "id": "staking.epochs.previousEpoch.tableHeader.slotsElected" + }, + { + "defaultMessage": "!!!Performance", + "description": "Table header \"Performance\" label on staking epochs page", + "id": "staking.epochs.tableHeader.performance" + }, + { + "defaultMessage": "!!!Shared rewards", + "description": "Table header \"Shared rewards\" label on staking epochs page", + "id": "staking.epochs.tableHeader.sharedRewards" + }, + { + "defaultMessage": "!!!slots", + "description": "\"slots\" text in table body on staking epochs page", + "id": "staking.epochs.tableBody.slots" + }, + { + "defaultMessage": "!!!of", + "description": "\"of\" text in table body on staking epochs page", + "id": "staking.epochs.tableBody.of" + } + ], + "path": "source/renderer/app/components/staking/epochs/StakingEpochsPreviousEpochData.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cardano is transitioning into a decentralized system", + "description": "Headline for the Decentralization progress notification.", + "id": "staking.info.heading" + }, + { + "defaultMessage": "!!!Cardano is transitioning from a federated system operated by its creators to a decentralized system operated by a community of stake pool operators. During this transition, blocks will be produced both by the federated nodes and by stake pools. The percentage of blocks produced by stake pools will increase every epoch until block production in the Cardano network becomes fully decentralized.", + "description": "Info description for the Decentralization progress notification.", + "id": "staking.info.description" + }, + { + "defaultMessage": "!!!Currently, {percentage}% of the blocks are produced by the stake pools.", + "description": "Percentage info description for the Decentralization progress notification.", + "id": "staking.info.percentage" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Button Label for the Decentralization progress notification.", + "id": "staking.info.buttonLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc", + "description": "\"Learn more\" link URL in the staking info page", + "id": "staking.info.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/components/staking/info/StakingInfo.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Alonzo upgrade", + "description": "Headline for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.heading" + }, + { + "defaultMessage": "!!!The ‘Alonzo’ protocol upgrade will bring highly-anticipated new smart contract capabilities to Cardano, by integrating Plutus scripts onto the blockchain. This important milestone will open up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", + "description": "Info description for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.description.before" + }, + { + "defaultMessage": "!!!The ‘Alonzo’ protocol upgrade is now live on Cardano, enabling highly-anticipated new smart contract capabilities, by integrating Plutus scripts onto the blockchain. This important milestone opens up a whole new world of smart contracts, DeFi capabilities, and dApp development on Cardano.", + "description": "Info description for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.description.after" + }, + { + "defaultMessage": "!!!Alonzo upgrade in", + "description": "Countdown Title for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.countdownTitle" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Button Label for the \"Staking Info\" page screen.", + "id": "staking.infoCountdown.buttonLabel" + }, + { + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2021/04/08/smart-contracts-%E2%80%93-here-we-come/", + "description": "\"Learn more\" link URL in the \"Staking Info\" screen.", + "id": "staking.infoCountdown.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/components/staking/info/StakingInfoCountdown.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!slot", + "description": "\"slot\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.slot.label" + }, + { + "defaultMessage": "!!!transactions", + "description": "\"transactions\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.transactions.label" + }, + { + "defaultMessage": "!!!MPC phase", + "description": "\"MPC phase\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.mpc.phase.label" + }, + { + "defaultMessage": "!!!commitments", + "description": "\"commitments\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.commitments.label" + }, + { + "defaultMessage": "!!!openings", + "description": "\"openings\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.openings.label" + }, + { + "defaultMessage": "!!!shares", + "description": "\"shares\" label on staking chart tooltip.", + "id": "staking.chart.tooltip.shares.label" + } + ], + "path": "source/renderer/app/components/staking/legacy/StakingChartTooltip.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delegation center", + "description": "Label for the \"Delegation\" nav button in the staking navigation.", + "id": "staking.navigation.delegation_center" + }, + { + "defaultMessage": "!!!Stake pools", + "description": "Label for the \"Stake\" nav button in the staking navigation.", + "id": "staking.navigation.stake_pools" + }, + { + "defaultMessage": "!!!Rewards", + "description": "Label for the \"Rewards\" nav button in the staking navigation.", + "id": "staking.navigation.rewards" + }, + { + "defaultMessage": "!!!Epochs", + "description": "Label for the \"Epochs\" nav button in the staking navigation.", + "id": "staking.navigation.epochs" + }, + { + "defaultMessage": "!!!Info", + "description": "Label for the \"Info\" nav button in the staking navigation.", + "id": "staking.navigation.info" + } + ], + "path": "source/renderer/app/components/staking/navigation/StakingNavigation.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Redemption of Incentivized Testnet rewards is not available as you currently do not have any Shelley-compatible wallets.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.noWallets.description" + }, + { + "defaultMessage": "!!!Add wallet", + "description": "addWalletButtonLabel for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.noWallets.addWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/NoWalletsDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Redeem Incentivized Testnet rewards", + "description": "Title for Redeem Incentivized Testnet - redemptionUnavailable", + "id": "staking.redeemItnRewards.redemptionUnavailable.title" + }, + { + "defaultMessage": "!!!Close", + "description": "closeButtonLabel for Redeem Incentivized Testnet - redemptionUnavailable", + "id": "staking.redeemItnRewards.redemptionUnavailable.closeButton.label" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/RedemptionUnavailableDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Redeem Incentivized Testnet rewards", + "description": "Title for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.title" + }, + { + "defaultMessage": "!!!If you participated in the { itnLink } and earned rewards by running a stake pool or delegating your stake, you can use this feature to redeem your rewards as ada on the Cardano mainnet.", + "description": "description for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.description1" + }, + { + "defaultMessage": "!!!You will need the wallet recovery phrase for the Incentivized Testnet wallet used to earn rewards and an existing mainnet wallet in Daedalus to which the rewards will be transferred. This wallet will also be used to pay any applicable transaction fees.", + "description": "description for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.description2" + }, + { + "defaultMessage": "!!!Incentivized Testnet", + "description": "descriptionItnLinkLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.descriptionItnLinkLabel" + }, + { + "defaultMessage": "!!!https://staking.cardano.org/", + "description": "descriptionItnLinkUrl for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.descriptionItnLinkUrl" + }, + { + "defaultMessage": "!!!Wallet recovery phrase:", + "description": "recoveryPhraseLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.recoveryPhraseLabel" + }, + { + "defaultMessage": "!!!Redeem rewards to:", + "description": "walletsDropdownLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.walletsDropdownLabel" + }, + { + "defaultMessage": "!!!I understand that redeeming rewards from the Incentivized Testnet requires paying transaction fees.", + "description": "checkbox1Label for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.checkbox1Label" + }, + { + "defaultMessage": "!!!I understand that fees will be paid from the wallet I am redeeming my rewards to.", + "description": "checkbox2Label for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.checkbox2Label" + }, + { + "defaultMessage": "!!!Continue", + "description": "continueButtonLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.continueButton.label" + }, + { + "defaultMessage": "!!!Learn More", + "description": "learnMoreLinkLabel for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.learnMoreLink.label" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900001656586", + "description": "learnMoreLinkUrl for Redeem Incentivized Testnet - Step 1", + "id": "staking.redeemItnRewards.step1.learnMoreLink.url" + }, + { + "defaultMessage": "!!!Enter recovery phrase", + "description": "Hint \"Enter recovery phrase\" for the recovery phrase input on the wallet restore dialog.", + "id": "staking.redeemItnRewards.step1.recoveryPhraseInputHint" + }, + { + "defaultMessage": "!!!Select Wallet", + "description": "Placeholder \"Select Wallet\" for select input on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.redeemItnRewards.step1.selectWalletInputPlaceholder" + }, + { + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "staking.redeemItnRewards.step1.noResults" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "staking.redeemItnRewards.step1.invalidRecoveryPhrase" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step1ConfigurationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Confirm rewards redemption", + "description": "title for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.title" + }, + { + "defaultMessage": "!!!To", + "description": "walletToLabel for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.walletToLabel" + }, + { + "defaultMessage": "!!!{walletName} wallet", + "description": "walletToName for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.walletToName" + }, + { + "defaultMessage": "!!!Transaction fees", + "description": "transactionFees for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.transactionFees" + }, + { + "defaultMessage": "!!!Wallet spending password ({walletName} wallet)", + "description": "spendingPasswordLabel for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Password", + "description": "spendingPasswordPlaceholder for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.spendingPasswordPlaceholder" + }, + { + "defaultMessage": "!!!Confirm rewards redemption", + "description": "continueButtonLabel for Redeem Incentivized Testnet - Step 2", + "id": "staking.redeemItnRewards.step2.continueButtonLabel" + }, + { + "defaultMessage": "!!!Back", + "description": "Label for the back button in the wallet send confirmation dialog.", + "id": "staking.redeemItnRewards.step2.backButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step2ConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No rewards were found in your Incentivized Testnet Rewards wallet. Please make sure that you have entered the correct wallet recovery phrase.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.description1NoRewards" + }, + { + "defaultMessage": "!!!Rewards from the wallet corresponding to the recovery phrase you have provided have already been redeemed.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.description2InvalidWallet" + }, + { + "defaultMessage": "!!!No rewards were found in your Incentivized Testnet Rewards wallet. Please make sure that you have entered the correct wallet recovery phrase and that rewards have not already been redeemed.", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.description3Generic" + }, + { + "defaultMessage": "!!!Back", + "description": "backButtonLabel for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.backButtonLabel" + }, + { + "defaultMessage": "!!!Close window", + "description": "closeWindowLinkLabel for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.failure.closeWindowLinkLabel" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step3FailureDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Incentivized Testnet rewards redeemed!", + "description": "title for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.title" + }, + { + "defaultMessage": "!!!You have successfully redeemed {redeemedRewards} to your {walletName} wallet. This transaction incurred {transactionFees} in transaction fees", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.description" + }, + { + "defaultMessage": "!!!Open the wallet", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.openWalletButtonLabel" + }, + { + "defaultMessage": "!!!Download PDF certificate", + "description": "description for Redeem Incentivized Testnet - Step 3", + "id": "staking.redeemItnRewards.step3.success.downloadPDFButtonLabel" + } + ], + "path": "source/renderer/app/components/staking/redeem-itn-rewards/Step3SuccessDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Stake pools to which you are delegating", + "description": "\"delegatingListTitle\" for the Stake Pools page.", + "id": "staking.stakePools.delegatingListTitle" + }, + { + "defaultMessage": "!!!Stake pools", + "description": "\"listTitle\" for the Stake Pools page.", + "id": "staking.stakePools.listTitle" + }, + { + "defaultMessage": "!!!Loading stake pools", + "description": "\"listTitleLoading\" for the Stake Pools page.", + "id": "staking.stakePools.listTitleLoading" + }, + { + "defaultMessage": "!!!Stake pools. Search results:", + "description": "\"listTitleSearch\" for the Stake Pools page.", + "id": "staking.stakePools.listTitleSearch" + }, + { + "defaultMessage": "!!!({pools})", + "description": "\"listTitleStakePools\" for the Stake Pools page.", + "id": "staking.stakePools.listTitleStakePools" + }, + { + "defaultMessage": "!!!Loading stake pools", + "description": "Loading stake pool message for the Delegation center body section.", + "id": "staking.stakePools.loadingStakePoolsMessage" + }, + { + "defaultMessage": "!!!Moderated by", + "description": "moderatedBy message for the Delegation center body section.", + "id": "staking.stakePools.moderatedBy" + }, + { + "defaultMessage": "!!!Unmoderated", + "description": "unmoderated message for the Delegation center body section.", + "id": "staking.stakePools.unmoderated" + } + ], + "path": "source/renderer/app/components/staking/stake-pools/StakePools.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!all your wallets", + "description": "All wallets item of dropdown.", + "id": "staking.stakePools.rankingAllWallets" + }, + { + "defaultMessage": "!!!.", + "description": "All wallets description after dropdown.", + "id": "staking.stakePools.rankingAllWalletsEnd" + }, + { + "defaultMessage": "!!!Stake pools are currently ranked based on the combined amount in", + "description": "All wallets description before dropdown.", + "id": "staking.stakePools.rankingAllWalletsStart" + }, + { + "defaultMessage": "!!!Use the slider to rank the stake pools and check the potential rewards based on the amount of stake you intend to delegate.", + "description": "Ranking description.", + "id": "staking.stakePools.rankingDescription" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us", + "description": "Ranking learn more url.", + "id": "staking.stakePools.rankingLearnMoreUrl" + }, + { + "defaultMessage": "!!!wallet.", + "description": "One wallet description after dropdown.", + "id": "staking.stakePools.rankingOneWalletEnd" + }, + { + "defaultMessage": "!!!Stake pools are currently ranked based on the amount in", + "description": "One wallet description before dropdown.", + "id": "staking.stakePools.rankingOneWalletStart" + }, + { + "defaultMessage": "!!!select a wallet", + "description": "Select wallet item of dropdown.", + "id": "staking.stakePools.rankingSelectWallet" + }, + { + "defaultMessage": "!!!to set the amount you intend to delegate.", + "description": "Select wallet description after dropdown.", + "id": "staking.stakePools.rankingSelectWalletEnd" + }, + { + "defaultMessage": "!!!Or", + "description": "Select wallet description before dropdown.", + "id": "staking.stakePools.rankingSelectWalletStart" + }, + { + "defaultMessage": "!!!Circulating supply", + "description": "Circulating supply slider tooltip.", + "id": "staking.stakePools.rankingExtraTooltip" + }, + { + "defaultMessage": "!!!Saturation point", + "description": "Saturation point slider tooltip.", + "id": "staking.stakePools.rankingMaxTooltip" + }, + { + "defaultMessage": "!!!Minimum ADA required for staking", + "description": "Minimum ADA required for staking slider tooltip.", + "id": "staking.stakePools.rankingMinTooltip" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more action of ranking panel.", + "id": "staking.stakePools.learnMore" + } + ], + "path": "source/renderer/app/components/staking/stake-pools/StakePoolsRanking.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Search stake pools", + "description": "\"Delegating List Title\" for the Stake Pools search.", + "id": "staking.stakePools.search.searchInputPlaceholder" + }, + { + "defaultMessage": "!!!Stake pools to which you are delegating", + "description": "\"delegatingListTitle\" for the Stake Pools search.", + "id": "staking.stakePools.search.delegatingListTitle" + }, + { + "defaultMessage": "!!!Stake pools ({pools})", + "description": "\"listTitle\" for the Stake Pools search.", + "id": "staking.stakePools.search.listTitle" + }, + { + "defaultMessage": "!!!Grid View", + "description": "\"gridIconTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.gridIconTooltip" + }, + { + "defaultMessage": "!!!Grid Rewards View", + "description": "\"gridRewardsIconTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.gridRewardsIconTooltip" + }, + { + "defaultMessage": "!!!List View", + "description": "\"listIconTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.listIconTooltip" + }, + { + "defaultMessage": "!!!Clear", + "description": "\"clearTooltip\" for the Stake Pools search.", + "id": "staking.stakePools.search.clearTooltip" + } + ], + "path": "source/renderer/app/components/staking/stake-pools/StakePoolsSearch.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Rank", + "description": "Table header \"Rank\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.rank" + }, + { + "defaultMessage": "!!!Ticker", + "description": "Table header \"Ticker\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.ticker" + }, + { + "defaultMessage": "!!!Saturation", + "description": "Table header \"Saturation\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.saturation" + }, + { + "defaultMessage": "!!!Performance", + "description": "Table header \"Performance\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.performance" + }, + { + "defaultMessage": "!!!Uptime (days)", + "description": "Table header \"Uptime\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.uptime" + }, + { + "defaultMessage": "!!!Margin", + "description": "Table header \"Margin\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.margin" + }, + { + "defaultMessage": "!!!Roi", + "description": "Table header \"Roi\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.roi" + }, + { + "defaultMessage": "!!!Cost (ADA)", + "description": "Table header \"Cost\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.cost" + }, + { + "defaultMessage": "!!!Produced Blocks", + "description": "Table header \"Produced Blocks\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.producedBlocks" + }, + { + "defaultMessage": "!!!Potential rewards", + "description": "Table header \"Potential rewards\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.potentialRewards" + }, + { + "defaultMessage": "!!!Pledge (ADA)", + "description": "Table header \"Pledge\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.pledge" + }, + { + "defaultMessage": "!!!Retiring in", + "description": "Table header \"Retiring\" label on stake pools list view page", + "id": "staking.stakePools.tableHeader.retiring" + } + ], + "path": "source/renderer/app/components/staking/stake-pools/StakePoolsTable.messages.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!

A hierarchical ranking based on the potential rewards you will earn if you delegate the intended amount of stake to this pool, assuming that it reaches saturation.

*Stake pools with the potential rewards estimated at zero have the same ranking. Please set the stake slider to a higher value for more pools to get potential rewards estimated at more than zero.

", + "description": "\"Rank\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.rankingTooltip" + }, + { + "defaultMessage": "!!!Saturation measures the stake in the pool and indicates the point at which rewards stop increasing with increases in stake. This capping mechanism encourages decentralization by discouraging users from delegating to oversaturated stake pools.", + "description": "\"Saturation\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.saturationTooltip" + }, + { + "defaultMessage": "!!!The pool's profit, defined as the rewards percentage kept by the pool from the stake that was delegated to it.", + "description": "\"Pool margin\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.profitMarginTooltip" + }, + { + "defaultMessage": "!!!Fixed operational costs that the stake pool retains from any rewards earned during each epoch.", + "description": "\"Cost per epoch\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.costPerEpochTooltip" + }, + { + "defaultMessage": "!!!The total number of blocks the stake pool has produced.", + "description": "\"Blocks\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.producedBlocksTooltip" + }, + { + "defaultMessage": "!!!An estimation of the potential rewards you will earn per epoch if you delegate the intended amount of stake. The system looks at the pool's parameters and historical performance data to calculate potential rewards, assuming that the pool reaches optimal saturation.", + "description": "\"Rewards\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.potentialRewardsTooltip" + }, + { + "defaultMessage": "!!!The amount of stake that a pool operator contributes to a pool. Pools with higher pledge amounts earn more rewards for themselves and their delegators. Pools that do not honor their pledge earn zero rewards and accrue low ranking.", + "description": "\"Pledge\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.pledgeTooltip" + }, + { + "defaultMessage": "!!!Rank:", + "description": "\"Rank\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.ranking" + }, + { + "defaultMessage": "!!!Live stake:", + "description": "\"Live stake\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.relativeStake" + }, + { + "defaultMessage": "!!!Measures the amount of stake pledged by the pool plus the amount of stake currently delegated to the pool, versus the total amount in the system.", + "description": "\"Live stake\" tooltip for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.relativeStakeTooltip" + }, + { + "defaultMessage": "!!!Pool margin:", + "description": "\"Pool margin\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.profitMargin" + }, + { + "defaultMessage": "!!!Cost per epoch:", + "description": "\"Cost per epoch\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.costPerEpoch" + }, + { + "defaultMessage": "!!!Produced blocks:", + "description": "\"Blocks\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.producedBlocks" + }, + { + "defaultMessage": "!!!Potential rewards:", + "description": "\"Rewards\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.potentialRewards" + }, + { + "defaultMessage": "!!!Retirement in {retirementFromNow}", + "description": "\"Retirement\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.retirement" + }, + { + "defaultMessage": "!!!Saturation:", + "description": "\"Saturation\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.saturation" + }, + { + "defaultMessage": "!!!Pledge:", + "description": "\"Pledge\" for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.pledge" + }, + { + "defaultMessage": "!!!Delegate to this pool", + "description": "\"Delegate to this pool\" Button for the Stake Pools Tooltip page.", + "id": "staking.stakePools.tooltip.delegateButton" + }, + { + "defaultMessage": "!!!Copy the stake pool ID", + "description": "copyId tooltip label", + "id": "staking.stakePools.tooltip.copyIdTooltipLabel" + }, + { + "defaultMessage": "!!!Copied", + "description": "copyId tooltip label copied", + "id": "staking.stakePools.tooltip.copiedIdTooltipLabel" + }, + { + "defaultMessage": "!!!Data not available yet", + "description": "Data not available yet label", + "id": "staking.stakePools.noDataDashTooltip" + } + ], + "path": "source/renderer/app/components/staking/widgets/TooltipPool.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Catalyst API unavailable", + "description": "Title", + "id": "voting.apiError.title" + }, + { + "defaultMessage": "!!!Unable to communicate with the API that retrieves the Catalyst date information.", + "description": "Description 1", + "id": "voting.apiError.description1" + }, + { + "defaultMessage": "!!!Please, try again later.", + "description": "Description 2", + "id": "voting.apiError.description2" + } + ], + "path": "source/renderer/app/components/voting/voting-info/ApiError.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://play.google.com/store/apps/details?id=io.iohk.vitvoting", + "description": "\"androidAppButtonUrl\" for the Catalyst voting app", + "id": "voting.info.androidAppButtonUrl" + }, + { + "defaultMessage": "!!!https://apps.apple.com/in/app/catalyst-voting/id1517473397", + "description": "\"appleAppButtonUrl\" for the Catalyst voting app", + "id": "voting.info.appleAppButtonUrl" + } + ], + "path": "source/renderer/app/components/voting/voting-info/AppStore.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Project Catalyst", + "description": "Headline Project Catalyst", + "id": "voting.catalyst.heading" + }, + { + "defaultMessage": "!!!Decide which innovative ideas for Cardano will receive funding.", + "description": "Description Project Catalyst", + "id": "voting.catalyst.descriptionRow1" + }, + { + "defaultMessage": "!!!{reward} worth of ada rewards will be distributed between ada holders who register their vote.", + "description": "Description Project Catalyst", + "id": "voting.catalyst.descriptionRow2" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more link label for registration steps", + "id": "voting.info.learnMoreLinkLabel" + }, + { + "defaultMessage": "!!!https://cardano.ideascale.com/a/index", + "description": "Learn more link url for registration steps", + "id": "voting.info.learnMoreLinkUrl" + } + ], + "path": "source/renderer/app/components/voting/voting-info/Headline.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Snapshot date:", + "description": "Voting info snapshot date label", + "id": "voting.registerToVote.dateLabel" + }, + { + "defaultMessage": "!!!Follow these steps to vote:", + "description": "Steps to follow title", + "id": "voting.registerToVote.stepsTitle" + }, + { + "defaultMessage": "!!!Download the Catalyst Voting app on your smartphone", + "description": "First step to follow in order to vote", + "id": "voting.registerToVote.step1CheckBoxLabel" + }, + { + "defaultMessage": "!!!Ensure that you register and hold the necessary 500 ADA at the time of the snapshot.", + "description": "Second step to follow in order to vote", + "id": "voting.registerToVote.step2CheckBoxLabel" + }, + { + "defaultMessage": "!!!Register to vote", + "description": "Button Label for voting registration steps", + "id": "voting.registerToVote.registerToVoteButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-info/RegisterToVote.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!End of voting:", + "description": "Headline for end date", + "id": "voting.resultsPhase.endDateLabel" + }, + { + "defaultMessage": "!!!View results", + "description": "View results link label", + "id": "voting.resultsPhase.viewResultsLinkLabel" + }, + { + "defaultMessage": "https://cardano.ideascale.com/a/pages/results", + "description": "View results link", + "id": "voting.resultsPhase.viewResultsLinkURL" + } + ], + "path": "source/renderer/app/components/voting/voting-info/ResultsPhase.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Snapshot date:", + "description": "Snapshot date label", + "id": "voting.snapshotPhase.snapshotDateLabel" + }, + { + "defaultMessage": "!!!Next voting period:", + "description": "Next voting date label", + "id": "voting.snapshotPhase.votingDateLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-info/SnapshotPhase.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Voting ended:", + "description": "Voting end date label", + "id": "voting.tallyingPhase.endDateLabel" + }, + { + "defaultMessage": "!!!Check back for results on:", + "description": "Results date label", + "id": "voting.tallyingPhase.resultsLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-info/TallyingPhase.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Fund{votingFundNumber}", + "description": "Current fund name", + "id": "voting.fundName" + } + ], + "path": "source/renderer/app/components/voting/voting-info/VotingInfo.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Voting period open between:", + "description": "Voting date label", + "id": "voting.votingOpenPhase.dateLabel" + }, + { + "defaultMessage": "!!!Use mobile app to vote", + "description": "Voting instruction", + "id": "voting.votingOpenPhase.instruction" + } + ], + "path": "source/renderer/app/components/voting/voting-info/VotingPhase.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!You can only use one wallet when registering. To maximize rewards and voting power, choose the wallet with the largest balance.", + "description": "Description on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.description" + }, + { + "defaultMessage": "!!!Select a wallet", + "description": "Label \"Wallet\" for select input on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.selectWalletInputLabel" + }, + { + "defaultMessage": "!!!Select a wallet", + "description": "Placeholder \"Select Wallet\" for select input on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.selectWalletInputPlaceholder" + }, + { + "defaultMessage": "!!!This wallet does not contain the minimum required amount of {minVotingRegistrationFunds} ADA. Please select a different wallet with a minimum balance of {minVotingRegistrationFunds} ADA.", + "description": "errorMinVotingFunds Error Label on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorMinVotingFunds" + }, + { + "defaultMessage": "!!!This wallet cannot be registered for voting as it contains rewards balance only.", + "description": "errorMinVotingFundsRewardsOnly Error Label on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorMinVotingFundsRewardsOnly" + }, + { + "defaultMessage": "!!!This wallet cannot be registered for voting as it is a legacy Byron wallet.", + "description": "Byron wallet error message on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorLegacyWallet" + }, + { + "defaultMessage": "!!!The wallet cannot be registered for voting while it is being synced with the blockchain.", + "description": "Restoring wallet error message on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.errorRestoringWallet" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the voting registration \"choose wallet\" step.", + "id": "voting.votingRegistration.chooseWallet.step.continueButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsChooseWallet.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Confirmation of voting registration requires approximately 5 minutes. Please leave Daedalus running.", + "description": "Description voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.description" + }, + { + "defaultMessage": "!!!Please restart the voting registration process by clicking Restart voting registration.", + "description": "Message for restart voting registration on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.descriptionRestart" + }, + { + "defaultMessage": "!!!The voting registration process was not completed correctly.", + "description": "Error message on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.errorMessage" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.continueButtonLabel" + }, + { + "defaultMessage": "!!!Restart voting registration", + "description": "Label for restart button on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.restartButtonLabel" + }, + { + "defaultMessage": "!!!Transaction pending...", + "description": "Label for pending transaction state on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.transactionPendingLabel" + }, + { + "defaultMessage": "!!!Transaction confirmed", + "description": "Label for confirmed transaction state on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.transactionConfirmedLabel" + }, + { + "defaultMessage": "!!!Waiting for confirmation...", + "description": "Label for confirming transaction state on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.waitingForConfirmationsLabel" + }, + { + "defaultMessage": "!!!{currentCount} of {expectedCount}", + "description": "Label for number of confirmations on the voting registration \"confirm\" step.", + "id": "voting.votingRegistration.confirm.step.confirmationsCountLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsConfirm.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please enter a PIN for your Fund{nextVotingFundNumber} voting registration. The PIN you set here, and the QR code which you will get in the next step, will be required for you to vote using the Catalyst Voting app on your smartphone.", + "description": "Description on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.description" + }, + { + "defaultMessage": "!!!It is important to remember your PIN. If you forget your PIN, you will not be able to use this registration for voting, and you will need to repeat the registration process.", + "description": "Reminder on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.reminder" + }, + { + "defaultMessage": "!!!Enter PIN", + "description": "Label for pin code input on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.enterPinCodeLabel" + }, + { + "defaultMessage": "!!!Repeat PIN", + "description": "Label for repeat pin code on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.repeatPinCodeLabel" + }, + { + "defaultMessage": "!!!Invalid PIN", + "description": "Error message shown when repeat pin code is invalid.", + "id": "voting.votingRegistration.enterPinCode.step.errors.invalidPinCode" + }, + { + "defaultMessage": "!!!PIN doesn’t match", + "description": "Error message shown when repeat pin code is invalid.", + "id": "voting.votingRegistration.enterPinCode.step.errors.invalidRepeatPinCode" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for continue button on the voting registration \"enter pin code\" step.", + "id": "voting.votingRegistration.enterPinCode.step.continueButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsEnterPinCode.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please complete your registration now.", + "description": "Qr code title on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeTitle" + }, + { + "defaultMessage": "!!!Open the Catalyst Voting app on your smartphone, scan the QR code, and enter your PIN to complete the voting registration process.", + "description": "Part 1 of Qr code description of use on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeDescription1" + }, + { + "defaultMessage": "!!!Your registration remains valid across all Catalyst funding rounds. Ensure that you save your QR code and PIN so you can reconnect your wallet to the voting app if you are logged out, or if you want to connect a new device.", + "description": "Part 2 of Qr code description of use on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeDescription2" + }, + { + "defaultMessage": "!!!Warning: After closing this window the QR code will no longer be available. If you do not keep a PDF copy of the QR code, you might not be able to participate in voting.", + "description": "Qr code warning on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.qrCodeWarning" + }, + { + "defaultMessage": "!!!I understand that I will not be able to retrieve this QR code again after closing this window.", + "description": "First checkbox label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.checkbox1Label" + }, + { + "defaultMessage": "!!!I acknowledge that I must have the downloaded PDF with the QR code, to vote with Fund{nextVotingFundNumber}.", + "description": "Second checkbox label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.checkbox2Label" + }, + { + "defaultMessage": "!!!Close", + "description": "\"Close\" button label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.closeButtonLabel" + }, + { + "defaultMessage": "!!!Save as PDF", + "description": "\"Save as PDF\" button label on the voting registration \"qr code\" step.", + "id": "voting.votingRegistration.qrCode.step.saveAsPdfButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsQrCode.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please sign the voting registration transaction. This transaction links your wallet balance with your Fund{nextVotingFundNumber} voting registration, as a proof of your voting power. Funds will not leave your wallet, but registration requires paying transaction fees, as displayed on-screen.", + "description": "Description on the voting registration \"sign\" step.", + "id": "voting.votingRegistration.register.step.description" + }, + { + "defaultMessage": "!!!Submit registration transaction", + "description": "Label for continue button on the voting registration \"sign\" step.", + "id": "voting.votingRegistration.register.step.continueButtonLabel" + }, + { + "defaultMessage": "!!!Fees", + "description": "Fees label on the voting registration \"sign\" step.", + "id": "voting.votingRegistration.register.step.feesLabel" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Placeholder for \"spending password\"", + "id": "voting.votingRegistration.register.step.spendingPasswordPlaceholder" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Label for \"spending password\"", + "id": "voting.votingRegistration.register.step.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Calculating fees", + "description": "\"Calculating fees\" message in the \"sign\" step.", + "id": "voting.votingRegistration.register.step.calculatingFees" + }, + { + "defaultMessage": "!!!Learn more", + "description": "\"Learn more\" link on the \"sign\" step.", + "id": "voting.votingRegistration.register.step.learnMoreLink" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900006490763", + "description": "Learn more\" link URL on the \"sign\" step.", + "id": "voting.votingRegistration.register.step.learntMoreLinkUrl" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/VotingRegistrationStepsRegister.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!On the following screen, you will be given a list of {walletRecoveryPhraseWordCount} words to write down on paper and keep in a safe place. This list of words is the wallet recovery phrase for the wallet you are creating.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions1" + }, + { + "defaultMessage": "!!!The simplest way to keep your wallet recovery phrase secure is to never store it digitally or online. If you decide to use an online service, such as a password manager with an encrypted database, it is your responsibility to make sure that you use it correctly.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions2" + }, + { + "defaultMessage": "!!!Using your recovery phrase is the only way to recover your wallet if your computer is lost, broken, stolen, or stops working.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.privacy.warning.dialog.recoveryPhraseInstructions3" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for button \"Continue\" on wallet backup dialog", + "id": "wallet.backup.privacy.warning.dialog.button.labelContinue" + }, + { + "defaultMessage": "!!!I confirm that nobody can see my screen, because anyone who knows my recovery phrase will be able to spend the ada in my new wallet.", + "description": "Label for the checkbox on wallet backup dialog describing that nobody should be watching when recovery phrase is shown", + "id": "wallet.backup.privacy.warning.dialog.checkbox.label.nobodyWatching" + } + ], + "path": "source/renderer/app/components/wallet/backup-recovery/WalletBackupPrivacyWarningDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please make sure you write down the {walletRecoveryPhraseWordCount} words of your wallet recovery phrase on a piece of paper in the exact order shown here.", + "description": "Instructions for backing up wallet recovery phrase on dialog that displays wallet recovery phrase.", + "id": "wallet.backup.recovery.phrase.display.dialog.backup.instructions" + }, + { + "defaultMessage": "!!!Yes, I have written down my wallet recovery phrase.", + "description": "Label for button \"Yes, I have written down my wallet recovery phrase.\" on wallet backup dialog", + "id": "wallet.backup.recovery.phrase.display.dialog.button.label.iHaveWrittenItDown" + } + ], + "path": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseDisplayDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Please enter your {wordCount}-word wallet recovery phrase. Make sure you enter the words in the correct order.", + "description": "Instructions for verifying wallet recovery phrase on dialog for entering wallet recovery phrase.", + "id": "wallet.backup.recovery.phrase.entry.dialog.verification.instructions" + }, + { + "defaultMessage": "!!!Verify your recovery phrase", + "description": "Label for the recovery phrase input on dialog for entering wallet recovery phrase.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputLabel" + }, + { + "defaultMessage": "!!!Enter your {numberOfWords}-word recovery phrase", + "description": "Placeholder hint for the mnemonics autocomplete.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputHint" + }, + { + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder for the mnemonics autocomplete.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputPlaceholder" + }, + { + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInputNoResults" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "wallet.backup.recovery.phrase.entry.dialog.recoveryPhraseInvalidMnemonics" + }, + { + "defaultMessage": "!!!Confirm", + "description": "Label for button \"Confirm\" on wallet backup dialog", + "id": "wallet.recovery.phrase.show.entry.dialog.button.labelConfirm" + }, + { + "defaultMessage": "!!!I understand that the simplest way to keep my wallet recovery phrase secure is to never store it digitally or online. If I decide to use an online service, such as a password manager with an encrypted database, it is my responsibility to make sure that I use it correctly.", + "description": "Term on wallet creation to store recovery phrase offline", + "id": "wallet.backup.recovery.phrase.entry.dialog.terms.and.condition.offline" + }, + { + "defaultMessage": "!!!I understand that the only way to recover my wallet if my computer is lost, broken, stolen, or stops working is to use my wallet recovery phrase.", + "description": "Term and condition on wallet backup dialog describing that wallet can only be recovered with a security phrase", + "id": "wallet.backup.recovery.phrase.entry.dialog.terms.and.condition.recovery" + } + ], + "path": "source/renderer/app/components/wallet/backup-recovery/WalletRecoveryPhraseEntryDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Import Wallet", + "description": "headline for \"Import wallet from file\" dialog.", + "id": "wallet.file.import.dialog.headline" + }, + { + "defaultMessage": "!!!Import file", + "description": "Label \"Import file\" on the dialog for importing a wallet from a file.", + "id": "wallet.file.import.dialog.walletFileLabel" + }, + { + "defaultMessage": "!!!Drop file here or click to choose", + "description": "Hint for the file upload field on the dialog for importing a wallet from a file.", + "id": "wallet.file.import.dialog.walletFileHint" + }, + { + "defaultMessage": "!!!Wallet name", + "description": "Label for the \"wallet name\" input in the wallet file import dialog.", + "id": "wallet.file.import.dialog.wallet.name.input.label" + }, + { + "defaultMessage": "!!!e.g: Shopping Wallet", + "description": "Hint for the \"Wallet name\" in the wallet file import dialog.", + "id": "wallet.file.import.dialog.wallet.name.input.hint" + }, + { + "defaultMessage": "!!!Import wallet", + "description": "Label \"Import wallet\" submit button on the dialog for importing a wallet from a file.", + "id": "wallet.file.import.dialog.submitLabel" + }, + { + "defaultMessage": "!!!Wallet password", + "description": "Label for the \"Wallet password\" input in the wallet file import dialog.", + "id": "wallet.file.import.dialog.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the wallet file import dialog.", + "id": "wallet.file.import.dialog.repeatPasswordLabel" + }, + { + "defaultMessage": "!!!Password", + "description": "Placeholder for the \"Password\" inputs in the wallet file import dialog.", + "id": "wallet.file.import.dialog.passwordFieldPlaceholder" + } + ], + "path": "source/renderer/app/components/wallet/file-import/WalletFileImportDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Summary", + "description": "Label for the \"Summary\" nav button in the wallet navigation.", + "id": "wallet.navigation.summary" + }, + { + "defaultMessage": "!!!Send", + "description": "Label for the \"Send\" nav button in the wallet navigation.", + "id": "wallet.navigation.send" + }, + { + "defaultMessage": "!!!Receive", + "description": "Label for the \"Receive\" nav button in the wallet navigation.", + "id": "wallet.navigation.receive" + }, + { + "defaultMessage": "!!!Transactions", + "description": "Label for the \"Transactions\" nav button in the wallet navigation.", + "id": "wallet.navigation.transactions" + }, + { + "defaultMessage": "!!!Tokens", + "description": "Label for the \"Tokens\" nav button in the wallet navigation.", + "id": "wallet.navigation.tokens" + }, + { + "defaultMessage": "!!!Settings", + "description": "Label for the \"Settings\" nav button in the wallet navigation.", + "id": "wallet.navigation.settings" + }, + { + "defaultMessage": "!!!Wallet UTXO distribution", + "description": "Label for the \"Wallet UTXO distribution\" nav button in the wallet navigation.", + "id": "wallet.navigation.utxo" + }, + { + "defaultMessage": "!!!More", + "description": "Label for the \"More\" nav button in the wallet navigation.", + "id": "wallet.navigation.more" + } + ], + "path": "source/renderer/app/components/wallet/navigation/WalletNavigation.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The wallet is not responding.", + "description": "Title on the NotResponding dialog.", + "id": "wallet.notResponding.title" + }, + { + "defaultMessage": "!!!The {walletName} wallet is not responding. This is caused by a known but rare issue, which is currently being fixed. Please restart the Cardano node by clicking the button below, which should resolve the issue. If the issue persists, or if it happens again, please submit a support request.", + "description": "Description on the NotResponding dialog.", + "id": "wallet.notResponding.description" + }, + { + "defaultMessage": "!!!Restart Cardano Node", + "description": "Restart Node Button Label on the NotResponding dialog.", + "id": "wallet.notResponding.restartNodeButtonLabel" + }, + { + "defaultMessage": "!!!Submit a support request", + "description": "Submit Support Request Label on the NotResponding dialog", + "id": "wallet.notResponding.submitSupportRequestLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "Submit Support Request Url on the NotResponding dialog", + "id": "wallet.notResponding.submitSupportRequestUrl" + } + ], + "path": "source/renderer/app/components/wallet/not-responding/NotResponding.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Paper wallet certificate", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" headline.", + "id": "paper.wallet.create.certificate.completion.dialog.headline" + }, + { + "defaultMessage": "!!!You may wish to fold your paper wallet certificate and glue together the edges to store it securely. Please keep your certificate safe.", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" subtitle.", + "id": "paper.wallet.create.certificate.completion.dialog.subtitle" + }, + { + "defaultMessage": "!!!When you wish to import your wallet back into Daedalus crop any glued edges of the certificate to open it. To check your balance on the paper wallet at any time, you may use the link below. Copy or save the URL to your browser bookmarks to do this easily", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" link instructions.", + "id": "paper.wallet.create.certificate.completion.dialog.linkInstructions" + }, + { + "defaultMessage": "!!!To receive funds to your paper wallet simply share your wallet address with others.", + "description": "Headline for the \"Paper wallet create certificate completion dialog\" address instructions.", + "id": "paper.wallet.create.certificate.completion.dialog.addressInstructions" + }, + { + "defaultMessage": "!!!Cardano explorer link", + "description": "\"Paper wallet create certificate completion dialog\" cardano link label.", + "id": "paper.wallet.create.certificate.completion.dialog.cardanoLinkLabel" + }, + { + "defaultMessage": "!!!copied", + "description": "\"Paper wallet create certificate completion dialog\" address copied.", + "id": "paper.wallet.create.certificate.completion.dialog.addressCopiedLabel" + }, + { + "defaultMessage": "!!!Wallet address", + "description": "\"Paper wallet create certificate completion dialog\" wallet address label.", + "id": "paper.wallet.create.certificate.completion.dialog.addressLabel" + }, + { + "defaultMessage": "!!!Finish", + "description": "\"Paper wallet create certificate completion dialog\" finish button label.", + "id": "paper.wallet.create.certificate.completion.dialog.finishButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/CompletionDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Abort paper wallet certificate creation?", + "description": "Headline for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.headline" + }, + { + "defaultMessage": "!!!At this point, your paper wallet certificate is not complete and verifications steps are not yet done.", + "description": "Content for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.contentPart1" + }, + { + "defaultMessage": "!!!At this point, your paper wallet certificate is not complete and verifications steps are not yet done.", + "description": "Content for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.contentPart2" + }, + { + "defaultMessage": "!!!Back", + "description": "\"Cancel\" button label for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.button.backLabel" + }, + { + "defaultMessage": "!!!Abort", + "description": "\"Abort\" button label for the paper wallet certificate cancellation confirmation dialog.", + "id": "paper.wallet.create.certificate.confirmation.dialog.button.abortLabel" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/ConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Create a paper wallet certificate", + "description": "Headline for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.headline" + }, + { + "defaultMessage": "!!!Create a paper wallet certificate to store funds offline.", + "description": "Subtitle for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.subtitle" + }, + { + "defaultMessage": "!!!The paper wallet certificate will not be associated with any of your existing wallets. A new, empty wallet will be created.", + "description": "subtitle2 for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.subtitle2" + }, + { + "defaultMessage": "!!!Instructions", + "description": "Instructions list label for the \"Paper wallet create certificate instructions dialog\".", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.label" + }, + { + "defaultMessage": "!!!Your printed certificate will include your paper wallet recovery phrase of {paperWalletRecoveryPhraseWordCount} words. Note that your paper wallet recovery phrase is different to the {walletRecoveryPhraseWordCount}-word recovery phrases used to restore your regular Daedalus wallet.", + "description": "Wallet certificate create instructions dialog definition 1.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition1" + }, + { + "defaultMessage": "!!!For security reasons, the last {paperWalletWrittenWordsCount} words of your paper wallet recovery phrase will not be printed on the paper wallet certificate itself. You will need to write them on your certificate by hand in a moment.", + "description": "Wallet certificate create instructions dialog definition 2.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition2" + }, + { + "defaultMessage": "!!!Use the address on your certificate to send funds to your paper wallet.", + "description": "Wallet certificate create instructions dialog definition 3.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition3" + }, + { + "defaultMessage": "!!!Your paper wallet will be offline so will not be held in Daedalus. To check the balance of the wallet, input the address on the certificate into", + "description": "Wallet certificate create instructions dialog definition 4.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition4" + }, + { + "defaultMessage": "!!!Store your certificate containing your paper wallet recovery phrase in a safe place.", + "description": "Wallet certificate create instructions dialog definition 5.", + "id": "paper.wallet.create.certificate.instructions.dialog.instructionsList.definition5" + }, + { + "defaultMessage": "!!!When you click “Save PDF file for printing” you will be prompted to choose a location on your computer where the PDF file will be saved. After that open the saved PDF file and print it.", + "description": "Wallet certificate create instructions dialog - printing instructions.", + "id": "paper.wallet.create.certificate.instructions.dialog.printingInstructions" + }, + { + "defaultMessage": "!!!Cardano Explorer", + "description": "Wallet certificate create instructions dialog \"Cardano Explorer\" label", + "id": "paper.wallet.create.certificate.instructions.dialog.cardanoExplorer" + }, + { + "defaultMessage": "!!!Save PDF file for printing", + "description": "\"Wallet certificate create instructions dialog\" print button label.", + "id": "paper.wallet.create.certificate.instructions.dialog.button.printLabel" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/InstructionsDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Verify printed certificate", + "description": "Headline for the \"Paper wallet create certificate print dialog\".", + "id": "paper.wallet.create.certificate.print.dialog.headline" + }, + { + "defaultMessage": "!!!Check your paper wallet certificate and make sure everything is readable and correctly printed. You can test this by scanning the QR code with a QR scanner application on your mobile phone.", + "description": "\"Paper wallet create certificate print dialog\" subtitle.", + "id": "paper.wallet.create.certificate.print.dialog.subtitle" + }, + { + "defaultMessage": "!!!Your certificate is not yet complete and does not contain all the data needed to restore your paper wallet. In the next step, you will need to write down an additional {paperWalletWrittenWordsCount} words to your paper wallet recovery phrase.", + "description": "\"Paper wallet create certificate print dialog\" info.", + "id": "paper.wallet.create.certificate.print.dialog.info" + }, + { + "defaultMessage": "!!!Yes, the paper wallet certificate printed successfully.", + "description": "\"Paper wallet create certificate print dialog\" certificate printed confirmation.", + "id": "paper.wallet.create.certificate.print.dialog.certificatePrintedConfirmation" + }, + { + "defaultMessage": "!!!Yes, first {paperWalletPrintedWordsCount} words of the paper wallet recovery phrase are readable.", + "description": "\"Paper wallet create certificate print dialog\" certificate readable confirmation.", + "id": "paper.wallet.create.certificate.print.dialog.certificateReadableConfirmation" + }, + { + "defaultMessage": "!!!Yes, the QR code is scannable.", + "description": "\"Paper wallet create certificate print dialog\" QR scannable confirmation.", + "id": "paper.wallet.create.certificate.print.dialog.qrScannableConfirmation" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/PrintDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Complete your certificate", + "description": "Headline for the \"Paper wallet create certificate securing password dialog\".", + "id": "paper.wallet.create.certificate.securingPassword.dialog.headline" + }, + { + "defaultMessage": "!!!To complete your paper wallet certificate you will need to write the remaining {paperWalletWrittenWordsCount} words of your paper wallet recovery phrase on your certificate.", + "description": "\"Paper wallet create certificate securing password dialog\" first info label.", + "id": "paper.wallet.create.certificate.securingPassword.dialog.infoLabel1" + }, + { + "defaultMessage": "!!!The password can optionally be written on the certificate or kept securely in other location. Here is the placeholder on the certificate intended for your password.", + "description": "You may write the remaining words here:", + "id": "paper.wallet.create.certificate.securingPassword.dialog.infoLabel2" + }, + { + "defaultMessage": "!!!I have written the remaining {paperWalletWrittenWordsCount} words on the certificate.", + "description": "\"Paper wallet create certificate securing password dialog\" secure password confirmation.", + "id": "paper.wallet.create.certificate.securingPassword.dialog.securingPasswordConfirmation" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/SecuringPasswordDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Verify certificate", + "description": "Headline for the \"Paper wallet create certificate verification dialog\".", + "id": "paper.wallet.create.certificate.verification.dialog.headline" + }, + { + "defaultMessage": "!!!Enter your paper wallet recovery phrase to verify your paper wallet certificate.", + "description": "\"Paper wallet create certificate verification dialog\" subtitle.", + "id": "paper.wallet.create.certificate.verification.dialog.subtitle" + }, + { + "defaultMessage": "!!!Make sure you enter all {fullPhraseWordCount} words for the paper wallet recovery phrase, first {printedWordCount} words printed on the certificate followed by the {writtenWordCount} words you wrote by hand.", + "description": "\"Paper wallet create certificate verification dialog\" subtitle.", + "id": "paper.wallet.create.certificate.verification.dialog.instructions" + }, + { + "defaultMessage": "!!!Paper wallet recovery phrase", + "description": "\"Paper wallet create certificate verification dialog\" recovery phrase label.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.label" + }, + { + "defaultMessage": "!!!Enter recovery phrase", + "description": "\"Paper wallet create certificate verification dialog\" recovery phrase hint.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.hint" + }, + { + "defaultMessage": "!!!No results", + "description": "\"Paper wallet create certificate verification dialog\" recovery phrase no results label.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveryPhrase.noResults" + }, + { + "defaultMessage": "!!!Clear", + "description": "\"Paper wallet create certificate verification dialog\" button clear label.", + "id": "paper.wallet.create.certificate.verification.dialog.button.clearLabel" + }, + { + "defaultMessage": "!!!I understand that the paper wallet I create will not be stored in Daedalus.", + "description": "\"Paper wallet create certificate verification dialog\" storing understandance confirmation.", + "id": "paper.wallet.create.certificate.verification.dialog.storingUnderstandanceConfirmationLabel" + }, + { + "defaultMessage": "!!!I understand that my paper wallet can be recovered only by using my paper wallet certificate.", + "description": "\"Paper wallet create certificate verification dialog\" recovering understandance confirmation.", + "id": "paper.wallet.create.certificate.verification.dialog.recoveringUnderstandanceConfirmationLabel" + } + ], + "path": "source/renderer/app/components/wallet/paper-wallet-certificate/VerificationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Available wallet addresses", + "description": "Instructions Title on the wallet \"Receive page\"", + "id": "wallet.receive.page.instructions.instructionsTitle" + }, + { + "defaultMessage": "!!!Share any of these wallet addresses to receive payments in ada or a native Cardano token.", + "description": "Instructions Description on the wallet \"Receive page\"", + "id": "wallet.receive.page.instructions.instructionsDescription" + }, + { + "defaultMessage": "!!!Receiving addresses", + "description": "Addresses Title on the wallet \"Receive page\"", + "id": "wallet.receive.page.addresses.addressesTitle" + }, + { + "defaultMessage": "!!!Show used", + "description": "Label for \"show used\" wallet addresses link on the wallet \"Receive page\"", + "id": "wallet.receive.page.showUsedLabel" + }, + { + "defaultMessage": "!!!Privacy warning: Please note that all of your receiving addresses include your stake key. When you share a receiving address, the recipient can search the blockchain using your stake key to locate all addresses associated with your wallet, and also discover your wallet balance and transaction history.", + "description": "Privacy warning on the wallet \"Receive page\"", + "id": "wallet.receive.page.instructions.privacyWarning" + } + ], + "path": "source/renderer/app/components/wallet/receive/WalletReceiveSequential.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Share", + "description": "Label for \"Share\" link on the wallet \"Receive page\"", + "id": "wallet.receive.page.shareAddressLabel" + } + ], + "path": "source/renderer/app/components/wallet/receive/AddressActions.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Copy address", + "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", + "id": "wallet.receive.page.copyAddressLabel" + }, + { + "defaultMessage": "!!!Your wallet address", + "description": "Label for wallet address on the wallet \"Receive page\"", + "id": "wallet.receive.page.walletAddressLabel" + }, + { + "defaultMessage": "!!!Share this wallet address to receive payments. To protect your privacy, always use a new address when requesting funds. To generate a new address please enter your spending password and press the ‘Generate a new address’ button.", + "description": "Wallet receive payments instructions on the wallet \"Receive page\"", + "id": "wallet.receive.page.walletReceiveInstructions" + }, + { + "defaultMessage": "!!!Generate a new address", + "description": "Label for \"Generate new address\" button on the wallet \"Receive page\"", + "id": "wallet.receive.page.generateNewAddressButtonLabel" + }, + { + "defaultMessage": "!!!Receiving addresses", + "description": "\"Generated addresses\" section title on the wallet \"Receive page\"", + "id": "wallet.receive.page.receivingAddressesSectionTitle" + }, + { + "defaultMessage": "!!!Password", + "description": "Placeholder for \"spending password\" on the wallet \"Receive page\"", + "id": "wallet.receive.page.spendingPasswordPlaceholder" + } + ], + "path": "source/renderer/app/components/wallet/receive/WalletReceiveRandom.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!PDF note", + "description": "placeholder on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.inputLabel" + }, + { + "defaultMessage": "!!!Add a note to the sender", + "description": "inputPlaceholder on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.inputPlaceholder" + }, + { + "defaultMessage": "!!!Save QR code image", + "description": "saveQRCodeImage on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.saveQRCodeImage" + }, + { + "defaultMessage": "!!!Download as PDF", + "description": "downloadPDFButton on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.downloadPDFButton" + }, + { + "defaultMessage": "!!!Share wallet address", + "description": "dialogTitle on the wallet \"Share Address\" dialog", + "id": "wallet.receive.dialog.dialogTitle" + }, + { + "defaultMessage": "!!!Copy address", + "description": "Label for \"Copy address\" link on the wallet \"Receive page\"", + "id": "wallet.receive.dialog.copyAddressLabel" + }, + { + "defaultMessage": "!!!Receiving address path", + "description": "Tooltip for the receiving address path", + "id": "wallet.receive.dialog.spendingPathTooltip" + }, + { + "defaultMessage": "!!!Rewards address path", + "description": "Tooltip for the rewards address path", + "id": "wallet.receive.dialog.stakingPathTooltip" + }, + { + "defaultMessage": "!!!Submit a request to IOHK Support", + "description": "Support request button label", + "id": "wallet.receive.dialog.supportRequestButtonLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "Support request link URL", + "id": "wallet.receive.dialog.supportRequestLinkUrl" + }, + { + "defaultMessage": "!!!Yes, I am sure I have compared the address displayed in Daedalus with the address displayed on the {deviceType} device by comparing the beginning and ending of the address.", + "description": "Invalid address confirmation checkbox label", + "id": "wallet.receive.dialog.invalidAddressConfirmationLabel" + }, + { + "defaultMessage": "!!!Is the address you have verified correct?", + "description": "Verification options section label", + "id": "wallet.receive.dialog.verificationCheckOptionsLabel" + }, + { + "defaultMessage": "!!!Yes", + "description": "Verification option \"Valid\" label", + "id": "wallet.receive.dialog.verificationCheckOptionValid" + }, + { + "defaultMessage": "!!!No, I am sure that address displayed in Daedalus is different from the address displayed on my {deviceType} device", + "description": "Verification option \"Invalid\" label", + "id": "wallet.receive.dialog.verificationCheckOptionInvalid" + }, + { + "defaultMessage": "!!!No, reverify", + "description": "Verification option \"Reverify\" label", + "id": "wallet.receive.dialog.verificationCheckOptionReverify" + }, + { + "defaultMessage": "!!!Daedalus verified the address", + "description": "Daedalus verification status check label", + "id": "wallet.receive.dialog.softwareCheckLabel" + }, + { + "defaultMessage": "!!!You have verified the address", + "description": "User verification status check label", + "id": "wallet.receive.dialog.confirmationCheckLabel" + }, + { + "defaultMessage": "!!!Please compare the address displayed here on the screen with the address displayed on the {deviceType} device by comparing at least the first 5 characters at the start of the address after the \"addr\" part and at least 5 characters at the end of the address.", + "description": "Address verification instructions", + "id": "wallet.receive.dialog.addressVerificationInstructions" + }, + { + "defaultMessage": "!!!Warning, your copy of Daedalus may be hacked!", + "description": "Invalid address \"Warning\" title", + "id": "wallet.receive.dialog.invalidAddressWarningTitle" + }, + { + "defaultMessage": "!!!You have manually compared the address shown in Daedalus with the address shown on the hardware wallet device and reported that they are different. If this is the case, please contact support and make sure you download and attach logs.", + "description": "Invalid address \"Warning\" description", + "id": "wallet.receive.dialog.invalidAddressWarningDescription" + } + ], + "path": "source/renderer/app/components/wallet/receive/WalletReceiveDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Title", + "description": "Label for the \"Title\" text input in the wallet send form.", + "id": "wallet.send.form.title.label" + }, + { + "defaultMessage": "!!!E.g: Money for Frank", + "description": "Hint inside the \"Receiver\" text input in the wallet send form.", + "id": "wallet.send.form.title.hint" + }, + { + "defaultMessage": "!!!Receiver", + "description": "Label for the \"Receiver\" text input in the wallet send form.", + "id": "wallet.send.form.receiver.label" + }, + { + "defaultMessage": "!!!Paste an address", + "description": "Hint inside the \"Receiver\" text input in the wallet send form.", + "id": "wallet.send.form.receiver.placeholder" + }, + { + "defaultMessage": "!!!Token", + "description": "Label for the \"Token\" number input in the wallet send form.", + "id": "wallet.send.form.asset.label" + }, + { + "defaultMessage": "!!!Ada", + "description": "Label for the \"Ada\" input in the wallet send form.", + "id": "wallet.send.form.asset.adaLabel" + }, + { + "defaultMessage": "!!!Remove", + "description": "Label for the \"Remove\" button in the wallet send form.", + "id": "wallet.send.form.button.removeLabel" + }, + { + "defaultMessage": "!!!Clear", + "description": "Label for the \"Clear\" button in the wallet send form.", + "id": "wallet.send.form.button.clearLabel" + }, + { + "defaultMessage": "!!!This receiver address belongs to the same wallet from which you are sending funds. If you proceed with this transaction, the transferred funds will remain in this wallet, and you will incur transaction fees, as outlined in Estimated fees.", + "description": "Label for the same wallet tooltip in the wallet send form.", + "id": "wallet.send.form.sameWalletLabel" + }, + { + "defaultMessage": "!!!+ Add a token", + "description": "Label for the \"+ Add a token\" button in the wallet send form.", + "id": "wallet.send.form.button.addAssetButtonLabel" + }, + { + "defaultMessage": "!!!Estimated fees", + "description": "Label for the \"Estimated fees\" number input in the wallet send form.", + "id": "wallet.send.form.estimatedFee.label" + }, + { + "defaultMessage": "!!!of", + "description": "Label for the \"of\" max ADA value in the wallet send form.", + "id": "wallet.send.form.of.label" + }, + { + "defaultMessage": "!!!a minimum of {minimumAda} ADA required", + "description": "Label for the min ADA required value in the wallet send form.", + "id": "wallet.send.form.minAdaRequired" + }, + { + "defaultMessage": "!!!This transaction requires a minimum of {minimumAda} ADA to be sent.", + "description": "Tooltip for the min ADA required value in the wallet send form.", + "id": "wallet.send.form.minAdaRequiredWithAssetTooltip" + }, + { + "defaultMessage": "!!!A minimum of {minimumAda} ADA needs to be sent with every transaction.", + "description": "Tooltip for the min ADA required value in the wallet send form.", + "id": "wallet.send.form.minAdaRequiredWithNoAssetTooltip" + }, + { + "defaultMessage": "!!!Description", + "description": "Label for the \"description\" text area in the wallet send form.", + "id": "wallet.send.form.description.label" + }, + { + "defaultMessage": "!!!You can add a message if you want", + "description": "Hint in the \"description\" text area in the wallet send form.", + "id": "wallet.send.form.description.hint" + }, + { + "defaultMessage": "!!!Reset", + "description": "Label for the reset button on the wallet send form.", + "id": "wallet.send.form.reset" + }, + { + "defaultMessage": "!!!Send", + "description": "Label for the send button on the wallet send form.", + "id": "wallet.send.form.send" + }, + { + "defaultMessage": "!!!Please enter a valid amount.", + "description": "Error message shown when invalid amount was entered.", + "id": "wallet.send.form.errors.invalidAmount" + }, + { + "defaultMessage": "!!!Please enter a title with at least 3 characters.", + "description": "Error message shown when invalid transaction title was entered.", + "id": "wallet.send.form.errors.invalidTitle" + }, + { + "defaultMessage": "!!!Calculating fees", + "description": "Label for the \"Calculating fees\" message for amount input field.", + "id": "wallet.send.form.calculatingFeesLabel" + }, + { + "defaultMessage": "!!!UPDATE", + "description": "Label for the \"UPDATE\" button responsible to set minimum amount required for transaction .", + "id": "wallet.send.form.asset.updateAdaAmountButton" + }, + { + "defaultMessage": "!!!to the minimum of {minimumAda} ADA required", + "description": "Description for the \"UPDATE\" button when ADA amount is less than required ", + "id": "wallet.send.form.updateAdaAmountDescription" + }, + { + "defaultMessage": "!!!Note: the ada field was automatically updated because this transaction requires a minimum of {minimumAda} ADA.", + "description": "Minimum amount update notice", + "id": "wallet.send.form.minimumAmountNote" + }, + { + "defaultMessage": "!!!Note: the ada field was automatically updated to {adaAmount} ADA because now it fulfills the minimum amount of {minimumAda} ADA for the transaction.", + "description": "Restored ada amount to original user input", + "id": "wallet.send.form.restoredAdaAmount" + } + ], + "path": "source/renderer/app/components/wallet/send-form/messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!The balance and transaction history of this wallet is being synced with the blockchain.", + "description": "Syncing transactions message shown during async wallet restore in the wallet send form.", + "id": "wallet.send.form.syncingTransactionsMessage" + }, + { + "defaultMessage": "!!!Favorites", + "description": "Favorites list title label", + "id": "wallet.tokens.list.favorites.title" + }, + { + "defaultMessage": "!!!Tokens", + "description": "Favorites list title label", + "id": "wallet.tokens.list.tokens.title" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-tokens/WalletTokens.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Set a password for {walletName} wallet", + "description": "Title for the \"Change wallet password\" dialog when there is no password set.", + "id": "wallet.settings.changePassword.dialog.title.setPassword" + }, + { + "defaultMessage": "!!!Change password", + "description": "Title for the \"Change wallet password\" dialog when there is already password set.", + "id": "wallet.settings.changePassword.dialog.title.changePassword" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Label for the \"Spending password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Current password", + "description": "Label for the \"Current password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.currentPasswordLabel" + }, + { + "defaultMessage": "!!!New password", + "description": "Label for the \"New password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.newPasswordLabel" + }, + { + "defaultMessage": "!!!Repeat password", + "description": "Label for the \"Repeat password\" input in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.repeatPasswordLabel" + }, + { + "defaultMessage": "!!!Type current password", + "description": "Placeholder for the \"Current password\" inputs in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.currentPasswordFieldPlaceholder" + }, + { + "defaultMessage": "!!!Type new password", + "description": "Placeholder for the \"New password\" inputs in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.newPasswordFieldPlaceholder" + }, + { + "defaultMessage": "!!!Repeat new password", + "description": "Placeholder for the \"Repeat password\" inputs in the change wallet password dialog.", + "id": "wallet.settings.changePassword.dialog.repeatPasswordFieldPlaceholder" + } + ], + "path": "source/renderer/app/components/wallet/settings/ChangeSpendingPasswordDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delegate", + "description": "Label for the delegate button on wallet settings", + "id": "wallet.settings.delegateWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/DelegateWalletButton.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delete wallet", + "description": "Delete wallet header on the wallet settings page.", + "id": "wallet.settings.deleteWallet.header" + }, + { + "defaultMessage": "!!!Once you delete this wallet it will be removed from the Daedalus interface and you will lose access to any remaining funds in the wallet. The only way to regain access after deletion is by restoring it using your wallet recovery phrase.", + "description": "Delete wallet warning explaining the consequences.", + "id": "wallet.settings.deleteWallet.warning1" + }, + { + "defaultMessage": "!!!You may wish to verify your recovery phrase before deletion to ensure that you can restore this wallet in the future, if desired.", + "description": "Delete wallet warning explaining the consequences.", + "id": "wallet.settings.deleteWallet.warning2" + }, + { + "defaultMessage": "!!!Delete wallet", + "description": "Label for the delete button on wallet settings", + "id": "wallet.settings.deleteWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/DeleteWallet.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Export Wallet", + "description": "headline for \"export wallet to file\" dialog.", + "id": "wallet.settings.exportToFile.dialog.headline" + }, + { + "defaultMessage": "!!!You are exporting {walletName} to a file.", + "description": "headline for \"export wallet to file\" dialog.", + "id": "wallet.settings.exportToFile.dialog.introduction" + }, + { + "defaultMessage": "!!!Export", + "description": "Label for export wallet to file submit button.", + "id": "wallet.settings.exportToFile.dialog.submit.label" + } + ], + "path": "source/renderer/app/components/wallet/settings/ExportWalletToFileDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!ICO Public Key", + "description": "Title for the \"ICO Public Key QR Code\" dialog.", + "id": "wallet.settings.icoPublicKey" + }, + { + "defaultMessage": "!!!Copy ICO public key", + "description": "Copy ICO public key label.", + "id": "wallet.settings.copyICOPublicKey" + } + ], + "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyQRCodeDialog.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your wallet's ICO public key enables participation in the initial coin offering presales.", + "description": "ICO public key header on the wallet settings page.", + "id": "wallet.settings.icoPublicKey.description" + }, + { + "defaultMessage": "!!!Click the icon on the right to view your ICO public key.", + "description": "ICO public key show instruction.", + "id": "wallet.settings.icoPublicKeyShowInstruction" + } + ], + "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyBox.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Show QR code", + "description": "Show QR code tooltip.", + "id": "wallet.settings.showQRCode" + }, + { + "defaultMessage": "!!!Click Reveal on the right-hand side to display the public key of the wallet.", + "description": "Wallet public key show instruction.", + "id": "wallet.settings.walletPublicKeyShowInstruction" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletPublicKeyBox.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Reveal ICO public key", + "description": "Title \"Choose a stake pool\" on the reveal Wallet Id dialog.", + "id": "wallet.settings.icoPublicKeyDialog.title" + }, + { + "defaultMessage": "!!!Please enter your spending password to reveal your ICO’s public key.", + "description": "Description on the reveal Wallet Id dialog.", + "id": "wallet.settings.icoPublicKeyDialog.description" + }, + { + "defaultMessage": "!!!Reveal ICO public key", + "description": "Description on the reveal ICO Id dialog.", + "id": "wallet.settings.icoPublicKeyDialog.button" + } + ], + "path": "source/renderer/app/components/wallet/settings/ICOPublicKeyDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Derivation path", + "description": "Tooltip for the derivation path", + "id": "wallet.settings.dialog.derivationPathTooltip" + }, + { + "defaultMessage": "!!!Wallet Public Key", + "description": "Title for the \"Wallet Public Key QR Code\" dialog.", + "id": "wallet.settings.walletPublicKey" + }, + { + "defaultMessage": "!!!Copy public key", + "description": "Copy public key label.", + "id": "wallet.settings.copyWalletPublicKey" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/settings/PublicKeyQRCodeDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Set a password", + "description": "Label for the \"Set a password\" button in the set wallet password dialog.", + "id": "wallet.settings.setWalletPassword.dialog.setPasswordButton" + }, + { + "defaultMessage": "!!!To keep your wallet secure and start using it in Daedalus, you need to set a spending password.", + "description": "Message for the \"Set a password\" button in the set wallet password dialog.", + "id": "wallet.settings.setWalletPassword.dialog.setPasswordMessage" + }, + { + "defaultMessage": "!!!Your wallet is not protected with a password", + "description": "Title for the \"Set wallet password\" dialog when there is not password set.", + "id": "wallet.settings.setWalletPassword.dialog.setPasswordTitle" + } + ], + "path": "source/renderer/app/components/wallet/settings/SetWalletPassword.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Undelegate", + "description": "Label for the undelegate button on wallet settings", + "id": "wallet.settings.undelegateWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/UndelegateWalletButton.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Undelegate", + "description": "Title for the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.title" + }, + { + "defaultMessage": "!!!Undelegate", + "description": "Label for the \"Undelegate\" button in the undelegate wallet dialog.", + "id": "wallet.settings.undelegate.dialog.confirmButtonLabel" + }, + { + "defaultMessage": "!!!

The stake from your wallet {walletName} is currently delegated to the [{stakePoolTicker}] {stakePoolName} stake pool.

Do you want to undelegate your stake and stop earning rewards?

", + "description": "Description of current delegation of wallet in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.descriptionWithTicker" + }, + { + "defaultMessage": "!!!

The stake from your wallet {walletName} is currently delegated to the {stakePoolTicker} stake pool.

Do you want to undelegate your stake and stop earning rewards?

", + "description": "Description of current delegation of wallet in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.descriptionWithUnknownTicker" + }, + { + "defaultMessage": "!!!unknown", + "description": "unknown stake pool label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.unknownStakePoolLabel" + }, + { + "defaultMessage": "!!!I understand that I am not supporting the Cardano network when my stake is undelegated.", + "description": "Notice to confirm if the user understands unsupporting Cardano network after undelegation", + "id": "wallet.settings.undelegate.dialog.confirmUnsupportNotice" + }, + { + "defaultMessage": "!!!I understand that I will not be eligible to earn rewards when my stake is undelegated.", + "description": "Notice to confirm if the user understands non-earning rewards after undelegation", + "id": "wallet.settings.undelegate.dialog.confirmIneligibleNotice" + }, + { + "defaultMessage": "!!!Fees", + "description": "Fees label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.feesLabel" + }, + { + "defaultMessage": "!!!Deposits reclaimed", + "description": "Deposits reclaimed label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.depositLabel" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Spending password label in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.spendingPasswordLabel" + }, + { + "defaultMessage": "!!!Type your spending password here", + "description": "Spending password placeholder in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.spendingPasswordPlaceholder" + }, + { + "defaultMessage": "!!!Incorrect spending password.", + "description": "Label for password error in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.passwordError" + }, + { + "defaultMessage": "!!!Calculating fees", + "description": "\"Calculating fees\" message in the \"Undelegate wallet\" dialog.", + "id": "wallet.settings.undelegate.dialog.calculatingFees" + } + ], + "path": "source/renderer/app/components/wallet/settings/UndelegateWalletConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet undelegated", + "description": "Title for the \"Undelegate Result\" dialog.", + "id": "wallet.settings.undelegate.result.dialog.title" + }, + { + "defaultMessage": "!!!The stake from your wallet {walletName} is no longer delegated and you will soon stop earning rewards for this wallet.", + "description": "Description 1 for the \"Undelegate Result\" dialog.", + "id": "wallet.settings.undelegate.result.dialog.description1" + }, + { + "defaultMessage": "!!!Your new delegation preferences are now posted on the blockchain and will take effect after both the current and next Cardano epochs have completed in {timeUntilNextEpochStart}. During this time, your previous delegation preferences are still active.", + "description": "Description 2 for the \"Undelegate Result\" dialog.", + "id": "wallet.settings.undelegate.result.dialog.description2" + } + ], + "path": "source/renderer/app/components/wallet/settings/UndelegateWalletSuccessDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Unpair wallet", + "description": "Unpair wallet header on the wallet settings page.", + "id": "wallet.settings.unpairWallet.header" + }, + { + "defaultMessage": "!!!Once you unpair this wallet it will be removed from the Daedalus interface and you will lose access to any remaining funds in the wallet. The only way to regain access after deletion is by restoring it using your wallet recovery phrase.", + "description": "Unpair wallet warning explaining the consequences.", + "id": "wallet.settings.unpairWallet.warning" + }, + { + "defaultMessage": "!!!Unpair wallet", + "description": "Label for the unpair button on wallet settings", + "id": "wallet.settings.unpairWalletButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/settings/UnpairWallet.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Reveal wallet public key", + "description": "Title \"Choose a stake pool\" on the reveal Wallet Id dialog.", + "id": "wallet.settings.walletPublicKeyDialog.title" + }, + { + "defaultMessage": "!!!Please enter your spending password to reveal your wallet’s public key.", + "description": "Description on the reveal Wallet Id dialog.", + "id": "wallet.settings.walletPublicKeyDialog.description" + }, + { + "defaultMessage": "!!!Reveal wallet public key", + "description": "Description on the reveal Wallet Id dialog.", + "id": "wallet.settings.walletPublicKeyDialog.button" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletPublicKeyDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet recovery phrase verification", + "description": "Label for the recoveryPhraseStep1Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Title" + }, + { + "defaultMessage": "!!!To verify that you have the correct recovery phrase for this wallet, you can enter it on the following screen.", + "description": "Label for the recoveryPhraseStep1Paragraph1 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Paragraph1" + }, + { + "defaultMessage": "!!!Are you being watched? Please make sure that nobody can see your screen while you are entering your wallet recovery phrase.", + "description": "Label for the recoveryPhraseStep1Paragraph2 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Paragraph2" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for the recoveryPhraseStep1Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep1Button" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep1Dialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet recovery phrase verification", + "description": "Label for the recoveryPhraseStep2Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Title" + }, + { + "defaultMessage": "!!!Please enter your wallet recovery phrase. Make sure you enter the words in the correct order.", + "description": "Label for the recoveryPhraseStep2Description on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Description" + }, + { + "defaultMessage": "!!!Recovery phrase", + "description": "Label for the recoveryPhraseStep2Subtitle on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Subtitle" + }, + { + "defaultMessage": "!!!Verify", + "description": "Label for the recoveryPhraseStep2Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep2Button" + }, + { + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder \"Enter word #{wordNumber}\" for the recovery phrase input on the verification dialog.", + "id": "wallet.settings.recoveryPhraseInputPlaceholder" + }, + { + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the recovery phrase input search results.", + "id": "wallet.settings.recoveryPhraseInputNoResults" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Error message shown when invalid recovery phrase was entered.", + "id": "wallet.settings.recoveryPhraseStep2InvalidMnemonics" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep2Dialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!verification successful", + "description": "Label for the recoveryPhraseStep3Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Title" + }, + { + "defaultMessage": "!!!You have verified the recovery phrase for this wallet. You can use it at any time to recover the funds in this wallet on another computer, even if using a different version of Daedalus.", + "description": "Label for the recoveryPhraseStep3Paragraph1 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Paragraph1" + }, + { + "defaultMessage": "!!!Please make sure to return your wallet recovery phrase to a secure place for safekeeping. Anyone with access to your wallet recovery phrase can take control of your funds.", + "description": "Label for the recoveryPhraseStep3Paragraph2 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Paragraph2" + }, + { + "defaultMessage": "!!!Finish", + "description": "Label for the recoveryPhraseStep3Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep3Button" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep3Dialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!verification failure", + "description": "Label for the recoveryPhraseStep4Title on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Title" + }, + { + "defaultMessage": "!!!The wallet recovery phrase you have entered does not match the recovery phrase of this wallet. Make sure you have entered the wallet recovery phrase which was written down during the wallet creation process for this wallet and make sure the words are in the correct order.", + "description": "Label for the recoveryPhraseStep4Paragraph1 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Paragraph1" + }, + { + "defaultMessage": "!!!If you are unable to verify your wallet recovery phrase, you should create a new wallet and move all of the funds from this wallet to the new wallet. If you do this, make sure you keep the wallet recovery phrase for the new wallet safe and secure.", + "description": "Label for the recoveryPhraseStep4Paragraph2 on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Paragraph2" + }, + { + "defaultMessage": "!!!Verify recovery phrase again", + "description": "Label for the recoveryPhraseStep4Button on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4Button" + }, + { + "defaultMessage": "!!!Read support portal article", + "description": "Label for the recoveryPhraseStep4SupportTitle on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4SupportTitle" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360035341914", + "description": "Label for the recoveryPhraseStep4SupportUrl on wallet settings.", + "id": "wallet.settings.recoveryPhraseStep4SupportUrl" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseStep4Dialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Do you have your wallet recovery phrase?", + "description": "Label for the recoveryPhraseVerificationTitle on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.title" + }, + { + "defaultMessage": "!!!Funds in this wallet can only be recovered using the correct wallet recovery phrase, which is a unique {wordCount}-word string you were shown and asked to write down when creating this wallet. You can re-enter your wallet recovery phrase to verify that you have the correct recovery phrase for this wallet.", + "description": "Label for the recoveryPhraseVerificationDescription on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.description" + }, + { + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in {timeUntilWarning}.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkTimeUntil" + }, + { + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few months.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkFewMonths" + }, + { + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few weeks.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkFewWeeks" + }, + { + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase in a few days.", + "description": "Label for the recoveryPhraseVerificationNeverOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverOkFewDays" + }, + { + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase.", + "description": "Label for the recoveryPhraseVerificationNeverWarning on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverWarning" + }, + { + "defaultMessage": "!!!We recommend that you verify your wallet recovery phrase.", + "description": "Label for the recoveryPhraseVerificationNeverNotification on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.neverNotification" + }, + { + "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}.", + "description": "Label for the recoveryPhraseVerificationCheckedOk on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.checkedOk" + }, + { + "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}.", + "description": "Label for the recoveryPhraseVerificationCheckedWarning on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.checkedWarning" + }, + { + "defaultMessage": "!!!You verified the recovery phrase for this wallet {timeAgo}. We recommend that you verify your wallet recovery phrase again.", + "description": "Label for the recoveryPhraseVerificationCheckedNotification on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.checkedNotification" + }, + { + "defaultMessage": "!!!If this wallet was restored from a paper wallet certificate, you cannot use this feature to verify your wallet recovery phrase. Paper wallet recovery phrase to regular wallet recovery phrase conversion will be available in Daedalus soon.", + "description": "Description for the paperWallet instructions on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.paperWalletDescription" + }, + { + "defaultMessage": "!!!Paper wallet", + "description": "Title for the paperWallet instructions on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.paperWalletTitle" + }, + { + "defaultMessage": "!!!Verify wallet recovery phrase", + "description": "Label for the recoveryPhraseVerificationButton on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.button" + }, + { + "defaultMessage": "!!!ヶ月,か月", + "description": "Label for the recoveryPhraseVerificationButton on wallet settings.", + "id": "wallet.settings.recoveryPhraseVerification.timeUntilWarningReplacement" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletRecoveryPhraseVerificationWidget.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Transaction assurance security level", + "description": "Label for the \"Transaction assurance security level\" dropdown.", + "id": "wallet.settings.assurance" + }, + { + "defaultMessage": "!!!Undelegating your wallet", + "description": "Undelegate wallet header on the wallet settings page.", + "id": "wallet.settings.undelegateWallet.header" + }, + { + "defaultMessage": "!!!If you are planning to stop using this wallet and remove all funds, you should first undelegate it to recover your 2 ada deposit. You will continue getting delegation rewards during the three Cardano epochs after undelegating your wallet.", + "description": "Undelegate wallet warning explaining the consequences.", + "id": "wallet.settings.undelegateWallet.warning" + }, + { + "defaultMessage": "!!!This wallet is synchronizing with the blockchain, so this wallet's delegation status is currently unknown, and undelegation is not possible.", + "description": "Undelegate wallet disabled warning explaining why it is disabled.", + "id": "wallet.settings.undelegateWallet.disabledWarning" + }, + { + "defaultMessage": "!!!Delegate your wallet", + "description": "Delegate wallet header on the wallet settings page.", + "id": "wallet.settings.delegateWallet.header" + }, + { + "defaultMessage": "!!!This wallet is not delegated. Please, delegate the stake from this wallet to earn rewards and support the Cardano network's security.", + "description": "Delegate wallet warning.", + "id": "wallet.settings.delegateWallet.warning" + }, + { + "defaultMessage": "!!!This wallet is synchronizing with the blockchain, so this wallet's delegation status is currently unknown, and delegation is not possible.", + "description": "Delegate wallet disabled warning explaining why it is disabled.", + "id": "wallet.settings.delegateWallet.disabledWarning" + }, + { + "defaultMessage": "!!!Name", + "description": "Label for the \"Name\" text input on the wallet settings page.", + "id": "wallet.settings.name.label" + }, + { + "defaultMessage": "!!!Password", + "description": "Label for the \"Password\" field.", + "id": "wallet.settings.password" + }, + { + "defaultMessage": "!!!Last updated", + "description": "Last updated X time ago message.", + "id": "wallet.settings.passwordLastUpdated" + }, + { + "defaultMessage": "!!!You still don't have password", + "description": "You still don't have password set message.", + "id": "wallet.settings.passwordNotSet" + } + ], + "path": "source/renderer/app/components/wallet/settings/WalletSettings.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!+ {amount} of fees", + "description": "Label for the \"+ 12.042481 of fees\" message above amount input field.", + "id": "wallet.amountInput.feesLabel" + }, + { + "defaultMessage": "!!!Calculating fees", + "description": "Label for the \"Calculating fees\" message above amount input field.", + "id": "wallet.amountInput.calculatingFeesLabel" + } + ], + "path": "source/renderer/app/components/wallet/skins/AmountInputSkin.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Tokens", + "description": "Number of tokens title on Wallet summary assets page", + "id": "wallet.summary.assets.tokensTitle" + }, + { + "defaultMessage": "!!!Want to find out more about native tokens?", + "description": "\"Learn more\" text in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.textTop" + }, + { + "defaultMessage": "!!!Start by visiting the IOHK blog for a useful primer.", + "description": "\"Learn more\" text in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.textBottom" + }, + { + "defaultMessage": "!!!Learn more", + "description": "\"Learn more\" label or button in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.linkLabel" + }, + { + "defaultMessage": "!!!https://iohk.io/en/blog/posts/2021/02/04/native-tokens-to-bring-new-utility-to-life-on-cardano/", + "description": "\"Learn more\" link URL in the Wallets Summary No Tokens component", + "id": "wallet.summary.noTokens.learnMore.linkUrl" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-no-tokens/WalletNoTokens.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Converts as", + "description": "\"Currency - title\" label on Wallet summary currency page", + "id": "wallet.summary.currency.title" + }, + { + "defaultMessage": "!!!converted {fetchedTimeAgo}", + "description": "\"Currency - last fetched\" label on Wallet summary currency page", + "id": "wallet.summary.currency.lastFetched" + }, + { + "defaultMessage": "!!!fetching conversion rates", + "description": "\"Currency - Fetching\" label on Wallet summary currency page", + "id": "wallet.summary.currency.isFetchingRate" + } + ], + "path": "source/renderer/app/components/wallet/summary/WalletSummaryCurrency.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{total} transactions, {pending} pending", + "description": "\"Number of transactions\" label on Wallet summary header page", + "id": "wallet.summary.header.transactionsLabel" + } + ], + "path": "source/renderer/app/components/wallet/summary/WalletSummaryHeader.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{total} rewards earned, {unspent} unspent rewards", + "description": "Headline for the Decentralisation notification.", + "id": "wallet.summary.header.rewardsSummary" + }, + { + "defaultMessage": "!!!All the ada in this wallet is in the rewards account. Since transaction fees cannot be paid with rewards, please send 2 or more ada to this wallet to cover transaction fees.", + "description": "Tooltip describing that rewards are unspendable on the Wallet summary header", + "id": "wallet.summary.header.unspendableTooltip" + } + ], + "path": "source/renderer/app/components/wallet/summary/WalletSummaryHeaderRewards.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cancel pending transaction", + "description": "Label for the cancel pending transaction button", + "id": "wallet.transaction.pending.cancelTransactionButton" + }, + { + "defaultMessage": "!!!Remove failed transaction", + "description": "Label for the remove failed transaction button", + "id": "wallet.transaction.failed.removeTransactionButton" + } + ], + "path": "source/renderer/app/components/wallet/transactions/CancelTransactionButton.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Confirm transaction cancellation?", + "description": "Headline for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.headline" + }, + { + "defaultMessage": "!!!This transaction was submitted to the Cardano network some time ago, but has not been finalized yet. You can try to cancel the transaction now to release the pending funds, but there is a chance that the transaction will be finalized regardless. In this case, the transaction will reappear in your wallet as a completed transaction.", + "description": "Content for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.content1" + }, + { + "defaultMessage": "!!!To ensure that this transfer of funds is processed as soon as possible, we recommend that you cancel this transaction and submit a new one to the network.", + "description": "Content for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.content2" + }, + { + "defaultMessage": "!!!No, keep the transaction pending", + "description": "\"Cancel\" button label for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.button.backLabel" + }, + { + "defaultMessage": "!!!Yes, cancel the transaction", + "description": "\"Confirm\" button label for the pending transaction cancellation confirmation dialog.", + "id": "cancel.transaction.confirmation.dialog.button.confirmLabel" + } + ], + "path": "source/renderer/app/components/wallet/transactions/CancelTransactionConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!All Transactions", + "description": "All Transactions button label.", + "id": "wallet.transaction.filter.allTransactions" + }, + { + "defaultMessage": "!!!Reset Filter", + "description": "Reset Filter button label.", + "id": "wallet.transaction.filter.resetFilter" + }, + { + "defaultMessage": "!!!Received", + "description": "Incoming filter type.", + "id": "wallet.transaction.filter.incoming" + }, + { + "defaultMessage": "!!!Sent", + "description": "Outgoing filter type.", + "id": "wallet.transaction.filter.outgoing" + }, + { + "defaultMessage": "!!!Time", + "description": "Date range of filter.", + "id": "wallet.transaction.filter.dateRange" + }, + { + "defaultMessage": "!!!Select time range", + "description": "Select time range indication of filter.", + "id": "wallet.transaction.filter.selectTimeRange" + }, + { + "defaultMessage": "!!!Last 7 days", + "description": "Last 7 days range of filter.", + "id": "wallet.transaction.filter.last7Days" + }, + { + "defaultMessage": "!!!Last 30 days", + "description": "Last 30 days range of filter.", + "id": "wallet.transaction.filter.last30Days" + }, + { + "defaultMessage": "!!!Last 90 days", + "description": "Last 90 days range of filter.", + "id": "wallet.transaction.filter.last90Days" + }, + { + "defaultMessage": "!!!This year", + "description": "This year date range of filter.", + "id": "wallet.transaction.filter.thisYear" + }, + { + "defaultMessage": "!!!Custom", + "description": "Custom date range of filter.", + "id": "wallet.transaction.filter.custom" + }, + { + "defaultMessage": "!!!Amount of ada", + "description": "Amount range of filter.", + "id": "wallet.transaction.filter.amountRange" + }, + { + "defaultMessage": "!!!Apply", + "description": "Filter button label.", + "id": "wallet.transaction.filter.apply" + } + ], + "path": "source/renderer/app/components/wallet/transactions/FilterDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{filtered} out of {total} transactions match your filter.", + "description": "Filter result info.", + "id": "wallet.transaction.filter.resultInfo" + } + ], + "path": "source/renderer/app/components/wallet/transactions/FilterResultInfo.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Card payment", + "description": "Transaction type shown for credit card payments.", + "id": "wallet.transaction.type.card" + }, + { + "defaultMessage": "!!!{typeOfTransaction} transaction", + "description": "Transaction type shown for {currency} transactions.", + "id": "wallet.transaction.type" + }, + { + "defaultMessage": "!!!Exchange", + "description": "Transaction type shown for money exchanges between currencies.", + "id": "wallet.transaction.type.exchange" + }, + { + "defaultMessage": "!!!Transaction ID", + "description": "Transaction ID.", + "id": "wallet.transaction.transactionId" + }, + { + "defaultMessage": "!!!Transaction Metadata", + "description": "Transaction Metadata.", + "id": "wallet.transaction.transactionMetadata" + }, + { + "defaultMessage": "Transaction metadata is not moderated and may contain inappropriate content. Show unmoderated content.", + "description": "", + "id": "wallet.transaction.transactionMetadataDescription" + }, + { + "defaultMessage": "!!!Transaction metadata", + "description": "Transaction metadata label", + "id": "wallet.transaction.metadataLabel" + }, + { + "defaultMessage": "!!!Transaction metadata is not moderated and may contain inappropriate content.", + "description": "Transaction metadata disclaimer", + "id": "wallet.transaction.metadataDisclaimer" + }, + { + "defaultMessage": "!!!Show unmoderated content", + "description": "Transaction metadata confirmation toggle", + "id": "wallet.transaction.metadataConfirmationLabel" + }, + { + "defaultMessage": "!!!Conversion rate", + "description": "Conversion rate.", + "id": "wallet.transaction.conversion.rate" + }, + { + "defaultMessage": "!!!{transactionsType} sent", + "description": "Label \"{transactionsType} sent\" for the transaction.", + "id": "wallet.transaction.sent" + }, + { + "defaultMessage": "!!!{transactionsType} received", + "description": "Label \"{transactionsType} received\" for the transaction.", + "id": "wallet.transaction.received" + }, + { + "defaultMessage": "!!!From address", + "description": "From address", + "id": "wallet.transaction.address.from" + }, + { + "defaultMessage": "!!!From addresses", + "description": "From addresses", + "id": "wallet.transaction.addresses.from" + }, + { + "defaultMessage": "!!!From rewards", + "description": "From rewards", + "id": "wallet.transaction.rewards.from" + }, + { + "defaultMessage": "!!!To address", + "description": "To address", + "id": "wallet.transaction.address.to" + }, + { + "defaultMessage": "!!!To addresses", + "description": "To addresses", + "id": "wallet.transaction.addresses.to" + }, + { + "defaultMessage": "!!!Receiver", + "description": "Receiver", + "id": "wallet.transaction.receiverLabel" + }, + { + "defaultMessage": "!!!Token", + "description": "Token label", + "id": "wallet.transaction.assetLabel" + }, + { + "defaultMessage": "!!!Transaction fee", + "description": "Transaction fee", + "id": "wallet.transaction.transactionFee" + }, + { + "defaultMessage": "!!!Deposit", + "description": "Deposit", + "id": "wallet.transaction.deposit" + }, + { + "defaultMessage": "!!!Transaction amount", + "description": "Transaction amount.", + "id": "wallet.transaction.transactionAmount" + }, + { + "defaultMessage": "!!!Multiple tokens", + "description": "Multiple tokens.", + "id": "wallet.transaction.multipleTokens" + }, + { + "defaultMessage": "!!!Tokens sent", + "description": "Tokens sent.", + "id": "wallet.transaction.tokensSent" + }, + { + "defaultMessage": "!!!Tokens received", + "description": "Tokens received.", + "id": "wallet.transaction.tokensReceived" + }, + { + "defaultMessage": "!!!Fetching token data", + "description": "\"Fetching token data...\" message.", + "id": "wallet.transaction.fetchingTokenData" + }, + { + "defaultMessage": "!!!This transaction has been pending for a long time. To release the funds used by this transaction, you can try canceling it.", + "description": "Note to cancel a transaction that has been pending too long", + "id": "wallet.transaction.pending.cancelPendingTxnNote" + }, + { + "defaultMessage": "!!!Why should I cancel this transaction?", + "description": "Link to support article for canceling a pending transaction", + "id": "wallet.transaction.pending.cancelPendingTxnSupportArticle" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360038113814", + "description": "Url to support article for canceling a pending transaction", + "id": "wallet.transaction.pending.supportArticleUrl" + }, + { + "defaultMessage": "!!!No addresses", + "description": "Input Addresses label.", + "id": "wallet.transaction.noInputAddressesLabel" + }, + { + "defaultMessage": "!!!Open this transaction in Cardano explorer", + "description": "Unresolved Input Addresses link label.", + "id": "wallet.transaction.unresolvedInputAddressesLinkLabel" + }, + { + "defaultMessage": "!!!to see these addresses.", + "description": "Unresolved Input Addresses additional label.", + "id": "wallet.transaction.unresolvedInputAddressesAdditionalLabel" + }, + { + "defaultMessage": "!!!This transaction was submitted to the Cardano network, but it expired, so it failed. Transactions on the Cardano network have a ‘time to live’ attribute, which passed before the network processed the transaction. Please, remove it to release the funds (UTXOs) used by this transaction to use those funds in another transaction.", + "description": "Note to cancel a transaction that has been failed", + "id": "wallet.transaction.failed.cancelFailedTxnNote" + }, + { + "defaultMessage": "!!!Why should I cancel failed transactions?", + "description": "Link to support article for removing a failed transaction", + "id": "wallet.transaction.failed.cancelFailedTxnSupportArticle" + }, + { + "defaultMessage": "!!!Transaction confirmed", + "description": "Transaction state \"confirmed\"", + "id": "wallet.transaction.state.confirmed" + }, + { + "defaultMessage": "!!!Transaction pending", + "description": "Transaction state \"pending\"", + "id": "wallet.transaction.state.pending" + }, + { + "defaultMessage": "!!!Transaction failed", + "description": "Transaction state \"failed\"", + "id": "wallet.transaction.state.failed" + }, + { + "defaultMessage": "!!!Confirmed", + "description": "Transaction state \"confirmed\"", + "id": "wallet.transaction.state.confirmedHeading" + }, + { + "defaultMessage": "!!!Pending", + "description": "Transaction state \"pending\"", + "id": "wallet.transaction.state.pendingHeading" + }, + { + "defaultMessage": "!!!Failed", + "description": "Transaction state \"failed\"", + "id": "wallet.transaction.state.failedHeading" + } + ], + "path": "source/renderer/app/components/wallet/transactions/Transaction.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No transactions", + "description": "Message shown when wallet has no transactions yet.", + "id": "wallet.transactions.no.transactions" + } + ], + "path": "source/renderer/app/components/wallet/transactions/WalletTransactions.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Transactions", + "description": "Label for the \"Transactions\" header.", + "id": "wallet.transactions.header.transactions" + }, + { + "defaultMessage": "!!!Export CSV", + "description": "Label for the \"Export CSV\" button.", + "id": "wallet.transactions.header.exportCSV.button.label" + } + ], + "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsHeader.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Today", + "description": "Label for the \"Today\" label on the wallet summary page.", + "id": "wallet.summary.transactionsList.todayLabel" + }, + { + "defaultMessage": "!!!Yesterday", + "description": "Label for the \"Yesterday\" label on the wallet summary page.", + "id": "wallet.summary.transactionsList.yesterdayLabel" + }, + { + "defaultMessage": "!!!Show more transactions", + "description": "Label for the \"Show more transactions\" button on the wallet summary page.", + "id": "wallet.summary.transactionsList.showMoreTransactionsButtonLabel" + }, + { + "defaultMessage": "!!!Your transaction history for this wallet is being synced with the blockchain.", + "description": "Syncing transactions message on async wallet restore.", + "id": "wallet.summary.transactionsList.syncingTransactionsMessage" + } + ], + "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsList.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Search transaction", + "description": "Hint in the transactions search box.", + "id": "wallet.transactions.search.hint" + } + ], + "path": "source/renderer/app/components/wallet/transactions/WalletTransactionsSearch.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Transfer funds", + "description": "Title in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.title" + }, + { + "defaultMessage": "!!!From Byron legacy wallet", + "description": "sourceWallet in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.sourceWallet" + }, + { + "defaultMessage": "!!!To Shelley-compatible wallet", + "description": "targetWallet in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.targetWallet" + }, + { + "defaultMessage": "!!!Continue", + "description": "buttonLabel in the transfer funds form.", + "id": "wallet.transferFunds.dialog1.continueLabel" + } + ], + "path": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep1Dialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Transfer funds from the legacy wallet", + "description": "Title in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.title" + }, + { + "defaultMessage": "!!!Confirm transfer from {sourceWalletName}wallet to the {targetWalletName} wallet.", + "description": "description in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.description.label" + }, + { + "defaultMessage": "!!!{sourceWalletName} amount", + "description": "Label Source wallet Amount in the transfer funds form", + "id": "wallet.transferFunds.dialog2.sourceWalletAmount.label" + }, + { + "defaultMessage": "!!!Fees", + "description": "Label Fees in the transfer funds form", + "id": "wallet.transferFunds.dialog2.fees.label" + }, + { + "defaultMessage": "!!!Total", + "description": "Total Fees in the transfer funds form", + "id": "wallet.transferFunds.dialog2.total.label" + }, + { + "defaultMessage": "!!!Leftovers", + "description": "Label Leftovers in the transfer funds form", + "id": "wallet.transferFunds.dialog2.leftovers.label" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Label Leftovers in the transfer funds form", + "id": "wallet.transferFunds.dialog2.leftovers.LearnMore.label" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/", + "description": "Label Leftovers in the transfer funds form", + "id": "wallet.transferFunds.dialog2.leftovers.LearnMore.url" + }, + { + "defaultMessage": "!!!Transfer funds", + "description": "buttonLabel in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.label.buttonLabel" + }, + { + "defaultMessage": "!!!Spending password", + "description": "passphraseFieldPlaceholder in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.passphraseFieldPlaceholder" + }, + { + "defaultMessage": "!!!Spending password", + "description": "passphraseLabel in the transfer funds form.", + "id": "wallet.transferFunds.dialog2.passphraseLabel" + } + ], + "path": "source/renderer/app/components/wallet/transfer-funds/TransferFundsStep2Dialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet UTXO distribution", + "description": "Title for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.title" + }, + { + "defaultMessage": "!!!This wallet contains {formattedWalletAmount} ADA on {walletUtxosAmount} UTXOs (unspent transaction outputs). Examine the histogram below to see the distribution of UTXOs with different amounts of ada.", + "description": "Description for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.description" + }, + { + "defaultMessage": "!!!This wallet is empty so it does not contain any UTXOs (unspent transaction outputs).", + "description": "Empty wallet description for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.emptyWallet" + }, + { + "defaultMessage": "!!!Find out more", + "description": "\"Find out more\" link on the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.findOutMoreLink" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/360034118013", + "description": "\"Find out more\" link URL on the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.findOutMoreLinkUrl" + }, + { + "defaultMessage": "!!!amount", + "description": "Label X for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.labelX" + }, + { + "defaultMessage": "!!!Nº UTXO", + "description": "Label Y for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.labelY" + }, + { + "defaultMessage": "!!!Pending transactions may affect the accuracy of data presented here.
You have {pendingTxnsCount} pending transaction{txnsPlural}.", + "description": "Number of pending transactions for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.pendingTransactions" + } + ], + "path": "source/renderer/app/components/wallet/utxo/WalletUtxo.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
{walletAmount} ADA", + "description": "Tooltip for the \"Wallet Utxos - first bar\" screen.", + "id": "wallet.settings.utxos.tooltipFirst" + }, + { + "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
between {previousWalletAmount} and {walletAmount} ADA", + "description": "Tooltip for the \"Wallet Utxos\" screen.", + "id": "wallet.settings.utxos.tooltip" + }, + { + "defaultMessage": "!!!{walletUtxosAmount} UTXOs containing
{walletAmount} ADA", + "description": "Tooltip for the \"Wallet Utxos - last bar\" screen.", + "id": "wallet.settings.utxos.tooltipLast" + } + ], + "path": "source/renderer/app/components/wallet/utxo/WalletUtxoTooltip.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Import wallets", + "description": "Import wallets dialog title", + "id": "wallet.import.file.dialog.title" + }, + { + "defaultMessage": "!!!

This feature enables you to import wallets from the production version of Daedalus, or from the Daedalus state directory.

If you don’t have the complete state directory, then you will need either the ‘Secrets’ or ‘Secrets-1.0’ folder containing the ‘secret.key’ file to be able to import a wallet, although without the complete state directory Daedalus won’t be able to detect your wallet names.

If you don’t have either the ‘Secrets’ or the ‘Secrets-1.0’ folder containing the ‘secret.key’ file, then you cannot import wallets using this feature.

", + "description": "

This feature enables you to import wallets from the production version of Daedalus, or from the Daedalus state directory.

If you don’t have the complete state directory, then you will need either the ‘Secrets’ or ‘Secrets-1.0’ folder containing the ‘secret.key’ file to be able to import a wallet, although without the complete state directory Daedalus won’t be able to detect your wallet names.

If you don’t have either the ‘Secrets’ or the ‘Secrets-1.0’ folder containing the ‘secret.key’ file, then you cannot import wallets using this feature.

", + "id": "wallet.import.file.dialog.description" + }, + { + "defaultMessage": "!!!Select Daedalus state folder:", + "description": "Select Daedalus state folder:", + "id": "wallet.import.file.dialog.stateFolderLabel" + }, + { + "defaultMessage": "!!!Select Daedalus 'secret.key' file:", + "description": "Select Daedalus 'secret.key' file:", + "id": "wallet.import.file.dialog.secretFileLabel" + }, + { + "defaultMessage": "!!!Import wallets", + "description": "Import wallets", + "id": "wallet.import.file.dialog.buttonLabel" + }, + { + "defaultMessage": "!!!No wallets found. Make sure you have selected a Daedalus state directory which contains the ‘Secrets’ or `Secrets-1.0` folder with a `secret.key` file inside.", + "description": "No wallets found. Make sure you have selected a Daedalus state directory which contains the ‘Secrets’ or `Secrets-1.0` folder with a `secret.key` file inside.", + "id": "wallet.import.file.dialog.stateDirNoWallets" + }, + { + "defaultMessage": "!!!No wallets found. Make sure you have selected a valid `secret.key` file.", + "description": "No wallets found. Make sure you have selected a valid `secret.key` file.", + "id": "wallet.import.file.dialog.secretFileNoWallets" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more", + "id": "wallet.import.file.dialog.linkLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900000623463", + "description": "\"Learn more\" link URL on the wallet import file dialog", + "id": "wallet.import.file.dialog.linkUrl" + }, + { + "defaultMessage": "!!!Import from:", + "description": "Import from:", + "id": "wallet.import.file.dialog.importFromLabel" + }, + { + "defaultMessage": "!!!Daedalus state directory", + "description": "Daedalus state directory", + "id": "wallet.import.file.dialog.stateDirOptionLabel" + }, + { + "defaultMessage": "!!!Daedalus 'secret.key' file", + "description": "Daedalus 'secret.key' file", + "id": "wallet.import.file.dialog.secretFileOptionLabel" + } + ], + "path": "source/renderer/app/components/wallet/wallet-import/WalletImportFileDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Found wallets", + "description": "Select import wallets dialog title", + "id": "wallet.select.import.dialog.title" + }, + { + "defaultMessage": "!!!These wallets were found in your Daedalus state directory.

Please select the wallets you want to import.

", + "description": "These wallets were found in your Daedalus state directory. Please select the wallets you want to import.", + "id": "wallet.select.import.dialog.description" + }, + { + "defaultMessage": "!!!Unnamed wallets", + "description": "unnamedWalletsTitle", + "id": "wallet.select.import.dialog.unnamedWalletsTitle" + }, + { + "defaultMessage": "!!!Password protected", + "description": "Password protected", + "id": "wallet.select.import.dialog.passwordProtected" + }, + { + "defaultMessage": "!!!Wallet already exists", + "description": "Wallet already exists", + "id": "wallet.select.import.dialog.walletExists" + }, + { + "defaultMessage": "!!!No password", + "description": "No password", + "id": "wallet.select.import.dialog.noPassword" + }, + { + "defaultMessage": "!!!Importing wallet...", + "description": "Importing wallet...", + "id": "wallet.select.import.dialog.importingWallet" + }, + { + "defaultMessage": "!!!Enter wallet name", + "description": "Enter wallet name", + "id": "wallet.select.import.dialog.walletName" + }, + { + "defaultMessage": "!!!Name not found", + "description": "Name not found", + "id": "wallet.select.import.dialog.notFound" + }, + { + "defaultMessage": "!!!Enter a wallet name first", + "description": "Enter a wallet name first", + "id": "wallet.select.import.dialog.enterWalletNameTooltip" + }, + { + "defaultMessage": "!!!Daedalus supports up to {maxWalletsCount} wallets. You will need to remove another wallet before you can import this one.", + "description": "Max number of wallets reached", + "id": "wallet.select.import.dialog.maxWalletsReachedTooltip" + }, + { + "defaultMessage": "!!!Wallet imported", + "description": "Wallet imported", + "id": "wallet.select.import.dialog.walletImported" + }, + { + "defaultMessage": "!!!Import selected wallets", + "description": "Import selected wallets", + "id": "wallet.select.import.dialog.buttonLabel" + }, + { + "defaultMessage": "!!!Learn more", + "description": "Learn more", + "id": "wallet.select.import.dialog.linkLabel" + }, + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/articles/900000623463", + "description": "\"Learn more\" link URL on the wallet import file dialog", + "id": "wallet.select.import.dialog.linkUrl" + }, + { + "defaultMessage": "!!!Close window", + "description": "Close window", + "id": "wallet.select.import.dialog.closeWindow" + } + ], + "path": "source/renderer/app/components/wallet/wallet-import/WalletSelectImportDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Enter word #{wordNumber}", + "description": "Placeholder for the mnemonics autocomplete.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.placeholder" + }, + { + "defaultMessage": "!!!Enter your 12, 18 or 24-word recovery phrase", + "description": "Placeholder for the multi-length mnemonics autocomplete.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.multiLengthPhrase.placeholder" + }, + { + "defaultMessage": "!!!No results", + "description": "\"No results\" message for the mnemonics autocomplete search results.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.noResults" + }, + { + "defaultMessage": "!!!Check recovery phrase", + "description": "Label for the mnemonics Continue button.", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.continueButtonLabel" + }, + { + "defaultMessage": "!!!Invalid recovery phrase", + "description": "Label for invalid recovery phrase", + "id": "wallet.restore.dialog.step.mnemonics.autocomplete.invalidRecoveryPhrase" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/MnemonicsDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Close", + "description": "Label for Close button on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.close" + }, + { + "defaultMessage": "!!!Your wallet has been successfully restored.", + "description": "Description \"line 1\" on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.description.line1" + }, + { + "defaultMessage": "!!!Restored wallets should have all the funds and transaction history of the original wallet. If your restored wallet does not have the funds and transaction history you were expecting, please check that you have the correct wallet recovery phrase for the wallet you were intending to restore.", + "description": "Description \"line 2\" on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.description.line2" + }, + { + "defaultMessage": "!!!If your restored wallet is empty, but you were expecting it to have funds, please check that you used the correct wallet recovery phrase during the restoration process.", + "description": "Description \"line 3\" on the wallet restore \"success\" step dialog.", + "id": "wallet.restore.dialog.step.success.dialog.description.line3" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/SuccessDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!What kind of wallet would you like to restore?", + "description": "Label for the \"labelwalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKind" + }, + { + "defaultMessage": "!!!Daedalus wallet", + "description": "Label for the \"labelWalletKindDaedalus\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKindDaedalus" + }, + { + "defaultMessage": "!!!Yoroi wallet", + "description": "Label for the \"labelWalletKindYoroi\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKindYoroi" + }, + { + "defaultMessage": "!!!Hardware wallet", + "description": "Label for the \"labelWalletKindHardware\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.walletKindHardware" + }, + { + "defaultMessage": "!!!What kind of Daedalus wallet would you like to restore?", + "description": "Label for the \"labelDaedalusWalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind" + }, + { + "defaultMessage": "!!!12 words (Byron legacy wallet)", + "description": "Label for the \"labelDaedalusWalletKind12WordByron\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind12WordByron" + }, + { + "defaultMessage": "!!!15 words (Incentivized Testnet Rewards wallet)", + "description": "Label for the \"labelDaedalusWalletKind15WordShelley\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind15WordShelley" + }, + { + "defaultMessage": "!!!24 words (Shelley wallet)", + "description": "Label for the \"labelDaedalusWalletKind24WordShelley\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind24WordShelley" + }, + { + "defaultMessage": "!!!27 words - paper wallet (Byron legacy wallet)", + "description": "Label for the \"labelDaedalusWalletKind27WordPaper\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.daedalusWalletKind27WordPaper" + }, + { + "defaultMessage": "!!!What kind of Yoroi wallet would you like to restore?", + "description": "Label for the \"labelYoroiWalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKind" + }, + { + "defaultMessage": "!!!15 words (Byron legacy wallet)", + "description": "Label for the \"labelDaedalusWalletKind15WordByron\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKindByronLegacy15Word" + }, + { + "defaultMessage": "!!!15 words (Shelley wallet)", + "description": "Label for the \"labelDaedalusWalletKind15WordShelley\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.yoroiWalletKindShelley15Word" + }, + { + "defaultMessage": "!!!What kind of hardware wallet would you like to restore?", + "description": "Label for the \"labelHardwareWalletKind\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKind" + }, + { + "defaultMessage": "!!!24 words - Ledger (Byron legacy wallet)", + "description": "Label for the \"labelHardwareWalletKindLedger\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKindLedger" + }, + { + "defaultMessage": "!!!24 words - Trezor (Byron legacy wallet)", + "description": "Label for the \"labelHardwareWalletKindTrezor\" checkbox.", + "id": "wallet.restore.dialog.step.walletKind.label.hardwareWalletKindTrezor" + }, + { + "defaultMessage": "!!!Hardware wallets store your private keys securely on a physical device so they are immune to common computer threats such as viruses and software bugs. Recovery phrases for hardware wallets should always be kept offline. By entering your hardware wallet recovery phrase in Daedalus, you expose your hardware wallet private keys to the security risks associated with computers and software.", + "description": "Label for the \"hardwareWalletDisclaimer1\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer1" + }, + { + "defaultMessage": "!!!All of your assets held on your hardware wallet device are associated with the same wallet recovery phrase and its corresponding private key. If you hold assets other than ada on your hardware wallet device, you expose all of those assets to security risks.", + "description": "Label for the \"hardwareWalletDisclaimer2\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer2" + }, + { + "defaultMessage": "!!!We strongly recommend that you delete the Byron legacy wallet that was restored from your hardware wallet once you have moved funds into a Shelley wallet.", + "description": "Label for the \"hardwareWalletDisclaimer3\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletDisclaimer3" + }, + { + "defaultMessage": "!!!I understand and accept responsibility for the security concerns of restoring a hardware wallet on a computer.", + "description": "Label for the \"hardwareWalletCheckbox1\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox1" + }, + { + "defaultMessage": "!!!I understand that I should delete the Byron legacy wallet I am restoring from a hardware wallet after moving funds to a Shelley wallet.", + "description": "Label for the \"hardwareWalletCheckbox2\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox2" + }, + { + "defaultMessage": "!!!I understand that I am exposing all of the assets that are stored on my hardware wallet device, and not just ada, to security risks.", + "description": "Label for the \"hardwareWalletCheckbox2\" disclaimer.", + "id": "wallet.restore.dialog.step.walletKind.hardwareWalletCheckbox3" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/WalletTypeDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Drop file here", + "description": "Label \"Drop file here\" on the file upload widget.", + "id": "ImageUploadWidget.dropFileHint" + }, + { + "defaultMessage": "!!!or click to upload", + "description": "Label \"or click to upload\" on the file upload widget.", + "id": "ImageUploadWidget.clickToUploadLabel" + } + ], + "path": "source/renderer/app/components/widgets/forms/ImageUploadWidget.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your changes have been saved", + "description": "Message \"Your changes have been saved\" for inline editing (eg. on Wallet Settings page).", + "id": "inline.editing.dropdown.changesSaved" + } + ], + "path": "source/renderer/app/components/widgets/forms/InlineEditingDropdown.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Syncing", + "description": "syncingLabel for ItemDropdownOption", + "id": "widgets.itemsDropdown.syncingLabel" + }, + { + "defaultMessage": "!!!Syncing {syncingProgress}%", + "description": "syncingLabel for WalletsDropdown", + "id": "widgets.itemsDropdown.syncingLabelProgress" + } + ], + "path": "source/renderer/app/components/widgets/forms/ItemDropdownOption.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Language", + "description": "Label for the language select.", + "id": "profile.settings.languageSelect.label" + }, + { + "defaultMessage": "!!!Number format", + "description": "Label for the number select.", + "id": "profile.settings.numberSelect.label" + }, + { + "defaultMessage": "!!!Date format", + "description": "Label for the date select.", + "id": "profile.settings.dateSelect.label" + }, + { + "defaultMessage": "!!!Time format", + "description": "Label for the time select.", + "id": "profile.settings.timeSelect.label" + }, + { + "defaultMessage": "!!!Continue", + "description": "Label for the \"Language select\" form submit button.", + "id": "profile.settings.submitLabel" + } + ], + "path": "source/renderer/app/components/widgets/forms/ProfileSettingsForm.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/requests/new/", + "description": "\"submit a support request\" link URL in the \"Report a problem\" section on the support settings page.", + "id": "settings.support.reportProblem.linkUrl" + } + ], + "path": "source/renderer/app/containers/settings/categories/SupportSettingsPage.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!https://iohk.zendesk.com/hc/en-us/", + "description": "\"Learn more\" link URL on the delegation setup \"intro\" dialog.", + "id": "staking.delegationSetup.intro.step.dialog.learnMore.url" + }, + { + "defaultMessage": "!!!Wallet", + "description": "Step 1 label text on delegation steps dialog.", + "id": "staking.delegationSetup.steps.step.1.label" + }, + { + "defaultMessage": "!!!Stake pool", + "description": "Step 2 label text on delegation steps dialog.", + "id": "staking.delegationSetup.steps.step.2.label" + }, + { + "defaultMessage": "!!!Confirmation", + "description": "Step 3 label text on delegation steps dialog.", + "id": "staking.delegationSetup.steps.step.3.label" + } + ], + "path": "source/renderer/app/containers/staking/dialogs/DelegationSetupWizardDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Wallet", + "description": "Step 1 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.1.label" + }, + { + "defaultMessage": "!!!Register", + "description": "Step 2 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.2.label" + }, + { + "defaultMessage": "!!!Confirm", + "description": "Step 3 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.3.label" + }, + { + "defaultMessage": "!!!PIN", + "description": "Step 4 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.4.label" + }, + { + "defaultMessage": "QR code", + "description": "Step 5 label text on voting registration.", + "id": "voting.votingRegistration.steps.step.5.label" + } + ], + "path": "source/renderer/app/containers/voting/dialogs/VotingRegistrationDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Verifying on-disk blockchain state", + "description": "One of three progress names on the loading screen.", + "id": "loading.screen.validatingChunk" + }, + { + "defaultMessage": "!!!Verifying the integrity of the blockchain calculating hashes", + "description": "Description of one of three progress names on the loading screen.", + "id": "loading.screen.validatingChunkDescription" + }, + { + "defaultMessage": "!!!Replaying ledger from on-disk blockchain", + "description": "One of three progress names on the loading screen.", + "id": "loading.screen.replayedBlock" + }, + { + "defaultMessage": "!!!Looking for a ledger snapshot and updating (recomputing) the latest state", + "description": "Description of one of three progress names on the loading screen.", + "id": "loading.screen.replayedBlockDescription" + }, + { + "defaultMessage": "!!!Syncing blockchain", + "description": "One of three progress names on the loading screen.", + "id": "loading.screen.pushingLedger" + }, + { + "defaultMessage": "!!!Performing initial chain selection and finalizing blockchain state", + "description": "Description of one of three progress names on the loading screen.", + "id": "loading.screen.pushingLedgerDescription" + } + ], + "path": "source/renderer/app/components/loading/syncing-connecting/SyncingProgress/SyncingProgress.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Cancel Fund{nextVotingFundNumber} voting registration?", + "description": "Headline for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.headline" + }, + { + "defaultMessage": "!!!Are you sure that you want to cancel Fund{nextVotingFundNumber} voting registration? The transaction fee you paid for the voting registration transaction will be lost and you will need to repeat the registration from the beginning.", + "description": "Content for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.content" + }, + { + "defaultMessage": "!!!Cancel registration", + "description": "\"Cancel registration\" button label for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.button.cancelButtonLabel" + }, + { + "defaultMessage": "!!!Continue registration", + "description": "\"Continue registration\" button label for the voting registration cancellation confirmation dialog.", + "id": "voting.votingRegistration.dialog.confirmation.button.confirmButtonLabel" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/ConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Register for Fund{nextVotingFundNumber} voting", + "description": "Tile \"Register to vote\" for voting registration", + "id": "voting.votingRegistration.dialog.dialogTitle" + }, + { + "defaultMessage": "!!!Step {step} of {stepCount}", + "description": "Sub title for voting registration", + "id": "voting.votingRegistration.dialog.subtitle" + } + ], + "path": "source/renderer/app/components/voting/voting-registration-wizard-steps/widgets/VotingRegistrationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Add tokens", + "description": "Token picker title", + "id": "wallet.token.picker.title" + }, + { + "defaultMessage": "!!!All tokens", + "description": "Label for all tokens option", + "id": "wallet.token.picker.allTokensLabel" + }, + { + "defaultMessage": "!!!Favorites", + "description": "Label for favorite tokens option", + "id": "wallet.token.picker.favoriteTokensLabel" + }, + { + "defaultMessage": "!!!Select all", + "description": "Label for select all button label", + "id": "wallet.token.picker.checkAllLabel" + }, + { + "defaultMessage": "!!!{checkedCount} out of {maxTokens} tokens.", + "description": "Label of selected tokens count", + "id": "wallet.token.picker.checkedCountLabel" + }, + { + "defaultMessage": "!!!Cancel", + "description": "Label of cancel button", + "id": "wallet.token.picker.cancelButtonLabel" + }, + { + "defaultMessage": "!!!Add", + "description": "Label of add button", + "id": "wallet.token.picker.addButtonLabel" + }, + { + "defaultMessage": "!!!Clear selection", + "description": "Label of clear selection button", + "id": "wallet.token.picker.clearAll" + }, + { + "defaultMessage": "!!!Results do not match search query", + "description": "Text for no results", + "id": "wallet.token.picker.noResults" + }, + { + "defaultMessage": "!!!You have already reached a maximum of {maxTokens} tokens for your transaction. To add another token you need to remove one from a list.", + "description": "Max tokens warning", + "id": "wallet.token.picker.maxTokensWarning" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-token-picker/WalletTokenPicker.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!No results matching your query", + "description": "No results on the WalletTokensList", + "id": "wallet.tokens.list.search.noResults" + }, + { + "defaultMessage": "!!!Search Results", + "description": "Search Results on the WalletTokensList", + "id": "wallet.tokens.list.search.searchResults" + }, + { + "defaultMessage": "!!!Amount", + "description": "Amount header on the WalletTokensList", + "id": "wallet.tokens.list.column.amount" + }, + { + "defaultMessage": "!!!Token", + "description": "Token header on the WalletTokensList", + "id": "wallet.tokens.list.column.token" + }, + { + "defaultMessage": "!!!View all tokens", + "description": "View all button label on the WalletTokensList", + "id": "wallet.tokens.list.viewAllButton.label" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-tokens-list/WalletTokensList.messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Search tokens", + "description": "Search placeholder for the Wallet Tokens search", + "id": "wallet.tokens.search.placeholder" + } + ], + "path": "source/renderer/app/components/wallet/tokens/wallet-tokens-search/WalletTokensSearch.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Are you sure?", + "description": "Headline for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.headline" + }, + { + "defaultMessage": "!!!You haven’t submitted this information yet. If you close the window now, you will lose your progress and have to start again.", + "description": "Content for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.content" + }, + { + "defaultMessage": "!!!Back to wallet restoration", + "description": "\"Cancel\" button label for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.button.cancelButtonLabel" + }, + { + "defaultMessage": "!!!Close window", + "description": "\"Abort\" button label for the wallet restoration cancellation confirmation dialog.", + "id": "wallet.restore.dialog.confirmation.button.confirmButtonLabel" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/widgets/ConfirmationDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Restore a wallet", + "description": "Title \"Create a new wallet\" in the wallet restore form.", + "id": "wallet.restore.dialog.title" + }, + { + "defaultMessage": "!!!Restore a wallet", + "description": "Title \"Create a new wallet\" in the wallet restore form.", + "id": "wallet.restore.dialog.titleSuccess" + }, + { + "defaultMessage": "!!!Step {currentStep} of {totalSteps}", + "description": "Step counters in the wallet restore dialog.", + "id": "wallet.restore.dialog.stepsCounter" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreDialog.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Type", + "description": "Step \"Type\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.typeStep" + }, + { + "defaultMessage": "!!!Recovery Phrase", + "description": "Step \"Recovery Phrase\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.mnemonicsStep" + }, + { + "defaultMessage": "!!!Configuration", + "description": "Step \"Configuration\" in the wallet restore dialog.", + "id": "wallet.restore.dialog.configurationStep" + } + ], + "path": "source/renderer/app/components/wallet/wallet-restore/widgets/WalletRestoreSteps.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!This wallet does not contain the minimum amount of {calculatedMinRewardsReceiverBalance} ADA which is required to cover the necessary transaction fees. Please select a wallet with a minimum amount of {calculatedMinRewardsReceiverBalance} ADA and click continue.", + "description": "errorMinRewardFunds Error Label on the delegation setup \"choose wallet\" step dialog.", + "id": "staking.redeemItnRewards.step1.errorMessage" + }, + { + "defaultMessage": "!!!This wallet can’t be used for rewards redemption while it’s being synced.", + "description": "RestoringWallet Error Label on the rewards redemption setup \"choose wallet\" step dialog.", + "id": "staking.redeemItnRewards.step1.errorRestoringWallet" + } + ], + "path": "source/renderer/app/containers/staking/dialogs/redeem-itn-rewards/Step1ConfigurationContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Confirm transaction", + "description": "Title for the \"Confirm transaction\" dialog.", + "id": "wallet.send.confirmationDialog.title" + }, + { + "defaultMessage": "!!!Spending password", + "description": "Label for the \"Spending password\" input in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.passphraseLabel" + }, + { + "defaultMessage": "!!!Type your spending password", + "description": "Placeholder for the \"Spending password\" inputs in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.passphraseFieldPlaceholder" + }, + { + "defaultMessage": "!!!{Warning}, flight candidate versions of Daedalus are connected to Cardano mainnet. If you confirm this transaction, your ada will be sent for real.", + "description": "Text for the \"Flight candidate\" warning in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.flightCandidateWarning" + }, + { + "defaultMessage": "!!!I understand that real ada will be moved as part of this transaction and that this action is irreversible.", + "description": "Label for the \"Flight candidate\" warning checkbox in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.flightCandidateCheckboxLabel" + }, + { + "defaultMessage": "!!!Send", + "description": "Label for the send button in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.submit" + }, + { + "defaultMessage": "!!!Back", + "description": "Label for the back button in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.back" + }, + { + "defaultMessage": "!!!Warning: This transaction will reduce your wallet's balance to less than 2 ada. Your wallet's balance should always be over 2 ada to spend future staking rewards.", + "description": "Warning: This transaction will reduce your wallet's balance", + "id": "wallet.send.confirmationDialog.emptyingWarning" + }, + { + "defaultMessage": "!!!To", + "description": "Label for the \"To\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.addressToLabel" + }, + { + "defaultMessage": "!!!Amount", + "description": "Label for the \"Amount\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.amountLabel" + }, + { + "defaultMessage": "!!!Token", + "description": "Token", + "id": "wallet.send.confirmationDialog.assetLabel" + }, + { + "defaultMessage": "!!!Transaction fee", + "description": "Label for the \"Fees\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.feesLabel" + }, + { + "defaultMessage": "!!!Total", + "description": "Label for the \"Total\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.totalLabel" + }, + { + "defaultMessage": "!!!Receiver", + "description": "Label for the \"Receiver\" in the wallet send confirmation dialog.", + "id": "wallet.send.confirmationDialog.receiver.label" + }, + { + "defaultMessage": "!!!unformatted amount", + "description": "Label for \"unformatted amount\"", + "id": "wallet.send.confirmationDialog.unformattedAmountLabel" + }, + { + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.", + "description": "Message for \"unformatted amount\"", + "id": "wallet.send.confirmationDialog.unformattedAmountMessageForSoftwareWallets" + }, + { + "defaultMessage": "!!!Native assets may specify a number of decimal places, as defined in the Cardano token registry. Daedalus uses this information to format the amount that is being sent in the transaction.

The native token unformatted amount is the amount without these decimal places. Please ensure that you verify both amounts, as some wallet software may not yet use the Cardano token registry.

The native token unformatted amount will be displayed on the hardware wallet device during transaction confirmation.", + "description": "Message for \"unformatted amount\"", + "id": "wallet.send.confirmationDialog.unformattedAmountMessageForHardwareWallets" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/send-confirmation/messages.ts" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Delete Wallet", + "description": "Title for the \"Delete wallet\" dialog.", + "id": "wallet.settings.delete.dialog.title" + }, + { + "defaultMessage": "!!!Delete", + "description": "Label for the \"Delete (x)\" button in the delete wallet dialog.", + "id": "wallet.settings.delete.dialog.confirmButtonLabel" + }, + { + "defaultMessage": "!!!Do you really want to delete {walletName} wallet?", + "description": "Question if the user really wants to delete the wallet.", + "id": "wallet.settings.delete.dialog.confirmationQuestion" + }, + { + "defaultMessage": "!!!Make sure you have access to backup before continuing. Otherwise, you will lose all your funds connected to this wallet.", + "description": "Notice to confirm if the user has made a backup of his wallet", + "id": "wallet.settings.delete.dialog.confirmBackupNotice" + }, + { + "defaultMessage": "!!!Enter the name of the wallet to confirm deletion:", + "description": "Instruction for recovery word on delete wallet dialog", + "id": "wallet.settings.delete.dialog.enterRecoveryWordLabel" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/settings/DeleteWalletDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Unpair Wallet", + "description": "Title for the \"Unpair wallet\" dialog.", + "id": "wallet.settings.unpair.dialog.title" + }, + { + "defaultMessage": "!!!Delete", + "description": "Label for the \"Unpair (x)\" button in the unpair wallet dialog.", + "id": "wallet.settings.unpair.dialog.confirmButtonLabel" + }, + { + "defaultMessage": "!!!Do you really want to unpair {walletName} wallet?", + "description": "Question if the user really wants to unpair the wallet.", + "id": "wallet.settings.unpair.dialog.confirmationQuestion" + } + ], + "path": "source/renderer/app/containers/wallet/dialogs/settings/UnpairWalletDialogContainer.tsx" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Toggle discreet mode on.", + "description": "Text for the tooltip on \"discreet mode\" button when mode is on", + "id": "discreetMode.discreetToggle.on" + }, + { + "defaultMessage": "!!!Toggle discreet mode off.", + "description": "Text for the tooltip on \"discreet mode\" button when mode is off", + "id": "discreetMode.discreetToggle.off" + }, + { + "defaultMessage": "!!!You can toggle auto discreet mode in Settings.", + "description": "Text for the tooltip on \"discreet mode\" button description", + "id": "discreetMode.discreetToggle.description" + } + ], + "path": "source/renderer/app/features/discreet-mode/ui/discreet-toggle-top-bar/DiscreetToggleTopBar.messages.ts" + } +] diff --git a/translations/translation-runner.ts b/translations/translation-runner.ts index c7dccf0bca..2b8f01ca4f 100644 --- a/translations/translation-runner.ts +++ b/translations/translation-runner.ts @@ -1,8 +1,13 @@ import manageTranslations from "react-intl-translations-manager"; +import messages from './messages.json'; manageTranslations({ messagesDirectory: 'translations/messages', translationsDirectory: 'source/renderer/app/i18n/locales', singleMessagesFile: true, - languages: ['en-US', 'ja-JP'] -}); \ No newline at end of file + languages: ['en-US', 'ja-JP'], + overrideCoreMethods: { + // Override to use our extracted format.js messages + provideExtractedMessages: () => messages, + } +}); diff --git a/utils/create-news-verification-hashes/index.ts b/utils/create-news-verification-hashes/index.ts index 7db354b2d1..91d8962865 100644 --- a/utils/create-news-verification-hashes/index.ts +++ b/utils/create-news-verification-hashes/index.ts @@ -74,7 +74,7 @@ const readModuleFile = (path, callback) => { console.log('\n \x1b[33m', 'NOTE: create file with NAME and put HASH as content! \n', '\x1b[0m'); lodash.map(filesToHash, file => { - readModuleFile(`../../source/renderer/app/config/newsfeed-files/${file.name}`, function (error, fileContent) { + readModuleFile(`../../source/renderer/app/config/newsfeed-files/${file.name}`, (error, fileContent) => { // Log Environment console.log('\n \x1b[32m', `${lodash.capitalize(file.env)}`, '\x1b[0m'); @@ -112,4 +112,4 @@ const readModuleFile = (path, callback) => { }); })(); }; -})(); \ No newline at end of file +})(); diff --git a/yarn.lock b/yarn.lock index 0bbcf832f9..1cad291c48 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,89 +2,35 @@ # yarn lockfile v1 -"@babel/cli@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.16.0.tgz#a729b7a48eb80b49f48a339529fc4129fd7bcef3" - dependencies: - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - make-dir "^2.1.0" - slash "^2.0.0" - source-map "^0.5.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - chokidar "^3.4.0" - -"@babel/code-frame@7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" dependencies: - "@babel/highlight" "^7.16.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.16.7": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" - -"@babel/core@7.16.0", "@babel/core@^7.1.0", "@babel/core@^7.12.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helpers" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" -"@babel/core@>=7.9.0", "@babel/core@^7.4.5", "@babel/core@^7.7.5": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" +"@babel/core@7.12.9": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -94,49 +40,33 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/eslint-parser@7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz#2a6b1702f3f5aea48e00cea5a5bcc241c437e459" +"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.17.9", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" dependencies: - eslint-scope "^5.1.1" - eslint-visitor-keys "^2.1.0" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.10" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.17.10", "@babel/generator@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" dependencies: - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" - dependencies: - "@babel/types" "^7.16.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -144,114 +74,57 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz#f1a686b92da794020c26582eb852e9accd0d7882" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-builder-react-jsx-experimental@^7.10.4", "@babel/helper-builder-react-jsx-experimental@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.11.5.tgz#4ea43dd63857b0a35cd1f1b161dc29b43414e79f" - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/types" "^7.11.5" - -"@babel/helper-builder-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.0", "@babel/helper-compilation-targets@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.17.5" + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.2.1": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.5" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-class-features-plugin@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz#090d4d166b342a03a9fec37ef4fd5aeb9c7c6a4b" - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-member-expression-to-functions" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - -"@babel/helper-create-class-features-plugin@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@7.16.0", "@babel/helper-create-regexp-features-plugin@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - regexpu-core "^4.7.1" - -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" -"@babel/helper-define-map@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" +"@babel/helper-define-polyfill-provider@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e" dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.5" - lodash "^4.17.19" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -268,71 +141,18 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-explode-assignable-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-get-function-arity@^7.16.7": +"@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" dependencies: "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" dependencies: - "@babel/types" "^7.16.0" + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -340,72 +160,30 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-member-expression-to-functions@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz#29287040efd197c77636ef75188e81da8bccd5a4" +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.17.0" -"@babel/helper-member-expression-to-functions@^7.16.7": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz#1c82a8dd4cb34577502ebd2909699b194c3e9bb5" - dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-simple-access" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-optimise-call-expression@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" dependencies: - "@babel/types" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -413,58 +191,21 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" -"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - -"@babel/helper-plugin-utils@^7.16.7": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" -"@babel/helper-regex@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" - dependencies: - lodash "^4.17.19" - -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz#5d7902f61349ff6b963e07f06a389ce139fbfe6e" - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-wrap-function" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-replace-supers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" dependencies: - "@babel/helper-member-expression-to-functions" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" "@babel/helper-replace-supers@^7.16.7": version "7.16.7" @@ -476,24 +217,11 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-simple-access@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.17.0" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -501,358 +229,203 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - dependencies: - "@babel/types" "^7.16.0" - "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - -"@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" -"@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-wrap-function@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz#b3cf318afce774dfe75b86767cd6d68f3482e57c" - dependencies: - "@babel/helper-function-name" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helpers@^7.16.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" - dependencies: - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.3" - "@babel/types" "^7.16.0" - -"@babel/highlight@^7.0.0", "@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" -"@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" +"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" - -"@babel/parser@^7.10.4", "@babel/parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" +"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" -"@babel/parser@^7.16.10", "@babel/parser@^7.16.7", "@babel/parser@^7.7.0": - version "7.16.12" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": - version "7.16.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-async-generator-functions@^7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz#e606eb6015fec6fa5978c940f315eae4e300b081" +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.16.4" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.1.tgz#c734a53e0a1ec40fe5c22ee5069d26da3b187d05" +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" dependencies: - "@babel/helper-create-class-features-plugin" "^7.2.1" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" +"@babel/plugin-proposal-class-static-block@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-class-properties@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz#c029618267ddebc7280fa286e0f8ca2a278a2d1a" +"@babel/plugin-proposal-decorators@^7.12.12": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz#67a1653be9c77ce5b6c318aa90c8287b87831619" dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.17.9" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/plugin-syntax-decorators" "^7.17.0" + charcodes "^0.2.0" -"@babel/plugin-proposal-class-static-block@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz#5296942c564d8144c83eea347d0aa8a0b89170e7" +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-decorators@7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.4.tgz#9b35ce0716425a93b978e79099e5f7ba217c1364" +"@babel/plugin-proposal-export-default-from@^7.12.1": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz#a40ab158ca55627b71c5513f03d3469026a9e929" dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-default-from" "^7.16.7" -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-dynamic-import@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz#783eca61d50526202f9b296095453977e88659f1" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz#9c01dee40b9d6b847b656aaf4a3976a71740f222" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz#cae35a95ed1d2a7fa29c4dc41540b84a72e9ab25" +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-logical-assignment-operators@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz#a711b8ceb3ffddd3ef88d3a49e86dbd3cc7db3fd" +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz#44e1cce08fe2427482cf446a91bb451528ed0596" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-numeric-separator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz#5d418e4fbbf8b9b7d03125d3a52730433a373734" +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@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" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - -"@babel/plugin-proposal-object-rest-spread@^7.11.0", "@babel/plugin-proposal-object-rest-spread@^7.6.2": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" +"@babel/plugin-proposal-object-rest-spread@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz#5fb32f6d924d6e6712810362a60e12a2609872e6" +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.0" + "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz#5910085811ab4c28b00d6ebffa4ab0274d1e5f16" +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz#56dbc3970825683608e9efb55ea82c2a2d6c8dc0" +"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" +"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-private-methods@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz#b4dafb9c717e4301c5776b30d080d6383c89aff6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-private-property-in-object@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz#69e935b2c5c79d2488112d886f0c4e2790fee76f" +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-create-class-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz#890482dfc5ea378e42e19a71e709728cabf18612" +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" dependencies: @@ -864,12 +437,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" @@ -882,29 +449,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.0.tgz#eb8d811cdd1060f6ac3c00956bf3f6335505a32f" +"@babel/plugin-syntax-decorators@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-default-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz#fa89cf13b60de2c3f79acdc2b52a21174c6de060" + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" +"@babel/plugin-syntax-flow@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -912,25 +485,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" +"@babel/plugin-syntax-jsx@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" dependencies: @@ -942,19 +521,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" dependencies: @@ -966,500 +545,260 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" +"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-arrow-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-arrow-functions@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz#951706f8b449c834ed07bd474c0924c944b95a8e" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - -"@babel/plugin-transform-async-to-generator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" - dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.16.0" - -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-block-scoped-functions@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz#c618763233ad02847805abcac4c345ce9de7145d" +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.10.4": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoping@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz#bcf433fb482fe8c3d3b4e8a66b1c4a8e77d37c16" +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" +"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz#54cf5ff0b2242c6573d753cd4bfc7077a8b282f5" +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-optimise-call-expression" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-computed-properties@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz#e0c385507d21e1b0b076d66bed6d5231b85110b7" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-destructuring@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz#ad3d7e74584ad5ea4eadb1e6642146c590dee33c" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-dotall-regex@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz#50bab00c1084b6162d0a58a818031cf57798e06f" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-duplicate-keys@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-duplicate-keys@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz#8bc2e21813e3e89e5e5bf3b60aa5fc458575a176" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-exponentiation-operator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz#a180cd2881e3533cef9d3901e48dad0fbeff4be4" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-flow-strip-types@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz#f7abaced155260e2461359bbc7c7248aca5e6bd2" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz#02e3699c284c6262236599f751065c5d5f1f400e" - dependencies: - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-literals@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz#79711e670ffceb31bd298229d50f3621f7980cac" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz#5251b4cce01eaf8314403d21aedb269d79f5e64b" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-amd@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" - dependencies: - "@babel/helper-module-transforms" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-amd@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz#09abd41e18dcf4fd479c598c1cef7bd39eb1337e" - dependencies: - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz#add58e638c8ddc4875bd9a9ecb5c594613f6c922" - dependencies: - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.16.0" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" - dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz#a92cf240afeb605f4ca16670453024425e421ea4" - dependencies: - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.15.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-modules-umd@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz#195f26c2ad6d6a391b70880effce18ce625e06a7" - dependencies: - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz#d3db61cc5d5b97986559967cd5ea83e5c32096ca" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-new-target@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz#af823ab576f752215a49937779a41ca65825ab35" +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-object-super@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz#fb20d5806dc6491a06296ac14ea8e8d6fedda72b" +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-parameters@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-parameters@^7.16.0", "@babel/plugin-transform-parameters@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz#fa9e4c874ee5223f891ee6fa8d737f4766d31d15" +"@babel/plugin-transform-flow-strip-types@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-flow" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz#a95c552189a96a00059f6776dc4e00e3690c78d1" +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-constant-elements@^7.0.0", "@babel/plugin-transform-react-constant-elements@^7.2.0", "@babel/plugin-transform-react-constant-elements@^7.6.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz#0f485260bf1c29012bb973e7e404749eaac12c9e" +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-jsx-development@^7.10.4": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.11.5.tgz#e1439e6a57ee3d43e9f54ace363fb29cefe5d7b6" +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.11.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-react-jsx-self@^7.0.0", "@babel/plugin-transform-react-jsx-self@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" +"@babel/plugin-transform-modules-commonjs@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-react-jsx-source@^7.0.0", "@babel/plugin-transform-react-jsx-source@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" +"@babel/plugin-transform-modules-systemjs@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-pure-annotations@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.17.0" -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz#eaee422c84b0232d03aea7db99c97deeaf6125a4" +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-reserved-words@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-reserved-words@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz#fff4b9dcb19e12619394bda172d14f2d04c0379c" +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@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" +"@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-shorthand-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.16.7" -"@babel/plugin-transform-shorthand-properties@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz#090372e3141f7cc324ed70b3daf5379df2fa384d" +"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" -"@babel/plugin-transform-spread@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz#d21ca099bbd53ab307a8621e019a7bd0f40cdcfb" +"@babel/plugin-transform-regenerator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + regenerator-transform "^0.15.0" -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-sticky-regex@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz#c35ea31a02d86be485f6aa510184b677a91738fd" +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-template-literals@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz#a8eced3a8e7b8e2d40ec4ec4548a45912630d302" +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typeof-symbol@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz#8b19a244c6f8c9d668dca6a6f754ad6ead1128f2" +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-typescript@^7.16.7", "@babel/plugin-transform-typescript@^7.16.8": +"@babel/plugin-transform-typescript@^7.16.7": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" dependencies: @@ -1467,64 +806,44 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-typescript" "^7.16.7" -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-unicode-escapes@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz#1a354064b4c45663a32334f46fa0cf6100b5b1f3" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-unicode-regex@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz#293b80950177c8c85aede87cef280259fb995402" +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/polyfill@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.0.0.tgz#c8ff65c9ec3be6a1ba10113ebd40e8750fb90bff" +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" dependencies: - core-js "^2.5.7" - regenerator-runtime "^0.11.1" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.4.tgz#4f6ec33b2a3fe72d6bfdcdf3859500232563a2e3" +"@babel/preset-env@^7.12.11": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-compilation-targets" "^7.16.3" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-async-generator-functions" "^7.16.4" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-class-static-block" "^7.16.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.0" - "@babel/plugin-proposal-export-namespace-from" "^7.16.0" - "@babel/plugin-proposal-json-strings" "^7.16.0" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-object-rest-spread" "^7.16.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-proposal-private-property-in-object" "^7.16.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.0" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.17.6" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.17.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -1539,135 +858,53 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.0" - "@babel/plugin-transform-async-to-generator" "^7.16.0" - "@babel/plugin-transform-block-scoped-functions" "^7.16.0" - "@babel/plugin-transform-block-scoping" "^7.16.0" - "@babel/plugin-transform-classes" "^7.16.0" - "@babel/plugin-transform-computed-properties" "^7.16.0" - "@babel/plugin-transform-destructuring" "^7.16.0" - "@babel/plugin-transform-dotall-regex" "^7.16.0" - "@babel/plugin-transform-duplicate-keys" "^7.16.0" - "@babel/plugin-transform-exponentiation-operator" "^7.16.0" - "@babel/plugin-transform-for-of" "^7.16.0" - "@babel/plugin-transform-function-name" "^7.16.0" - "@babel/plugin-transform-literals" "^7.16.0" - "@babel/plugin-transform-member-expression-literals" "^7.16.0" - "@babel/plugin-transform-modules-amd" "^7.16.0" - "@babel/plugin-transform-modules-commonjs" "^7.16.0" - "@babel/plugin-transform-modules-systemjs" "^7.16.0" - "@babel/plugin-transform-modules-umd" "^7.16.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0" - "@babel/plugin-transform-new-target" "^7.16.0" - "@babel/plugin-transform-object-super" "^7.16.0" - "@babel/plugin-transform-parameters" "^7.16.3" - "@babel/plugin-transform-property-literals" "^7.16.0" - "@babel/plugin-transform-regenerator" "^7.16.0" - "@babel/plugin-transform-reserved-words" "^7.16.0" - "@babel/plugin-transform-shorthand-properties" "^7.16.0" - "@babel/plugin-transform-spread" "^7.16.0" - "@babel/plugin-transform-sticky-regex" "^7.16.0" - "@babel/plugin-transform-template-literals" "^7.16.0" - "@babel/plugin-transform-typeof-symbol" "^7.16.0" - "@babel/plugin-transform-unicode-escapes" "^7.16.0" - "@babel/plugin-transform-unicode-regex" "^7.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.17.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.17.9" + "@babel/plugin-transform-modules-systemjs" "^7.17.8" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.17.9" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.0" + "@babel/types" "^7.17.10" babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.19.1" + core-js-compat "^3.22.1" semver "^6.3.0" -"@babel/preset-env@^7.4.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" - dependencies: - "@babel/compat-data" "^7.11.0" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-export-namespace-from" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.11.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.11.0" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.11.5" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-flow@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-flow-strip-types" "^7.10.4" - -"@babel/preset-modules@^0.1.3": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" +"@babel/preset-flow@^7.12.1": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd" dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-flow-strip-types" "^7.16.7" "@babel/preset-modules@^0.1.5": version "0.1.5" @@ -1679,29 +916,18 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" +"@babel/preset-react@^7.12.10": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" -"@babel/preset-react@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.10.4" - "@babel/plugin-transform-react-jsx" "^7.10.4" - "@babel/plugin-transform-react-jsx-development" "^7.10.4" - "@babel/plugin-transform-react-jsx-self" "^7.10.4" - "@babel/plugin-transform-react-jsx-source" "^7.10.4" - "@babel/plugin-transform-react-pure-annotations" "^7.10.4" - -"@babel/preset-typescript@^7.16.7": +"@babel/preset-typescript@^7.12.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" dependencies: @@ -1709,61 +935,30 @@ "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/register@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" - dependencies: - core-js "^2.5.7" - find-cache-dir "^1.0.0" - home-or-tmp "^3.0.0" - lodash "^4.17.10" - mkdirp "^0.5.1" - pirates "^4.0.0" - source-map-support "^0.5.9" - -"@babel/runtime-corejs3@^7.10.2": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz#1e25de4fa994c57c18e5fdda6cc810dac70f5590" - dependencies: - core-js-pure "^3.19.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime-corejs3@^7.8.3": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.11.2.tgz#02c3029743150188edeb66541195f54600278419" +"@babel/register@^7.12.1": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.7.tgz#5eef3e0f4afc07e25e847720e7b987ae33f08d0b" dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.12.1": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" dependencies: + core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/template@^7.16.0", "@babel/template@^7.3.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/template@^7.16.7": +"@babel/template@^7.12.7", "@babel/template@^7.16.7", "@babel/template@^7.3.3": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" dependencies: @@ -1771,67 +966,24 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.16.7", "@babel/traverse@^7.7.0": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.7.0": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" +"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1851,22 +1003,13 @@ blake2 "^4.0.2" int64-buffer "^1.0.1" -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" - dependencies: - "@cspotcode/source-map-consumer" "0.8.0" +"@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" "@dump247/storybook-state@1.6.1": version "1.6.1" @@ -1875,24 +1018,9 @@ react "^16.6.0" react-json-view "^1.13.3" -"@electron/get@^1.0.1", "@electron/get@^1.6.0": - version "1.12.2" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.2.tgz#6442066afb99be08cefb9a281e4b4692b33764f3" - dependencies: - debug "^4.1.1" - env-paths "^2.2.0" - fs-extra "^8.1.0" - got "^9.6.0" - progress "^2.0.3" - sanitize-filename "^1.6.2" - sumchecker "^3.0.1" - optionalDependencies: - global-agent "^2.0.2" - global-tunnel-ng "^2.7.1" - -"@electron/get@^1.12.4": - version "1.12.4" - resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.4.tgz#a5971113fc1bf8fa12a8789dc20152a7359f06ab" +"@electron/get@^1.0.1", "@electron/get@^1.12.4", "@electron/get@^1.6.0": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" dependencies: debug "^4.1.1" env-paths "^2.2.0" @@ -1902,12 +1030,12 @@ semver "^6.2.0" sumchecker "^3.0.1" optionalDependencies: - global-agent "^2.0.2" + global-agent "^3.0.0" global-tunnel-ng "^2.7.1" "@electron/remote@^1.0.4": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-1.2.0.tgz#772eb4c3ac17aaba5a9cf05a09092f6277f5671f" + version "1.2.2" + resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-1.2.2.tgz#4c390a2e669df47af973c09eec106162a296c323" "@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": version "10.0.29" @@ -1918,9 +1046,9 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/core@^10.0.20", "@emotion/core@^10.0.9": - version "10.0.35" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" +"@emotion/core@^10.0.9", "@emotion/core@^10.1.1": + version "10.3.1" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.3.1.tgz#4021b6d8b33b3304d48b0bb478485e7d7421c69d" dependencies: "@babel/runtime" "^7.5.5" "@emotion/cache" "^10.0.27" @@ -1941,7 +1069,7 @@ version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" -"@emotion/is-prop-valid@0.8.8": +"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.6": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" dependencies: @@ -1965,20 +1093,20 @@ version "0.9.4" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" -"@emotion/styled-base@^10.0.27": - version "10.0.31" - resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.31.tgz#940957ee0aa15c6974adc7d494ff19765a2f742a" +"@emotion/styled-base@^10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.3.0.tgz#9aa2c946100f78b47316e4bc6048321afa6d4e36" dependencies: "@babel/runtime" "^7.5.5" "@emotion/is-prop-valid" "0.8.8" "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" -"@emotion/styled@^10.0.17": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" +"@emotion/styled@^10.0.27": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.3.0.tgz#8ee959bf75730789abb5f67f7c3ded0c30aec876" dependencies: - "@emotion/styled-base" "^10.0.27" + "@emotion/styled-base" "^10.3.0" babel-plugin-emotion "^10.0.27" "@emotion/stylis@0.8.5": @@ -1997,18 +1125,17 @@ version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" +"@eslint/eslintrc@^1.2.1": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.2.tgz#4989b9e8c0216747ee7cca314ae73791bb281aae" dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.3.1" + globals "^13.9.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.19" + js-yaml "^4.1.0" minimatch "^3.0.4" strip-json-comments "^3.1.1" @@ -2016,13 +1143,90 @@ version "6.0.0" resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-6.0.0.tgz#b613ebf5f5ebb2ab987afb567d8b7fe860199c13" +"@formatjs/cli@4.8.3": + version "4.8.3" + resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-4.8.3.tgz#8984be6f1d333857d692f747cb8b16c663c1b354" + dependencies: + "@formatjs/icu-messageformat-parser" "2.0.19" + "@formatjs/ts-transformer" "3.9.3" + "@types/estree" "^0.0.50" + "@types/fs-extra" "^9.0.1" + "@types/json-stable-stringify" "^1.0.32" + "@types/node" "14" + "@vue/compiler-core" "^3.2.23" + chalk "^4.0.0" + commander "8" + fast-glob "^3.2.7" + fs-extra "10" + json-stable-stringify "^1.0.1" + loud-rejection "^2.2.0" + tslib "^2.1.0" + typescript "^4.5" + vue "^3.2.23" + +"@formatjs/ecma402-abstract@1.11.4": + version "1.11.4" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda" + dependencies: + "@formatjs/intl-localematcher" "0.2.25" + tslib "^2.1.0" + +"@formatjs/icu-messageformat-parser@2.0.19": + version "2.0.19" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.19.tgz#3a9ae986b9e42b6a833aceab010ee88e36020d26" + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + "@formatjs/icu-skeleton-parser" "1.3.6" + tslib "^2.1.0" + +"@formatjs/icu-skeleton-parser@1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964" + dependencies: + "@formatjs/ecma402-abstract" "1.11.4" + tslib "^2.1.0" + +"@formatjs/intl-localematcher@0.2.25": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a" + dependencies: + tslib "^2.1.0" + +"@formatjs/ts-transformer@3.9.3": + version "3.9.3" + resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.9.3.tgz#714a7ec9daff38fdedd3bdd990e21d382cd793c8" + dependencies: + "@formatjs/icu-messageformat-parser" "2.0.19" + "@types/node" "14 || 16 || 17" + chalk "^4.0.0" + tslib "^2.1.0" + typescript "^4.5" + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" -"@icons/material@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" +"@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + dependencies: + "@hapi/hoek" "^9.0.0" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" "@iohk-jormungandr/wallet-js@0.5.0-pre7": version "0.5.0-pre7" @@ -2038,187 +1242,208 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" +"@jest/create-cache-key-function@^27.4.2": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" + dependencies: + "@jest/types" "^27.5.1" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^26.6.2" + jest-mock "^27.5.1" -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" + v8-to-istanbul "^8.1.0" -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" dependencies: callsites "^3.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" source-map "^0.6.0" -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" - "@types/yargs" "^15.0.0" + "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^27.2.5": - version "27.2.5" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.12" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.12.tgz#7ed98f6fa525ffb7c56a2cbecb5f7bb91abd2baf" + +"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@ledgerhq/devices@^5.26.0": - version "5.26.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.26.0.tgz#6c25ee48d0d2f49a8fa1abc11f3efd888f3fea68" + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" dependencies: - "@ledgerhq/errors" "^5.26.0" - "@ledgerhq/logs" "^5.26.0" - rxjs "^6.6.3" + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/logs" "^5.50.0" + rxjs "6" + semver "^7.3.5" "@ledgerhq/devices@^6.27.1": version "6.27.1" @@ -2233,6 +1458,10 @@ version "5.26.0" resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.26.0.tgz#a2d3da356e8053817b6517a94eff876ca1d0c972" +"@ledgerhq/errors@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" + "@ledgerhq/errors@^6.10.0": version "6.10.0" resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.10.0.tgz#dda9127b65f653fbb2f74a55e8f0e550d69de6e4" @@ -2276,14 +1505,18 @@ "@ledgerhq/errors" "^6.10.0" events "^3.3.0" -"@ledgerhq/logs@^5.26.0": - version "5.26.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.26.0.tgz#171bd471265259663520abb02a0eed80e949e3a1" +"@ledgerhq/logs@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" "@ledgerhq/logs@^6.10.0": version "6.10.0" resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.0.tgz#c012c1ecc1a0e53d50e6af381618dca5268461c1" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0" + "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" @@ -2296,6 +1529,34 @@ dependencies: cross-spawn "^7.0.1" +"@mdx-js/mdx@^1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + dependencies: + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" + "@babel/plugin-syntax-object-rest-spread" "7.8.3" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" + +"@mdx-js/util@1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -2303,30 +1564,26 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - version "2.1.8-no-fsevents.3" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" "@npmcli/fs@^1.0.0": @@ -2343,9 +1600,37 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@popperjs/core@^2.8.3": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" +"@pmmmwh/react-refresh-webpack-plugin@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.3.tgz#b8f0e035f6df71b5c4126cb98de29f65188b9e7b" + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.8.1" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.1": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.5.tgz#e77aac783bd079f548daa0a7f080ab5b5a9741ca" + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.8.1" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@popperjs/core@^2.5.4", "@popperjs/core@^2.6.0", "@popperjs/core@^2.9.0": + version "2.11.5" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -2390,26 +1675,31 @@ version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" -"@reach/router@^1.2.1": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" dependencies: - create-react-context "0.3.0" - invariant "^2.2.3" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" "@sindresorhus/is@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.1.tgz#d26729db850fa327b7cacc5522252194404226f5" + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" "@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" dependencies: type-detect "4.0.8" @@ -2419,6 +1709,12 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sinonjs/formatio@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-5.0.1.tgz#f13e713cb3313b1ab965901b01b0828ea6b77089" @@ -2427,8 +1723,8 @@ "@sinonjs/samsam" "^5.0.2" "@sinonjs/samsam@^5.0.2", "@sinonjs/samsam@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.0.tgz#1d2f0743dc54bf13fe9d508baefacdffa25d4329" + version "5.3.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" dependencies: "@sinonjs/commons" "^1.6.0" lodash.get "^4.4.2" @@ -2438,552 +1734,918 @@ version "0.7.1" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" -"@storybook/addon-actions@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.3.21.tgz#16eed3eb24996adfcbf70bd476a261324d6de593" - dependencies: - "@storybook/addons" "5.3.21" - "@storybook/api" "5.3.21" - "@storybook/client-api" "5.3.21" - "@storybook/components" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/theming" "5.3.21" - core-js "^3.0.1" - fast-deep-equal "^2.0.1" - global "^4.3.2" - polished "^3.3.1" +"@storybook/addon-actions@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.4.22.tgz#ec1b4332e76a8021dc0a1375dfd71a0760457588" + dependencies: + "@storybook/addons" "6.4.22" + "@storybook/api" "6.4.22" + "@storybook/components" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/theming" "6.4.22" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + polished "^4.0.5" prop-types "^15.7.2" - react "^16.8.3" - react-inspector "^4.0.0" - uuid "^3.3.2" + react-inspector "^5.1.0" + regenerator-runtime "^0.13.7" + telejson "^5.3.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + uuid-browser "^3.1.0" -"@storybook/addon-knobs@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-5.3.21.tgz#dd721700e5eab2969b3854dc73c855a03fb7aba8" - dependencies: - "@storybook/addons" "5.3.21" - "@storybook/api" "5.3.21" - "@storybook/client-api" "5.3.21" - "@storybook/components" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/theming" "5.3.21" - "@types/react-color" "^3.0.1" - copy-to-clipboard "^3.0.8" - core-js "^3.0.1" +"@storybook/addon-knobs@6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-6.4.0.tgz#fa5943ef21826cdc2e20ded74edfdf5a6dc71dcf" + dependencies: + copy-to-clipboard "^3.3.1" + core-js "^3.8.2" escape-html "^1.0.3" - fast-deep-equal "^2.0.1" - global "^4.3.2" - lodash "^4.17.15" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.20" prop-types "^15.7.2" - qs "^6.6.0" - react-color "^2.17.0" + qs "^6.10.0" + react-colorful "^5.1.2" react-lifecycles-compat "^3.0.4" - react-select "^3.0.8" - -"@storybook/addon-links@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-5.3.21.tgz#4bae11c5de77fcce1f5429be3454376870512db2" - dependencies: - "@storybook/addons" "5.3.21" - "@storybook/client-logger" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/csf" "0.0.1" - "@storybook/router" "5.3.21" - core-js "^3.0.1" - global "^4.3.2" + react-select "^3.2.0" + +"@storybook/addon-links@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.4.22.tgz#c0ed9e9ef6505cf1562e1476bbc5064c82dadbe2" + dependencies: + "@storybook/addons" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/router" "6.4.22" + "@types/qs" "^6.9.5" + core-js "^3.8.2" + global "^4.4.0" prop-types "^15.7.2" - qs "^6.6.0" - ts-dedent "^1.1.0" - -"@storybook/addons@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.3.21.tgz#ee312c738c33e8c34dc11777ef93522c3c36e56a" - dependencies: - "@storybook/api" "5.3.21" - "@storybook/channels" "5.3.21" - "@storybook/client-logger" "5.3.21" - "@storybook/core-events" "5.3.21" - core-js "^3.0.1" - global "^4.3.2" - util-deprecate "^1.0.2" - -"@storybook/addons@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.3.22.tgz#c12fc0d7e12575984eb02b41d7dab3fd774b41a6" - dependencies: - "@storybook/api" "5.3.22" - "@storybook/channels" "5.3.22" - "@storybook/client-logger" "5.3.22" - "@storybook/core-events" "5.3.22" - core-js "^3.0.1" - global "^4.3.2" - util-deprecate "^1.0.2" - -"@storybook/api@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.3.21.tgz#8f1772de53b65e1a65d2f0257463d621a8617c58" - dependencies: - "@reach/router" "^1.2.1" - "@storybook/channels" "5.3.21" - "@storybook/client-logger" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/csf" "0.0.1" - "@storybook/router" "5.3.21" - "@storybook/theming" "5.3.21" - "@types/reach__router" "^1.2.3" - core-js "^3.0.1" - fast-deep-equal "^2.0.1" - global "^4.3.2" - lodash "^4.17.15" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + +"@storybook/addons@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.4.22.tgz#e165407ca132c2182de2d466b7ff7c5644b6ad7b" + dependencies: + "@storybook/api" "6.4.22" + "@storybook/channels" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/router" "6.4.22" + "@storybook/theming" "6.4.22" + "@types/webpack-env" "^1.16.0" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" + +"@storybook/api@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.4.22.tgz#d63f7ad3ffdd74af01ae35099bff4c39702cf793" + dependencies: + "@storybook/channels" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/router" "6.4.22" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.4.22" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" memoizerific "^1.11.3" - prop-types "^15.6.2" - react "^16.8.3" - semver "^6.0.0" - shallow-equal "^1.1.0" - store2 "^2.7.1" - telejson "^3.2.0" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + telejson "^5.3.2" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/api@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.3.22.tgz#a1ca004d7a27de50ffde6de094aae982b0309654" - dependencies: - "@reach/router" "^1.2.1" - "@storybook/channels" "5.3.22" - "@storybook/client-logger" "5.3.22" - "@storybook/core-events" "5.3.22" - "@storybook/csf" "0.0.1" - "@storybook/router" "5.3.22" - "@storybook/theming" "5.3.22" - "@types/reach__router" "^1.2.3" - core-js "^3.0.1" - fast-deep-equal "^2.0.1" - global "^4.3.2" - lodash "^4.17.15" - memoizerific "^1.11.3" - prop-types "^15.6.2" - react "^16.8.3" - semver "^6.0.0" - shallow-equal "^1.1.0" - store2 "^2.7.1" - telejson "^3.2.0" +"@storybook/builder-webpack4@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.4.22.tgz#d3384b146e97a2b3a6357c6eb8279ff0f1c7f8f5" + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.12" + "@babel/plugin-proposal-export-default-from" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.12" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-react" "^7.12.10" + "@babel/preset-typescript" "^7.12.7" + "@storybook/addons" "6.4.22" + "@storybook/api" "6.4.22" + "@storybook/channel-postmessage" "6.4.22" + "@storybook/channels" "6.4.22" + "@storybook/client-api" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/components" "6.4.22" + "@storybook/core-common" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/node-logger" "6.4.22" + "@storybook/preview-web" "6.4.22" + "@storybook/router" "6.4.22" + "@storybook/semver" "^7.3.2" + "@storybook/store" "6.4.22" + "@storybook/theming" "6.4.22" + "@storybook/ui" "6.4.22" + "@types/node" "^14.0.10" + "@types/webpack" "^4.41.26" + autoprefixer "^9.8.6" + babel-loader "^8.0.0" + babel-plugin-macros "^2.8.0" + babel-plugin-polyfill-corejs3 "^0.1.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^3.6.0" + file-loader "^6.2.0" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^4.1.6" + glob "^7.1.6" + glob-promise "^3.4.0" + global "^4.4.0" + html-webpack-plugin "^4.0.0" + pnp-webpack-plugin "1.6.4" + postcss "^7.0.36" + postcss-flexbugs-fixes "^4.2.1" + postcss-loader "^4.2.0" + raw-loader "^4.0.2" + stable "^0.1.8" + style-loader "^1.3.0" + terser-webpack-plugin "^4.2.3" + ts-dedent "^2.0.0" + url-loader "^4.1.1" util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-filter-warnings-plugin "^1.2.1" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.2.2" + +"@storybook/builder-webpack5@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-6.4.22.tgz#cd10b3b307f4a6f9c474d3b72ba5555055395681" + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.12" + "@babel/plugin-proposal-export-default-from" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.12" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-react" "^7.12.10" + "@babel/preset-typescript" "^7.12.7" + "@storybook/addons" "6.4.22" + "@storybook/api" "6.4.22" + "@storybook/channel-postmessage" "6.4.22" + "@storybook/channels" "6.4.22" + "@storybook/client-api" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/components" "6.4.22" + "@storybook/core-common" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/node-logger" "6.4.22" + "@storybook/preview-web" "6.4.22" + "@storybook/router" "6.4.22" + "@storybook/semver" "^7.3.2" + "@storybook/store" "6.4.22" + "@storybook/theming" "6.4.22" + "@types/node" "^14.0.10" + babel-loader "^8.0.0" + babel-plugin-macros "^3.0.1" + babel-plugin-polyfill-corejs3 "^0.1.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^5.0.1" + fork-ts-checker-webpack-plugin "^6.0.4" + glob "^7.1.6" + glob-promise "^3.4.0" + html-webpack-plugin "^5.0.0" + path-browserify "^1.0.1" + process "^0.11.10" + stable "^0.1.8" + style-loader "^2.0.0" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.4.1" + +"@storybook/channel-postmessage@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.4.22.tgz#8be0be1ea1e667a49fb0f09cdfdeeb4a45829637" + dependencies: + "@storybook/channels" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + core-js "^3.8.2" + global "^4.4.0" + qs "^6.10.0" + telejson "^5.3.2" -"@storybook/channel-postmessage@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-5.3.21.tgz#9c08bf1c108ff973dbca18e582680d25178db1d4" - dependencies: - "@storybook/channels" "5.3.21" - "@storybook/client-logger" "5.3.21" - core-js "^3.0.1" - global "^4.3.2" - telejson "^3.2.0" - -"@storybook/channels@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.3.21.tgz#53ba622b171d68b3b102983a62aa05149a49497b" +"@storybook/channel-websocket@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-6.4.22.tgz#d541f69125873123c453757e2b879a75a9266c65" dependencies: - core-js "^3.0.1" + "@storybook/channels" "6.4.22" + "@storybook/client-logger" "6.4.22" + core-js "^3.8.2" + global "^4.4.0" + telejson "^5.3.2" -"@storybook/channels@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.3.22.tgz#ff4e96828a13e7e9812ab679897e57076339a230" +"@storybook/channels@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.4.22.tgz#710f732763d63f063f615898ab1afbe74e309596" dependencies: - core-js "^3.0.1" + core-js "^3.8.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/client-api@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-5.3.21.tgz#5b218a28f24219c32ab4b92a6af2a3e452fb8089" - dependencies: - "@storybook/addons" "5.3.21" - "@storybook/channel-postmessage" "5.3.21" - "@storybook/channels" "5.3.21" - "@storybook/client-logger" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/csf" "0.0.1" - "@types/webpack-env" "^1.15.0" - core-js "^3.0.1" - eventemitter3 "^4.0.0" - global "^4.3.2" - is-plain-object "^3.0.0" - lodash "^4.17.15" +"@storybook/client-api@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.4.22.tgz#df14f85e7900b94354c26c584bab53a67c47eae9" + dependencies: + "@storybook/addons" "6.4.22" + "@storybook/channel-postmessage" "6.4.22" + "@storybook/channels" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/store" "6.4.22" + "@types/qs" "^6.9.5" + "@types/webpack-env" "^1.16.0" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" memoizerific "^1.11.3" - qs "^6.6.0" - stable "^0.1.8" - ts-dedent "^1.1.0" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.3.21.tgz#912c83b0d358e70acad1ad4abe199de4c38b109f" - dependencies: - core-js "^3.0.1" - -"@storybook/client-logger@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.3.22.tgz#70d813acaa376339e54454cb5114a19da829c266" +"@storybook/client-logger@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.4.22.tgz#51abedb7d3c9bc21921aeb153ac8a19abc625cd6" dependencies: - core-js "^3.0.1" + core-js "^3.8.2" + global "^4.4.0" -"@storybook/components@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-5.3.21.tgz#17ee371a2455c6e807c3d3135a9266e63ad7651a" +"@storybook/components@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.4.22.tgz#4d425280240702883225b6a1f1abde7dc1a0e945" dependencies: - "@storybook/client-logger" "5.3.21" - "@storybook/theming" "5.3.21" - "@types/react-textarea-autosize" "^4.3.3" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" - markdown-to-jsx "^6.11.4" + "@popperjs/core" "^2.6.0" + "@storybook/client-logger" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/theming" "6.4.22" + "@types/color-convert" "^2.0.0" + "@types/overlayscrollbars" "^1.12.0" + color-convert "^2.0.1" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + markdown-to-jsx "^7.1.3" memoizerific "^1.11.3" - polished "^3.3.1" - popper.js "^1.14.7" + overlayscrollbars "^1.13.1" + polished "^4.0.5" prop-types "^15.7.2" - react "^16.8.3" - react-dom "^16.8.3" - react-focus-lock "^2.1.0" - react-helmet-async "^1.0.2" - react-popper-tooltip "^2.8.3" - react-syntax-highlighter "^11.0.2" - react-textarea-autosize "^7.1.0" - simplebar-react "^1.0.0-alpha.6" - ts-dedent "^1.1.0" - -"@storybook/core-events@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.3.21.tgz#41d81c3f107302a032545fc86ff344230c04b9e9" - dependencies: - core-js "^3.0.1" - -"@storybook/core-events@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.3.22.tgz#28b35f7172ee2664d34bcd3232024adccc44515f" - dependencies: - core-js "^3.0.1" - -"@storybook/core@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-5.3.21.tgz#da963166ea24601f318266a3aa6bbc06fc8fb175" - dependencies: - "@babel/plugin-proposal-class-properties" "^7.7.0" - "@babel/plugin-proposal-object-rest-spread" "^7.6.2" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-transform-react-constant-elements" "^7.2.0" - "@babel/preset-env" "^7.4.5" - "@storybook/addons" "5.3.21" - "@storybook/channel-postmessage" "5.3.21" - "@storybook/client-api" "5.3.21" - "@storybook/client-logger" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/csf" "0.0.1" - "@storybook/node-logger" "5.3.21" - "@storybook/router" "5.3.21" - "@storybook/theming" "5.3.21" - "@storybook/ui" "5.3.21" + react-colorful "^5.1.2" + react-popper-tooltip "^3.1.1" + react-syntax-highlighter "^13.5.3" + react-textarea-autosize "^8.3.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/core-client@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.4.22.tgz#9079eda8a9c8e6ba24b84962a749b1c99668cb2a" + dependencies: + "@storybook/addons" "6.4.22" + "@storybook/channel-postmessage" "6.4.22" + "@storybook/channel-websocket" "6.4.22" + "@storybook/client-api" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/preview-web" "6.4.22" + "@storybook/store" "6.4.22" + "@storybook/ui" "6.4.22" airbnb-js-shims "^2.2.1" ansi-to-html "^0.6.11" - autoprefixer "^9.7.2" - babel-plugin-add-react-displayname "^0.0.5" - babel-plugin-emotion "^10.0.20" - babel-plugin-macros "^2.7.0" - babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" - boxen "^4.1.0" - case-sensitive-paths-webpack-plugin "^2.2.0" - chalk "^3.0.0" - cli-table3 "0.5.1" - commander "^4.0.1" - core-js "^3.0.1" - corejs-upgrade-webpack-plugin "^2.2.0" - css-loader "^3.0.0" - detect-port "^1.3.0" - dotenv-webpack "^1.7.0" - ejs "^2.7.4" - express "^4.17.0" - file-loader "^4.2.0" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" + +"@storybook/core-common@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.4.22.tgz#b00fa3c0625e074222a50be3196cb8052dd7f3bf" + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.12" + "@babel/plugin-proposal-export-default-from" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.12" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-react" "^7.12.10" + "@babel/preset-typescript" "^7.12.7" + "@babel/register" "^7.12.1" + "@storybook/node-logger" "6.4.22" + "@storybook/semver" "^7.3.2" + "@types/node" "^14.0.10" + "@types/pretty-hrtime" "^1.0.0" + babel-loader "^8.0.0" + babel-plugin-macros "^3.0.1" + babel-plugin-polyfill-corejs3 "^0.1.0" + chalk "^4.1.0" + core-js "^3.8.2" + express "^4.17.1" file-system-cache "^1.0.5" - find-cache-dir "^3.0.0" - find-up "^4.1.0" - fs-extra "^8.0.1" - glob-base "^0.3.0" - global "^4.3.2" - html-webpack-plugin "^4.0.0-beta.2" - inquirer "^7.0.0" - interpret "^2.0.0" - ip "^1.1.5" - json5 "^2.1.1" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.0.4" + fs-extra "^9.0.1" + glob "^7.1.6" + handlebars "^4.7.7" + interpret "^2.2.0" + json5 "^2.1.3" lazy-universal-dotenv "^3.0.1" - micromatch "^4.0.2" - node-fetch "^2.6.0" - open "^7.0.0" - pnp-webpack-plugin "1.5.0" - postcss-flexbugs-fixes "^4.1.0" - postcss-loader "^3.0.0" + picomatch "^2.3.0" + pkg-dir "^5.0.0" pretty-hrtime "^1.0.3" - qs "^6.6.0" - raw-loader "^3.1.0" - react-dev-utils "^9.0.0" - regenerator-runtime "^0.13.3" - resolve "^1.11.0" resolve-from "^5.0.0" - semver "^6.0.0" + slash "^3.0.0" + telejson "^5.3.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "4" + +"@storybook/core-events@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.4.22.tgz#c09b0571951affd4254028b8958a4d8652700989" + dependencies: + core-js "^3.8.2" + +"@storybook/core-server@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.4.22.tgz#254409ec2ba49a78b23f5e4a4c0faea5a570a32b" + dependencies: + "@discoveryjs/json-ext" "^0.5.3" + "@storybook/builder-webpack4" "6.4.22" + "@storybook/core-client" "6.4.22" + "@storybook/core-common" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/csf-tools" "6.4.22" + "@storybook/manager-webpack4" "6.4.22" + "@storybook/node-logger" "6.4.22" + "@storybook/semver" "^7.3.2" + "@storybook/store" "6.4.22" + "@types/node" "^14.0.10" + "@types/node-fetch" "^2.5.7" + "@types/pretty-hrtime" "^1.0.0" + "@types/webpack" "^4.41.26" + better-opn "^2.1.1" + boxen "^5.1.2" + chalk "^4.1.0" + cli-table3 "^0.6.1" + commander "^6.2.1" + compression "^1.7.4" + core-js "^3.8.2" + cpy "^8.1.2" + detect-port "^1.3.0" + express "^4.17.1" + file-system-cache "^1.0.5" + fs-extra "^9.0.1" + globby "^11.0.2" + ip "^1.1.5" + lodash "^4.17.21" + node-fetch "^2.6.1" + pretty-hrtime "^1.0.3" + prompts "^2.4.0" + regenerator-runtime "^0.13.7" serve-favicon "^2.5.0" - shelljs "^0.8.3" - style-loader "^1.0.0" - terser-webpack-plugin "^2.1.2" - ts-dedent "^1.1.0" - unfetch "^4.1.0" - url-loader "^2.0.1" + slash "^3.0.0" + telejson "^5.3.3" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" - webpack "^4.33.0" - webpack-dev-middleware "^3.7.0" - webpack-hot-middleware "^2.25.0" - webpack-virtual-modules "^0.2.0" + watchpack "^2.2.0" + webpack "4" + ws "^8.2.3" + +"@storybook/core@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.4.22.tgz#cf14280d7831b41d5dea78f76b414bdfde5918f0" + dependencies: + "@storybook/core-client" "6.4.22" + "@storybook/core-server" "6.4.22" + +"@storybook/csf-tools@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-6.4.22.tgz#f6d64bcea1b36114555972acae66a1dbe9e34b5c" + dependencies: + "@babel/core" "^7.12.10" + "@babel/generator" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/plugin-transform-react-jsx" "^7.12.12" + "@babel/preset-env" "^7.12.11" + "@babel/traverse" "^7.12.11" + "@babel/types" "^7.12.11" + "@mdx-js/mdx" "^1.6.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + core-js "^3.8.2" + fs-extra "^9.0.1" + global "^4.4.0" + js-string-escape "^1.0.1" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" -"@storybook/csf@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" +"@storybook/csf@0.0.2--canary.87bc651.0": + version "0.0.2--canary.87bc651.0" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz#c7b99b3a344117ef67b10137b6477a3d2750cf44" dependencies: lodash "^4.17.15" -"@storybook/node-logger@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-5.3.21.tgz#f11d45042bd57dc69e9037d8f374d9fd0aad8071" +"@storybook/manager-webpack4@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/manager-webpack4/-/manager-webpack4-6.4.22.tgz#eabd674beee901c7f755d9b679e9f969cbab636d" + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@storybook/addons" "6.4.22" + "@storybook/core-client" "6.4.22" + "@storybook/core-common" "6.4.22" + "@storybook/node-logger" "6.4.22" + "@storybook/theming" "6.4.22" + "@storybook/ui" "6.4.22" + "@types/node" "^14.0.10" + "@types/webpack" "^4.41.26" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^3.6.0" + express "^4.17.1" + file-loader "^6.2.0" + file-system-cache "^1.0.5" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^4.0.0" + node-fetch "^2.6.1" + pnp-webpack-plugin "1.6.4" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^1.3.0" + telejson "^5.3.2" + terser-webpack-plugin "^4.2.3" + ts-dedent "^2.0.0" + url-loader "^4.1.1" + util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-virtual-modules "^0.2.2" + +"@storybook/manager-webpack5@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/manager-webpack5/-/manager-webpack5-6.4.22.tgz#14b6c564692324e25084f699d599cd202659fe21" + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@storybook/addons" "6.4.22" + "@storybook/core-client" "6.4.22" + "@storybook/core-common" "6.4.22" + "@storybook/node-logger" "6.4.22" + "@storybook/theming" "6.4.22" + "@storybook/ui" "6.4.22" + "@types/node" "^14.0.10" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^5.0.1" + express "^4.17.1" + file-system-cache "^1.0.5" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^5.0.0" + node-fetch "^2.6.1" + process "^0.11.10" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^2.0.0" + telejson "^5.3.2" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-virtual-modules "^0.4.1" + +"@storybook/node-logger@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.4.22.tgz#c4ec00f8714505f44eda7671bc88bb44abf7ae59" dependencies: - chalk "^3.0.0" - core-js "^3.0.1" - npmlog "^4.1.2" + chalk "^4.1.0" + core-js "^3.8.2" + npmlog "^5.0.1" pretty-hrtime "^1.0.3" - regenerator-runtime "^0.13.3" - -"@storybook/react@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-5.3.21.tgz#f7f364d3d3adc70746a12cf8b6614952f41d4bd0" - dependencies: - "@babel/plugin-transform-react-constant-elements" "^7.6.3" - "@babel/preset-flow" "^7.0.0" - "@babel/preset-react" "^7.0.0" - "@storybook/addons" "5.3.21" - "@storybook/core" "5.3.21" - "@storybook/node-logger" "5.3.21" - "@svgr/webpack" "^4.0.3" - "@types/webpack-env" "^1.15.0" + +"@storybook/preview-web@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/preview-web/-/preview-web-6.4.22.tgz#58bfc6492503ff4265b50f42a27ea8b0bfcf738a" + dependencies: + "@storybook/addons" "6.4.22" + "@storybook/channel-postmessage" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/store" "6.4.22" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" + +"@storybook/react-docgen-typescript-plugin@1.0.2-canary.253f8c1.0": + version "1.0.2-canary.253f8c1.0" + resolved "https://registry.yarnpkg.com/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.253f8c1.0.tgz#f2da40e6aae4aa586c2fb284a4a1744602c3c7fa" + dependencies: + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.0.0" + tslib "^2.0.0" + +"@storybook/react@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.4.22.tgz#5940e5492bc87268555b47f12aff4be4b67eae54" + dependencies: + "@babel/preset-flow" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.1" + "@storybook/addons" "6.4.22" + "@storybook/core" "6.4.22" + "@storybook/core-common" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + "@storybook/node-logger" "6.4.22" + "@storybook/react-docgen-typescript-plugin" "1.0.2-canary.253f8c1.0" + "@storybook/semver" "^7.3.2" + "@storybook/store" "6.4.22" + "@types/webpack-env" "^1.16.0" babel-plugin-add-react-displayname "^0.0.5" babel-plugin-named-asset-import "^0.3.1" - babel-plugin-react-docgen "^4.0.0" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" - mini-css-extract-plugin "^0.7.0" + babel-plugin-react-docgen "^4.2.1" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" prop-types "^15.7.2" - react-dev-utils "^9.0.0" - regenerator-runtime "^0.13.3" - semver "^6.0.0" - ts-dedent "^1.1.0" - webpack "^4.33.0" - -"@storybook/router@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.3.21.tgz#32b08e5daa90a6ffa024bb670b874525a712a901" - dependencies: - "@reach/router" "^1.2.1" - "@storybook/csf" "0.0.1" - "@types/reach__router" "^1.2.3" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" - memoizerific "^1.11.3" - qs "^6.6.0" - util-deprecate "^1.0.2" + react-refresh "^0.11.0" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + webpack "4" -"@storybook/router@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.3.22.tgz#03ca154cbc63c7124cc1d334569c4f4ac41d92b5" +"@storybook/router@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.4.22.tgz#e3cc5cd8595668a367e971efb9695bbc122ed95e" dependencies: - "@reach/router" "^1.2.1" - "@storybook/csf" "0.0.1" - "@types/reach__router" "^1.2.3" - core-js "^3.0.1" - global "^4.3.2" - lodash "^4.17.15" + "@storybook/client-logger" "6.4.22" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + history "5.0.0" + lodash "^4.17.21" memoizerific "^1.11.3" - qs "^6.6.0" - util-deprecate "^1.0.2" + qs "^6.10.0" + react-router "^6.0.0" + react-router-dom "^6.0.0" + ts-dedent "^2.0.0" -"@storybook/theming@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.3.21.tgz#ae2dc101aa57c3be4df1724ae729e11bad118e0b" +"@storybook/semver@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@storybook/semver/-/semver-7.3.2.tgz#f3b9c44a1c9a0b933c04e66d0048fcf2fa10dac0" dependencies: - "@emotion/core" "^10.0.20" - "@emotion/styled" "^10.0.17" - "@storybook/client-logger" "5.3.21" - core-js "^3.0.1" - deep-object-diff "^1.1.0" - emotion-theming "^10.0.19" - global "^4.3.2" + core-js "^3.6.5" + find-up "^4.1.0" + +"@storybook/store@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/store/-/store-6.4.22.tgz#f291fbe3639f14d25f875cac86abb209a97d4e2a" + dependencies: + "@storybook/addons" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/csf" "0.0.2--canary.87bc651.0" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" - resolve-from "^5.0.0" - ts-dedent "^1.1.0" + regenerator-runtime "^0.13.7" + slash "^3.0.0" + stable "^0.1.8" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/theming@5.3.22": - version "5.3.22" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.3.22.tgz#c62a4139b7cb9aff3d8b0b08247cf1855a1f1a5e" +"@storybook/theming@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.4.22.tgz#19097eec0366447ddd0d6917b0e0f81d0ec5e51e" dependencies: - "@emotion/core" "^10.0.20" - "@emotion/styled" "^10.0.17" - "@storybook/client-logger" "5.3.22" - core-js "^3.0.1" + "@emotion/core" "^10.1.1" + "@emotion/is-prop-valid" "^0.8.6" + "@emotion/styled" "^10.0.27" + "@storybook/client-logger" "6.4.22" + core-js "^3.8.2" deep-object-diff "^1.1.0" - emotion-theming "^10.0.19" - global "^4.3.2" + emotion-theming "^10.0.27" + global "^4.4.0" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" + polished "^4.0.5" resolve-from "^5.0.0" - ts-dedent "^1.1.0" - -"@storybook/ui@5.3.21": - version "5.3.21" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-5.3.21.tgz#b42568e03353b47aaab1b6449311f38858585f81" - dependencies: - "@emotion/core" "^10.0.20" - "@storybook/addons" "5.3.21" - "@storybook/api" "5.3.21" - "@storybook/channels" "5.3.21" - "@storybook/client-logger" "5.3.21" - "@storybook/components" "5.3.21" - "@storybook/core-events" "5.3.21" - "@storybook/router" "5.3.21" - "@storybook/theming" "5.3.21" - copy-to-clipboard "^3.0.8" - core-js "^3.0.1" - core-js-pure "^3.0.1" - emotion-theming "^10.0.19" - fast-deep-equal "^2.0.1" - fuse.js "^3.4.6" - global "^4.3.2" - lodash "^4.17.15" - markdown-to-jsx "^6.11.4" + ts-dedent "^2.0.0" + +"@storybook/ui@6.4.22": + version "6.4.22" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.4.22.tgz#49badd7994465d78d984ca4c42533c1c22201c46" + dependencies: + "@emotion/core" "^10.1.1" + "@storybook/addons" "6.4.22" + "@storybook/api" "6.4.22" + "@storybook/channels" "6.4.22" + "@storybook/client-logger" "6.4.22" + "@storybook/components" "6.4.22" + "@storybook/core-events" "6.4.22" + "@storybook/router" "6.4.22" + "@storybook/semver" "^7.3.2" + "@storybook/theming" "6.4.22" + copy-to-clipboard "^3.3.1" + core-js "^3.8.2" + core-js-pure "^3.8.2" + downshift "^6.0.15" + emotion-theming "^10.0.27" + fuse.js "^3.6.1" + global "^4.4.0" + lodash "^4.17.21" + markdown-to-jsx "^7.1.3" memoizerific "^1.11.3" - polished "^3.3.1" - prop-types "^15.7.2" - qs "^6.6.0" - react "^16.8.3" - react-dom "^16.8.3" - react-draggable "^4.0.3" - react-helmet-async "^1.0.2" - react-hotkeys "2.0.0" - react-sizeme "^2.6.7" - regenerator-runtime "^0.13.2" + polished "^4.0.5" + qs "^6.10.0" + react-draggable "^4.4.3" + react-helmet-async "^1.0.7" + react-sizeme "^3.0.1" + regenerator-runtime "^0.13.7" resolve-from "^5.0.0" - semver "^6.0.0" - store2 "^2.7.1" - telejson "^3.2.0" - util-deprecate "^1.0.2" + store2 "^2.12.0" + +"@stylelint/postcss-css-in-js@^0.37.2": + version "0.37.3" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz#d149a385e07ae365b0107314c084cb6c11adbf49" + dependencies: + "@babel/core" "^7.17.9" + +"@stylelint/postcss-markdown@^0.36.1": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391" + dependencies: + remark "^13.0.0" + unist-util-find-all-after "^3.0.2" + +"@swc-node/core@^1.8.2": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@swc-node/core/-/core-1.9.0.tgz#f5208d575c1aed5a2cab7e4c04e46aca34d8c240" + dependencies: + "@swc/core" "^1.2.172" + +"@swc-node/register@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@swc-node/register/-/register-1.4.2.tgz#98801cc5ad8792519511bd6ae31c01f40aa487a3" + dependencies: + "@swc-node/core" "^1.8.2" + "@swc-node/sourcemap-support" "^0.1.11" + chalk "4" + debug "^4.3.3" + pirates "^4.0.4" + tslib "^2.3.1" + typescript "^4.5.3" + +"@swc-node/sourcemap-support@^0.1.11": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@swc-node/sourcemap-support/-/sourcemap-support-0.1.11.tgz#50cda396baade0636e8f53596b7a66386490c06d" + dependencies: + source-map-support "^0.5.21" + +"@swc/core-android-arm-eabi@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.164.tgz#91dade277d6ff3017df0f08c48acef6c6f094129" + +"@swc/core-android-arm-eabi@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.175.tgz#d1d0f521cac96826344f7294b86e1d35d49f626e" + +"@swc/core-android-arm64@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.164.tgz#8a1542788c37f0c0f7ccae78338276c735ebc560" + +"@swc/core-android-arm64@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.175.tgz#cfeb50fc2f48c707cb57630bd849bd4ac2eb4958" + +"@swc/core-darwin-arm64@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.164.tgz#dc005f9ad96418d9aed8258b4c4e0932b665a488" + +"@swc/core-darwin-arm64@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.175.tgz#fa9cdc11556485edd482c48f33125244f703457c" -"@stylelint/postcss-css-in-js@^0.37.2": - version "0.37.2" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" - dependencies: - "@babel/core" ">=7.9.0" +"@swc/core-darwin-x64@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.164.tgz#dafff10f4850b2251c3786292665ce917954f8e2" -"@stylelint/postcss-markdown@^0.36.1": - version "0.36.1" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz#829b87e6c0f108014533d9d7b987dc9efb6632e8" - dependencies: - remark "^12.0.0" - unist-util-find-all-after "^3.0.1" +"@swc/core-darwin-x64@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.175.tgz#3f8e005406938390fc5f8d083e9d0e06ab6907b1" -"@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1" +"@swc/core-freebsd-x64@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.164.tgz#4be6a52f43022df409d964ae2f920e0eeb8f3955" -"@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz#297550b9a8c0c7337bea12bdfc8a80bb66f85abc" +"@swc/core-freebsd-x64@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.175.tgz#155998066ee993cc4329adce5d3f7fe45ffa5039" -"@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz#c196302f3e68eab6a05e98af9ca8570bc13131c7" +"@swc/core-linux-arm-gnueabihf@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.164.tgz#a6dac7f9654bdf863cdcc3143dc2abfb8faffeea" -"@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" +"@swc/core-linux-arm-gnueabihf@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.175.tgz#5678881d8ee007909a153e0f85694e09d0bfe9b4" -"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" +"@swc/core-linux-arm64-gnu@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.164.tgz#26684021f8f2d974045ce29b3f4e17e441f6e964" -"@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz#9a94791c9a288108d20a9d2cc64cac820f141391" +"@swc/core-linux-arm64-gnu@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.175.tgz#6e6517b1f8bb6e2b825f57c943a2389289416d17" -"@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz#151487322843359a1ca86b21a3815fd21a88b717" +"@swc/core-linux-arm64-musl@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.164.tgz#88731dfa9d61162710849383d0cd24f6a2e97335" -"@svgr/babel-plugin-transform-svg-component@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" +"@swc/core-linux-arm64-musl@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.175.tgz#3c7d3743495bdee353e8e8007e09971f1e58a8dd" -"@svgr/babel-preset@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" - "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" - "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" - "@svgr/babel-plugin-transform-svg-component" "^4.2.0" - -"@svgr/core@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" - dependencies: - "@svgr/plugin-jsx" "^4.3.3" - camelcase "^5.3.1" - cosmiconfig "^5.2.1" +"@swc/core-linux-x64-gnu@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.164.tgz#bbe19048a58a5f639fccec47fde26c79d154b476" -"@svgr/hast-util-to-babel-ast@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz#1d5a082f7b929ef8f1f578950238f630e14532b8" - dependencies: - "@babel/types" "^7.4.4" +"@swc/core-linux-x64-gnu@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.175.tgz#70b910ca96237f8839c39c990400e6afa5356363" -"@svgr/plugin-jsx@^4.3.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" - dependencies: - "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.3" - "@svgr/hast-util-to-babel-ast" "^4.3.2" - svg-parser "^2.0.0" +"@swc/core-linux-x64-musl@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.164.tgz#dfbf220f3552e0d10a59c2aaad24a299145d3f11" -"@svgr/plugin-svgo@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz#daac0a3d872e3f55935c6588dd370336865e9e32" - dependencies: - cosmiconfig "^5.2.1" - merge-deep "^3.0.2" - svgo "^1.2.2" +"@swc/core-linux-x64-musl@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.175.tgz#c4dd70c1b9bac2be5f0f0b3f9cb2705e3e5f8595" -"@svgr/webpack@^4.0.3": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" - dependencies: - "@babel/core" "^7.4.5" - "@babel/plugin-transform-react-constant-elements" "^7.0.0" - "@babel/preset-env" "^7.4.5" - "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.3" - "@svgr/plugin-jsx" "^4.3.3" - "@svgr/plugin-svgo" "^4.3.1" - loader-utils "^1.2.3" +"@swc/core-win32-arm64-msvc@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.164.tgz#4164831f8af2da39461d2374bc784667f188d96a" + +"@swc/core-win32-arm64-msvc@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.175.tgz#82522910f5e8131fef705896221b2e3353cfbddf" + +"@swc/core-win32-ia32-msvc@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.164.tgz#f647cc5de26e5eef464325a145b9a37044813f4d" + +"@swc/core-win32-ia32-msvc@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.175.tgz#83ed24c40a55cc572260dc67c21f400d741b897d" + +"@swc/core-win32-x64-msvc@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.164.tgz#e5268d50d300fc863f2d7c146b8d41d338bf7ac9" + +"@swc/core-win32-x64-msvc@1.2.175": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.175.tgz#1c7ae0d2120fb180b04cd0f72cc7f182533d606b" + +"@swc/core@1.2.164": + version "1.2.164" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.164.tgz#158f49cf262357cdbae590a14c7a690b89e6e22a" + optionalDependencies: + "@swc/core-android-arm-eabi" "1.2.164" + "@swc/core-android-arm64" "1.2.164" + "@swc/core-darwin-arm64" "1.2.164" + "@swc/core-darwin-x64" "1.2.164" + "@swc/core-freebsd-x64" "1.2.164" + "@swc/core-linux-arm-gnueabihf" "1.2.164" + "@swc/core-linux-arm64-gnu" "1.2.164" + "@swc/core-linux-arm64-musl" "1.2.164" + "@swc/core-linux-x64-gnu" "1.2.164" + "@swc/core-linux-x64-musl" "1.2.164" + "@swc/core-win32-arm64-msvc" "1.2.164" + "@swc/core-win32-ia32-msvc" "1.2.164" + "@swc/core-win32-x64-msvc" "1.2.164" + +"@swc/core@^1.2.152", "@swc/core@^1.2.172": + version "1.2.175" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.175.tgz#bc39fa8e4fd62b88832cbcc2dfd6d5df32b5d15b" + optionalDependencies: + "@swc/core-android-arm-eabi" "1.2.175" + "@swc/core-android-arm64" "1.2.175" + "@swc/core-darwin-arm64" "1.2.175" + "@swc/core-darwin-x64" "1.2.175" + "@swc/core-freebsd-x64" "1.2.175" + "@swc/core-linux-arm-gnueabihf" "1.2.175" + "@swc/core-linux-arm64-gnu" "1.2.175" + "@swc/core-linux-arm64-musl" "1.2.175" + "@swc/core-linux-x64-gnu" "1.2.175" + "@swc/core-linux-x64-musl" "1.2.175" + "@swc/core-win32-arm64-msvc" "1.2.175" + "@swc/core-win32-ia32-msvc" "1.2.175" + "@swc/core-win32-x64-msvc" "1.2.175" + +"@swc/jest@0.2.21": + version "0.2.21" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.21.tgz#e8c4e234016a914f4cfbb7d75844860a250c1d1c" + dependencies: + "@jest/create-cache-key-function" "^27.4.2" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -2992,14 +2654,14 @@ defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" dependencies: defer-to-connect "^2.0.0" "@testing-library/dom@^8.0.0": - version "8.11.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753" + version "8.13.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5" dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -3101,33 +2763,13 @@ varuint-bitcoin "^1.1.2" wif "^2.0.6" -"@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - -"@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - -"@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - -"@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - -"@types/aes-js@^3.1.1": +"@types/aes-js@3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@types/aes-js/-/aes-js-3.1.1.tgz#34b3978122310c135de4b377270d1d65676fae28" -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.16" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -3136,8 +2778,8 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" dependencies: "@babel/types" "^7.0.0" @@ -3149,23 +2791,111 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" dependencies: "@babel/types" "^7.3.0" +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + dependencies: + "@types/node" "*" + "@types/cacheable-request@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" "@types/node" "*" "@types/responselike" "*" -"@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" +"@types/color-convert@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22" + dependencies: + "@types/color-name" "*" + +"@types/color-name@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.2.13": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + +"@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/fs-extra@^9.0.1": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + dependencies: + "@types/node" "*" + +"@types/glob@*", "@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -3176,21 +2906,29 @@ dependencies: "@types/node" "*" -"@types/history@*": - version "4.7.8" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + dependencies: + "@types/unist" "*" "@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + dependencies: + "@types/node" "*" "@types/is-function@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.0.tgz#1b0b819b1636c7baf0d6785d030d12edf70c3e83" + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.1.tgz#2d024eace950c836d9e3335a66b97960ae41d022" "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" "@types/istanbul-reports@^3.0.0": version "3.0.1" @@ -3199,10 +2937,10 @@ "@types/jest@*": - version "27.0.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a" + version "27.5.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.0.tgz#e04ed1824ca6b1dd0438997ba60f99a7405d4c7b" dependencies: - jest-diff "^27.0.0" + jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" "@types/jest@27.4.0": @@ -3212,31 +2950,31 @@ jest-diff "^27.0.0" pretty-format "^27.0.0" -"@types/json-schema@^7.0.5": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - -"@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" +"@types/json-buffer@~3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" -"@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" +"@types/json-stable-stringify@^1.0.32": + version "1.0.34" + resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz#c0fb25e4d957e0ee2e497c1f553d7f8bb668fd75" + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" "@types/keyv@*": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" dependencies: "@types/node" "*" "@types/ledgerhq__hw-transport@^4.21.3": - version "4.21.3" - resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport/-/ledgerhq__hw-transport-4.21.3.tgz#1e658da6b5d01ffab92f9660cf57121aecfa7e2c" + version "4.21.4" + resolved "https://registry.yarnpkg.com/@types/ledgerhq__hw-transport/-/ledgerhq__hw-transport-4.21.4.tgz#3a78a02d2b51d2b0dd8099412d5567d21118225c" dependencies: "@types/node" "*" @@ -3248,45 +2986,74 @@ version "4.0.2" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" +"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + dependencies: + "@types/unist" "*" + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + "@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + +"@types/node-fetch@^2.5.7": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" + dependencies: + "@types/node" "*" + form-data "^3.0.0" -"@types/node@*": - version "14.11.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.5.tgz#fecad41c041cae7f2404ad4b2d0742fdb628b305" +"@types/node@*", "@types/node@14 || 16 || 17": + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" "@types/node@11.11.6": version "11.11.6" resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" +"@types/node@14", "@types/node@^14.0.10", "@types/node@^14.6.2": + version "14.18.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.16.tgz#878f670ba3f00482bf859b6550b6010610fc54b5" + +"@types/node@14.18.1": + version "14.18.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.1.tgz#459886b51f52aa923dc06b9ea81cb8b1d733e9d3" + "@types/node@>=13.7.0": version "17.0.35" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.35.tgz#635b7586086d51fb40de0a2ec9d1014a5283ba4a" "@types/node@^12.7.2": - version "12.12.64" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.64.tgz#e3b336dc4c6ba52c6b59e3bd69a100347c20b1c0" + version "12.20.50" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.50.tgz#14ba5198f1754ffd0472a2f84ab433b45ee0b65e" -"@types/node@^14.6.2": - version "14.17.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.4.tgz#218712242446fc868d0e007af29a4408c7765bc0" +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" -"@types/node@^17.0.12": - version "17.0.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.12.tgz#f7aa331b27f08244888c47b7df126184bc2339c5" +"@types/overlayscrollbars@^1.12.0": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@types/overlayscrollbars/-/overlayscrollbars-1.12.1.tgz#fb637071b545834fb12aea94ee309a2ff4cdc0a8" -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" +"@types/parse5@^5.0.0": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" -"@types/prettier@^2.0.0": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.2.tgz#4c62fae93eb479660c3bd93f9d24d561597a8281" +"@types/prettier@^2.1.5": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" + +"@types/pretty-hrtime@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" "@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" "@types/puppeteer-core@^5.4.0": version "5.4.0" @@ -3295,65 +3062,42 @@ "@types/puppeteer" "*" "@types/puppeteer@*": - version "5.4.3" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-5.4.3.tgz#cdca84aa7751d77448d8a477dbfa0af1f11485f2" + version "5.4.6" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-5.4.6.tgz#afc438e41dcbc27ca1ba0235ea464a372db2b21c" dependencies: "@types/node" "*" -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - -"@types/qrcode.react@^1.0.2": +"@types/qrcode.react@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/qrcode.react/-/qrcode.react-1.0.2.tgz#f892432cc41b5dac52e3ca8873b717c8bfea6002" dependencies: "@types/react" "*" -"@types/reach__router@^1.2.3": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.6.tgz#413417ce74caab331c70ce6a03a4c825188e4709" - dependencies: - "@types/history" "*" - "@types/react" "*" +"@types/qs@*", "@types/qs@^6.9.5": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" -"@types/react-color@^3.0.1": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.4.tgz#c63daf012ad067ac0127bdd86725f079d02082bd" - dependencies: - "@types/react" "*" +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" -"@types/react-svg-inline@^2.1.3": +"@types/react-svg-inline@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@types/react-svg-inline/-/react-svg-inline-2.1.3.tgz#e76f2141de6a92c66597b81475255d86efd99d76" dependencies: "@types/react" "*" "@types/react-table@^7.7.9": - version "7.7.9" - resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.7.9.tgz#ea82875775fc6ee71a28408dcc039396ae067c92" + version "7.7.11" + resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.7.11.tgz#0efbb69aabf5b4b9c26c4c027b1e1ceb0f342303" dependencies: "@types/react" "*" -"@types/react-textarea-autosize@^4.3.3": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz#6c4d2753fa1864c98c0b2b517f67bb1f6e4c46de" - dependencies: - "@types/react" "*" - -"@types/react@*": - version "16.9.51" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.51.tgz#f8aa51ffa9996f1387f63686696d9b59713d2b60" - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^17.0.38": - version "17.0.38" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd" +"@types/react@*", "@types/react@16.9.56": + version "16.9.56" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.56.tgz#ea25847b53c5bec064933095fc366b1462e2adf0" dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" csstype "^3.0.2" "@types/responselike@*", "@types/responselike@^1.0.0": @@ -3362,9 +3106,28 @@ dependencies: "@types/node" "*" -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + dependencies: + "@types/express" "*" + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + dependencies: + "@types/node" "*" "@types/source-list-map@*": version "0.1.2" @@ -3374,13 +3137,13 @@ version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" -"@types/tapable@*", "@types/tapable@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" +"@types/tapable@^1", "@types/tapable@^1.0.5": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" "@types/testing-library__jest-dom@^5.9.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz#014162a5cee6571819d48e999980694e2f657c3c" + version "5.14.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz#ee6c7ffe9f8595882ee7bda8af33ae7b8789ef17" dependencies: "@types/jest" "*" @@ -3390,34 +3153,34 @@ dependencies: trezor-connect "*" -"@types/unist@^2.0.0", "@types/unist@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" "@types/web@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.51.tgz#46159de9f95a76b7d11686ca75a561c3bbca5c34" -"@types/webpack-env@^1.15.0": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.3.tgz#fb602cd4c2f0b7c0fb857e922075fdf677d25d84" +"@types/webpack-env@^1.16.0": + version "1.16.4" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.4.tgz#1f4969042bf76d7ef7b5914f59b3b60073f4e1f4" "@types/webpack-sources@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7" + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" -"@types/webpack@^4.41.8": - version "4.41.22" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.22.tgz#ff9758a17c6bd499e459b91e78539848c32d0731" +"@types/webpack@^4.41.26", "@types/webpack@^4.41.8": + version "4.41.32" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" dependencies: - "@types/anymatch" "*" "@types/node" "*" - "@types/tapable" "*" + "@types/tapable" "^1" "@types/webpack-sources" "*" + anymatch "^3.0.0" source-map "^0.6.0" "@types/which@^1.3.2": @@ -3430,15 +3193,15 @@ dependencies: "@types/node" "*" -"@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" +"@types/ws@^8.5.1": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" dependencies: - "@types/yargs-parser" "*" + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" "@types/yargs@^16.0.0": version "16.0.4" @@ -3447,18 +3210,18 @@ "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.1.tgz#870195d0f2146b36d11fc71131b75aba52354c69" +"@typescript-eslint/eslint-plugin@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz#022531a639640ff3faafaf251d1ce00a2ef000a1" dependencies: - "@typescript-eslint/scope-manager" "5.10.1" - "@typescript-eslint/type-utils" "5.10.1" - "@typescript-eslint/utils" "5.10.1" + "@typescript-eslint/scope-manager" "5.20.0" + "@typescript-eslint/type-utils" "5.20.0" + "@typescript-eslint/utils" "5.20.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -3466,105 +3229,185 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^4.0.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd" +"@typescript-eslint/parser@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.20.0.tgz#4991c4ee0344315c2afc2a62f156565f689c8d0b" dependencies: - "@typescript-eslint/scope-manager" "5.10.1" - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/typescript-estree" "5.10.1" + "@typescript-eslint/scope-manager" "5.20.0" + "@typescript-eslint/types" "5.20.0" + "@typescript-eslint/typescript-estree" "5.20.0" debug "^4.3.2" -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" +"@typescript-eslint/scope-manager@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz#79c7fb8598d2942e45b3c881ced95319818c7980" dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" + "@typescript-eslint/types" "5.20.0" + "@typescript-eslint/visitor-keys" "5.20.0" -"@typescript-eslint/scope-manager@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809" +"@typescript-eslint/scope-manager@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz#590865f244ebe6e46dc3e9cab7976fc2afa8af24" dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" + "@typescript-eslint/types" "5.22.0" + "@typescript-eslint/visitor-keys" "5.22.0" -"@typescript-eslint/type-utils@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.1.tgz#5e526c00142585e40ab1503e83f1ff608c367405" +"@typescript-eslint/type-utils@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz#151c21cbe9a378a34685735036e5ddfc00223be3" dependencies: - "@typescript-eslint/utils" "5.10.1" + "@typescript-eslint/utils" "5.20.0" debug "^4.3.2" tsutils "^3.21.0" -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" +"@typescript-eslint/types@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c" -"@typescript-eslint/types@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea" +"@typescript-eslint/types@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.22.0.tgz#50a4266e457a5d4c4b87ac31903b28b06b2c3ed0" -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" +"@typescript-eslint/typescript-estree@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz#ab73686ab18c8781bbf249c9459a55dc9417d6b0" dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" + "@typescript-eslint/types" "5.20.0" + "@typescript-eslint/visitor-keys" "5.20.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15" +"@typescript-eslint/typescript-estree@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz#e2116fd644c3e2fda7f4395158cddd38c0c6df97" dependencies: - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/visitor-keys" "5.10.1" + "@typescript-eslint/types" "5.22.0" + "@typescript-eslint/visitor-keys" "5.22.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.1.tgz#fa682a33af47080ba2c4368ee0ad2128213a1196" +"@typescript-eslint/utils@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.20.0.tgz#b8e959ed11eca1b2d5414e12417fd94cae3517a5" dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.10.1" - "@typescript-eslint/types" "5.10.1" - "@typescript-eslint/typescript-estree" "5.10.1" + "@typescript-eslint/scope-manager" "5.20.0" + "@typescript-eslint/types" "5.20.0" + "@typescript-eslint/typescript-estree" "5.20.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" +"@typescript-eslint/utils@^5.10.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.22.0.tgz#1f2c4897e2cf7e44443c848a13c60407861babd8" dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.22.0" + "@typescript-eslint/types" "5.22.0" + "@typescript-eslint/typescript-estree" "5.22.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz#70236b5c6b67fbaf8b2f58bf3414b76c1e826c2a" + dependencies: + "@typescript-eslint/types" "5.20.0" + eslint-visitor-keys "^3.0.0" -"@typescript-eslint/visitor-keys@5.10.1": - version "5.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b" +"@typescript-eslint/visitor-keys@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz#f49c0ce406944ffa331a1cfabeed451ea4d0909c" dependencies: - "@typescript-eslint/types" "5.10.1" + "@typescript-eslint/types" "5.22.0" eslint-visitor-keys "^3.0.0" +"@vue/compiler-core@3.2.33", "@vue/compiler-core@^3.2.23": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59" + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec" + dependencies: + "@vue/compiler-core" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/compiler-sfc@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d" + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.33" + "@vue/compiler-dom" "3.2.33" + "@vue/compiler-ssr" "3.2.33" + "@vue/reactivity-transform" "3.2.33" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71" + dependencies: + "@vue/compiler-dom" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/reactivity-transform@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699" + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.33" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673" + dependencies: + "@vue/shared" "3.2.33" + +"@vue/runtime-core@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2" + dependencies: + "@vue/reactivity" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/runtime-dom@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848" + dependencies: + "@vue/runtime-core" "3.2.33" + "@vue/shared" "3.2.33" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979" + dependencies: + "@vue/compiler-ssr" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/shared@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e" + "@wdio/config@5.18.4": version "5.18.4" resolved "https://registry.yarnpkg.com/@wdio/config/-/config-5.18.4.tgz#cabbac2f42bb1f8ac768f79d0e7671976d97d30e" @@ -3632,6 +3475,13 @@ dependencies: "@wdio/logger" "6.10.10" +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -3640,14 +3490,26 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" @@ -3668,10 +3530,31 @@ dependencies: "@webassemblyjs/ast" "1.9.0" +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" @@ -3681,22 +3564,51 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wasm-gen" "1.9.0" +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" dependencies: "@xtuc/long" "4.2.2" +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" @@ -3710,6 +3622,16 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wast-printer" "1.9.0" +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" @@ -3720,6 +3642,15 @@ "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" @@ -3729,6 +3660,17 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" @@ -3751,6 +3693,13 @@ "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" @@ -3759,6 +3708,38 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" + +"@webpack-cli/info@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" + +"@xarc/run@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@xarc/run/-/run-1.1.1.tgz#6c5a9458bfec85cf9df6ef7acb909948a6c0c210" + dependencies: + chalk "^4.1.0" + chalker "^1.2.0" + insync "^2.1.1" + jaro-winkler "^0.2.8" + lodash.foreach "^4.5.0" + nix-clap "^1.3.12" + optional-require "^1.0.2" + path-is-inside "^1.0.2" + read-pkg-up "^7.0.1" + require-at "^1.0.6" + string-array "^1.0.1" + unwrap-npm-cmd "^1.1.1" + xsh "^0.4.5" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -3772,19 +3753,19 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -3793,9 +3774,13 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" acorn-node@^1.3.0: version "1.8.2" @@ -3809,21 +3794,25 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - -acorn@6.4.2, acorn@^6.4.1, acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0, acorn@^8.2.4, acorn@^8.4.1: +acorn@^6.4.1: version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" add-px-to-style@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" +address@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" aes-js@3.1.2: version "3.1.2" @@ -3831,15 +3820,9 @@ aes-js@3.1.2: agent-base@5: version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - -agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - dependencies: - debug "4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" -agent-base@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" dependencies: @@ -3896,16 +3879,13 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + fast-deep-equal "^3.1.3" -ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" dependencies: @@ -3914,18 +3894,9 @@ ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0: - version "8.6.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.1.tgz#ae65764bf1edde8cd861281cda5057852364a295" - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.6.3: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.3, ajv@^8.8.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -3937,10 +3908,10 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" dependencies: - string-width "^3.0.0" + string-width "^4.1.0" ansi-colors@^1.0.1: version "1.1.0" @@ -3952,19 +3923,11 @@ ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-gray@^0.1.1: version "0.1.1" @@ -3972,25 +3935,17 @@ ansi-gray@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" +ansi-html-community@0.0.8, ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" ansi-regex@^5.0.1: version "5.0.1" @@ -4000,7 +3955,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" dependencies: @@ -4017,10 +3972,10 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" ansi-to-html@^0.6.11: - version "0.6.14" - resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8" + version "0.6.15" + resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.15.tgz#ac6ad4798a00f6aa045535d7f6a9cb9294eebea7" dependencies: - entities "^1.1.2" + entities "^2.0.0" ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" @@ -4037,20 +3992,13 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - app-root-dir@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" @@ -4097,11 +4045,11 @@ archiver@^3.0.0: zip-stream "^2.1.2" archiver@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.0.tgz#dd3e097624481741df626267564f7dd8640a45ba" + version "5.3.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" dependencies: archiver-utils "^2.1.0" - async "^3.2.0" + async "^3.2.3" buffer-crc32 "^0.2.1" readable-stream "^3.6.0" readdir-glob "^1.0.0" @@ -4112,6 +4060,13 @@ archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + are-we-there-yet@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" @@ -4120,22 +4075,22 @@ are-we-there-yet@^3.0.0: readable-stream "^3.6.0" are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" dependencies: delegates "^1.0.0" readable-stream "^2.0.6" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -4179,6 +4134,10 @@ array-each@^1.0.0, array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" +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" + array-find@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" @@ -4187,27 +4146,23 @@ array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + array-from@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" -array-includes@^3.0.3, array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" - -array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" +array-includes@^3.0.3, array-includes@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + es-abstract "^1.19.1" get-intrinsic "^1.1.1" - is-string "^1.0.5" + is-string "^1.0.7" array-initial@^1.0.0: version "1.1.0" @@ -4234,7 +4189,7 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" dependencies: @@ -4252,37 +4207,33 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" +array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" -array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" +array.prototype.map@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.4.tgz#0d97b640cfdd036c1b41cfe706a5e699aa0711f2" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.19.0" es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" + is-string "^1.0.7" arrify@^1.0.1: version "1.0.1" @@ -4331,8 +4282,8 @@ asn1.js@^5.2.0: safer-buffer "^2.1.0" asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" dependencies: safer-buffer "~2.1.0" @@ -4384,17 +4335,9 @@ ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" -ast-types@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - -ast-types@^0.13.2: - version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" +ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" dependencies: tslib "^2.0.1" @@ -4402,10 +4345,6 @@ ast-types@^0.7.0: version "0.7.8" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -4433,15 +4372,15 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" -async@^2.0.1, async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" +async@^2.6.3: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" dependencies: lodash "^4.17.14" -async@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" +async@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" asynckit@^0.4.0: version "0.4.0" @@ -4478,15 +4417,15 @@ autodll-webpack-plugin@0.4.2: webpack-merge "^4.1.0" webpack-sources "^1.0.1" -autoprefixer@^9.7.2, autoprefixer@^9.8.6: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" +autoprefixer@^9.8.6: + version "9.8.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" dependencies: browserslist "^4.12.0" caniuse-lite "^1.0.30001109" - colorette "^1.2.1" normalize-range "^0.1.2" num2fraction "^1.2.2" + picocolors "^0.2.1" postcss "^7.0.32" postcss-value-parser "^4.1.0" @@ -4499,12 +4438,12 @@ aws-sign2@~0.7.0: resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" -axe-core@^3.5.4: - version "3.5.5" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" +axe-core@^4.3.5: + version "4.4.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" axios@0.24.0: version "0.24.0" @@ -4512,92 +4451,58 @@ axios@0.24.0: dependencies: follow-redirects "^1.14.4" -axobject-query@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" +axios@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-helper-evaluate-path@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz#a62fa9c4e64ff7ea5cea9353174ef023a900a67c" - -babel-helper-flip-expressions@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz#3696736a128ac18bc25254b5f40a22ceb3c1d3fd" - -babel-helper-is-nodes-equiv@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684" - -babel-helper-is-void-0@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz#7d9c01b4561e7b95dbda0f6eee48f5b60e67313e" - -babel-helper-mark-eval-scopes@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz#d244a3bef9844872603ffb46e22ce8acdf551562" + follow-redirects "^1.14.7" -babel-helper-remove-or-void@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz#a4f03b40077a0ffe88e45d07010dee241ff5ae60" - -babel-helper-to-multiple-sequence-expressions@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" +babel-loader@^8.0.0: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - util.promisify "^1.0.0" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" babel-plugin-add-react-displayname@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + "@mdx-js/util" "1.6.22" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" dependencies: object.assign "^4.1.0" -babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: - version "10.0.33" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" +babel-plugin-emotion@^10.0.27: + version "10.2.2" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz#a1fe3503cff80abfd0bdda14abd2e8e57a79d17d" dependencies: "@babel/helper-module-imports" "^7.0.0" "@emotion/hash" "0.8.0" @@ -4610,7 +4515,13 @@ babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: find-root "^1.1.0" source-map "^0.5.7" -babel-plugin-istanbul@^6.0.0: +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + dependencies: + "@babel/helper-plugin-utils" "7.10.4" + +babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" dependencies: @@ -4620,16 +4531,16 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.7.0: +babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" dependencies: @@ -4637,164 +4548,58 @@ babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.7.0: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-minify-builtins@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz#31eb82ed1a0d0efdc31312f93b6e4741ce82c36b" - -babel-plugin-minify-constant-folding@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz#f84bc8dbf6a561e5e350ff95ae216b0ad5515b6e" - dependencies: - babel-helper-evaluate-path "^0.5.0" - -babel-plugin-minify-dead-code-elimination@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz#1a0c68e44be30de4976ca69ffc535e08be13683f" - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-mark-eval-scopes "^0.4.3" - babel-helper-remove-or-void "^0.4.3" - lodash "^4.17.11" - -babel-plugin-minify-flip-comparisons@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz#00ca870cb8f13b45c038b3c1ebc0f227293c965a" - dependencies: - babel-helper-is-void-0 "^0.4.3" - -babel-plugin-minify-guarded-expressions@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz#818960f64cc08aee9d6c75bec6da974c4d621135" - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-flip-expressions "^0.4.3" - -babel-plugin-minify-infinity@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz#dfb876a1b08a06576384ef3f92e653ba607b39ca" - -babel-plugin-minify-mangle-names@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz#bcddb507c91d2c99e138bd6b17a19c3c271e3fd3" - dependencies: - babel-helper-mark-eval-scopes "^0.4.3" - -babel-plugin-minify-numeric-literals@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz#8e4fd561c79f7801286ff60e8c5fd9deee93c0bc" - -babel-plugin-minify-replace@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz#d3e2c9946c9096c070efc96761ce288ec5c3f71c" - -babel-plugin-minify-simplify@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz#f21613c8b95af3450a2ca71502fdbd91793c8d6a" - dependencies: - babel-helper-evaluate-path "^0.5.0" - babel-helper-flip-expressions "^0.4.3" - babel-helper-is-nodes-equiv "^0.0.1" - babel-helper-to-multiple-sequence-expressions "^0.5.0" - -babel-plugin-minify-type-constructors@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz#1bc6f15b87f7ab1085d42b330b717657a2156500" +babel-plugin-macros@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" dependencies: - babel-helper-is-void-0 "^0.4.3" + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" babel-plugin-named-asset-import@^0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" +babel-plugin-polyfill-corejs3@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.1.5" + core-js-compat "^3.8.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" - core-js-compat "^3.18.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" -babel-plugin-react-docgen@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.0.tgz#4f425692f0ca06c73a1462274d370a3ac0637b46" +babel-plugin-react-docgen@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz#7cc8e2f94e8dc057a06e953162f0810e4e72257b" dependencies: + ast-types "^0.14.2" lodash "^4.17.15" react-docgen "^5.0.0" - recast "^0.14.7" - -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" - dependencies: - "@babel/runtime" "^7.0.0" - intl-messageformat-parser "^1.2.0" - mkdirp "^0.5.1" babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" -babel-plugin-transform-inline-consecutive-adds@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz#323d47a3ea63a83a7ac3c811ae8e6941faf2b0d1" - -babel-plugin-transform-member-expression-literals@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz#37039c9a0c3313a39495faac2ff3a6b5b9d038bf" - -babel-plugin-transform-merge-sibling-variables@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz#85b422fc3377b449c9d1cde44087203532401dae" - -babel-plugin-transform-minify-booleans@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz#acbb3e56a3555dd23928e4b582d285162dd2b198" - -babel-plugin-transform-property-literals@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz#98c1d21e255736573f93ece54459f6ce24985d39" - dependencies: - esutils "^2.0.2" - -babel-plugin-transform-regexp-constructors@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz#58b7775b63afcf33328fae9a5f88fbd4fb0b4965" - -babel-plugin-transform-remove-console@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" - -babel-plugin-transform-remove-debugger@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz#42b727631c97978e1eb2d199a7aec84a18339ef2" - -babel-plugin-transform-remove-undefined@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz#80208b31225766c630c97fa2d288952056ea22dd" - dependencies: - babel-helper-evaluate-path "^0.5.0" - -babel-plugin-transform-simplify-comparison-operators@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz#f62afe096cab0e1f68a2d753fdf283888471ceb9" - -babel-plugin-transform-undefined-to-void@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -4812,41 +4617,13 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" dependencies: - babel-plugin-jest-hoist "^26.6.2" + babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" -"babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz#25f5d0bce36ec818be80338d0e594106e21eaa9f" - dependencies: - babel-plugin-minify-builtins "^0.5.0" - babel-plugin-minify-constant-folding "^0.5.0" - babel-plugin-minify-dead-code-elimination "^0.5.1" - babel-plugin-minify-flip-comparisons "^0.4.3" - babel-plugin-minify-guarded-expressions "^0.4.4" - babel-plugin-minify-infinity "^0.4.3" - babel-plugin-minify-mangle-names "^0.5.0" - babel-plugin-minify-numeric-literals "^0.4.3" - babel-plugin-minify-replace "^0.5.0" - babel-plugin-minify-simplify "^0.5.1" - babel-plugin-minify-type-constructors "^0.4.3" - babel-plugin-transform-inline-consecutive-adds "^0.4.3" - babel-plugin-transform-member-expression-literals "^6.9.4" - babel-plugin-transform-merge-sibling-variables "^6.9.4" - babel-plugin-transform-minify-booleans "^6.9.4" - babel-plugin-transform-property-literals "^6.9.4" - babel-plugin-transform-regexp-constructors "^0.4.3" - babel-plugin-transform-remove-console "^6.9.4" - babel-plugin-transform-remove-debugger "^6.9.4" - babel-plugin-transform-remove-undefined "^0.5.0" - babel-plugin-transform-simplify-comparison-operators "^6.9.4" - babel-plugin-transform-undefined-to-void "^6.9.4" - lodash "^4.17.11" - babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -4877,21 +4654,15 @@ balanced-match@^0.4.2: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" -base-x@3.0.9: +base-x@3.0.9, base-x@^3.0.2, base-x@^3.0.5: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" dependencies: safe-buffer "^5.0.1" -base-x@^3.0.2, base-x@^3.0.5: - version "3.0.8" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" - dependencies: - safe-buffer "^5.0.1" - base16@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" @@ -4900,11 +4671,7 @@ base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" -base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -4924,6 +4691,10 @@ batch-processor@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + bchaddrjs@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/bchaddrjs/-/bchaddrjs-0.5.2.tgz#1f52b5077329774e7c82d4882964628106bb11a0" @@ -4951,6 +4722,12 @@ becke-ch--regex--s0-0-v1--base--pl--lib@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz#429ceebbfa5f7e936e78d73fbdc7da7162b20e20" +better-opn@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + dependencies: + open "^7.0.3" + big-integer@1.6.36: version "1.6.36" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" @@ -4963,11 +4740,11 @@ big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" -bignumber.js@9.0.1, bignumber.js@^9.0.0: +bignumber.js@9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" -bignumber.js@^9.0.1, bignumber.js@^9.0.2: +bignumber.js@^9.0.0, bignumber.js@^9.0.1, bignumber.js@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" @@ -4976,8 +4753,8 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" bindings@^1.3.0, bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" @@ -4985,9 +4762,9 @@ bindings@^1.3.0, bindings@^1.4.0, bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bip39@3.0.2, bip39@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" +bip39@3.0.4, bip39@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" dependencies: "@types/node" "11.11.6" create-hash "^1.1.0" @@ -5006,7 +4783,7 @@ bitcoin-ops@^1.3.0, bitcoin-ops@^1.4.1: bl@4.1.0, bl@^4.0.3, bl@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" dependencies: buffer "^5.5.0" inherits "^2.0.4" @@ -5039,10 +4816,14 @@ blake2b@2.1.3: blake2b-wasm "^1.1.0" nanoassert "^1.0.0" -blakejs@1.1.0, blakejs@^1.1.0: +blakejs@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + bluebird@^3.1.1, bluebird@^3.3.5, bluebird@^3.4.1, bluebird@^3.5.0, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -5053,34 +4834,45 @@ bn.js@^4.0.0, bn.js@^4.1.0: bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" -bn.js@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" +body-parser@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.0.12" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.12.tgz#28fbd4683f5f2e36feedb833e24ba661cac960c3" + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.4" -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" boolean@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f" + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" borc@2.1.2, borc@^2.1.1: version "2.1.2" @@ -5098,29 +4890,29 @@ bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" -boxen@^4.1.0, boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" +boxen@^5.0.0, boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" dependencies: ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" widest-line "^3.1.0" + wrap-ansi "^7.0.0" brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@2.3.2, braces@^2.3.1, braces@^2.3.2, braces@^3.0.1, braces@~3.0.2: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" - resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -5133,7 +4925,13 @@ braces@2.3.2, braces@^2.3.1, braces@^2.3.2, braces@^3.0.1, braces@~3.0.2: split-string "^3.0.2" to-regex "^3.0.1" -brfs@^1.3.0, brfs@^1.4.0: +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + dependencies: + fill-range "^7.0.1" + +brfs@^1.3.0: version "1.6.1" resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" dependencies: @@ -5153,7 +4951,7 @@ brfs@^2.0.0: brorand@^1.0.1, brorand@^1.0.5, brorand@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" brotli@^1.2.0: version "1.3.2" @@ -5208,10 +5006,10 @@ browserify-optional@^1.0.0, browserify-optional@^1.0.1: browser-resolve "^1.8.1" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: @@ -5234,32 +5032,14 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" - -browserslist@^4.12.0, browserslist@^4.8.5: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -browserslist@^4.17.5, browserslist@^4.18.1: - version "4.18.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" dependencies: - caniuse-lite "^1.0.30001280" - electron-to-chromium "^1.3.896" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.1" + node-releases "^2.0.3" picocolors "^1.0.0" bs58@4.0.1, bs58@^4.0.0, bs58@^4.0.1: @@ -5310,8 +5090,8 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" buffer-json@^2.0.0: version "2.0.0" @@ -5321,13 +5101,20 @@ buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" -buffer@5.6.0, buffer@^5.1.0, buffer@^5.5.0: +buffer@5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + buffer@^4.3.0: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -5336,20 +5123,13 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.1: +buffer@^5.1.0, buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - bufferutil@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7" @@ -5366,9 +5146,30 @@ bytebuffer@^5.0.1: dependencies: long "~3" -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + +c8@^7.6.0: + version "7.11.2" + resolved "https://registry.yarnpkg.com/c8/-/c8-7.11.2.tgz#2f2103e39079899041e612999a16b31d7ea6d463" + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@istanbuljs/schema" "^0.1.3" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" + test-exclude "^6.0.0" + v8-to-istanbul "^9.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.9" cacache@^12.0.2: version "12.0.4" @@ -5390,30 +5191,7 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -cacache@^15.2.0: +cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" dependencies: @@ -5477,7 +5255,7 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -cacheable-request@^7.0.1, cacheable-request@^7.0.2: +cacheable-request@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" dependencies: @@ -5500,39 +5278,20 @@ call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" +camel-case@^4.1.1, camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" + pascal-case "^3.1.2" + tslib "^2.0.3" -camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" +camelcase-css@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" camelcase-keys@^6.2.2: version "6.2.2" @@ -5542,6 +5301,10 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" +camelcase@6.3.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -5550,31 +5313,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" - -can-use-dom@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" - -caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30001109: - version "1.0.30001144" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001144.tgz#bca0fffde12f97e1127a351fec3bfc1971aa3b3d" - -caniuse-lite@^1.0.30001219: - version "1.0.30001242" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001242.tgz#04201627abcd60dc89211f22cbe2347306cda46b" - -caniuse-lite@^1.0.30001280: - version "1.0.30001283" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz#8573685bdae4d733ef18f78d44ba0ca5fe9e896b" - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - dependencies: - rsvp "^4.8.4" +caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001332: + version "1.0.30001335" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" cardano-crypto.js@5.3.6-rc.6: version "5.3.6-rc.6" @@ -5608,9 +5349,9 @@ cardano-launcher@0.20220119.0: mkdirp "1.0.4" tsee "1.3.2" -case-sensitive-paths-webpack-plugin@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" +case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" caseless@~0.12.0: version "0.12.0" @@ -5622,7 +5363,7 @@ cashaddrjs@0.4.4: dependencies: big-integer "1.6.36" -cbor-web@^7.0.6: +cbor-web@7.0.6, cbor-web@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cbor-web/-/cbor-web-7.0.6.tgz#6e23a0c58db4c38e485e395de511b9e2f628961c" @@ -5643,8 +5384,8 @@ cbor@^4.3.0: nofilter "^1.0.3" ccount@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" chai@4.3.4: version "4.3.4" @@ -5657,24 +5398,16 @@ chai@4.3.4: pathval "^1.1.1" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" +chalk@4, chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -5689,6 +5422,14 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -5696,14 +5437,16 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalker@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/chalker/-/chalker-1.2.0.tgz#a4c9f71dc733a0605051fe8e89b6066ef7b6eb73" + dependencies: + chalk "^4.0.0" + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" -character-entities-html4@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" - character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -5716,6 +5459,10 @@ character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" +charcodes@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -5728,7 +5475,7 @@ check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.0, chokidar@^3.5.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" dependencies: @@ -5742,7 +5489,7 @@ check-error@^1.0.2: optionalDependencies: fsevents "~2.3.2" -chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: +chokidar@^2.0.0, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" dependencies: @@ -5760,35 +5507,7 @@ chokidar@^2.0.0, chokidar@^2.0.4, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.2.2, chokidar@^3.4.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chokidar@^3.4.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -5814,10 +5533,8 @@ chrome-launcher@^0.13.1: rimraf "^3.0.2" chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - dependencies: - tslib "^1.9.0" + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" chromium-pickle-js@^0.2.0: version "0.2.0" @@ -5827,6 +5544,10 @@ ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -5834,9 +5555,9 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" class-utils@^0.3.5: version "0.3.6" @@ -5847,13 +5568,23 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.2.6, classnames@2.x, classnames@^2.2.1, classnames@^2.2.5, classnames@^2.2.6: +classnames@2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" -clean-css@4.2.x, clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.5, classnames@^2.2.6: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + dependencies: + source-map "~0.6.0" + +clean-css@^5.2.2: + version "5.3.0" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.0.tgz#ad3d8238d5f3549e83d5f87205189494bc7cbb59" dependencies: source-map "~0.6.0" @@ -5861,33 +5592,21 @@ clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" -cli-boxes@^2.2.0: +cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" dependencies: restore-cursor "^3.1.0" -cli-source-preview@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-source-preview/-/cli-source-preview-1.1.0.tgz#05303ab1279a9093ead1a3837b3ee231f3006544" - dependencies: - chalk "^1.1.3" - cli-spinners@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" -cli-table3@0.5.1, cli-table3@^0.5.1: +cli-table3@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" dependencies: @@ -5896,22 +5615,18 @@ cli-table3@0.5.1, cli-table3@^0.5.1: optionalDependencies: colors "^1.1.2" -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" +cli-table3@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" -clipboard@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -5920,14 +5635,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -5948,15 +5655,13 @@ clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" clone-regexp@^2.1.0: version "2.2.0" @@ -5990,7 +5695,7 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -clsx@^1.0.4: +clsx@^1.0.4, clsx@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" @@ -6002,14 +5707,6 @@ co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - 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" @@ -6057,17 +5754,17 @@ color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" -color-support@^1.1.3: +color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" colors@^1.1.2, colors@^1.4.0: version "1.4.0" @@ -6083,9 +5780,9 @@ comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" +commander@8, commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" commander@^2.15.0, commander@^2.19.0, commander@^2.20.0: version "2.20.3" @@ -6095,7 +5792,7 @@ commander@^3.0.0, commander@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" -commander@^4.0.1, commander@^4.1.1: +commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -6103,9 +5800,17 @@ commander@^5.0.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" commondir@^1.0.1: version "1.0.1" @@ -6123,6 +5828,13 @@ component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" +compress-brotli@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/compress-brotli/-/compress-brotli-1.3.6.tgz#64bd6f21f4f3e9841dbac392f4c29218caf5e9d9" + dependencies: + "@types/json-buffer" "~3.0.0" + json-buffer "~3.0.1" + compress-commons@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" @@ -6141,6 +5853,28 @@ compress-commons@^4.1.0: normalize-path "^3.0.0" readable-stream "^3.6.0" +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -6154,23 +5888,22 @@ concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@ readable-stream "^2.2.2" typedarray "^0.0.6" -concurrently@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.3.0.tgz#7500de6410d043c912b2da27de3202cb489b1e7b" +concurrently@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.1.0.tgz#477b49b8cfc630bb491f9b02e9ed7fb7bff02942" dependencies: - chalk "^2.4.2" - date-fns "^2.0.1" - lodash "^4.17.15" - read-pkg "^4.0.1" - rxjs "^6.5.2" + chalk "^4.1.0" + date-fns "^2.16.1" + lodash "^4.17.21" + rxjs "^6.6.3" spawn-command "^0.0.2-1" - supports-color "^6.1.0" + supports-color "^8.1.0" tree-kill "^1.2.2" - yargs "^13.3.0" + yargs "^16.2.0" conf@^10.0.3: - version "10.1.1" - resolved "https://registry.yarnpkg.com/conf/-/conf-10.1.1.tgz#ff08046d5aeeee0eaff55d57f5b4319193c3dfda" + version "10.1.2" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.1.2.tgz#50132158f388756fa9dea3048f6b47935315c14e" dependencies: ajv "^8.6.3" ajv-formats "^2.1.1" @@ -6184,8 +5917,8 @@ conf@^10.0.3: semver "^7.3.5" config-chain@^1.1.11: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -6201,9 +5934,13 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" console-browserify@^1.1.0: version "1.2.0" @@ -6217,23 +5954,17 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^1.6.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" dependencies: @@ -6243,9 +5974,9 @@ cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" copy-concurrently@^1.0.0: version "1.0.5" @@ -6263,67 +5994,44 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + version "2.0.5" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2" dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" + each-props "^1.3.2" + is-plain-object "^5.0.0" -copy-to-clipboard@^3, copy-to-clipboard@^3.0.8: +copy-to-clipboard@^3, copy-to-clipboard@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.18.0, core-js-compat@^3.19.1: - version "3.19.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.3.tgz#de75e5821c5ce924a0a1e7b7d5c2cb973ff388aa" +core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.8.1: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" dependencies: - browserslist "^4.18.1" + browserslist "^4.20.3" semver "7.0.0" -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - -core-js-pure@^3.0.0, core-js-pure@^3.0.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - -core-js-pure@^3.19.0: - version "3.19.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.19.1.tgz#edffc1fc7634000a55ba05e95b3f0fe9587a5aa4" +core-js-pure@^3.20.2, core-js-pure@^3.8.1, core-js-pure@^3.8.2: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" -core-js@^2.4.0, core-js@^2.5.7, core-js@^2.6.10: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" +core-js@^2.4.0, core-js@^2.6.10: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" -core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" +core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2: + version "3.22.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531" -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -corejs-upgrade-webpack-plugin@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz#503293bf1fdcb104918eb40d0294e4776ad6923a" - dependencies: - resolve-from "^5.0.0" - webpack "^4.38.0" - -cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" cosmiconfig@^6.0.0: version "6.0.0" @@ -6335,20 +6043,40 @@ cosmiconfig@^6.0.0: yaml "^1.7.2" cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" dependencies: import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" yaml "^1.10.0" -crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cpy@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" crc32-stream@^3.0.1: version "3.0.1" @@ -6398,17 +6126,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@0.3.0, create-react-context@^0.3.0: +create-react-context@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" dependencies: gud "^1.0.0" warning "^4.0.3" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - cross-env@7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9" @@ -6421,12 +6145,6 @@ cross-env@^6.0.3: dependencies: cross-spawn "^7.0.0" -cross-fetch@^3.0.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" - dependencies: - node-fetch "2.6.1" - cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" @@ -6441,16 +6159,6 @@ cross-spawn-windows-exe@^1.1.0, cross-spawn-windows-exe@^1.2.0: is-wsl "^2.2.0" which "^2.0.2" -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" - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -6459,7 +6167,7 @@ cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" dependencies: @@ -6467,7 +6175,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: @@ -6485,24 +6193,22 @@ crypto-browserify@^3.11.0: crypto-random-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - -css-loader@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.0.1.tgz#2e51a15449ab3f7195b7e1bc00a407460016a3b3" - dependencies: - icss-utils "^4.0.0" - loader-utils "^1.0.2" - lodash "^4.17.11" - postcss "^7.0.6" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.2" - postcss-modules-scope "^2.0.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + +css-loader@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.2.0.tgz#9663d9443841de957a3cb9bcea2eda65b3377071" + dependencies: + icss-utils "^5.1.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + semver "^7.3.5" -css-loader@^3.0.0: +css-loader@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" dependencies: @@ -6520,6 +6226,21 @@ css-loader@^3.0.0: schema-utils "^2.7.0" semver "^6.3.0" +css-loader@^5.0.1: + version "5.2.7" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" + dependencies: + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^3.0.0" + semver "^7.3.5" + css-modules-loader-core@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" @@ -6531,27 +6252,15 @@ css-modules-loader-core@^1.1.0: postcss-modules-scope "1.1.0" postcss-modules-values "1.3.0" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" dependencies: boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" css-selector-tokenizer@^0.7.0: version "0.7.3" @@ -6564,31 +6273,13 @@ css-shorthand-properties@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz#1c808e63553c283f289f2dd56fcee8f3337bd935" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - css-value@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - -css-what@^3.2.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.1.tgz#81cb70b609e4b1351b1e54cbc90fd9c54af86e2e" +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" css.escape@^1.5.1: version "1.5.1" @@ -6606,12 +6297,6 @@ cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - dependencies: - css-tree "1.0.0-alpha.39" - cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -6626,13 +6311,13 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^2.5.7: - version "2.6.13" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f" +csstype@^2.5.7, csstype@^2.6.8: + version "2.6.20" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" csstype@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" csv-stringify@5.5.1: version "5.5.1" @@ -6707,6 +6392,12 @@ cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -6771,13 +6462,13 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -damerau-levenshtein@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" +damerau-levenshtein@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" -dash-ast@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" +dash-ast@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-2.0.1.tgz#8d0fd2e601c59bf874cc22877ee7dd889f54dee8" dashdash@^1.12.0: version "1.14.1" @@ -6793,9 +6484,15 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@^2.0.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" +date-fns@^2.16.1: + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + +date-time@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e" + dependencies: + time-zone "^1.0.0" debounce-fn@^4.0.0: version "4.0.0" @@ -6809,9 +6506,9 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" dependencies: ms "2.1.2" @@ -6821,30 +6518,18 @@ debug@4.1.0: dependencies: ms "^2.1.1" -debug@^3.0.0, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - dependencies: - ms "^2.1.1" - -debug@^3.2.7: +debug@^3.0.0, debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" dependencies: ms "^2.1.1" -debug@^4.3.1, debug@^4.3.2: +debug@^4.3.2: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" dependencies: ms "2.1.2" -debug@^4.3.3: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - dependencies: - ms "2.1.2" - decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -6886,13 +6571,17 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" dependencies: type-detect "^4.0.0" -deep-equal@^1.0.0, deep-equal@^1.1.1: +deep-equal@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" dependencies: @@ -6908,12 +6597,12 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" deep-object-diff@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a" + version "1.1.7" + resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.7.tgz#348b3246f426427dd633eaa50e1ed1fc2eafc7e4" deepmerge@^4.0.0, deepmerge@^4.2.2: version "4.2.2" @@ -6925,6 +6614,12 @@ default-compare@^1.0.0: dependencies: kind-of "^5.0.2" +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + dependencies: + execa "^5.0.0" + default-resolution@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" @@ -6943,13 +6638,11 @@ defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" -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" - dependencies: - object-keys "^1.0.12" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" -define-properties@^1.1.4: +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" dependencies: @@ -7003,10 +6696,6 @@ delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -7015,6 +6704,10 @@ delimit-stream@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -7026,9 +6719,15 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + +detab@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + dependencies: + repeat-string "^1.5.4" detect-file@^1.0.0: version "1.0.0" @@ -7042,20 +6741,9 @@ detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" -detect-node-es@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.0.0.tgz#c0318b9e539a5256ca780dd9575c9345af05b8ed" - detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - dependencies: - address "^1.0.1" - debug "^2.6.0" + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" detect-port@^1.3.0: version "1.3.0" @@ -7090,13 +6778,9 @@ dfa@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/dfa/-/dfa-1.2.0.tgz#96ac3204e2d29c49ea5b57af8d92c2ae12790657" -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" diff@^4.0.1, diff@^4.0.2: version "4.0.2" @@ -7110,11 +6794,10 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" dependencies: - arrify "^1.0.1" path-type "^3.0.0" dir-glob@^3.0.1: @@ -7123,6 +6806,16 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^5.2.2: + version "5.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -7136,14 +6829,14 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.10" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" + version "0.5.14" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56" dom-align@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" + version "1.12.3" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.3.tgz#a36d02531dae0eefa2abb0c4db6595250526f103" -dom-converter@^0.2: +dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" dependencies: @@ -7164,8 +6857,8 @@ dom-helpers@^3.4.0: "@babel/runtime" "^7.1.2" dom-helpers@^5.0.1, dom-helpers@^5.1.3: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" dependencies: "@babel/runtime" "^7.8.7" csstype "^3.0.2" @@ -7178,11 +6871,11 @@ dom-serializer@0: entities "^2.0.0" dom-serializer@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58" + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" dependencies: domelementtype "^2.0.1" - domhandler "^3.0.0" + domhandler "^4.2.0" entities "^2.0.0" dom-walk@^0.1.0: @@ -7197,9 +6890,9 @@ domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" -domelementtype@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" domexception@^2.0.1: version "2.0.1" @@ -7213,40 +6906,26 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^3.0.0, domhandler@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - dependencies: - domelementtype "^2.0.1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" +domhandler@^4.0, domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.2.2, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" dependencies: - dom-serializer "0" - domelementtype "1" + domelementtype "^2.2.0" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" dependencies: dom-serializer "0" domelementtype "1" -domutils@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" dependencies: dom-serializer "^1.0.1" - domelementtype "^2.0.1" - domhandler "^3.3.0" - -dot-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + domelementtype "^2.2.0" + domhandler "^4.2.0" dot-case@^3.0.4: version "3.0.4" @@ -7267,29 +6946,23 @@ dot-prop@^6.0.1: dependencies: is-obj "^2.0.0" -dotenv-defaults@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" - dependencies: - dotenv "^6.2.0" - dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" -dotenv-webpack@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" - dependencies: - dotenv-defaults "^1.0.2" - -dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - dotenv@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + +downshift@^6.0.15: + version "6.1.7" + resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.7.tgz#fdb4c4e4f1d11587985cd76e21e8b4b3fa72e44c" + dependencies: + "@babel/runtime" "^7.14.8" + compute-scroll-into-view "^1.0.17" + prop-types "^15.7.2" + react-is "^17.0.2" + tslib "^2.3.0" duplexer2@~0.1.4: version "0.1.4" @@ -7301,10 +6974,6 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -7321,7 +6990,7 @@ duration@^0.2.1: d "1" es5-ext "~0.10.46" -each-props@^1.3.0: +each-props@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" dependencies: @@ -7346,17 +7015,6 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -ejs@^2.7.4: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - -electron-chromedriver@16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-16.0.0.tgz#defa85bce05945580628ac3b1b8a7e93383525bc" - dependencies: - "@electron/get" "^1.12.4" - extract-zip "^2.0.0" - electron-chromedriver@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-12.0.0.tgz#55bdc451b938b384642d613a05eadacb1fe476ee" @@ -7382,6 +7040,10 @@ electron-devtools-installer@3.2.0: tslib "^2.1.0" unzip-crx-3 "^0.2.0" +electron-is-dev@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz#2e5cea0a1b3ccf1c86f577cee77363ef55deb05e" + electron-log-daedalus@2.2.21: version "2.2.21" resolved "https://registry.yarnpkg.com/electron-log-daedalus/-/electron-log-daedalus-2.2.21.tgz#7afc009036306d3466d68decd971d7e1a2f2a5b1" @@ -7391,8 +7053,8 @@ electron-mock-ipc@0.3.12: resolved "https://registry.yarnpkg.com/electron-mock-ipc/-/electron-mock-ipc-0.3.12.tgz#f9a7dca9a23a95dbe5a62f27cca12768d4cb88c0" electron-notarize@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.1.1.tgz#3ed274b36158c1beb1dbef14e7faf5927e028629" + version "1.2.1" + resolved "https://registry.yarnpkg.com/electron-notarize/-/electron-notarize-1.2.1.tgz#347c18eca8e29dddadadee511b870c13d4008baf" dependencies: debug "^4.1.1" fs-extra "^9.0.1" @@ -7450,6 +7112,16 @@ electron-rebuild@3.2.7: tar "^6.0.5" yargs "^17.0.1" +electron-reloader@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/electron-reloader/-/electron-reloader-1.2.1.tgz#c9e2f2887f3960488cb2b6bf9e633791d3395b0c" + dependencies: + chalk "^4.1.0" + chokidar "^3.5.0" + date-time "^3.1.0" + electron-is-dev "^1.2.0" + find-up "^5.0.0" + electron-store@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-8.0.1.tgz#9b598c1d2edeffebee9d8c1cd957ad368c528925" @@ -7457,17 +7129,9 @@ electron-store@8.0.1: conf "^10.0.3" type-fest "^1.0.2" -electron-to-chromium@^1.3.247: - version "1.3.577" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.577.tgz#9885f3f72c6e3367010b461ff6f2d9624a929720" - -electron-to-chromium@^1.3.723: - version "1.3.768" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.768.tgz#bbe47394f0073c947168589b7d19388518a7a9a9" - -electron-to-chromium@^1.3.896: - version "1.4.4" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.4.tgz#57311918524c1a26878c330537f967804d43788a" +electron-to-chromium@^1.4.118: + version "1.4.131" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.131.tgz#ca42d22eac0fe545860fbc636a6f4a7190ba70a9" electron@13.6.3: version "13.6.3" @@ -7477,15 +7141,15 @@ electron@13.6.3: "@types/node" "^14.6.2" extract-zip "^1.0.3" -element-resize-detector@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.1.tgz#b0305194447a4863155e58f13323a0aef30851d1" +element-resize-detector@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1" dependencies: batch-processor "1.0.0" elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" dependencies: bn.js "^4.11.9" brorand "^1.1.0" @@ -7495,33 +7159,25 @@ elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" -emoji-regex@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" -emotion-theming@^10.0.19: - version "10.0.27" - resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.0.27.tgz#1887baaec15199862c89b1b984b79806f2b9ab10" +emotion-theming@^10.0.27: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.3.0.tgz#7f84d7099581d7ffe808aab5cd870e30843db72a" dependencies: "@babel/runtime" "^7.5.5" "@emotion/weak-memoize" "0.2.5" @@ -7543,6 +7199,14 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" +endent@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88" + dependencies: + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.5" + enhanced-resolve@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" @@ -7551,43 +7215,48 @@ enhanced-resolve@^0.9.1: memory-fs "^0.2.0" tapable "^0.1.8" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" tapable "^1.0.0" -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" +enhanced-resolve@^5.9.2: + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" dependencies: - ansi-colors "^4.1.1" + graceful-fs "^4.2.4" + tapable "^2.2.0" -entities@^1.1.1, entities@^1.1.2: +entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" entities@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - -env-paths@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" -env-paths@^2.2.1: +env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" dependencies: prr "~1.0.1" @@ -7598,66 +7267,12 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + version "2.0.7" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" dependencies: stackframe "^1.1.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.7" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-abstract@^1.19.0, es-abstract@^1.19.5, es-abstract@^1.20.0: +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0: version "1.20.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" dependencies: @@ -7690,17 +7305,28 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.2" + get-intrinsic "^1.1.0" has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" is-string "^1.0.5" isarray "^2.0.5" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -7710,22 +7336,22 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.46: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + version "0.10.61" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" es5-shim@^4.5.13: - version "4.5.14" - resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.5.14.tgz#90009e1019d0ea327447cb523deaff8fe45697ef" + version "4.6.6" + resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.6.tgz#1e0e95bedfdcd933a2d4931a3ac6c79164f18de6" es6-error@4.1.1, es6-error@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" -es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: @@ -7759,8 +7385,8 @@ es6-set@^0.1.5, es6-set@~0.1.5: event-emitter "~0.3.5" es6-shim@^0.35.5: - version "0.35.5" - resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" + version "0.35.6" + resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.6.tgz#d10578301a83af2de58b9eadb7c2c9945f7388a0" es6-symbol@3.1.1: version "3.1.1" @@ -7769,20 +7395,13 @@ es6-symbol@3.1.1: d "1" es5-ext "~0.10.14" -es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: +es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" dependencies: d "^1.0.1" ext "^1.1.2" -es6-templates@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - dependencies: - recast "~0.11.12" - through "~2.3.6" - es6-weak-map@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" @@ -7804,7 +7423,7 @@ escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -7859,32 +7478,32 @@ escodegen@~1.9.0: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.2.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" dependencies: - confusing-browser-globals "^1.0.9" - object.assign "^4.1.0" - object.entries "^1.1.2" + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" -eslint-config-airbnb@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.0.tgz#8a82168713effce8fc08e10896a63f1235499dcd" +eslint-config-airbnb@19.0.4: + version "19.0.4" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" dependencies: - eslint-config-airbnb-base "^14.2.0" - object.assign "^4.1.0" - object.entries "^1.1.2" + eslint-config-airbnb-base "^15.0.0" + object.assign "^4.1.2" + object.entries "^1.1.5" -eslint-config-prettier@6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz#9eb2bccff727db1c52104f0b49e87ea46605a0d2" - dependencies: - get-stdin "^6.0.0" +eslint-config-prettier@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" -eslint-formatter-pretty@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-formatter-pretty/-/eslint-formatter-pretty-4.0.0.tgz#dc15f3bf4fb51b7ba5fbedb77f57ba8841140ce2" +eslint-formatter-pretty@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz#7a6877c14ffe2672066c853587d89603e97c7708" dependencies: + "@types/eslint" "^7.2.13" ansi-escapes "^4.2.1" chalk "^4.1.0" eslint-rule-docs "^1.1.5" @@ -7893,16 +7512,16 @@ eslint-formatter-pretty@4.0.0: string-width "^4.2.0" supports-hyperlinks "^2.0.0" -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" dependencies: - debug "^2.6.9" - resolve "^1.13.1" + debug "^3.2.7" + resolve "^1.20.0" -eslint-import-resolver-webpack@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.1.tgz#6d2fb928091daf2da46efa1e568055555b2de902" +eslint-import-resolver-webpack@0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz#fc813df0d08b9265cc7072d22393bda5198bdc1e" dependencies: array-find "^1.0.0" debug "^3.2.7" @@ -7910,88 +7529,97 @@ eslint-import-resolver-webpack@0.13.1: find-root "^1.1.0" has "^1.0.3" interpret "^1.4.0" - is-core-module "^2.4.0" - is-regex "^1.1.3" + is-core-module "^2.7.0" + is-regex "^1.1.4" lodash "^4.17.21" resolve "^1.20.0" semver "^5.7.1" -eslint-module-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" dependencies: debug "^3.2.7" - pkg-dir "^2.0.0" + find-up "^2.1.0" -eslint-plugin-import@2.23.3: - version "2.23.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.3.tgz#8a1b073289fff03c4af0f04b6df956b7d463e191" +eslint-plugin-import@2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.1" - find-up "^2.0.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" has "^1.0.3" - is-core-module "^2.4.0" - minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.9.0" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" -eslint-plugin-jest@24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz#fa4b614dbd46a98b652d830377971f097bda9262" +eslint-plugin-jest@26.1.4: + version "26.1.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.1.4.tgz#8e3410093ff4439d0c3a371add5bf9e05623a57a" dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" + "@typescript-eslint/utils" "^5.10.0" -eslint-plugin-jsx-a11y@6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660" +eslint-plugin-jsx-a11y@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" dependencies: - "@babel/runtime" "^7.10.2" + "@babel/runtime" "^7.16.3" aria-query "^4.2.2" - array-includes "^3.1.1" + array-includes "^3.1.4" ast-types-flow "^0.0.7" - axe-core "^3.5.4" - axobject-query "^2.1.2" - damerau-levenshtein "^1.0.6" - emoji-regex "^9.0.0" + axe-core "^4.3.5" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.7" + emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^2.4.1" + jsx-ast-utils "^3.2.1" language-tags "^1.0.5" + minimatch "^3.0.4" -eslint-plugin-promise@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" +eslint-plugin-promise@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" -eslint-plugin-react-hooks@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.1.2.tgz#2eb53731d11c95826ef7a7272303eabb5c9a271e" +eslint-plugin-react-hooks@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz#71c39e528764c848d8253e1aa2c7024ed505f6c4" -eslint-plugin-react@7.21.2: - version "7.21.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.2.tgz#3bd5d2c4c36d5a0428d0d6dda301ac9a84d681b2" +eslint-plugin-react@7.29.4: + version "7.29.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" dependencies: - array-includes "^3.1.1" - array.prototype.flatmap "^1.2.3" + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.4.1" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.17.0" - string.prototype.matchall "^4.0.2" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" eslint-rule-docs@^1.1.5: - version "1.1.210" - resolved "https://registry.yarnpkg.com/eslint-rule-docs/-/eslint-rule-docs-1.1.210.tgz#2619817224052364dc8bd68b0b0c7b8389e85e18" + version "1.1.231" + resolved "https://registry.yarnpkg.com/eslint-rule-docs/-/eslint-rule-docs-1.1.231.tgz#648b978bc5a1bb740be5f28d07470f0926b9cdf1" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" eslint-scope@^4.0.3: version "4.0.3" @@ -8000,18 +7628,12 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - dependencies: - eslint-visitor-keys "^1.1.0" + estraverse "^5.2.0" eslint-utils@^3.0.0: version "3.0.0" @@ -8019,57 +7641,51 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: +eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" -eslint-visitor-keys@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" -eslint@7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" +eslint@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.13.0.tgz#6fcea43b6811e655410f5626cfcf328016badcd7" dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" + "@eslint/eslintrc" "^1.2.1" + "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.3.0" - esquery "^1.2.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" + lodash.merge "^4.6.2" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" + regexpp "^3.2.0" + strip-ansi "^6.0.1" strip-json-comments "^3.1.0" - table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -8077,19 +7693,19 @@ esm@3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" +espree@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" dependencies: - acorn "^7.4.0" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" + acorn "^8.7.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^3.3.0" -esprima@^3.1.3, esprima@~3.1.0: +esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -8097,9 +7713,9 @@ esprima@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" -esquery@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" dependencies: estraverse "^5.1.0" @@ -8113,9 +7729,9 @@ estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" estraverse@~1.5.0: version "1.5.1" @@ -8125,6 +7741,18 @@ estree-is-function@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/estree-is-function/-/estree-is-function-1.0.0.tgz#c0adc29806d7f18a74db7df0f3b2666702e37ad2" +estree-to-babel@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/estree-to-babel/-/estree-to-babel-3.2.1.tgz#82e78315275c3ca74475fdc8ac1a5103c8a75bf5" + dependencies: + "@babel/traverse" "^7.1.6" + "@babel/types" "^7.2.0" + c8 "^7.6.0" + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -8152,20 +7780,10 @@ eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" -events@^3.0.0, events@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - -events@^3.3.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - dependencies: - original "^1.0.0" - evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -8173,25 +7791,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - 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" - execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -8203,6 +7805,20 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + execall@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" @@ -8213,10 +7829,6 @@ exenv@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -8243,57 +7855,56 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" -express@^4.17.0: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" +express@^4.17.1, express@^4.17.3: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.20.0" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.10.3" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" dependencies: - type "^2.0.0" + type "^2.5.0" extend-shallow@^2.0.1: version "2.0.1" @@ -8357,8 +7968,8 @@ extsprintf@1.3.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" falafel@^2.1.0: version "2.2.4" @@ -8382,11 +7993,11 @@ 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" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" -fast-glob@^2.0.2: +fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" dependencies: @@ -8397,18 +8008,7 @@ fast-glob@^2.0.2: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.1.1, fast-glob@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-glob@^3.2.9: +fast-glob@^3.2.4, fast-glob@^3.2.7, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" dependencies: @@ -8418,6 +8018,10 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -8434,39 +8038,29 @@ fast-password-entropy@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fast-password-entropy/-/fast-password-entropy-1.1.1.tgz#47ba9933095fd5a32fb184915fc8e76ee19cf429" -fast-sass-loader@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-sass-loader/-/fast-sass-loader-2.0.1.tgz#9200d744b3ccb0330c12f771a71ad71196de18de" - dependencies: - async "^2.0.1" - cli-source-preview "^1.0.0" - co "^4.6.0" - fs-extra "3.x" - loader-utils "^1.1.0" - fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" -fastparse@^1.1.1, fastparse@^1.1.2: +fastparse@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" dependencies: reusify "^1.0.4" -fault@^1.0.0, fault@^1.0.2: +fault@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" dependencies: format "^0.2.0" -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" dependencies: websocket-driver ">=0.5.1" @@ -8486,17 +8080,17 @@ fbjs-css-vars@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" -fbjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" +fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" dependencies: - cross-fetch "^3.0.4" + cross-fetch "^3.1.5" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.18" + ua-parser-js "^0.7.30" fd-slicer@~1.1.0: version "1.1.0" @@ -8508,12 +8102,6 @@ figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -8526,19 +8114,18 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.2.0.tgz#5fb124d2369d7075d70a9a5abecd12e60a95215e" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" dependencies: - loader-utils "^1.2.3" - schema-utils "^2.0.0" + flat-cache "^3.0.4" -file-loader@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" file-system-cache@^1.0.5: version "1.0.5" @@ -8564,10 +8151,6 @@ filenamify@^4.1.0: strip-outer "^1.0.1" trim-repeated "^1.0.0" -filesize@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -8577,22 +8160,28 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + dependencies: + to-regex-range "^5.0.1" + filter-invalid-dom-props@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/filter-invalid-dom-props/-/filter-invalid-dom-props-2.1.0.tgz#7690bb72e9213a09e8429c07f3aea21468f43ee5" dependencies: html-attributes "1.1.0" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^1.0.0: @@ -8603,7 +8192,7 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" -find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" dependencies: @@ -8612,8 +8201,8 @@ find-cache-dir@^2.1.0: pkg-dir "^3.0.0" find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" dependencies: commondir "^1.0.1" make-dir "^3.0.2" @@ -8631,12 +8220,6 @@ find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - dependencies: - locate-path "^3.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -8650,6 +8233,12 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -8657,6 +8246,13 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-versions@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" @@ -8713,10 +8309,21 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + flora-colossus@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/flora-colossus/-/flora-colossus-1.0.1.tgz#aba198425a8185341e64f9d2a6a96fd9a3cbdb93" @@ -8732,19 +8339,15 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: readable-stream "^2.3.6" flux@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.1.tgz#7843502b02841d4aaa534af0b373034a1f75ee5c" + version "4.0.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.3.tgz#573b504a24982c4768fdfb59d8d2ea5637d72ee7" dependencies: fbemitter "^3.0.0" - fbjs "^3.0.0" - -focus-lock@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.7.0.tgz#b2bfb0ca7beacc8710a1ff74275fe0dc60a1d88a" + fbjs "^3.0.1" -follow-redirects@^1.14.4: - version "1.14.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" +follow-redirects@^1.0.0, follow-redirects@^1.14.4, follow-redirects@^1.14.7: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" fontkit@^1.0.0: version "1.8.1" @@ -8768,20 +8371,10 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -for-own@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -8792,23 +8385,47 @@ foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" +fork-ts-checker-webpack-plugin@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" dependencies: - babel-code-frame "^6.22.0" + "@babel/code-frame" "^7.5.5" chalk "^2.4.1" - chokidar "^2.0.4" micromatch "^3.1.10" minimatch "^3.0.4" semver "^5.6.0" tapable "^1.0.0" worker-rpc "^0.1.0" +fork-ts-checker-webpack-plugin@^6.0.4: + version "6.5.2" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + form-data@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" @@ -8837,9 +8454,9 @@ format@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" fragment-cache@^0.2.1: version "0.2.1" @@ -8862,13 +8479,13 @@ fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" -fs-extra@3.x: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" +fs-extra@10, fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" fs-extra@9.0.1: version "9.0.1" @@ -8889,14 +8506,6 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" @@ -8913,7 +8522,7 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.0.1, fs-extra@^8.1.0: +fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" dependencies: @@ -8943,9 +8552,9 @@ fs-mkdirp-stream@^1.0.0: graceful-fs "^4.1.11" through2 "^2.0.3" -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -8967,27 +8576,15 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" -function.prototype.name@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - functions-have-names "^1.2.0" - -function.prototype.name@^1.1.5: +function.prototype.name@^1.1.0, function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" dependencies: @@ -9000,10 +8597,6 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -functions-have-names@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" - functions-have-names@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -9012,7 +8605,7 @@ fuse.js@6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-6.5.3.tgz#7446c0acbc4ab0ab36fa602e97499bdb69452b93" -fuse.js@^3.4.6: +fuse.js@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" @@ -9024,6 +8617,20 @@ galactus@^0.2.1: flora-colossus "^1.0.0" fs-extra "^4.0.0" +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -9056,11 +8663,7 @@ generic-names@^2.0.1: dependencies: loader-utils "^1.1.0" -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - -gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -9105,15 +8708,11 @@ get-port@5.1.1, get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - get-stdin@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" dependencies: @@ -9125,6 +8724,10 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -9150,19 +8753,6 @@ github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -9170,18 +8760,24 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - dependencies: - is-glob "^4.0.1" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" dependencies: is-glob "^4.0.1" +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + dependencies: + is-glob "^4.0.3" + +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" + dependencies: + "@types/glob" "*" + glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -9201,6 +8797,10 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + glob-watcher@^5.0.3: version "5.0.5" resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" @@ -9213,7 +8813,7 @@ glob-watcher@^5.0.3: normalize-path "^3.0.0" object.defaults "^1.1.0" -glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" dependencies: @@ -9224,29 +8824,33 @@ glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glo once "^1.3.0" path-is-absolute "^1.0.0" -global-agent@^2.0.2: - version "2.1.12" - resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.12.tgz#e4ae3812b731a9e81cbf825f9377ef450a8e4195" +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" dependencies: boolean "^3.0.1" - core-js "^3.6.5" es6-error "^4.1.1" matcher "^3.0.0" roarr "^2.15.3" semver "^7.3.2" serialize-error "^7.0.1" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - dependencies: - ini "^1.3.5" - -global-modules@2.0.0, global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" dependencies: - global-prefix "^3.0.0" + ini "2.0.0" global-modules@^1.0.0: version "1.0.0" @@ -9256,6 +8860,12 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -9283,7 +8893,7 @@ global-tunnel-ng@^2.7.1: npm-conf "^1.1.3" tunnel "^0.0.6" -global@^4.3.2, global@^4.4.0: +global@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" dependencies: @@ -9291,56 +8901,22 @@ global@^4.3.2, global@^4.4.0: process "^0.11.10" globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - dependencies: - type-fest "^0.8.1" - -globalthis@^1.0.0, globalthis@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.1.tgz#40116f5d9c071f9e8fb0037654df1ab3a83b7ef9" - dependencies: - define-properties "^1.1.3" - -globby@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" -globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" +globals@^13.6.0, globals@^13.9.0: + version "13.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" + type-fest "^0.20.2" -globby@^11.0.4: +globalthis@^1.0.0, globalthis@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" + dependencies: + define-properties "^1.1.3" + +globby@^11.0.1, globby@^11.0.2, globby@^11.0.4: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" dependencies: @@ -9361,6 +8937,19 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" @@ -9377,29 +8966,7 @@ gonzales-pe@^4.3.0: dependencies: minimist "^1.2.5" -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - dependencies: - delegate "^3.1.2" - -got@^11.0.2, got@^11.8.0: - version "11.8.2" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" - dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.1" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -got@^11.7.0: +got@^11.0.2, got@^11.7.0, got@^11.8.0: version "11.8.3" resolved "https://registry.yarnpkg.com/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770" dependencies: @@ -9431,11 +8998,11 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@4.2.4, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: +graceful-fs@4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" -graceful-fs@^4.2.6: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" @@ -9443,10 +9010,6 @@ grapheme-splitter@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - gud@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" @@ -9500,16 +9063,13 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" -handlebars@4.7.7: +handlebars@4.7.7, handlebars@^4.7.7: version "4.7.7" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" dependencies: minimist "^1.2.5" neo-async "^2.6.0" @@ -9543,11 +9103,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - -has-bigints@^1.0.2: +has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -9563,21 +9119,19 @@ has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + dependencies: + is-glob "^3.0.0" + has-property-descriptors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" dependencies: get-intrinsic "^1.1.1" -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - -has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - -has-symbols@^1.0.3: +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -9643,20 +9197,69 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + dependencies: + "@types/unist" "^2.0.3" + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" + +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + dependencies: + "@types/parse5" "^5.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" + hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" -hastscript@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" +hast-util-raw@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" + dependencies: + "@types/hast" "^2.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" + unist-util-position "^3.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" + dependencies: + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" dependencies: + "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.0.0" property-information "^5.0.0" space-separated-tokens "^1.0.0" -he@1.2.x, he@^1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -9664,13 +9267,9 @@ highlight-words@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/highlight-words/-/highlight-words-1.2.0.tgz#af52bc7fb767d0306012948f0bdd8b4185d73de6" -highlight.js@^10.1.1, highlight.js@~10.2.0: - version "10.2.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.2.1.tgz#09784fe2e95612abbefd510948945d4fe6fa9668" - -highlight.js@~9.13.0: - version "9.13.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" +highlight.js@^10.1.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" history@4.10.1, history@^4.9.0: version "4.10.1" @@ -9683,28 +9282,32 @@ history@4.10.1, history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" +history@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.0.0.tgz#0cabbb6c4bbf835addb874f8259f6d25101efd08" + dependencies: + "@babel/runtime" "^7.7.6" + +history@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + dependencies: + "@babel/runtime" "^7.7.6" + hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -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" - hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" dependencies: react-is "^16.7.0" -home-or-tmp@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -9712,8 +9315,17 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" html-attributes@1.1.0: version "1.1.0" @@ -9725,25 +9337,22 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" -html-loader@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" +html-loader@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-2.1.2.tgz#17eb111441e863a9308071ed876b4ba861f143df" dependencies: - es6-templates "^0.2.3" - fastparse "^1.1.1" - html-minifier "^3.5.8" - loader-utils "^1.1.0" - object-assign "^4.1.1" + html-minifier-terser "^5.1.1" + parse5 "^6.0.1" -html-minifier-terser@^5.0.1: +html-minifier-terser@^5.0.1, html-minifier-terser@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" dependencies: @@ -9755,45 +9364,67 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" -html-minifier@^3.5.8: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961" html-to-react@^1.3.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.4.tgz#dd5edb76ff28ab7fc34faabd91446bece292dc38" + version "1.4.8" + resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.8.tgz#1a78fe0ad50fe30b7e62f4e90fdff2f2c043eb1a" dependencies: - domhandler "^3.3.0" - htmlparser2 "^5.0" + domhandler "^4.0" + htmlparser2 "^7.0" lodash.camelcase "^4.3.0" - ramda "^0.27.1" + ramda "^0.28.0" -html-webpack-plugin@^4.0.0-beta.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + +html-webpack-plugin@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz#d016cd9594be5c243bb5c12287af43babbe1c094" + dependencies: + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^3.0.4" + tapable "^2.0.0" + +html-webpack-plugin@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" dependencies: "@types/tapable" "^1.0.5" "@types/webpack" "^4.41.8" html-minifier-terser "^5.0.1" loader-utils "^1.2.3" - lodash "^4.17.15" + lodash "^4.17.20" pretty-error "^2.1.1" tapable "^1.1.3" util.promisify "1.0.0" -htmlparser2@^3.10.0, htmlparser2@^3.3.0: +html-webpack-plugin@^5.0.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + dependencies: + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^3.10.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" dependencies: @@ -9804,42 +9435,54 @@ htmlparser2@^3.10.0, htmlparser2@^3.3.0: inherits "^2.0.1" readable-stream "^3.1.1" -htmlparser2@^5.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.0.tgz#78454bc782599291d9fefd7b48ef2058dc62eb89" +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" dependencies: domelementtype "^2.0.1" - domhandler "^3.3.0" - domutils "^2.4.2" + domhandler "^4.0.0" + domutils "^2.5.2" entities "^2.0.0" +htmlparser2@^7.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.2" + domutils "^2.8.0" + entities "^3.0.1" + http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" dependencies: depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + version "0.5.6" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" http-proxy-agent@^4.0.1: version "4.0.1" @@ -9849,6 +9492,24 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -9864,7 +9525,7 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-browserify@^1.0.0: +https-browserify@1.0.0, https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -9876,8 +9537,8 @@ https-proxy-agent@^4.0.0: debug "4" https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" dependencies: agent-base "6" debug "4" @@ -9886,6 +9547,10 @@ human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + humanize-duration@3.23.1: version "3.23.1" resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.23.1.tgz#59cb8d01287479c1aa7cd5b1efc260d799bef89b" @@ -9937,17 +9602,17 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - -ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -9959,19 +9624,11 @@ ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - -ignore@^4.0.6: +ignore@^4.0.3: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" -ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - -ignore@^5.2.0: +ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -9979,36 +9636,17 @@ immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" -immer@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - 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" - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - dependencies: - resolve-from "^3.0.0" - import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -10017,16 +9655,9 @@ import-lazy@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - import-local@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -10039,10 +9670,6 @@ indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -10066,29 +9693,19 @@ inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@1.3.8, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" -inquirer@7.3.3, inquirer@^7.0.0: +inquirer@7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" dependencies: @@ -10106,18 +9723,14 @@ inquirer@7.3.3, inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" +insync@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/insync/-/insync-2.1.1.tgz#22e26c61121303c06f51d35a3ccf6d8fc1e914c4" + int64-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-1.0.1.tgz#c78d841b444cadf036cd04f8683696c740f15dca" -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - dependencies: - es-abstract "^1.17.0-next.1" - has "^1.0.3" - side-channel "^1.0.2" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -10126,11 +9739,11 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.0.0, interpret@^1.4.0: +interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" -interpret@^2.0.0: +interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -10142,10 +9755,6 @@ intl-messageformat-parser@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz#b43d45a97468cadbe44331d74bb1e8dea44fc075" -intl-messageformat-parser@^1.2.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz#0eb14c5618333be4c95c409457b66c8c33ddcc01" - intl-messageformat@^2.0.0, intl-messageformat@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-2.2.0.tgz#345bcd46de630b7683330c2e52177ff5eab484fc" @@ -10158,7 +9767,7 @@ intl-relativeformat@^2.1.0: dependencies: intl-messageformat "^2.0.0" -invariant@^2.1.1, invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: +invariant@^2.1.1, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -10180,9 +9789,13 @@ ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + irregular-plurals@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.2.0.tgz#b19c490a0723798db51b235d7e39add44dab0822" + version "3.3.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz#67d0715d4361a60d9fd9ee80af3881c631a31ee2" is-absolute@^1.0.0: version "1.0.0" @@ -10203,14 +9816,10 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-alphabetical@^1.0.0: +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" -is-alphanumeric@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -10218,17 +9827,22 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" +is-arguments@^1.0.4, is-arguments@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + dependencies: + has-bigints "^1.0.1" is-binary-path@^1.0.0: version "1.0.1" @@ -10243,12 +9857,13 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" dependencies: call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-buffer@^1.0.2, is-buffer@^1.1.4, is-buffer@^1.1.5: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -10256,27 +9871,19 @@ is-buffer@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" -is-callable@^1.1.3, is-callable@^1.2.4: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" -is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - -is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" dependencies: ci-info "^2.0.0" -is-core-module@^2.2.0, is-core-module@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" +is-core-module@^2.2.0, is-core-module@^2.7.0, is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" dependencies: has "^1.0.3" @@ -10293,10 +9900,12 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + dependencies: + has-tostringtag "^1.0.0" -is-decimal@^1.0.0, is-decimal@^1.0.2: +is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" @@ -10316,15 +9925,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" -is-dom@^1.0.9: +is-dom@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-dom/-/is-dom-1.1.0.tgz#af1fced292742443bb59ca3f76ab5e80907b4e8a" dependencies: @@ -10341,10 +9946,6 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -10363,7 +9964,7 @@ is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" -is-function@^1.0.1: +is-function@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" @@ -10381,25 +9982,13 @@ is-generator@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" -is-glob@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: +is-glob@^3.0.0, is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" dependencies: @@ -10409,12 +9998,12 @@ is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" is-interactive@^1.0.0: version "1.0.0" @@ -10424,9 +10013,9 @@ is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" -is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" +is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" is-nan@^1.2.1: version "1.3.2" @@ -10439,25 +10028,19 @@ is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + dependencies: + has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" @@ -10469,13 +10052,17 @@ is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" is-path-cwd@^1.0.0: version "1.0.0" @@ -10497,11 +10084,11 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-path-inside@^3.0.1, is-path-inside@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -10509,34 +10096,25 @@ is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" -is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - dependencies: - has-symbols "^1.0.1" - -is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.2, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" dependencies: @@ -10553,13 +10131,9 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - -is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" +is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" is-shared-array-buffer@^1.0.2: version "1.0.2" @@ -10567,33 +10141,21 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - -is-string@^1.0.4, is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - -is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" -is-string@^1.0.7: +is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-typed-array@^1.1.3, is-typed-array@^1.1.9: version "1.1.9" @@ -10723,18 +10285,9 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -10758,400 +10311,429 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.5.tgz#a2580107e71279ea6d661ddede929ffc6d693384" +istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" iterate-iterator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" + version "1.0.2" + resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" -iterate-value@^1.0.0: +iterate-value@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" dependencies: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" +jaro-winkler@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/jaro-winkler/-/jaro-winkler-0.2.8.tgz#6727e0d0b7091e2436f9356de9bf88fad23e534a" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" prompts "^2.0.1" - yargs "^15.4.1" + yargs "^16.2.0" -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" -jest-css-modules-transform@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/jest-css-modules-transform/-/jest-css-modules-transform-4.3.0.tgz#e3599b6b9326230f9c127953aca99f91d9286ab1" +jest-css-modules-transform@4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/jest-css-modules-transform/-/jest-css-modules-transform-4.4.2.tgz#a090b0e5beb346c9e719588f34ccdb8ac4e5591f" dependencies: - camelcase "^6.2.0" + camelcase "6.3.0" postcss "^7.0.30 || ^8.0.0" postcss-nested "^4.2.1 || ^5.0.0" -jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-diff@^27.0.0: - version "27.3.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.3.1.tgz#d2775fea15411f5f5aeda2a5e02c2f36440f6d55" +jest-diff@^27.0.0, jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" dependencies: chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.3.1" - pretty-format "^27.3.1" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" dependencies: detect-newline "^3.0.0" -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" -jest-environment-jsdom@26.6.2, jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" +jest-environment-jsdom@27.5.1, jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" -jest-get-type@^27.3.1: - version "27.3.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.3.1.tgz#a8a2b0a12b50169773099eee60a0e6dd11423eff" - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: - fsevents "^2.1.2" + fsevents "^2.3.2" -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.6.2" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" dependencies: chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" slash "^3.0.0" - stack-utils "^2.0.2" + stack-utils "^2.0.3" -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/node" "*" jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" - cjs-module-lexer "^0.6.0" + cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - exit "^0.1.2" + execa "^5.0.0" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.4.1" -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" dependencies: "@types/node" "*" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" natural-compare "^1.4.0" - pretty-format "^26.6.2" + pretty-format "^27.5.1" semver "^7.3.2" -jest-svg-transformer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jest-svg-transformer/-/jest-svg-transformer-1.0.0.tgz#e38884ca4cd8b2295cdfa2a0b24667920c3a8a6d" - -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" + "@jest/types" "^27.5.1" + camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^26.3.0" + jest-get-type "^27.5.1" leven "^3.1.0" - pretty-format "^26.6.2" + pretty-format "^27.5.1" -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.6.2" + jest-util "^27.5.1" string-length "^4.0.1" -jest-worker@^25.4.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" +jest-worker@^26.5.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" dependencies: + "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" +jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" dependencies: "@types/node" "*" merge-stream "^2.0.0" - supports-color "^7.0.0" + supports-color "^8.0.0" -jest@26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" +jest@27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" dependencies: - "@jest/core" "^26.6.3" + "@jest/core" "^27.5.1" import-local "^3.0.2" - jest-cli "^26.6.3" + jest-cli "^27.5.1" + +joi@^17.6.0: + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" js-base64@^2.3.2: version "2.6.4" @@ -11161,26 +10743,32 @@ js-chain-libs-node@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/js-chain-libs-node/-/js-chain-libs-node-0.3.0.tgz#bb23f6ba3c724ced923a1bb0fe82f16b06fcf72b" +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@^16.4.0: +jsdom@^16.6.0: version "16.7.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" dependencies: @@ -11230,11 +10818,11 @@ json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" -json-buffer@3.0.1: +json-buffer@3.0.1, json-buffer@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -11254,9 +10842,9 @@ json-schema-typed@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -11284,21 +10872,15 @@ json-text-sequence@^0.1, json-text-sequence@~0.1.0: dependencies: delimit-stream "0.1.0" -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" dependencies: minimist "^1.2.0" -json5@^2.1.1, json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - dependencies: - minimist "^1.2.5" +json5@^2.1.2, json5@^2.1.3, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" jsonfile@^2.1.0: version "2.4.0" @@ -11306,12 +10888,6 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -11327,10 +10903,10 @@ jsonfile@^5.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -11343,24 +10919,24 @@ jsonschema@1.2.2: resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.2.tgz#83ab9c63d65bf4d596f91d81195e78772f6452bc" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" -jsx-ast-utils@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" + array-includes "^3.1.4" + object.assign "^4.1.2" jszip@^3.1.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.6.0.tgz#839b72812e3f97819cc13ac4134ffced95dd6af9" + version "3.9.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.9.1.tgz#784e87f328450d1e8151003a9c67733e2b901051" dependencies: lie "~3.3.0" pako "~1.0.2" @@ -11372,12 +10948,12 @@ junk@^3.1.0: resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + version "1.1.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" just-extend@^4.0.2: - version "4.1.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.1.tgz#158f1fdb01f128c411dc8b286a7b4837b3545282" + version "4.2.1" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" keyv@^3.0.0: version "3.1.0" @@ -11386,17 +10962,12 @@ keyv@^3.0.0: json-buffer "3.0.0" keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" + version "4.2.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.2.2.tgz#4b6f602c0228ef4d8214c03c520bef469ed6b768" dependencies: + compress-brotli "^1.3.6" json-buffer "3.0.1" -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - dependencies: - is-buffer "^1.0.2" - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -11442,8 +11013,8 @@ knuth-shuffle-seeded@^1.0.6: seed-random "~2.2.0" language-subtag-registry@~0.3.2: - version "0.3.20" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz#a00a37121894f224f763268e431c55556b0c0755" + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" language-tags@^1.0.5: version "1.0.5" @@ -11458,20 +11029,12 @@ last-run@^1.1.0: default-resolution "^2.0.0" es6-weak-map "^2.0.1" -latest-version@^5.0.0: +latest-version@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" dependencies: package-json "^6.3.0" -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - lazy-universal-dotenv@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" @@ -11483,8 +11046,8 @@ lazy-universal-dotenv@^3.0.1: dotenv-expand "^5.1.0" lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" dependencies: readable-stream "^2.0.5" @@ -11504,12 +11067,6 @@ leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - dependencies: - leven "^3.1.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -11544,11 +11101,11 @@ liftoff@^3.1.0: resolve "^1.1.7" lighthouse-logger@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.2.0.tgz#b76d56935e9c137e86a04741f6bb9b2776e886ca" + version "1.3.0" + resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz#ba6303e739307c4eee18f08249524e7dafd510db" dependencies: - debug "^2.6.8" - marky "^1.2.0" + debug "^2.6.9" + marky "^1.2.2" linebreak@^0.3.0: version "0.3.0" @@ -11559,8 +11116,8 @@ linebreak@^0.3.0: unicode-trie "^0.3.0" lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" load-json-file@^1.0.0: version "1.1.0" @@ -11581,28 +11138,15 @@ 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" - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^2.3.1, loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" dependencies: @@ -11611,8 +11155,8 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4 json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -11638,9 +11182,15 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash-es@4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + dependencies: + p-locate "^5.0.0" + +lodash-es@4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" lodash._reinterpolate@^3.0.0: version "3.0.0" @@ -11650,10 +11200,6 @@ lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" -lodash.clone@^4.3.2: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" - lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -11682,6 +11228,10 @@ lodash.flow@^3.3.0: version "3.5.0" resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" +lodash.foreach@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + lodash.get@^4.0.0, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -11694,17 +11244,13 @@ lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.merge@^4.6.1: +lodash.merge@^4.6.1, lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" -lodash.some@^4.2.2: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" lodash.template@^4.5.0: version "4.5.0" @@ -11723,29 +11269,27 @@ lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" +lodash.uniq@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + lodash.zip@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" -lodash@4.17.21, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.20, lodash@~4.17.4: +lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0, lodash@~4.17.20, lodash@~4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - dependencies: - chalk "^4.0.0" - -log-symbols@^4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" dependencies: @@ -11757,8 +11301,8 @@ loglevel-plugin-prefix@^0.8.4: resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" loglevel@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" long@^4.0.0: version "4.0.0" @@ -11768,7 +11312,7 @@ long@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" -longest-streak@^2.0.1: +longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" @@ -11779,19 +11323,20 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 js-tokens "^3.0.0 || ^4.0.0" lottie-web@^5.1.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/lottie-web/-/lottie-web-5.7.3.tgz#dbe542270665be5dd5b32deae19e27de6e77728c" + version "5.9.4" + resolved "https://registry.yarnpkg.com/lottie-web/-/lottie-web-5.9.4.tgz#c01478ee5dd47f916cb4bb79040c11d427872d57" + +loud-rejection@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.2" lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - dependencies: - tslib "^1.10.0" - lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -11807,18 +11352,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" lowlight@^1.14.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.15.0.tgz#51a8888852493cbbe4a7f39919b237a1d502c18c" + version "1.20.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" dependencies: fault "^1.0.0" - highlight.js "~10.2.0" - -lowlight@~1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.11.0.tgz#1304d83005126d4e8b1dc0f07981e9b689ec2efc" - dependencies: - fault "^1.0.2" - highlight.js "~9.13.0" + highlight.js "~10.7.0" lru-cache@^4.0.1: version "4.1.5" @@ -11863,6 +11401,12 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -11876,16 +11420,12 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" dependencies: semver "^6.0.0" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" @@ -11919,11 +11459,11 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" dependencies: - tmpl "1.0.x" + p-defer "^1.0.0" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" @@ -11934,8 +11474,8 @@ map-obj@^1.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" map-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" map-or-similar@^1.5.0: version "1.5.0" @@ -11951,33 +11491,24 @@ markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" -markdown-loader@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/markdown-loader/-/markdown-loader-5.1.0.tgz#4efd5006b1514ca966141c661a47e542a9836e6e" +markdown-loader@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/markdown-loader/-/markdown-loader-7.0.0.tgz#012cdd3a1f724585869c70168f4a5c4cb84bedbf" dependencies: loader-utils "^1.2.3" - marked "^0.7.0" - -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" - dependencies: - repeat-string "^1.0.0" + marked "^4.0.12" -markdown-to-jsx@^6.11.4: - version "6.11.4" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz#b4528b1ab668aef7fe61c1535c27e837819392c5" - dependencies: - prop-types "^15.6.2" - unquote "^1.1.0" +markdown-to-jsx@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz#a5f22102fb12241c8cea1ca6a4050bb76b23a25d" -marked@0.8.2, marked@^0.7.0: - version "0.8.2" - resolved "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" +marked@^4.0.12: + version "4.0.15" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.15.tgz#0216b7c9d5fcf6ac5042343c41d81a8b1b5e1b4a" -marky@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.2.tgz#4456765b4de307a13d263a69b0c79bf226e68323" +marky@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f" matchdep@^2.0.0: version "2.0.0" @@ -11994,13 +11525,9 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" -material-colors@^1.2.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" - math-expression-evaluator@^1.2.14: - version "1.2.22" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" + version "1.3.14" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz#0ebeaccf65fea0f6f5a626f88df41814e5fcd9bf" mathml-tag-names@^2.1.3: version "2.1.3" @@ -12020,27 +11547,80 @@ mdast-add-list-metadata@1.0.1: dependencies: unist-util-visit-parents "1.1.2" -mdast-util-compact@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" + dependencies: + unist-util-remove "^2.0.0" + +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" dependencies: unist-util-visit "^2.0.0" -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + +mdast-util-to-markdown@^0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + +memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + dependencies: + fs-monkey "1.0.3" + memoize-one@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + version "5.2.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" memoizerific@^1.11.3: version "1.11.3" @@ -12081,14 +11661,6 @@ meow@^7.1.1: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-deep@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -12115,6 +11687,13 @@ microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -12133,19 +11712,12 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" miller-rabin@^4.0.0: version "4.0.1" @@ -12158,29 +11730,35 @@ mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" -mime-types@2.1.27, mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + +mime-types@2.1.27: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" dependencies: mime-db "1.44.0" +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + dependencies: + mime-db "1.52.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" mime@^2.4.4: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" -mimic-fn@^3.0.0: +mimic-fn@^3.0.0, mimic-fn@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" @@ -12207,29 +11785,17 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" mini-create-react-context@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz#df60501c83151db69e28eac0ef08b4002efab040" + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" dependencies: - "@babel/runtime" "^7.5.5" + "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.12.0.tgz#ddeb74fd6304ca9f99c1db74acc7d5b507705454" - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -mini-css-extract-plugin@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" +mini-css-extract-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.3.0.tgz#87515f185533752944d753ac7216fc876779dafe" dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" + schema-utils "^3.1.0" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -12239,9 +11805,9 @@ minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" dependencies: brace-expansion "^1.1.7" @@ -12253,9 +11819,9 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.5, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" +minimist@1.2.6, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" minipass-collect@^1.0.2: version "1.0.2" @@ -12291,13 +11857,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - dependencies: - yallist "^4.0.0" - -minipass@^3.1.0, minipass@^3.1.3: +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.1.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" dependencies: @@ -12332,27 +11892,20 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" -mkdirp@0.5.5, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: +mkdirp@1.0.4, mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" dependencies: minimist "^1.2.5" -mkdirp@1.0.4, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - mobx-react-devtools@6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/mobx-react-devtools/-/mobx-react-devtools-6.1.1.tgz#a462b944085cf11ff96fc937d12bf31dab4c8984" @@ -12363,7 +11916,7 @@ mobx-react-form@2.0.8: dependencies: lodash "^4.17.11" -mobx-react-lite@2.2.2, mobx-react-lite@>=2.2.0: +mobx-react-lite@2.2.2, mobx-react-lite@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz#87c217dc72b4e47b22493daf155daf3759f868a6" @@ -12371,11 +11924,11 @@ mobx-react-router@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/mobx-react-router/-/mobx-react-router-4.1.0.tgz#de014848207d8aa32f6a4e67ed861bd2cb6516e5" -mobx-react@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.3.0.tgz#7d11799f988bbdadc49e725081993b18baa20329" +mobx-react@6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.3.1.tgz#204f9756e42e19d91cb6598837063b7e7de87c52" dependencies: - mobx-react-lite ">=2.2.0" + mobx-react-lite "^2.2.0" mobx@5.15.7: version "5.15.7" @@ -12397,8 +11950,8 @@ move-concurrently@^1.0.1: run-queue "^1.0.3" mri@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" ms@2.0.0: version "2.0.0" @@ -12408,14 +11961,21 @@ ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" -ms@^2.0.0: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" +multicast-dns@^7.2.4: + version "7.2.4" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + multimatch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -12430,10 +11990,6 @@ mute-stdout@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -12446,11 +12002,7 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - -nan@^2.13.2, nan@^2.15.0: +nan@^2.12.1, nan@^2.13.2, nan@^2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" @@ -12462,13 +12014,9 @@ nanoid@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" -nanoid@^3.1.22: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - -nanoid@^3.1.30: - version "3.1.30" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" +nanoid@^3.1.23, nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" nanomatch@^1.2.9: version "1.2.13" @@ -12494,11 +12042,7 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - -negotiator@^0.6.2: +negotiator@0.6.3, negotiator@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -12506,17 +12050,17 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" nise@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/nise/-/nise-4.0.4.tgz#d73dea3e5731e6561992b8f570be9e363c4512dd" + version "4.1.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" dependencies: "@sinonjs/commons" "^1.7.0" "@sinonjs/fake-timers" "^6.0.0" @@ -12524,19 +12068,18 @@ nise@^4.0.4: just-extend "^4.0.2" path-to-regexp "^1.7.0" +nix-clap@^1.3.12: + version "1.3.13" + resolved "https://registry.yarnpkg.com/nix-clap/-/nix-clap-1.3.13.tgz#679bc2eedaf2f693b418b53d237f19b9ed8dddae" + dependencies: + strip-ansi "^4.0.0" + no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" dependencies: lower-case "^1.1.1" -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -12558,7 +12101,7 @@ node-abi@^3.0.0: node-addon-api@3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" node-addon-api@^3.0.0, node-addon-api@^3.0.2, node-addon-api@^3.1.0: version "3.2.1" @@ -12581,19 +12124,25 @@ node-downloader-helper@1.0.18: resolved "https://registry.yarnpkg.com/node-downloader-helper/-/node-downloader-helper-1.0.18.tgz#13b63324575df51c92142e6fa668596c6ab51d92" node-emoji@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" dependencies: - lodash.toarray "^4.4.0" + lodash "^4.17.21" -node-fetch@2.6.1, node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" +node-fetch@2.6.7, node-fetch@^2.6.1: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + dependencies: + whatwg-url "^5.0.0" node-forge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.0.0.tgz#a025e3beeeb90d9cee37dae34d25b968ec3e6f15" +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + node-gyp-build@^4.2.1, node-gyp-build@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" @@ -12629,7 +12178,7 @@ node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" -node-libs-browser@2.2.1, node-libs-browser@^2.2.1: +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" dependencies: @@ -12657,47 +12206,24 @@ node-libs-browser@2.2.1, node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.29: - version "1.1.61" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.61.tgz#707b0fca9ce4e11783612ba4a2fcba09047af16e" - -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - -nodemon@2.0.4: +node-releases@^2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + +nodemon@2.0.15: + version "2.0.15" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.15.tgz#504516ce3b43d9dc9a955ccd9ec57550a31a8d4e" dependencies: - chokidar "^3.2.2" - debug "^3.2.6" + chokidar "^3.5.2" + debug "^3.2.7" ignore-by-default "^1.0.1" minimatch "^3.0.4" - pstree.remy "^1.1.7" + pstree.remy "^1.1.8" semver "^5.7.1" supports-color "^5.5.0" touch "^3.1.0" - undefsafe "^2.0.2" - update-notifier "^4.0.0" + undefsafe "^2.0.5" + update-notifier "^5.1.0" nofilter@^1.0.3: version "1.0.4" @@ -12746,18 +12272,9 @@ normalize-selector@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" normalize-url@^6.0.1: version "6.1.0" @@ -12776,19 +12293,13 @@ npm-conf@^1.1.3: config-chain "^1.1.11" pify "^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" - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" dependencies: path-key "^3.0.0" -npmlog@4.1.2, npmlog@^4.0.1, npmlog@^4.1.2: +npmlog@4.1.2, npmlog@^4.0.1: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -12797,6 +12308,15 @@ npmlog@4.1.2, npmlog@^4.0.1, npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + npmlog@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" @@ -12806,11 +12326,11 @@ npmlog@^6.0.0: gauge "^4.0.3" set-blocking "^2.0.0" -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" +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" dependencies: - boolbase "~1.0.0" + boolbase "^1.0.0" num2fraction@^1.2.2: version "1.2.2" @@ -12840,15 +12360,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.1.tgz#28a661153bad7e470e4b01479ef1cb91ce511191" -object-inspect@^1.6.0, object-inspect@^1.8.0: +object-inspect@^1.6.0: version "1.8.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" @@ -12857,13 +12373,13 @@ object-inspect@~1.4.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" object-is@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" -object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: +object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -12873,16 +12389,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.assign@^4.1.2: +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" dependencies: @@ -12900,29 +12407,36 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.entries@^1.1.0, object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" +object.entries@^1.1.0, object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.5" - has "^1.0.3" + es-abstract "^1.19.1" -"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" +"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" dependencies: define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.19.1" object.map@^1.0.0: version "1.0.1" @@ -12944,22 +12458,21 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.values@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" +object.values@^1.1.0, object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.2" + es-abstract "^1.19.1" + +objectorarray@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" omit-deep-lodash@1.1.5: version "1.1.5" @@ -12967,47 +12480,59 @@ omit-deep-lodash@1.1.5: dependencies: lodash "~4.17.20" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" dependencies: ee-first "1.1.1" +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" dependencies: mimic-fn "^2.1.0" -open@^6.3.0, open@^6.4.0: +open@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" dependencies: is-wsl "^1.1.0" -open@^7.0.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" +open@^7.0.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^8.0.9: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + opencollective-postinstall@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" +optional-require@^1.0.2: + version "1.1.8" + resolved "https://registry.yarnpkg.com/optional-require/-/optional-require-1.1.8.tgz#16364d76261b75d964c482b2406cb824d8ec44b7" + dependencies: + require-at "^1.0.6" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -13050,12 +12575,6 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - dependencies: - url-parse "^1.4.3" - os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -13070,6 +12589,16 @@ os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" +overlayscrollbars@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz#0b840a88737f43a946b9d87875a2f9e421d0338a" + +p-all@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" + dependencies: + p-map "^2.0.0" + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -13078,9 +12607,21 @@ p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + +p-event@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + dependencies: + p-timeout "^3.1.0" + +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + dependencies: + p-map "^2.0.0" p-finally@^1.0.0: version "1.0.0" @@ -13092,12 +12633,18 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -13116,10 +12663,20 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + dependencies: + p-limit "^3.0.2" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + p-map@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" @@ -13132,6 +12689,19 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -13171,26 +12741,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -param-case@^3.0.2: +param-case@^3.0.2, param-case@^3.0.3, param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" dependencies: dot-case "^3.0.4" tslib "^2.0.3" -param-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -13213,17 +12770,6 @@ parse-author@^2.0.0: dependencies: author-regex "^1.0.0" -parse-entities@^1.1.0, parse-entities@^1.1.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -13249,16 +12795,9 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" @@ -13277,7 +12816,7 @@ parse-uri@^1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/parse-uri/-/parse-uri-1.0.7.tgz#287629a09328a97e398468f21b8a00c4a2d9cc73" -parse5@6.0.1: +parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -13285,12 +12824,12 @@ parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" pascalcase@^0.1.1: version "0.1.1" @@ -13300,6 +12839,10 @@ path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" +path-browserify@1.0.1, path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -13322,21 +12865,17 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" path-root-regex@^0.1.0: version "0.1.2" @@ -13393,19 +12932,9 @@ pathval@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" -pbkdf2@3.0.17: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" +pbkdf2@3.1.2, pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -13429,15 +12958,15 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - -picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -13463,11 +12992,9 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pirates@^4.0.0, pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - dependencies: - node-modules-regexp "^1.0.0" +pirates@^4.0.4, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" pkg-dir@^2.0.0: version "2.0.0" @@ -13487,11 +13014,11 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@2.0.0, pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" dependencies: - find-up "^2.1.0" + find-up "^5.0.0" pkg-up@^3.1.0: version "3.1.0" @@ -13506,12 +13033,11 @@ please-upgrade-node@^3.2.0: semver-compare "^1.0.0" plist@^3.0.0, plist@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" + version "3.0.5" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" dependencies: - base64-js "^1.2.3" + base64-js "^1.5.1" xmlbuilder "^9.0.7" - xmldom "0.1.x" plugin-error@^1.0.1: version "1.0.1" @@ -13532,19 +13058,19 @@ png-js@>=0.1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/png-js/-/png-js-1.0.0.tgz#e5484f1e8156996e383aceebb3789fd75df1874d" -pnp-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" dependencies: - ts-pnp "^1.1.2" + ts-pnp "^1.1.6" -polished@^3.3.1: - version "3.6.7" - resolved "https://registry.yarnpkg.com/polished/-/polished-3.6.7.tgz#44cbd0047f3187d83db0c479ef0c7d5583af5fb6" +polished@^4.0.5: + version "4.2.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" dependencies: - "@babel/runtime" "^7.9.2" + "@babel/runtime" "^7.17.8" -popper.js@1.16.1, popper.js@^1.14.4, popper.js@^1.14.7: +popper.js@1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -13552,7 +13078,7 @@ posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" -postcss-flexbugs-fixes@^4.1.0: +postcss-flexbugs-fixes@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" dependencies: @@ -13570,21 +13096,15 @@ postcss-less@^3.1.4: dependencies: postcss "^7.0.14" -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" +postcss-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.3.0.tgz#2c4de9657cd4f07af5ab42bd60a673004da1b8cc" dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" + cosmiconfig "^7.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + semver "^7.3.4" postcss-media-query-parser@^0.2.3: version "0.2.3" @@ -13602,6 +13122,10 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + 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" @@ -13609,14 +13133,6 @@ postcss-modules-local-by-default@1.2.0: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" -postcss-modules-local-by-default@^2.0.2: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" - postcss-modules-local-by-default@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" @@ -13626,6 +13142,14 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + 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" @@ -13633,13 +13157,19 @@ postcss-modules-scope@1.1.0: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" -postcss-modules-scope@^2.0.0, postcss-modules-scope@^2.2.0: +postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + dependencies: + postcss-selector-parser "^6.0.4" + 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" @@ -13647,13 +13177,6 @@ postcss-modules-values@1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" -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" - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^7.0.6" - postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" @@ -13661,14 +13184,23 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" -postcss-modules@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.5.0.tgz#08da6ce43fcfadbc685a021fe6ed30ef929f0bcc" +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + dependencies: + icss-utils "^5.0.0" + +postcss-modules@4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.2.2.tgz#5e7777c5a8964ea176919d90b2e54ef891321ce5" dependencies: - css-modules-loader-core "^1.1.0" generic-names "^2.0.1" + icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" - postcss "^7.0.1" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" string-hash "^1.1.1" "postcss-nested@^4.2.1 || ^5.0.0": @@ -13700,18 +13232,9 @@ postcss-scss@^2.1.1: dependencies: postcss "^7.0.6" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.6: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -13727,13 +13250,9 @@ postcss-syntax@^0.36.2: version "0.36.2" resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" -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" - postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" postcss@6.0.1: version "6.0.1" @@ -13743,13 +13262,13 @@ postcss@6.0.1: source-map "^0.5.6" supports-color "^3.2.3" -postcss@8.2.13: - version "8.2.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" +postcss@8.3.6: + version "8.3.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" dependencies: colorette "^1.2.2" - nanoid "^3.1.22" - source-map "^0.6.1" + nanoid "^3.1.23" + source-map-js "^0.6.2" postcss@^6.0.1: version "6.0.23" @@ -13759,31 +13278,30 @@ postcss@^6.0.1: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" +postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" dependencies: - chalk "^2.4.2" + picocolors "^0.2.1" source-map "^0.6.1" - supports-color "^6.1.0" -"postcss@^7.0.30 || ^8.0.0": - version "8.4.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.1.tgz#73051f825509ad1a716ef500108001bf3d1fa8f7" +"postcss@^7.0.30 || ^8.0.0", postcss@^8.1.10, postcss@^8.2.15: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" dependencies: - nanoid "^3.1.30" + nanoid "^3.3.3" picocolors "^1.0.0" - source-map-js "^1.0.1" + source-map-js "^1.0.2" prebuild-install@^5.3.3: - version "5.3.5" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.5.tgz#e7e71e425298785ea9d22d4f958dbaccf8bb0e1b" + version "5.3.6" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.3" - mkdirp "^0.5.1" + mkdirp-classic "^0.5.3" napi-build-utils "^1.0.1" node-abi "^2.7.0" noop-logger "^0.1.1" @@ -13795,25 +13313,7 @@ prebuild-install@^5.3.3: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -prebuild-install@^6.0.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.3.tgz#8ea1f9d7386a0b30f7ef20247e36f8b2b82825a2" - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.21.0" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - -prebuild-install@^6.1.4: +prebuild-install@^6.0.0, prebuild-install@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f" dependencies: @@ -13843,10 +13343,6 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -13855,27 +13351,35 @@ prettier@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" +"prettier@>=2.2.1 <=2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" + pretty-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" dependencies: - renderkid "^2.0.1" - utila "~0.4" + lodash "^4.17.20" + renderkid "^2.0.4" -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" +pretty-error@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-3.0.4.tgz#94b1d54f76c1ed95b9c604b9de2194838e5b574e" dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" + lodash "^4.17.20" + renderkid "^2.0.6" + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" -pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.3.1: - version "27.3.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" dependencies: - "@jest/types" "^27.2.5" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" @@ -13899,31 +13403,15 @@ prettysize@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prettysize/-/prettysize-2.0.0.tgz#902c02480d865d9cc0813011c9feb4fa02ce6996" -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - -prismjs@^1.21.0, prismjs@^1.8.4, prismjs@~1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.21.0.tgz#36c086ec36b45319ec4218ee164c110f9fc015a3" - optionalDependencies: - clipboard "^2.0.0" - -prismjs@~1.17.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" - optionalDependencies: - clipboard "^2.0.0" - -private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" +prismjs@1.27.0, prismjs@^1.21.0, prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" -process@^0.11.1, process@^0.11.10: +process@0.11.10, process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -13943,22 +13431,23 @@ promise-retry@^2.0.1: retry "^0.12.0" promise.allsettled@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" + version "1.0.5" + resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53" dependencies: - array.prototype.map "^1.0.1" + array.prototype.map "^1.0.4" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - iterate-value "^1.0.0" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + iterate-value "^1.0.2" promise.prototype.finally@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" + version "3.1.3" + resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.3.tgz#d3186e58fcf4df1682a150f934ccc27b7893389c" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.0" - function-bind "^1.1.1" + es-abstract "^1.19.1" promise@^7.1.1: version "7.3.1" @@ -13966,14 +13455,14 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@2.4.2, prompts@^2.0.1: +prompts@^2.0.1, prompts@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" dependencies: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@15.7.2, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" dependencies: @@ -13981,9 +13470,17 @@ prop-types@15.7.2, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, object-assign "^4.1.1" react-is "^16.8.1" -property-information@^5.0.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" +prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" dependencies: xtend "^4.0.0" @@ -14009,11 +13506,11 @@ protobufjs@^6.11.2: "@types/node" ">=13.7.0" long "^4.0.0" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" proxy-from-env@^1.0.0: @@ -14032,7 +13529,7 @@ psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" -pstree.remy@^1.1.7: +pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" @@ -14081,9 +13578,9 @@ punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" -pupa@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" dependencies: escape-goat "^2.0.0" @@ -14114,10 +13611,6 @@ pushdata-bitcoin@^1.0.1: dependencies: bitcoin-ops "^1.3.0" -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - qr-image@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/qr-image/-/qr-image-3.2.0.tgz#9fa8295beae50c4a149cf9f909a1db464a8672e8" @@ -14134,36 +13627,31 @@ qrcode.react@1.0.0: prop-types "^15.6.0" qr.js "0.0.0" -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - -qs@^6.6.0: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" +qs@6.10.3, qs@^6.10.0: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + dependencies: + side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" -querystring@0.2.0, querystring@^0.2.0: +querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" quick-lru@^4.0.1: version "4.0.1" @@ -14191,9 +13679,9 @@ ramda@^0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" -ramda@^0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" +ramda@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" randombytes@2.1.0, randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" @@ -14212,50 +13700,44 @@ range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-1.0.0.tgz#3f9889e73dadbda9a424bce79809b4133ad46405" - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -raw-loader@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-3.1.0.tgz#5e9d399a5a222cc0de18f42c3bc5e49677532b3f" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" dependencies: - loader-utils "^1.1.0" - schema-utils "^2.0.1" + loader-utils "^2.0.0" + schema-utils "^3.0.0" rc-align@^4.0.0: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.8.tgz#276c3f5dfadf0de4bb95392cb81568c9e947a668" + version "4.0.12" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.12.tgz#065b5c68a1cc92a00800c9239320d9fdf5f16207" dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" dom-align "^1.7.0" + lodash "^4.17.21" rc-util "^5.3.0" resize-observer-polyfill "^1.5.1" rc-motion@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.3.1.tgz#a0c9f402c267bd03543ef80a970297a6ba77c503" + version "2.5.1" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.5.1.tgz#3eceb7d891079c0f67a72639d30e168b91839e03" dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" - rc-util "^5.2.1" + rc-util "^5.21.0" -rc-slider@9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.5.1.tgz#30db11f7887ab618e43d8b560d7376e69b28749c" +rc-slider@9.7.2: + version "9.7.2" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.2.tgz#282f571f7582752ebaa33964e441184f4e79ad74" dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" @@ -14264,26 +13746,27 @@ rc-slider@9.5.1: shallowequal "^1.1.0" rc-tooltip@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.1.tgz#b82c4259604d2cb62ca610ed7932dd37fc6ef61d" + version "5.1.1" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.1.1.tgz#94178ed162d0252bc4993b725f5dc2ac0fccf154" dependencies: "@babel/runtime" "^7.11.2" rc-trigger "^5.0.0" rc-trigger@^5.0.0: - version "5.0.6" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.0.6.tgz#7e84717525871a7923a671edb5a290e9e616525b" + version "5.2.18" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.18.tgz#adab51918e4569b174d4fc5044186200d97a542c" dependencies: "@babel/runtime" "^7.11.2" classnames "^2.2.6" rc-align "^4.0.0" rc-motion "^2.0.0" - rc-util "^5.3.4" + rc-util "^5.19.2" -rc-util@^5.0.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.3.4: - version "5.4.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.4.0.tgz#688eaeecfdae9dae2bfdf10bedbe884591dba004" +rc-util@^5.0.0, rc-util@^5.19.2, rc-util@^5.21.0, rc-util@^5.3.0: + version "5.21.2" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.21.2.tgz#fa23277ba84e5561af2febdca64de3fc2b3e1528" dependencies: + "@babel/runtime" "^7.12.5" react-is "^16.12.0" shallowequal "^1.1.0" @@ -14318,22 +13801,9 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" -react-clientside-effect@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837" - dependencies: - "@babel/runtime" "^7.0.0" - -react-color@^2.17.0: - version "2.18.1" - resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.1.tgz#2cda8cc8e06a9e2c52ad391a30ddad31972472f4" - dependencies: - "@icons/material" "^0.2.4" - lodash "^4.17.11" - material-colors "^1.2.1" - prop-types "^15.5.10" - reactcss "^1.2.0" - tinycolor2 "^1.4.1" +react-colorful@^5.1.2: + version "5.5.1" + resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784" react-copy-to-clipboard@5.0.2: version "5.0.2" @@ -14356,59 +13826,26 @@ react-datetime@3.0.4: dependencies: prop-types "^15.5.7" -react-dev-utils@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" - dependencies: - "@babel/code-frame" "7.5.5" - address "1.1.2" - browserslist "4.7.0" - chalk "2.4.2" - cross-spawn "6.0.5" - detect-port-alt "1.1.6" - escape-string-regexp "1.0.5" - filesize "3.6.1" - find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "6.5.0" - is-root "2.1.0" - loader-utils "1.2.3" - open "^6.3.0" - pkg-up "2.0.0" - react-error-overlay "^6.0.3" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - sockjs-client "1.4.0" - strip-ansi "5.2.0" - text-table "0.2.0" +react-docgen-typescript@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" react-docgen@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.3.0.tgz#9aabde5e69f1993c8ba839fd9a86696504654589" + version "5.4.0" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.4.0.tgz#2cd7236720ec2769252ef0421f23250b39a153a1" dependencies: "@babel/core" "^7.7.5" + "@babel/generator" "^7.12.11" "@babel/runtime" "^7.7.6" - ast-types "^0.13.2" + ast-types "^0.14.2" commander "^2.19.0" doctrine "^3.0.0" + estree-to-babel "^3.1.0" neo-async "^2.6.1" node-dir "^0.1.10" strip-indent "^3.0.0" -react-dom@16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-dom@^16.8.3: +react-dom@16.14.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" dependencies: @@ -14424,61 +13861,40 @@ react-draggable@^3.3.2: classnames "^2.2.5" prop-types "^15.6.0" -react-draggable@^4.0.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3" +react-draggable@^4.4.3: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.5.tgz#9e37fe7ce1a4cf843030f521a0a4cc41886d7e7c" dependencies: - classnames "^2.2.5" - prop-types "^15.6.0" + clsx "^1.1.1" + prop-types "^15.8.1" -react-error-overlay@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" - -react-fast-compare@^3.2.0: +react-fast-compare@^3.0.1, react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" -react-focus-lock@^2.1.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.4.1.tgz#e842cc93da736b5c5d331799012544295cbcee4f" - dependencies: - "@babel/runtime" "^7.0.0" - focus-lock "^0.7.0" - prop-types "^15.6.2" - react-clientside-effect "^1.2.2" - use-callback-ref "^1.2.1" - use-sidecar "^1.0.1" - -react-helmet-async@^1.0.2: - version "1.0.7" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.0.7.tgz#b988fbc3abdc4b704982bb74b9cb4a08fcf062c1" +react-helmet-async@^1.0.7: + version "1.3.0" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" dependencies: - "@babel/runtime" "^7.11.2" + "@babel/runtime" "^7.12.5" invariant "^2.2.4" prop-types "^15.7.2" react-fast-compare "^3.2.0" shallowequal "^1.1.0" -react-hotkeys@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f" - dependencies: - prop-types "^15.6.1" - -react-input-autosize@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" +react-input-autosize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-3.0.0.tgz#6b5898c790d4478d69420b55441fcc31d5c50a85" dependencies: prop-types "^15.5.8" -react-inspector@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-4.0.1.tgz#0f888f78ff7daccbc7be5d452b20c96dc6d5fbb8" +react-inspector@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-5.1.1.tgz#58476c78fde05d5055646ed8ec02030af42953c8" dependencies: - "@babel/runtime" "^7.6.3" - is-dom "^1.0.9" - prop-types "^15.6.1" + "@babel/runtime" "^7.0.0" + is-dom "^1.0.0" + prop-types "^15.0.0" react-intl-translations-manager@5.0.3: version "5.0.3" @@ -14489,21 +13905,21 @@ react-intl-translations-manager@5.0.3: json-stable-stringify "^1.0.1" mkdirp "^0.5.1" -react-intl@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.7.2.tgz#efe97e3fc0e99b4e88a6e6150854d3d1852a4381" +react-intl@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.9.0.tgz#c97c5d17d4718f1575fdbd5a769f96018a3b1843" dependencies: - hoist-non-react-statics "^2.5.5" + hoist-non-react-statics "^3.3.0" intl-format-cache "^2.0.5" intl-messageformat "^2.1.0" intl-relativeformat "^2.1.0" invariant "^2.1.1" -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" -react-is@^17.0.1: +react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -14527,17 +13943,19 @@ react-lottie@1.2.3: babel-runtime "^6.26.0" lottie-web "^5.1.3" -react-markdown@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-4.3.1.tgz#39f0633b94a027445b86c9811142d05381300f2f" +react-markdown@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-5.0.3.tgz#41040ea7a9324b564b328fb81dd6c04f2a5373ac" dependencies: + "@types/mdast" "^3.0.3" + "@types/unist" "^2.0.3" html-to-react "^1.3.4" mdast-add-list-metadata "1.0.1" prop-types "^15.7.2" react-is "^16.8.6" - remark-parse "^5.0.0" - unified "^6.1.5" - unist-util-visit "^1.3.0" + remark-parse "^9.0.0" + unified "^9.0.0" + unist-util-visit "^2.0.0" xtend "^4.0.1" react-modal@3.1.12: @@ -14561,25 +13979,25 @@ react-polymorph@1.0.4: react-modal "3.1.12" react-scrollbars-custom "4.0.21" -react-popper-tooltip@^2.8.3: - version "2.11.1" - resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" +react-popper-tooltip@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac" dependencies: - "@babel/runtime" "^7.9.2" - react-popper "^1.3.7" + "@babel/runtime" "^7.12.5" + "@popperjs/core" "^2.5.4" + react-popper "^2.2.4" -react-popper@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.7.tgz#f6a3471362ef1f0d10a4963673789de1baca2324" +react-popper@^2.2.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba" dependencies: - "@babel/runtime" "^7.1.2" - create-react-context "^0.3.0" - deep-equal "^1.1.1" - popper.js "^1.14.4" - prop-types "^15.6.1" - typed-styles "^0.0.7" + react-fast-compare "^3.0.1" warning "^4.0.2" +react-refresh@0.11.0, react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + react-resize-detector@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-2.3.0.tgz#57bad1ae26a28a62a2ddb678ba6ffdf8fa2b599c" @@ -14601,6 +14019,13 @@ react-router-dom@5.2.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" +react-router-dom@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" + dependencies: + history "^5.2.0" + react-router "6.3.0" + react-router@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" @@ -14616,6 +14041,12 @@ react-router@5.2.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" +react-router@6.3.0, react-router@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" + dependencies: + history "^5.2.0" + react-scrollbars-custom@4.0.21: version "4.0.21" resolved "https://registry.yarnpkg.com/react-scrollbars-custom/-/react-scrollbars-custom-4.0.21.tgz#daab3104b9707033a5be29fdc5b7408dee41a5ad" @@ -14624,9 +14055,9 @@ react-scrollbars-custom@4.0.21: react-draggable "^3.3.2" zoom-level "^1.2.4" -react-select@^3.0.8: - version "3.1.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.1.0.tgz#ab098720b2e9fe275047c993f0d0caf5ded17c27" +react-select@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.2.0.tgz#de9284700196f5f9b5277c5d850a9ce85f5c72fe" dependencies: "@babel/runtime" "^7.4.4" "@emotion/cache" "^10.0.9" @@ -14634,21 +14065,21 @@ react-select@^3.0.8: "@emotion/css" "^10.0.9" memoize-one "^5.0.0" prop-types "^15.6.0" - react-input-autosize "^2.2.2" + react-input-autosize "^3.0.0" react-transition-group "^4.3.0" -react-sizeme@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e" +react-sizeme@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-3.0.2.tgz#4a2f167905ba8f8b8d932a9e35164e459f9020e4" dependencies: - element-resize-detector "^1.2.1" + element-resize-detector "^1.2.2" invariant "^2.2.4" shallowequal "^1.1.0" - throttle-debounce "^2.1.0" + throttle-debounce "^3.0.1" react-smooth@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-1.0.5.tgz#94ae161d7951cdd893ccb7099d031d342cb762ad" + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a" dependencies: lodash "~4.17.4" prop-types "^15.6.0" @@ -14662,7 +14093,7 @@ react-svg-inline@2.1.1: classnames "^2.2.1" prop-types "^15.5.8" -react-syntax-highlighter@13.5.3: +react-syntax-highlighter@13.5.3, react-syntax-highlighter@^13.5.3: version "13.5.3" resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz#9712850f883a3e19eb858cf93fad7bb357eea9c6" dependencies: @@ -14672,30 +14103,13 @@ react-syntax-highlighter@13.5.3: prismjs "^1.21.0" refractor "^3.1.0" -react-syntax-highlighter@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-11.0.2.tgz#4e3f376e752b20d2f54e4c55652fd663149e4029" - dependencies: - "@babel/runtime" "^7.3.1" - highlight.js "~9.13.0" - lowlight "~1.11.0" - prismjs "^1.8.4" - refractor "^2.4.1" - react-table@7.7.0: version "7.7.0" resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.7.0.tgz#e2ce14d7fe3a559f7444e9ecfe8231ea8373f912" -react-textarea-autosize@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz#70fdb333ef86bcca72717e25e623e90c336e2cda" - dependencies: - "@babel/runtime" "^7.1.2" - prop-types "^15.6.0" - -react-textarea-autosize@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.2.tgz#4f9374d357b0a6f6469956726722549124a1b2db" +react-textarea-autosize@^8.3.0, react-textarea-autosize@^8.3.2: + version "8.3.3" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.0.0" @@ -14711,8 +14125,8 @@ react-transition-group@^2.5.0: react-lifecycles-compat "^3.0.4" react-transition-group@^4.3.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -14730,15 +14144,7 @@ react-virtualized@9.22.3: prop-types "^15.7.2" react-lifecycles-compat "^3.0.4" -react@16.13.1, react@^16.8.3: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -react@^16.6.0: +react@16.14.0, react@^16.6.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" dependencies: @@ -14746,12 +14152,6 @@ react@^16.6.0: object-assign "^4.1.1" prop-types "^15.6.2" -reactcss@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" - dependencies: - lodash "^4.0.1" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -14766,13 +14166,6 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -14790,28 +14183,12 @@ read-pkg@^1.0.0: path-type "^1.0.0" read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^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" - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" dependencies: + load-json-file "^2.0.0" normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" + path-type "^2.0.0" read-pkg@^5.2.0: version "5.2.0" @@ -14834,7 +14211,7 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" dependencies: @@ -14856,39 +14233,15 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - dependencies: - picomatch "^2.2.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" dependencies: picomatch "^2.2.1" -recast@^0.14.7: - version "0.14.7" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" - dependencies: - ast-types "0.11.3" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - recharts-scale@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59" + version "0.4.5" + resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" dependencies: decimal.js-light "^2.4.1" @@ -14914,11 +14267,11 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" dependencies: - minimatch "3.0.4" + resolve "^1.9.0" redent@^3.0.0: version "3.0.0" @@ -14941,53 +14294,39 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^1.0.0" -refractor@^2.4.1: - version "2.10.1" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-2.10.1.tgz#166c32f114ed16fd96190ad21d5193d3afc7d34e" - dependencies: - hastscript "^5.0.0" - parse-entities "^1.1.2" - prismjs "~1.17.0" - refractor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.1.0.tgz#b05a43c8a1b4fccb30001ffcbd5cd781f7f06f78" + version "3.6.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" dependencies: - hastscript "^5.0.0" + hastscript "^6.0.0" parse-entities "^2.0.0" - prismjs "~1.21.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - dependencies: - regenerate "^1.4.0" + prismjs "~1.27.0" -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" dependencies: regenerate "^1.4.2" -regenerate@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" -regenerator-runtime@0.13.7, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: +regenerator-runtime@0.13.7: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" -regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: +regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" dependencies: "@babel/runtime" "^7.8.4" @@ -14998,14 +14337,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" dependencies: @@ -15013,39 +14345,24 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" -regexpu-core@^4.7.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" registry-auth-token@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" dependencies: rc "^1.2.8" @@ -15055,47 +14372,38 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.1, regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - dependencies: - jsesc "~0.5.0" +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" dependencies: jsesc "~0.5.0" -relateurl@0.2.x, relateurl@^0.2.7: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" -remark-parse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" - dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" - -remark-parse@^8.0.0: +remark-footnotes@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" + +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + dependencies: + "@babel/core" "7.12.9" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.2.0" + +remark-parse@8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" dependencies: @@ -15116,32 +14424,31 @@ remark-parse@^8.0.0: vfile-location "^3.0.0" xtend "^4.0.1" -remark-stringify@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^2.0.0" - mdast-util-compact "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^3.0.0" - unherit "^1.0.4" - xtend "^4.0.1" + mdast-util-from-markdown "^0.8.0" -remark@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/remark/-/remark-12.0.1.tgz#f1ddf68db7be71ca2bad0a33cd3678b86b9c709f" +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" dependencies: - remark-parse "^8.0.0" - remark-stringify "^8.0.0" - unified "^9.0.0" + mdast-squeeze-paragraphs "^4.0.0" + +remark-stringify@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" + dependencies: + mdast-util-to-markdown "^0.6.0" + +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + dependencies: + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" remove-bom-buffer@^3.0.0: version "3.0.0" @@ -15162,28 +14469,34 @@ remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" +renderkid@^2.0.4, renderkid@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - replace-ext@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" @@ -15221,6 +14534,10 @@ request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-at@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/require-at/-/require-at-1.0.6.tgz#9eb7e3c5e00727f5a4744070a7f560d4de4f6e6a" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -15250,14 +14567,8 @@ resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" resolve-alpn@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.1.2.tgz#30b60cfbb0c0b8dc897940fe13fe255afcdd4d28" - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" resolve-cwd@^3.0.0: version "3.0.0" @@ -15272,10 +14583,6 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -15298,19 +14605,25 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.8.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" +resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.9.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" dependencies: - path-parse "^1.0.6" + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" dependencies: is-core-module "^2.2.0" path-parse "^1.0.6" @@ -15327,25 +14640,12 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" -resq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/resq/-/resq-1.8.0.tgz#06c738e122bd024395cd729fb1e07248a1d2c340" - dependencies: - fast-deep-equal "^2.0.1" - -resq@^1.9.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/resq/-/resq-1.10.1.tgz#c05d1b3808016cceec4d485ceb375acb49565f53" +resq@^1.6.0, resq@^1.9.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/resq/-/resq-1.10.2.tgz#cedf4f20d53f6e574b1e12afbda446ad9576c193" dependencies: fast-deep-equal "^2.0.1" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -15367,6 +14667,10 @@ retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -15391,7 +14695,7 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" dependencies: @@ -15474,17 +14778,15 @@ route-parser@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/route-parser/-/route-parser-0.0.5.tgz#7d1d09d335e49094031ea16991a4a79b01bbe1f4" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - -run-async@^2.2.0, run-async@^2.4.0: +run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + dependencies: + queue-microtask "^1.2.2" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -15503,17 +14805,17 @@ rust-cardano-crypto@0.2.0: iconv-lite "0.4.19" safe-buffer "5.1.1" -rxjs@6: +rxjs@6, rxjs@^6.6.0, rxjs@^6.6.3: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" dependencies: tslib "^1.9.0" -rxjs@^6.4.0, rxjs@^6.5.2, rxjs@^6.6.0, rxjs@^6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" +rxjs@^7.5.4: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" dependencies: - tslib "^1.9.0" + tslib "^2.1.0" safe-buffer@5.1.1: version "5.1.1" @@ -15537,45 +14839,25 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize-filename@1.6.3, sanitize-filename@^1.6.2: +sanitize-filename@1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" dependencies: truncate-utf8-bytes "^1.0.0" -sass-loader@10.1.1: - version "10.1.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" +sass-loader@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201" dependencies: klona "^2.0.4" - loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" -sass@1.32.13: - version "1.32.13" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.13.tgz#8d29c849e625a415bce71609c7cf95e15f74ed00" +sass@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb" dependencies: chokidar ">=3.0.0 <4.0.0" - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + immutable "^4.0.0" saxes@^5.0.1: version "5.0.1" @@ -15590,6 +14872,14 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -15598,7 +14888,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6.6, schema-utils@^2.7.0: +schema-utils@^2.0.0, schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" dependencies: @@ -15606,7 +14896,7 @@ schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.5.0, schema-utils@^2.6 ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0: +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" dependencies: @@ -15614,12 +14904,21 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + scope-analyzer@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/scope-analyzer/-/scope-analyzer-2.1.1.tgz#5156c27de084d74bf75af9e9506aaf95c6e73dd6" + version "2.1.2" + resolved "https://registry.yarnpkg.com/scope-analyzer/-/scope-analyzer-2.1.2.tgz#b958162feb59823c2835c7b0229187a97c77e9cd" dependencies: array-from "^2.1.1" - dash-ast "^1.0.0" + dash-ast "^2.0.1" es6-map "^0.1.5" es6-set "^0.1.5" es6-symbol "^3.1.1" @@ -15634,9 +14933,15 @@ seedrandom@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" -select@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selfsigned@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" + dependencies: + node-forge "^1" semver-compare@^1.0.0: version "1.0.0" @@ -15658,7 +14963,7 @@ semver-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -15666,37 +14971,39 @@ semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" -semver@7.3.2, semver@^7.2.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" +semver@7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + dependencies: + lru-cache "^6.0.0" semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" -semver@^7.1.3, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" +semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" dependencies: lru-cache "^6.0.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "2.0.0" mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" + ms "2.1.3" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-error@^4.1.0: version "4.1.0" @@ -15728,6 +15035,18 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + dependencies: + randombytes "^2.1.0" + serve-favicon@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" @@ -15738,14 +15057,26 @@ serve-favicon@^2.5.0: parseurl "~1.3.2" safe-buffer "5.1.1" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.18.0" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -15768,9 +15099,13 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" @@ -15779,23 +15114,16 @@ sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" + kind-of "^6.0.2" shallow-copy@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" -shallow-equal@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" - shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -15807,6 +15135,12 @@ shasum@1.0.2: json-stable-stringify "~0.0.0" sha.js "~2.4.4" +shcmd@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shcmd/-/shcmd-0.8.4.tgz#74c3c0e630ea8ce77db9e900d438e4f379e5ff97" + dependencies: + glob "^7.0.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -15827,29 +15161,6 @@ shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - -shelljs@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - -side-channel@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" - dependencies: - es-abstract "^1.18.0-next.0" - object-inspect "^1.8.0" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -15858,11 +15169,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - -signal-exit@^3.0.7: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -15871,8 +15178,8 @@ simple-concat@^1.0.0: resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" simple-get@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" + version "3.1.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" dependencies: decompress-response "^4.2.0" once "^1.3.1" @@ -15882,24 +15189,6 @@ simple-html-tokenizer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.1.1.tgz#05c2eec579ffffe145a030ac26cfea61b980fabe" -simplebar-react@^1.0.0-alpha.6: - version "1.2.3" - resolved "https://registry.yarnpkg.com/simplebar-react/-/simplebar-react-1.2.3.tgz#bd81fa9827628470e9470d06caef6ece15e1c882" - dependencies: - prop-types "^15.6.1" - simplebar "^4.2.3" - -simplebar@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/simplebar/-/simplebar-4.2.3.tgz#dac40aced299c17928329eab3d5e6e795fafc10c" - dependencies: - can-use-dom "^0.1.0" - core-js "^3.0.1" - lodash.debounce "^4.0.8" - lodash.memoize "^4.1.2" - lodash.throttle "^4.1.1" - resize-observer-polyfill "^1.5.1" - sinon@9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.2.tgz#b83cf5d43838f99cfa3644453f4c7db23e7bd535" @@ -15916,10 +15205,6 @@ sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -15928,14 +15213,6 @@ slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -15975,16 +15252,13 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" socks-proxy-agent@6.1.1: version "6.1.1" @@ -16002,33 +15276,24 @@ socks-proxy-agent@^6.0.0: debug "^4.3.3" socks "^2.6.2" -socks@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - dependencies: - ip "^1.1.5" - smart-buffer "^4.2.0" - -socks@^2.6.2: +socks@^2.6.1, socks@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" dependencies: ip "^1.1.5" smart-buffer "^4.2.0" -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" -source-map-js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" source-map-resolve@^0.5.0: version "0.5.3" @@ -16047,14 +15312,14 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@0.5.19, source-map-support@^0.5.9, source-map-support@~0.5.12: +source-map-support@0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6: +source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" dependencies: @@ -16062,14 +15327,14 @@ source-map-support@^0.5.6: source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0: +source-map@^0.5.0, 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" @@ -16087,7 +15352,13 @@ source-map@~0.1.30: dependencies: amdefine ">=0.0.4" -sourcemap-codec@^1.4.1: +source-map@~0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.1, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -16126,8 +15397,29 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" specificity@^0.4.1: version "0.4.1" @@ -16169,8 +15461,8 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -16183,17 +15475,10 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" dependencies: figgy-pudding "^3.5.1" - minipass "^3.1.1" ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" @@ -16219,15 +15504,15 @@ stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" -stack-utils@^2.0.2: +stack-utils@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" dependencies: escape-string-regexp "^2.0.0" stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + version "1.2.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" stacktrace-gps@^3.0.4: version "3.0.4" @@ -16299,28 +15584,41 @@ static-module@^3.0.2: static-eval "^2.0.5" through2 "~2.0.3" -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" -store2@^2.7.1: - version "2.12.0" - resolved "https://registry.yarnpkg.com/store2/-/store2-2.12.0.tgz#e1f1b7e1a59b6083b2596a8d067f6ee88fd4d3cf" +store2@^2.12.0: + version "2.13.2" + resolved "https://registry.yarnpkg.com/store2/-/store2-2.13.2.tgz#01ad8802ca5b445b9c316b55e72645c13a3cd7e3" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" +storybook-addon-swc@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/storybook-addon-swc/-/storybook-addon-swc-1.1.7.tgz#5cc82b299377d9cab1d6b7ccb8c8d19b51fd8715" dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" + "@babel/runtime" "^7.17.2" + "@swc/core" "^1.2.152" + deepmerge "^4.2.2" + swc-loader "^0.1.15" -stream-browserify@^3.0.0: +stream-browserify@3.0.0, stream-browserify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" dependencies: inherits "~2.0.4" readable-stream "^3.5.0" +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -16332,6 +15630,15 @@ stream-exhaust@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" +stream-http@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -16346,14 +15653,14 @@ stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - string-argv@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" +string-array@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-array/-/string-array-1.0.1.tgz#14ead77e72df6bbc89225491c9a10faab97e49c4" + string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -16373,14 +15680,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" dependencies: @@ -16388,13 +15688,12 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: - emoji-regex "^7.0.1" is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + strip-ansi "^4.0.0" string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" @@ -16404,44 +15703,34 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" +"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" + version "3.1.3" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.19.1" string.prototype.padstart@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz#b47c087540d0710be5a49375751a0a627bd4ff90" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + version "3.1.3" + resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.3.tgz#4551d0117d9501692ec6000b15056ac3f816cfa5" dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + es-abstract "^1.19.1" string.prototype.trimend@^1.0.5: version "1.0.5" @@ -16451,20 +15740,6 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - string.prototype.trimstart@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" @@ -16485,22 +15760,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.0.1.tgz#32154b91286ab0869ab2c07696223bd23b6dbfc0" - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.2" - is-hexadecimal "^1.0.0" - -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -16513,13 +15772,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" dependencies: @@ -16539,10 +15792,6 @@ strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -16567,24 +15816,34 @@ strip-outer@^1.0.1: dependencies: escape-string-regexp "^1.0.2" -style-loader@0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" +style-loader@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.2.1.tgz#63cb920ec145c8669e9a50e92961452a1ef5dcde" -style-loader@^1.0.0: +style-loader@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" dependencies: loader-utils "^2.0.0" schema-utils "^2.7.0" +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" +style-to-object@0.3.0, style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + dependencies: + inline-style-parser "0.1.1" + stylelint-order@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-4.1.0.tgz#692d05b7d0c235ac66fcf5ea1d9e5f08a76747f6" @@ -16674,25 +15933,29 @@ supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" dependencies: has-flag "^4.0.0" +supports-color@^8.0.0, supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" dependencies: has-flag "^4.0.0" supports-color "^7.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" @@ -16708,60 +15971,50 @@ svg-inline-loader@0.8.2: object-assign "^4.0.1" simple-html-tokenizer "^0.1.1" -svg-parser@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" +svg-jest@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/svg-jest/-/svg-jest-1.0.1.tgz#3a820280bfd4c1e0637d68c8d477d37d0ae46abb" svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" +swc-loader@0.1.15: + version "0.1.15" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.1.15.tgz#cb9c630ccfbb46dabc5aebc5560cced658e32992" dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" + loader-utils "^2.0.0" + +swc-loader@^0.1.15: + version "0.1.16" + resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.1.16.tgz#4c718d698e518f3e6ceb9f7872c1855cdb187066" symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" symbol.prototype.description@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.2.tgz#f325e1e6ad534b3b29c9c3ca73c136c9ce03c5e2" + version "1.0.5" + resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz#d30e01263b6020fbbd2d2884a6276ce4d49ab568" dependencies: - es-abstract "^1.17.0-next.1" - has-symbols "^1.0.1" + call-bind "^1.0.2" + get-symbol-description "^1.0.0" + has-symbols "^1.0.2" + object.getownpropertydescriptors "^2.1.2" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" +synchronous-promise@^2.0.15: + version "2.0.15" + resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e" table@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123" + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" dependencies: - ajv "^6.12.4" - lodash "^4.17.20" + ajv "^8.0.1" + lodash.truncate "^4.4.2" slice-ansi "^4.0.0" - string-width "^4.2.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" tail@2.2.4: version "2.2.4" @@ -16775,26 +16028,20 @@ tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + tar-fs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" pump "^3.0.0" - tar-stream "^2.0.0" + tar-stream "^2.1.4" -tar-stream@^2.0.0, tar-stream@^2.1.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar-stream@^2.2.0: +tar-stream@^2.1.0, tar-stream@^2.1.4, tar-stream@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" dependencies: @@ -16822,23 +16069,19 @@ tcp-port-used@1.0.1: debug "4.1.0" is2 "2.0.1" -telejson@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-3.3.0.tgz#6d814f3c0d254d5c4770085aad063e266b56ad03" +telejson@^5.3.2, telejson@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.3.3.tgz#fa8ca84543e336576d8734123876a9f02bf41d2e" dependencies: "@types/is-function" "^1.0.0" global "^4.4.0" - is-function "^1.0.1" - is-regex "^1.0.4" + is-function "^1.0.2" + is-regex "^1.1.2" is-symbol "^1.0.3" isobject "^4.0.0" - lodash "^4.17.15" + lodash "^4.17.21" memoizerific "^1.11.3" -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -16860,21 +16103,31 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser-webpack-plugin@^2.1.2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" +terser-webpack-plugin@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" dependencies: - cacache "^13.0.1" + cacache "^15.0.5" find-cache-dir "^3.3.1" - jest-worker "^25.4.0" - p-limit "^2.3.0" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^4.6.12" + terser "^5.3.4" webpack-sources "^1.4.3" -terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: +terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.3: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + dependencies: + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^4.1.2, terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" dependencies: @@ -16882,6 +16135,15 @@ terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.10.0, terser@^5.3.4, terser@^5.7.2: + version "5.13.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.13.1.tgz#66332cdc5a01b04a224c9fad449fc1a18eaa1799" + dependencies: + acorn "^8.5.0" + commander "^2.20.0" + source-map "~0.8.0-beta.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -16890,7 +16152,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@0.2.0, 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" @@ -16914,13 +16176,13 @@ thread-loader@2.1.3: loader-utils "^1.1.0" neo-async "^2.6.0" -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" -throttle-debounce@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz#fd31865e66502071e411817e241465b3e9c372e2" +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" through2-filter@^3.0.0: version "3.0.0" @@ -16943,35 +16205,39 @@ through2@^3.0.1: inherits "^2.0.4" readable-stream "2 || 3" -through@2, through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.6: +through@2, through@^2.3.6, through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" +time-zone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" + timemachine@0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/timemachine/-/timemachine-0.3.2.tgz#83c594d0271c3608d5fab13636cd3b7c979ea2c5" timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" dependencies: setimmediate "^1.0.4" -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - tiny-inflate@^1.0.0, tiny-inflate@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" tiny-invariant@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + version "1.2.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" tiny-secp256k1@^1.1.6: version "1.1.6" @@ -16987,15 +16253,11 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - tippy.js@^6.3.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.1.tgz#3788a007be7015eee0fd589a66b98fb3f8f10181" + version "6.3.7" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" dependencies: - "@popperjs/core" "^2.8.3" + "@popperjs/core" "^2.9.0" title-case@^2.1.1: version "2.1.1" @@ -17027,10 +16289,6 @@ tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -17073,6 +16331,12 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -17098,9 +16362,9 @@ toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" touch@^3.1.0: version "3.1.0" @@ -17123,12 +16387,22 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + dependencies: + punycode "^2.1.0" + tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + transform-loader@0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/transform-loader/-/transform-loader-0.2.4.tgz#e5c87877ba96d51d3f225368587b46e226d1cec9" @@ -17170,8 +16444,8 @@ trezor-connect@8.2.8-extended: randombytes "2.1.0" trim-newlines@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" trim-repeated@^1.0.0: version "1.0.0" @@ -17180,8 +16454,8 @@ trim-repeated@^1.0.0: escape-string-regexp "^1.0.2" trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" trim@0.0.1: version "0.0.1" @@ -17201,42 +16475,21 @@ ts-custom-error@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/ts-custom-error/-/ts-custom-error-3.2.0.tgz#ff8f80a3812bab9dc448536312da52dce1b720fb" -ts-dedent@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.2.0.tgz#6aa2229d837159bb6d635b6b233002423b91e0b0" - -ts-essentials@^2.0.3: - version "2.0.12" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" - -ts-node@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7" - dependencies: - "@cspotcode/source-map-support" "0.7.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - yn "3.1.1" +ts-dedent@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" -ts-pnp@^1.1.2: +ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" tsee@1.3.2: @@ -17245,25 +16498,13 @@ tsee@1.3.2: dependencies: "@types/node" "^12.7.2" -tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - -tslib@^1.8.1: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" -tslib@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - -tslib@^2.0.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - -tslib@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" tsutils@^3.21.0: version "3.21.0" @@ -17305,10 +16546,6 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - type-fest@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" @@ -17317,6 +16554,10 @@ type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -17330,10 +16571,10 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" type-fest@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.2.1.tgz#232990aa513f3f5223abf54363975dfe3a121a2e" + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" dependencies: @@ -17344,9 +16585,9 @@ type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" -type@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" +type@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" typed-scss-modules@5.0.0: version "5.0.0" @@ -17363,10 +16604,6 @@ typed-scss-modules@5.0.0: slash "^3.0.0" yargs "^15.0.2" -typed-styles@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -17381,42 +16618,26 @@ typeforce@^1.18.0: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" -typescript@^4.5.5: - version "4.5.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" - -ua-parser-js@^0.7.18: - version "0.7.27" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.27.tgz#b54f8ce9eb6c7abf3584edeaf9a3d8b3bd92edba" +typescript@4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" -ua-parser-js@^0.7.21: - version "0.7.28" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" +typescript@^4.5, typescript@^4.5.3: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - dependencies: - commander "~2.19.0" - source-map "~0.6.1" +ua-parser-js@^0.7.21, ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" uglify-js@^3.1.4: - version "3.11.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.1.tgz#32d274fea8aac333293044afd7f81409d5040d38" + version "3.15.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.4.tgz#fa95c257e88f85614915b906204b9623d4fa340d" ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -17437,11 +16658,9 @@ unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" -undefsafe@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" - dependencies: - debug "^2.2.0" +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" undertaker-registry@^1.0.0: version "1.0.1" @@ -17462,7 +16681,7 @@ undertaker@^1.2.1: object.reduce "^1.0.0" undertaker-registry "^1.0.0" -unfetch@^4.1.0: +unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -17473,21 +16692,10 @@ unherit@^1.0.4: inherits "^2.0.0" xtend "^4.0.0" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - unicode-match-property-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" @@ -17495,24 +16703,16 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - unicode-match-property-value-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" -unicode-properties@1.1.0, unicode-properties@^1.2.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-properties/-/unicode-properties-1.1.0.tgz#7a96eef49f75682ea69d2315eec9ac43ffdf00c1" +unicode-properties@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/unicode-properties/-/unicode-properties-1.3.1.tgz#cc642b6314bde2c691d65dd94cece09ed84f1282" dependencies: - brfs "^1.4.0" - unicode-trie "^0.3.0" - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + base64-js "^1.3.0" + unicode-trie "^2.0.0" unicode-property-aliases-ecmascript@^2.0.0: version "2.0.0" @@ -17525,20 +16725,27 @@ unicode-trie@^0.3.0: pako "^0.2.5" tiny-inflate "^1.0.0" -unified@^6.1.5: - version "6.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" +unicode-trie@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8" + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +unified@9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" dependencies: bail "^1.0.0" extend "^3.0.0" - is-plain-obj "^1.1.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" trough "^1.0.0" - vfile "^2.0.0" - x-is-string "^0.1.0" + vfile "^4.0.0" -unified@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" +unified@^9.0.0, unified@^9.1.0: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" dependencies: bail "^1.0.0" extend "^3.0.0" @@ -17556,10 +16763,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -17585,25 +16788,27 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-util-find-all-after@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz#95cc62f48812d879b4685a0512bf1b838da50e9a" +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + +unist-util-find-all-after@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" dependencies: unist-util-is "^4.0.0" -unist-util-is@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" unist-util-is@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - dependencies: - unist-util-visit "^1.1.0" +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" unist-util-remove-position@^2.0.0: version "2.0.1" @@ -17611,9 +16816,11 @@ unist-util-remove-position@^2.0.0: dependencies: unist-util-visit "^2.0.0" -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" +unist-util-remove@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588" + dependencies: + unist-util-is "^4.0.0" unist-util-stringify-position@^2.0.0: version "2.0.3" @@ -17625,26 +16832,14 @@ unist-util-visit-parents@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz#f6e3afee8bdbf961c0e6f028ea3c0480028c3d06" -unist-util-visit-parents@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" - dependencies: - unist-util-is "^3.0.0" - unist-util-visit-parents@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz#4dd262fb9dcfe44f297d53e882fc6ff3421173d5" + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" dependencies: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" - dependencies: - unist-util-visit-parents "^2.0.0" - -unist-util-visit@^2.0.0: +unist-util-visit@2.0.3, unist-util-visit@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" dependencies: @@ -17672,10 +16867,6 @@ unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" -unquote@^1.1.0, unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -17683,6 +16874,12 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unwrap-npm-cmd@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unwrap-npm-cmd/-/unwrap-npm-cmd-1.1.1.tgz#cd3657607c72211a5042630811b2cc5434a9f57d" + dependencies: + which "^1.3.1" + unzip-crx-3@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz#d5324147b104a8aed9ae8639c95521f6f7cda292" @@ -17695,31 +16892,32 @@ upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" -update-notifier@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" dependencies: - boxen "^4.2.0" - chalk "^3.0.0" + boxen "^5.0.0" + chalk "^4.1.0" configstore "^5.0.1" has-yarn "^2.1.0" import-lazy "^2.1.0" is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" semver-diff "^3.1.1" xdg-basedir "^4.0.0" -upper-case@^1.0.3, upper-case@^1.1.1: +upper-case@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" dependencies: punycode "^2.1.0" @@ -17727,21 +16925,13 @@ urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" -url-loader@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.0.1.tgz#6c47fc7090e3d48939e01fe3c6efcba5938dcec5" - dependencies: - loader-utils "^1.1.0" - mime "^2.4.4" - schema-utils "^1.0.0" - -url-loader@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" url-parse-lax@^3.0.0: version "3.0.0" @@ -17749,14 +16939,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: +url@0.11.0, url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: @@ -17780,32 +16963,19 @@ usb@1.7.2, usb@^1.7.0: node-addon-api "3.0.2" prebuild-install "^5.3.3" -use-callback-ref@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.4.tgz#d86d1577bfd0b955b6e04aaf5971025f406bea3c" - use-composed-ref@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" - dependencies: - ts-essentials "^2.0.3" + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" -use-isomorphic-layout-effect@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz#7bb6589170cd2987a152042f9084f9effb75c225" +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" use-latest@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" - dependencies: - use-isomorphic-layout-effect "^1.0.0" - -use-sidecar@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.3.tgz#17a4e567d4830c0c0ee100040e85a7fe68611e0f" + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" dependencies: - detect-node-es "^1.0.0" - tslib "^1.9.3" + use-isomorphic-layout-effect "^1.1.1" use@^3.1.0: version "3.1.1" @@ -17836,21 +17006,23 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0, util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" dependencies: inherits "2.0.1" +util@0.12.4, util@^0.12.0: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" @@ -17863,18 +17035,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -util@^0.12.0: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -utila@^0.4.0, utila@~0.4: +utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -17882,26 +17043,38 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" +uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" + uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" -uuid@^8.0.0, uuid@^8.3.0: +uuid@^8.0.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" +v8-to-istanbul@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + v8flags@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" @@ -17937,7 +17110,7 @@ vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" -verror@1.10.0, verror@^1.9.0: +verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" dependencies: @@ -17945,19 +17118,17 @@ verror@1.10.0, verror@^1.9.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - -vfile-location@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.1.0.tgz#81cd8a04b0ac935185f4fce16f270503fc2f692f" - -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" +verror@^1.9.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" dependencies: - unist-util-stringify-position "^1.1.1" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" vfile-message@^2.0.0: version "2.0.4" @@ -17966,22 +17137,12 @@ vfile-message@^2.0.0: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" -vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" - dependencies: - is-buffer "^1.1.4" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" - vfile@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.0.tgz#26c78ac92eb70816b01d4565e003b7e65a2a0e01" + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" - replace-ext "1.0.0" unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" @@ -18019,7 +17180,7 @@ vinyl-sourcemap@^1.1.0: remove-bom-buffer "^3.0.0" vinyl "^2.0.0" -vinyl@^2.0.0, vinyl@^2.1.0: +vinyl@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" dependencies: @@ -18038,6 +17199,16 @@ vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" +vue@^3.2.23: + version "3.2.33" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2" + dependencies: + "@vue/compiler-dom" "3.2.33" + "@vue/compiler-sfc" "3.2.33" + "@vue/runtime-dom" "3.2.33" + "@vue/server-renderer" "3.2.33" + "@vue/shared" "3.2.33" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -18050,18 +17221,22 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" +wait-on@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" + dependencies: + axios "^0.25.0" + joi "^17.6.0" + lodash "^4.17.21" + minimist "^1.2.5" + rxjs "^7.5.4" + walker@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" dependencies: makeerror "1.0.12" -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - dependencies: - makeerror "1.0.x" - warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" @@ -18074,21 +17249,34 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" dependencies: chokidar "^2.1.8" watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" optionalDependencies: chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" + watchpack-chokidar2 "^2.0.1" + +watchpack@^2.2.0, watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.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" + dependencies: + minimalistic-assert "^1.0.0" wcwidth@^1.0.1: version "1.0.1" @@ -18096,6 +17284,10 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-namespaces@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + webdriver@5.18.7: version "5.18.7" resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-5.18.7.tgz#78fd17228bb2668800d26bc60bc92c1c1eb194b4" @@ -18166,6 +17358,14 @@ webdriverio@^6.9.1: serialize-error "^8.0.0" webdriver "6.12.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -18174,25 +17374,26 @@ webidl-conversions@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" -webpack-cli@3.3.12: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" +webpack-cli@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.1.1" + "@webpack-cli/info" "^1.4.1" + "@webpack-cli/serve" "^1.6.1" + colorette "^2.0.14" + commander "^7.0.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" -webpack-dev-middleware@^3.7.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" +webpack-dev-middleware@^3.7.3: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -18200,14 +17401,72 @@ webpack-dev-middleware@^3.7.0: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-hot-middleware@^2.25.0: - version "2.25.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" +webpack-dev-middleware@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz#179cc40795882cae510b1aa7f3710cbe93c9333e" + dependencies: + colorette "^1.2.2" + mem "^8.1.1" + memfs "^3.2.2" + mime-types "^2.1.30" + range-parser "^1.2.1" + schema-utils "^3.0.0" + +webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + dependencies: + colorette "^2.0.10" + memfs "^3.4.1" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.9.0.tgz#737dbf44335bb8bde68f8f39127fc401c97a1557" + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.1" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.0.1" + serve-index "^1.9.1" + sockjs "^0.3.21" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" + +webpack-filter-warnings-plugin@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb" + +webpack-hot-middleware@^2.25.1: + version "2.25.1" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz#581f59edf0781743f4ca4c200fd32c9266c6cf7c" dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" + ansi-html-community "0.0.8" + html-entities "^2.1.0" querystring "^0.2.0" - strip-ansi "^3.0.0" + strip-ansi "^6.0.0" webpack-log@^2.0.0: version "2.0.0" @@ -18222,36 +17481,37 @@ webpack-merge@^4.1.0: dependencies: lodash "^4.17.15" -webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^1.0.1, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-stream@6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/webpack-stream/-/webpack-stream-6.1.0.tgz#047348e36793432f329c7b5ff13e6e9b6872c152" - dependencies: - fancy-log "^1.3.3" - lodash.clone "^4.3.2" - lodash.some "^4.2.2" - memory-fs "^0.5.0" - plugin-error "^1.0.1" - supports-color "^7.2.0" - through "^2.3.8" - vinyl "^2.1.0" - webpack "^4.26.1" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" -webpack-virtual-modules@^0.2.0: +webpack-virtual-modules@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" dependencies: debug "^3.0.0" -webpack@4.44.2, webpack@^4.26.1, webpack@^4.33.0, webpack@^4.38.0: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" +webpack-virtual-modules@^0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9" + +webpack@4: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -18261,7 +17521,7 @@ webpack@4.44.2, webpack@^4.26.1, webpack@^4.33.0, webpack@^4.38.0: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -18277,7 +17537,36 @@ webpack@4.44.2, webpack@^4.26.1, webpack@^4.33.0, webpack@^4.38.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@>=0.5.1: +webpack@5.72.0, webpack@^5.9.0: + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.9.2" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" dependencies: @@ -18299,6 +17588,21 @@ whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -18326,8 +17630,8 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + version "1.1.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.1.0.tgz#35ccf7b1a0fce87bd8b92a478c9d045785d3bf35" which-typed-array@^1.1.2: version "1.1.8" @@ -18352,13 +17656,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -wide-align@^1.1.5: +wide-align@^1.1.0, wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" dependencies: @@ -18376,13 +17674,17 @@ wif@^2.0.6: dependencies: bs58check "<3.0.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" worker-farm@^1.7.0: version "1.7.0" @@ -18403,14 +17705,6 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -18446,6 +17740,10 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +ws@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -18463,16 +17761,16 @@ ws@^7.2.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" ws@^7.2.3: - version "7.5.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.2.tgz#09cc8fea3bec1bc5ed44ef51b42f945be36900f6" + version "7.5.8" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" ws@^7.4.6: version "7.5.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" +ws@^8.2.3, ws@^8.4.2: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" xdg-basedir@^4.0.0: version "4.0.0" @@ -18490,27 +17788,29 @@ xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" -xmldom@0.1.x: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - xregexp@^4.2.4: - version "4.3.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + version "4.4.1" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65" dependencies: - "@babel/runtime-corejs3" "^7.8.3" + "@babel/runtime-corejs3" "^7.12.1" + +xsh@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/xsh/-/xsh-0.4.5.tgz#0555170baa133ac05e47f2d80f8fa518c4d60e0f" + dependencies: + shcmd "^0.8.4" xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" y18n@^5.0.5: version "5.0.8" @@ -18533,8 +17833,8 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" yaml@^1.10.0, yaml@^1.7.2: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" yamljs@0.3.0: version "0.3.0" @@ -18543,26 +17843,29 @@ yamljs@0.3.0: argparse "^1.0.7" glob "^7.0.5" -yargs-parser@20.2.9, yargs-parser@5.0.0-security.0, yargs-parser@^13.1.2, yargs-parser@^18.1.2, yargs-parser@^18.1.3, yargs-parser@^20.0.0, yargs-parser@^21.0.0: +yargs-parser@^18.1.2, yargs-parser@^18.1.3: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" -yargs@^13.3.0, yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" +yargs-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.1.tgz#7ede329c1d8cdbbe209bd25cdb990e9b1ebbb394" dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" + camelcase "^3.0.0" + object.assign "^4.1.0" -yargs@^15.0.2, yargs@^15.4.1: +yargs@^15.0.2: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" dependencies: @@ -18578,6 +17881,18 @@ yargs@^15.0.2, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^17.0.1: version "17.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" @@ -18591,8 +17906,8 @@ yargs@^17.0.1: yargs-parser "^21.0.0" yargs@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" + version "7.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -18606,7 +17921,7 @@ yargs@^7.1.0: string-width "^1.0.2" which-module "^1.0.0" y18n "^3.2.1" - yargs-parser "5.0.0-security.0" + yargs-parser "^5.0.1" yarn-lockfile@1.1.1: version "1.1.1" @@ -18621,9 +17936,9 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" zip-stream@^2.1.2: version "2.1.3" @@ -18644,3 +17959,7 @@ zip-stream@^4.1.0: zoom-level@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/zoom-level/-/zoom-level-1.2.4.tgz#52bc5ae3af945cac82f9f685e8707fa2c9b962e2" + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/yarn2nix.nix b/yarn2nix.nix index c043d79f4f..c50af66947 100644 --- a/yarn2nix.nix +++ b/yarn2nix.nix @@ -18,8 +18,10 @@ let cluster' = launcherConfig.networkName; yarn2nix = import (fetchzip { - url = "https://github.com/moretea/yarn2nix/archive/v1.0.0.tar.gz"; - sha256 = "02bzr9j83i1064r1r34cn74z7ccb84qb5iaivwdplaykyyydl1k8"; + # v1.0.0 with a PR to handle duplicate file names between @types/* and original/* – + # TODO: use the version from recent Nixpkgs + url = "https://github.com/nix-community/yarn2nix/archive/276994748d556e0812bb1bc5f92ac095b5da71d2.tar.gz"; + sha256 = "1fxiq43w8mfs0aiyj4kazwjl6b829a5r0jbx6bcs3kmil9asq3fg"; }) { inherit pkgs nodejs yarn; }; @@ -101,10 +103,18 @@ yarn2nix.mkYarnPackage { export HOME=$(realpath home) ln -sv ${electron-cache} $HOME/.cache/electron + # What is this broken symlink used for‽ `electron-packager` fails when there are broken symlinks… + rm deps/daedalus/daedalus + + cd deps/daedalus/ + cp ${newPackagePath} package.json mkdir -p installers/icons/${cluster}/${cluster} cp ${iconPath.base}/* installers/icons/${cluster}/${cluster}/ - yarn --offline package --win64 --icon installers/icons/${cluster}/${cluster} + + export DEBUG=electron-packager + yarn --verbose --offline package --win64 --dir $(pwd) --icon installers/icons/${cluster}/${cluster} + ls -ltrh release/win32-x64/Daedalus*-win32-x64/ cp -r release/win32-x64/Daedalus*-win32-x64 $out pushd $out/resources/app/dist @@ -113,10 +123,19 @@ yarn2nix.mkYarnPackage { rm -rf $out/resources/app/{installers,launcher-config.yaml,gulpfile.js,home} mkdir -pv $out/resources/app/node_modules - cp -r $node_modules/{\@babel,\@protobufjs,regenerator-runtime,node-fetch,\@trezor,runtypes,parse-uri,randombytes,safe-buffer,bip66,pushdata-bitcoin,bitcoin-ops,typeforce,varuint-bitcoin,create-hash,blake2b,nanoassert,blake2b-wasm,bs58check,bs58,base-x,create-hmac,wif,ms,semver-compare,long,define-properties,object-keys,has,function-bind,es-abstract,has-symbols,json-stable-stringify,cashaddrjs,big-integer,inherits,bchaddrjs,cross-fetch,trezor-connect,js-chain-libs-node,bignumber.js,call-bind,get-intrinsic,base64-js,ieee754,util-deprecate,bech32,blake-hash,blake2,tiny-secp256k1,bn.js,elliptic,minimalistic-assert,minimalistic-crypto-utils,brorand,hash.js,hmac-drbg,int64-buffer,object.values,bytebuffer,protobufjs,usb-detection,socks,socks-proxy-agent,ip,smart-buffer,ripple-lib,lodash,jsonschema,ripple-address-codec,ripple-keypairs,ripple-lib-transactionparser,ripple-binary-codec,buffer,decimal.js} $out/resources/app/node_modules + cp -r $node_modules/{\@babel,\@protobufjs,regenerator-runtime,node-fetch,\@trezor,runtypes,parse-uri,randombytes,safe-buffer,bip66,pushdata-bitcoin,bitcoin-ops,typeforce,varuint-bitcoin,create-hash,blake2b,nanoassert,blake2b-wasm,bs58check,bs58,base-x,create-hmac,wif,ms,semver-compare,long,define-properties,object-keys,has,function-bind,es-abstract,has-symbols,json-stable-stringify,cashaddrjs,big-integer,inherits,bchaddrjs,cross-fetch,trezor-connect,js-chain-libs-node,bignumber.js,call-bind,get-intrinsic,base64-js,ieee754,cbor-web,util-deprecate,bech32,blake-hash,blake2,tiny-secp256k1,bn.js,elliptic,minimalistic-assert,minimalistic-crypto-utils,brorand,hash.js,hmac-drbg,int64-buffer,object.values,bytebuffer,protobufjs,usb-detection,babel-runtime,bindings,brotli,clone,deep-equal,dfa,eventemitter2,file-uri-to-path,fontkit,functions-have-names,has-property-descriptors,has-tostringtag,is-arguments,is-date-object,is-regex,linebreak,node-hid,object-is,pdfkit,png-js,regexp.prototype.flags,restructure,tiny-inflate,unicode-properties,unicode-trie,socks,socks-proxy-agent,ip,smart-buffer,ripple-lib,lodash,jsonschema,ripple-address-codec,ripple-keypairs,ripple-lib-transactionparser,ripple-binary-codec,buffer,decimal.js,debug,agent-base} $out/resources/app/node_modules cd $out/resources/app/ unzip ${./nix/windows-usb-libs.zip} + + # Investigate why this is needed: + chmod -R +w $out + mkdir -p $out/resources/app/node_modules/usb-detection/build + cp $out/resources/app/build/Debug/detection.node $out/resources/app/node_modules/usb-detection/build + mkdir -p $out/resources/app/node_modules/node-hid/build + cp $out/resources/app/build/Debug/HID.node $out/resources/app/node_modules/node-hid/build + mkdir -p $out/resources/app/node_modules/usb/build + cp $out/resources/app/build/Debug/usb_bindings.node $out/resources/app/node_modules/usb/build '' else '' mkdir -pv home/.cache/ export HOME=$(realpath home) @@ -131,27 +150,14 @@ yarn2nix.mkYarnPackage { #export DEBUG=electron-rebuild ls -ltrha $NIX_BUILD_TOP/daedalus/node_modules/ - function dup() { - cp -vr node_modules/''${1}/ node_modules/''${1}-temp - rm -v node_modules/''${1} - mv -v node_modules/''${1}-temp node_modules/''${1} - chmod -R +w node_modules/''${1} - } - - dup node-hid - dup usb - dup @ledgerhq - dup electron-chromedriver - dup blake-hash - dup blake2 - dup tiny-secp256k1 - dup usb-detection + + chmod -R +w node_modules/ # We ship debug version because the release one has issues with ledger nano s node_modules/.bin/electron-rebuild -w usb --useCache -s --debug mkdir -p $out/bin $out/share/daedalus - cp -R dist/* $out/share/daedalus + cp -R deps/daedalus/dist/* $out/share/daedalus cp ${newPackagePath} $out/share/daedalus/package.json pushd $out/share/daedalus ${nukeAllRefs} @@ -159,24 +165,29 @@ yarn2nix.mkYarnPackage { mkdir -p $out/share/fonts ln -sv $out/share/daedalus/renderer/assets $out/share/fonts/daedalus mkdir -pv $out/share/daedalus/node_modules - cp -r $node_modules/{\@babel,\@protobufjs,regenerator-runtime,node-fetch,\@trezor,runtypes,parse-uri,randombytes,safe-buffer,bip66,pushdata-bitcoin,bitcoin-ops,typeforce,varuint-bitcoin,create-hash,blake2b,nanoassert,blake2b-wasm,bs58check,bs58,base-x,create-hmac,wif,ms,semver-compare,long,define-properties,object-keys,has,function-bind,es-abstract,has-symbols,json-stable-stringify,cashaddrjs,big-integer,inherits,bchaddrjs,cross-fetch,trezor-connect,js-chain-libs-node,bignumber.js,call-bind,get-intrinsic,base64-js,ieee754,util-deprecate,bech32,blake-hash,blake2,tiny-secp256k1,bn.js,elliptic,minimalistic-assert,minimalistic-crypto-utils,brorand,hash.js,hmac-drbg,int64-buffer,object.values,bytebuffer,protobufjs,usb-detection,socks,socks-proxy-agent,ip,smart-buffer,ripple-lib,lodash,jsonschema,ripple-address-codec,ripple-keypairs,ripple-lib-transactionparser,ripple-binary-codec,buffer,decimal.js} $out/share/daedalus/node_modules/ + cp -r $node_modules/{\@babel,\@protobufjs,regenerator-runtime,node-fetch,\@trezor,runtypes,parse-uri,randombytes,safe-buffer,bip66,pushdata-bitcoin,bitcoin-ops,typeforce,varuint-bitcoin,create-hash,blake2b,nanoassert,blake2b-wasm,bs58check,bs58,base-x,create-hmac,wif,ms,semver-compare,long,define-properties,object-keys,has,function-bind,es-abstract,has-symbols,json-stable-stringify,cashaddrjs,big-integer,inherits,bchaddrjs,cross-fetch,trezor-connect,js-chain-libs-node,bignumber.js,call-bind,get-intrinsic,base64-js,ieee754,cbor-web,util-deprecate,bech32,blake-hash,blake2,tiny-secp256k1,bn.js,elliptic,minimalistic-assert,minimalistic-crypto-utils,brorand,hash.js,hmac-drbg,int64-buffer,object.values,bytebuffer,protobufjs,usb-detection,babel-runtime,bindings,brotli,clone,deep-equal,dfa,eventemitter2,file-uri-to-path,fontkit,functions-have-names,has-property-descriptors,has-tostringtag,is-arguments,is-date-object,is-regex,linebreak,node-hid,object-is,pdfkit,png-js,regexp.prototype.flags,restructure,tiny-inflate,unicode-properties,unicode-trie,socks,socks-proxy-agent,ip,smart-buffer,ripple-lib,lodash,jsonschema,ripple-address-codec,ripple-keypairs,ripple-lib-transactionparser,ripple-binary-codec,buffer,decimal.js,debug,agent-base} $out/share/daedalus/node_modules/ find $out $NIX_BUILD_TOP -name '*.node' - mkdir -pv $out/share/daedalus/build - cp node_modules/usb/build/Debug/usb_bindings.node $out/share/daedalus/build/usb_bindings.node - cp node_modules/node-hid/build/Debug/HID_hidraw.node $out/share/daedalus/build/HID_hidraw.node - for file in $out/share/daedalus/build/usb_bindings.node $out/share/daedalus/build/HID_hidraw.node; do - $STRIP $file - patchelf --shrink-rpath $file - done + chmod -R +w $out + + mkdir -p $out/share/daedalus/node_modules/usb/build + cp node_modules/usb/build/Debug/usb_bindings.node $out/share/daedalus/node_modules/usb/build + + mkdir -p $out/share/daedalus/node_modules/node-hid/build + cp node_modules/node-hid/build/Debug/HID_hidraw.node $out/share/daedalus/node_modules/node-hid/build node_modules/.bin/electron-rebuild -w usb-detection --useCache -s - cp node_modules/usb-detection/build/Release/detection.node $out/share/daedalus/build/detection.node - for file in $out/share/daedalus/build/detection.node; do + mkdir -p $out/share/daedalus/node_modules/usb-detection/build + cp node_modules/usb-detection/build/Release/detection.node $out/share/daedalus/node_modules/usb-detection/build + + for file in $out/share/daedalus/node_modules/usb/build/usb_bindings.node $out/share/daedalus/node_modules/node-hid/build/HID_hidraw.node $out/share/daedalus/node_modules/usb-detection/build/detection.node; do $STRIP $file patchelf --shrink-rpath $file done ''; + distPhase = '' + # unused + ''; #allowedReferences = [ "out" ]; #allowedRequisites = [ # systemd.lib