Merge branch 'main' into custom-themes

This commit is contained in:
Dessalines 2022-02-24 16:31:33 -05:00
commit 794011af62
22 changed files with 281 additions and 472 deletions

View file

@ -75,7 +75,6 @@
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.0.0",
"husky": "^7.0.4", "husky": "^7.0.4",
"import-sort-style-module": "^6.0.0", "import-sort-style-module": "^6.0.0",
"iso-639-1": "^2.1.10",
"lemmy-js-client": "0.15.1-rc.1", "lemmy-js-client": "0.15.1-rc.1",
"lint-staged": "^12.1.2", "lint-staged": "^12.1.2",
"mini-css-extract-plugin": "^2.4.5", "mini-css-extract-plugin": "^2.4.5",

View file

@ -145,7 +145,7 @@ server.get("/*", async (req, res) => {
if (errCode == "instance_is_private") { if (errCode == "instance_is_private") {
return res.redirect(`/signup`); return res.redirect(`/signup`);
} else { } else {
return res.redirect(`/404?err=${errCode}`); return res.send(`404: ${errCode}`);
} }
} }
@ -231,7 +231,7 @@ server.get("/*", async (req, res) => {
`); `);
} catch (err) { } catch (err) {
console.error(err); console.error(err);
return res.redirect(`/404?err=${err}`); return res.send(`404: ${err}`);
} }
}); });

View file

@ -18,7 +18,7 @@ import { UserService, WebSocketService } from "../../services";
import { import {
authField, authField,
donateLemmyUrl, donateLemmyUrl,
getLanguage, getLanguages,
isBrowser, isBrowser,
notifyComment, notifyComment,
notifyPrivateMessage, notifyPrivateMessage,
@ -612,7 +612,7 @@ export class Navbar extends Component<NavbarProps, NavbarState> {
setTheme( setTheme(
UserService.Instance.myUserInfo.local_user_view.local_user.theme UserService.Instance.myUserInfo.local_user_view.local_user.theme
); );
i18n.changeLanguage(getLanguage()); i18n.changeLanguage(getLanguages()[0]);
this.state.isLoggedIn = true; this.state.isLoggedIn = true;
this.setState(this.state); this.setState(this.state);
} else if (op == UserOperation.CreateComment) { } else if (op == UserOperation.CreateComment) {

View file

@ -10,6 +10,7 @@ import {
mdToHtml, mdToHtml,
pictrsDeleteToast, pictrsDeleteToast,
randomStr, randomStr,
relTags,
setupTippy, setupTippy,
setupTribute, setupTribute,
toast, toast,
@ -297,7 +298,7 @@ export class MarkdownTextArea extends Component<
href={markdownHelpUrl} href={markdownHelpUrl}
class="btn btn-sm text-muted font-weight-bold" class="btn btn-sm text-muted font-weight-bold"
title={i18n.t("formatting_help")} title={i18n.t("formatting_help")}
rel="noopener" rel={relTags}
> >
<Icon icon="help-circle" classes="icon-inline" /> <Icon icon="help-circle" classes="icon-inline" />
</a> </a>

View file

@ -1,7 +1,7 @@
import { Component } from "inferno"; import { Component } from "inferno";
import moment from "moment"; import moment from "moment";
import { i18n } from "../../i18next"; import { i18n } from "../../i18next";
import { capitalizeFirstLetter, getMomentLanguage } from "../../utils"; import { capitalizeFirstLetter, getLanguages } from "../../utils";
import { Icon } from "./icon"; import { Icon } from "./icon";
interface MomentTimeProps { interface MomentTimeProps {
@ -18,7 +18,7 @@ export class MomentTime extends Component<MomentTimeProps, any> {
constructor(props: any, context: any) { constructor(props: any, context: any) {
super(props, context); super(props, context);
let lang = getMomentLanguage(); let lang = getLanguages();
moment.locale(lang); moment.locale(lang);
} }

View file

@ -32,8 +32,9 @@ export class PictrsImage extends Component<PictrsImageProps, any> {
loading="lazy" loading="lazy"
className={classNames({ className={classNames({
"img-fluid": !this.props.icon && !this.props.iconOverlay, "img-fluid": !this.props.icon && !this.props.iconOverlay,
"banner": this.props.banner, banner: this.props.banner,
"thumbnail rounded": this.props.thumbnail && !this.props.icon && !this.props.banner, "thumbnail rounded":
this.props.thumbnail && !this.props.icon && !this.props.banner,
"img-expanded slight-radius": "img-expanded slight-radius":
!this.props.thumbnail && !this.props.icon, !this.props.thumbnail && !this.props.icon,
"img-blur": this.props.thumbnail && this.props.nsfw, "img-blur": this.props.thumbnail && this.props.nsfw,

View file

@ -1,7 +1,7 @@
import { Component, linkEvent } from "inferno"; import { Component, linkEvent } from "inferno";
import { SortType } from "lemmy-js-client"; import { SortType } from "lemmy-js-client";
import { i18n } from "../../i18next"; import { i18n } from "../../i18next";
import { randomStr, sortingHelpUrl } from "../../utils"; import { randomStr, relTags, sortingHelpUrl } from "../../utils";
import { Icon } from "./icon"; import { Icon } from "./icon";
interface SortSelectProps { interface SortSelectProps {
@ -71,7 +71,7 @@ export class SortSelect extends Component<SortSelectProps, SortSelectState> {
<a <a
className="text-muted" className="text-muted"
href={sortingHelpUrl} href={sortingHelpUrl}
rel="noopener" rel={relTags}
title={i18n.t("sorting_help")} title={i18n.t("sorting_help")}
> >
<Icon icon="help-circle" classes="icon-inline" /> <Icon icon="help-circle" classes="icon-inline" />

View file

@ -1,7 +1,7 @@
import { Component } from "inferno"; import { Component } from "inferno";
import { Link } from "inferno-router"; import { Link } from "inferno-router";
import { CommunitySafe } from "lemmy-js-client"; import { CommunitySafe } from "lemmy-js-client";
import { hostname, showAvatars } from "../../utils"; import { hostname, relTags, showAvatars } from "../../utils";
import { PictrsImage } from "../common/pictrs-image"; import { PictrsImage } from "../common/pictrs-image";
interface CommunityLinkProps { interface CommunityLinkProps {
@ -48,6 +48,7 @@ export class CommunityLink extends Component<CommunityLinkProps, any> {
title={apubName} title={apubName}
className={`${this.props.muted ? "text-muted" : ""}`} className={`${this.props.muted ? "text-muted" : ""}`}
href={link} href={link}
rel={relTags}
> >
{this.avatarAndName(displayName)} {this.avatarAndName(displayName)}
</a> </a>

View file

@ -38,6 +38,7 @@ import {
getPageFromProps, getPageFromProps,
getSortTypeFromProps, getSortTypeFromProps,
notifyPost, notifyPost,
relTags,
restoreScrollPosition, restoreScrollPosition,
saveCommentRes, saveCommentRes,
saveScrollPosition, saveScrollPosition,
@ -370,7 +371,7 @@ export class Community extends Component<any, State> {
<span class="mr-2"> <span class="mr-2">
<SortSelect sort={this.state.sort} onChange={this.handleSortChange} /> <SortSelect sort={this.state.sort} onChange={this.handleSortChange} />
</span> </span>
<a href={communityRss} title="RSS" rel="noopener"> <a href={communityRss} title="RSS" rel={relTags}>
<Icon icon="rss" classes="text-muted small" /> <Icon icon="rss" classes="text-muted small" />
</a> </a>
<link rel="alternate" type="application/atom+xml" href={communityRss} /> <link rel="alternate" type="application/atom+xml" href={communityRss} />

View file

@ -43,6 +43,7 @@ import {
mdToHtml, mdToHtml,
notifyPost, notifyPost,
numToSI, numToSI,
relTags,
restoreScrollPosition, restoreScrollPosition,
saveCommentRes, saveCommentRes,
saveScrollPosition, saveScrollPosition,
@ -695,7 +696,7 @@ export class Home extends Component<any, HomeState> {
</span> </span>
{this.state.listingType == ListingType.All && ( {this.state.listingType == ListingType.All && (
<> <>
<a href={allRss} rel="noopener" title="RSS"> <a href={allRss} rel={relTags} title="RSS">
<Icon icon="rss" classes="text-muted small" /> <Icon icon="rss" classes="text-muted small" />
</a> </a>
<link rel="alternate" type="application/atom+xml" href={allRss} /> <link rel="alternate" type="application/atom+xml" href={allRss} />
@ -703,7 +704,7 @@ export class Home extends Component<any, HomeState> {
)} )}
{this.state.listingType == ListingType.Local && ( {this.state.listingType == ListingType.Local && (
<> <>
<a href={localRss} rel="noopener" title="RSS"> <a href={localRss} rel={relTags} title="RSS">
<Icon icon="rss" classes="text-muted small" /> <Icon icon="rss" classes="text-muted small" />
</a> </a>
<link rel="alternate" type="application/atom+xml" href={localRss} /> <link rel="alternate" type="application/atom+xml" href={localRss} />
@ -712,7 +713,7 @@ export class Home extends Component<any, HomeState> {
{UserService.Instance.myUserInfo && {UserService.Instance.myUserInfo &&
this.state.listingType == ListingType.Subscribed && ( this.state.listingType == ListingType.Subscribed && (
<> <>
<a href={frontRss} title="RSS" rel="noopener"> <a href={frontRss} title="RSS" rel={relTags}>
<Icon icon="rss" classes="text-muted small" /> <Icon icon="rss" classes="text-muted small" />
</a> </a>
<link <link

View file

@ -1,7 +1,7 @@
import { Component } from "inferno"; import { Component } from "inferno";
import { GetSiteResponse } from "lemmy-js-client"; import { GetSiteResponse } from "lemmy-js-client";
import { i18n } from "../../i18next"; import { i18n } from "../../i18next";
import { setIsoData } from "../../utils"; import { relTags, setIsoData } from "../../utils";
import { HtmlTags } from "../common/html-tags"; import { HtmlTags } from "../common/html-tags";
interface InstancesState { interface InstancesState {
@ -60,7 +60,7 @@ export class Instances extends Component<any, InstancesState> {
<ul> <ul>
{items.map(i => ( {items.map(i => (
<li> <li>
<a href={`https://${i}`} rel="noopener"> <a href={`https://${i}`} rel={relTags}>
{i} {i}
</a> </a>
</li> </li>

View file

@ -30,6 +30,7 @@ import {
editCommentRes, editCommentRes,
fetchLimit, fetchLimit,
isBrowser, isBrowser,
relTags,
saveCommentRes, saveCommentRes,
setIsoData, setIsoData,
setupTippy, setupTippy,
@ -157,7 +158,7 @@ export class Inbox extends Component<any, InboxState> {
<h5 class="mb-2"> <h5 class="mb-2">
{i18n.t("inbox")} {i18n.t("inbox")}
<small> <small>
<a href={inboxRss} title="RSS" rel="noopener"> <a href={inboxRss} title="RSS" rel={relTags}>
<Icon icon="rss" classes="ml-2 text-muted small" /> <Icon icon="rss" classes="ml-2 text-muted small" />
</a> </a>
<link <link

View file

@ -1,7 +1,7 @@
import { Component } from "inferno"; import { Component } from "inferno";
import { Link } from "inferno-router"; import { Link } from "inferno-router";
import { PersonSafe } from "lemmy-js-client"; import { PersonSafe } from "lemmy-js-client";
import { hostname, isCakeDay, showAvatars } from "../../utils"; import { hostname, isCakeDay, relTags, showAvatars } from "../../utils";
import { PictrsImage } from "../common/pictrs-image"; import { PictrsImage } from "../common/pictrs-image";
import { CakeDay } from "./cake-day"; import { CakeDay } from "./cake-day";
@ -60,6 +60,7 @@ export class PersonListing extends Component<PersonListingProps, any> {
title={apubName} title={apubName}
className={this.props.muted ? "text-muted" : "text-info"} className={this.props.muted ? "text-muted" : "text-info"}
href={link} href={link}
rel={relTags}
> >
{this.avatarAndName(displayName)} {this.avatarAndName(displayName)}
</a> </a>

View file

@ -29,6 +29,7 @@ import {
mdToHtml, mdToHtml,
numToSI, numToSI,
previewLines, previewLines,
relTags,
restoreScrollPosition, restoreScrollPosition,
routeSortTypeToEnum, routeSortTypeToEnum,
saveCommentRes, saveCommentRes,
@ -346,7 +347,7 @@ export class Profile extends Component<any, ProfileState> {
hideHot hideHot
hideMostComments hideMostComments
/> />
<a href={profileRss} rel="noopener" title="RSS"> <a href={profileRss} rel={relTags} title="RSS">
<Icon icon="rss" classes="text-muted small mx-2" /> <Icon icon="rss" classes="text-muted small mx-2" />
</a> </a>
<link rel="alternate" type="application/atom+xml" href={profileRss} /> <link rel="alternate" type="application/atom+xml" href={profileRss} />
@ -419,7 +420,7 @@ export class Profile extends Component<any, ProfileState> {
className={`d-flex align-self-start btn btn-secondary mr-2 ${ className={`d-flex align-self-start btn btn-secondary mr-2 ${
!pv.person.matrix_user_id && "invisible" !pv.person.matrix_user_id && "invisible"
}`} }`}
rel="noopener" rel={relTags}
href={`https://matrix.to/#/${pv.person.matrix_user_id}`} href={`https://matrix.to/#/${pv.person.matrix_user_id}`}
> >
{i18n.t("send_secure_message")} {i18n.t("send_secure_message")}

View file

@ -18,7 +18,7 @@ import {
UserOperation, UserOperation,
} from "lemmy-js-client"; } from "lemmy-js-client";
import { Subscription } from "rxjs"; import { Subscription } from "rxjs";
import { i18n } from "../../i18next"; import { i18n, languages } from "../../i18next";
import { UserService, WebSocketService } from "../../services"; import { UserService, WebSocketService } from "../../services";
import { import {
authField, authField,
@ -31,12 +31,11 @@ import {
fetchCommunities, fetchCommunities,
fetchThemes, fetchThemes,
fetchUsers, fetchUsers,
getLanguage, getLanguages,
getNativeLanguageName,
isBrowser, isBrowser,
languages,
personSelectName, personSelectName,
personToChoice, personToChoice,
relTags,
setIsoData, setIsoData,
setTheme, setTheme,
setupTippy, setupTippy,
@ -466,7 +465,7 @@ export class Settings extends Component<any, SettingsState> {
</div> </div>
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-5 col-form-label" htmlFor="matrix-user-id"> <label class="col-sm-5 col-form-label" htmlFor="matrix-user-id">
<a href={elementUrl} rel="noopener"> <a href={elementUrl} rel={relTags}>
{i18n.t("matrix_user_id")} {i18n.t("matrix_user_id")}
</a> </a>
</label> </label>
@ -526,9 +525,7 @@ export class Settings extends Component<any, SettingsState> {
{languages {languages
.sort((a, b) => a.code.localeCompare(b.code)) .sort((a, b) => a.code.localeCompare(b.code))
.map(lang => ( .map(lang => (
<option value={lang.code}> <option value={lang.code}>{lang.name}</option>
{getNativeLanguageName(lang.code)}
</option>
))} ))}
</select> </select>
</div> </div>
@ -935,7 +932,7 @@ export class Settings extends Component<any, SettingsState> {
handleLangChange(i: Settings, event: any) { handleLangChange(i: Settings, event: any) {
i.state.saveUserSettingsForm.lang = event.target.value; i.state.saveUserSettingsForm.lang = event.target.value;
i18n.changeLanguage(getLanguage(i.state.saveUserSettingsForm.lang)); i18n.changeLanguage(getLanguages(i.state.saveUserSettingsForm.lang)[0]);
i.setState(i.state); i.setState(i.state);
} }

View file

@ -1,6 +1,7 @@
import { Component, linkEvent } from "inferno"; import { Component, linkEvent } from "inferno";
import { Post } from "lemmy-js-client"; import { Post } from "lemmy-js-client";
import { i18n } from "../../i18next"; import { i18n } from "../../i18next";
import { relTags } from "../../utils";
import { Icon } from "../common/icon"; import { Icon } from "../common/icon";
interface MetadataCardProps { interface MetadataCardProps {
@ -35,7 +36,7 @@ export class MetadataCard extends Component<
<div class="card-body"> <div class="card-body">
{post.name !== post.embed_title && [ {post.name !== post.embed_title && [
<h5 class="card-title d-inline"> <h5 class="card-title d-inline">
<a class="text-body" href={post.url} rel="noopener"> <a class="text-body" href={post.url} rel={relTags}>
{post.embed_title} {post.embed_title}
</a> </a>
</h5>, </h5>,
@ -43,7 +44,7 @@ export class MetadataCard extends Component<
<a <a
class="text-muted font-italic" class="text-muted font-italic"
href={post.url} href={post.url}
rel="noopener" rel={relTags}
> >
{new URL(post.url).hostname} {new URL(post.url).hostname}
<Icon icon="external-link" classes="ml-1" /> <Icon icon="external-link" classes="ml-1" />

View file

@ -33,6 +33,7 @@ import {
isBrowser, isBrowser,
isImage, isImage,
pictrsDeleteToast, pictrsDeleteToast,
relTags,
setupTippy, setupTippy,
toast, toast,
validTitle, validTitle,
@ -219,7 +220,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
this.state.postForm.url this.state.postForm.url
)}`} )}`}
class="mr-2 d-inline-block float-right text-muted small font-weight-bold" class="mr-2 d-inline-block float-right text-muted small font-weight-bold"
rel="noopener" rel={relTags}
> >
archive.org {i18n.t("archive_link")} archive.org {i18n.t("archive_link")}
</a> </a>
@ -228,7 +229,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
this.state.postForm.url this.state.postForm.url
)}`} )}`}
class="mr-2 d-inline-block float-right text-muted small font-weight-bold" class="mr-2 d-inline-block float-right text-muted small font-weight-bold"
rel="noopener" rel={relTags}
> >
ghostarchive.org {i18n.t("archive_link")} ghostarchive.org {i18n.t("archive_link")}
</a> </a>
@ -237,7 +238,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
this.state.postForm.url this.state.postForm.url
)}`} )}`}
class="mr-2 d-inline-block float-right text-muted small font-weight-bold" class="mr-2 d-inline-block float-right text-muted small font-weight-bold"
rel="noopener" rel={relTags}
> >
archive.today {i18n.t("archive_link")} archive.today {i18n.t("archive_link")}
</a> </a>

View file

@ -36,6 +36,7 @@ import {
mdToHtml, mdToHtml,
numToSI, numToSI,
previewLines, previewLines,
relTags,
setupTippy, setupTippy,
showScores, showScores,
wsClient, wsClient,
@ -244,7 +245,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
<a <a
class="text-body d-inline-block position-relative mb-2" class="text-body d-inline-block position-relative mb-2"
href={post.url} href={post.url}
rel="noopener" rel={relTags}
title={post.url} title={post.url}
> >
{this.imgThumb(this.imageSrc)} {this.imgThumb(this.imageSrc)}
@ -272,7 +273,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
className="text-body" className="text-body"
href={post.url} href={post.url}
title={post.url} title={post.url}
rel="noopener" rel={relTags}
> >
<div class="thumbnail rounded bg-light d-flex justify-content-center"> <div class="thumbnail rounded bg-light d-flex justify-content-center">
<Icon icon="external-link" classes="d-flex align-items-center" /> <Icon icon="external-link" classes="d-flex align-items-center" />
@ -335,7 +336,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
className="text-muted font-italic" className="text-muted font-italic"
href={post_view.post.url} href={post_view.post.url}
title={post_view.post.url} title={post_view.post.url}
rel="noopener" rel={relTags}
> >
{hostname(post_view.post.url)} {hostname(post_view.post.url)}
</a> </a>
@ -418,7 +419,7 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
className={!post.stickied ? "text-body" : "text-primary"} className={!post.stickied ? "text-body" : "text-primary"}
href={post.url} href={post.url}
title={post.url} title={post.url}
rel="noopener" rel={relTags}
> >
{post.name} {post.name}
</a> </a>
@ -445,11 +446,6 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
/> />
</button> </button>
)} )}
{!post.local && (
<a className="ml-2" title={i18n.t("link")} href={post.ap_id}>
<Icon icon="fedilink" />
</a>
)}
{post.removed && ( {post.removed && (
<small className="ml-2 text-muted font-italic"> <small className="ml-2 text-muted font-italic">
{i18n.t("removed")} {i18n.t("removed")}
@ -515,9 +511,19 @@ export class PostListing extends Component<PostListingProps, PostListingState> {
} }
commentsLine(mobile = false) { commentsLine(mobile = false) {
let post = this.props.post_view.post;
return ( return (
<div class="d-flex justify-content-start flex-wrap text-muted font-weight-bold mb-1"> <div class="d-flex justify-content-start flex-wrap text-muted font-weight-bold mb-1">
{this.commentsButton} {this.commentsButton}
{!post.local && (
<a
className="btn btn-link btn-animate text-muted py-0"
title={i18n.t("link")}
href={post.ap_id}
>
<Icon icon="fedilink" inline />
</a>
)}
{mobile && !this.props.viewOnly && this.mobileVotes} {mobile && !this.props.viewOnly && this.mobileVotes}
{UserService.Instance.myUserInfo && {UserService.Instance.myUserInfo &&
!this.props.viewOnly && !this.props.viewOnly &&

View file

@ -16,6 +16,7 @@ import {
authField, authField,
capitalizeFirstLetter, capitalizeFirstLetter,
isBrowser, isBrowser,
relTags,
setupTippy, setupTippy,
toast, toast,
wsClient, wsClient,
@ -141,7 +142,7 @@ export class PrivateMessageForm extends Component<
# #
<a <a
class="alert-link" class="alert-link"
rel="noopener" rel={relTags}
href="https://element.io/get-started" href="https://element.io/get-started"
> >
# #

View file

@ -1,11 +1,8 @@
import i18next, { i18nTyped } from "i18next"; import i18next, { i18nTyped, Resource } from "i18next";
import { ar } from "./translations/ar"; import { ar } from "./translations/ar";
import { as } from "./translations/as";
import { bg } from "./translations/bg"; import { bg } from "./translations/bg";
import { bn } from "./translations/bn";
import { ca } from "./translations/ca"; import { ca } from "./translations/ca";
import { cs } from "./translations/cs"; import { cs } from "./translations/cs";
import { cy } from "./translations/cy";
import { da } from "./translations/da"; import { da } from "./translations/da";
import { de } from "./translations/de"; import { de } from "./translations/de";
import { el } from "./translations/el"; import { el } from "./translations/el";
@ -18,88 +15,57 @@ import { fi } from "./translations/fi";
import { fr } from "./translations/fr"; import { fr } from "./translations/fr";
import { ga } from "./translations/ga"; import { ga } from "./translations/ga";
import { gl } from "./translations/gl"; import { gl } from "./translations/gl";
import { hi } from "./translations/hi";
import { hr } from "./translations/hr"; import { hr } from "./translations/hr";
import { hu } from "./translations/hu";
import { id } from "./translations/id"; import { id } from "./translations/id";
import { it } from "./translations/it"; import { it } from "./translations/it";
import { ja } from "./translations/ja"; import { ja } from "./translations/ja";
import { ka } from "./translations/ka";
import { km } from "./translations/km";
import { ko } from "./translations/ko"; import { ko } from "./translations/ko";
import { lt } from "./translations/lt";
import { ml } from "./translations/ml";
import { mnc } from "./translations/mnc";
import { nb_NO } from "./translations/nb_NO";
import { nl } from "./translations/nl"; import { nl } from "./translations/nl";
import { oc } from "./translations/oc";
import { pl } from "./translations/pl"; import { pl } from "./translations/pl";
import { pt } from "./translations/pt"; import { pt } from "./translations/pt";
import { pt_BR } from "./translations/pt_BR"; import { pt_BR } from "./translations/pt_BR";
import { ru } from "./translations/ru"; import { ru } from "./translations/ru";
import { sk } from "./translations/sk";
import { sq } from "./translations/sq";
import { sr_Latn } from "./translations/sr_Latn";
import { sv } from "./translations/sv"; import { sv } from "./translations/sv";
import { th } from "./translations/th";
import { tr } from "./translations/tr";
import { uk } from "./translations/uk";
import { vi } from "./translations/vi"; import { vi } from "./translations/vi";
import { zh } from "./translations/zh"; import { zh } from "./translations/zh";
import { zh_Hant } from "./translations/zh_Hant"; import { zh_Hant } from "./translations/zh_Hant";
import { getLanguage } from "./utils"; import { getLanguages } from "./utils";
// https://github.com/nimbusec-oss/inferno-i18next/blob/master/tests/T.test.js#L66 export const languages = [
const resources = { { resource: ar, code: "ar", name: "العربية" },
en, { resource: bg, code: "bg", name: "Български" },
el, { resource: ca, code: "ca", name: "Català" },
eu, { resource: cs, code: "cs", name: "Česky" },
eo, { resource: da, code: "da", name: "Dansk" },
es, { resource: de, code: "de", name: "Deutsch" },
ka, { resource: el, code: "el", name: "Ελληνικά" },
hi, { resource: en, code: "en", name: "English" },
de, { resource: eo, code: "eo", name: "Esperanto" },
zh, { resource: es, code: "es", name: "Español" },
fr, { resource: eu, code: "eu", name: "Euskara" },
sv, { resource: fa, code: "fa", name: "فارسی" },
ru, { resource: fi, code: "fi", name: "Suomi" },
nl, { resource: fr, code: "fr", name: "Français" },
it, { resource: ga, code: "ga", name: "Gaeilge" },
fi, { resource: gl, code: "gl", name: "Galego" },
ca, { resource: hr, code: "hr", name: "Hrvatski" },
fa, { resource: id, code: "id", name: "Bahasa Indonesia" },
pl, { resource: it, code: "it", name: "Italiano" },
pt_BR, { resource: ja, code: "ja", name: "日本語" },
ja, { resource: ko, code: "ko", name: "한국어" },
gl, { resource: nl, code: "nl", name: "Nederlands" },
tr, { resource: pl, code: "pl", name: "Polski" },
hu, { resource: pt, code: "pt", name: "Português" },
uk, { resource: pt_BR, code: "pt_BR", name: "Português (Brasil)" },
sq, { resource: ru, code: "ru", name: "Русский" },
km, { resource: sv, code: "sv", name: "Svenska" },
ga, { resource: vi, code: "vi", name: "Tiếng Việt" },
sr_Latn, { resource: zh, code: "zh", name: "中文" },
da, { resource: zh_Hant, code: "zh_Hant", name: "文言" },
oc, ];
hr,
th, const resources: Resource = {};
bg, languages.forEach(l => (resources[l.code] = l.resource));
ar,
ko,
id,
nb_NO,
zh_Hant,
cy,
mnc,
sk,
vi,
pt,
bn,
ml,
cs,
as,
lt,
};
function format(value: any, format: any): any { function format(value: any, format: any): any {
return format === "uppercase" ? value.toUpperCase() : value; return format === "uppercase" ? value.toUpperCase() : value;
@ -109,14 +75,11 @@ i18next.init({
debug: false, debug: false,
compatibilityJSON: "v3", compatibilityJSON: "v3",
// load: 'languageOnly', // load: 'languageOnly',
// initImmediate: false, // initImmediate: false,
lng: getLanguage(), lng: getLanguages()[0],
fallbackLng: "en", fallbackLng: "en",
resources, resources,
interpolation: { format }, interpolation: { format },
}); });
export const i18n = i18next as i18nTyped; export const i18n = i18next as i18nTyped;
export { resources };

View file

@ -1,5 +1,4 @@
import emojiShortName from "emoji-short-name"; import emojiShortName from "emoji-short-name";
import ISO6391 from "iso-639-1";
import { import {
BlockCommunityResponse, BlockCommunityResponse,
BlockPersonResponse, BlockPersonResponse,
@ -35,51 +34,12 @@ import markdown_it_html5_embed from "markdown-it-html5-embed";
import markdown_it_sub from "markdown-it-sub"; import markdown_it_sub from "markdown-it-sub";
import markdown_it_sup from "markdown-it-sup"; import markdown_it_sup from "markdown-it-sup";
import moment from "moment"; import moment from "moment";
import "moment/locale/bg";
import "moment/locale/bn";
import "moment/locale/ca";
import "moment/locale/cs";
import "moment/locale/cy";
import "moment/locale/da";
import "moment/locale/de";
import "moment/locale/el";
import "moment/locale/eo";
import "moment/locale/es";
import "moment/locale/eu";
import "moment/locale/fa";
import "moment/locale/fi";
import "moment/locale/fr";
import "moment/locale/ga";
import "moment/locale/gl";
import "moment/locale/hi";
import "moment/locale/hr";
import "moment/locale/hu";
import "moment/locale/id";
import "moment/locale/it";
import "moment/locale/ja";
import "moment/locale/ka";
import "moment/locale/km";
import "moment/locale/ko";
import "moment/locale/ml";
import "moment/locale/nb";
import "moment/locale/nl";
import "moment/locale/pl";
import "moment/locale/pt-br";
import "moment/locale/ru";
import "moment/locale/sk";
import "moment/locale/sq";
import "moment/locale/sr";
import "moment/locale/sv";
import "moment/locale/tr";
import "moment/locale/uk";
import "moment/locale/vi";
import "moment/locale/zh-cn";
import { Subscription } from "rxjs"; import { Subscription } from "rxjs";
import { delay, retryWhen, take } from "rxjs/operators"; import { delay, retryWhen, take } from "rxjs/operators";
import tippy from "tippy.js"; import tippy from "tippy.js";
import Toastify from "toastify-js"; import Toastify from "toastify-js";
import { httpBase } from "./env"; import { httpBase } from "./env";
import { i18n } from "./i18next"; import { i18n, languages } from "./i18next";
import { import {
CommentNode as CommentNodeI, CommentNode as CommentNodeI,
CommentSortType, CommentSortType,
@ -115,56 +75,7 @@ export const postRefetchSeconds: number = 60 * 1000;
export const fetchLimit = 20; export const fetchLimit = 20;
export const mentionDropdownFetchLimit = 10; export const mentionDropdownFetchLimit = 10;
export const languages = [ export const relTags = "noopener nofollow";
{ code: "ca" },
{ code: "en" },
{ code: "el" },
{ code: "eu" },
{ code: "eo" },
{ code: "es" },
{ code: "da" },
{ code: "de" },
{ code: "ga" },
{ code: "gl" },
{ code: "hr" },
{ code: "hu" },
{ code: "id" },
{ code: "ka" },
{ code: "ko" },
{ code: "km" },
{ code: "hi" },
{ code: "fa" },
{ code: "ja" },
{ code: "oc" },
{ code: "nb_NO" },
{ code: "pl" },
{ code: "pt_BR" },
{ code: "zh" },
{ code: "fi" },
{ code: "fr" },
{ code: "sv" },
{ code: "sq" },
{ code: "sr_Latn" },
{ code: "th" },
{ code: "tr" },
{ code: "uk" },
{ code: "ru" },
{ code: "nl" },
{ code: "it" },
{ code: "bg" },
{ code: "zh_Hant" },
{ code: "cy" },
{ code: "mnc" },
{ code: "sk" },
{ code: "vi" },
{ code: "pt" },
{ code: "ar" },
{ code: "bn" },
{ code: "ml" },
{ code: "cs" },
{ code: "as" },
{ code: "lt" },
];
export function fetchThemes(): Promise<string[]> { export function fetchThemes(): Promise<string[]> {
var promise = new Promise<string[]>((resolve, reject) => { var promise = new Promise<string[]>((resolve, reject) => {
@ -429,20 +340,7 @@ export function debounce(func: any, wait = 1000, immediate = false) {
}; };
} }
export function getNativeLanguageName(code: string): string { export function getLanguages(override?: string): string[] {
let [isoCode, qualifier] = code.split("_");
let native = ISO6391.getNativeName(isoCode) || code;
if (qualifier) {
return `${native}_${qualifier}`;
} else {
return native;
}
}
// TODO
export function getLanguage(override?: string): string {
let myUserInfo = UserService.Instance.myUserInfo; let myUserInfo = UserService.Instance.myUserInfo;
let lang = let lang =
override || override ||
@ -451,13 +349,13 @@ export function getLanguage(override?: string): string {
: "browser"); : "browser");
if (lang == "browser" && isBrowser()) { if (lang == "browser" && isBrowser()) {
return getBrowserLanguage(); return getBrowserLanguages();
} else { } else {
return lang; return [lang];
} }
} }
export function getBrowserLanguage(): string { function getBrowserLanguages(): string[] {
// Intersect lemmy's langs, with the browser langs // Intersect lemmy's langs, with the browser langs
let langs = languages ? languages.map(l => l.code) : ["en"]; let langs = languages ? languages.map(l => l.code) : ["en"];
@ -465,105 +363,7 @@ export function getBrowserLanguage(): string {
let allowedLangs = navigator.languages let allowedLangs = navigator.languages
.concat("en") .concat("en")
.filter(v => langs.includes(v)); .filter(v => langs.includes(v));
return allowedLangs[0]; return allowedLangs;
}
export function getMomentLanguage(): string {
let lang = getLanguage();
if (lang.startsWith("zh")) {
lang = "zh-cn";
} else if (lang.startsWith("sv")) {
lang = "sv";
} else if (lang.startsWith("fr")) {
lang = "fr";
} else if (lang.startsWith("de")) {
lang = "de";
} else if (lang.startsWith("ru")) {
lang = "ru";
} else if (lang.startsWith("es")) {
lang = "es";
} else if (lang.startsWith("eo")) {
lang = "eo";
} else if (lang.startsWith("nl")) {
lang = "nl";
} else if (lang.startsWith("it")) {
lang = "it";
} else if (lang.startsWith("fi")) {
lang = "fi";
} else if (lang.startsWith("ca")) {
lang = "ca";
} else if (lang.startsWith("fa")) {
lang = "fa";
} else if (lang.startsWith("pl")) {
lang = "pl";
} else if (lang.startsWith("pt_BR")) {
lang = "pt-br";
} else if (lang.startsWith("ja")) {
lang = "ja";
} else if (lang.startsWith("ka")) {
lang = "ka";
} else if (lang.startsWith("hi")) {
lang = "hi";
} else if (lang.startsWith("el")) {
lang = "el";
} else if (lang.startsWith("eu")) {
lang = "eu";
} else if (lang.startsWith("gl")) {
lang = "gl";
} else if (lang.startsWith("tr")) {
lang = "tr";
} else if (lang.startsWith("hu")) {
lang = "hu";
} else if (lang.startsWith("uk")) {
lang = "uk";
} else if (lang.startsWith("sq")) {
lang = "sq";
} else if (lang.startsWith("km")) {
lang = "km";
} else if (lang.startsWith("ga")) {
lang = "ga";
} else if (lang.startsWith("sr")) {
lang = "sr";
} else if (lang.startsWith("ko")) {
lang = "ko";
} else if (lang.startsWith("da")) {
lang = "da";
} else if (lang.startsWith("oc")) {
lang = "oc";
} else if (lang.startsWith("hr")) {
lang = "hr";
} else if (lang.startsWith("th")) {
lang = "th";
} else if (lang.startsWith("bg")) {
lang = "bg";
} else if (lang.startsWith("id")) {
lang = "id";
} else if (lang.startsWith("nb")) {
lang = "nb";
} else if (lang.startsWith("cy")) {
lang = "cy";
} else if (lang.startsWith("sk")) {
lang = "sk";
} else if (lang.startsWith("vi")) {
lang = "vi";
} else if (lang.startsWith("pt")) {
lang = "pt";
} else if (lang.startsWith("ar")) {
lang = "ar";
} else if (lang.startsWith("bn")) {
lang = "bn";
} else if (lang.startsWith("ml")) {
lang = "ml";
} else if (lang.startsWith("cs")) {
lang = "cs";
} else if (lang.startsWith("as")) {
lang = "as";
} else if (lang.startsWith("lt")) {
lang = "lt";
} else {
lang = "en";
}
return lang;
} }
export function setTheme(theme: string, forceReload = false) { export function setTheme(theme: string, forceReload = false) {
@ -1520,7 +1320,7 @@ export function personSelectName(pvs: PersonViewSafe): string {
export function initializeSite(site: GetSiteResponse) { export function initializeSite(site: GetSiteResponse) {
UserService.Instance.myUserInfo = site.my_user; UserService.Instance.myUserInfo = site.my_user;
i18n.changeLanguage(getLanguage()); i18n.changeLanguage(getLanguages()[0]);
} }
const SHORTNUM_SI_FORMAT = new Intl.NumberFormat("en-US", { const SHORTNUM_SI_FORMAT = new Intl.NumberFormat("en-US", {

317
yarn.lock
View file

@ -22,9 +22,9 @@
integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
"@babel/core@^7.16.0", "@babel/core@^7.2.2": "@babel/core@^7.16.0", "@babel/core@^7.2.2":
version "7.17.4" version "7.17.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.4.tgz#a22f1ae8999122873b3d18865e98c7a3936b8c8b" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225"
integrity sha512-R9x5r4t4+hBqZTmioSnkrW+I6NmbojwjGT8p4G2Gw1thWbXIHGDnmGdLdFw0/7ljucdIrNRp7Npgb4CyBYzzJg== integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==
dependencies: dependencies:
"@ampproject/remapping" "^2.1.0" "@ampproject/remapping" "^2.1.0"
"@babel/code-frame" "^7.16.7" "@babel/code-frame" "^7.16.7"
@ -76,10 +76,10 @@
browserslist "^4.17.5" browserslist "^4.17.5"
semver "^6.3.0" semver "^6.3.0"
"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6":
version "7.17.1" version "7.17.6"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9"
integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==
dependencies: dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-annotate-as-pure" "^7.16.7"
"@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7"
@ -163,9 +163,9 @@
"@babel/types" "^7.16.7" "@babel/types" "^7.16.7"
"@babel/helper-module-transforms@^7.16.7": "@babel/helper-module-transforms@^7.16.7":
version "7.16.7" version "7.17.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0"
integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==
dependencies: dependencies:
"@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-module-imports" "^7.16.7" "@babel/helper-module-imports" "^7.16.7"
@ -173,8 +173,8 @@
"@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-validator-identifier" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7"
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.16.7" "@babel/traverse" "^7.17.3"
"@babel/types" "^7.16.7" "@babel/types" "^7.17.0"
"@babel/helper-optimise-call-expression@^7.16.7": "@babel/helper-optimise-call-expression@^7.16.7":
version "7.16.7" version "7.16.7"
@ -306,11 +306,11 @@
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-proposal-class-static-block@^7.16.7": "@babel/plugin-proposal-class-static-block@^7.16.7":
version "7.16.7" version "7.17.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c"
integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==
dependencies: dependencies:
"@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-create-class-features-plugin" "^7.17.6"
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-class-static-block" "^7.14.5"
@ -960,9 +960,9 @@
strip-json-comments "^3.1.1" strip-json-comments "^3.1.1"
"@humanwhocodes/config-array@^0.9.2": "@humanwhocodes/config-array@^0.9.2":
version "0.9.3" version "0.9.5"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==
dependencies: dependencies:
"@humanwhocodes/object-schema" "^1.2.1" "@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1" debug "^4.1.1"
@ -1145,9 +1145,9 @@
form-data "^3.0.0" form-data "^3.0.0"
"@types/node@*", "@types/node@^17.0.8": "@types/node@*", "@types/node@^17.0.8":
version "17.0.18" version "17.0.21"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==
"@types/qs@*": "@types/qs@*":
version "6.9.7" version "6.9.7"
@ -1192,20 +1192,20 @@
"@types/node" "*" "@types/node" "*"
"@types/ws@^8.2.2": "@types/ws@^8.2.2":
version "8.2.2" version "8.5.0"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.0.tgz#805ceb3f68eaebbed1a3004a66f16e35b7f3bf14"
integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg== integrity sha512-mTClfhq5cuGyW4jthaFuig6Q8OVfB3IRyZfN/9SCyJtiM5H0SubwM89cHoT9UngO6HyUFic88HvT1zSNLNyxWA==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@typescript-eslint/eslint-plugin@^5.6.0": "@typescript-eslint/eslint-plugin@^5.6.0":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz#b2cd3e288f250ce8332d5035a2ff65aba3374ac4"
integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== integrity sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/scope-manager" "5.12.1"
"@typescript-eslint/type-utils" "5.12.0" "@typescript-eslint/type-utils" "5.12.1"
"@typescript-eslint/utils" "5.12.0" "@typescript-eslint/utils" "5.12.1"
debug "^4.3.2" debug "^4.3.2"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
ignore "^5.1.8" ignore "^5.1.8"
@ -1214,68 +1214,68 @@
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/parser@^5.6.0": "@typescript-eslint/parser@^5.6.0":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.12.1.tgz#b090289b553b8aa0899740d799d0f96e6f49771b"
integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== integrity sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/scope-manager" "5.12.1"
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.12.1"
"@typescript-eslint/typescript-estree" "5.12.0" "@typescript-eslint/typescript-estree" "5.12.1"
debug "^4.3.2" debug "^4.3.2"
"@typescript-eslint/scope-manager@5.12.0": "@typescript-eslint/scope-manager@5.12.1":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz#58734fd45d2d1dec49641aacc075fba5f0968817"
integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== integrity sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.12.1"
"@typescript-eslint/visitor-keys" "5.12.0" "@typescript-eslint/visitor-keys" "5.12.1"
"@typescript-eslint/type-utils@5.12.0": "@typescript-eslint/type-utils@5.12.1":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz#8d58c6a0bb176b5e9a91581cda1a7f91a114d3f0"
integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== integrity sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==
dependencies: dependencies:
"@typescript-eslint/utils" "5.12.0" "@typescript-eslint/utils" "5.12.1"
debug "^4.3.2" debug "^4.3.2"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/types@5.12.0": "@typescript-eslint/types@5.12.1":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.1.tgz#46a36a28ff4d946821b58fe5a73c81dc2e12aa89"
integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== integrity sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==
"@typescript-eslint/typescript-estree@5.12.0": "@typescript-eslint/typescript-estree@5.12.1":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz#6a9425b9c305bcbc38e2d1d9a24c08e15e02b722"
integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== integrity sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.12.1"
"@typescript-eslint/visitor-keys" "5.12.0" "@typescript-eslint/visitor-keys" "5.12.1"
debug "^4.3.2" debug "^4.3.2"
globby "^11.0.4" globby "^11.0.4"
is-glob "^4.0.3" is-glob "^4.0.3"
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/utils@5.12.0": "@typescript-eslint/utils@5.12.1":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.1.tgz#447c24a05d9c33f9c6c64cb48f251f2371eef920"
integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== integrity sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==
dependencies: dependencies:
"@types/json-schema" "^7.0.9" "@types/json-schema" "^7.0.9"
"@typescript-eslint/scope-manager" "5.12.0" "@typescript-eslint/scope-manager" "5.12.1"
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.12.1"
"@typescript-eslint/typescript-estree" "5.12.0" "@typescript-eslint/typescript-estree" "5.12.1"
eslint-scope "^5.1.1" eslint-scope "^5.1.1"
eslint-utils "^3.0.0" eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@5.12.0": "@typescript-eslint/visitor-keys@5.12.1":
version "5.12.0" version "5.12.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz#f722da106c8f9695ae5640574225e45af3e52ec3"
integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== integrity sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==
dependencies: dependencies:
"@typescript-eslint/types" "5.12.0" "@typescript-eslint/types" "5.12.1"
eslint-visitor-keys "^3.0.0" eslint-visitor-keys "^3.0.0"
"@webassemblyjs/ast@1.11.1": "@webassemblyjs/ast@1.11.1":
@ -1439,7 +1439,7 @@ abbrev@1, abbrev@~1.1.1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8" version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
@ -1457,7 +1457,7 @@ acorn-jsx@^5.3.1:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.4.1, acorn@^8.7.0: acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0:
version "8.7.0" version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
@ -1837,20 +1837,20 @@ bluebird@~3.5.1:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
body-parser@1.19.1: body-parser@1.19.2:
version "1.19.1" version "1.19.2"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==
dependencies: dependencies:
bytes "3.1.1" bytes "3.1.2"
content-type "~1.0.4" content-type "~1.0.4"
debug "2.6.9" debug "2.6.9"
depd "~1.1.2" depd "~1.1.2"
http-errors "1.8.1" http-errors "1.8.1"
iconv-lite "0.4.24" iconv-lite "0.4.24"
on-finished "~2.3.0" on-finished "~2.3.0"
qs "6.9.6" qs "6.9.7"
raw-body "2.4.2" raw-body "2.4.3"
type-is "~1.6.18" type-is "~1.6.18"
bonjour@^3.5.0: bonjour@^3.5.0:
@ -1904,14 +1904,14 @@ braces@^3.0.1, braces@~3.0.2:
fill-range "^7.0.1" fill-range "^7.0.1"
browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1: browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1:
version "4.19.1" version "4.19.3"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383"
integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==
dependencies: dependencies:
caniuse-lite "^1.0.30001286" caniuse-lite "^1.0.30001312"
electron-to-chromium "^1.4.17" electron-to-chromium "^1.4.71"
escalade "^3.1.1" escalade "^3.1.1"
node-releases "^2.0.1" node-releases "^2.0.2"
picocolors "^1.0.0" picocolors "^1.0.0"
buffer-from@^1.0.0: buffer-from@^1.0.0:
@ -1962,10 +1962,10 @@ bytes@3.0.0:
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
bytes@3.1.1: bytes@3.1.2:
version "3.1.1" version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
cacache@^10.0.0, cacache@^10.0.4: cacache@^10.0.0, cacache@^10.0.4:
version "10.0.4" version "10.0.4"
@ -2053,7 +2053,7 @@ camelcase@^5.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
caniuse-lite@^1.0.30001286: caniuse-lite@^1.0.30001312:
version "1.0.30001312" version "1.0.30001312"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f"
integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==
@ -2423,10 +2423,10 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
cookie@0.4.1: cookie@0.4.2:
version "0.4.1" version "0.4.2"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
cookie@^0.1.2: cookie@^0.1.2:
version "0.1.5" version "0.1.5"
@ -2458,9 +2458,9 @@ copy-webpack-plugin@^10.0.0:
serialize-javascript "^6.0.0" serialize-javascript "^6.0.0"
core-js-compat@^3.20.2, core-js-compat@^3.21.0: core-js-compat@^3.20.2, core-js-compat@^3.21.0:
version "3.21.0" version "3.21.1"
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82"
integrity sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A== integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==
dependencies: dependencies:
browserslist "^4.19.1" browserslist "^4.19.1"
semver "7.0.0" semver "7.0.0"
@ -2574,7 +2574,7 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3:
dependencies: dependencies:
ms "2.1.2" ms "2.1.2"
debuglog@^1.0.1: debuglog@*, debuglog@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
@ -2806,10 +2806,10 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.4.17: electron-to-chromium@^1.4.71:
version "1.4.71" version "1.4.72"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.72.tgz#19b871f1da8be8199b2330d694fc84fcdb72ecd9"
integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== integrity sha512-9LkRQwjW6/wnSfevR21a3k8sOJ+XWSH7kkzs9/EUenKmuDkndP3W9y1yCZpOxufwGbX3JV8glZZSDb4o95zwXQ==
emoji-regex@^7.0.1: emoji-regex@^7.0.1:
version "7.0.3" version "7.0.3"
@ -3142,16 +3142,16 @@ exenv@^1.2.1:
integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=
express@^4.17.1, express@~4.17.1: express@^4.17.1, express@~4.17.1:
version "4.17.2" version "4.17.3"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==
dependencies: dependencies:
accepts "~1.3.7" accepts "~1.3.8"
array-flatten "1.1.1" array-flatten "1.1.1"
body-parser "1.19.1" body-parser "1.19.2"
content-disposition "0.5.4" content-disposition "0.5.4"
content-type "~1.0.4" content-type "~1.0.4"
cookie "0.4.1" cookie "0.4.2"
cookie-signature "1.0.6" cookie-signature "1.0.6"
debug "2.6.9" debug "2.6.9"
depd "~1.1.2" depd "~1.1.2"
@ -3166,7 +3166,7 @@ express@^4.17.1, express@~4.17.1:
parseurl "~1.3.3" parseurl "~1.3.3"
path-to-regexp "0.1.7" path-to-regexp "0.1.7"
proxy-addr "~2.0.7" proxy-addr "~2.0.7"
qs "6.9.6" qs "6.9.7"
range-parser "~1.2.1" range-parser "~1.2.1"
safe-buffer "5.2.1" safe-buffer "5.2.1"
send "0.17.2" send "0.17.2"
@ -3347,9 +3347,9 @@ flush-write-stream@^1.0.0:
readable-stream "^2.3.6" readable-stream "^2.3.6"
follow-redirects@^1.0.0: follow-redirects@^1.0.0:
version "1.14.8" version "1.14.9"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
forever-agent@~0.6.1: forever-agent@~0.6.1:
version "0.6.1" version "0.6.1"
@ -3894,9 +3894,9 @@ husky@^7.0.4:
integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==
i18next@^21.5.4: i18next@^21.5.4:
version "21.6.11" version "21.6.12"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.6.11.tgz#de6d649221e02474cc701d152606bf3e61e37bcd" resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.6.12.tgz#5080a611af98f4104062a88452b30704b29fa924"
integrity sha512-tJ2+o0lVO+fhi8bPkCpBAeY1SgkqmQm5NzgPWCQssBrywJw98/o+Kombhty5nxQOpHtvMmsxcOopczUiH6bJxQ== integrity sha512-xlGTPdu2g5PZEUIE6TA1mQ9EIAAv9nMFONzgwAIrKL/KTmYYWufQNGgOmp5Og1PvgUji+6i1whz0rMdsz1qaKw==
dependencies: dependencies:
"@babel/runtime" "^7.12.0" "@babel/runtime" "^7.12.0"
@ -4034,7 +4034,7 @@ import-sort@^6.0.0:
is-builtin-module "^3.0.0" is-builtin-module "^3.0.0"
resolve "^1.8.1" resolve "^1.8.1"
imurmurhash@^0.1.4: imurmurhash@*, imurmurhash@^0.1.4:
version "0.1.4" version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
@ -4497,11 +4497,6 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
iso-639-1@^2.1.10:
version "2.1.13"
resolved "https://registry.yarnpkg.com/iso-639-1/-/iso-639-1-2.1.13.tgz#bfca6c6b49be6f92815f1985e892d497770ea1dc"
integrity sha512-stYt3u6OnVDNcK4IWARGXmTOOY5Wa5g4bUmBsttZp/55ZiEjDUibR3C59ZnorKoSS0tfJmFuGMST3ksnY1zu7Q==
isobject@^3.0.1: isobject@^3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
@ -4823,6 +4818,11 @@ lockfile@^1.0.4:
dependencies: dependencies:
signal-exit "^3.0.2" signal-exit "^3.0.2"
lodash._baseindexof@*:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=
lodash._baseuniq@~4.6.0: lodash._baseuniq@~4.6.0:
version "4.6.0" version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@ -4831,11 +4831,33 @@ lodash._baseuniq@~4.6.0:
lodash._createset "~4.0.0" lodash._createset "~4.0.0"
lodash._root "~3.0.0" lodash._root "~3.0.0"
lodash._bindcallback@*:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4=
lodash._cacheindexof@*:
version "3.0.2"
resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=
lodash._createcache@*:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=
dependencies:
lodash._getnative "^3.0.0"
lodash._createset@~4.0.0: lodash._createset@~4.0.0:
version "4.0.3" version "4.0.3"
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
lodash._getnative@*, lodash._getnative@^3.0.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
lodash._root@~3.0.0: lodash._root@~3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
@ -4861,6 +4883,11 @@ lodash.pick@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
lodash.restparam@*:
version "3.6.1"
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
lodash.union@~4.6.0: lodash.union@~4.6.0:
version "4.6.0" version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
@ -5102,11 +5129,16 @@ micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.1" braces "^3.0.1"
picomatch "^2.2.3" picomatch "^2.2.3"
mime-db@1.51.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.6.0: mime-db@1.51.0:
version "1.51.0" version "1.51.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
"mime-db@>= 1.43.0 < 2", mime-db@^1.6.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.34" version "2.1.34"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
@ -5281,9 +5313,9 @@ mute-stream@~0.0.4:
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
nanoid@^3.2.0: nanoid@^3.2.0:
version "3.3.0" version "3.3.1"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.0.tgz#5906f776fd886c66c24f3653e0c46fcb1d4ad6b0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
integrity sha512-JzxqqT5u/x+/KOFSd7JP15DOo9nOoHpx6DYatqIHUW2+flybkm+mdcraotSQR5WcnZr+qhGVh8Ted0KdfSMxlg== integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
natural-compare@^1.4.0: natural-compare@^1.4.0:
version "1.4.0" version "1.4.0"
@ -5356,7 +5388,7 @@ node-gyp@^4.0.0:
tar "^4.4.8" tar "^4.4.8"
which "1" which "1"
node-releases@^2.0.1: node-releases@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
@ -6308,10 +6340,10 @@ qrcode-terminal@^0.12.0:
resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819"
integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
qs@6.9.6: qs@6.9.7:
version "6.9.6" version "6.9.7"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe"
integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==
qs@~6.5.2: qs@~6.5.2:
version "6.5.3" version "6.5.3"
@ -6350,12 +6382,12 @@ range-parser@^1.2.1, range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.4.2: raw-body@2.4.3:
version "2.4.2" version "2.4.3"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"
integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==
dependencies: dependencies:
bytes "3.1.1" bytes "3.1.2"
http-errors "1.8.1" http-errors "1.8.1"
iconv-lite "0.4.24" iconv-lite "0.4.24"
unpipe "1.0.0" unpipe "1.0.0"
@ -6466,7 +6498,7 @@ readable-stream@~1.1.10:
isarray "0.0.1" isarray "0.0.1"
string_decoder "~0.10.x" string_decoder "~0.10.x"
readdir-scoped-modules@^1.0.0: readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
@ -6769,9 +6801,9 @@ sass-loader@^12.3.0:
neo-async "^2.6.2" neo-async "^2.6.2"
sass@^1.47.0: sass@^1.47.0:
version "1.49.7" version "1.49.9"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.7.tgz#22a86a50552b9b11f71404dfad1b9ff44c6b0c49" resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9"
integrity sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ== integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
dependencies: dependencies:
chokidar ">=3.0.0 <4.0.0" chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0" immutable "^4.0.0"
@ -7473,10 +7505,11 @@ terser-webpack-plugin@^5.1.3:
terser "^5.7.2" terser "^5.7.2"
terser@^5.10.0, terser@^5.7.2: terser@^5.10.0, terser@^5.7.2:
version "5.10.0" version "5.11.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" resolved "https://registry.yarnpkg.com/terser/-/terser-5.11.0.tgz#2da5506c02e12cd8799947f30ce9c5b760be000f"
integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== integrity sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==
dependencies: dependencies:
acorn "^8.5.0"
commander "^2.20.0" commander "^2.20.0"
source-map "~0.7.2" source-map "~0.7.2"
source-map-support "~0.5.20" source-map-support "~0.5.20"