Merge branch 'use_http_client_dess' into use_http_client_2

This commit is contained in:
Dessalines 2023-06-06 20:48:58 -04:00
commit c8d48ab24f
13 changed files with 96 additions and 188 deletions

View file

@ -53,7 +53,7 @@
"inferno-server": "^8.1.1",
"isomorphic-cookie": "^1.2.4",
"jwt-decode": "^3.1.2",
"lemmy-js-client": "0.17.2-rc.23",
"lemmy-js-client": "0.17.2-rc.24",
"lodash": "^4.17.21",
"markdown-it": "^13.0.1",
"markdown-it-container": "^3.0.0",

View file

@ -1,16 +1,10 @@
import { Component } from "inferno";
import { T } from "inferno-i18next-dess";
import { Link } from "inferno-router";
import {
CommentResponse,
CreateComment,
EditComment,
Language,
} from "lemmy-js-client";
import { CreateComment, EditComment, Language } from "lemmy-js-client";
import { i18n } from "../../i18next";
import { CommentNodeI } from "../../interfaces";
import { UserService } from "../../services";
import { RequestState } from "../../services/HttpService";
import { capitalizeFirstLetter, myAuthRequired } from "../../utils";
import { Icon } from "../common/icon";
import { MarkdownTextArea } from "../common/markdown-textarea";
@ -27,9 +21,7 @@ interface CommentFormProps {
onReplyCancel?(): void;
allLanguages: Language[];
siteLanguages: number[];
onUpsertComment(
form: EditComment | CreateComment
): Promise<RequestState<CommentResponse>>;
onUpsertComment(form: EditComment | CreateComment): void;
}
export class CommentForm extends Component<CommentFormProps, any> {

View file

@ -9,7 +9,6 @@ import {
BlockPerson,
CommentId,
CommentReplyView,
CommentResponse,
CommentView,
CommunityModeratorView,
CreateComment,
@ -40,7 +39,6 @@ import {
VoteType,
} from "../../interfaces";
import { UserService } from "../../services";
import { RequestState } from "../../services/HttpService";
import {
amCommunityCreator,
canAdmin,
@ -128,12 +126,8 @@ interface CommentNodeProps {
onSaveComment(form: SaveComment): void;
onCommentReplyRead(form: MarkCommentReplyAsRead): void;
onPersonMentionRead(form: MarkPersonMentionAsRead): void;
onCreateComment(
form: EditComment | CreateComment
): Promise<RequestState<CommentResponse>>;
onEditComment(
form: EditComment | CreateComment
): Promise<RequestState<CommentResponse>>;
onCreateComment(form: EditComment | CreateComment): void;
onEditComment(form: EditComment | CreateComment): void;
onCommentVote(form: CreateCommentLike): void;
onBlockPerson(form: BlockPerson): void;
onDeleteComment(form: DeleteComment): void;

View file

@ -6,7 +6,6 @@ import {
BanPerson,
BlockPerson,
CommentId,
CommentResponse,
CommunityModeratorView,
CreateComment,
CreateCommentLike,
@ -26,7 +25,6 @@ import {
TransferCommunity,
} from "lemmy-js-client";
import { CommentNodeI, CommentViewType } from "../../interfaces";
import { RequestState } from "../../services/HttpService";
import { CommentNode } from "./comment-node";
interface CommentNodesProps {
@ -50,12 +48,8 @@ interface CommentNodesProps {
onSaveComment(form: SaveComment): void;
onCommentReplyRead(form: MarkCommentReplyAsRead): void;
onPersonMentionRead(form: MarkPersonMentionAsRead): void;
onCreateComment(
form: EditComment | CreateComment
): Promise<RequestState<CommentResponse>>;
onEditComment(
form: EditComment | CreateComment
): Promise<RequestState<CommentResponse>>;
onCreateComment(form: EditComment | CreateComment): void;
onEditComment(form: EditComment | CreateComment): void;
onCommentVote(form: CreateCommentLike): void;
onBlockPerson(form: BlockPerson): void;
onDeleteComment(form: DeleteComment): void;

View file

@ -1,7 +1,6 @@
import { Component, linkEvent } from "inferno";
import { Prompt } from "inferno-router";
import {
CommunityResponse,
CommunityView,
CreateCommunity,
EditCommunity,
@ -9,7 +8,6 @@ import {
} from "lemmy-js-client";
import { Subscription } from "rxjs";
import { i18n } from "../../i18next";
import { RequestState } from "../../services/HttpService";
import { capitalizeFirstLetter, myAuthRequired, randomStr } from "../../utils";
import { Icon, Spinner } from "../common/icon";
import { ImageUploadForm } from "../common/image-upload-form";
@ -22,9 +20,7 @@ interface CommunityFormProps {
siteLanguages: number[];
communityLanguages?: number[];
onCancel?(): any;
onUpsertCommunity(
form: CreateCommunity | EditCommunity
): Promise<RequestState<CommunityResponse>>;
onUpsertCommunity(form: CreateCommunity | EditCommunity): void;
enableNsfw?: boolean;
}
@ -288,7 +284,7 @@ export class CommunityForm extends Component<
);
}
async handleCreateCommunitySubmit(i: CommunityForm, event: any) {
handleCreateCommunitySubmit(i: CommunityForm, event: any) {
event.preventDefault();
i.setState({ loading: true });
const cForm = i.state.form;
@ -297,7 +293,7 @@ export class CommunityForm extends Component<
const cv = i.props.community_view;
if (cv) {
await i.props.onUpsertCommunity({
i.props.onUpsertCommunity({
community_id: cv.community.id,
title: cForm.title,
description: cForm.description,
@ -310,7 +306,7 @@ export class CommunityForm extends Component<
});
} else {
if (cForm.title && cForm.name) {
await i.props.onUpsertCommunity({
i.props.onUpsertCommunity({
name: cForm.name,
title: cForm.title,
description: cForm.description,
@ -323,8 +319,6 @@ export class CommunityForm extends Component<
});
}
}
i.setState({ loading: false });
}
handleCommunityNameChange(i: CommunityForm, event: any) {

View file

@ -4,7 +4,6 @@ import {
AddModToCommunity,
BlockCommunity,
CommunityModeratorView,
CommunityResponse,
CommunityView,
DeleteCommunity,
EditCommunity,
@ -16,7 +15,6 @@ import {
} from "lemmy-js-client";
import { i18n } from "../../i18next";
import { UserService } from "../../services";
import { RequestState } from "../../services/HttpService";
import {
amAdmin,
amMod,
@ -50,9 +48,7 @@ interface SidebarProps {
onFollowCommunity(form: FollowCommunity): void;
onBlockCommunity(form: BlockCommunity): void;
onPurgeCommunity(form: PurgeCommunity): void;
onEditCommunity(
form: EditCommunity
): Promise<RequestState<CommunityResponse>>;
onEditCommunity(form: EditCommunity): void;
}
interface SidebarState {

View file

@ -14,6 +14,7 @@ import { InitialFetchRequest } from "../../interfaces";
import { HttpService, RequestState } from "../../services/HttpService";
import {
capitalizeFirstLetter,
fetchThemeList,
isInitialRoute,
myAuthRequired,
removeFromEmojiDataModel,
@ -38,6 +39,7 @@ interface AdminSettingsState {
instancesRes: RequestState<GetFederatedInstancesResponse>;
bannedRes: RequestState<BannedPersonsResponse>;
leaveAdminTeamRes: RequestState<GetSiteResponse>;
themeList: string[];
}
export class AdminSettings extends Component<any, AdminSettingsState> {
@ -49,6 +51,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
bannedRes: { state: "empty" },
instancesRes: { state: "empty" },
leaveAdminTeamRes: { state: "empty" },
themeList: [],
};
constructor(props: any, context: any) {
@ -74,6 +77,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
this.setState({
bannedRes: { state: "loading" },
instancesRes: { state: "loading" },
themeList: [],
});
const auth = myAuthRequired();
@ -85,6 +89,7 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
instancesRes: await HttpService.client.getFederatedInstances({
auth,
}),
themeList: await fetchThemeList(),
});
}
@ -144,6 +149,8 @@ export class AdminSettings extends Component<any, AdminSettingsState> {
allowedInstances={federationData?.allowed}
blockedInstances={federationData?.blocked}
onSaveSite={this.handleEditSite}
siteRes={this.state.siteRes}
themeList={this.state.themeList}
/>
</div>
<div className="col-12 col-md-6">

View file

@ -9,7 +9,7 @@ import {
import { i18n } from "../../i18next";
import { UserService } from "../../services";
import { HttpService, RequestState } from "../../services/HttpService";
import { setIsoData } from "../../utils";
import { fetchThemeList, setIsoData } from "../../utils";
import { Spinner } from "../common/icon";
import { SiteForm } from "./site-form";
@ -27,6 +27,7 @@ interface State {
};
doneRegisteringUser: boolean;
registerRes: RequestState<LoginResponse>;
themeList: string[];
siteRes: GetSiteResponse;
}
@ -35,6 +36,7 @@ export class Setup extends Component<any, State> {
state: State = {
registerRes: { state: "empty" },
themeList: [],
form: {
show_nsfw: true,
},
@ -48,6 +50,10 @@ export class Setup extends Component<any, State> {
this.handleCreateSite = this.handleCreateSite.bind(this);
}
async componentDidMount() {
this.setState({ themeList: await fetchThemeList() });
}
get documentTitle(): string {
return `${i18n.t("setup")} - Lemmy`;
}
@ -62,7 +68,12 @@ export class Setup extends Component<any, State> {
{!this.state.doneRegisteringUser ? (
this.registerUser()
) : (
<SiteForm showLocal onSaveSite={this.handleCreateSite} />
<SiteForm
showLocal
onSaveSite={this.handleCreateSite}
siteRes={this.state.siteRes}
themeList={this.state.themeList}
/>
)}
</div>
</div>

View file

@ -11,16 +11,9 @@ import {
GetSiteResponse,
Instance,
ListingType,
SiteResponse,
} from "lemmy-js-client";
import { i18n } from "../../i18next";
import { RequestState } from "../../services/HttpService";
import {
capitalizeFirstLetter,
fetchThemeList,
myAuthRequired,
setIsoData,
} from "../../utils";
import { capitalizeFirstLetter, myAuthRequired } from "../../utils";
import { Icon, Spinner } from "../common/icon";
import { ImageUploadForm } from "../common/image-upload-form";
import { LanguageSelect } from "../common/language-select";
@ -31,29 +24,25 @@ interface SiteFormProps {
blockedInstances?: Instance[];
allowedInstances?: Instance[];
showLocal?: boolean;
onSaveSite(form: EditSite): Promise<RequestState<SiteResponse>>;
themeList?: string[];
onSaveSite(form: EditSite): void;
siteRes: GetSiteResponse;
}
interface SiteFormState {
siteForm: EditSite;
loading: boolean;
themeList?: string[];
instance_select: {
allowed_instances: string;
blocked_instances: string;
};
siteRes: GetSiteResponse;
}
type InstanceKey = "allowed_instances" | "blocked_instances";
export class SiteForm extends Component<SiteFormProps, SiteFormState> {
private isoData = setIsoData(this.context);
state: SiteFormState = {
siteRes: this.isoData.site_res,
siteForm: {
auth: "TODO",
},
siteForm: this.initSiteForm(),
loading: false,
instance_select: {
allowed_instances: "",
@ -61,6 +50,42 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
},
};
initSiteForm(): EditSite {
const site = this.props.siteRes.site_view.site;
const ls = this.props.siteRes.site_view.local_site;
return {
name: site.name,
sidebar: site.sidebar,
description: site.description,
enable_downvotes: ls.enable_downvotes,
registration_mode: ls.registration_mode,
enable_nsfw: ls.enable_nsfw,
community_creation_admin_only: ls.community_creation_admin_only,
icon: site.icon,
banner: site.banner,
require_email_verification: ls.require_email_verification,
application_question: ls.application_question,
private_instance: ls.private_instance,
default_theme: ls.default_theme,
default_post_listing_type: ls.default_post_listing_type,
legal_information: ls.legal_information,
application_email_admins: ls.application_email_admins,
reports_email_admins: ls.reports_email_admins,
hide_modlog_mod_names: ls.hide_modlog_mod_names,
discussion_languages: this.props.siteRes.discussion_languages,
slur_filter_regex: ls.slur_filter_regex,
actor_name_max_length: ls.actor_name_max_length,
federation_enabled: ls.federation_enabled,
federation_debug: ls.federation_debug,
federation_worker_count: ls.federation_worker_count,
captcha_enabled: ls.captcha_enabled,
captcha_difficulty: ls.captcha_difficulty,
allowed_instances: this.props.allowedInstances?.map(i => i.domain),
blocked_instances: this.props.blockedInstances?.map(i => i.domain),
auth: "TODO",
};
}
constructor(props: any, context: any) {
super(props, context);
@ -83,47 +108,6 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
this.handleAddInstance = this.handleAddInstance.bind(this);
this.handleInstanceEnterPress = this.handleInstanceEnterPress.bind(this);
this.handleInstanceTextChange = this.handleInstanceTextChange.bind(this);
const site = this.state.siteRes.site_view.site;
const ls = this.state.siteRes.site_view.local_site;
this.state = {
...this.state,
siteForm: {
name: site.name,
sidebar: site.sidebar,
description: site.description,
enable_downvotes: ls.enable_downvotes,
registration_mode: ls.registration_mode,
enable_nsfw: ls.enable_nsfw,
community_creation_admin_only: ls.community_creation_admin_only,
icon: site.icon,
banner: site.banner,
require_email_verification: ls.require_email_verification,
application_question: ls.application_question,
private_instance: ls.private_instance,
default_theme: ls.default_theme,
default_post_listing_type: ls.default_post_listing_type,
legal_information: ls.legal_information,
application_email_admins: ls.application_email_admins,
reports_email_admins: ls.reports_email_admins,
hide_modlog_mod_names: ls.hide_modlog_mod_names,
discussion_languages: this.state.siteRes.discussion_languages,
slur_filter_regex: ls.slur_filter_regex,
actor_name_max_length: ls.actor_name_max_length,
federation_enabled: ls.federation_enabled,
federation_debug: ls.federation_debug,
federation_worker_count: ls.federation_worker_count,
captcha_enabled: ls.captcha_enabled,
captcha_difficulty: ls.captcha_difficulty,
allowed_instances: this.props.allowedInstances?.map(i => i.domain),
blocked_instances: this.props.blockedInstances?.map(i => i.domain),
auth: "TODO",
},
};
}
async componentDidMount() {
this.setState({ themeList: await fetchThemeList() });
}
// Necessary to stop the loading
@ -134,7 +118,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
componentDidUpdate() {
if (
!this.state.loading &&
!this.state.siteRes.site_view.local_site.site_setup &&
!this.props.siteRes.site_view.local_site.site_setup &&
(this.state.siteForm.name ||
this.state.siteForm.sidebar ||
this.state.siteForm.application_question ||
@ -151,7 +135,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
}
render() {
const siteSetup = this.state.siteRes.site_view.local_site.site_setup;
const siteSetup = this.props.siteRes.site_view.local_site.site_setup;
return (
<>
<Prompt
@ -430,7 +414,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
className="custom-select w-auto"
>
<option value="browser">{i18n.t("browser_default")}</option>
{this.state.themeList?.map(theme => (
{this.props.themeList?.map(theme => (
<option key={theme} value={theme}>
{theme}
</option>
@ -511,8 +495,8 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
</div>
</div>
<LanguageSelect
allLanguages={this.state.siteRes.all_languages}
siteLanguages={this.state.siteRes.discussion_languages}
allLanguages={this.props.siteRes.all_languages}
siteLanguages={this.props.siteRes.discussion_languages}
selectedLanguageIds={this.state.siteForm.discussion_languages}
multiple={true}
onChange={this.handleDiscussionLanguageChange}
@ -748,7 +732,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
}
}
async handleSaveSiteSubmit(i: SiteForm, event: any) {
handleSaveSiteSubmit(i: SiteForm, event: any) {
event.preventDefault();
const auth = myAuthRequired();
i.setState(s => ((s.siteForm.auth = auth), s));
@ -758,7 +742,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
let form: EditSite | CreateSite;
if (i.state.siteRes.site_view.local_site.site_setup) {
if (i.props.siteRes.site_view.local_site.site_setup) {
form = stateSiteForm;
} else {
form = {
@ -810,13 +794,7 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
};
}
const res = await i.props.onSaveSite(form);
if (res.state === "success") {
i.setState(s => ((s.siteRes.site_view = res.data.site_view), s));
}
i.setState({ loading: false });
i.props.onSaveSite(form);
}
handleAddInstance(key: InstanceKey) {

View file

@ -6,7 +6,6 @@ import {
BanPerson,
BlockPerson,
CommentId,
CommentResponse,
CommentView,
CreateComment,
CreateCommentLike,
@ -37,7 +36,6 @@ import {
TransferCommunity,
} from "lemmy-js-client";
import { CommentViewType, PersonDetailsView } from "../../interfaces";
import { RequestState } from "../../services/HttpService";
import { commentsToFlatNodes, setupTippy } from "../../utils";
import { CommentNodes } from "../comment/comment-nodes";
import { Paginator } from "../common/paginator";
@ -59,8 +57,8 @@ interface PersonDetailsProps {
onSaveComment(form: SaveComment): void;
onCommentReplyRead(form: MarkCommentReplyAsRead): void;
onPersonMentionRead(form: MarkPersonMentionAsRead): void;
onCreateComment(form: CreateComment): Promise<RequestState<CommentResponse>>;
onEditComment(form: EditComment): Promise<RequestState<CommentResponse>>;
onCreateComment(form: CreateComment): void;
onEditComment(form: EditComment): void;
onCommentVote(form: CreateCommentLike): void;
onBlockPerson(form: BlockPerson): void;
onDeleteComment(form: DeleteComment): void;

View file

@ -1,11 +1,5 @@
import { Component } from "inferno";
import {
GetSiteResponse,
UserOperation,
VerifyEmailResponse,
wsJsonToRes,
wsUserOp,
} from "lemmy-js-client";
import { GetSiteResponse, VerifyEmailResponse } from "lemmy-js-client";
import { i18n } from "../../i18next";
import { HttpService, RequestState } from "../../services/HttpService";
import { setIsoData, toast } from "../../utils";
@ -76,21 +70,4 @@ export class VerifyEmail extends Component<any, State> {
</div>
);
}
parseMessage(msg: any) {
const op = wsUserOp(msg);
console.log(msg);
if (msg.error) {
toast(i18n.t(msg.error), "danger");
this.setState(this.state);
this.props.history.push("/");
return;
} else if (op == UserOperation.VerifyEmail) {
const data = wsJsonToRes(msg);
if (data) {
toast(i18n.t("email_verified"));
this.props.history.push("/login");
}
}
}
}

View file

@ -6,7 +6,6 @@ import {
EditPost,
GetSiteMetadataResponse,
Language,
PostResponse,
PostView,
SearchResponse,
} from "lemmy-js-client";
@ -50,8 +49,8 @@ interface PostFormProps {
siteLanguages: number[];
params?: PostFormParams;
onCancel?(): void;
onCreate?(form: CreatePost): Promise<RequestState<PostResponse>>;
onEdit?(form: EditPost): Promise<RequestState<PostResponse>>;
onCreate?(form: CreatePost): void;
onEdit?(form: EditPost): void;
enableNsfw?: boolean;
enableDownvotes?: boolean;
selectedCommunityChoice?: Choice;
@ -481,7 +480,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
}
}
async handlePostSubmit(i: PostForm, event: any) {
handlePostSubmit(i: PostForm, event: any) {
event.preventDefault();
// Coerce empty url string to undefined
if ((i.state.form.url ?? "blank") === "") {
@ -493,7 +492,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
const pForm = i.state.form;
const pv = i.props.post_view;
if (pv) {
await i.props.onEdit?.({
i.props.onEdit?.({
name: pForm.name,
url: pForm.url,
body: pForm.body,
@ -503,7 +502,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
auth,
});
} else if (pForm.name && pForm.community_id) {
await i.props.onCreate?.({
i.props.onCreate?.({
name: pForm.name,
community_id: pForm.community_id,
url: pForm.url,

View file

@ -3187,7 +3187,7 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
dependencies:
ms "2.1.2"
debuglog@*, debuglog@^1.0.1:
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==
@ -4881,7 +4881,7 @@ import-sort@^6.0.0:
is-builtin-module "^3.0.0"
resolve "^1.8.1"
imurmurhash@*, imurmurhash@^0.1.4:
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
@ -5615,10 +5615,10 @@ leac@^0.6.0:
resolved "https://registry.yarnpkg.com/leac/-/leac-0.6.0.tgz#dcf136e382e666bd2475f44a1096061b70dc0912"
integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==
lemmy-js-client@0.17.2-rc.23:
version "0.17.2-rc.23"
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.17.2-rc.23.tgz#7e3e2d2ba82b721a9dc092e687874eebeb080637"
integrity sha512-MXUg2s9CZbH5+G53RvfM9M/UnPtH+LnnMc05sWRNVkKDnpl1nHudIrbRTqOOJNikTf1sJLxGvUOi8TTDJ3OSdQ==
lemmy-js-client@0.17.2-rc.24:
version "0.17.2-rc.24"
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.17.2-rc.24.tgz#3b09233a6d89286e559be2e840d81c0c549562ad"
integrity sha512-aSHz7UTcwnwnNd9poY8tEXP7RA9ieZm9MAfSljcbCNU5ds9CASXYNodmraUVJiqCmT4HWnj7IeVmBC9r7nTHnw==
dependencies:
cross-fetch "^3.1.5"
form-data "^4.0.0"
@ -5764,11 +5764,6 @@ lockfile@^1.0.4:
dependencies:
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 sha512-bSYo8Pc/f0qAkr8fPJydpJjtrHiSynYfYBjtANIgXv5xEf1WlTC63dIDlgu0s9dmTvzRu1+JJTxcIAHe+sH0FQ==
lodash._baseuniq@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@ -5777,33 +5772,11 @@ lodash._baseuniq@~4.6.0:
lodash._createset "~4.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 sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==
lodash._cacheindexof@*:
version "3.0.2"
resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
integrity sha512-S8dUjWr7SUT/X6TBIQ/OYoCHo1Stu1ZRy6uMUSKqzFnZp5G5RyQizSm6kvxD2Ewyy6AVfMg4AToeZzKfF99T5w==
lodash._createcache@*:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
integrity sha512-ev5SP+iFpZOugyab/DEUQxUeZP5qyciVTlgQ1f4Vlw7VUcCD8fVnyIqVUEIaoFH9zjAqdgi69KiofzvVmda/ZQ==
dependencies:
lodash._getnative "^3.0.0"
lodash._createset@~4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
integrity sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==
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 sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==
lodash._root@~3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
@ -5829,11 +5802,6 @@ lodash.pick@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
lodash.restparam@*:
version "3.6.1"
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==
lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
@ -7590,7 +7558,7 @@ readable-stream@~1.1.10:
isarray "0.0.1"
string_decoder "~0.10.x"
readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
readdir-scoped-modules@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==