diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdf22dd2ee..0085508261 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,6 +3,9 @@ image: node:18 variables: NODE_ENV: test +default: + interruptible: true + cache: &cache key: files: @@ -25,7 +28,6 @@ deps: cache: <<: *cache policy: push - interruptible: true danger: stage: test @@ -33,8 +35,10 @@ danger: # https://github.com/danger/danger-js/issues/1029#issuecomment-998915436 - export CI_MERGE_REQUEST_IID=${CI_OPEN_MERGE_REQUESTS#*!} - npx danger ci + except: + refs: + - $CI_DEFAULT_BRANCH allow_failure: true - interruptible: true lint-js: stage: test @@ -47,7 +51,6 @@ lint-js: - "**/*.tsx" - ".eslintignore" - ".eslintrc.js" - interruptible: true lint-sass: stage: test @@ -57,7 +60,6 @@ lint-sass: - "**/*.scss" - "**/*.css" - ".stylelintrc.json" - interruptible: true jest: stage: test @@ -80,27 +82,30 @@ jest: coverage_report: coverage_format: cobertura path: .coverage/cobertura-coverage.xml - interruptible: true nginx-test: stage: test image: nginx:latest - before_script: cp installation/mastodon.conf /etc/nginx/conf.d/default.conf + before_script: + - cp installation/mastodon.conf /etc/nginx/conf.d/default.conf script: nginx -t only: changes: - "installation/mastodon.conf" - interruptible: true build-production: stage: test - script: yarn build + script: + - yarn build + - yarn manage:translations en + # Fail if files got changed. + # https://stackoverflow.com/a/9066385 + - git diff --quiet variables: NODE_ENV: production artifacts: paths: - static - interruptible: true docs-deploy: stage: deploy @@ -111,21 +116,9 @@ docs-deploy: - curl -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' https://gitlab.com/api/v4/projects/15685485/trigger/pipeline only: refs: - - develop + - $CI_DEFAULT_BRANCH changes: - "docs/**/*" - interruptible: true - -# Supposed to fail when translations are outdated, instead always passes -# -# i18n: -# stage: build -# script: yarn manage:translations -# variables: -# NODE_ENV: development -# before_script: -# - yarn -# - yarn build review: stage: deploy @@ -135,7 +128,6 @@ review: script: - npx -y surge static $CI_COMMIT_REF_SLUG.git.soapbox.pub allow_failure: true - interruptible: true pages: stage: deploy @@ -150,8 +142,7 @@ pages: - public only: refs: - - develop - interruptible: true + - $CI_DEFAULT_BRANCH docker: stage: deploy @@ -167,5 +158,8 @@ docker: - docker push $CI_REGISTRY_IMAGE only: refs: - - develop - interruptible: true \ No newline at end of file + - $CI_DEFAULT_BRANCH + +include: + - template: Jobs/Dependency-Scanning.gitlab-ci.yml + - template: Security/License-Scanning.gitlab-ci.yml \ No newline at end of file diff --git a/.gitlab/merge_request_templates/BeforeAndAfter.md b/.gitlab/merge_request_templates/BeforeAndAfter.md new file mode 100644 index 0000000000..6e457a7082 --- /dev/null +++ b/.gitlab/merge_request_templates/BeforeAndAfter.md @@ -0,0 +1,8 @@ +## Summary + + + +## Screenshots (if appropriate): +| Before | After | +| ------ | ----- | +| | | diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 57a35ab4f9..d1762aa9ae 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ "dbaeumer.vscode-eslint", "bradlc.vscode-tailwindcss", "stylelint.vscode-stylelint", - "wix.vscode-import-cost" + "wix.vscode-import-cost", + "redhat.vscode-yaml" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 4a7155a74a..d7ca133450 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,5 +5,15 @@ "*.conf.template": "properties" }, "files.eol": "\n", - "files.insertFinalNewline": false + "files.insertFinalNewline": false, + "json.schemas": [ + { + "fileMatch": [".lintstagedrc.json"], + "url": "https://json.schemastore.org/lintstagedrc.schema.json" + }, + { + "fileMatch": ["renovate.json"], + "url": "https://docs.renovatebot.com/renovate-schema.json" + } + ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 268d5caadd..4904047218 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- Compatibility: rudimentary support for Takahē. ### Changed +- Posts: letterbox images to 19:6 again. ### Fixed +- Layout: use accent color for "floating action button" (mobile compose button). +- ServiceWorker: don't serve favicon, robots.txt, and others from ServiceWorker. ## [3.0.0] - 2022-12-25 diff --git a/app/soapbox/actions/scheduled-statuses.ts b/app/soapbox/actions/scheduled-statuses.ts index ddc5501055..33e7637017 100644 --- a/app/soapbox/actions/scheduled-statuses.ts +++ b/app/soapbox/actions/scheduled-statuses.ts @@ -1,3 +1,5 @@ +import { getFeatures } from 'soapbox/utils/features'; + import api, { getLinks } from '../api'; import type { AxiosError } from 'axios'; @@ -18,10 +20,17 @@ const SCHEDULED_STATUS_CANCEL_FAIL = 'SCHEDULED_STATUS_CANCEL_FAIL'; const fetchScheduledStatuses = () => (dispatch: AppDispatch, getState: () => RootState) => { - if (getState().status_lists.get('scheduled_statuses')?.isLoading) { + const state = getState(); + + if (state.status_lists.get('scheduled_statuses')?.isLoading) { return; } + const instance = state.instance; + const features = getFeatures(instance); + + if (!features.scheduledStatuses) return; + dispatch(fetchScheduledStatusesRequest()); api(getState).get('/api/v1/scheduled_statuses').then(response => { diff --git a/app/soapbox/actions/trending-statuses.ts b/app/soapbox/actions/trending-statuses.ts index 435fcf6df9..7ccab27ab3 100644 --- a/app/soapbox/actions/trending-statuses.ts +++ b/app/soapbox/actions/trending-statuses.ts @@ -17,6 +17,8 @@ const fetchTrendingStatuses = () => const instance = state.instance; const features = getFeatures(instance); + if (!features.trendingStatuses && !features.trendingTruths) return; + dispatch({ type: TRENDING_STATUSES_FETCH_REQUEST }); return api(getState).get(features.trendingTruths ? '/api/v1/truth/trending/truths' : '/api/v1/trends/statuses').then(({ data: statuses }) => { dispatch(importFetchedStatuses(statuses)); diff --git a/app/soapbox/api/index.ts b/app/soapbox/api/index.ts index 840c0322a3..c7fcb6230d 100644 --- a/app/soapbox/api/index.ts +++ b/app/soapbox/api/index.ts @@ -62,7 +62,6 @@ export const baseClient = (accessToken?: string | null, baseURL: string = ''): A headers: Object.assign(accessToken ? { 'Authorization': `Bearer ${accessToken}`, } : {}), - transformResponse: [maybeParseJSON], }); }; diff --git a/app/soapbox/components/autosuggest-account-input.tsx b/app/soapbox/components/autosuggest-account-input.tsx index b2a205e3c3..dc05b8be21 100644 --- a/app/soapbox/components/autosuggest-account-input.tsx +++ b/app/soapbox/components/autosuggest-account-input.tsx @@ -53,8 +53,7 @@ const AutosuggestAccountInput: React.FC = ({ setAccountIds(ImmutableOrderedSet(accountIds)); }) .catch(noOp); - - }, 900, { leading: true, trailing: true }), [limit]); + }, 900, { leading: false, trailing: true }), [limit]); const handleChange: React.ChangeEventHandler = e => { refreshCancelToken(); diff --git a/app/soapbox/components/media-gallery.tsx b/app/soapbox/components/media-gallery.tsx index 722f5540a0..cd7cd26054 100644 --- a/app/soapbox/components/media-gallery.tsx +++ b/app/soapbox/components/media-gallery.tsx @@ -294,7 +294,7 @@ const MediaGallery: React.FC = (props) => { const aspectRatio = media.getIn([0, 'meta', 'original', 'aspect']) as number | undefined; const getHeight = () => { - if (!aspectRatio) return w; + if (!aspectRatio) return w * 9 / 16; if (isPanoramic(aspectRatio)) return Math.floor(w / maximumAspectRatio); if (isPortrait(aspectRatio)) return Math.floor(w / minimumAspectRatio); return Math.floor(w / aspectRatio); diff --git a/app/soapbox/components/sidebar-menu.tsx b/app/soapbox/components/sidebar-menu.tsx index 80a292ec91..34fd62260f 100644 --- a/app/soapbox/components/sidebar-menu.tsx +++ b/app/soapbox/components/sidebar-menu.tsx @@ -1,3 +1,4 @@ +/* eslint-disable jsx-a11y/interactive-supports-focus */ import classNames from 'clsx'; import React from 'react'; import { defineMessages, useIntl, FormattedMessage } from 'react-intl'; @@ -136,218 +137,234 @@ const SidebarMenu: React.FC = (): JSX.Element | null => { return (
- -
+ /> -
-
-
- - - - - - +
+
+ +
+
- + + + - - {(account.locked || followRequestsCount > 0) && ( - - )} - - {features.bookmarks && ( - - )} - - {features.lists && ( - - )} - - {features.events && ( - - )} - - {settings.get('isDeveloper') && ( - - )} - - {features.publicTimeline && <> + : } + to={`/@${account.acct}`} + icon={require('@tabler/icons/user.svg')} + text={intl.formatMessage(messages.profile)} + onClick={onClose} + /> + + {(account.locked || followRequestsCount > 0) && ( + + )} + + {features.bookmarks && ( + + )} + + {features.lists && ( + + )} + + {features.events && ( + + )} + + {settings.get('isDeveloper') && ( + + )} + + {features.publicTimeline && <> + + + : } + onClick={onClose} + /> + + {features.federating && ( + } + onClick={onClose} + /> + )} + } + + + + + + + + {features.federating && ( } + to='/domain_blocks' + icon={require('@tabler/icons/ban.svg')} + text={intl.formatMessage(messages.domainBlocks)} onClick={onClose} /> )} - } - - - - - - - - - {features.federating && ( - - )} - - {features.filters && ( - - )} - - {account.admin && ( - - )} - - {features.import && ( - - )} - - - - - - - - - - - {switcher && ( -
- {otherAccounts.map(account => renderAccount(account))} - - - - {intl.formatMessage(messages.addAccount)} - -
+ {features.filters && ( + )} + + {account.admin && ( + + )} + + {features.import && ( + + )} + + + + + + + + + + + {switcher && ( +
+ {otherAccounts.map(account => renderAccount(account))} + + + + {intl.formatMessage(messages.addAccount)} + +
+ )} +
-
+
+ + {/* Dummy element to keep Close Icon visible */} +
); diff --git a/app/soapbox/extra-polyfills.ts b/app/soapbox/extra-polyfills.ts index 47a1b6e338..c4f6da408f 100644 --- a/app/soapbox/extra-polyfills.ts +++ b/app/soapbox/extra-polyfills.ts @@ -2,6 +2,3 @@ import 'intersection-observer'; import 'requestidlecallback'; -import objectFitImages from 'object-fit-images'; - -objectFitImages(); diff --git a/app/soapbox/features/account-gallery/index.tsx b/app/soapbox/features/account-gallery/index.tsx index 9fda9751fd..b27d1b1170 100644 --- a/app/soapbox/features/account-gallery/index.tsx +++ b/app/soapbox/features/account-gallery/index.tsx @@ -95,7 +95,7 @@ const AccountGallery = () => { const media = (attachment.status as Status).media_attachments; const index = media.findIndex((x) => x.id === attachment.id); - dispatch(openModal('MEDIA', { media, index, status: attachment.status, account: attachment.account })); + dispatch(openModal('MEDIA', { media, index, status: attachment.status })); } }; diff --git a/app/soapbox/features/chats/components/chat-pane/__tests__/chat-pane.test.tsx b/app/soapbox/features/chats/components/chat-pane/__tests__/chat-pane.test.tsx index b28f8aafdd..5dcfda5495 100644 --- a/app/soapbox/features/chats/components/chat-pane/__tests__/chat-pane.test.tsx +++ b/app/soapbox/features/chats/components/chat-pane/__tests__/chat-pane.test.tsx @@ -5,7 +5,7 @@ import { __stub } from 'soapbox/api'; import { ChatContext } from 'soapbox/contexts/chat-context'; import { StatProvider } from 'soapbox/contexts/stat-context'; import chats from 'soapbox/jest/fixtures/chats.json'; -import { render, screen, waitFor } from 'soapbox/jest/test-helpers'; +import { mockStore, render, rootState, screen, waitFor } from 'soapbox/jest/test-helpers'; import ChatPane from '../chat-pane'; @@ -23,7 +23,12 @@ const renderComponentWithChatContext = (store = {}) => render( describe('', () => { describe('when there are no chats', () => { + let store: ReturnType; + beforeEach(() => { + const state = rootState.setIn(['instance', 'version'], '2.7.2 (compatible; Pleroma 2.2.0)'); + store = mockStore(state); + __stub((mock) => { mock.onGet('/api/v1/pleroma/chats').reply(200, [], { link: null, @@ -32,7 +37,7 @@ describe('', () => { }); it('renders the blankslate', async () => { - renderComponentWithChatContext(); + renderComponentWithChatContext(store); await waitFor(() => { expect(screen.getByTestId('chat-pane-blankslate')).toBeInTheDocument(); @@ -57,4 +62,4 @@ describe('', () => { }); }); }); -}); \ No newline at end of file +}); diff --git a/app/soapbox/features/compose/components/__tests__/search.test.tsx b/app/soapbox/features/compose/components/__tests__/search.test.tsx index 1ecb11969d..f5f34783eb 100644 --- a/app/soapbox/features/compose/components/__tests__/search.test.tsx +++ b/app/soapbox/features/compose/components/__tests__/search.test.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { __stub } from 'soapbox/api'; -import { render, screen } from '../../../../jest/test-helpers'; +import { render, screen, waitFor } from '../../../../jest/test-helpers'; import Search from '../search'; describe('', () => { @@ -22,7 +22,9 @@ describe('', () => { await user.type(screen.getByLabelText('Search'), '@jus'); - expect(screen.getByLabelText('Search')).toHaveValue('@jus'); - expect(screen.getByTestId('account')).toBeInTheDocument(); + await waitFor(() => { + expect(screen.getByLabelText('Search')).toHaveValue('@jus'); + expect(screen.getByTestId('account')).toBeInTheDocument(); + }); }); }); diff --git a/app/soapbox/features/placeholder/components/placeholder-media-gallery.tsx b/app/soapbox/features/placeholder/components/placeholder-media-gallery.tsx index b309404783..3eab10e4d0 100644 --- a/app/soapbox/features/placeholder/components/placeholder-media-gallery.tsx +++ b/app/soapbox/features/placeholder/components/placeholder-media-gallery.tsx @@ -29,7 +29,7 @@ const PlaceholderMediaGallery: React.FC = ({ media, de let itemsDimensions: Record[] = []; if (size === 1) { - style.height = width; + style.height = width! * 9 / 16; itemsDimensions = [ { w: '100%', h: '100%' }, diff --git a/app/soapbox/features/settings/index.tsx b/app/soapbox/features/settings/index.tsx index c0a7a30563..06b8bf8a26 100644 --- a/app/soapbox/features/settings/index.tsx +++ b/app/soapbox/features/settings/index.tsx @@ -52,7 +52,7 @@ const Settings = () => { const isMfaEnabled = mfa.getIn(['settings', 'totp']); useEffect(() => { - dispatch(fetchMfa()); + if (features.security) dispatch(fetchMfa()); }, [dispatch]); if (!account) return null; diff --git a/app/soapbox/features/status/components/card.tsx b/app/soapbox/features/status/components/card.tsx index c19191f85c..18dd427a51 100644 --- a/app/soapbox/features/status/components/card.tsx +++ b/app/soapbox/features/status/components/card.tsx @@ -111,7 +111,7 @@ const Card: React.FC = ({ // Constrain to a sane limit // https://en.wikipedia.org/wiki/Aspect_ratio_(image) - return Math.min(Math.max(1, ratio), 4); + return Math.min(Math.max(9 / 16, ratio), 4); }; const interactive = card.type !== 'link'; diff --git a/app/soapbox/features/ui/components/floating-action-button.tsx b/app/soapbox/features/ui/components/floating-action-button.tsx index 8458670305..de00b55a72 100644 --- a/app/soapbox/features/ui/components/floating-action-button.tsx +++ b/app/soapbox/features/ui/components/floating-action-button.tsx @@ -27,7 +27,7 @@ const FloatingActionButton: React.FC = () => { onClick={handleOpenComposeModal} className={clsx( 'p-4 inline-flex items-center border font-medium rounded-full focus:outline-none focus:ring-2 focus:ring-offset-2 appearance-none transition-all', - 'bg-primary-500 hover:bg-primary-400 dark:hover:bg-primary-600 border-transparent focus:bg-primary-500 text-gray-100 focus:ring-primary-300', + 'border-transparent bg-secondary-500 hover:bg-secondary-400 focus:bg-secondary-500 text-gray-100 focus:ring-secondary-300', )} aria-label={intl.formatMessage(messages.publish)} > diff --git a/app/soapbox/features/ui/components/modals/media-modal.tsx b/app/soapbox/features/ui/components/modals/media-modal.tsx index bfd4ed29af..ff8b6b467b 100644 --- a/app/soapbox/features/ui/components/modals/media-modal.tsx +++ b/app/soapbox/features/ui/components/modals/media-modal.tsx @@ -13,7 +13,7 @@ import Video from 'soapbox/features/video'; import ImageLoader from '../image-loader'; import type { List as ImmutableList } from 'immutable'; -import type { Account, Attachment, Status } from 'soapbox/types/entities'; +import type { Attachment, Status } from 'soapbox/types/entities'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, @@ -24,7 +24,6 @@ const messages = defineMessages({ interface IMediaModal { media: ImmutableList, status?: Status, - account: Account, index: number, time?: number, onClose: () => void, @@ -34,7 +33,6 @@ const MediaModal: React.FC = (props) => { const { media, status, - account, onClose, time = 0, } = props; @@ -94,9 +92,9 @@ const MediaModal: React.FC = (props) => { }; const handleStatusClick: React.MouseEventHandler = e => { - if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { + if (status && e.button === 0 && !(e.ctrlKey || e.metaKey)) { e.preventDefault(); - history.push(`/@${account.acct}/posts/${status?.id}`); + history.push(`/@${status.getIn(['account', 'acct'])}/posts/${status?.id}`); onClose(); } }; @@ -170,7 +168,7 @@ const MediaModal: React.FC = (props) => { const width = (attachment.meta.getIn(['original', 'width']) || undefined) as number | undefined; const height = (attachment.meta.getIn(['original', 'height']) || undefined) as number | undefined; - const link = (status && account && ( + const link = (status && ( diff --git a/app/soapbox/features/ui/components/profile-media-panel.tsx b/app/soapbox/features/ui/components/profile-media-panel.tsx index 68c9987e59..cb71d777c8 100644 --- a/app/soapbox/features/ui/components/profile-media-panel.tsx +++ b/app/soapbox/features/ui/components/profile-media-panel.tsx @@ -31,7 +31,7 @@ const ProfileMediaPanel: React.FC = ({ account }) => { const media = attachment.getIn(['status', 'media_attachments']) as ImmutableList; const index = media.findIndex(x => x.id === attachment.id); - dispatch(openModal('MEDIA', { media, index, status: attachment.status, account: attachment.account })); + dispatch(openModal('MEDIA', { media, index, status: attachment.status })); } }; diff --git a/app/soapbox/load-polyfills.ts b/app/soapbox/load-polyfills.ts index cfd6f741f4..70de8aa334 100644 --- a/app/soapbox/load-polyfills.ts +++ b/app/soapbox/load-polyfills.ts @@ -28,15 +28,13 @@ function loadPolyfills() { window.Symbol ); - // Latest version of Firefox and Safari do not have IntersectionObserver. - // Edge does not have requestIdleCallback and object-fit CSS property. + // Older versions of Firefox and Safari do not have IntersectionObserver. // This avoids shipping them all the polyfills. const needsExtraPolyfills = !( window.IntersectionObserver && window.IntersectionObserverEntry && 'isIntersecting' in IntersectionObserverEntry.prototype && - window.requestIdleCallback && - 'object-fit' in (new Image()).style + window.requestIdleCallback ); return Promise.all([ diff --git a/app/soapbox/locales/defaultMessages.json b/app/soapbox/locales/defaultMessages.json deleted file mode 100644 index bc56f69d84..0000000000 --- a/app/soapbox/locales/defaultMessages.json +++ /dev/null @@ -1,6943 +0,0 @@ -[ - { - "descriptors": [ - { - "defaultMessage": "Oops!", - "id": "alert.unexpected.title" - }, - { - "defaultMessage": "An unexpected error occurred.", - "id": "alert.unexpected.message" - } - ], - "path": "app/soapbox/actions/alerts.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Account alias created successfully", - "id": "aliases.success.add" - }, - { - "defaultMessage": "Account alias removed successfully", - "id": "aliases.success.remove" - } - ], - "path": "app/soapbox/actions/aliases.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Logged out.", - "id": "auth.logged_out" - }, - { - "defaultMessage": "Wrong username or password", - "id": "auth.invalid_credentials" - } - ], - "path": "app/soapbox/actions/auth.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Image exceeds the current file size limit ({limit})", - "id": "upload_error.image_size_limit" - }, - { - "defaultMessage": "Video exceeds the current file size limit ({limit})", - "id": "upload_error.video_size_limit" - }, - { - "defaultMessage": "Video exceeds the current duration limit ({limit} seconds)", - "id": "upload_error.video_duration_limit" - }, - { - "defaultMessage": "You must schedule a post at least 5 minutes out.", - "id": "compose.invalid_schedule" - }, - { - "defaultMessage": "Your post was sent", - "id": "compose.submit_success" - }, - { - "defaultMessage": "Your post was edited", - "id": "compose.edit_success" - }, - { - "defaultMessage": "File upload limit exceeded.", - "id": "upload_error.limit" - }, - { - "defaultMessage": "File upload not allowed with polls.", - "id": "upload_error.poll" - }, - { - "defaultMessage": "View", - "id": "toast.view" - }, - { - "defaultMessage": "Reply", - "id": "confirmations.reply.confirm" - }, - { - "defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "id": "confirmations.reply.message" - } - ], - "path": "app/soapbox/actions/compose.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Blocks exported successfully", - "id": "export_data.success.blocks" - }, - { - "defaultMessage": "Followers exported successfully", - "id": "export_data.success.followers" - }, - { - "defaultMessage": "Mutes exported successfully", - "id": "export_data.success.mutes" - } - ], - "path": "app/soapbox/actions/export-data.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Filter added.", - "id": "filters.added" - }, - { - "defaultMessage": "Filter deleted.", - "id": "filters.removed" - } - ], - "path": "app/soapbox/actions/filters.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Blocks imported successfully", - "id": "import_data.success.blocks" - }, - { - "defaultMessage": "Followers imported successfully", - "id": "import_data.success.followers" - }, - { - "defaultMessage": "Mutes imported successfully", - "id": "import_data.success.mutes" - } - ], - "path": "app/soapbox/actions/import-data.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Bookmark added.", - "id": "status.bookmarked" - }, - { - "defaultMessage": "Bookmark removed.", - "id": "status.unbookmarked" - }, - { - "defaultMessage": "View", - "id": "toast.view" - } - ], - "path": "app/soapbox/actions/interactions.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Deactivate @{acct}", - "id": "confirmations.admin.deactivate_user.heading" - }, - { - "defaultMessage": "You are about to deactivate @{acct}. Deactivating a user is a reversible action.", - "id": "confirmations.admin.deactivate_user.message" - }, - { - "defaultMessage": "Deactivate @{name}", - "id": "confirmations.admin.deactivate_user.confirm" - }, - { - "defaultMessage": "@{acct} was deactivated", - "id": "admin.users.user_deactivated_message" - }, - { - "defaultMessage": "Delete @{acct}", - "id": "confirmations.admin.delete_user.heading" - }, - { - "defaultMessage": "You are about to delete @{acct}. THIS IS A DESTRUCTIVE ACTION THAT CANNOT BE UNDONE.", - "id": "confirmations.admin.delete_user.message" - }, - { - "defaultMessage": "Delete @{name}", - "id": "confirmations.admin.delete_user.confirm" - }, - { - "defaultMessage": "I understand that I am about to delete a local user.", - "id": "confirmations.admin.delete_local_user.checkbox" - }, - { - "defaultMessage": "@{acct} was deleted", - "id": "admin.users.user_deleted_message" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.admin.delete_status.heading" - }, - { - "defaultMessage": "You are about to delete a post by @{acct}. This action cannot be undone.", - "id": "confirmations.admin.delete_status.message" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.admin.delete_status.confirm" - }, - { - "defaultMessage": "Reject @{acct}", - "id": "confirmations.admin.reject_user.heading" - }, - { - "defaultMessage": "You are about to reject @{acct} registration request. This action cannot be undone.", - "id": "confirmations.admin.reject_user.message" - }, - { - "defaultMessage": "Reject @{name}", - "id": "confirmations.admin.reject_user.confirm" - }, - { - "defaultMessage": "Post by @{acct} was deleted", - "id": "admin.statuses.status_deleted_message" - }, - { - "defaultMessage": "Mark post sensitive", - "id": "confirmations.admin.mark_status_sensitive.heading" - }, - { - "defaultMessage": "Mark post not sensitive.", - "id": "confirmations.admin.mark_status_not_sensitive.heading" - }, - { - "defaultMessage": "You are about to mark a post by @{acct} sensitive.", - "id": "confirmations.admin.mark_status_sensitive.message" - }, - { - "defaultMessage": "You are about to mark a post by @{acct} not sensitive.", - "id": "confirmations.admin.mark_status_not_sensitive.message" - }, - { - "defaultMessage": "Mark post sensitive", - "id": "confirmations.admin.mark_status_sensitive.confirm" - }, - { - "defaultMessage": "Mark post not sensitive", - "id": "confirmations.admin.mark_status_not_sensitive.confirm" - }, - { - "defaultMessage": "Post by @{acct} was marked sensitive", - "id": "admin.statuses.status_marked_message_sensitive" - }, - { - "defaultMessage": "Post by @{acct} was marked not sensitive", - "id": "admin.statuses.status_marked_message_not_sensitive" - } - ], - "path": "app/soapbox/actions/moderation.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{name} mentioned you", - "id": "notification.mention" - }, - { - "defaultMessage": "{count} notifications", - "id": "notifications.group" - } - ], - "path": "app/soapbox/actions/notifications.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Your preferences have been saved!", - "id": "settings.save.success" - } - ], - "path": "app/soapbox/actions/settings.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Search for an account", - "id": "account_search.placeholder" - } - ], - "path": "app/soapbox/components/account-search.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Announcements", - "id": "announcements.title" - } - ], - "path": "app/soapbox/components/announcements/announcements-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Your birthday", - "id": "edit_profile.fields.birthday_placeholder" - }, - { - "defaultMessage": "Previous month", - "id": "datepicker.previous_month" - }, - { - "defaultMessage": "Next month", - "id": "datepicker.next_month" - }, - { - "defaultMessage": "Previous year", - "id": "datepicker.previous_year" - }, - { - "defaultMessage": "Next year", - "id": "datepicker.next_year" - } - ], - "path": "app/soapbox/components/birthday-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Birthdays", - "id": "birthday_panel.title" - } - ], - "path": "app/soapbox/components/birthday-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Copy", - "id": "input.copy" - } - ], - "path": "app/soapbox/components/copyable-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Hide entire domain", - "id": "confirmations.domain_block.confirm" - }, - { - "defaultMessage": "Unhide {domain}", - "id": "account.unblock_domain" - } - ], - "path": "app/soapbox/components/domain.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Something went wrong.", - "id": "alert.unexpected.message" - }, - { - "defaultMessage": "We're sorry for the interruption. If the problem persists, please reach out to our support team. You may also try to {clearCookies} (this will log you out).", - "id": "alert.unexpected.body" - }, - { - "defaultMessage": "clear cookies and browser data", - "id": "alert.unexpected.clear_cookies" - }, - { - "defaultMessage": "Return Home", - "id": "alert.unexpected.return_home" - }, - { - "defaultMessage": "Browser", - "id": "alert.unexpected.browser" - }, - { - "defaultMessage": "Status", - "id": "alert.unexpected.links.status" - }, - { - "defaultMessage": "Help Center", - "id": "alert.unexpected.links.help" - }, - { - "defaultMessage": "Support", - "id": "alert.unexpected.links.support" - } - ], - "path": "app/soapbox/components/error-boundary.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{siteTitle} uses cookies", - "id": "gdpr.title" - }, - { - "defaultMessage": "{siteTitle} uses session cookies, which are essential to the website's functioning.", - "id": "gdpr.message" - }, - { - "defaultMessage": "Learn more", - "id": "gdpr.learn_more" - }, - { - "defaultMessage": "Accept", - "id": "gdpr.accept" - } - ], - "path": "app/soapbox/components/gdpr-banner.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{count} {rawCount, plural, one {person} other {people}} talking", - "id": "trends.count_by_accounts" - } - ], - "path": "app/soapbox/components/hashtag.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Load more", - "id": "status.load_more" - } - ], - "path": "app/soapbox/components/load-gap.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Load more", - "id": "status.load_more" - } - ], - "path": "app/soapbox/components/load-more.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Not found", - "id": "missing_indicator.label" - }, - { - "defaultMessage": "This resource could not be found", - "id": "missing_indicator.sublabel" - } - ], - "path": "app/soapbox/components/missing-indicator.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - }, - { - "defaultMessage": "Cancel post editing", - "id": "confirmations.cancel_editing.heading" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.delete.heading" - }, - { - "defaultMessage": "Are you sure you want to cancel editing this post? All changes will be lost.", - "id": "confirmations.cancel_editing.message" - }, - { - "defaultMessage": "Are you sure you want to delete this post?", - "id": "confirmations.delete.message" - } - ], - "path": "app/soapbox/components/modal-root.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Closed", - "id": "poll.closed" - }, - { - "defaultMessage": "Other instances may display the options you voted for", - "id": "poll.non_anonymous.label" - }, - { - "defaultMessage": "{count, plural, one {# person} other {# people}}", - "id": "poll.total_people" - }, - { - "defaultMessage": "{count, plural, one {# vote} other {# votes}}", - "id": "poll.total_votes" - }, - { - "defaultMessage": "Vote", - "id": "poll.vote" - }, - { - "defaultMessage": "Public poll", - "id": "poll.non_anonymous" - }, - { - "defaultMessage": "Refresh", - "id": "poll.refresh" - } - ], - "path": "app/soapbox/components/polls/poll-footer.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You voted for this answer", - "id": "poll.voted" - }, - { - "defaultMessage": "{votes, plural, one {# vote} other {# votes}}", - "id": "poll.votes" - } - ], - "path": "app/soapbox/components/polls/poll-option.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Choose as many as you'd like.", - "id": "poll.choose_multiple" - } - ], - "path": "app/soapbox/components/polls/poll.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Joined {date}", - "id": "account.member_since" - }, - { - "defaultMessage": "Follows you", - "id": "account.follows_you" - } - ], - "path": "app/soapbox/components/profile-hover-card.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Cancel", - "id": "reply_indicator.cancel" - } - ], - "path": "app/soapbox/components/quoted-status.json" - }, - { - "descriptors": [ - { - "defaultMessage": "now", - "id": "relative_time.just_now" - }, - { - "defaultMessage": "{number}s", - "id": "relative_time.seconds" - }, - { - "defaultMessage": "{number}m", - "id": "relative_time.minutes" - }, - { - "defaultMessage": "{number}h", - "id": "relative_time.hours" - }, - { - "defaultMessage": "{number}d", - "id": "relative_time.days" - }, - { - "defaultMessage": "Moments remaining", - "id": "time_remaining.moments" - }, - { - "defaultMessage": "{number, plural, one {# second} other {# seconds}} left", - "id": "time_remaining.seconds" - }, - { - "defaultMessage": "{number, plural, one {# minute} other {# minutes}} left", - "id": "time_remaining.minutes" - }, - { - "defaultMessage": "{number, plural, one {# hour} other {# hours}} left", - "id": "time_remaining.hours" - }, - { - "defaultMessage": "{number, plural, one {# day} other {# days}} left", - "id": "time_remaining.days" - } - ], - "path": "app/soapbox/components/relative-timestamp.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Followers", - "id": "account.followers" - }, - { - "defaultMessage": "Follows", - "id": "account.follows" - }, - { - "defaultMessage": "Profile", - "id": "account.profile" - }, - { - "defaultMessage": "Preferences", - "id": "navigation_bar.preferences" - }, - { - "defaultMessage": "Blocked users", - "id": "navigation_bar.blocks" - }, - { - "defaultMessage": "Hidden domains", - "id": "navigation_bar.domain_blocks" - }, - { - "defaultMessage": "Muted users", - "id": "navigation_bar.mutes" - }, - { - "defaultMessage": "Muted words", - "id": "navigation_bar.filters" - }, - { - "defaultMessage": "Soapbox config", - "id": "navigation_bar.soapbox_config" - }, - { - "defaultMessage": "Import data", - "id": "navigation_bar.import_data" - }, - { - "defaultMessage": "Move account", - "id": "navigation_bar.account_migration" - }, - { - "defaultMessage": "Account aliases", - "id": "navigation_bar.account_aliases" - }, - { - "defaultMessage": "Logout", - "id": "navigation_bar.logout" - }, - { - "defaultMessage": "Bookmarks", - "id": "column.bookmarks" - }, - { - "defaultMessage": "Lists", - "id": "column.lists" - }, - { - "defaultMessage": "Invites", - "id": "navigation_bar.invites" - }, - { - "defaultMessage": "Developers", - "id": "navigation.developers" - }, - { - "defaultMessage": "Add an existing account", - "id": "profile_dropdown.add_account" - }, - { - "defaultMessage": "Follow requests", - "id": "navigation_bar.follow_requests" - }, - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Local", - "id": "tabs_bar.local" - }, - { - "defaultMessage": "All", - "id": "tabs_bar.all" - }, - { - "defaultMessage": "Fediverse", - "id": "tabs_bar.fediverse" - }, - { - "defaultMessage": "Switch accounts", - "id": "profile_dropdown.switch_account" - } - ], - "path": "app/soapbox/components/sidebar-menu.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Follow requests", - "id": "navigation_bar.follow_requests" - }, - { - "defaultMessage": "Bookmarks", - "id": "column.bookmarks" - }, - { - "defaultMessage": "Lists", - "id": "column.lists" - }, - { - "defaultMessage": "Developers", - "id": "navigation.developers" - }, - { - "defaultMessage": "Chats", - "id": "tabs_bar.chats" - }, - { - "defaultMessage": "Messages", - "id": "navigation.direct_messages" - }, - { - "defaultMessage": "Home", - "id": "tabs_bar.home" - }, - { - "defaultMessage": "Search", - "id": "tabs_bar.search" - }, - { - "defaultMessage": "Notifications", - "id": "tabs_bar.notifications" - }, - { - "defaultMessage": "Profile", - "id": "tabs_bar.profile" - }, - { - "defaultMessage": "Settings", - "id": "tabs_bar.settings" - }, - { - "defaultMessage": "Dashboard", - "id": "tabs_bar.dashboard" - }, - { - "defaultMessage": "Local", - "id": "tabs_bar.local" - }, - { - "defaultMessage": "All", - "id": "tabs_bar.all" - }, - { - "defaultMessage": "Fediverse", - "id": "tabs_bar.fediverse" - }, - { - "defaultMessage": "More", - "id": "tabs_bar.more" - } - ], - "path": "app/soapbox/components/sidebar-navigation.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Delete", - "id": "status.delete" - }, - { - "defaultMessage": "Delete & re-draft", - "id": "status.redraft" - }, - { - "defaultMessage": "Edit", - "id": "status.edit" - }, - { - "defaultMessage": "Direct message @{name}", - "id": "status.direct" - }, - { - "defaultMessage": "Chat with @{name}", - "id": "status.chat" - }, - { - "defaultMessage": "Mention @{name}", - "id": "status.mention" - }, - { - "defaultMessage": "Mute @{name}", - "id": "account.mute" - }, - { - "defaultMessage": "Block @{name}", - "id": "account.block" - }, - { - "defaultMessage": "Reply", - "id": "status.reply" - }, - { - "defaultMessage": "Share", - "id": "status.share" - }, - { - "defaultMessage": "More", - "id": "status.more" - }, - { - "defaultMessage": "Reply to thread", - "id": "status.replyAll" - }, - { - "defaultMessage": "Repost", - "id": "status.reblog" - }, - { - "defaultMessage": "Repost to original audience", - "id": "status.reblog_private" - }, - { - "defaultMessage": "Un-repost", - "id": "status.cancel_reblog_private" - }, - { - "defaultMessage": "This post cannot be reposted", - "id": "status.cannot_reblog" - }, - { - "defaultMessage": "Like", - "id": "status.favourite" - }, - { - "defaultMessage": "Expand this post", - "id": "status.open" - }, - { - "defaultMessage": "Bookmark", - "id": "status.bookmark" - }, - { - "defaultMessage": "Remove bookmark", - "id": "status.unbookmark" - }, - { - "defaultMessage": "Report @{name}", - "id": "status.report" - }, - { - "defaultMessage": "Mute conversation", - "id": "status.mute_conversation" - }, - { - "defaultMessage": "Unmute conversation", - "id": "status.unmute_conversation" - }, - { - "defaultMessage": "Pin on profile", - "id": "status.pin" - }, - { - "defaultMessage": "Unpin from profile", - "id": "status.unpin" - }, - { - "defaultMessage": "Embed", - "id": "status.embed" - }, - { - "defaultMessage": "Moderate @{name}", - "id": "status.admin_account" - }, - { - "defaultMessage": "Open this post in the moderation interface", - "id": "status.admin_status" - }, - { - "defaultMessage": "Copy link to post", - "id": "status.copy" - }, - { - "defaultMessage": "Remove account from group", - "id": "status.remove_account_from_group" - }, - { - "defaultMessage": "Remove post from group", - "id": "status.remove_post_from_group" - }, - { - "defaultMessage": "View post on {domain}", - "id": "status.external" - }, - { - "defaultMessage": "Deactivate @{name}", - "id": "admin.users.actions.deactivate_user" - }, - { - "defaultMessage": "Delete @{name}", - "id": "admin.users.actions.delete_user" - }, - { - "defaultMessage": "Delete post", - "id": "admin.statuses.actions.delete_status" - }, - { - "defaultMessage": "Mark post sensitive", - "id": "admin.statuses.actions.mark_status_sensitive" - }, - { - "defaultMessage": "Mark post not sensitive", - "id": "admin.statuses.actions.mark_status_not_sensitive" - }, - { - "defaultMessage": "Like", - "id": "status.reactions.like" - }, - { - "defaultMessage": "Love", - "id": "status.reactions.heart" - }, - { - "defaultMessage": "Haha", - "id": "status.reactions.laughing" - }, - { - "defaultMessage": "Wow", - "id": "status.reactions.open_mouth" - }, - { - "defaultMessage": "Sad", - "id": "status.reactions.cry" - }, - { - "defaultMessage": "Weary", - "id": "status.reactions.weary" - }, - { - "defaultMessage": "Quote post", - "id": "status.quote" - }, - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.delete.heading" - }, - { - "defaultMessage": "Are you sure you want to delete this post?", - "id": "confirmations.delete.message" - }, - { - "defaultMessage": "Delete & redraft", - "id": "confirmations.redraft.confirm" - }, - { - "defaultMessage": "Are you sure you want to delete this post and re-draft it? Favorites and reposts will be lost, and replies to the original post will be orphaned.", - "id": "confirmations.redraft.message" - }, - { - "defaultMessage": "Block", - "id": "confirmations.block.confirm" - }, - { - "defaultMessage": "Reply", - "id": "confirmations.reply.confirm" - }, - { - "defaultMessage": "Delete & redraft", - "id": "confirmations.redraft.heading" - }, - { - "defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "id": "confirmations.reply.message" - }, - { - "defaultMessage": "Block & Report", - "id": "confirmations.block.block_and_report" - }, - { - "defaultMessage": "Block @{name}", - "id": "confirmations.block.heading" - }, - { - "defaultMessage": "Are you sure you want to block {name}?", - "id": "confirmations.block.message" - } - ], - "path": "app/soapbox/components/status-action-bar.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Read more", - "id": "status.read_more" - } - ], - "path": "app/soapbox/components/status-content.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Loading…", - "id": "regeneration_indicator.label" - }, - { - "defaultMessage": "Your home feed is being prepared!", - "id": "regeneration_indicator.sublabel" - } - ], - "path": "app/soapbox/components/status-list.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Replying to post", - "id": "reply_mentions.reply_empty" - }, - { - "defaultMessage": "{count} more", - "id": "reply_mentions.more" - }, - { - "defaultMessage": "Replying to {accounts}", - "id": "reply_mentions.reply.hoverable" - } - ], - "path": "app/soapbox/components/status-reply-mentions.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{name} reposted", - "id": "status.reblogged_by" - }, - { - "defaultMessage": "Filtered", - "id": "status.filtered" - }, - { - "defaultMessage": "Post is unavailable.", - "id": "statuses.quote_tombstone" - }, - { - "defaultMessage": "Pinned post", - "id": "status.pinned" - } - ], - "path": "app/soapbox/components/status.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Delete", - "id": "status.delete" - }, - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.delete.heading" - }, - { - "defaultMessage": "Are you sure you want to delete this post?", - "id": "confirmations.delete.message" - }, - { - "defaultMessage": "Hide content", - "id": "moderation_overlay.hide" - }, - { - "defaultMessage": "Sensitive content", - "id": "status.sensitive_warning" - }, - { - "defaultMessage": "Content Under Review", - "id": "moderation_overlay.title" - }, - { - "defaultMessage": "This Post has been sent to Moderation for review and is only visible to you. If you believe this is an error please contact Support.", - "id": "moderation_overlay.subtitle" - }, - { - "defaultMessage": "This content may not be suitable for all audiences.", - "id": "status.sensitive_warning.subtitle" - }, - { - "defaultMessage": "Contact", - "id": "moderation_overlay.contact" - }, - { - "defaultMessage": "Show Content", - "id": "moderation_overlay.show" - } - ], - "path": "app/soapbox/components/statuses/sensitive-content-overlay.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Back", - "id": "column_back_button.label" - } - ], - "path": "app/soapbox/components/sub-navigation.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Chats", - "id": "navigation.chats" - }, - { - "defaultMessage": "Messages", - "id": "navigation.direct_messages" - }, - { - "defaultMessage": "Home", - "id": "navigation.home" - }, - { - "defaultMessage": "Search", - "id": "navigation.search" - }, - { - "defaultMessage": "Alerts", - "id": "navigation.notifications" - }, - { - "defaultMessage": "Dashboard", - "id": "navigation.dashboard" - } - ], - "path": "app/soapbox/components/thumb-navigation.json" - }, - { - "descriptors": [ - { - "defaultMessage": "One or more posts are unavailable.", - "id": "statuses.tombstone" - } - ], - "path": "app/soapbox/components/tombstone.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Translated from {lang} using {provider}", - "id": "status.translated_from_with" - }, - { - "defaultMessage": "Show original", - "id": "status.show_original" - }, - { - "defaultMessage": "Translate", - "id": "status.translate" - } - ], - "path": "app/soapbox/components/translate-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Collapse", - "id": "accordion.collapse" - }, - { - "defaultMessage": "Expand", - "id": "accordion.expand" - } - ], - "path": "app/soapbox/components/ui/accordion/accordion.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Back", - "id": "card.back.label" - } - ], - "path": "app/soapbox/components/ui/card/card.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Month", - "id": "datepicker.month" - }, - { - "defaultMessage": "Day", - "id": "datepicker.day" - }, - { - "defaultMessage": "Year", - "id": "datepicker.year" - } - ], - "path": "app/soapbox/components/ui/datepicker/datepicker.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Show password", - "id": "input.password.show_password" - }, - { - "defaultMessage": "Hide password", - "id": "input.password.hide_password" - } - ], - "path": "app/soapbox/components/ui/input/input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - } - ], - "path": "app/soapbox/components/ui/modal/modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Loading…", - "id": "loading_indicator.label" - } - ], - "path": "app/soapbox/components/ui/spinner/spinner.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Add", - "id": "streamfield.add" - }, - { - "defaultMessage": "Remove", - "id": "streamfield.remove" - } - ], - "path": "app/soapbox/components/ui/streamfield/streamfield.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Uploading…", - "id": "upload_progress.label" - } - ], - "path": "app/soapbox/components/upload-progress.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Verified Account", - "id": "account.verified" - } - ], - "path": "app/soapbox/components/verification-badge.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Unfollow", - "id": "confirmations.unfollow.confirm" - }, - { - "defaultMessage": "Unfollow {name}", - "id": "confirmations.unfollow.heading" - }, - { - "defaultMessage": "Are you sure you want to unfollow {name}?", - "id": "confirmations.unfollow.message" - } - ], - "path": "app/soapbox/containers/account-container.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Available in:", - "id": "about.also_available" - } - ], - "path": "app/soapbox/features/about/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Profile unavailable", - "id": "empty_column.account_unavailable" - }, - { - "defaultMessage": "No media to show.", - "id": "account_gallery.none" - } - ], - "path": "app/soapbox/features/account-gallery/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{name} moved to {targetName}", - "id": "notification.move" - } - ], - "path": "app/soapbox/features/account-timeline/components/moved-note.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You are blocked by @{accountUsername}.", - "id": "empty_column.account_blocked" - }, - { - "defaultMessage": "Profile unavailable", - "id": "empty_column.account_unavailable" - }, - { - "defaultMessage": "No posts here!", - "id": "empty_column.account_timeline" - } - ], - "path": "app/soapbox/features/account-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Edit profile", - "id": "account.edit_profile" - }, - { - "defaultMessage": "Ownership of this link was checked on {date}", - "id": "account.link_verified_on" - }, - { - "defaultMessage": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "id": "account.locked_info" - }, - { - "defaultMessage": "Mention", - "id": "account.mention" - }, - { - "defaultMessage": "Chat with @{name}", - "id": "account.chat" - }, - { - "defaultMessage": "Direct message @{name}", - "id": "account.direct" - }, - { - "defaultMessage": "Unmute @{name}", - "id": "account.unmute" - }, - { - "defaultMessage": "Block @{name}", - "id": "account.block" - }, - { - "defaultMessage": "Unblock @{name}", - "id": "account.unblock" - }, - { - "defaultMessage": "Mute @{name}", - "id": "account.mute" - }, - { - "defaultMessage": "Report @{name}", - "id": "account.report" - }, - { - "defaultMessage": "Share @{name}'s profile", - "id": "account.share" - }, - { - "defaultMessage": "Media", - "id": "account.media" - }, - { - "defaultMessage": "Hide everything from {domain}", - "id": "account.block_domain" - }, - { - "defaultMessage": "Unhide {domain}", - "id": "account.unblock_domain" - }, - { - "defaultMessage": "Hide reposts from @{name}", - "id": "account.hide_reblogs" - }, - { - "defaultMessage": "Show reposts from @{name}", - "id": "account.show_reblogs" - }, - { - "defaultMessage": "Preferences", - "id": "navigation_bar.preferences" - }, - { - "defaultMessage": "Follow requests", - "id": "navigation_bar.follow_requests" - }, - { - "defaultMessage": "Blocked users", - "id": "navigation_bar.blocks" - }, - { - "defaultMessage": "Hidden domains", - "id": "navigation_bar.domain_blocks" - }, - { - "defaultMessage": "Muted users", - "id": "navigation_bar.mutes" - }, - { - "defaultMessage": "Feature on profile", - "id": "account.endorse" - }, - { - "defaultMessage": "Don't feature on profile", - "id": "account.unendorse" - }, - { - "defaultMessage": "Remove this follower", - "id": "account.remove_from_followers" - }, - { - "defaultMessage": "Moderate @{name}", - "id": "status.admin_account" - }, - { - "defaultMessage": "Add or Remove from lists", - "id": "account.add_or_remove_from_list" - }, - { - "defaultMessage": "Search from @{name}", - "id": "account.search" - }, - { - "defaultMessage": "Search your posts", - "id": "account.search_self" - }, - { - "defaultMessage": "Unfollow", - "id": "confirmations.unfollow.confirm" - }, - { - "defaultMessage": "Block", - "id": "confirmations.block.confirm" - }, - { - "defaultMessage": "Hide entire domain", - "id": "confirmations.domain_block.confirm" - }, - { - "defaultMessage": "Block & Report", - "id": "confirmations.block.block_and_report" - }, - { - "defaultMessage": "Remove", - "id": "confirmations.remove_from_followers.confirm" - }, - { - "defaultMessage": "You are now featuring @{acct} on your profile", - "id": "account.endorse.success" - }, - { - "defaultMessage": "You are no longer featuring @{acct}", - "id": "account.unendorse.success" - }, - { - "defaultMessage": "View profile on {domain}", - "id": "account.profile_external" - }, - { - "defaultMessage": "Profile header", - "id": "account.header.alt" - }, - { - "defaultMessage": "Block @{name}", - "id": "confirmations.block.heading" - }, - { - "defaultMessage": "Are you sure you want to block {name}?", - "id": "confirmations.block.message" - }, - { - "defaultMessage": "Block {domain}", - "id": "confirmations.domain_block.heading" - }, - { - "defaultMessage": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", - "id": "confirmations.domain_block.message" - }, - { - "defaultMessage": "Are you sure you want to remove {name} from your followers?", - "id": "confirmations.remove_from_followers.message" - }, - { - "defaultMessage": "Follows you", - "id": "account.follows_you" - }, - { - "defaultMessage": "Blocked", - "id": "account.blocked" - }, - { - "defaultMessage": "Muted", - "id": "account.muted" - }, - { - "defaultMessage": "Domain hidden", - "id": "account.domain_blocked" - } - ], - "path": "app/soapbox/features/account/components/header.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Dashboard", - "id": "admin_nav.dashboard" - }, - { - "defaultMessage": "Reports", - "id": "admin_nav.reports" - }, - { - "defaultMessage": "Waitlist", - "id": "admin_nav.awaiting_approval" - } - ], - "path": "app/soapbox/features/admin/components/admin-tabs.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Latest Accounts", - "id": "admin.latest_accounts_panel.title" - }, - { - "defaultMessage": "Click to see {count} {count, plural, one {account} other {accounts}}", - "id": "admin.latest_accounts_panel.more" - } - ], - "path": "app/soapbox/features/admin/components/latest-accounts-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Settings saved!", - "id": "admin.dashboard.settings_saved" - }, - { - "defaultMessage": "Registrations", - "id": "admin.dashboard.registration_mode_label" - }, - { - "defaultMessage": "Open", - "id": "admin.dashboard.registration_mode.open_label" - }, - { - "defaultMessage": "Anyone can join.", - "id": "admin.dashboard.registration_mode.open_hint" - }, - { - "defaultMessage": "Approval Required", - "id": "admin.dashboard.registration_mode.approval_label" - }, - { - "defaultMessage": "Users can sign up, but their account only gets activated when an admin approves it.", - "id": "admin.dashboard.registration_mode.approval_hint" - }, - { - "defaultMessage": "Closed", - "id": "admin.dashboard.registration_mode.closed_label" - }, - { - "defaultMessage": "Nobody can sign up. You can still invite people.", - "id": "admin.dashboard.registration_mode.closed_hint" - } - ], - "path": "app/soapbox/features/admin/components/registration-mode-picker.json" - }, - { - "descriptors": [ - { - "defaultMessage": "View post", - "id": "admin.reports.actions.view_status" - }, - { - "defaultMessage": "Delete post", - "id": "admin.statuses.actions.delete_status" - } - ], - "path": "app/soapbox/features/admin/components/report-status.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Report on @{name} was closed", - "id": "admin.reports.report_closed_message" - }, - { - "defaultMessage": "Deactivate @{name}", - "id": "admin.users.actions.deactivate_user" - }, - { - "defaultMessage": "Delete @{name}", - "id": "admin.users.actions.delete_user" - }, - { - "defaultMessage": "Report on {acct}", - "id": "admin.reports.report_title" - }, - { - "defaultMessage": "Close", - "id": "admin.reports.actions.close" - } - ], - "path": "app/soapbox/features/admin/components/report.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{acct} was approved!", - "id": "admin.awaiting_approval.approved_message" - }, - { - "defaultMessage": "{acct} was rejected.", - "id": "admin.awaiting_approval.rejected_message" - } - ], - "path": "app/soapbox/features/admin/components/unapproved-account.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Dashboard", - "id": "column.admin.dashboard" - } - ], - "path": "app/soapbox/features/admin/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Moderation Log", - "id": "column.admin.moderation_log" - }, - { - "defaultMessage": "You have not performed any moderation actions yet. When you do, a history will be shown here.", - "id": "admin.moderation_log.empty_message" - } - ], - "path": "app/soapbox/features/admin/moderation-log.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Awaiting Approval", - "id": "column.admin.awaiting_approval" - }, - { - "defaultMessage": "There is nobody waiting for approval. When a new user signs up, you can review them here.", - "id": "admin.awaiting_approval.empty_message" - } - ], - "path": "app/soapbox/features/admin/tabs/awaiting-approval.json" - }, - { - "descriptors": [ - { - "defaultMessage": "monthly active users", - "id": "admin.dashcounters.mau_label" - }, - { - "defaultMessage": "total users", - "id": "admin.dashcounters.user_count_label" - }, - { - "defaultMessage": "user retention", - "id": "admin.dashcounters.retention_label" - }, - { - "defaultMessage": "posts", - "id": "admin.dashcounters.status_count_label" - }, - { - "defaultMessage": "peers", - "id": "admin.dashcounters.domain_count_label" - }, - { - "defaultMessage": "Software", - "id": "admin.dashwidgets.software_header" - }, - { - "defaultMessage": "Email list", - "id": "admin.dashwidgets.email_list_header" - } - ], - "path": "app/soapbox/features/admin/tabs/dashboard.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Reports", - "id": "column.admin.reports" - }, - { - "defaultMessage": "Moderation Log", - "id": "column.admin.reports.menu.moderation_log" - }, - { - "defaultMessage": "There are no open reports. If a user gets reported, they will show up here.", - "id": "admin.reports.empty_message" - } - ], - "path": "app/soapbox/features/admin/tabs/reports.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Users", - "id": "column.admin.users" - }, - { - "defaultMessage": "No users found.", - "id": "admin.user_index.empty" - }, - { - "defaultMessage": "Who are you looking for?", - "id": "admin.user_index.search_input_placeholder" - } - ], - "path": "app/soapbox/features/admin/user-index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Sponsored post", - "id": "sponsored.subtitle" - }, - { - "defaultMessage": "Why am I seeing this ad?", - "id": "sponsored.info.title" - }, - { - "defaultMessage": "{siteTitle} displays ads to help fund our service.", - "id": "sponsored.info.message" - } - ], - "path": "app/soapbox/features/ads/components/ad.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Create alias", - "id": "aliases.account.add" - } - ], - "path": "app/soapbox/features/aliases/components/account.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Search your old account", - "id": "aliases.search" - }, - { - "defaultMessage": "Search", - "id": "tabs_bar.search" - } - ], - "path": "app/soapbox/features/aliases/components/search.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Account aliases", - "id": "column.aliases" - }, - { - "defaultMessage": "Add New Alias", - "id": "column.aliases.subheading_add_new" - }, - { - "defaultMessage": "Error creating alias", - "id": "column.aliases.create_error" - }, - { - "defaultMessage": "Error deleting alias", - "id": "column.aliases.delete_error" - }, - { - "defaultMessage": "Current aliases", - "id": "column.aliases.subheading_aliases" - }, - { - "defaultMessage": "Delete", - "id": "column.aliases.delete" - }, - { - "defaultMessage": "You haven't created any account alias yet.", - "id": "empty_column.aliases" - }, - { - "defaultMessage": "There are no account suggestions available for the provided term.", - "id": "empty_column.aliases.suggestions" - }, - { - "defaultMessage": "Old account:", - "id": "aliases.account_label" - }, - { - "defaultMessage": "Unlink alias", - "id": "aliases.aliases_list_delete" - } - ], - "path": "app/soapbox/features/aliases/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Play", - "id": "video.play" - }, - { - "defaultMessage": "Pause", - "id": "video.pause" - }, - { - "defaultMessage": "Mute sound", - "id": "video.mute" - }, - { - "defaultMessage": "Unmute sound", - "id": "video.unmute" - }, - { - "defaultMessage": "Download file", - "id": "video.download" - } - ], - "path": "app/soapbox/features/audio/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Create an account", - "id": "auth_layout.register" - } - ], - "path": "app/soapbox/features/auth-layout/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Enter the pictured text", - "id": "registration.captcha.placeholder" - }, - { - "defaultMessage": "Click the image to get a new captcha", - "id": "registration.captcha.hint" - } - ], - "path": "app/soapbox/features/auth-login/components/captcha.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Sign in with {provider}", - "id": "oauth_consumer.tooltip" - } - ], - "path": "app/soapbox/features/auth-login/components/consumer-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Other ways to sign in", - "id": "oauth_consumers.title" - } - ], - "path": "app/soapbox/features/auth-login/components/consumers-list.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Email or username", - "id": "login.fields.username_label" - }, - { - "defaultMessage": "Password", - "id": "login.fields.password_placeholder" - }, - { - "defaultMessage": "Sign In", - "id": "login_form.header" - }, - { - "defaultMessage": "Trouble logging in?", - "id": "login.reset_password_hint" - }, - { - "defaultMessage": "Sign in", - "id": "login.sign_in" - } - ], - "path": "app/soapbox/features/auth-login/components/login-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Enter the two-factor code generated by your phone app or use one of your recovery codes", - "id": "login.fields.otp_code_hint" - }, - { - "defaultMessage": "Two-factor code:", - "id": "login.fields.otp_code_label" - }, - { - "defaultMessage": "Invalid code, please try again.", - "id": "login.otp_log_in.fail" - }, - { - "defaultMessage": "OTP Login", - "id": "login.otp_log_in" - }, - { - "defaultMessage": "Sign in", - "id": "login.sign_in" - } - ], - "path": "app/soapbox/features/auth-login/components/otp-auth-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Expired token, please try again.", - "id": "reset_password.fail" - }, - { - "defaultMessage": "Placeholder", - "id": "reset_password.password.placeholder" - }, - { - "defaultMessage": "Set New Password", - "id": "reset_password.header" - }, - { - "defaultMessage": "Password", - "id": "reset_password.password.label" - }, - { - "defaultMessage": "Reset password", - "id": "password_reset.reset" - } - ], - "path": "app/soapbox/features/auth-login/components/password-reset-confirm.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Email or username", - "id": "password_reset.fields.username_placeholder" - }, - { - "defaultMessage": "Check your email for confirmation.", - "id": "password_reset.confirmation" - }, - { - "defaultMessage": "Reset Password", - "id": "password_reset.header" - }, - { - "defaultMessage": "Reset password", - "id": "password_reset.reset" - } - ], - "path": "app/soapbox/features/auth-login/components/password-reset.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Username", - "id": "registration.fields.username_placeholder" - }, - { - "defaultMessage": "Only letters, numbers, and underscores are allowed.", - "id": "registration.fields.username_hint" - }, - { - "defaultMessage": "Username is already taken.", - "id": "registration.username_unavailable" - }, - { - "defaultMessage": "E-Mail address", - "id": "registration.fields.email_placeholder" - }, - { - "defaultMessage": "Password", - "id": "registration.fields.password_placeholder" - }, - { - "defaultMessage": "Passwords don't match.", - "id": "registration.password_mismatch" - }, - { - "defaultMessage": "Password (again)", - "id": "registration.fields.confirm_placeholder" - }, - { - "defaultMessage": "I agree to the {tos}.", - "id": "registration.agreement" - }, - { - "defaultMessage": "Terms of Service", - "id": "registration.tos" - }, - { - "defaultMessage": "Close", - "id": "registration.confirmation_modal.close" - }, - { - "defaultMessage": "Subscribe to newsletter.", - "id": "registration.newsletter" - }, - { - "defaultMessage": "Confirmation needed", - "id": "confirmations.register.needs_confirmation.header" - }, - { - "defaultMessage": "Approval needed", - "id": "confirmations.register.needs_approval.header" - }, - { - "defaultMessage": "Please check your inbox at {email} for confirmation instructions. You will need to verify your email address to continue.", - "id": "confirmations.register.needs_confirmation" - }, - { - "defaultMessage": "Your account will be manually approved by an admin. Please be patient while we review your details.", - "id": "confirmations.register.needs_approval" - }, - { - "defaultMessage": "Why do you want to join?", - "id": "registration.reason" - }, - { - "defaultMessage": "This will help us review your application", - "id": "registration.reason_hint" - }, - { - "defaultMessage": "Sign up", - "id": "registration.sign_up" - } - ], - "path": "app/soapbox/features/auth-login/components/registration-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Sessions", - "id": "security.headers.tokens" - }, - { - "defaultMessage": "Revoke", - "id": "security.tokens.revoke" - }, - { - "defaultMessage": "Revoke current session", - "id": "confirmations.revoke_session.heading" - }, - { - "defaultMessage": "You are about to revoke your current session. You will be signed out.", - "id": "confirmations.revoke_session.message" - }, - { - "defaultMessage": "Revoke", - "id": "confirmations.revoke_session.confirm" - } - ], - "path": "app/soapbox/features/auth-token-list/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Backups", - "id": "column.backups" - }, - { - "defaultMessage": "Create backup", - "id": "backups.actions.create" - }, - { - "defaultMessage": "No backups found. {action}", - "id": "backups.empty_message" - }, - { - "defaultMessage": "Create one now?", - "id": "backups.empty_message.action" - }, - { - "defaultMessage": "Pending", - "id": "backups.pending" - } - ], - "path": "app/soapbox/features/backups/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Born {date}", - "id": "account.birthday" - } - ], - "path": "app/soapbox/features/birthdays/account.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Blocked users", - "id": "column.blocks" - }, - { - "defaultMessage": "You haven't blocked any users yet.", - "id": "empty_column.blocks" - } - ], - "path": "app/soapbox/features/blocks/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Bookmarks", - "id": "column.bookmarks" - }, - { - "defaultMessage": "You don't have any bookmarks yet. When you add one, it will show up here.", - "id": "empty_column.bookmarks" - } - ], - "path": "app/soapbox/features/bookmarks/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Audio notification on", - "id": "chats.audio_toggle_on" - }, - { - "defaultMessage": "Audio notification off", - "id": "chats.audio_toggle_off" - } - ], - "path": "app/soapbox/features/chats/components/audio-toggle.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Send a message…", - "id": "chat_box.input.placeholder" - }, - { - "defaultMessage": "Send", - "id": "chat_box.actions.send" - } - ], - "path": "app/soapbox/features/chats/components/chat-box.json" - }, - { - "descriptors": [ - { - "defaultMessage": "No chats found. To start a chat, visit a user's profile", - "id": "chat_panels.main_window.empty" - } - ], - "path": "app/soapbox/features/chats/components/chat-list.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Today", - "id": "chats.dividers.today" - }, - { - "defaultMessage": "More", - "id": "chats.actions.more" - }, - { - "defaultMessage": "Delete message", - "id": "chats.actions.delete" - }, - { - "defaultMessage": "Report user", - "id": "chats.actions.report" - } - ], - "path": "app/soapbox/features/chats/components/chat-message-list.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Start a chat with…", - "id": "chats.search_placeholder" - }, - { - "defaultMessage": "Chats", - "id": "chat_panels.main_window.title" - } - ], - "path": "app/soapbox/features/chats/components/chat-panes.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close chat", - "id": "chat_window.close" - } - ], - "path": "app/soapbox/features/chats/components/chat-window.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Image", - "id": "chats.attachment_image" - }, - { - "defaultMessage": "Attachment", - "id": "chats.attachment" - } - ], - "path": "app/soapbox/features/chats/components/chat.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Chats", - "id": "column.chats" - }, - { - "defaultMessage": "Start a chat with…", - "id": "chats.search_placeholder" - } - ], - "path": "app/soapbox/features/chats/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Local timeline", - "id": "column.community" - }, - { - "defaultMessage": "The local timeline is empty. Write something publicly to get the ball rolling!", - "id": "empty_column.community" - } - ], - "path": "app/soapbox/features/community-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "What's on your mind?", - "id": "compose_form.placeholder" - }, - { - "defaultMessage": "Add a poll topic...", - "id": "compose_form.poll_placeholder" - }, - { - "defaultMessage": "Write your warning here (optional)", - "id": "compose_form.spoiler_placeholder" - }, - { - "defaultMessage": "Post", - "id": "compose_form.publish" - }, - { - "defaultMessage": "{publish}!", - "id": "compose_form.publish_loud" - }, - { - "defaultMessage": "Message", - "id": "compose_form.message" - }, - { - "defaultMessage": "Schedule", - "id": "compose_form.schedule" - }, - { - "defaultMessage": "Save changes", - "id": "compose_form.save_changes" - }, - { - "defaultMessage": "You have scheduled posts. {click_here} to see them.", - "id": "compose_form.scheduled_statuses.message" - }, - { - "defaultMessage": "Click here", - "id": "compose_form.scheduled_statuses.click_here" - } - ], - "path": "app/soapbox/features/compose/components/compose-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Insert emoji", - "id": "emoji_button.label" - }, - { - "defaultMessage": "Search…", - "id": "emoji_button.search" - }, - { - "defaultMessage": "No emoji's found.", - "id": "emoji_button.not_found" - }, - { - "defaultMessage": "Custom", - "id": "emoji_button.custom" - }, - { - "defaultMessage": "Frequently used", - "id": "emoji_button.recent" - }, - { - "defaultMessage": "Search results", - "id": "emoji_button.search_results" - }, - { - "defaultMessage": "People", - "id": "emoji_button.people" - }, - { - "defaultMessage": "Nature", - "id": "emoji_button.nature" - }, - { - "defaultMessage": "Food & Drink", - "id": "emoji_button.food" - }, - { - "defaultMessage": "Activity", - "id": "emoji_button.activity" - }, - { - "defaultMessage": "Travel & Places", - "id": "emoji_button.travel" - }, - { - "defaultMessage": "Objects", - "id": "emoji_button.objects" - }, - { - "defaultMessage": "Symbols", - "id": "emoji_button.symbols" - }, - { - "defaultMessage": "Flags", - "id": "emoji_button.flags" - } - ], - "path": "app/soapbox/features/compose/components/emoji-picker/emoji-picker-dropdown.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Insert emoji", - "id": "emoji_button.label" - }, - { - "defaultMessage": "Search…", - "id": "emoji_button.search" - }, - { - "defaultMessage": "No emoji's found.", - "id": "emoji_button.not_found" - }, - { - "defaultMessage": "Custom", - "id": "emoji_button.custom" - }, - { - "defaultMessage": "Frequently used", - "id": "emoji_button.recent" - }, - { - "defaultMessage": "Search results", - "id": "emoji_button.search_results" - }, - { - "defaultMessage": "People", - "id": "emoji_button.people" - }, - { - "defaultMessage": "Nature", - "id": "emoji_button.nature" - }, - { - "defaultMessage": "Food & Drink", - "id": "emoji_button.food" - }, - { - "defaultMessage": "Activity", - "id": "emoji_button.activity" - }, - { - "defaultMessage": "Travel & Places", - "id": "emoji_button.travel" - }, - { - "defaultMessage": "Objects", - "id": "emoji_button.objects" - }, - { - "defaultMessage": "Symbols", - "id": "emoji_button.symbols" - }, - { - "defaultMessage": "Flags", - "id": "emoji_button.flags" - } - ], - "path": "app/soapbox/features/compose/components/emoji-picker/emoji-picker-menu.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Post markdown enabled", - "id": "compose_form.markdown.marked" - }, - { - "defaultMessage": "Post markdown disabled", - "id": "compose_form.markdown.unmarked" - } - ], - "path": "app/soapbox/features/compose/components/markdown-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Add a poll", - "id": "poll_button.add_poll" - }, - { - "defaultMessage": "Remove poll", - "id": "poll_button.remove_poll" - } - ], - "path": "app/soapbox/features/compose/components/poll-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{number, plural, one {# minute} other {# minutes}}", - "id": "intervals.full.minutes" - }, - { - "defaultMessage": "{number, plural, one {# hour} other {# hours}}", - "id": "intervals.full.hours" - }, - { - "defaultMessage": "{number, plural, one {# day} other {# days}}", - "id": "intervals.full.days" - } - ], - "path": "app/soapbox/features/compose/components/polls/duration-selector.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Answer #{number}", - "id": "compose_form.poll.option_placeholder" - }, - { - "defaultMessage": "Add an answer", - "id": "compose_form.poll.add_option" - }, - { - "defaultMessage": "Duration", - "id": "compose_form.poll.duration" - }, - { - "defaultMessage": "Remove poll", - "id": "compose_form.poll.remove" - }, - { - "defaultMessage": "Change poll to allow multiple answers", - "id": "compose_form.poll.switch_to_multiple" - }, - { - "defaultMessage": "Change poll to allow for a single answer", - "id": "compose_form.poll.switch_to_single" - }, - { - "defaultMessage": "{number, plural, one {# minute} other {# minutes}}", - "id": "intervals.full.minutes" - }, - { - "defaultMessage": "{number, plural, one {# hour} other {# hours}}", - "id": "intervals.full.hours" - }, - { - "defaultMessage": "{number, plural, one {# day} other {# days}}", - "id": "intervals.full.days" - }, - { - "defaultMessage": "Multi-Select", - "id": "compose_form.poll.multiselect" - }, - { - "defaultMessage": "Allow users to select multiple answers", - "id": "compose_form.poll.multiselect_detail" - }, - { - "defaultMessage": "Delete", - "id": "compose_form.poll.remove_option" - } - ], - "path": "app/soapbox/features/compose/components/polls/poll-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Public", - "id": "privacy.public.short" - }, - { - "defaultMessage": "Post to public timelines", - "id": "privacy.public.long" - }, - { - "defaultMessage": "Unlisted", - "id": "privacy.unlisted.short" - }, - { - "defaultMessage": "Do not post to public timelines", - "id": "privacy.unlisted.long" - }, - { - "defaultMessage": "Followers-only", - "id": "privacy.private.short" - }, - { - "defaultMessage": "Post to followers only", - "id": "privacy.private.long" - }, - { - "defaultMessage": "Direct", - "id": "privacy.direct.short" - }, - { - "defaultMessage": "Post to mentioned users only", - "id": "privacy.direct.long" - }, - { - "defaultMessage": "Adjust post privacy", - "id": "privacy.change" - } - ], - "path": "app/soapbox/features/compose/components/privacy-dropdown.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Replying to post", - "id": "reply_mentions.reply_empty" - }, - { - "defaultMessage": "{count} more", - "id": "reply_mentions.more" - }, - { - "defaultMessage": "Replying to {accounts}", - "id": "reply_mentions.reply" - } - ], - "path": "app/soapbox/features/compose/components/reply-mentions.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Schedule post for later", - "id": "schedule_button.add_schedule" - }, - { - "defaultMessage": "Post immediately", - "id": "schedule_button.remove_schedule" - } - ], - "path": "app/soapbox/features/compose/components/schedule-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Post Date/Time", - "id": "schedule.post_time" - }, - { - "defaultMessage": "Remove schedule", - "id": "schedule.remove" - }, - { - "defaultMessage": "Scheduled to post at…", - "id": "datepicker.hint" - } - ], - "path": "app/soapbox/features/compose/components/schedule-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "People", - "id": "search_results.accounts" - }, - { - "defaultMessage": "Posts", - "id": "search_results.statuses" - }, - { - "defaultMessage": "Hashtags", - "id": "search_results.hashtags" - }, - { - "defaultMessage": "There are no people results for \"{term}\"", - "id": "empty_column.search.accounts" - }, - { - "defaultMessage": "There are no posts results for \"{term}\"", - "id": "empty_column.search.statuses" - }, - { - "defaultMessage": "There are no hashtags results for \"{term}\"", - "id": "empty_column.search.hashtags" - }, - { - "defaultMessage": "You are searching for posts from @{acct}.", - "id": "search_results.filter_message" - } - ], - "path": "app/soapbox/features/compose/components/search-results.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Search", - "id": "search.placeholder" - }, - { - "defaultMessage": "Search for “{query}”", - "id": "search.action" - } - ], - "path": "app/soapbox/features/compose/components/search.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Text is hidden behind warning", - "id": "compose_form.spoiler.marked" - }, - { - "defaultMessage": "Text is not hidden", - "id": "compose_form.spoiler.unmarked" - } - ], - "path": "app/soapbox/features/compose/components/spoiler-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Sensitive content", - "id": "compose_form.spoiler_title" - }, - { - "defaultMessage": "Write your warning here (optional)", - "id": "compose_form.spoiler_placeholder" - }, - { - "defaultMessage": "Remove sensitive", - "id": "compose_form.spoiler_remove" - } - ], - "path": "app/soapbox/features/compose/components/spoiler-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Add media attachment", - "id": "upload_button.label" - } - ], - "path": "app/soapbox/features/compose/components/upload-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Describe for the visually impaired", - "id": "upload_form.description" - }, - { - "defaultMessage": "Delete", - "id": "upload_form.undo" - }, - { - "defaultMessage": "Preview", - "id": "upload_form.preview" - } - ], - "path": "app/soapbox/features/compose/components/upload.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Used {chars} out of {maxChars} characters", - "id": "compose.character_counter.title" - } - ], - "path": "app/soapbox/features/compose/components/visual-character-counter.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", - "id": "compose_form.lock_disclaimer" - }, - { - "defaultMessage": "locked", - "id": "compose_form.lock_disclaimer.lock" - }, - { - "defaultMessage": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", - "id": "compose_form.hashtag_warning" - }, - { - "defaultMessage": "This post will only be sent to the mentioned users.", - "id": "compose_form.direct_message_warning" - } - ], - "path": "app/soapbox/features/compose/containers/warning-container.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "id": "empty_column.direct" - } - ], - "path": "app/soapbox/features/conversations/components/conversations-list.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Direct messages", - "id": "column.direct" - }, - { - "defaultMessage": "Send a message to…", - "id": "direct.search_placeholder" - } - ], - "path": "app/soapbox/features/conversations/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Click to see {count} {count, plural, one {wallet} other {wallets}}", - "id": "crypto_donate_panel.actions.view" - }, - { - "defaultMessage": "Donate Cryptocurrency", - "id": "crypto_donate_panel.heading" - }, - { - "defaultMessage": "{siteTitle} accepts cryptocurrency donations to fund our service. Thank you for your support!", - "id": "crypto_donate_panel.intro.message" - } - ], - "path": "app/soapbox/features/crypto-donate/components/crypto-donate-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Donate Cryptocurrency", - "id": "column.crypto_donate" - }, - { - "defaultMessage": "Sending cryptocurrency donations", - "id": "crypto_donate.explanation_box.title" - }, - { - "defaultMessage": "{siteTitle} accepts cryptocurrency donations. You may send a donation to any of the addresses below. Thank you for your support!", - "id": "crypto_donate.explanation_box.message" - } - ], - "path": "app/soapbox/features/crypto-donate/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Password", - "id": "security.fields.password.label" - }, - { - "defaultMessage": "Delete Account", - "id": "security.headers.delete" - }, - { - "defaultMessage": "To delete your account, enter your password then click Delete Account. This is a permanent action that cannot be undone. Your account will be destroyed from this server, and a deletion request will be sent to other servers. It's not guaranteed that all servers will purge your account.", - "id": "security.text.delete" - }, - { - "defaultMessage": "To delete your account, enter your password then click Delete Account. This is a permanent action that cannot be undone.", - "id": "security.text.delete.local" - }, - { - "defaultMessage": "Delete Account", - "id": "security.submit.delete" - }, - { - "defaultMessage": "Account successfully deleted.", - "id": "security.delete_account.success" - }, - { - "defaultMessage": "Account deletion failed.", - "id": "security.delete_account.fail" - } - ], - "path": "app/soapbox/features/delete-account/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Create app", - "id": "column.app_create" - }, - { - "defaultMessage": "e.g. 'Soapbox'", - "id": "app_create.name_placeholder" - }, - { - "defaultMessage": "e.g. 'read write follow'", - "id": "app_create.scopes_placeholder" - }, - { - "defaultMessage": "App created successfully", - "id": "app_create.results.explanation_title" - }, - { - "defaultMessage": "You created a new app and token! Please copy the credentials somewhere; you will not see them again after navigating away from this page.", - "id": "app_create.results.explanation_text" - }, - { - "defaultMessage": "App", - "id": "app_create.results.app_label" - }, - { - "defaultMessage": "OAuth token", - "id": "app_create.results.token_label" - }, - { - "defaultMessage": "Create another", - "id": "app_create.restart" - }, - { - "defaultMessage": "App name", - "id": "app_create.name_label" - }, - { - "defaultMessage": "Website", - "id": "app_create.website_label" - }, - { - "defaultMessage": "Redirect URIs", - "id": "app_create.redirect_uri_label" - }, - { - "defaultMessage": "Scopes", - "id": "app_create.scopes_label" - }, - { - "defaultMessage": "Create app", - "id": "app_create.submit" - } - ], - "path": "app/soapbox/features/developers/apps/create.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Developers", - "id": "column.developers" - }, - { - "defaultMessage": "Answer", - "id": "developers.challenge.answer_label" - }, - { - "defaultMessage": "Your answer", - "id": "developers.challenge.answer_placeholder" - }, - { - "defaultMessage": "You are now a developer", - "id": "developers.challenge.success" - }, - { - "defaultMessage": "Wrong answer", - "id": "developers.challenge.fail" - }, - { - "defaultMessage": "What is the result of calling {function}?", - "id": "developers.challenge.message" - }, - { - "defaultMessage": "Become a developer", - "id": "developers.challenge.submit" - } - ], - "path": "app/soapbox/features/developers/developers-challenge.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Developers", - "id": "column.developers" - }, - { - "defaultMessage": "You have left developers", - "id": "developers.leave" - }, - { - "defaultMessage": "Create an app", - "id": "developers.navigation.app_create_label" - }, - { - "defaultMessage": "Settings store", - "id": "developers.navigation.settings_store_label" - }, - { - "defaultMessage": "Test timeline", - "id": "developers.navigation.test_timeline_label" - }, - { - "defaultMessage": "Trigger an error", - "id": "developers.navigation.intentional_error_label" - }, - { - "defaultMessage": "Network error", - "id": "developers.navigation.network_error_label" - }, - { - "defaultMessage": "Service Worker", - "id": "developers.navigation.service_worker_label" - }, - { - "defaultMessage": "Leave developers", - "id": "developers.navigation.leave_developers_label" - } - ], - "path": "app/soapbox/features/developers/developers-menu.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Service Worker", - "id": "column.developers.service_worker" - }, - { - "defaultMessage": "Status", - "id": "sw.status" - }, - { - "defaultMessage": "Script URL", - "id": "sw.url" - }, - { - "defaultMessage": "Loading…", - "id": "sw.state.loading" - }, - { - "defaultMessage": "Unavailable", - "id": "sw.state.unavailable" - }, - { - "defaultMessage": "Waiting", - "id": "sw.state.waiting" - }, - { - "defaultMessage": "Active", - "id": "sw.state.active" - }, - { - "defaultMessage": "Unknown", - "id": "sw.state.unknown" - }, - { - "defaultMessage": "Restart", - "id": "sw.restart" - } - ], - "path": "app/soapbox/features/developers/service-worker-info.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Settings store", - "id": "column.settings_store" - }, - { - "defaultMessage": "Advanced settings", - "id": "developers.settings_store.advanced" - }, - { - "defaultMessage": "It is possible to directly edit your user settings here. BE CAREFUL! Editing this section can break your account, and you will only be able to recover through the API.", - "id": "developers.settings_store.hint" - }, - { - "defaultMessage": "Save", - "id": "soapbox_config.save" - }, - { - "defaultMessage": "Show all notification categories", - "id": "preferences.notifications.advanced" - }, - { - "defaultMessage": "Show confirmation dialog before unfollowing someone", - "id": "preferences.fields.unfollow_modal_label" - }, - { - "defaultMessage": "Show confirmation dialog before sending a post without media descriptions", - "id": "preferences.fields.missing_description_modal_label" - }, - { - "defaultMessage": "Reduce motion in animations", - "id": "preferences.fields.reduce_motion_label" - }, - { - "defaultMessage": "Always underline links in posts", - "id": "preferences.fields.underline_links_label" - }, - { - "defaultMessage": "Use system's default font", - "id": "preferences.fields.system_font_label" - }, - { - "defaultMessage": "Dyslexic mode", - "id": "preferences.fields.dyslexic_font_label" - }, - { - "defaultMessage": "Use Demetricator", - "id": "preferences.fields.demetricator_label" - }, - { - "defaultMessage": "Decrease social media anxiety by hiding all numbers from the site.", - "id": "preferences.hints.demetricator" - } - ], - "path": "app/soapbox/features/developers/settings-store.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Direct messages", - "id": "column.direct" - }, - { - "defaultMessage": "Send a message to…", - "id": "direct.search_placeholder" - }, - { - "defaultMessage": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "id": "empty_column.direct" - } - ], - "path": "app/soapbox/features/direct-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Follows you", - "id": "account.follows_you" - }, - { - "defaultMessage": "Posts", - "id": "account.posts" - }, - { - "defaultMessage": "Followers", - "id": "account.followers" - }, - { - "defaultMessage": "Never", - "id": "account.never_active" - }, - { - "defaultMessage": "Last active", - "id": "account.last_status" - } - ], - "path": "app/soapbox/features/directory/components/account-card.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Browse profiles", - "id": "column.directory" - }, - { - "defaultMessage": "Recently active", - "id": "directory.recently_active" - }, - { - "defaultMessage": "New arrivals", - "id": "directory.new_arrivals" - }, - { - "defaultMessage": "From {domain} only", - "id": "directory.local" - }, - { - "defaultMessage": "From known fediverse", - "id": "directory.federated" - } - ], - "path": "app/soapbox/features/directory/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Hidden domains", - "id": "column.domain_blocks" - }, - { - "defaultMessage": "Unhide {domain}", - "id": "account.unblock_domain" - }, - { - "defaultMessage": "There are no hidden domains yet.", - "id": "empty_column.domain_blocks" - } - ], - "path": "app/soapbox/features/domain-blocks/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Change Email", - "id": "edit_email.header" - }, - { - "defaultMessage": "Email successfully updated.", - "id": "security.update_email.success" - }, - { - "defaultMessage": "Update email failed.", - "id": "security.update_email.fail" - }, - { - "defaultMessage": "Email address", - "id": "security.fields.email.label" - }, - { - "defaultMessage": "me@example.com", - "id": "edit_email.placeholder" - }, - { - "defaultMessage": "Password", - "id": "security.fields.password.label" - }, - { - "defaultMessage": "Save changes", - "id": "security.submit" - }, - { - "defaultMessage": "Cancel", - "id": "common.cancel" - } - ], - "path": "app/soapbox/features/edit-email/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Password successfully updated.", - "id": "security.update_password.success" - }, - { - "defaultMessage": "Update password failed.", - "id": "security.update_password.fail" - }, - { - "defaultMessage": "Current password", - "id": "security.fields.old_password.label" - }, - { - "defaultMessage": "New password", - "id": "security.fields.new_password.label" - }, - { - "defaultMessage": "New password (again)", - "id": "security.fields.password_confirmation.label" - }, - { - "defaultMessage": "Change Password", - "id": "edit_password.header" - }, - { - "defaultMessage": "Save changes", - "id": "security.submit" - }, - { - "defaultMessage": "Cancel", - "id": "common.cancel" - } - ], - "path": "app/soapbox/features/edit-password/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Edit profile", - "id": "column.edit_profile" - }, - { - "defaultMessage": "Edit Profile", - "id": "edit_profile.header" - }, - { - "defaultMessage": "Label", - "id": "edit_profile.fields.meta_fields.label_placeholder" - }, - { - "defaultMessage": "Content", - "id": "edit_profile.fields.meta_fields.content_placeholder" - }, - { - "defaultMessage": "Profile saved!", - "id": "edit_profile.success" - }, - { - "defaultMessage": "Profile update failed", - "id": "edit_profile.error" - }, - { - "defaultMessage": "Tell us about yourself.", - "id": "edit_profile.fields.bio_placeholder" - }, - { - "defaultMessage": "Name", - "id": "edit_profile.fields.display_name_placeholder" - }, - { - "defaultMessage": "Display a Link", - "id": "edit_profile.fields.website_placeholder" - }, - { - "defaultMessage": "Location", - "id": "edit_profile.fields.location_placeholder" - }, - { - "defaultMessage": "Cancel", - "id": "common.cancel" - }, - { - "defaultMessage": "Display name", - "id": "edit_profile.fields.display_name_label" - }, - { - "defaultMessage": "Birthday", - "id": "edit_profile.fields.birthday_label" - }, - { - "defaultMessage": "Location", - "id": "edit_profile.fields.location_label" - }, - { - "defaultMessage": "Website", - "id": "edit_profile.fields.website_label" - }, - { - "defaultMessage": "Bio", - "id": "edit_profile.fields.bio_label" - }, - { - "defaultMessage": "Choose Profile Picture", - "id": "edit_profile.fields.avatar_label" - }, - { - "defaultMessage": "PNG, GIF or JPG. Will be downscaled to {size}", - "id": "edit_profile.hints.avatar" - }, - { - "defaultMessage": "Choose Background Picture", - "id": "edit_profile.fields.header_label" - }, - { - "defaultMessage": "PNG, GIF or JPG. Will be downscaled to {size}", - "id": "edit_profile.hints.header" - }, - { - "defaultMessage": "Lock account", - "id": "edit_profile.fields.locked_label" - }, - { - "defaultMessage": "Requires you to manually approve followers", - "id": "edit_profile.hints.locked" - }, - { - "defaultMessage": "Hide network", - "id": "edit_profile.fields.hide_network_label" - }, - { - "defaultMessage": "Who you follow and who follows you will not be shown on your profile", - "id": "edit_profile.hints.hide_network" - }, - { - "defaultMessage": "This is a bot account", - "id": "edit_profile.fields.bot_label" - }, - { - "defaultMessage": "This account mainly performs automated actions and might not be monitored", - "id": "edit_profile.hints.bot" - }, - { - "defaultMessage": "Block notifications from strangers", - "id": "edit_profile.fields.stranger_notifications_label" - }, - { - "defaultMessage": "Only show notifications from people you follow", - "id": "edit_profile.hints.stranger_notifications" - }, - { - "defaultMessage": "Allow account discovery", - "id": "edit_profile.fields.discoverable_label" - }, - { - "defaultMessage": "Display account in profile directory and allow indexing by external services", - "id": "edit_profile.hints.discoverable" - }, - { - "defaultMessage": "Subscribe to newsletter", - "id": "edit_profile.fields.accepts_email_list_label" - }, - { - "defaultMessage": "Opt-in to news and marketing updates.", - "id": "edit_profile.hints.accepts_email_list" - }, - { - "defaultMessage": "Profile fields", - "id": "edit_profile.fields.meta_fields_label" - }, - { - "defaultMessage": "You can have up to {count, plural, one {# custom field} other {# custom fields}} displayed on your profile.", - "id": "edit_profile.hints.meta_fields" - }, - { - "defaultMessage": "Save", - "id": "edit_profile.save" - } - ], - "path": "app/soapbox/features/edit-profile/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Your email has been confirmed!", - "id": "email_confirmation.success" - } - ], - "path": "app/soapbox/features/email-confirmation/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Export data", - "id": "column.export_data" - }, - { - "defaultMessage": "Export", - "id": "export_data.actions.export" - }, - { - "defaultMessage": "Follows", - "id": "export_data.follows_label" - }, - { - "defaultMessage": "Get a CSV file containing a list of followed accounts", - "id": "export_data.hints.follows" - }, - { - "defaultMessage": "Export follows", - "id": "export_data.actions.export_follows" - }, - { - "defaultMessage": "Blocks", - "id": "export_data.blocks_label" - }, - { - "defaultMessage": "Get a CSV file containing a list of blocked accounts", - "id": "export_data.hints.blocks" - }, - { - "defaultMessage": "Export blocks", - "id": "export_data.actions.export_blocks" - }, - { - "defaultMessage": "Mutes", - "id": "export_data.mutes_label" - }, - { - "defaultMessage": "Get a CSV file containing a list of muted accounts", - "id": "export_data.hints.mutes" - }, - { - "defaultMessage": "Export mutes", - "id": "export_data.actions.export_mutes" - } - ], - "path": "app/soapbox/features/export-data/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Instance", - "id": "login.fields.instance_label" - }, - { - "defaultMessage": "example.com", - "id": "login.fields.instance_placeholder" - }, - { - "defaultMessage": "The instance returned an error.", - "id": "login_external.errors.instance_fail" - }, - { - "defaultMessage": "Connection failed. Is a browser extension blocking it?", - "id": "login_external.errors.network_fail" - }, - { - "defaultMessage": "Log in", - "id": "login.log_in" - } - ], - "path": "app/soapbox/features/external-login/components/external-login-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Liked posts", - "id": "column.favourited_statuses" - }, - { - "defaultMessage": "Profile unavailable", - "id": "empty_column.account_unavailable" - }, - { - "defaultMessage": "You don't have any liked posts yet. When you like one, it will show up here.", - "id": "empty_column.favourited_statuses" - }, - { - "defaultMessage": "This user doesn't have any liked posts yet.", - "id": "empty_column.account_favourited_statuses" - } - ], - "path": "app/soapbox/features/favourited-statuses/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Hidden except to followers", - "id": "federation_restriction.followers_only" - }, - { - "defaultMessage": "Fediverse timeline removal", - "id": "federation_restriction.federated_timeline_removal" - }, - { - "defaultMessage": "Full media removal", - "id": "federation_restriction.full_media_removal" - }, - { - "defaultMessage": "Partial media removal", - "id": "federation_restriction.partial_media_removal" - }, - { - "defaultMessage": "Attachments marked NSFW", - "id": "federation_restriction.media_nsfw" - }, - { - "defaultMessage": "{siteTitle} blocks all activities from {host}.", - "id": "remote_instance.federation_panel.restricted_message" - }, - { - "defaultMessage": "{siteTitle} has placed some restrictions on {host}.", - "id": "remote_instance.federation_panel.some_restrictions_message" - }, - { - "defaultMessage": "{siteTitle} has placed no restrictions on {host}.", - "id": "remote_instance.federation_panel.no_restrictions_message" - } - ], - "path": "app/soapbox/features/federation-restrictions/components/instance-restrictions.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Federation Restrictions", - "id": "column.federation_restrictions" - }, - { - "defaultMessage": "Instance-specific policies", - "id": "federation_restrictions.explanation_box.title" - }, - { - "defaultMessage": "Normally servers on the Fediverse can communicate freely. {siteTitle} has imposed restrictions on the following servers.", - "id": "federation_restrictions.explanation_box.message" - }, - { - "defaultMessage": "{siteTitle} has not restricted any instances.", - "id": "federation_restrictions.empty_message" - }, - { - "defaultMessage": "{siteTitle} does not disclose federation restrictions through the API.", - "id": "federation_restrictions.not_disclosed_message" - } - ], - "path": "app/soapbox/features/federation-restrictions/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Something isn't right. Try reloading the page.", - "id": "common.error" - } - ], - "path": "app/soapbox/features/feed-filtering/feed-carousel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Suggested Profiles", - "id": "feed_suggestions.heading" - }, - { - "defaultMessage": "View all", - "id": "feed_suggestions.view_all" - } - ], - "path": "app/soapbox/features/feed-suggestions/feed-suggestions.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Muted words", - "id": "column.filters" - }, - { - "defaultMessage": "Add New Filter", - "id": "column.filters.subheading_add_new" - }, - { - "defaultMessage": "Keyword or phrase", - "id": "column.filters.keyword" - }, - { - "defaultMessage": "Expire after", - "id": "column.filters.expires" - }, - { - "defaultMessage": "Expiration dates are not currently supported", - "id": "column.filters.expires_hint" - }, - { - "defaultMessage": "Home timeline", - "id": "column.filters.home_timeline" - }, - { - "defaultMessage": "Public timeline", - "id": "column.filters.public_timeline" - }, - { - "defaultMessage": "Notifications", - "id": "column.filters.notifications" - }, - { - "defaultMessage": "Conversations", - "id": "column.filters.conversations" - }, - { - "defaultMessage": "Drop instead of hide", - "id": "column.filters.drop_header" - }, - { - "defaultMessage": "Filtered posts will disappear irreversibly, even if filter is later removed", - "id": "column.filters.drop_hint" - }, - { - "defaultMessage": "Whole word", - "id": "column.filters.whole_word_header" - }, - { - "defaultMessage": "When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word", - "id": "column.filters.whole_word_hint" - }, - { - "defaultMessage": "Add New Filter", - "id": "column.filters.add_new" - }, - { - "defaultMessage": "Error adding filter", - "id": "column.filters.create_error" - }, - { - "defaultMessage": "Error deleting filter", - "id": "column.filters.delete_error" - }, - { - "defaultMessage": "Current Filters", - "id": "column.filters.subheading_filters" - }, - { - "defaultMessage": "Delete", - "id": "column.filters.delete" - }, - { - "defaultMessage": "You haven't created any muted words yet.", - "id": "empty_column.filters" - }, - { - "defaultMessage": "Filter contexts", - "id": "filters.context_header" - }, - { - "defaultMessage": "One or multiple contexts where the filter should apply", - "id": "filters.context_hint" - }, - { - "defaultMessage": "Keyword or phrase:", - "id": "filters.filters_list_phrase_label" - }, - { - "defaultMessage": "Filter contexts:", - "id": "filters.filters_list_context_label" - }, - { - "defaultMessage": "Filter settings:", - "id": "filters.filters_list_details_label" - }, - { - "defaultMessage": "Drop", - "id": "filters.filters_list_drop" - }, - { - "defaultMessage": "Hide", - "id": "filters.filters_list_hide" - }, - { - "defaultMessage": "Whole word", - "id": "filters.filters_list_whole-word" - }, - { - "defaultMessage": "Delete", - "id": "filters.filters_list_delete" - } - ], - "path": "app/soapbox/features/filters/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Suggested Profiles", - "id": "followRecommendations.heading" - }, - { - "defaultMessage": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "id": "empty_column.follow_recommendations" - } - ], - "path": "app/soapbox/features/follow-recommendations/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Authorize", - "id": "follow_request.authorize" - }, - { - "defaultMessage": "Reject", - "id": "follow_request.reject" - } - ], - "path": "app/soapbox/features/follow-requests/components/account-authorize.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Follow requests", - "id": "column.follow_requests" - }, - { - "defaultMessage": "You don't have any follow requests yet. When you receive one, it will show up here.", - "id": "empty_column.follow_requests" - } - ], - "path": "app/soapbox/features/follow-requests/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Followers", - "id": "column.followers" - }, - { - "defaultMessage": "Profile unavailable", - "id": "empty_column.account_unavailable" - }, - { - "defaultMessage": "No one follows this user yet.", - "id": "account.followers.empty" - } - ], - "path": "app/soapbox/features/followers/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Following", - "id": "column.following" - }, - { - "defaultMessage": "Profile unavailable", - "id": "empty_column.account_unavailable" - }, - { - "defaultMessage": "This user doesn't follow anyone yet.", - "id": "account.follows.empty" - } - ], - "path": "app/soapbox/features/following/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "or {additional}", - "id": "hashtag.column_header.tag_mode.any" - }, - { - "defaultMessage": "and {additional}", - "id": "hashtag.column_header.tag_mode.all" - }, - { - "defaultMessage": "without {additional}", - "id": "hashtag.column_header.tag_mode.none" - }, - { - "defaultMessage": "There is nothing in this hashtag yet.", - "id": "empty_column.hashtag" - } - ], - "path": "app/soapbox/features/hashtag-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Home", - "id": "column.home" - }, - { - "defaultMessage": "You're not following anyone yet", - "id": "empty_column.home.title" - }, - { - "defaultMessage": "{siteTitle} gets more interesting once you follow other users.", - "id": "empty_column.home.subtitle" - }, - { - "defaultMessage": "Or you can visit {public} to get started and meet other users.", - "id": "empty_column.home" - }, - { - "defaultMessage": "the {site_title} tab", - "id": "empty_column.home.local_tab" - } - ], - "path": "app/soapbox/features/home-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Import data", - "id": "column.import_data" - }, - { - "defaultMessage": "Import", - "id": "import_data.actions.import" - }, - { - "defaultMessage": "Follows", - "id": "import_data.follows_label" - }, - { - "defaultMessage": "CSV file containing a list of followed accounts", - "id": "import_data.hints.follows" - }, - { - "defaultMessage": "Import follows", - "id": "import_data.actions.import_follows" - }, - { - "defaultMessage": "Blocks", - "id": "import_data.blocks_label" - }, - { - "defaultMessage": "CSV file containing a list of blocked accounts", - "id": "import_data.hints.blocks" - }, - { - "defaultMessage": "Import blocks", - "id": "import_data.actions.import_blocks" - }, - { - "defaultMessage": "Mutes", - "id": "import_data.mutes_label" - }, - { - "defaultMessage": "CSV file containing a list of muted accounts", - "id": "import_data.hints.mutes" - }, - { - "defaultMessage": "Import mutes", - "id": "import_data.actions.import_mutes" - } - ], - "path": "app/soapbox/features/import-data/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Registrations Closed", - "id": "registration.closed_title" - }, - { - "defaultMessage": "{instance} is not accepting new members.", - "id": "registration.closed_message" - }, - { - "defaultMessage": "Let's get started!", - "id": "registrations.get_started" - }, - { - "defaultMessage": "Sign in with {provider}", - "id": "oauth_consumer.tooltip" - }, - { - "defaultMessage": "Social Media Without Discrimination", - "id": "registrations.tagline" - }, - { - "defaultMessage": "Create an account", - "id": "registrations.create_account" - } - ], - "path": "app/soapbox/features/landing-page/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Remove from list", - "id": "lists.account.remove" - }, - { - "defaultMessage": "Add to list", - "id": "lists.account.add" - } - ], - "path": "app/soapbox/features/list-adder/components/list.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Your lists", - "id": "lists.subheading" - }, - { - "defaultMessage": "Add List", - "id": "lists.new.create" - }, - { - "defaultMessage": "Add or Remove from Lists", - "id": "list_adder.header_title" - } - ], - "path": "app/soapbox/features/list-adder/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Remove from list", - "id": "lists.account.remove" - }, - { - "defaultMessage": "Add to list", - "id": "lists.account.add" - } - ], - "path": "app/soapbox/features/list-editor/components/account.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Change title", - "id": "lists.edit.submit" - }, - { - "defaultMessage": "Save Title", - "id": "lists.new.save_title" - } - ], - "path": "app/soapbox/features/list-editor/components/edit-list-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Search among people you follow", - "id": "lists.search" - }, - { - "defaultMessage": "Search", - "id": "tabs_bar.search" - } - ], - "path": "app/soapbox/features/list-editor/components/search.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Change title", - "id": "lists.edit.submit" - }, - { - "defaultMessage": "Add to list", - "id": "lists.account.add" - }, - { - "defaultMessage": "Remove from list", - "id": "lists.account.remove" - }, - { - "defaultMessage": "Edit list", - "id": "lists.edit" - } - ], - "path": "app/soapbox/features/list-editor/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "There is nothing in this list yet. When members of this list create new posts, they will appear here.", - "id": "empty_column.list" - }, - { - "defaultMessage": "Click here to add people", - "id": "list.click_to_add" - } - ], - "path": "app/soapbox/features/list-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "New list title", - "id": "lists.new.title_placeholder" - }, - { - "defaultMessage": "Add list", - "id": "lists.new.create" - }, - { - "defaultMessage": "Add list", - "id": "lists.new.create_title" - } - ], - "path": "app/soapbox/features/lists/components/new-list-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Lists", - "id": "column.lists" - }, - { - "defaultMessage": "Your lists", - "id": "lists.subheading" - }, - { - "defaultMessage": "Add list", - "id": "lists.new.create" - }, - { - "defaultMessage": "Delete list", - "id": "confirmations.delete_list.heading" - }, - { - "defaultMessage": "Are you sure you want to permanently delete this list?", - "id": "confirmations.delete_list.message" - }, - { - "defaultMessage": "Delete", - "id": "confirmations.delete_list.confirm" - }, - { - "defaultMessage": "Edit list", - "id": "lists.edit" - }, - { - "defaultMessage": "Delete list", - "id": "lists.delete" - }, - { - "defaultMessage": "You don't have any lists yet. When you create one, it will show up here.", - "id": "empty_column.lists" - } - ], - "path": "app/soapbox/features/lists/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Account migration", - "id": "column.migration" - }, - { - "defaultMessage": "Move followers", - "id": "migration.submit" - }, - { - "defaultMessage": "Account successfully moved.", - "id": "migration.move_account.success" - }, - { - "defaultMessage": "Account migration failed.", - "id": "migration.move_account.fail" - }, - { - "defaultMessage": "You have moved your account too recently. Please try again later.", - "id": "migration.move_account.fail.cooldown_period" - }, - { - "defaultMessage": "Handle of the new account", - "id": "migration.fields.acct.label" - }, - { - "defaultMessage": "username@domain", - "id": "migration.fields.acct.placeholder" - }, - { - "defaultMessage": "Current password", - "id": "migration.fields.confirm_password.label" - }, - { - "defaultMessage": "This will move your followers to the new account. No other data will be moved. To perform migration, you need to {link} on your new account first.", - "id": "migration.hint" - }, - { - "defaultMessage": "create an account alias", - "id": "migration.hint.link" - }, - { - "defaultMessage": "If you migrate your account, you will not be able to migrate your account for {cooldownPeriod, plural, one {one day} other {the next # days}}.", - "id": "migration.hint.cooldown_period" - } - ], - "path": "app/soapbox/features/migration/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Muted users", - "id": "column.mutes" - }, - { - "defaultMessage": "You haven't muted any users yet.", - "id": "empty_column.mutes" - } - ], - "path": "app/soapbox/features/mutes/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "All", - "id": "notifications.filter.all" - }, - { - "defaultMessage": "Mentions", - "id": "notifications.filter.mentions" - }, - { - "defaultMessage": "Likes", - "id": "notifications.filter.favourites" - }, - { - "defaultMessage": "Reposts", - "id": "notifications.filter.boosts" - }, - { - "defaultMessage": "Poll results", - "id": "notifications.filter.polls" - }, - { - "defaultMessage": "Follows", - "id": "notifications.filter.follows" - }, - { - "defaultMessage": "Emoji reacts", - "id": "notifications.filter.emoji_reacts" - }, - { - "defaultMessage": "Updates from people you follow", - "id": "notifications.filter.statuses" - } - ], - "path": "app/soapbox/features/notifications/components/filter-bar.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{link}{others}", - "id": "notification.name" - }, - { - "defaultMessage": "{name} followed you", - "id": "notification.follow" - }, - { - "defaultMessage": "{name} has requested to follow you", - "id": "notification.follow_request" - }, - { - "defaultMessage": "{name} mentioned you", - "id": "notification.mentioned" - }, - { - "defaultMessage": "{name} liked your post", - "id": "notification.favourite" - }, - { - "defaultMessage": "{name} reposted your post", - "id": "notification.reblog" - }, - { - "defaultMessage": "{name} just posted", - "id": "notification.status" - }, - { - "defaultMessage": "A poll you have voted in has ended", - "id": "notification.poll" - }, - { - "defaultMessage": "{name} moved to {targetName}", - "id": "notification.move" - }, - { - "defaultMessage": "{name} sent you a message", - "id": "notification.pleroma:chat_mention" - }, - { - "defaultMessage": "{name} reacted to your post", - "id": "notification.pleroma:emoji_reaction" - }, - { - "defaultMessage": "Welcome to {instance}!", - "id": "notification.user_approved" - }, - { - "defaultMessage": "{name} edited a post you interacted with", - "id": "notification.update" - }, - { - "defaultMessage": " + {count} {count, plural, one {other} other {others}}", - "id": "notification.others" - } - ], - "path": "app/soapbox/features/notifications/components/notification.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Notifications", - "id": "column.notifications" - }, - { - "defaultMessage": "Click to see {count} new {count, plural, one {notification} other {notifications}}", - "id": "notifications.queue_label" - }, - { - "defaultMessage": "You don't have any notifications yet. Interact with others to start the conversation.", - "id": "empty_column.notifications" - }, - { - "defaultMessage": "You don't have any notifications of this type yet.", - "id": "empty_column.notifications_filtered" - } - ], - "path": "app/soapbox/features/notifications/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "An unexpected error occurred. Please try again or skip this step.", - "id": "onboarding.error" - }, - { - "defaultMessage": "Choose a profile picture", - "id": "onboarding.avatar.title" - }, - { - "defaultMessage": "Just have fun with it.", - "id": "onboarding.avatar.subtitle" - }, - { - "defaultMessage": "Saving…", - "id": "onboarding.saving" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - }, - { - "defaultMessage": "Skip for now", - "id": "onboarding.skip" - } - ], - "path": "app/soapbox/features/onboarding/steps/avatar-selection-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Tell the world a little about yourself…", - "id": "onboarding.bio.placeholder" - }, - { - "defaultMessage": "An unexpected error occurred. Please try again or skip this step.", - "id": "onboarding.error" - }, - { - "defaultMessage": "Write a short bio", - "id": "onboarding.note.title" - }, - { - "defaultMessage": "You can always edit this later.", - "id": "onboarding.note.subtitle" - }, - { - "defaultMessage": "Max 500 characters", - "id": "onboarding.bio.hint" - }, - { - "defaultMessage": "Bio", - "id": "edit_profile.fields.bio_label" - }, - { - "defaultMessage": "Saving…", - "id": "onboarding.saving" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - }, - { - "defaultMessage": "Skip for now", - "id": "onboarding.skip" - } - ], - "path": "app/soapbox/features/onboarding/steps/bio-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Onboarding complete", - "id": "onboarding.finished.title" - }, - { - "defaultMessage": "We are very excited to welcome you to our community! Tap the button below to get started.", - "id": "onboarding.finished.message" - }, - { - "defaultMessage": "View Feed", - "id": "onboarding.view_feed" - } - ], - "path": "app/soapbox/features/onboarding/steps/completed-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Profile header", - "id": "account.header.alt" - }, - { - "defaultMessage": "An unexpected error occurred. Please try again or skip this step.", - "id": "onboarding.error" - }, - { - "defaultMessage": "Pick a cover image", - "id": "onboarding.header.title" - }, - { - "defaultMessage": "This will be shown at the top of your profile.", - "id": "onboarding.header.subtitle" - }, - { - "defaultMessage": "Saving…", - "id": "onboarding.saving" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - }, - { - "defaultMessage": "Skip for now", - "id": "onboarding.skip" - } - ], - "path": "app/soapbox/features/onboarding/steps/cover-photo-selection-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Eg. John Smith", - "id": "onboarding.display_name.placeholder" - }, - { - "defaultMessage": "An unexpected error occurred. Please try again or skip this step.", - "id": "onboarding.error" - }, - { - "defaultMessage": "Choose a display name", - "id": "onboarding.display_name.title" - }, - { - "defaultMessage": "You can always edit this later.", - "id": "onboarding.display_name.subtitle" - }, - { - "defaultMessage": "Display name", - "id": "onboarding.display_name.label" - }, - { - "defaultMessage": "Saving…", - "id": "onboarding.saving" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - }, - { - "defaultMessage": "Skip for now", - "id": "onboarding.skip" - } - ], - "path": "app/soapbox/features/onboarding/steps/display-name-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{siteTitle} is just one part of the Fediverse", - "id": "onboarding.fediverse.title" - }, - { - "defaultMessage": "The Fediverse is a social network made up of thousands of diverse and independently-run social media sites (aka \"servers\"). You can follow users — and like, repost, and reply to posts — from most other Fediverse servers, because they can communicate with {siteTitle}.", - "id": "onboarding.fediverse.message" - }, - { - "defaultMessage": "Because it is distributed and anyone can run their own server, the Fediverse is resilient and open. If you choose to join another server or set up your own, you can interact with the same people and continue on the same social graph.", - "id": "onboarding.fediverse.trailer" - }, - { - "defaultMessage": "This is you! Other people can follow you from other servers by using your full @-handle.", - "id": "onboarding.fediverse.its_you" - }, - { - "defaultMessage": "When browsing your timeline, pay attention to the full username after the second @ symbol to know which server a post is from.", - "id": "onboarding.fediverse.other_instances" - }, - { - "defaultMessage": "Next", - "id": "onboarding.fediverse.next" - } - ], - "path": "app/soapbox/features/onboarding/steps/fediverse-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.", - "id": "empty_column.follow_recommendations" - }, - { - "defaultMessage": "Suggested accounts", - "id": "onboarding.suggestions.title" - }, - { - "defaultMessage": "Here are a few of the most popular accounts you might like.", - "id": "onboarding.suggestions.subtitle" - }, - { - "defaultMessage": "Done", - "id": "onboarding.done" - }, - { - "defaultMessage": "Skip for now", - "id": "onboarding.skip" - } - ], - "path": "app/soapbox/features/onboarding/steps/suggested-accounts-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Pinned posts", - "id": "column.pins" - }, - { - "defaultMessage": "No pins to show.", - "id": "pinned_statuses.none" - } - ], - "path": "app/soapbox/features/pinned-statuses/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Preferences", - "id": "column.preferences" - }, - { - "defaultMessage": "Hide posts marked as sensitive", - "id": "preferences.fields.display_media.default" - }, - { - "defaultMessage": "Always hide posts", - "id": "preferences.fields.display_media.hide_all" - }, - { - "defaultMessage": "Always show posts", - "id": "preferences.fields.display_media.show_all" - }, - { - "defaultMessage": "Public", - "id": "preferences.options.privacy_public" - }, - { - "defaultMessage": "Unlisted", - "id": "preferences.options.privacy_unlisted" - }, - { - "defaultMessage": "Followers-only", - "id": "preferences.options.privacy_followers_only" - }, - { - "defaultMessage": "Plain text", - "id": "preferences.options.content_type_plaintext" - }, - { - "defaultMessage": "Markdown", - "id": "preferences.options.content_type_markdown" - }, - { - "defaultMessage": "Show reposts", - "id": "home.column_settings.show_reblogs" - }, - { - "defaultMessage": "In your home feed", - "id": "preferences.hints.feed" - }, - { - "defaultMessage": "Show replies", - "id": "home.column_settings.show_replies" - }, - { - "defaultMessage": "Theme", - "id": "preferences.fields.theme" - }, - { - "defaultMessage": "Language", - "id": "preferences.fields.language_label" - }, - { - "defaultMessage": "Sensitive content", - "id": "preferences.fields.media_display_label" - }, - { - "defaultMessage": "Default post privacy", - "id": "preferences.fields.privacy_label" - }, - { - "defaultMessage": "Default post format", - "id": "preferences.fields.content_type_label" - }, - { - "defaultMessage": "Show confirmation dialog before reposting", - "id": "preferences.fields.boost_modal_label" - }, - { - "defaultMessage": "Show confirmation dialog before deleting a post", - "id": "preferences.fields.delete_modal_label" - }, - { - "defaultMessage": "Auto-play animated GIFs", - "id": "preferences.fields.auto_play_gif_label" - }, - { - "defaultMessage": "Auto-play videos", - "id": "preferences.fields.auto_play_video_label" - }, - { - "defaultMessage": "Always expand posts marked with content warnings", - "id": "preferences.fields.expand_spoilers_label" - }, - { - "defaultMessage": "Automatically load new posts when scrolled to the top of the page", - "id": "preferences.fields.autoload_timelines_label" - }, - { - "defaultMessage": "Automatically load more items when scrolled to the bottom of the page", - "id": "preferences.fields.autoload_more_label" - } - ], - "path": "app/soapbox/features/preferences/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Open menu", - "id": "header.menu.title" - }, - { - "defaultMessage": "Home", - "id": "header.home.label" - }, - { - "defaultMessage": "Log in", - "id": "header.login.label" - }, - { - "defaultMessage": "Register", - "id": "header.register.label" - }, - { - "defaultMessage": "Email or username", - "id": "header.login.username.placeholder" - }, - { - "defaultMessage": "Password", - "id": "header.login.password.label" - }, - { - "defaultMessage": "Forgot password?", - "id": "header.login.forgot_password" - }, - { - "defaultMessage": "Help Center", - "id": "landing_page_modal.helpCenter" - } - ], - "path": "app/soapbox/features/public-layout/components/header.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Fediverse timeline", - "id": "column.public" - }, - { - "defaultMessage": "Don't show again", - "id": "fediverse_tab.explanation_box.dismiss" - }, - { - "defaultMessage": "What is the Fediverse?", - "id": "fediverse_tab.explanation_box.title" - }, - { - "defaultMessage": "{site_title} is part of the Fediverse, a social network made up of thousands of independent social media sites (aka \"servers\"). The posts you see here are from 3rd-party servers. You have the freedom to engage with them, or to block any server you don't like. Pay attention to the full username after the second @ symbol to know which server a post is from. To see only {site_title} posts, visit {local}.", - "id": "fediverse_tab.explanation_box.explanation" - }, - { - "defaultMessage": "the {site_title} tab", - "id": "empty_column.home.local_tab" - }, - { - "defaultMessage": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", - "id": "empty_column.public" - } - ], - "path": "app/soapbox/features/public-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You've been invited to join {siteTitle}!", - "id": "register_invite.title" - }, - { - "defaultMessage": "Complete the form below to create an account.", - "id": "register_invite.lead" - } - ], - "path": "app/soapbox/features/register-invite/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Federated timeline", - "id": "column.remote" - }, - { - "defaultMessage": "You are viewing the timeline of {instance}.", - "id": "remote_timeline.filter_message" - }, - { - "defaultMessage": "There is nothing here! Manually follow users from {instance} to fill it up.", - "id": "empty_column.remote" - } - ], - "path": "app/soapbox/features/remote-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Remove from mentions", - "id": "reply_mentions.account.remove" - }, - { - "defaultMessage": "Add to mentions", - "id": "reply_mentions.account.add" - } - ], - "path": "app/soapbox/features/reply-mentions/account.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Cancel", - "id": "scheduled_status.cancel" - }, - { - "defaultMessage": "Cancel", - "id": "confirmations.scheduled_status_delete.confirm" - }, - { - "defaultMessage": "Cancel scheduled post", - "id": "confirmations.scheduled_status_delete.heading" - }, - { - "defaultMessage": "Are you sure you want to cancel this scheduled post?", - "id": "confirmations.scheduled_status_delete.message" - } - ], - "path": "app/soapbox/features/scheduled-statuses/components/scheduled-status-action-bar.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Scheduled Posts", - "id": "column.scheduled_statuses" - }, - { - "defaultMessage": "You don't have any scheduled statuses yet. When you add one, it will show up here.", - "id": "empty_column.scheduled_statuses" - } - ], - "path": "app/soapbox/features/scheduled-statuses/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Search", - "id": "column.search" - } - ], - "path": "app/soapbox/features/search/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Multi-Factor Authentication", - "id": "column.mfa" - } - ], - "path": "app/soapbox/features/security/mfa-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Disable", - "id": "column.mfa_disable_button" - }, - { - "defaultMessage": "Incorrect password. Try again.", - "id": "security.disable.fail" - }, - { - "defaultMessage": "MFA disabled", - "id": "mfa.disable.success_message" - }, - { - "defaultMessage": "Password", - "id": "mfa.mfa_setup.password_placeholder" - }, - { - "defaultMessage": "OTP Enabled", - "id": "mfa.otp_enabled_title" - }, - { - "defaultMessage": "You have enabled two-factor authentication via OTP.", - "id": "mfa.otp_enabled_description" - }, - { - "defaultMessage": "Enter your current password to disable two-factor auth.", - "id": "mfa.mfa_disable_enter_password" - } - ], - "path": "app/soapbox/features/security/mfa/disable-otp-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Cancel", - "id": "column.mfa_cancel" - }, - { - "defaultMessage": "Proceed to Setup", - "id": "column.mfa_setup" - }, - { - "defaultMessage": "Failed to fetch backup codes", - "id": "security.codes.fail" - }, - { - "defaultMessage": "Write these codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.", - "id": "mfa.setup_warning" - }, - { - "defaultMessage": "Recovery codes", - "id": "mfa.setup_recoverycodes" - } - ], - "path": "app/soapbox/features/security/mfa/enable-otp-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Cancel", - "id": "column.mfa_cancel" - }, - { - "defaultMessage": "Confirm", - "id": "column.mfa_confirm_button" - }, - { - "defaultMessage": "Incorrect code or password. Try again.", - "id": "security.confirm.fail" - }, - { - "defaultMessage": "Failed to fetch setup key", - "id": "security.qr.fail" - }, - { - "defaultMessage": "MFA confirmed", - "id": "mfa.confirm.success_message" - }, - { - "defaultMessage": "Code", - "id": "mfa.mfa_setup.code_placeholder" - }, - { - "defaultMessage": "Password", - "id": "mfa.mfa_setup.password_placeholder" - }, - { - "defaultMessage": "Scan", - "id": "mfa.mfa_setup_scan_title" - }, - { - "defaultMessage": "Using your two-factor app, scan this QR code or enter the text key.", - "id": "mfa.mfa_setup_scan_description" - }, - { - "defaultMessage": "Verify", - "id": "mfa.mfa_setup_verify_title" - }, - { - "defaultMessage": "Enter the code from your two-factor app.", - "id": "mfa.mfa_setup.code_hint" - }, - { - "defaultMessage": "Enter your current password to confirm your identity.", - "id": "mfa.mfa_setup.password_hint" - } - ], - "path": "app/soapbox/features/security/mfa/otp-confirm-form.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Server information", - "id": "column.info" - } - ], - "path": "app/soapbox/features/server-info/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Settings", - "id": "settings.settings" - }, - { - "defaultMessage": "Profile", - "id": "settings.profile" - }, - { - "defaultMessage": "Security", - "id": "settings.security" - }, - { - "defaultMessage": "Preferences", - "id": "settings.preferences" - }, - { - "defaultMessage": "Edit Profile", - "id": "settings.edit_profile" - }, - { - "defaultMessage": "Change Email", - "id": "settings.change_email" - }, - { - "defaultMessage": "Change Password", - "id": "settings.change_password" - }, - { - "defaultMessage": "Configure MFA", - "id": "settings.configure_mfa" - }, - { - "defaultMessage": "Active sessions", - "id": "settings.sessions" - }, - { - "defaultMessage": "Delete Account", - "id": "settings.delete_account" - }, - { - "defaultMessage": "Move Account", - "id": "settings.account_migration" - }, - { - "defaultMessage": "Account aliases", - "id": "navigation_bar.account_aliases" - }, - { - "defaultMessage": "Other options", - "id": "settings.other" - }, - { - "defaultMessage": "Enabled", - "id": "mfa.enabled" - }, - { - "defaultMessage": "Disabled", - "id": "mfa.disabled" - } - ], - "path": "app/soapbox/features/settings/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Media display", - "id": "preferences.fields.media_display_label" - }, - { - "defaultMessage": "Hide media marked as sensitive", - "id": "preferences.fields.display_media.default" - }, - { - "defaultMessage": "Always hide media", - "id": "preferences.fields.display_media.hide_all" - }, - { - "defaultMessage": "Always show media", - "id": "preferences.fields.display_media.show_all" - } - ], - "path": "app/soapbox/features/settings/media-display.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Ticker", - "id": "soapbox_config.crypto_address.meta_fields.ticker_placeholder" - }, - { - "defaultMessage": "Address", - "id": "soapbox_config.crypto_address.meta_fields.address_placeholder" - }, - { - "defaultMessage": "Note (optional)", - "id": "soapbox_config.crypto_address.meta_fields.note_placeholder" - } - ], - "path": "app/soapbox/features/soapbox-config/components/crypto-address-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Label", - "id": "soapbox_config.home_footer.meta_fields.label_placeholder" - }, - { - "defaultMessage": "URL", - "id": "soapbox_config.home_footer.meta_fields.url_placeholder" - } - ], - "path": "app/soapbox/features/soapbox-config/components/footer-link-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Select icon", - "id": "icon_button.label" - } - ], - "path": "app/soapbox/features/soapbox-config/components/icon-picker-dropdown.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Select icon", - "id": "icon_button.label" - }, - { - "defaultMessage": "Search…", - "id": "emoji_button.search" - }, - { - "defaultMessage": "No icons!! (╯°□°)╯︵ ┻━┻", - "id": "icon_button.not_found" - }, - { - "defaultMessage": "Icons", - "id": "icon_button.icons" - }, - { - "defaultMessage": "Search results", - "id": "emoji_button.search_results" - } - ], - "path": "app/soapbox/features/soapbox-config/components/icon-picker-menu.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Icon", - "id": "soapbox_config.promo_panel.meta_fields.icon_placeholder" - }, - { - "defaultMessage": "Label", - "id": "soapbox_config.promo_panel.meta_fields.label_placeholder" - }, - { - "defaultMessage": "URL", - "id": "soapbox_config.promo_panel.meta_fields.url_placeholder" - } - ], - "path": "app/soapbox/features/soapbox-config/components/promo-panel-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Preview", - "id": "site_preview.preview" - } - ], - "path": "app/soapbox/features/soapbox-config/components/site-preview.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Soapbox config", - "id": "column.soapbox_config" - }, - { - "defaultMessage": "Soapbox config saved!", - "id": "soapbox_config.saved" - }, - { - "defaultMessage": "Copyright footer", - "id": "soapbox_config.copyright_footer.meta_fields.label_placeholder" - }, - { - "defaultMessage": "Number of items to display in the crypto homepage widget", - "id": "soapbox_config.crypto_donate_panel_limit.meta_fields.limit_placeholder" - }, - { - "defaultMessage": "URL", - "id": "soapbox_config.custom_css.meta_fields.url_placeholder" - }, - { - "defaultMessage": "Advanced: Edit raw JSON data", - "id": "soapbox_config.raw_json_label" - }, - { - "defaultMessage": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click \"Save\" to apply your changes.", - "id": "soapbox_config.raw_json_hint" - }, - { - "defaultMessage": "Allow verified users to edit their own display name.", - "id": "soapbox_config.verified_can_edit_name_label" - }, - { - "defaultMessage": "Display domain (eg @user@domain) for local accounts.", - "id": "soapbox_config.display_fqn_label" - }, - { - "defaultMessage": "Enable greentext support", - "id": "soapbox_config.greentext_label" - }, - { - "defaultMessage": "Soapbox Icons List", - "id": "soapbox_config.hints.promo_panel_icons.link" - }, - { - "defaultMessage": "Profiles require authentication", - "id": "soapbox_config.authenticated_profile_label" - }, - { - "defaultMessage": "Users must be logged-in to view replies and media on user profiles.", - "id": "soapbox_config.authenticated_profile_hint" - }, - { - "defaultMessage": "Display call to action panels if not authenticated", - "id": "soapbox_config.cta_label" - }, - { - "defaultMessage": "Single user mode", - "id": "soapbox_config.single_user_mode_label" - }, - { - "defaultMessage": "Front page will redirect to a given user profile.", - "id": "soapbox_config.single_user_mode_hint" - }, - { - "defaultMessage": "Main user handle", - "id": "soapbox_config.single_user_mode_profile_label" - }, - { - "defaultMessage": "@handle", - "id": "soapbox_config.single_user_mode_profile_hint" - }, - { - "defaultMessage": "Feed injection", - "id": "soapbox_config.feed_injection_label" - }, - { - "defaultMessage": "Inject the feed with additional content, such as suggested profiles.", - "id": "soapbox_config.feed_injection_hint" - }, - { - "defaultMessage": "Logo", - "id": "soapbox_config.fields.logo_label" - }, - { - "defaultMessage": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio", - "id": "soapbox_config.hints.logo" - }, - { - "defaultMessage": "Theme", - "id": "soapbox_config.headings.theme" - }, - { - "defaultMessage": "Default theme", - "id": "soapbox_config.fields.theme_label" - }, - { - "defaultMessage": "Brand color", - "id": "soapbox_config.fields.brand_color_label" - }, - { - "defaultMessage": "Accent color", - "id": "soapbox_config.fields.accent_color_label" - }, - { - "defaultMessage": "Options", - "id": "soapbox_config.headings.options" - }, - { - "defaultMessage": "Navigation", - "id": "soapbox_config.headings.navigation" - }, - { - "defaultMessage": "Promo panel items", - "id": "soapbox_config.fields.promo_panel_fields_label" - }, - { - "defaultMessage": "You can have custom defined links displayed on the right panel of the timelines page.", - "id": "soapbox_config.hints.promo_panel_fields" - }, - { - "defaultMessage": "Home footer items", - "id": "soapbox_config.fields.home_footer_fields_label" - }, - { - "defaultMessage": "You can have custom defined links displayed on the footer of your static pages", - "id": "soapbox_config.hints.home_footer_fields" - }, - { - "defaultMessage": "Cryptocurrency", - "id": "soapbox_config.headings.cryptocurrency" - }, - { - "defaultMessage": "Cryptocurrency addresses", - "id": "soapbox_config.fields.crypto_addresses_label" - }, - { - "defaultMessage": "Add cryptocurrency addresses so users of your site can donate to you. Order matters, and you must use lowercase ticker values.", - "id": "soapbox_config.hints.crypto_addresses" - }, - { - "defaultMessage": "Advanced", - "id": "soapbox_config.headings.advanced" - }, - { - "defaultMessage": "Save", - "id": "soapbox_config.save" - } - ], - "path": "app/soapbox/features/soapbox-config/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Post is unavailable.", - "id": "actualStatuses.quote_tombstone" - }, - { - "defaultMessage": "Edited {date}", - "id": "actualStatus.edited" - } - ], - "path": "app/soapbox/features/status/components/detailed-status.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{count, plural, one {Repost} other {Reposts}}", - "id": "status.interactions.reblogs" - }, - { - "defaultMessage": "{count, plural, one {Like} other {Likes}}", - "id": "status.interactions.favourites" - } - ], - "path": "app/soapbox/features/status/components/status-interaction-bar.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Continue the conversation", - "id": "thread_login.title" - }, - { - "defaultMessage": "Join {siteTitle} to get the full story and details.", - "id": "thread_login.message" - }, - { - "defaultMessage": "Log in", - "id": "thread_login.login" - }, - { - "defaultMessage": "Sign up", - "id": "thread_login.signup" - } - ], - "path": "app/soapbox/features/status/components/thread-login-cta.json" - }, - { - "descriptors": [ - { - "defaultMessage": "@{username}'s Post", - "id": "status.title" - }, - { - "defaultMessage": "Direct message", - "id": "status.title_direct" - }, - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.delete.heading" - }, - { - "defaultMessage": "Are you sure you want to delete this post?", - "id": "confirmations.delete.message" - }, - { - "defaultMessage": "Delete & redraft", - "id": "confirmations.redraft.confirm" - }, - { - "defaultMessage": "Delete & redraft", - "id": "confirmations.redraft.heading" - }, - { - "defaultMessage": "Are you sure you want to delete this post and re-draft it? Favorites and reposts will be lost, and replies to the original post will be orphaned.", - "id": "confirmations.redraft.message" - }, - { - "defaultMessage": "Block", - "id": "confirmations.block.confirm" - }, - { - "defaultMessage": "Show more for all", - "id": "status.show_more_all" - }, - { - "defaultMessage": "Show less for all", - "id": "status.show_less_all" - }, - { - "defaultMessage": "Detailed conversation view", - "id": "status.detailed_status" - }, - { - "defaultMessage": "Reply", - "id": "confirmations.reply.confirm" - }, - { - "defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "id": "confirmations.reply.message" - }, - { - "defaultMessage": "Block & Report", - "id": "confirmations.block.block_and_report" - } - ], - "path": "app/soapbox/features/status/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Test timeline", - "id": "column.test" - }, - { - "defaultMessage": "The test timeline is empty.", - "id": "empty_column.test" - } - ], - "path": "app/soapbox/features/test-timeline/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Block @{name}", - "id": "account.block" - }, - { - "defaultMessage": "Blocked", - "id": "account.blocked" - }, - { - "defaultMessage": "Edit profile", - "id": "account.edit_profile" - }, - { - "defaultMessage": "Follow", - "id": "account.follow" - }, - { - "defaultMessage": "Mute @{name}", - "id": "account.mute" - }, - { - "defaultMessage": "Remote follow", - "id": "account.remote_follow" - }, - { - "defaultMessage": "Awaiting approval. Click to cancel follow request", - "id": "account.requested" - }, - { - "defaultMessage": "Awaiting approval", - "id": "account.requested_small" - }, - { - "defaultMessage": "Unblock @{name}", - "id": "account.unblock" - }, - { - "defaultMessage": "Unfollow", - "id": "account.unfollow" - }, - { - "defaultMessage": "Unmute @{name}", - "id": "account.unmute" - }, - { - "defaultMessage": "Authorize", - "id": "follow_request.authorize" - }, - { - "defaultMessage": "Reject", - "id": "follow_request.reject" - } - ], - "path": "app/soapbox/features/ui/components/action-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Network error", - "id": "bundle_column_error.title" - }, - { - "defaultMessage": "Something went wrong while loading this page.", - "id": "bundle_column_error.body" - }, - { - "defaultMessage": "Try again", - "id": "bundle_column_error.retry" - } - ], - "path": "app/soapbox/features/ui/components/bundle-column-error.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Something went wrong while loading this page.", - "id": "bundle_modal_error.message" - }, - { - "defaultMessage": "Try again", - "id": "bundle_modal_error.retry" - }, - { - "defaultMessage": "Close", - "id": "bundle_modal_error.close" - } - ], - "path": "app/soapbox/features/ui/components/bundle-modal-error.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Forbidden", - "id": "column_forbidden.title" - }, - { - "defaultMessage": "You do not have permission to access this page.", - "id": "column_forbidden.body" - } - ], - "path": "app/soapbox/features/ui/components/column-forbidden.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Compose", - "id": "navigation.compose" - } - ], - "path": "app/soapbox/features/ui/components/compose-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "New to {site_title}?", - "id": "signup_panel.title" - }, - { - "defaultMessage": "Sign up now to discuss what's happening.", - "id": "signup_panel.subtitle" - }, - { - "defaultMessage": "Log in", - "id": "account.login" - }, - { - "defaultMessage": "Sign up", - "id": "account.register" - } - ], - "path": "app/soapbox/features/ui/components/cta-banner.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Funding Goal", - "id": "patron.title" - }, - { - "defaultMessage": "Donate", - "id": "patron.donate" - } - ], - "path": "app/soapbox/features/ui/components/funding-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Pin {host}", - "id": "remote_instance.pin_host" - }, - { - "defaultMessage": "Unpin {host}", - "id": "remote_instance.unpin_host" - } - ], - "path": "app/soapbox/features/ui/components/instance-info-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Edit federation", - "id": "remote_instance.edit_federation" - }, - { - "defaultMessage": "Federation Restrictions", - "id": "remote_instance.federation_panel.heading" - } - ], - "path": "app/soapbox/features/ui/components/instance-moderation-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Profile directory", - "id": "navigation_bar.profile_directory" - }, - { - "defaultMessage": "Blocks", - "id": "navigation_bar.blocks" - }, - { - "defaultMessage": "Mutes", - "id": "navigation_bar.mutes" - }, - { - "defaultMessage": "Filters", - "id": "navigation_bar.filters" - }, - { - "defaultMessage": "Domain blocks", - "id": "navigation_bar.domain_blocks" - }, - { - "defaultMessage": "Soapbox config", - "id": "navigation_bar.soapbox_config" - }, - { - "defaultMessage": "Follow requests", - "id": "navigation_bar.follow_requests" - }, - { - "defaultMessage": "Import data", - "id": "navigation_bar.import_data" - }, - { - "defaultMessage": "Logout", - "id": "navigation_bar.logout" - }, - { - "defaultMessage": "{code_name} is open source software. You can contribute or report issues at {code_link} (v{code_version}).", - "id": "getting_started.open_source_notice" - } - ], - "path": "app/soapbox/features/ui/components/link-footer.json" - }, - { - "descriptors": [ - { - "defaultMessage": "@{acct} was verified", - "id": "admin.users.user_verified_message" - }, - { - "defaultMessage": "@{acct} was unverified", - "id": "admin.users.user_unverified_message" - }, - { - "defaultMessage": "@{acct} was set as a donor", - "id": "admin.users.set_donor_message" - }, - { - "defaultMessage": "@{acct} was removed as a donor", - "id": "admin.users.remove_donor_message" - }, - { - "defaultMessage": "@{acct} was suggested", - "id": "admin.users.user_suggested_message" - }, - { - "defaultMessage": "@{acct} was unsuggested", - "id": "admin.users.user_unsuggested_message" - }, - { - "defaultMessage": "Custom badges updated.", - "id": "admin.users.badges_saved_message" - }, - { - "defaultMessage": "Moderate @{acct}", - "id": "account_moderation_modal.title" - }, - { - "defaultMessage": "Staff level", - "id": "account_moderation_modal.fields.account_role" - }, - { - "defaultMessage": "Verified account", - "id": "account_moderation_modal.fields.verified" - }, - { - "defaultMessage": "Suggested in people to follow", - "id": "account_moderation_modal.fields.suggested" - }, - { - "defaultMessage": "Custom badges", - "id": "account_moderation_modal.fields.badges" - }, - { - "defaultMessage": "Save", - "id": "save" - }, - { - "defaultMessage": "Deactivate account", - "id": "account_moderation_modal.fields.deactivate" - }, - { - "defaultMessage": "Delete account", - "id": "account_moderation_modal.fields.delete" - }, - { - "defaultMessage": "ID: {id}", - "id": "account_moderation_modal.info.id" - }, - { - "defaultMessage": "Open in AdminFE", - "id": "account_moderation_modal.admin_fe" - } - ], - "path": "app/soapbox/features/ui/components/modals/account-moderation-modal/account-moderation-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Enter a badge…", - "id": "badge_input.placeholder" - } - ], - "path": "app/soapbox/features/ui/components/modals/account-moderation-modal/badge-input.json" - }, - { - "descriptors": [ - { - "defaultMessage": "User", - "id": "account_moderation_modal.roles.user" - }, - { - "defaultMessage": "Moderator", - "id": "account_moderation_modal.roles.moderator" - }, - { - "defaultMessage": "Admin", - "id": "account_moderation_modal.roles.admin" - }, - { - "defaultMessage": "@{acct} was promoted to an admin", - "id": "admin.users.actions.promote_to_admin_message" - }, - { - "defaultMessage": "@{acct} was promoted to a moderator", - "id": "admin.users.actions.promote_to_moderator_message" - }, - { - "defaultMessage": "@{acct} was demoted to a moderator", - "id": "admin.users.actions.demote_to_moderator_message" - }, - { - "defaultMessage": "@{acct} was demoted to a regular user", - "id": "admin.users.actions.demote_to_user_message" - } - ], - "path": "app/soapbox/features/ui/components/modals/account-moderation-modal/staff-role-picker.json" - }, - { - "descriptors": [ - { - "defaultMessage": "No comment provided", - "id": "account_note.placeholder" - }, - { - "defaultMessage": "Save", - "id": "account_note.save" - }, - { - "defaultMessage": "Note for @{target}", - "id": "account_note.target" - }, - { - "defaultMessage": "You can keep notes about this user for yourself (this will not be shared with them):", - "id": "account_note.hint" - } - ], - "path": "app/soapbox/features/ui/components/modals/account-note-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Cancel", - "id": "lightbox.close" - } - ], - "path": "app/soapbox/features/ui/components/modals/actions-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "None of your friends have birthday today.", - "id": "birthdays_modal.empty" - }, - { - "defaultMessage": "Birthdays", - "id": "column.birthdays" - } - ], - "path": "app/soapbox/features/ui/components/modals/birthdays-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Un-repost", - "id": "status.cancel_reblog_private" - }, - { - "defaultMessage": "Repost", - "id": "status.reblog" - }, - { - "defaultMessage": "Repost?", - "id": "boost_modal.title" - }, - { - "defaultMessage": "You can press {combo} to skip this next time", - "id": "boost_modal.combo" - } - ], - "path": "app/soapbox/features/ui/components/modals/boost-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Edit history", - "id": "compare_history_modal.header" - } - ], - "path": "app/soapbox/features/ui/components/modals/compare-history-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Delete", - "id": "confirmations.delete.confirm" - }, - { - "defaultMessage": "Cancel editing", - "id": "confirmations.cancel_editing.confirm" - }, - { - "defaultMessage": "Cancel post editing", - "id": "confirmations.cancel_editing.heading" - }, - { - "defaultMessage": "Delete post", - "id": "confirmations.delete.heading" - }, - { - "defaultMessage": "Are you sure you want to cancel editing this post? All changes will be lost.", - "id": "confirmations.cancel_editing.message" - }, - { - "defaultMessage": "Are you sure you want to delete this post?", - "id": "confirmations.delete.message" - }, - { - "defaultMessage": "Edit post", - "id": "navigation_bar.compose_edit" - }, - { - "defaultMessage": "Direct message", - "id": "navigation_bar.compose_direct" - }, - { - "defaultMessage": "Reply to post", - "id": "navigation_bar.compose_reply" - }, - { - "defaultMessage": "Quote post", - "id": "navigation_bar.compose_quote" - }, - { - "defaultMessage": "Compose new post", - "id": "navigation_bar.compose" - } - ], - "path": "app/soapbox/features/ui/components/modals/compose-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Cancel", - "id": "confirmation_modal.cancel" - } - ], - "path": "app/soapbox/features/ui/components/modals/confirmation-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Strip media", - "id": "edit_federation.media_removal" - }, - { - "defaultMessage": "Force attachments to be marked sensitive", - "id": "edit_federation.force_nsfw" - }, - { - "defaultMessage": "Force posts unlisted", - "id": "edit_federation.unlisted" - }, - { - "defaultMessage": "Hide posts except to followers", - "id": "edit_federation.followers_only" - }, - { - "defaultMessage": "Save", - "id": "edit_federation.save" - }, - { - "defaultMessage": "{host} federation was updated", - "id": "edit_federation.success" - }, - { - "defaultMessage": "Reject all activities", - "id": "edit_federation.reject" - } - ], - "path": "app/soapbox/features/ui/components/modals/edit-federation-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Embed post", - "id": "status.embed" - }, - { - "defaultMessage": "Embed this post on your website by copying the code below.", - "id": "embed.instructions" - } - ], - "path": "app/soapbox/features/ui/components/modals/embed-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "No one you know follows {name}.", - "id": "account.familiar_followers.empty" - }, - { - "defaultMessage": "People you know following {name}", - "id": "column.familiar_followers" - } - ], - "path": "app/soapbox/features/ui/components/modals/familiar-followers-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "No one has liked this post yet. When someone does, they will show up here.", - "id": "empty_column.favourites" - }, - { - "defaultMessage": "Likes", - "id": "column.favourites" - } - ], - "path": "app/soapbox/features/ui/components/modals/favourites-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Keyboard shortcuts", - "id": "keyboard_shortcuts.heading" - }, - { - "defaultMessage": "Hotkey", - "id": "keyboard_shortcuts.hotkey" - }, - { - "defaultMessage": "to reply", - "id": "keyboard_shortcuts.reply" - }, - { - "defaultMessage": "to mention author", - "id": "keyboard_shortcuts.mention" - }, - { - "defaultMessage": "to open author's profile", - "id": "keyboard_shortcuts.profile" - }, - { - "defaultMessage": "to like", - "id": "keyboard_shortcuts.favourite" - }, - { - "defaultMessage": "to react", - "id": "keyboard_shortcuts.react" - }, - { - "defaultMessage": "to repost", - "id": "keyboard_shortcuts.boost" - }, - { - "defaultMessage": "to open post", - "id": "keyboard_shortcuts.enter" - }, - { - "defaultMessage": "to open media", - "id": "keyboard_shortcuts.open_media" - }, - { - "defaultMessage": "to show/hide text behind CW", - "id": "keyboard_shortcuts.toggle_hidden" - }, - { - "defaultMessage": "to show/hide media", - "id": "keyboard_shortcuts.toggle_sensitivity" - }, - { - "defaultMessage": "to move up in the list", - "id": "keyboard_shortcuts.up" - }, - { - "defaultMessage": "to move down in the list", - "id": "keyboard_shortcuts.down" - }, - { - "defaultMessage": "to focus the compose textarea", - "id": "keyboard_shortcuts.compose" - }, - { - "defaultMessage": "to start a new post", - "id": "keyboard_shortcuts.toot" - }, - { - "defaultMessage": "to navigate back", - "id": "keyboard_shortcuts.back" - }, - { - "defaultMessage": "to focus search", - "id": "keyboard_shortcuts.search" - }, - { - "defaultMessage": "to un-focus compose textarea/search", - "id": "keyboard_shortcuts.unfocus" - }, - { - "defaultMessage": "to open home timeline", - "id": "keyboard_shortcuts.home" - }, - { - "defaultMessage": "to open notifications column", - "id": "keyboard_shortcuts.notifications" - }, - { - "defaultMessage": "to open likes list", - "id": "keyboard_shortcuts.favourites" - }, - { - "defaultMessage": "to open pinned posts list", - "id": "keyboard_shortcuts.pinned" - }, - { - "defaultMessage": "to open your profile", - "id": "keyboard_shortcuts.my_profile" - }, - { - "defaultMessage": "to open blocked users list", - "id": "keyboard_shortcuts.blocked" - }, - { - "defaultMessage": "to open muted users list", - "id": "keyboard_shortcuts.muted" - }, - { - "defaultMessage": "to open follow requests list", - "id": "keyboard_shortcuts.requests" - }, - { - "defaultMessage": "to display this legend", - "id": "keyboard_shortcuts.legend" - } - ], - "path": "app/soapbox/features/ui/components/modals/hotkeys-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Download", - "id": "landing_page_modal.download" - }, - { - "defaultMessage": "Help Center", - "id": "landing_page_modal.helpCenter" - }, - { - "defaultMessage": "Log in", - "id": "header.login.label" - }, - { - "defaultMessage": "Register", - "id": "header.register.label" - } - ], - "path": "app/soapbox/features/ui/components/modals/landing-page-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Previous", - "id": "lightbox.previous" - }, - { - "defaultMessage": "Next", - "id": "lightbox.next" - }, - { - "defaultMessage": "View context", - "id": "lightbox.view_context" - } - ], - "path": "app/soapbox/features/ui/components/modals/media-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Mentions", - "id": "column.mentions" - } - ], - "path": "app/soapbox/features/ui/components/modals/mentions-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You have not entered a description for all attachments.", - "id": "missing_description_modal.text" - }, - { - "defaultMessage": "Post", - "id": "missing_description_modal.continue" - }, - { - "defaultMessage": "Cancel", - "id": "missing_description_modal.cancel" - }, - { - "defaultMessage": "Continue anyway?", - "id": "missing_description_modal.description" - } - ], - "path": "app/soapbox/features/ui/components/modals/missing-description-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Mute @{name}", - "id": "confirmations.mute.heading" - }, - { - "defaultMessage": "Mute", - "id": "confirmations.mute.confirm" - }, - { - "defaultMessage": "Cancel", - "id": "confirmation_modal.cancel" - }, - { - "defaultMessage": "Are you sure you want to mute {name}?", - "id": "confirmations.mute.message" - }, - { - "defaultMessage": "Hide notifications from this user?", - "id": "mute_modal.hide_notifications" - }, - { - "defaultMessage": "Automatically expire mute?", - "id": "mute_modal.auto_expire" - }, - { - "defaultMessage": "Duration", - "id": "mute_modal.duration" - } - ], - "path": "app/soapbox/features/ui/components/modals/mute-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "All", - "id": "reactions.all" - }, - { - "defaultMessage": "No one has reacted to this post yet. When someone does, they will show up here.", - "id": "status.reactions.empty" - }, - { - "defaultMessage": "Reactions", - "id": "column.reactions" - } - ], - "path": "app/soapbox/features/ui/components/modals/reactions-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "No one has reposted this post yet. When someone does, they will show up here.", - "id": "status.reblogs.empty" - }, - { - "defaultMessage": "Reposts", - "id": "column.reblogs" - } - ], - "path": "app/soapbox/features/ui/components/modals/reblogs-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "In reply to", - "id": "navigation_bar.in_reply_to" - } - ], - "path": "app/soapbox/features/ui/components/modals/reply-mentions-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You have removed all statuses from being selected.", - "id": "report.reason.blankslate" - }, - { - "defaultMessage": "Done", - "id": "report.done" - }, - { - "defaultMessage": "Next", - "id": "report.next" - }, - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Additional comments", - "id": "report.placeholder" - }, - { - "defaultMessage": "Submit", - "id": "report.submit" - }, - { - "defaultMessage": "Cancel", - "id": "common.cancel" - }, - { - "defaultMessage": "Previous", - "id": "report.previous" - }, - { - "defaultMessage": "Reporting {target}", - "id": "report.target" - } - ], - "path": "app/soapbox/features/ui/components/modals/report-modal/report-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Thanks for submitting your report.", - "id": "report.confirmation.title" - }, - { - "defaultMessage": "If we find that this account is violating the {link} we will take further action on the matter.", - "id": "report.confirmation.content" - }, - { - "defaultMessage": "Terms of Service", - "id": "shared.tos" - } - ], - "path": "app/soapbox/features/ui/components/modals/report-modal/steps/confirmation-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Would you like to add additional statuses to this report?", - "id": "report.otherActions.addAdditional" - }, - { - "defaultMessage": "Add more", - "id": "report.otherActions.addMore" - }, - { - "defaultMessage": "Further actions:", - "id": "report.otherActions.furtherActions" - }, - { - "defaultMessage": "Hide additional statuses", - "id": "report.otherActions.hideAdditional" - }, - { - "defaultMessage": "Include other statuses?", - "id": "report.otherActions.otherStatuses" - }, - { - "defaultMessage": "Do you also want to block this account?", - "id": "report.block_hint" - }, - { - "defaultMessage": "Block {target}", - "id": "report.block" - }, - { - "defaultMessage": "The account is from another server. Send a copy of the report there as well?", - "id": "report.forward_hint" - }, - { - "defaultMessage": "Forward to {target}", - "id": "report.forward" - } - ], - "path": "app/soapbox/features/ui/components/modals/report-modal/steps/other-actions-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Additional comments", - "id": "report.placeholder" - }, - { - "defaultMessage": "Reason for reporting", - "id": "report.reason.title" - } - ], - "path": "app/soapbox/features/ui/components/modals/report-modal/steps/reason-step.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Close", - "id": "lightbox.close" - }, - { - "defaultMessage": "Enter your username@domain you want to act from", - "id": "remote_interaction.account_placeholder" - }, - { - "defaultMessage": "Couldn't find given user", - "id": "remote_interaction.user_not_found_error" - }, - { - "defaultMessage": "Follow {user} remotely", - "id": "remote_interaction.follow_title" - }, - { - "defaultMessage": "Proceed to follow", - "id": "remote_interaction.follow" - }, - { - "defaultMessage": "Reply to a post remotely", - "id": "remote_interaction.reply_title" - }, - { - "defaultMessage": "Proceed to reply", - "id": "remote_interaction.reply" - }, - { - "defaultMessage": "Reblog a post remotely", - "id": "remote_interaction.reblog_title" - }, - { - "defaultMessage": "Proceed to repost", - "id": "remote_interaction.reblog" - }, - { - "defaultMessage": "Like a post remotely", - "id": "remote_interaction.favourite_title" - }, - { - "defaultMessage": "Proceed to like", - "id": "remote_interaction.favourite" - }, - { - "defaultMessage": "Vote in a poll remotely", - "id": "remote_interaction.poll_vote_title" - }, - { - "defaultMessage": "Proceed to vote", - "id": "remote_interaction.poll_vote" - }, - { - "defaultMessage": "Log in", - "id": "account.login" - }, - { - "defaultMessage": "Sign up", - "id": "account.register" - }, - { - "defaultMessage": "or", - "id": "remote_interaction.divider" - }, - { - "defaultMessage": "Sign up for {site_title}", - "id": "unauthorized_modal.title" - }, - { - "defaultMessage": "You need to be logged in to do that.", - "id": "unauthorized_modal.text" - } - ], - "path": "app/soapbox/features/ui/components/modals/unauthorized-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Please enter a valid phone number.", - "id": "sms_verification.invalid" - }, - { - "defaultMessage": "A verification code has been sent to your phone number.", - "id": "sms_verification.success" - }, - { - "defaultMessage": "Failed to send SMS message to your phone number.", - "id": "sms_verification.fail" - }, - { - "defaultMessage": "Your SMS token has expired.", - "id": "sms_verification.expired" - }, - { - "defaultMessage": "Verify SMS", - "id": "sms_verification.modal.verify_sms" - }, - { - "defaultMessage": "Verify phone number", - "id": "sms_verification.modal.verify_number" - }, - { - "defaultMessage": "Verify code", - "id": "sms_verification.modal.verify_code" - }, - { - "defaultMessage": "Verify your phone number to start using {instance}.", - "id": "sms_verification.modal.verify_help_text" - }, - { - "defaultMessage": "Phone number", - "id": "sms_verification.phone.label" - }, - { - "defaultMessage": "We sent you a 6-digit code via SMS. Enter it below.", - "id": "sms_verification.modal.enter_code" - }, - { - "defaultMessage": "Verify your phone number", - "id": "sms_verification.modal.verify_title" - }, - { - "defaultMessage": "Resend verification code?", - "id": "sms_verification.modal.resend_code" - } - ], - "path": "app/soapbox/features/ui/components/modals/verify-sms-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "View context", - "id": "lightbox.view_context" - } - ], - "path": "app/soapbox/features/ui/components/modals/video-modal.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Log in", - "id": "navbar.login.action" - }, - { - "defaultMessage": "Email or username", - "id": "navbar.login.username.placeholder" - }, - { - "defaultMessage": "Password", - "id": "navbar.login.password.label" - }, - { - "defaultMessage": "Forgot password?", - "id": "navbar.login.forgot_password" - }, - { - "defaultMessage": "Home", - "id": "tabs_bar.home" - }, - { - "defaultMessage": "Log In", - "id": "account.login" - }, - { - "defaultMessage": "Sign up", - "id": "account.register" - } - ], - "path": "app/soapbox/features/ui/components/navbar.json" - }, - { - "descriptors": [ - { - "defaultMessage": "New to {site_title}?", - "id": "signup_panel.title" - }, - { - "defaultMessage": "Sign up now to discuss.", - "id": "signup_panel.subtitle" - }, - { - "defaultMessage": "Sign up", - "id": "account.register" - } - ], - "path": "app/soapbox/features/ui/components/panels/sign-up-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{name}’s choices", - "id": "pinned_accounts.title" - } - ], - "path": "app/soapbox/features/ui/components/pinned-accounts-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Add an existing account", - "id": "profile_dropdown.add_account" - }, - { - "defaultMessage": "Theme", - "id": "profile_dropdown.theme" - }, - { - "defaultMessage": "Log out @{acct}", - "id": "profile_dropdown.logout" - } - ], - "path": "app/soapbox/features/ui/components/profile-dropdown.json" - }, - { - "descriptors": [ - { - "defaultMessage": "{count} {count, plural, one {other} other {others}} you follow", - "id": "account.familiar_followers.more" - }, - { - "defaultMessage": "Followed by {accounts}", - "id": "account.familiar_followers" - } - ], - "path": "app/soapbox/features/ui/components/profile-familiar-followers.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Ownership of this link was checked on {date}", - "id": "account.link_verified_on" - } - ], - "path": "app/soapbox/features/ui/components/profile-field.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Profile fields", - "id": "profile_fields_panel.title" - } - ], - "path": "app/soapbox/features/ui/components/profile-fields-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Ownership of this link was checked on {date}", - "id": "account.link_verified_on" - }, - { - "defaultMessage": "This account privacy status is set to locked. The owner manually reviews who can follow them.", - "id": "account.locked_info" - }, - { - "defaultMessage": "Deactivated", - "id": "account.deactivated" - }, - { - "defaultMessage": "Bot", - "id": "account.badges.bot" - }, - { - "defaultMessage": "Birthday is today!", - "id": "account.birthday_today" - }, - { - "defaultMessage": "Born {date}", - "id": "account.birthday" - }, - { - "defaultMessage": "Joined {date}", - "id": "account.member_since" - } - ], - "path": "app/soapbox/features/ui/components/profile-info-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "No media found.", - "id": "media_panel.empty_message" - }, - { - "defaultMessage": "Media", - "id": "media_panel.title" - } - ], - "path": "app/soapbox/features/ui/components/profile-media-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Followers", - "id": "account.followers" - }, - { - "defaultMessage": "Follows", - "id": "account.follows" - } - ], - "path": "app/soapbox/features/ui/components/profile-stats.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Subscribe to notifications from @{name}", - "id": "account.subscribe" - }, - { - "defaultMessage": "Unsubscribe to notifications from @{name}", - "id": "account.unsubscribe" - }, - { - "defaultMessage": "You have subscribed to this account.", - "id": "account.subscribe.success" - }, - { - "defaultMessage": "You have unsubscribed from this account.", - "id": "account.unsubscribe.success" - }, - { - "defaultMessage": "An error occurred trying to subscribe to this account.", - "id": "account.subscribe.failure" - }, - { - "defaultMessage": "An error occurred trying to unsubscribe to this account.", - "id": "account.unsubscribe.failure" - } - ], - "path": "app/soapbox/features/ui/components/subscription-button.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Light", - "id": "theme_toggle.light" - }, - { - "defaultMessage": "Dark", - "id": "theme_toggle.dark" - }, - { - "defaultMessage": "System", - "id": "theme_toggle.system" - } - ], - "path": "app/soapbox/features/ui/components/theme-selector.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Click to see {count} new {count, plural, one {post} other {posts}}", - "id": "status_list.queue_label" - } - ], - "path": "app/soapbox/features/ui/components/timeline.json" - }, - { - "descriptors": [ - { - "defaultMessage": "View all", - "id": "trendsPanel.viewAll" - }, - { - "defaultMessage": "Trends", - "id": "trends.title" - } - ], - "path": "app/soapbox/features/ui/components/trends-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Drag & drop to upload", - "id": "upload_area.title" - } - ], - "path": "app/soapbox/features/ui/components/upload-area.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Followers", - "id": "account.followers" - }, - { - "defaultMessage": "Follows", - "id": "account.follows" - } - ], - "path": "app/soapbox/features/ui/components/user-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Dismiss suggestion", - "id": "suggestions.dismiss" - }, - { - "defaultMessage": "People To Follow", - "id": "who_to_follow.title" - } - ], - "path": "app/soapbox/features/ui/components/who-to-follow-panel.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Your draft will be lost if you leave.", - "id": "ui.beforeunload" - }, - { - "defaultMessage": "Publish", - "id": "compose_form.publish" - } - ], - "path": "app/soapbox/features/ui/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "8 characters", - "id": "registration.validation.minimum_characters" - }, - { - "defaultMessage": "1 capital letter", - "id": "registration.validation.capital_letter" - }, - { - "defaultMessage": "1 lowercase letter", - "id": "registration.validation.lowercase_letter" - } - ], - "path": "app/soapbox/features/verification/components/password-indicator.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Email Confirmed!", - "id": "email_passthru.confirmed.heading" - }, - { - "defaultMessage": "Close this tab and continue the registration process on the {bold} from which you sent this email confirmation.", - "id": "email_passthru.confirmed.body" - }, - { - "defaultMessage": "Something Went Wrong", - "id": "email_passthru.generic_fail.heading" - }, - { - "defaultMessage": "Please request a new email confirmation.", - "id": "email_passthru.generic_fail.body" - }, - { - "defaultMessage": "Invalid Token", - "id": "email_passthru.token_not_found.heading" - }, - { - "defaultMessage": "Your email token was not found. Please request a new email confirmation from the {bold} from which you sent this email confirmation.", - "id": "email_passthru.token_not_found.body" - }, - { - "defaultMessage": "Token Expired", - "id": "email_passthru.token_expired.heading" - }, - { - "defaultMessage": "Your email token has expired. Please request a new email confirmation from the {bold} from which you sent this email confirmation.", - "id": "email_passthru.token_expired.body" - }, - { - "defaultMessage": "Your email has been verified!", - "id": "email_passthru.success" - }, - { - "defaultMessage": "Unable to confirm your email", - "id": "email_passthru.fail.generic" - }, - { - "defaultMessage": "Your email token has expired", - "id": "email_passthru.fail.expired" - }, - { - "defaultMessage": "Your email token is invalid.", - "id": "email_passthru.fail.not_found" - }, - { - "defaultMessage": "Your token is invalid", - "id": "email_passthru.fail.invalid_token" - } - ], - "path": "app/soapbox/features/verification/email-passthru.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Welcome to {siteTitle}!", - "id": "registrations.success" - }, - { - "defaultMessage": "Your username", - "id": "registrations.username.label" - }, - { - "defaultMessage": "May only contain A-Z, 0-9, and underscores", - "id": "registrations.username.hint" - }, - { - "defaultMessage": "This username has already been taken.", - "id": "registrations.unprocessable_entity" - }, - { - "defaultMessage": "Password", - "id": "registrations.password.label" - }, - { - "defaultMessage": "Failed to register your account.", - "id": "registrations.error" - }, - { - "defaultMessage": "Register your account", - "id": "registration.header" - }, - { - "defaultMessage": "Register", - "id": "header.register.label" - }, - { - "defaultMessage": "By registering, you agree to the {terms} and {privacy}.", - "id": "registration.acceptance" - }, - { - "defaultMessage": "Terms of Service", - "id": "registration.tos" - }, - { - "defaultMessage": "Privacy Policy", - "id": "registration.privacy" - } - ], - "path": "app/soapbox/features/verification/registration.json" - }, - { - "descriptors": [ - { - "defaultMessage": "You must be {ageMinimum, plural, one {# year} other {# years}} old or older.", - "id": "age_verification.fail" - }, - { - "defaultMessage": "Enter your birth date", - "id": "age_verification.header" - }, - { - "defaultMessage": "{siteTitle} requires users to be at least {ageMinimum} years old to access its platform. Anyone under the age of {ageMinimum} years old cannot access this platform.", - "id": "age_verification.body" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - } - ], - "path": "app/soapbox/features/verification/steps/age-verification.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Verification email sent successfully.", - "id": "email_verification.success" - }, - { - "defaultMessage": "Failed to request email verification.", - "id": "email_verification.fail" - }, - { - "defaultMessage": "This email has already been taken.", - "id": "email_verifilcation.exists" - }, - { - "defaultMessage": "is taken", - "id": "email_verification.taken" - }, - { - "defaultMessage": "E-mail address", - "id": "email_verification.email.label" - }, - { - "defaultMessage": "Enter your email address", - "id": "email_verification.header" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - } - ], - "path": "app/soapbox/features/verification/steps/email-verification.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Please enter a valid phone number.", - "id": "sms_verification.invalid" - }, - { - "defaultMessage": "A verification code has been sent to your phone number.", - "id": "sms_verification.success" - }, - { - "defaultMessage": "Failed to send SMS message to your phone number.", - "id": "sms_verification.fail" - }, - { - "defaultMessage": "Your SMS token has expired.", - "id": "sms_verification.expired" - }, - { - "defaultMessage": "Phone number", - "id": "sms_verification.phone.label" - }, - { - "defaultMessage": "Verification code", - "id": "sms_verification.sent.header" - }, - { - "defaultMessage": "We sent you a 6-digit code via SMS. Enter it below.", - "id": "sms_verification.sent.body" - }, - { - "defaultMessage": "Resend verification code?", - "id": "sms_verification.sent.actions.resend" - }, - { - "defaultMessage": "Enter your phone number", - "id": "sms_verification.header" - }, - { - "defaultMessage": "Next", - "id": "onboarding.next" - } - ], - "path": "app/soapbox/features/verification/steps/sms-verification.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Logout", - "id": "navigation_bar.logout" - }, - { - "defaultMessage": "Welcome back to {title}! You were previously placed on our waitlist. Please verify your phone number to receive immediate access to your account!", - "id": "waitlist.body" - }, - { - "defaultMessage": "Verify phone number", - "id": "waitlist.actions.verify_number" - } - ], - "path": "app/soapbox/features/verification/waitlist-page.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Play", - "id": "video.play" - }, - { - "defaultMessage": "Pause", - "id": "video.pause" - }, - { - "defaultMessage": "Mute sound", - "id": "video.mute" - }, - { - "defaultMessage": "Unmute sound", - "id": "video.unmute" - }, - { - "defaultMessage": "Hide video", - "id": "video.hide" - }, - { - "defaultMessage": "Expand video", - "id": "video.expand" - }, - { - "defaultMessage": "Close video", - "id": "video.close" - }, - { - "defaultMessage": "Full screen", - "id": "video.fullscreen" - }, - { - "defaultMessage": "Exit full screen", - "id": "video.exit_fullscreen" - } - ], - "path": "app/soapbox/features/video/index.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Update", - "id": "sw.update" - }, - { - "defaultMessage": "An update is available.", - "id": "sw.update_text" - } - ], - "path": "app/soapbox/main.json" - }, - { - "descriptors": [ - { - "defaultMessage": "Posts", - "id": "account.posts" - }, - { - "defaultMessage": "Posts and replies", - "id": "account.posts_with_replies" - }, - { - "defaultMessage": "Media", - "id": "account.media" - }, - { - "defaultMessage": "Likes", - "id": "navigation_bar.favourites" - } - ], - "path": "app/soapbox/pages/profile-page.json" - } -] \ No newline at end of file diff --git a/app/soapbox/locales/en.json b/app/soapbox/locales/en.json index 0ac9c05cc1..73048952ed 100644 --- a/app/soapbox/locales/en.json +++ b/app/soapbox/locales/en.json @@ -110,12 +110,15 @@ "admin.reports.empty_message": "There are no open reports. If a user gets reported, they will show up here.", "admin.reports.report_closed_message": "Report on @{name} was closed", "admin.reports.report_title": "Report on {acct}", + "admin.software.backend": "Backend", + "admin.software.frontend": "Frontend", "admin.statuses.actions.delete_status": "Delete post", "admin.statuses.actions.mark_status_not_sensitive": "Mark post not sensitive", "admin.statuses.actions.mark_status_sensitive": "Mark post sensitive", "admin.statuses.status_deleted_message": "Post by @{acct} was deleted", "admin.statuses.status_marked_message_not_sensitive": "Post by @{acct} was marked not sensitive", "admin.statuses.status_marked_message_sensitive": "Post by @{acct} was marked sensitive", + "admin.theme.title": "Theme", "admin.user_index.empty": "No users found.", "admin.user_index.search_input_placeholder": "Who are you looking for?", "admin.users.actions.deactivate_user": "Deactivate @{name}", @@ -147,7 +150,6 @@ "alert.unexpected.links.support": "Support", "alert.unexpected.message": "Something went wrong.", "alert.unexpected.return_home": "Return Home", - "alert.unexpected.title": "Oops!", "aliases.account.add": "Create alias", "aliases.account_label": "Old account:", "aliases.aliases_list_delete": "Unlink alias", @@ -186,19 +188,78 @@ "bundle_modal_error.message": "Something went wrong while loading this modal.", "bundle_modal_error.retry": "Try again", "card.back.label": "Back", - "chat_box.actions.send": "Send", - "chat_box.input.placeholder": "Send a message…", - "chat_panels.main_window.empty": "No chats found. To start a chat, visit a user's profile.", - "chat_panels.main_window.title": "Chats", - "chat_window.close": "Close chat", + "chat.actions.send": "Send", + "chat.failed_to_send": "Message failed to send.", + "chat.input.placeholder": "Type a message", + "chat.page_settings.accepting_messages.label": "Allow users to start a new chat with you", + "chat.page_settings.play_sounds.label": "Play a sound when you receive a message", + "chat.page_settings.preferences": "Preferences", + "chat.page_settings.privacy": "Privacy", + "chat.page_settings.submit": "Save", + "chat.page_settings.title": "Message Settings", + "chat.retry": "Retry?", + "chat.welcome.accepting_messages.label": "Allow users to start a new chat with you", + "chat.welcome.notice": "You can change these settings later.", + "chat.welcome.submit": "Save & Continue", + "chat.welcome.subtitle": "Exchange direct messages with other users.", + "chat.welcome.title": "Welcome to {br} Chats!", + "chat_composer.unblock": "Unblock", + "chat_list_item.blocked_you": "This user has blocked you", + "chat_list_item.blocking": "You have blocked this user", + "chat_message_list.blocked": "You blocked this user", + "chat_message_list.blockedBy": "You are blocked by", + "chat_message_list.network_failure.action": "Try again", + "chat_message_list.network_failure.subtitle": "We encountered a network failure.", + "chat_message_list.network_failure.title": "Whoops!", + "chat_message_list_intro.actions.accept": "Accept", + "chat_message_list_intro.actions.leave_chat": "Leave chat", + "chat_message_list_intro.actions.message_lifespan": "Messages older than {day} days are deleted.", + "chat_message_list_intro.actions.report": "Report", + "chat_message_list_intro.intro": "wants to start a chat with you", + "chat_message_list_intro.leave_chat.confirm": "Leave Chat", + "chat_message_list_intro.leave_chat.heading": "Leave Chat", + "chat_message_list_intro.leave_chat.message": "Are you sure you want to leave this chat? Messages will be deleted for you and this chat will be removed from your inbox.", + "chat_search.blankslate.body": "Search for someone to chat with.", + "chat_search.blankslate.title": "Start a chat", + "chat_search.empty_results_blankslate.action": "Message someone", + "chat_search.empty_results_blankslate.body": "Try searching for another name.", + "chat_search.empty_results_blankslate.title": "No matches found", + "chat_search.title": "Messages", + "chat_settings.auto_delete.14days": "14 days", + "chat_settings.auto_delete.2minutes": "2 minutes", + "chat_settings.auto_delete.30days": "30 days", + "chat_settings.auto_delete.7days": "7 days", + "chat_settings.auto_delete.90days": "90 days", + "chat_settings.auto_delete.days": "{day} days", + "chat_settings.auto_delete.hint": "Sent messages will auto-delete after the time period selected", + "chat_settings.auto_delete.label": "Auto-delete messages", + "chat_settings.block.confirm": "Block", + "chat_settings.block.heading": "Block @{acct}", + "chat_settings.block.message": "Blocking will prevent this profile from direct messaging you and viewing your content. You can unblock later.", + "chat_settings.leave.confirm": "Leave Chat", + "chat_settings.leave.heading": "Leave Chat", + "chat_settings.leave.message": "Are you sure you want to leave this chat? Messages will be deleted for you and this chat will be removed from your inbox.", + "chat_settings.options.block_user": "Block @{acct}", + "chat_settings.options.leave_chat": "Leave Chat", + "chat_settings.options.report_user": "Report @{acct}", + "chat_settings.options.unblock_user": "Unblock @{acct}", + "chat_settings.title": "Chat Details", + "chat_settings.unblock.confirm": "Unblock", + "chat_settings.unblock.heading": "Unblock @{acct}", + "chat_settings.unblock.message": "Unblocking will allow this profile to direct message you and view your content.", + "chat_window.auto_delete_label": "Auto-delete after {day} days", + "chat_window.auto_delete_tooltip": "Chat messages are set to auto-delete after {day} days upon sending.", + "chats.actions.copy": "Copy", "chats.actions.delete": "Delete message", + "chats.actions.deleteForMe": "Delete for me", "chats.actions.more": "More", "chats.actions.report": "Report user", - "chats.attachment": "Attachment", - "chats.attachment_image": "Image", - "chats.audio_toggle_off": "Audio notification off", - "chats.audio_toggle_on": "Audio notification on", "chats.dividers.today": "Today", + "chats.main.blankslate.new_chat": "Message someone", + "chats.main.blankslate.subtitle": "Search for someone to chat with", + "chats.main.blankslate.title": "No messages yet", + "chats.main.blankslate_with_chats.subtitle": "Select from one of your open chats or create a new message.", + "chats.main.blankslate_with_chats.title": "Select a chat", "chats.search_placeholder": "Start a chat with…", "column.admin.awaiting_approval": "Awaiting Approval", "column.admin.dashboard": "Dashboard", @@ -226,6 +287,9 @@ "column.directory": "Browse profiles", "column.domain_blocks": "Hidden domains", "column.edit_profile": "Edit profile", + "column.event_map": "Event location", + "column.event_participants": "Event participants", + "column.events": "Events", "column.export_data": "Export data", "column.familiar_followers": "People you know following {name}", "column.favourited_statuses": "Liked posts", @@ -268,15 +332,14 @@ "column.pins": "Pinned posts", "column.preferences": "Preferences", "column.public": "Federated timeline", + "column.quotes": "Post quotes", "column.reactions": "Reactions", "column.reblogs": "Reposts", - "column.remote": "Federated timeline", "column.scheduled_statuses": "Scheduled Posts", "column.search": "Search", "column.settings_store": "Settings store", "column.soapbox_config": "Soapbox config", "column.test": "Test timeline", - "column_back_button.label": "Back", "column_forbidden.body": "You do not have permission to access this page.", "column_forbidden.title": "Forbidden", "common.cancel": "Cancel", @@ -286,7 +349,33 @@ "compose.edit_success": "Your post was edited", "compose.invalid_schedule": "You must schedule a post at least 5 minutes out.", "compose.submit_success": "Your post was sent!", + "compose_event.create": "Create", + "compose_event.edit_success": "Your event was edited", + "compose_event.fields.approval_required": "I want to approve participation requests manually", + "compose_event.fields.banner_label": "Event banner", + "compose_event.fields.description_hint": "Markdown syntax is supported", + "compose_event.fields.description_label": "Event description", + "compose_event.fields.description_placeholder": "Description", + "compose_event.fields.end_time_label": "Event end date", + "compose_event.fields.end_time_placeholder": "Event ends on…", + "compose_event.fields.has_end_time": "The event has end date", + "compose_event.fields.location_label": "Event location", + "compose_event.fields.name_label": "Event name", + "compose_event.fields.name_placeholder": "Name", + "compose_event.fields.start_time_label": "Event start date", + "compose_event.fields.start_time_placeholder": "Event begins on…", + "compose_event.participation_requests.authorize": "Authorize", + "compose_event.participation_requests.authorize_success": "User accepted", + "compose_event.participation_requests.reject": "Reject", + "compose_event.participation_requests.reject_success": "User rejected", + "compose_event.reset_location": "Reset location", + "compose_event.submit_success": "Your event was created", + "compose_event.tabs.edit": "Edit details", + "compose_event.tabs.pending": "Manage requests", + "compose_event.update": "Update", + "compose_event.upload_banner": "Upload event banner", "compose_form.direct_message_warning": "This post will only be sent to the mentioned users.", + "compose_form.event_placeholder": "Post to this event", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", "compose_form.lock_disclaimer.lock": "locked", @@ -342,15 +431,22 @@ "confirmations.cancel_editing.confirm": "Cancel editing", "confirmations.cancel_editing.heading": "Cancel post editing", "confirmations.cancel_editing.message": "Are you sure you want to cancel editing this post? All changes will be lost.", + "confirmations.cancel_event_editing.heading": "Cancel event editing", + "confirmations.cancel_event_editing.message": "Are you sure you want to cancel editing this event? All changes will be lost.", "confirmations.delete.confirm": "Delete", "confirmations.delete.heading": "Delete post", "confirmations.delete.message": "Are you sure you want to delete this post?", + "confirmations.delete_event.confirm": "Delete", + "confirmations.delete_event.heading": "Delete event", + "confirmations.delete_event.message": "Are you sure you want to delete this event?", "confirmations.delete_list.confirm": "Delete", "confirmations.delete_list.heading": "Delete list", "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.heading": "Block {domain}", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications.", + "confirmations.leave_event.confirm": "Leave event", + "confirmations.leave_event.message": "If you want to rejoin the event, the request will be manually reviewed again. Are you sure you want to proceed?", "confirmations.mute.confirm": "Mute", "confirmations.mute.heading": "Mute @{name}", "confirmations.mute.message": "Are you sure you want to mute {name}?", @@ -400,6 +496,7 @@ "developers.navigation.network_error_label": "Network error", "developers.navigation.service_worker_label": "Service Worker", "developers.navigation.settings_store_label": "Settings store", + "developers.navigation.show_toast": "Trigger Toast", "developers.navigation.test_timeline_label": "Test timeline", "developers.settings_store.advanced": "Advanced settings", "developers.settings_store.hint": "It is possible to directly edit your user settings here. BE CAREFUL! Editing this section can break your account, and you will only be able to recover through the API.", @@ -498,6 +595,8 @@ "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", "empty_column.domain_blocks": "There are no hidden domains yet.", + "empty_column.event_participant_requests": "There are no pending event participation requests.", + "empty_column.event_participants": "No one joined this event yet. When someone does, they will show up here.", "empty_column.favourited_statuses": "You don't have any liked posts yet. When you like one, it will show up here.", "empty_column.favourites": "No one has liked this post yet. When someone does, they will show up here.", "empty_column.filters": "You haven't created any muted words yet.", @@ -514,12 +613,36 @@ "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", "empty_column.notifications_filtered": "You don't have any notifications of this type yet.", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", + "empty_column.quotes": "This post has not been quoted yet.", "empty_column.remote": "There is nothing here! Manually follow users from {instance} to fill it up.", "empty_column.scheduled_statuses": "You don't have any scheduled statuses yet. When you add one, it will show up here.", "empty_column.search.accounts": "There are no people results for \"{term}\"", "empty_column.search.hashtags": "There are no hashtags results for \"{term}\"", "empty_column.search.statuses": "There are no posts results for \"{term}\"", "empty_column.test": "The test timeline is empty.", + "event.banner": "Event banner", + "event.copy": "Copy link to event", + "event.date": "Date", + "event.description": "Description", + "event.discussion.empty": "No one has commented this event yet. When someone does, they will appear here.", + "event.export_ics": "Export to your calendar", + "event.external": "View event on {domain}", + "event.join_state.accept": "Going", + "event.join_state.empty": "Participate", + "event.join_state.pending": "Pending", + "event.join_state.rejected": "Going", + "event.location": "Location", + "event.manage": "Manage", + "event.organized_by": "Organized by {name}", + "event.participants": "{count} {rawCount, plural, one {person} other {people}} going", + "event.show_on_map": "Show on map", + "event.website": "External links", + "event_map.navigate": "Navigate", + "events.create_event": "Create event", + "events.joined_events": "Joined events", + "events.joined_events.empty": "You haven't joined any event yet.", + "events.recent_events": "Recent events", + "events.recent_events.empty": "There are no public events yet.", "export_data.actions.export": "Export", "export_data.actions.export_blocks": "Export blocks", "export_data.actions.export_follows": "Export follows", @@ -600,6 +723,12 @@ "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", + "join_event.hint": "You can tell the organizer why do you want to participate in this event:", + "join_event.join": "Request join", + "join_event.placeholder": "Message to organizer", + "join_event.request_success": "Requested to join the event", + "join_event.success": "Joined the event", + "join_event.title": "Join event", "keyboard_shortcuts.back": "to navigate back", "keyboard_shortcuts.blocked": "to open blocked users list", "keyboard_shortcuts.boost": "to repost", @@ -648,6 +777,7 @@ "lists.search": "Search among people you follow", "lists.subheading": "Your lists", "loading_indicator.label": "Loading…", + "location_search.placeholder": "Find an address", "login.fields.instance_label": "Instance", "login.fields.instance_placeholder": "example.com", "login.fields.otp_code_hint": "Enter the two-factor code generated by your phone app or use one of your recovery codes", @@ -696,6 +826,8 @@ "missing_description_modal.text": "You have not entered a description for all attachments. Continue anyway?", "missing_indicator.label": "Not found", "missing_indicator.sublabel": "This resource could not be found", + "modals.policy.submit": "Accept & Continue", + "modals.policy.updateTitle": "You’ve scored the latest version of {siteTitle}! Take a moment to review the exciting new things we’ve been working on.", "moderation_overlay.contact": "Contact", "moderation_overlay.hide": "Hide content", "moderation_overlay.show": "Show Content", @@ -722,8 +854,10 @@ "navigation_bar.compose": "Compose a post", "navigation_bar.compose_direct": "Direct message", "navigation_bar.compose_edit": "Edit post", + "navigation_bar.compose_event": "Manage event", "navigation_bar.compose_quote": "Quote post", "navigation_bar.compose_reply": "Reply to post", + "navigation_bar.create_event": "Create new event", "navigation_bar.domain_blocks": "Domain blocks", "navigation_bar.favourites": "Likes", "navigation_bar.filters": "Filters", @@ -746,6 +880,9 @@ "notification.others": " + {count} {count, plural, one {other} other {others}}", "notification.pleroma:chat_mention": "{name} sent you a message", "notification.pleroma:emoji_reaction": "{name} reacted to your post", + "notification.pleroma:event_reminder": "An event you are participating in starts soon", + "notification.pleroma:participation_accepted": "You were accepted to join the event", + "notification.pleroma:participation_request": "{name} wants to join your event", "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} reposted your post", "notification.status": "{name} just posted", @@ -819,6 +956,8 @@ "preferences.fields.content_type_label": "Default post format", "preferences.fields.delete_modal_label": "Show confirmation dialog before deleting a post", "preferences.fields.demetricator_label": "Use Demetricator", + "preferences.fields.demo_hint": "Use the default Soapbox logo and color scheme. Useful for taking screenshots.", + "preferences.fields.demo_label": "Demo mode", "preferences.fields.display_media.default": "Hide posts marked as sensitive", "preferences.fields.display_media.hide_all": "Always hide posts", "preferences.fields.display_media.show_all": "Always show posts", @@ -834,7 +973,6 @@ "preferences.fields.underline_links_label": "Always underline links in posts", "preferences.fields.unfollow_modal_label": "Show confirmation dialog before unfollowing someone", "preferences.hints.demetricator": "Decrease social media anxiety by hiding all numbers from the site.", - "preferences.hints.feed": "In your home feed", "preferences.notifications.advanced": "Show all notification categories", "preferences.options.content_type_markdown": "Markdown", "preferences.options.content_type_plaintext": "Plain text", @@ -907,6 +1045,8 @@ "remote_instance.unpin_host": "Unpin {host}", "remote_interaction.account_placeholder": "Enter your username@domain you want to act from", "remote_interaction.divider": "or", + "remote_interaction.event_join": "Proceed to join", + "remote_interaction.event_join_title": "Join an event remotely", "remote_interaction.favourite": "Proceed to like", "remote_interaction.favourite_title": "Like a post remotely", "remote_interaction.follow": "Proceed to follow", @@ -928,6 +1068,8 @@ "reply_mentions.reply_empty": "Replying to post", "report.block": "Block {target}", "report.block_hint": "Do you also want to block this account?", + "report.chatMessage.context": "When reporting a user’s message, the five messages before and five messages after the one selected will be passed along to our moderation team for context.", + "report.chatMessage.title": "Report message", "report.confirmation.content": "If we find that this account is violating the {link} we will take further action on the matter.", "report.confirmation.title": "Thanks for submitting your report.", "report.done": "Done", @@ -989,6 +1131,7 @@ "settings.configure_mfa": "Configure MFA", "settings.delete_account": "Delete Account", "settings.edit_profile": "Edit Profile", + "settings.messages.label": "Allow users to start a new chat with you", "settings.other": "Other options", "settings.preferences": "Preferences", "settings.profile": "Profile", @@ -1016,7 +1159,6 @@ "sms_verification.sent.body": "We sent you a 6-digit code via SMS. Enter it below.", "sms_verification.sent.header": "Verification code", "sms_verification.success": "A verification code has been sent to your phone number.", - "toast.view": "View", "soapbox_config.authenticated_profile_hint": "Users must be logged-in to view replies and media on user profiles.", "soapbox_config.authenticated_profile_label": "Profiles require authentication", "soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer", @@ -1029,9 +1171,8 @@ "soapbox_config.display_fqn_label": "Display domain (eg @user@domain) for local accounts.", "soapbox_config.feed_injection_hint": "Inject the feed with additional content, such as suggested profiles.", "soapbox_config.feed_injection_label": "Feed injection", - "soapbox_config.fields.accent_color_label": "Accent color", - "soapbox_config.fields.brand_color_label": "Brand color", "soapbox_config.fields.crypto_addresses_label": "Cryptocurrency addresses", + "soapbox_config.fields.edit_theme_label": "Edit theme", "soapbox_config.fields.home_footer_fields_label": "Home footer items", "soapbox_config.fields.logo_label": "Logo", "soapbox_config.fields.promo_panel_fields_label": "Promo panel items", @@ -1039,6 +1180,7 @@ "soapbox_config.greentext_label": "Enable greentext support", "soapbox_config.headings.advanced": "Advanced", "soapbox_config.headings.cryptocurrency": "Cryptocurrency", + "soapbox_config.headings.events": "Events", "soapbox_config.headings.navigation": "Navigation", "soapbox_config.headings.options": "Options", "soapbox_config.headings.theme": "Theme", @@ -1060,6 +1202,8 @@ "soapbox_config.single_user_mode_label": "Single user mode", "soapbox_config.single_user_mode_profile_hint": "@handle", "soapbox_config.single_user_mode_profile_label": "Main user handle", + "soapbox_config.tile_server_attribution_label": "Map tiles attribution", + "soapbox_config.tile_server_label": "Map tile server", "soapbox_config.verified_can_edit_name_label": "Allow verified users to edit their own display name.", "sponsored.info.message": "{siteTitle} displays ads to help fund our service.", "sponsored.info.title": "Why am I seeing this ad?", @@ -1081,6 +1225,7 @@ "status.favourite": "Like", "status.filtered": "Filtered", "status.interactions.favourites": "{count, plural, one {Like} other {Likes}}", + "status.interactions.quotes": "{count, plural, one {Quote} other {Quotes}}", "status.interactions.reblogs": "{count, plural, one {Repost} other {Reposts}}", "status.load_more": "Load more", "status.mention": "Mention @{name}", @@ -1139,7 +1284,6 @@ "sw.update_text": "An update is available.", "sw.url": "Script URL", "tabs_bar.all": "All", - "tabs_bar.chats": "Chats", "tabs_bar.dashboard": "Dashboard", "tabs_bar.fediverse": "Fediverse", "tabs_bar.home": "Home", @@ -1149,6 +1293,13 @@ "tabs_bar.profile": "Profile", "tabs_bar.search": "Search", "tabs_bar.settings": "Settings", + "theme_editor.Reset": "Reset", + "theme_editor.export": "Export theme", + "theme_editor.import": "Import theme", + "theme_editor.import_success": "Theme was successfully imported!", + "theme_editor.restore": "Restore default theme", + "theme_editor.save": "Save theme", + "theme_editor.saved": "Theme updated!", "theme_toggle.dark": "Dark", "theme_toggle.light": "Light", "theme_toggle.system": "System", @@ -1161,10 +1312,10 @@ "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.moments": "Moments remaining", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "toast.view": "View", "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking", "trends.title": "Trends", "trendsPanel.viewAll": "View all", - "ui.beforeunload": "Your draft will be lost if you leave.", "unauthorized_modal.text": "You need to be logged in to do that.", "unauthorized_modal.title": "Sign up for {site_title}", "upload_area.title": "Drag & drop to upload", diff --git a/app/soapbox/normalizers/instance.ts b/app/soapbox/normalizers/instance.ts index e7933b080f..48214b0912 100644 --- a/app/soapbox/normalizers/instance.ts +++ b/app/soapbox/normalizers/instance.ts @@ -112,6 +112,17 @@ const fixAkkoma = (instance: ImmutableMap) => { } }; +/** Set Takahe version to a Pleroma-like string */ +const fixTakahe = (instance: ImmutableMap) => { + const version: string = instance.get('version', ''); + + if (version.startsWith('takahe/')) { + return instance.set('version', `0.0.0 (compatible; Takahe ${version.slice(7)})`); + } else { + return instance; + } +}; + // Normalize instance (Pleroma, Mastodon, etc.) to Mastodon's format export const normalizeInstance = (instance: Record) => { return InstanceRecord( @@ -131,6 +142,7 @@ export const normalizeInstance = (instance: Record) => { // Normalize version normalizeVersion(instance); + fixTakahe(instance); fixAkkoma(instance); // Merge defaults diff --git a/app/soapbox/queries/__tests__/chats.test.ts b/app/soapbox/queries/__tests__/chats.test.ts index 3d72b9c0fa..0c7fdec8f9 100644 --- a/app/soapbox/queries/__tests__/chats.test.ts +++ b/app/soapbox/queries/__tests__/chats.test.ts @@ -178,7 +178,8 @@ describe('useChats', () => { describe('with a successful request', () => { beforeEach(() => { - store = mockStore(rootState); + const state = rootState.setIn(['instance', 'version'], '2.7.2 (compatible; Pleroma 2.2.0)'); + store = mockStore(state); __stub((mock) => { mock.onGet('/api/v1/pleroma/chats') @@ -378,4 +379,4 @@ describe('useChatActions', () => { expect((nextQueryData as any).message_expiration).toBe(1200); }); }); -}); \ No newline at end of file +}); diff --git a/app/soapbox/queries/chats.ts b/app/soapbox/queries/chats.ts index 2611228192..ace2722a86 100644 --- a/app/soapbox/queries/chats.ts +++ b/app/soapbox/queries/chats.ts @@ -157,6 +157,7 @@ const useChats = (search?: string) => { const queryInfo = useInfiniteQuery(ChatKeys.chatSearch(search), ({ pageParam }) => getChats(pageParam), { keepPreviousData: true, + enabled: features.chats, getNextPageParam: (config) => { if (config.hasMore) { return { link: config.link }; diff --git a/app/soapbox/utils/features.ts b/app/soapbox/utils/features.ts index deb53b0cb1..42947f340f 100644 --- a/app/soapbox/utils/features.ts +++ b/app/soapbox/utils/features.ts @@ -64,6 +64,12 @@ export const GLITCH = 'glitch'; */ export const AKKOMA = 'akkoma'; +/** + * Takahē, backend with support for serving multiple domains. + * @see {@link https://jointakahe.org/} + */ +export const TAKAHE = 'Takahe'; + /** Parse features for the given instance */ const getInstanceFeatures = (instance: Instance) => { const v = parseVersion(instance.version); @@ -288,6 +294,7 @@ const getInstanceFeatures = (instance: Instance) => { v.software === MASTODON && gte(v.compatVersion, '2.6.0'), v.software === PLEROMA && gte(v.version, '0.9.9'), v.software === PIXELFED, + v.software === TAKAHE, ]), /** @@ -299,6 +306,14 @@ const getInstanceFeatures = (instance: Instance) => { v.software === PLEROMA && gte(v.version, '0.9.9'), ]), + editProfile: any([ + v.software === MASTODON, + v.software === MITRA, + v.software === PIXELFED, + v.software === PLEROMA, + v.software === TRUTHSOCIAL, + ]), + editStatuses: any([ v.software === MASTODON && gte(v.version, '3.5.0'), features.includes('editing'), @@ -574,6 +589,7 @@ const getInstanceFeatures = (instance: Instance) => { publicTimeline: any([ v.software === MASTODON, v.software === PLEROMA, + v.software === TAKAHE, ]), /** diff --git a/app/soapbox/utils/media-aspect-ratio.ts b/app/soapbox/utils/media-aspect-ratio.ts index 781a22fd5a..8821d9debe 100644 --- a/app/soapbox/utils/media-aspect-ratio.ts +++ b/app/soapbox/utils/media-aspect-ratio.ts @@ -1,4 +1,4 @@ -export const minimumAspectRatio = 1; // Square +export const minimumAspectRatio = 9 / 16; // Portrait phone export const maximumAspectRatio = 10; // Generous min-height export const isPanoramic = (ar: number) => { diff --git a/app/styles/application.scss b/app/styles/application.scss index 508c32909d..f33e9888ed 100644 --- a/app/styles/application.scss +++ b/app/styles/application.scss @@ -31,7 +31,6 @@ @import 'components/dropdown-menu'; @import 'components/modal'; @import 'components/compose-form'; -@import 'components/sidebar-menu'; @import 'components/emoji-reacts'; @import 'components/status'; @import 'components/reply-mentions'; diff --git a/app/styles/components/sidebar-menu.scss b/app/styles/components/sidebar-menu.scss deleted file mode 100644 index 10c960fc4f..0000000000 --- a/app/styles/components/sidebar-menu.scss +++ /dev/null @@ -1,17 +0,0 @@ -.sidebar-menu { - @apply flex inset-0 fixed flex-col w-80 bg-white dark:bg-primary-900 transition-all ease-linear -translate-x-80 rtl:translate-x-80 z-1000; - - @media (max-width: 400px) { - @apply w-[90vw] -translate-x-[90vw] rtl:translate-x-[90vw]; - } - - hr { - @apply border-gray-200 dark:border-gray-700; - } -} - -.sidebar-menu__root--visible { - .sidebar-menu { - transform: translateX(0); - } -} diff --git a/jsdoc.conf.js b/jsdoc.conf.js deleted file mode 100644 index ec2335fbe4..0000000000 Binary files a/jsdoc.conf.js and /dev/null differ diff --git a/package.json b/package.json index a9ee25cee9..cb9e3b3a58 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "start": "npx webpack-dev-server", "dev": "${npm_execpath} run start", "build": "npx webpack", - "jsdoc": "npx jsdoc -c jsdoc.conf.js", - "manage:translations": "npx ts-node ./translationRunner.ts", + "audit:fix": "npx yarn-audit-fix", + "manage:translations": "npx ts-node ./scripts/translationRunner.ts", "test": "npx cross-env NODE_ENV=test npx jest", "test:coverage": "${npm_execpath} run test --coverage", "test:all": "${npm_execpath} run test:coverage && ${npm_execpath} run lint", @@ -79,12 +79,11 @@ "@types/leaflet": "^1.8.0", "@types/lodash": "^4.14.180", "@types/object-assign": "^4.0.30", - "@types/object-fit-images": "^3.2.3", "@types/qrcode.react": "^1.0.2", "@types/react-color": "^3.0.6", "@types/react-datepicker": "^4.4.2", "@types/react-helmet": "^6.1.5", - "@types/react-motion": "^0.0.32", + "@types/react-motion": "^0.0.33", "@types/react-router-dom": "^5.3.3", "@types/react-sparklines": "^1.7.2", "@types/react-swipeable-views": "^0.13.1", @@ -119,7 +118,7 @@ "cssnano": "^5.1.10", "detect-passive-events": "^2.0.0", "dotenv": "^8.0.0", - "emoji-datasource": "5.0.0", + "emoji-datasource": "5.0.1", "emoji-mart": "npm:emoji-mart-lazyload", "entities": "^3.0.1", "es6-symbol": "^3.1.1", @@ -138,7 +137,6 @@ "intl-messageformat-parser": "^6.0.0", "intl-pluralrules": "^1.3.1", "is-nan": "^1.2.1", - "jsdoc": "~3.6.7", "leaflet": "^1.8.0", "libphonenumber-js": "^1.10.8", "line-awesome": "^1.3.0", @@ -148,12 +146,10 @@ "marky": "^1.2.4", "mini-css-extract-plugin": "^2.6.0", "object-assign": "^4.1.1", - "object-fit-images": "^3.2.3", "object.values": "^1.1.0", "path-browserify": "^1.0.1", "postcss": "^8.4.14", "postcss-loader": "^7.0.0", - "postcss-object-fit-images": "^1.1.2", "process": "^0.11.10", "prop-types": "^15.5.10", "punycode": "^2.1.1", @@ -207,7 +203,7 @@ "webpack": "^5.72.1", "webpack-assets-manifest": "^5.1.0", "webpack-bundle-analyzer": "^4.5.0", - "webpack-cli": "^4.9.2", + "webpack-cli": "^5.0.0", "webpack-deadcode-plugin": "^0.1.16", "webpack-merge": "^5.8.0", "wicg-inert": "^3.1.1" @@ -231,11 +227,11 @@ "eslint-plugin-promise": "^5.1.0", "eslint-plugin-react": "^7.25.1", "eslint-plugin-react-hooks": "^4.2.0", - "fake-indexeddb": "^3.1.7", + "fake-indexeddb": "^4.0.0", "husky": "^7.0.2", "jest": "^28.1.2", "jest-environment-jsdom": "^28.1.2", - "jest-junit": "^14.0.0", + "jest-junit": "^15.0.0", "lint-staged": ">=10", "raf": "^3.4.1", "react-intl-translations-manager": "^5.0.3", @@ -245,6 +241,9 @@ "tailwindcss": "^3.2.1", "ts-jest": "^28.0.5", "webpack-dev-server": "^4.9.1", - "yargs": "^16.0.3" + "yargs": "^17.6.2" + }, + "resolutions": { + "loader-utils": "^2.0.3" } } diff --git a/postcss.config.js b/postcss.config.js index 82c50dee7a..ddc63e8c8b 100644 Binary files a/postcss.config.js and b/postcss.config.js differ diff --git a/renovate.json b/renovate.json index 63026e46bd..6cb74fb7dd 100644 --- a/renovate.json +++ b/renovate.json @@ -1,7 +1,10 @@ { "extends": [ "config:base", - ":preserveSemverRanges", - ":githubComToken(fJRNKBmV/ypoAx23PI8I+uTGJ22iSA6DERwiz1WGtXHC/imZV0mOyLfNOfVznOq3QbU9FTbuilgq3XfRQzRVMXx2eTe3ZkzzdH3loqfr2m/mt+9/PQygfkcAOJCQ4BE5Mlhfzxt9miBeG9jvm546oBXNjP39W+j4cdOnppBSMrhh2iofEOjXR41GCPDxCcdnr7RGDtWUCtrIYGyoJm2ypUrkRTUFexVAJy8Q7knX2ACZfzP9j+Uol22SEsU/WRZkvIEp60TqPlgvCFld7LECk2BYnDz9qTcSKF1GhfAsgGleSog9Tyfxow+rH1tB4cMxI5qZP0DTmAf+8fNYSgiKDA==)" - ] + ":preserveSemverRanges" + ], + "lockFileMaintenance": { + "enabled": true + }, + "rebaseWhen": "conflicted" } diff --git a/translationRunner.ts b/scripts/translationRunner.ts similarity index 96% rename from translationRunner.ts rename to scripts/translationRunner.ts index c4994648b1..3a955735b3 100644 --- a/translationRunner.ts +++ b/scripts/translationRunner.ts @@ -3,6 +3,7 @@ import path from 'path'; import * as parser from 'intl-messageformat-parser'; import manageTranslations, { readMessageFiles, ExtractedDescriptor } from 'react-intl-translations-manager'; +import yargs from 'yargs'; type Validator = (language: string) => void; @@ -13,7 +14,7 @@ interface LanguageResult { const RFC5646_REGEXP = /^[a-z]{2,3}(?:-(?:x|[A-Za-z]{2,4}))*$/; -const rootDirectory = path.resolve(__dirname); +const rootDirectory = path.resolve(__dirname, '..'); const translationsDirectory = path.resolve(rootDirectory, 'app', 'soapbox', 'locales'); const messagesDirectory = path.resolve(rootDirectory, 'build', 'messages'); const availableLanguages = fs.readdirSync(translationsDirectory).reduce((languages, filename) => { @@ -68,14 +69,15 @@ Available languages: ${availableLanguages.join(', ')} `; -const { argv } = require('yargs') +const argv = yargs .usage(usage) .option('f', { alias: 'force', default: false, describe: 'force using the provided languages. create files if not exists.', type: 'boolean', - }); + }) + .parseSync(); // check if message directory exists if (!fs.existsSync(messagesDirectory)) { @@ -87,7 +89,7 @@ Try to run "yarn build" first`); } // determine the languages list -const languages: string[] = (argv._.length > 0) ? argv._ : availableLanguages; +const languages: string[] = (argv._.length > 0) ? argv._.map(String) : availableLanguages; const validators: Validator[] = [ testRFC5646, @@ -105,7 +107,7 @@ manageTranslations({ messagesDirectory, translationsDirectory, detectDuplicateIds: false, - singleMessagesFile: true, + singleMessagesFile: false, languages, jsonOptions: { trailingNewline: true, diff --git a/yarn.lock b/yarn.lock index abeaef098e..d2d1e467f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -491,7 +491,7 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== -"@babel/parser@^7.7.0", "@babel/parser@^7.9.4": +"@babel/parser@^7.7.0": version "7.15.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.6.tgz#043b9aa3c303c0722e5377fef9197f4cf1796549" integrity sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q== @@ -2707,11 +2707,6 @@ resolved "https://registry.yarnpkg.com/@types/object-assign/-/object-assign-4.0.30.tgz#8949371d5a99f4381ee0f1df0a9b7a187e07e652" integrity sha1-iUk3HVqZ9Dge4PHfCpt6GH4H5lI= -"@types/object-fit-images@^3.2.3": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@types/object-fit-images/-/object-fit-images-3.2.3.tgz#aa17a1cb4ac113ba81ce62f901177c9ccd5194f5" - integrity sha512-kpBPy4HIzbM1o3v+DJrK4V5NgUpcUg/ayzjixOVHQNukpdEUYDIaeDrnYJUSemQXWX5mKeEnxDRU1nACAWYnvg== - "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -2781,10 +2776,10 @@ dependencies: "@types/react" "*" -"@types/react-motion@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/react-motion/-/react-motion-0.0.32.tgz#c7355cca054664f1aeadd7388f6890e9355e1783" - integrity sha512-xePjDdhy6/6AX3CUQCeQ2GSF0RwF+lXSpUSrm8tmdUXRf5Ps/dULwouTJ8YHhDvX7WlwYRKZjHXatadz/x3HXA== +"@types/react-motion@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/react-motion/-/react-motion-0.0.33.tgz#c156c400ace995584990344cc0239e41f411f425" + integrity sha512-R9grd4EwdDBcKKq7Zhszd8ukyy2BLKN6ooNI0V39nUl/sui+m7VI94cdebYemBteoPHmO7J7BZk+cIf+Xnk4TA== dependencies: "@types/react" "*" @@ -3235,22 +3230,20 @@ "@webassemblyjs/ast" "1.11.1" "@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" - integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== +"@webpack-cli/configtest@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" + integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== -"@webpack-cli/info@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" - integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== - dependencies: - envinfo "^7.7.3" +"@webpack-cli/info@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0" + integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== -"@webpack-cli/serve@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" - integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== +"@webpack-cli/serve@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.1.tgz#34bdc31727a1889198855913db2f270ace6d7bf8" + integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -3440,21 +3433,11 @@ ansi-html-community@^0.0.8: resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -3881,11 +3864,6 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3896,11 +3874,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - blurhash@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.5.tgz#3034104cd5dce5a3e5caa871ae2f0f1f2d0ab566" @@ -4112,43 +4085,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001254, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297: - version "1.0.30001320" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz" - integrity sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA== - -caniuse-lite@^1.0.30001304, caniuse-lite@^1.0.30001366: - version "1.0.30001368" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz#c5c06381c6051cd863c45021475434e81936f713" - integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ== - -caniuse-lite@^1.0.30001317: - version "1.0.30001325" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz#2b4ad19b77aa36f61f2eaf72e636d7481d55e606" - integrity sha512-sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ== - -caniuse-lite@^1.0.30001332: - version "1.0.30001344" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb" - integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g== - -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== - dependencies: - lodash "^4.17.15" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001254, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001304, caniuse-lite@^1.0.30001317, caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001366: + version "1.0.30001441" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz" + integrity sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg== chalk@^2.0.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.2: version "2.4.2" @@ -4305,6 +4245,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -4392,7 +4341,7 @@ commander@^2.18.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^7.0.0, commander@^7.2.0: +commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -4402,6 +4351,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== + comment-parser@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" @@ -4506,11 +4460,6 @@ core-js@^3.16.2: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.5.tgz#1f82b0de5eece800827a2f59d597509c67650475" integrity sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg== -core-js@^3.4: - version "3.22.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.2.tgz#3ea0a245b0895fa39d1faa15fe75d91ade504a01" - integrity sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA== - core-js@^3.8.2: version "3.23.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.1.tgz#9f9a9255115f62c512db56d567f636da32ca0b78" @@ -4563,38 +4512,6 @@ css-declaration-sorter@^6.2.2: resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz#bfd2f6f50002d6a3ae779a87d3a0c5d5b10e0f02" integrity sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg== -css-font-size-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz#854875ace9aca6a8d2ee0d345a44aae9bb6db6cb" - integrity sha1-hUh1rOmspqjS7g00WkSq6btttss= - -css-font-stretch-keywords@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz#50cee9b9ba031fb5c952d4723139f1e107b54b10" - integrity sha1-UM7puboDH7XJUtRyMTnx4Qe1SxA= - -css-font-style-keywords@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz#5c3532813f63b4a1de954d13cea86ab4333409e4" - integrity sha1-XDUygT9jtKHelU0TzqhqtDM0CeQ= - -css-font-weight-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz#9bc04671ac85bc724b574ef5d3ac96b0d604fd97" - integrity sha1-m8BGcayFvHJLV07106yWsNYE/Zc= - -css-global-keywords@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz#72a9aea72796d019b1d2a3252de4e5aaa37e4a69" - integrity sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk= - -css-list-helpers@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-list-helpers/-/css-list-helpers-1.0.1.tgz#fff57192202db83240c41686f919e449a7024f7d" - integrity sha1-//VxkiAtuDJAxBaG+RnkSacCT30= - dependencies: - tcomb "^2.5.0" - css-loader@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" @@ -4620,11 +4537,6 @@ css-select@^4.1.3: domutils "^2.6.0" nth-check "^2.0.0" -css-system-font-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz#85c6f086aba4eb32c571a3086affc434b84823ed" - integrity sha1-hcbwhquk6zLFcaMIav/ENLhII+0= - css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -4859,9 +4771,9 @@ decimal.js@^10.3.1: integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== dedent@^0.7.0: version "0.7.0" @@ -5190,10 +5102,10 @@ emittery@^0.10.2: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== -emoji-datasource@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/emoji-datasource/-/emoji-datasource-5.0.0.tgz#1522fdba3c52223a1cf5a1c1fc282935400eaa06" - integrity sha512-LuvLWFnxznTH++GytEzpzOPUo1SB+6CUFqIlVETJJ3x9fpyMCKFfyqberbhMLOpT1qcNe+km+zoyBeUSC3u5Rw== +emoji-datasource@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/emoji-datasource/-/emoji-datasource-5.0.1.tgz#31eaaff7caa6640929327b4f4ff66f2bf313df0a" + integrity sha512-RXokuCv4o8RFLiigN1skAdZwJuJWqtBvcK3GVKpvAL/7BeH95enmKsli7cG8YZ85RTjyEe3+GAdpJJOV43KLKQ== "emoji-mart@npm:emoji-mart-lazyload": version "3.0.1-j" @@ -5214,11 +5126,6 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -5282,11 +5189,6 @@ entities@^3.0.1: resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -entities@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - envinfo@^7.7.3: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -5440,7 +5342,7 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -5846,12 +5748,12 @@ extension-port-stream@^2.0.1: dependencies: webextension-polyfill-ts "^0.22.0" -fake-indexeddb@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-3.1.7.tgz#d9efbeade113c15efbe862e4598a4b0a1797ed9f" - integrity sha512-CUGeCzCOVjmeKi2C0pcvSh6NDU6uQIaS+7YyR++tO/atJJujkBYVhDvfePdz/U8bD33BMVWirsr1MKczfAqbjA== +fake-indexeddb@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/fake-indexeddb/-/fake-indexeddb-4.0.1.tgz#09bb2468e21d0832b2177e894765fb109edac8fb" + integrity sha512-hFRyPmvEZILYgdcLBxVdHLik4Tj3gDTu/g7s9ZDOiU3sTNiGx+vEu1ri/AMsFJUZ/1sdRbAVrEcKndh3sViBcA== dependencies: - realistic-structured-clone "^2.0.1" + realistic-structured-clone "^3.0.0" fast-deep-equal@^2.0.1: version "2.0.1" @@ -6020,9 +5922,9 @@ flatted@^3.1.0: integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== follow-redirects@^1.0.0: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== follow-redirects@^1.15.0: version "1.15.1" @@ -6354,7 +6256,7 @@ goober@^2.1.10: resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.11.tgz#bbd71f90d2df725397340f808dbe7acc3118e610" integrity sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A== -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.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -6381,13 +6283,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - 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" @@ -6398,11 +6293,6 @@ has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -6809,10 +6699,10 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== intersection-observer@^0.12.0: version "0.12.0" @@ -7427,10 +7317,10 @@ jest-haste-map@^28.1.1: optionalDependencies: fsevents "^2.3.2" -jest-junit@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-14.0.0.tgz#f69fc31bab32224848f443480c2c808fccb2a802" - integrity sha512-kALvBDegstTROfDGXH71UGD7k5g7593Y1wuX1wpWT+QTYcBbmtuGOA8UlAt56zo/B2eMIOcaOVEON3j0VXVa4g== +jest-junit@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-15.0.0.tgz#a47544ab42e9f8fe7ada56306c218e09e52bd690" + integrity sha512-Z5sVX0Ag3HZdMUnD5DFlG+1gciIFSy7yIVPhOdGUi8YJaI9iLvvBb530gtQL2CHmv0JJeiwRZenr0VrSR7frvg== dependencies: mkdirp "^1.0.4" strip-ansi "^6.0.1" @@ -7671,11 +7561,6 @@ jest@^28.1.2: import-local "^3.0.2" jest-cli "^28.1.2" -js-base64@^2.1.9: - version "2.6.4" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" - integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== - "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" @@ -7689,38 +7574,11 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js2xmlparser@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.1.tgz#670ef71bc5661f089cc90481b99a05a1227ae3bd" - integrity sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw== - dependencies: - xmlcreate "^2.0.3" - jsdoc-type-pratt-parser@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== -jsdoc@~3.6.7: - version "3.6.7" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.7.tgz#00431e376bed7f9de4716c6f15caa80e64492b89" - integrity sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw== - dependencies: - "@babel/parser" "^7.9.4" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.1" - klaw "^3.0.0" - markdown-it "^10.0.0" - markdown-it-anchor "^5.2.7" - marked "^2.0.3" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - taffydb "2.6.2" - underscore "~1.13.1" - jsdom@^19.0.0: version "19.0.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" @@ -7807,22 +7665,17 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" json5@^2.1.0, json5@^2.1.2, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" + integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== jsonfile@^4.0.0: version "4.0.0" @@ -7910,13 +7763,6 @@ kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -8025,13 +7871,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== - dependencies: - uc.micro "^1.0.1" - lint-staged@>=10: version "11.1.2" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" @@ -8070,20 +7909,10 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@0.2.x: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== +loader-utils@0.2.x, loader-utils@^2.0.0, loader-utils@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -8240,7 +8069,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0, lodash@^4.7.11: +lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0, lodash@^4.7.11: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8328,27 +8157,6 @@ mark-loader@^0.1.6: resolved "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz#0abb477dca7421d70e20128ff6489f5cae8676d5" integrity sha1-CrtHfcp0IdcOIBKP9kifXK6GdtU= -markdown-it-anchor@^5.2.7: - version "5.3.0" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" - integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== - -markdown-it@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" - integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== - dependencies: - argparse "^1.0.7" - entities "~2.0.0" - linkify-it "^2.0.0" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -marked@^2.0.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.3.tgz#bd017cef6431724fd4b27e0657f5ceb14bff3753" - integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== - marky@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f" @@ -8397,11 +8205,6 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -8557,14 +8360,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.4: +minimatch@^3.0.3, minimatch@^3.0.4: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -8580,21 +8376,16 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== minimist@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -minimist@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" - integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== - mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -8784,16 +8575,11 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-fit-images@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.4.tgz#6c299d38fdf207746e5d2d46c2877f6f25d15b52" - integrity sha512-G+7LzpYfTfqUyrZlfrou/PLLLAPNC52FTy5y1CBywX+1/FkxIloOyQXBmZ3Zxa2AWO+lMF0JTuvqbr7G5e5CWg== - object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" @@ -9017,21 +8803,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-css-font@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/parse-css-font/-/parse-css-font-2.0.2.tgz#7b60b060705a25a9b90b7f0ed493e5823248a652" - integrity sha1-e2CwYHBaJam5C38O1JPlgjJIplI= - dependencies: - css-font-size-keywords "^1.0.0" - css-font-stretch-keywords "^1.0.1" - css-font-style-keywords "^1.0.1" - css-font-weight-keywords "^1.0.0" - css-global-keywords "^1.0.1" - css-list-helpers "^1.0.1" - css-system-font-keywords "^1.0.0" - tcomb "^2.5.0" - unquote "^1.1.0" - parse-diff@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.7.1.tgz#9b7a2451c3725baf2c87c831ba192d40ee2237d4" @@ -9457,15 +9228,6 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-object-fit-images@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/postcss-object-fit-images/-/postcss-object-fit-images-1.1.2.tgz#8b773043db14672ef6cd6f2cb1f0d8b26a9f573b" - integrity sha1-i3cwQ9sUZy72zW8ssfDYsmqfVzs= - dependencies: - parse-css-font "^2.0.2" - postcss "^5.0.16" - quote "^0.4.0" - postcss-ordered-values@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" @@ -9562,16 +9324,6 @@ postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^5.0.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6: version "7.0.36" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" @@ -9752,11 +9504,6 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -quote@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz#10839217f6c1362b89194044d29b233fd7f32f01" - integrity sha1-EIOSF/bBNiuJGUBE0psjP9fzLwE= - raf@^3.1.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -10200,22 +9947,21 @@ readline-sync@^1.4.9: resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== -realistic-structured-clone@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/realistic-structured-clone/-/realistic-structured-clone-2.0.4.tgz#7eb4c2319fc3cb72f4c8d3c9e888b11647894b50" - integrity sha512-lItAdBIFHUSe6fgztHPtmmWqKUgs+qhcYLi3wTRUl4OTB3Vb8aBVSjGfQZUvkmJCKoX3K9Wf7kyLp/F/208+7A== +realistic-structured-clone@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/realistic-structured-clone/-/realistic-structured-clone-3.0.0.tgz#7b518049ce2dad41ac32b421cd297075b00e3e35" + integrity sha512-rOjh4nuWkAqf9PWu6JVpOWD4ndI+JHfgiZeMmujYcPi+fvILUu7g6l26TC1K5aBIp34nV+jE1cDO75EKOfHC5Q== dependencies: - core-js "^3.4" domexception "^1.0.1" typeson "^6.1.0" typeson-registry "^1.0.0-alpha.20" -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: - resolve "^1.9.0" + resolve "^1.20.0" redent@^3.0.0: version "3.0.0" @@ -10436,13 +10182,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -requizzle@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" - integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== - dependencies: - lodash "^4.17.14" - reselect@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" @@ -10494,7 +10233,7 @@ resolve@^1.1.7, resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -10889,7 +10628,7 @@ source-map-support@^0.5.20, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10904,11 +10643,6 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -11110,13 +10844,6 @@ stringz@^2.0.0: dependencies: char-regex "^1.0.2" -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.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" @@ -11265,18 +10992,6 @@ sugarss@^2.0.0: dependencies: postcss "^7.0.2" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - supports-color@^5.0.0, supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -11366,11 +11081,6 @@ table@^6.0.9, table@^6.6.0: string-width "^4.2.0" strip-ansi "^6.0.0" -taffydb@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" - integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= - tailwindcss@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.1.tgz#1bd828fff3172489962357f8d531c184080a6786" @@ -11405,11 +11115,6 @@ tapable@^2.0, tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tcomb@^2.5.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0" - integrity sha1-ENYpWAQWaaXVNWe5pO6M3iKxwrA= - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -11430,25 +11135,16 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.3: source-map "^0.6.1" terser "^5.7.2" -terser@^5.10.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.0.tgz#eefeec9af5153f55798180ee2617f390bdd285e2" - integrity sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g== +terser@^5.10.0, terser@^5.7.2: + version "5.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" + integrity "sha1-WvO8PQ8kJBx/sgJBmdXEYaEHWIA= sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==" dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" source-map-support "~0.5.20" -terser@^5.7.2: - version "5.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.8.0.tgz#c6d352f91aed85cc6171ccb5e84655b77521d947" - integrity sha512-f0JH+6yMpneYcRJN314lZrSwu9eKkUFEHLN/kNy8ceh8gaRiLgFPJqrB9HsXjhEGdv4e/ekjTOFxIlL6xlma8A== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - 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" @@ -11747,11 +11443,6 @@ typeson@^6.0.0, typeson@^6.1.0: resolved "https://registry.yarnpkg.com/typeson/-/typeson-6.1.0.tgz#5b2a53705a5f58ff4d6f82f965917cabd0d7448b" integrity sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA== -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -11772,11 +11463,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -underscore@~1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== - 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" @@ -11859,11 +11545,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - update-browserslist-db@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" @@ -12113,22 +11794,23 @@ webpack-bundle-analyzer@^4.5.0: sirv "^1.0.7" ws "^7.3.1" -webpack-cli@^4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" - integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== +webpack-cli@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.1.tgz#95fc0495ac4065e9423a722dec9175560b6f2d9a" + integrity sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A== 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" + "@webpack-cli/configtest" "^2.0.1" + "@webpack-cli/info" "^2.0.1" + "@webpack-cli/serve" "^2.0.1" colorette "^2.0.14" - commander "^7.0.0" - execa "^5.0.0" + commander "^9.4.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" fastest-levenshtein "^1.0.12" import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" + interpret "^3.1.1" + rechoir "^0.8.0" webpack-merge "^5.7.3" webpack-deadcode-plugin@^0.1.16: @@ -12448,11 +12130,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmlcreate@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497" - integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ== - xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -12473,7 +12150,7 @@ yaml@^1.10.0, yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -12483,18 +12160,10 @@ yargs-parser@^21.0.0, yargs-parser@^21.0.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== -yargs@^16.0.3: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - 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-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.3.1: version "17.5.1" @@ -12509,6 +12178,19 @@ yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.0.0" +yargs@^17.6.2: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"