From ceb1e9ced37a7ef99a7e16c41d610af2bd5e16a9 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Tue, 5 Jul 2022 16:03:47 +0800 Subject: [PATCH 001/122] feat: revise tag hints --- src/common/enums/text.ts | 18 ++++++++++-------- .../Editor/SettingsDialog/List/index.tsx | 7 ++++++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/common/enums/text.ts b/src/common/enums/text.ts index 5bbc2fa563..7afe0df447 100644 --- a/src/common/enums/text.ts +++ b/src/common/enums/text.ts @@ -142,9 +142,9 @@ export const TEXT = { help: '說明', helpCenter: '幫助中心', hide: '站內隱藏', - hintAddTag: - '通過添加標籤幫助讀者更好地找到你的作品。如果沒有合適的標籤,你可以創建新的。', - hintAddTag2: '目前尚無標籤,立即添加提高作品曝光度!', + hintAddTag: '點選標籤幫助讀者找到你的作品,一篇作品最多添加 8 個標籤', + hintAddTagNoTag: '目前尚無標籤,立即添加提高作品曝光度!', + hintAddTagShort: '添加適合標籤,幫助讀者找到你的作品', hintAddCircleInvitee: '添加站內或站外朋友加入圍爐', hintCircleAddArticles: '將公開作品加入圍爐,成為永久收費作品。', hintCircleDisplayName: '2-12 個字元', @@ -499,9 +499,9 @@ export const TEXT = { help: '说明', helpCenter: '帮助中心', hide: '站内隐藏', - hintAddTag: - '通过添加标签帮助读者更好地找到你的作品。如果没有合适的标签,你可以创建新的。', - hintAddTag2: '目前尚无标签,立即添加提高作品曝光度!', + hintAddTag: '点选标签帮助读者找到你的作品,一篇作品最多添加 8 个标签', + hintAddTagNoTag: '目前尚无标签,立即添加提高作品曝光度!', + hintAddTagShort: '添加适合标签,帮助读者找到你的作品', hintAddCircleInvitee: '添加站内或站外朋友加入围炉', hintCircleAddArticles: '将公开作品加入围炉,成为永久收费作品。', hintCircleDisplayName: '2-12 个字符', @@ -864,8 +864,10 @@ export const TEXT = { helpCenter: 'Help Center', hide: 'Archived', hintAddTag: - 'Adding tags helps readers find your articles. Add or create new tags.', - hintAddTag2: 'Not using tags yet, add tags now to improve discoverability!', + 'Adding tags helps readers find your articles (maximum 8 tags).', + hintAddTagNoTag: + 'Not using tags yet, add tags now to improve discoverability!', + hintAddTagShort: 'Adding tags helps readers find your articles.', hintAddCircleInvitee: 'Invite friends to join your circle', hintCircleAddArticles: 'Add articles to Circle and keep them behind the paywall.', diff --git a/src/components/Editor/SettingsDialog/List/index.tsx b/src/components/Editor/SettingsDialog/List/index.tsx index db387e66fc..4541170562 100644 --- a/src/components/Editor/SettingsDialog/List/index.tsx +++ b/src/components/Editor/SettingsDialog/List/index.tsx @@ -69,7 +69,12 @@ const SettingsList = ({ } - subTitle={tagsCount === 0 && } + subTitle={ + + } + hint={tagsCount > 0} onClick={() => forward('tag')} > From 75b359ca01fe3e638c99c145dbe28490d1b0c735 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Tue, 5 Jul 2022 22:44:57 +0800 Subject: [PATCH 002/122] feat: add hint to tag selector in draft editor sidebar --- src/components/Editor/Sidebar/Box/index.tsx | 8 ++++++++ src/components/Editor/Sidebar/Box/styles.css | 8 ++++++++ src/components/Editor/Sidebar/Tags/index.tsx | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/Editor/Sidebar/Box/index.tsx b/src/components/Editor/Sidebar/Box/index.tsx index 1ec3eb53b5..6e54dfe7c6 100644 --- a/src/components/Editor/Sidebar/Box/index.tsx +++ b/src/components/Editor/Sidebar/Box/index.tsx @@ -17,6 +17,7 @@ import styles from './styles.css' interface BoxProps { icon: React.ReactNode title: TextId + subtitle?: TextId onClick?: () => any disabled?: boolean } @@ -24,6 +25,7 @@ interface BoxProps { const Box: React.FC = ({ icon, title, + subtitle, onClick, disabled, children, @@ -54,6 +56,12 @@ const Box: React.FC = ({ )} + {subtitle && ( +

+ +

+ )} + {children} diff --git a/src/components/Editor/Sidebar/Box/styles.css b/src/components/Editor/Sidebar/Box/styles.css index 2e1c0fed06..07e5a3b349 100644 --- a/src/components/Editor/Sidebar/Box/styles.css +++ b/src/components/Editor/Sidebar/Box/styles.css @@ -10,3 +10,11 @@ padding: 0 var(--spacing-base); } } + +.subtitle { + padding: 0 var(--spacing-base); + margin-top: var(--spacing-xx-tight); + font-size: var(--font-size-xs); + font-weight: var(--font-weight-normal); + color: var(--color-grey); +} diff --git a/src/components/Editor/Sidebar/Tags/index.tsx b/src/components/Editor/Sidebar/Tags/index.tsx index 11b9749a60..ad6d4a9fdd 100644 --- a/src/components/Editor/Sidebar/Tags/index.tsx +++ b/src/components/Editor/Sidebar/Tags/index.tsx @@ -40,6 +40,7 @@ const SidebarTags = ({ } title="addTag" + subtitle="hintAddTagShort" onClick={openDialog} disabled={disabled} > @@ -53,7 +54,6 @@ const SidebarTags = ({ disabled hasClose removeTag={() => { - // console.log('in removeTag:', tag) editTags(tags.filter((t) => t.content !== tag.content)) analytics.trackEvent('click_button', { type: 'remove_tag', From 43aa12c35b138fa3bab422251e6e47a469cafbac Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Tue, 5 Jul 2022 23:14:07 +0800 Subject: [PATCH 003/122] feat: supports custom stagin area component --- src/components/Editor/Sidebar/Tags/index.tsx | 2 ++ .../Editor/TagCustomStagingArea/index.tsx | 7 ++++++ .../Forms/SearchSelectForm/index.tsx | 9 +++++++- .../SearchSelect/StagingArea/index.tsx | 22 ++++++++++++++++++- 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 src/components/Editor/TagCustomStagingArea/index.tsx diff --git a/src/components/Editor/Sidebar/Tags/index.tsx b/src/components/Editor/Sidebar/Tags/index.tsx index ad6d4a9fdd..747973f1dd 100644 --- a/src/components/Editor/Sidebar/Tags/index.tsx +++ b/src/components/Editor/Sidebar/Tags/index.tsx @@ -8,6 +8,7 @@ import { SearchSelectNode } from '~/components/Forms/SearchSelectForm' import { analytics } from '~/common/utils' +import TagCustomStagingArea from '../../TagCustomStagingArea' import Box from '../Box' import styles from './styles.css' @@ -35,6 +36,7 @@ const SidebarTags = ({ nodes={tags} saving={saving} createTag + CustomStagingArea={TagCustomStagingArea} > {({ openDialog }) => ( { + return

TagCustomStagingArea

+} + +export default TagCustomStagingArea diff --git a/src/components/Forms/SearchSelectForm/index.tsx b/src/components/Forms/SearchSelectForm/index.tsx index 1236512494..19f1a9f281 100644 --- a/src/components/Forms/SearchSelectForm/index.tsx +++ b/src/components/Forms/SearchSelectForm/index.tsx @@ -5,7 +5,10 @@ import SearchingArea, { SearchType, SelectNode, } from '~/components/SearchSelect/SearchingArea' -import StagingArea, { StagingNode } from '~/components/SearchSelect/StagingArea' +import StagingArea, { + CustomStagingAreaProps, + StagingNode, +} from '~/components/SearchSelect/StagingArea' import { TextId } from '~/common/enums' @@ -49,11 +52,14 @@ export type SearchSelectFormProps = { createTag?: boolean inviteEmail?: boolean + + CustomStagingArea?: (props: CustomStagingAreaProps) => JSX.Element } const SearchSelectForm = ({ title, hint, + CustomStagingArea, headerLeftButton, headerRightButtonText, closeDialog, @@ -139,6 +145,7 @@ const SearchSelectForm = ({ hint={hint} inStagingArea={inStagingArea} draggable={draggable} + CustomStagingArea={CustomStagingArea} /> ) diff --git a/src/components/SearchSelect/StagingArea/index.tsx b/src/components/SearchSelect/StagingArea/index.tsx index 4cbd1b612b..0c3d3755ee 100644 --- a/src/components/SearchSelect/StagingArea/index.tsx +++ b/src/components/SearchSelect/StagingArea/index.tsx @@ -19,7 +19,7 @@ export interface StagingNode { selected: boolean } -interface StagingAreaProps { +interface BaseStagingAreaProps { nodes: StagingNode[] setNodes: (nodes: StagingNode[]) => void @@ -28,6 +28,16 @@ interface StagingAreaProps { draggable?: boolean } +export interface CustomStagingAreaProps { + nodes: StagingNode[] + setNodes: (nodes: StagingNode[]) => void + hint: TextId +} + +type StagingAreaProps = BaseStagingAreaProps & { + CustomStagingArea?: (props: CustomStagingAreaProps) => JSX.Element +} + const DynamicDraggableNodes = dynamic(() => import('./DraggableNodes'), { loading: Spinner, }) @@ -39,6 +49,8 @@ const StagingArea: React.FC = ({ hint, inStagingArea, draggable, + + CustomStagingArea, }) => { const toggleSelectNode = (node: SelectNode) => { const newNodes = nodes.map(({ node: n, selected: s }) => { @@ -54,6 +66,14 @@ const StagingArea: React.FC = ({ return null } + if (CustomStagingArea) { + return ( +
+ +
+ ) + } + return (
{/* empty hint */} From b71b102ddad3d612958a72a1883bc2c80bc70d13 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Fri, 8 Jul 2022 10:35:07 +0800 Subject: [PATCH 004/122] feat: add and to --- .../Dialogs/SearchSelectDialog/styles.css | 40 ------------------ .../RecommendedTags/index.tsx | 42 +++++++++++++++++++ .../RecommendedTags/styles.css | 18 ++++++++ .../SelectedTags/index.tsx | 26 ++++++++++++ .../SelectedTags/styles.css | 9 ++++ .../Editor/TagCustomStagingArea/index.tsx | 38 ++++++++++++++++- .../Editor/TagCustomStagingArea/styles.css | 5 +++ 7 files changed, 136 insertions(+), 42 deletions(-) delete mode 100644 src/components/Dialogs/SearchSelectDialog/styles.css create mode 100644 src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx create mode 100644 src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css create mode 100644 src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx create mode 100644 src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css create mode 100644 src/components/Editor/TagCustomStagingArea/styles.css diff --git a/src/components/Dialogs/SearchSelectDialog/styles.css b/src/components/Dialogs/SearchSelectDialog/styles.css deleted file mode 100644 index 55ca6edf7a..0000000000 --- a/src/components/Dialogs/SearchSelectDialog/styles.css +++ /dev/null @@ -1,40 +0,0 @@ -.area { - height: 100%; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - - @media (--sm-up) { - height: 37vh; - margin-bottom: var(--spacing-tight); - } -} - -.nodes { - height: 100%; - - & li { - position: relative; - - & .drag-handler { - @mixin flex-center-all; - @mixin all-transition; - - position: absolute; - top: 0; - left: 0; - z-index: 1; - height: 100%; - } - - &.Article { - & .drag-handler { - height: auto; - padding-top: var(--spacing-tight); - } - } - - & + li { - @mixin border-top-grey; - } - } -} diff --git a/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx b/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx new file mode 100644 index 0000000000..b47fa88622 --- /dev/null +++ b/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx @@ -0,0 +1,42 @@ +import { Tag, Translate } from '~/components' + +import styles from './styles.css' + +type RecommendedTagsProps = { + tags: any[] + onClickTag: (tag: any) => void +} + +const RecommendedTags: React.FC = ({ + tags, + onClickTag, +}) => { + return ( +
+

+ +

+ +
    + {tags.map((tag) => ( +
  • + onClickTag(tag)} + /> +
  • + ))} +
+ + +
+ ) +} + +export default RecommendedTags diff --git a/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css b/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css new file mode 100644 index 0000000000..b7d3ff0a1c --- /dev/null +++ b/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css @@ -0,0 +1,18 @@ +.recommendedTags { + padding: 0 var(--spacing-base); + margin: var(--spacing-base) 0; +} + +.hint { + font-size: var(--font-size-xs); + color: var(--color-gray); +} + +.tagList { + margin-top: var(--spacing-base); + + & li { + margin-right: var(--spacing-tight); + margin-bottom: var(--spacing-base); + } +} diff --git a/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx b/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx new file mode 100644 index 0000000000..1f0e6a3870 --- /dev/null +++ b/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx @@ -0,0 +1,26 @@ +import { Tag } from '~/components' + +import styles from './styles.css' + +type SelectedTagsProps = { + tags: any[] + onRemoveTag: (tag: any) => void +} + +const SelectedTags: React.FC = ({ tags, onRemoveTag }) => { + return ( +
+
    + {tags.map((tag) => ( +
  • + onRemoveTag(tag)} /> +
  • + ))} +
+ + +
+ ) +} + +export default SelectedTags diff --git a/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css b/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css new file mode 100644 index 0000000000..0b87837e1c --- /dev/null +++ b/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css @@ -0,0 +1,9 @@ +.tagList { + padding: 0 var(--spacing-base); + margin-top: var(--spacing-base); + + & li { + margin-right: var(--spacing-tight); + margin-bottom: var(--spacing-base); + } +} diff --git a/src/components/Editor/TagCustomStagingArea/index.tsx b/src/components/Editor/TagCustomStagingArea/index.tsx index 59ed14afad..654919ca7f 100644 --- a/src/components/Editor/TagCustomStagingArea/index.tsx +++ b/src/components/Editor/TagCustomStagingArea/index.tsx @@ -1,7 +1,41 @@ import { CustomStagingAreaProps } from '~/components/SearchSelect/StagingArea' -const TagCustomStagingArea = (props: CustomStagingAreaProps) => { - return

TagCustomStagingArea

+import RecommendedTags from './RecommendedTags' +import SelectedTags from './SelectedTags' +import styles from './styles.css' + +const TagCustomStagingArea = ({ + nodes, + setNodes, + hint, +}: CustomStagingAreaProps) => { + const hasTag = nodes.length > 0 + const recommendedTags = [] as any[] + const removeTag = () => { + // + } + const addTag = () => { + // + } + + if (hasTag) { + return ( +
+ +
+ + + +
+ ) + } + + return ( +
+ + +
+ ) } export default TagCustomStagingArea diff --git a/src/components/Editor/TagCustomStagingArea/styles.css b/src/components/Editor/TagCustomStagingArea/styles.css new file mode 100644 index 0000000000..53ed324875 --- /dev/null +++ b/src/components/Editor/TagCustomStagingArea/styles.css @@ -0,0 +1,5 @@ +.customTagArea { + & hr { + @mixin shadow-border-bottom-grey; + } +} From 0a1e776a22ce486584d83137a5765c1897b0fb05 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 11 Jul 2022 09:57:40 +0800 Subject: [PATCH 005/122] feat: finish UI/UX of and --- src/components/Dialogs/TagDialog/Content.tsx | 1 - .../RecommendedTags/index.tsx | 12 ++-- .../RecommendedTags/styles.css | 3 +- .../SelectedTags/index.tsx | 15 ++++- .../SelectedTags/styles.css | 1 + .../Editor/TagCustomStagingArea/gql.ts | 30 +++++++++ .../Editor/TagCustomStagingArea/index.tsx | 63 +++++++++++++++---- src/components/Tag/index.tsx | 9 +-- src/components/Tag/styles.css | 4 ++ 9 files changed, 114 insertions(+), 24 deletions(-) create mode 100644 src/components/Editor/TagCustomStagingArea/gql.ts diff --git a/src/components/Dialogs/TagDialog/Content.tsx b/src/components/Dialogs/TagDialog/Content.tsx index 37703a46b1..c8a178fa11 100644 --- a/src/components/Dialogs/TagDialog/Content.tsx +++ b/src/components/Dialogs/TagDialog/Content.tsx @@ -238,7 +238,6 @@ const TagDialogContent: React.FC = ({ onBlur={handleBlur} onChange={(e) => { const newContent = stripPunctPrefixSuffix(e.target.value) - // console.log('set newContent:', { newContent, old: e.target.value }) setFieldValue('newContent', newContent) // setFieldValue('content', newContent) // handleChange(e) diff --git a/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx b/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx index b47fa88622..22b987bcba 100644 --- a/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx +++ b/src/components/Editor/TagCustomStagingArea/RecommendedTags/index.tsx @@ -1,15 +1,18 @@ import { Tag, Translate } from '~/components' +import { SelectTag } from '~/components/SearchSelect/SearchingArea' import styles from './styles.css' +import { EditorRecommendedTags_user_tags_edges_node as TagType } from '../__generated__/EditorRecommendedTags' + type RecommendedTagsProps = { - tags: any[] - onClickTag: (tag: any) => void + tags: TagType[] + onAddTag: (tag: SelectTag) => void } const RecommendedTags: React.FC = ({ tags, - onClickTag, + onAddTag, }) => { return (
@@ -28,7 +31,8 @@ const RecommendedTags: React.FC = ({ tag={tag} type="inline" active - onClick={() => onClickTag(tag)} + disabled + onClick={() => onAddTag(tag)} /> ))} diff --git a/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css b/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css index b7d3ff0a1c..ae5005f62d 100644 --- a/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css +++ b/src/components/Editor/TagCustomStagingArea/RecommendedTags/styles.css @@ -5,13 +5,14 @@ .hint { font-size: var(--font-size-xs); - color: var(--color-gray); + color: var(--color-grey); } .tagList { margin-top: var(--spacing-base); & li { + display: inline-block; margin-right: var(--spacing-tight); margin-bottom: var(--spacing-base); } diff --git a/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx b/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx index 1f0e6a3870..8997d27bf6 100644 --- a/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx +++ b/src/components/Editor/TagCustomStagingArea/SelectedTags/index.tsx @@ -1,10 +1,13 @@ import { Tag } from '~/components' +import { SelectTag } from '~/components/SearchSelect/SearchingArea' import styles from './styles.css' +import { EditorRecommendedTags_user_tags_edges_node as TagType } from '../__generated__/EditorRecommendedTags' + type SelectedTagsProps = { - tags: any[] - onRemoveTag: (tag: any) => void + tags: TagType[] + onRemoveTag: (tag: SelectTag) => void } const SelectedTags: React.FC = ({ tags, onRemoveTag }) => { @@ -13,7 +16,13 @@ const SelectedTags: React.FC = ({ tags, onRemoveTag }) => {
    {tags.map((tag) => (
  • - onRemoveTag(tag)} /> + onRemoveTag(tag)} + />
  • ))}
diff --git a/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css b/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css index 0b87837e1c..ac0738b3b5 100644 --- a/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css +++ b/src/components/Editor/TagCustomStagingArea/SelectedTags/styles.css @@ -3,6 +3,7 @@ margin-top: var(--spacing-base); & li { + display: inline-block; margin-right: var(--spacing-tight); margin-bottom: var(--spacing-base); } diff --git a/src/components/Editor/TagCustomStagingArea/gql.ts b/src/components/Editor/TagCustomStagingArea/gql.ts new file mode 100644 index 0000000000..bd19d6e848 --- /dev/null +++ b/src/components/Editor/TagCustomStagingArea/gql.ts @@ -0,0 +1,30 @@ +import gql from 'graphql-tag' + +import { Tag } from '~/components' + +export const EDITOR_RECOMMENDED_TAGS = gql` + query EditorRecommendedTags($userName: String!) { + user(input: { userName: $userName }) { + id + recommendation { + tags(input: { first: 10 }) { + edges { + cursor + node { + ...DigestTag + } + } + } + } + tags(input: { first: 10 }) { + edges { + cursor + node { + ...DigestTag + } + } + } + } + } + ${Tag.fragments.tag} +` diff --git a/src/components/Editor/TagCustomStagingArea/index.tsx b/src/components/Editor/TagCustomStagingArea/index.tsx index 654919ca7f..d7f86227b0 100644 --- a/src/components/Editor/TagCustomStagingArea/index.tsx +++ b/src/components/Editor/TagCustomStagingArea/index.tsx @@ -1,29 +1,70 @@ +import { useContext } from 'react' + +import { Spinner, usePublicQuery, ViewerContext } from '~/components' +import { SelectTag } from '~/components/SearchSelect/SearchingArea' import { CustomStagingAreaProps } from '~/components/SearchSelect/StagingArea' +import { EDITOR_RECOMMENDED_TAGS } from './gql' import RecommendedTags from './RecommendedTags' import SelectedTags from './SelectedTags' import styles from './styles.css' +import { + EditorRecommendedTags, + EditorRecommendedTags_user_tags_edges_node as TagType, +} from './__generated__/EditorRecommendedTags' + const TagCustomStagingArea = ({ - nodes, - setNodes, + nodes: tags, + setNodes: setTags, hint, }: CustomStagingAreaProps) => { - const hasTag = nodes.length > 0 - const recommendedTags = [] as any[] - const removeTag = () => { - // + const viewer = useContext(ViewerContext) + + /** + * Data Fetching + */ + // public data + const { data } = usePublicQuery( + EDITOR_RECOMMENDED_TAGS, + { + variables: { userName: viewer.userName }, + } + ) + + const hasTag = tags.length > 0 + const userTagsEdges = data?.user?.tags.edges || [] + const recommendationTagsEdges = data?.user?.recommendation.tags.edges || [] + const recommendedTags = [...userTagsEdges, ...recommendationTagsEdges]?.map( + (edge) => edge.node + ) + + const removeTag = (tag: SelectTag) => { + const newTags = tags.filter((t) => t.node.id !== tag.id) + setTags(newTags) } - const addTag = () => { - // + const addTag = (tag: SelectTag) => { + const oldTags = tags.filter((t) => t.node.id !== tag.id) + setTags([...oldTags, { node: tag, selected: true }]) + } + + if (!recommendedTags || recommendedTags.length <= 0) { + return ( +
+ +
+ ) } if (hasTag) { return (
- + t.node as TagType)} + onRemoveTag={removeTag} + />
- +
@@ -32,7 +73,7 @@ const TagCustomStagingArea = ({ return (
- +
) diff --git a/src/components/Tag/index.tsx b/src/components/Tag/index.tsx index d272b1b83e..e075ef3b9f 100644 --- a/src/components/Tag/index.tsx +++ b/src/components/Tag/index.tsx @@ -23,7 +23,7 @@ interface TagProps { textSize?: 'sm' | 'sm-s' iconSize?: 'sm-s' active?: boolean - disabled?: boolean + disabled?: boolean // disable default hasCount?: boolean hasClose?: boolean removeTag?: (tag: DigestTag | DigestTagSearchResult) => void @@ -77,7 +77,8 @@ export const Tag = ({ tag: true, [type]: type, active, - disabled, + clickable: !!onClick, + disabled: !!disabled && !onClick, }) const path = toPath({ @@ -120,7 +121,7 @@ export const Tag = ({ size: 'sm', weight: 'md', spacing: 0, - color: active ? 'green' : 'grey-darker', + color: active ? 'white' : 'grey-darker', } break case 'plain': @@ -172,7 +173,7 @@ export const Tag = ({ if (disabled) { return ( - + diff --git a/src/components/Tag/styles.css b/src/components/Tag/styles.css index 94c3de944b..492b896d26 100644 --- a/src/components/Tag/styles.css +++ b/src/components/Tag/styles.css @@ -65,6 +65,10 @@ } } + &.clickable { + cursor: pointer; + } + &.active { background: var(--color-green-lighter); From f3d9b11bd51cacb7a0a72b0e53dc185a5d1988fa Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 11 Jul 2022 10:04:36 +0800 Subject: [PATCH 006/122] fix(tag): active color shoule be green --- src/components/Tag/styles.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/Tag/styles.css b/src/components/Tag/styles.css index 492b896d26..6565f38927 100644 --- a/src/components/Tag/styles.css +++ b/src/components/Tag/styles.css @@ -72,6 +72,10 @@ &.active { background: var(--color-green-lighter); + & .name { + color: var(--color-matters-green); + } + &:not(.disabled) { &:hover, &:focus { From 266ac2f5aec176e72c3d1cd4e415e388460714ce Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 11 Jul 2022 10:13:20 +0800 Subject: [PATCH 007/122] feat: add CustomStagingArea to and --- src/components/Editor/BottomBar/index.tsx | 2 ++ src/components/Editor/SettingsDialog/index.tsx | 2 ++ .../Editor/TagCustomStagingArea/RecommendedTags/index.tsx | 6 +----- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/Editor/BottomBar/index.tsx b/src/components/Editor/BottomBar/index.tsx index 5f4fafc26b..184a7a9d44 100644 --- a/src/components/Editor/BottomBar/index.tsx +++ b/src/components/Editor/BottomBar/index.tsx @@ -23,6 +23,7 @@ import { SearchSelectNode } from '~/components/Forms/SearchSelectForm' import { translate } from '~/common/utils' import SetCover from '../SetCover' +import TagCustomStagingArea from '../TagCustomStagingArea' import AccessDialog from './AccessDialog' import styles from './styles.css' @@ -133,6 +134,7 @@ const BottomBar: React.FC = ({ nodes={tags} saving={tagsSaving} createTag + CustomStagingArea={TagCustomStagingArea} > {({ openDialog }) => ( )} - {hasCount && - type === 'list' && - tag.__typename === 'TagSearchResult' && - tag?.numArticles && {tag.numArticles}} + {hasCount && type === 'list' && tag?.numArticles && ( + {tag.numArticles} + )} diff --git a/src/components/TagDigest/Feed/index.tsx b/src/components/TagDigest/Feed/index.tsx index caaa310eed..35fac3640d 100644 --- a/src/components/TagDigest/Feed/index.tsx +++ b/src/components/TagDigest/Feed/index.tsx @@ -25,13 +25,10 @@ export type TagDigestFeedProps = { const fragments = { tag: gql` - fragment TagDigestFeedTag on TagSearchResult { + fragment TagDigestFeedTag on Tag { id - tag { - id - content - cover - } + content + cover numArticles numAuthors articles(input: { first: 3 }) { @@ -80,23 +77,27 @@ const Feed = ({ tag, ...cardProps }: TagDigestFeedProps) => { />
- } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numAuthors)} - - - } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numArticles)} - + {tag.numAuthors && ( + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numAuthors)} + + )} + + {tag.numArticles && ( + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numArticles)} + + )}
@@ -117,7 +118,7 @@ const Feed = ({ tag, ...cardProps }: TagDigestFeedProps) => {
diff --git a/src/components/TagDigest/Sidebar/index.tsx b/src/components/TagDigest/Sidebar/index.tsx index 2cac74bce4..cd5d55cc0c 100644 --- a/src/components/TagDigest/Sidebar/index.tsx +++ b/src/components/TagDigest/Sidebar/index.tsx @@ -25,14 +25,11 @@ export type TagDigestSidebarProps = { const fragments = { tag: gql` - fragment TagDigestSidebarTag on TagSearchResult { + fragment TagDigestSidebarTag on Tag { id - tag { - id - content - description - cover - } + content + description + cover numArticles numAuthors } @@ -60,7 +57,7 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => { @@ -78,23 +75,27 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => {
- } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numAuthors)} - + {tag?.numAuthors && ( + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numAuthors)} + + )} - } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numArticles)} - + {tag?.numArticles && ( + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numArticles)} + + )}
diff --git a/src/stories/components/TagDigest/Feed.stories.tsx b/src/stories/components/TagDigest/Feed.stories.tsx index 7df16acf29..e18bc99a60 100644 --- a/src/stories/components/TagDigest/Feed.stories.tsx +++ b/src/stories/components/TagDigest/Feed.stories.tsx @@ -4,7 +4,7 @@ import React from 'react' import { TagDigest } from '~/components' -import { MOCK_TAG_SEARCH_RESULT } from '../../mocks' +import { MOCK_TAG } from '../../mocks' export default { title: 'Components/TagDigest/Feed', @@ -19,5 +19,5 @@ const Template: ComponentStory = (args) => ( export const Default = Template.bind({}) Default.args = { - tag: MOCK_TAG_SEARCH_RESULT as any, + tag: MOCK_TAG as any, } diff --git a/src/stories/components/TagDigest/Sidebar.stories.tsx b/src/stories/components/TagDigest/Sidebar.stories.tsx index db618045f5..9950484d61 100644 --- a/src/stories/components/TagDigest/Sidebar.stories.tsx +++ b/src/stories/components/TagDigest/Sidebar.stories.tsx @@ -4,7 +4,7 @@ import React from 'react' import { TagDigest } from '~/components' -import { MOCK_TAG_SEARCH_RESULT } from '../../mocks' +import { MOCK_TAG } from '../../mocks' export default { title: 'Components/TagDigest/Sidebar', @@ -19,5 +19,5 @@ const Template: ComponentStory = (args) => ( export const Default = Template.bind({}) Default.args = { - tag: MOCK_TAG_SEARCH_RESULT as any, + tag: MOCK_TAG as any, } diff --git a/src/stories/mocks/index.ts b/src/stories/mocks/index.ts index 7dbb2ab998..0551c22826 100644 --- a/src/stories/mocks/index.ts +++ b/src/stories/mocks/index.ts @@ -172,6 +172,8 @@ export const MOCK_TAG = { totalCount: 8, edges: [{ node: MOCK_ARTILCE }], }, + numArticles: 100, + numAuthors: 21, } // Transaction @@ -196,13 +198,3 @@ export const MOCK_CRYPTO_WALLET = { }, ], } - -export const MOCK_TAG_SEARCH_RESULT = { - __typename: 'TagSearchResult' as any, - id: 'tag-0000', - tag: { - ...MOCK_TAG, - }, - numArticles: 100, - numAuthors: 21, -} diff --git a/src/views/Search/AggregateResults/Tags.tsx b/src/views/Search/AggregateResults/Tags.tsx index 899714a7a2..ecd9a53e63 100644 --- a/src/views/Search/AggregateResults/Tags.tsx +++ b/src/views/Search/AggregateResults/Tags.tsx @@ -49,7 +49,7 @@ const AggregateTagResults = () => { {edges.map( ({ node, cursor }, i) => - node.__typename === 'TagSearchResult' && ( + node.__typename === 'Tag' && ( { {edges.map( ({ node, cursor }, i) => - node.__typename === 'TagSearchResult' && ( + node.__typename === 'Tag' && ( { - const isLargeUp = useResponsive('lg-up') + // const isLargeUp = useResponsive('lg-up') const isRecommended = type === 'recommended' - const query = isRecommended ? ALL_TAGS_RECOMMENDED : ALL_TAGS_HOTTEST + // const query = isRecommended ? ALL_TAGS_RECOMMENDED : ALL_TAGS_HOTTEST + const query = ALL_TAGS_HOTTEST const { data, loading, error, fetchMore, refetch } = usePublicQuery(query) @@ -55,31 +46,14 @@ const Feed = ({ type }: Props) => { return } - // TODO: revise queries - const connectionPath = 'viewer.recommendation.tags.edges.0.node.recommended' - const tag = - data?.viewer?.recommendation.tags.edges && - data?.viewer?.recommendation.tags.edges[isRecommended ? 0 : 1] - - const edges = _get( - tag, - isRecommended ? 'node.recommended.edges' : 'node.recommended.edges', - [] - ) as FeedEdges[] - - const pageInfo = _get( - tag, - isRecommended ? 'node.recommended.pageInfo' : 'node.recommended.pageInfo', - [] - ) as any + const connectionPath = 'viewer.recommendation.tags' + const { edges, pageInfo } = data?.viewer?.recommendation.tags || {} if (!edges || edges.length <= 0 || !pageInfo) { return } - const trackingType = isRecommended - ? 'all_tags_recommended' - : 'all_tags_hottest' + const trackingType = isRecommended ? 'all_tags_recommended' : 'all_tags' const loadMore = () => { analytics.trackEvent('load_more', { type: trackingType, @@ -125,7 +99,7 @@ const Feed = ({ type }: Props) => { /> - {!isLargeUp && edges.length >= 4 && i === 3 && } + {/* {!isLargeUp && edges.length >= 4 && i === 3 && } */} ))} diff --git a/src/views/Tags/gql.ts b/src/views/Tags/gql.ts index 03b7d4a713..ed4431ca8d 100644 --- a/src/views/Tags/gql.ts +++ b/src/views/Tags/gql.ts @@ -2,61 +2,23 @@ import gql from 'graphql-tag' import { TagDigest } from '~/components' -export const ALL_TAGS_RECOMMENDED = gql` - query AllTagsRecommended($after: String) { - viewer @connection(key: "viewerAllTagsRecommended") { - id - recommendation { - tags(input: { first: 1 }) { - edges { - node { - id - recommended(input: { first: 20, after: $after }) { - pageInfo { - startCursor - endCursor - hasNextPage - } - edges { - cursor - node { - id - ...TagDigestFeedTag - } - } - } - } - } - } - } - } - } - ${TagDigest.Feed.fragments.tag} -` - export const ALL_TAGS_HOTTEST = gql` query AllTagsHottest($after: String) { viewer @connection(key: "viewerAllTagsHottest") { id recommendation { - tags(input: { first: 2 }) { + tags(input: { first: 20, after: $after }) { + totalCount + pageInfo { + startCursor + endCursor + hasNextPage + } edges { + cursor node { id - recommended(input: { first: 20, after: $after }) { - pageInfo { - startCursor - endCursor - hasNextPage - } - edges { - cursor - node { - id - ...TagDigestFeedTag - } - } - } + ...TagDigestFeedTag } } } diff --git a/src/views/Tags/index.tsx b/src/views/Tags/index.tsx index 421f41953a..3b723d9376 100644 --- a/src/views/Tags/index.tsx +++ b/src/views/Tags/index.tsx @@ -1,28 +1,39 @@ import { useState } from 'react' -import { Head, Layout, Tabs, Translate, useRoute } from '~/components' +import { + Head, + Layout, + // Tabs, Translate, + useRoute, +} from '~/components' import { TagsButtons } from './Buttons' import Feed, { FeedType } from './Feed' -import SidebarTags from './Sidebar' +// import SidebarTags from './Sidebar' import styles from './styles.css' const BaseTags = () => { - const { getQuery, setQuery } = useRoute() + const { + getQuery, + // , setQuery + } = useRoute() const qsType = getQuery('type') as FeedType - const [feed, setFeed] = useState(qsType || 'recommended') - const setFeedType = (newType: FeedType) => { - setQuery('type', newType) - setFeed(newType) - } + const [ + feed, + // , setFeed + ] = useState(qsType || 'recommended') + // const setFeedType = (newType: FeedType) => { + // setQuery('type', newType) + // setFeed(newType) + // } - const isRecommended = feed === 'recommended' - const isHottest = feed === 'hottest' + // const isRecommended = feed === 'recommended' + // const isHottest = feed === 'hottest' return (
- + {/* setFeedType('recommended')} @@ -33,7 +44,7 @@ const BaseTags = () => { setFeedType('hottest')}> - + */} @@ -43,7 +54,9 @@ const BaseTags = () => { } const Tags = () => ( - }> + } + > Date: Wed, 27 Jul 2022 17:35:28 +0800 Subject: [PATCH 055/122] feat(tag): fix margin of list in all tags page --- src/views/Tags/styles.css | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/views/Tags/styles.css b/src/views/Tags/styles.css index 80694a6ba2..26470b6f45 100644 --- a/src/views/Tags/styles.css +++ b/src/views/Tags/styles.css @@ -1,12 +1,15 @@ .tags { - margin-top: 1px; /* FIXME: top header overlay by sticky tabs */ + /* FIXME: top header overlay by sticky tabs */ + + /* margin-top: 1px; */ } ul { @media (--lg-up) { display: grid; grid-template-columns: repeat(2, 1fr); - margin-top: calc(var(--spacing-base) * -1); + + /* margin-top: calc(var(--spacing-base) * -1); */ } } From 10275317ee10b1d1fba8137cc55fe8fa32a571aa Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Thu, 28 Jul 2022 10:37:18 +0800 Subject: [PATCH 056/122] fix(tag): layout --- src/components/TagDigest/Feed/styles.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/TagDigest/Feed/styles.css b/src/components/TagDigest/Feed/styles.css index a8c2101969..fbbab126a9 100644 --- a/src/components/TagDigest/Feed/styles.css +++ b/src/components/TagDigest/Feed/styles.css @@ -15,7 +15,7 @@ header { } .content { - @mixin flex-center-space-between; + @mixin flex-start-space-between; margin-top: var(--spacing-x-tight); } From b39448a613af9e93eb29b797bd1de77a290c20ae Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Thu, 28 Jul 2022 11:53:44 +0800 Subject: [PATCH 057/122] feat(image): enable responsive image for gif --- src/common/utils/url.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/utils/url.ts b/src/common/utils/url.ts index f4dc2c07c5..b3337048b2 100644 --- a/src/common/utils/url.ts +++ b/src/common/utils/url.ts @@ -51,9 +51,8 @@ export const toSizedImageURL = ({ url, size, ext }: ToSizedImageURLProps) => { ? `https://${process.env.NEXT_PUBLIC_ASSET_DOMAIN}` : '' const isOutsideLink = url.indexOf(assetDomain) < 0 - const isGIF = /gif/i.test(url) - if (!assetDomain || isOutsideLink || isGIF) { + if (!assetDomain || isOutsideLink) { return url } From eb5e715d0c47ae7de2444d54c4c8e67e06c97288 Mon Sep 17 00:00:00 2001 From: Jazzy Date: Thu, 28 Jul 2022 16:08:46 +0800 Subject: [PATCH 058/122] feat(downvote):remove accessiblity's downvotes --- src/components/Comment/FooterActions/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Comment/FooterActions/index.tsx b/src/components/Comment/FooterActions/index.tsx index 0a52f4ecbe..61a8051845 100644 --- a/src/components/Comment/FooterActions/index.tsx +++ b/src/components/Comment/FooterActions/index.tsx @@ -140,9 +140,9 @@ const BaseFooterActions = ({ return (
From 6cbff927f70d8da299cfa19830dcef3df8bd0eea Mon Sep 17 00:00:00 2001 From: Aka jazzy <63624438+Jasmine-liang@users.noreply.github.com> Date: Thu, 28 Jul 2022 22:43:19 +0800 Subject: [PATCH 059/122] Revert "feat(downvote): remove query field of downvote counts" --- src/components/Comment/Feed/index.tsx | 1 + .../Comment/FooterActions/DownvoteButton/index.tsx | 5 +++-- .../Comment/FooterActions/UpvoteButton/index.tsx | 6 ++++-- src/components/Comment/FooterActions/index.tsx | 9 ++++++--- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/Comment/Feed/index.tsx b/src/components/Comment/Feed/index.tsx index 37e7ebf41d..41b97cd3eb 100644 --- a/src/components/Comment/Feed/index.tsx +++ b/src/components/Comment/Feed/index.tsx @@ -109,6 +109,7 @@ const CommentFeed = React.memo( return ( prevComment.content === comment.content && prevComment.upvotes === comment.upvotes && + prevComment.downvotes === comment.downvotes && prevComment.state === comment.state && prevComment.pinned === comment.pinned && prevComment.author.isBlocked === comment.author.isBlocked && diff --git a/src/components/Comment/FooterActions/DownvoteButton/index.tsx b/src/components/Comment/FooterActions/DownvoteButton/index.tsx index fb344890a5..d30b9ba8fe 100644 --- a/src/components/Comment/FooterActions/DownvoteButton/index.tsx +++ b/src/components/Comment/FooterActions/DownvoteButton/index.tsx @@ -37,6 +37,7 @@ const fragments = { fragment DownvoteCommentPublic on Comment { id upvotes + downvotes } `, private: gql` @@ -63,7 +64,7 @@ const DownvoteButton = ({ unvoteComment: { id: comment.id, upvotes: comment.upvotes, - downvotes: 0, + downvotes: comment.downvotes - 1, myVote: null, __typename: 'Comment', }, @@ -76,7 +77,7 @@ const DownvoteButton = ({ id: comment.id, upvotes: comment.myVote === 'up' ? comment.upvotes - 1 : comment.upvotes, - downvotes: 0, + downvotes: comment.downvotes + 1, myVote: 'down' as any, __typename: 'Comment', }, diff --git a/src/components/Comment/FooterActions/UpvoteButton/index.tsx b/src/components/Comment/FooterActions/UpvoteButton/index.tsx index 31131fe954..6f7b4f8f5a 100644 --- a/src/components/Comment/FooterActions/UpvoteButton/index.tsx +++ b/src/components/Comment/FooterActions/UpvoteButton/index.tsx @@ -34,6 +34,7 @@ const fragments = { fragment UpvoteCommentPublic on Comment { id upvotes + downvotes } `, private: gql` @@ -59,7 +60,7 @@ const UpvoteButton = ({ unvoteComment: { id: comment.id, upvotes: comment.upvotes - 1, - downvotes: 0, + downvotes: comment.downvotes, myVote: null, __typename: 'Comment', }, @@ -71,7 +72,8 @@ const UpvoteButton = ({ voteComment: { id: comment.id, upvotes: comment.upvotes + 1, - downvotes: 0, + downvotes: + comment.myVote === 'down' ? comment.downvotes - 1 : comment.downvotes, myVote: 'up' as any, __typename: 'Comment', }, diff --git a/src/components/Comment/FooterActions/index.tsx b/src/components/Comment/FooterActions/index.tsx index 61a8051845..d0b23e42b0 100644 --- a/src/components/Comment/FooterActions/index.tsx +++ b/src/components/Comment/FooterActions/index.tsx @@ -44,10 +44,12 @@ const fragments = { ...CreatedAtComment ...ReplyComemnt ...UpvoteCommentPublic + ...DownvoteCommentPublic } ${CreatedAt.fragments.comment} ${ReplyButton.fragments.comment} ${UpvoteButton.fragments.comment.public} + ${DownvoteButton.fragments.comment.public} `, private: gql` fragment FooterActionsCommentPrivate on Comment { @@ -69,6 +71,7 @@ const fragments = { } } ...UpvoteCommentPrivate + ...DownvoteCommentPrivate ...CreatedAtComment } ${CreatedAt.fragments.comment} @@ -140,9 +143,9 @@ const BaseFooterActions = ({ return (
From 7da166e7ce8b1e984d952a84ecab086660b32cda Mon Sep 17 00:00:00 2001 From: Jazzy Date: Fri, 29 Jul 2022 00:52:57 +0800 Subject: [PATCH 060/122] feat(downvote):leave related query and fragment complete --- src/components/Comment/Feed/index.tsx | 1 - .../Comment/FooterActions/DownvoteButton/index.tsx | 4 ++-- src/components/Comment/FooterActions/UpvoteButton/index.tsx | 5 ++--- src/components/Comment/FooterActions/index.tsx | 6 +++--- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/components/Comment/Feed/index.tsx b/src/components/Comment/Feed/index.tsx index 41b97cd3eb..37e7ebf41d 100644 --- a/src/components/Comment/Feed/index.tsx +++ b/src/components/Comment/Feed/index.tsx @@ -109,7 +109,6 @@ const CommentFeed = React.memo( return ( prevComment.content === comment.content && prevComment.upvotes === comment.upvotes && - prevComment.downvotes === comment.downvotes && prevComment.state === comment.state && prevComment.pinned === comment.pinned && prevComment.author.isBlocked === comment.author.isBlocked && diff --git a/src/components/Comment/FooterActions/DownvoteButton/index.tsx b/src/components/Comment/FooterActions/DownvoteButton/index.tsx index d30b9ba8fe..889c794cfe 100644 --- a/src/components/Comment/FooterActions/DownvoteButton/index.tsx +++ b/src/components/Comment/FooterActions/DownvoteButton/index.tsx @@ -64,7 +64,7 @@ const DownvoteButton = ({ unvoteComment: { id: comment.id, upvotes: comment.upvotes, - downvotes: comment.downvotes - 1, + downvotes: 0, myVote: null, __typename: 'Comment', }, @@ -77,7 +77,7 @@ const DownvoteButton = ({ id: comment.id, upvotes: comment.myVote === 'up' ? comment.upvotes - 1 : comment.upvotes, - downvotes: comment.downvotes + 1, + downvotes: 0, myVote: 'down' as any, __typename: 'Comment', }, diff --git a/src/components/Comment/FooterActions/UpvoteButton/index.tsx b/src/components/Comment/FooterActions/UpvoteButton/index.tsx index 6f7b4f8f5a..4aac144fb5 100644 --- a/src/components/Comment/FooterActions/UpvoteButton/index.tsx +++ b/src/components/Comment/FooterActions/UpvoteButton/index.tsx @@ -60,7 +60,7 @@ const UpvoteButton = ({ unvoteComment: { id: comment.id, upvotes: comment.upvotes - 1, - downvotes: comment.downvotes, + downvotes: 0, myVote: null, __typename: 'Comment', }, @@ -72,8 +72,7 @@ const UpvoteButton = ({ voteComment: { id: comment.id, upvotes: comment.upvotes + 1, - downvotes: - comment.myVote === 'down' ? comment.downvotes - 1 : comment.downvotes, + downvotes: 0, myVote: 'up' as any, __typename: 'Comment', }, diff --git a/src/components/Comment/FooterActions/index.tsx b/src/components/Comment/FooterActions/index.tsx index d0b23e42b0..b662c42b9e 100644 --- a/src/components/Comment/FooterActions/index.tsx +++ b/src/components/Comment/FooterActions/index.tsx @@ -143,9 +143,9 @@ const BaseFooterActions = ({ return (
From c5c0b4b2ce4f1acd72f383ff27b8b6c6a7be7a44 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Fri, 29 Jul 2022 14:36:43 +0800 Subject: [PATCH 061/122] fix(mock): fix `toDigestTagPlaceholder` --- src/components/Tag/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Tag/index.tsx b/src/components/Tag/index.tsx index f637ef25c7..2f0279a14a 100644 --- a/src/components/Tag/index.tsx +++ b/src/components/Tag/index.tsx @@ -49,8 +49,8 @@ export const toDigestTagPlaceholder = (content: string) => __typename: 'ArticleConnection', totalCount: 0, }, - numArticles: null, - numAuthors: null, + numArticles: 0, + numAuthors: 0, } as DigestTag) export const Tag = ({ From a973036a58e13f11627b493fc490c86e4c17f2e5 Mon Sep 17 00:00:00 2001 From: Guo Liu Date: Fri, 29 Jul 2022 09:11:06 -0700 Subject: [PATCH 062/122] Update .env.dev --- .env.dev | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.dev b/.env.dev index 444e173286..5dd1fdfe2e 100644 --- a/.env.dev +++ b/.env.dev @@ -6,9 +6,9 @@ # ### NEXT_PUBLIC_RUNTIME_ENV=development -NEXT_PUBLIC_SITE_DOMAIN=web-develop.matters.news +NEXT_PUBLIC_SITE_DOMAIN=web-develop.mattersprotocol.io NEXT_PUBLIC_ASSET_DOMAIN=assets-develop.matters.news -NEXT_PUBLIC_API_URL=https://server-develop.matters.news/graphql +NEXT_PUBLIC_API_URL=https://server-develop.mattersprotocol.io/graphql NEXT_PUBLIC_OAUTH_URL=https://auth-server-develop.matters.news/oauth NEXT_PUBLIC_OAUTH_API_URL=https://auth-server-develop.matters.news/graphql NEXT_PUBLIC_OAUTH_SITE_DOMAIN=auth-develop.matters.news From fc31b42b4de2b851a4fe18fb85caeb4939df2a35 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Sun, 31 Jul 2022 13:57:40 +0800 Subject: [PATCH 063/122] Update .env.dev --- .env.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.dev b/.env.dev index 5dd1fdfe2e..d06b58e10c 100644 --- a/.env.dev +++ b/.env.dev @@ -8,7 +8,7 @@ NEXT_PUBLIC_RUNTIME_ENV=development NEXT_PUBLIC_SITE_DOMAIN=web-develop.mattersprotocol.io NEXT_PUBLIC_ASSET_DOMAIN=assets-develop.matters.news -NEXT_PUBLIC_API_URL=https://server-develop.mattersprotocol.io/graphql +NEXT_PUBLIC_API_URL=https://server-develop-cf.matters.news/graphql NEXT_PUBLIC_OAUTH_URL=https://auth-server-develop.matters.news/oauth NEXT_PUBLIC_OAUTH_API_URL=https://auth-server-develop.matters.news/graphql NEXT_PUBLIC_OAUTH_SITE_DOMAIN=auth-develop.matters.news From 0569b5f90515b24c9b45ea7bc89b8a426b187c5d Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 1 Aug 2022 15:15:13 +0800 Subject: [PATCH 064/122] feat: revert env --- .env.dev | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.dev b/.env.dev index d06b58e10c..444e173286 100644 --- a/.env.dev +++ b/.env.dev @@ -6,9 +6,9 @@ # ### NEXT_PUBLIC_RUNTIME_ENV=development -NEXT_PUBLIC_SITE_DOMAIN=web-develop.mattersprotocol.io +NEXT_PUBLIC_SITE_DOMAIN=web-develop.matters.news NEXT_PUBLIC_ASSET_DOMAIN=assets-develop.matters.news -NEXT_PUBLIC_API_URL=https://server-develop-cf.matters.news/graphql +NEXT_PUBLIC_API_URL=https://server-develop.matters.news/graphql NEXT_PUBLIC_OAUTH_URL=https://auth-server-develop.matters.news/oauth NEXT_PUBLIC_OAUTH_API_URL=https://auth-server-develop.matters.news/graphql NEXT_PUBLIC_OAUTH_SITE_DOMAIN=auth-develop.matters.news From f6892f616129efe920a09b8f94197751ec1aaae0 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 1 Aug 2022 15:58:49 +0800 Subject: [PATCH 065/122] Revert "revert #2650" --- src/common/utils/withApollo.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/common/utils/withApollo.ts b/src/common/utils/withApollo.ts index b559589557..8fad4c7fbf 100644 --- a/src/common/utils/withApollo.ts +++ b/src/common/utils/withApollo.ts @@ -54,17 +54,22 @@ const httpLink = ({ host, headers }: { host: string; headers: any }) => { ? process.env.NEXT_PUBLIC_OAUTH_API_URL : process.env.NEXT_PUBLIC_API_URL + const hostname = new URL(apiUrl as string).hostname + // toggle http for local dev const agent = (apiUrl || '').split(':')[0] === 'http' ? new http.Agent() : new https.Agent({ - rejectUnauthorized: isProd, // allow access to https:...matters.news in localhost + rejectUnauthorized: false, // allow access to https:...matters.news in localhost }) return createUploadLink({ uri: apiUrl, - headers, + headers: { + ...headers, + host: hostname, + }, fetchOptions: { agent, }, @@ -86,6 +91,7 @@ const errorLink = onError(({ graphQLErrors, networkError }) => { ) ) } + if (networkError) { console.log(`[Network error]: ${networkError}`) } From f45262b0223313f2a607f5f2706e8f0bd2a6fa4f Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Tue, 2 Aug 2022 21:06:45 +0800 Subject: [PATCH 066/122] feat(notification): add CircleCommentNotice --- .../CircleNotice/CircleCommentNotice.tsx | 133 ++++++++++++++++++ src/components/Notice/CircleNotice/index.tsx | 29 +++- .../CommentNewReplyNotice.tsx | 4 +- 3 files changed, 162 insertions(+), 4 deletions(-) create mode 100644 src/components/Notice/CircleNotice/CircleCommentNotice.tsx diff --git a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx new file mode 100644 index 0000000000..51a5ed88b8 --- /dev/null +++ b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx @@ -0,0 +1,133 @@ +import gql from 'graphql-tag' +import { Fragment } from 'react' + +import { Translate } from '~/components' + +import { numAbbr } from '~/common/utils' + +import NoticeActorAvatar from '../NoticeActorAvatar' +import NoticeActorName from '../NoticeActorName' +import NoticeCircleCard from '../NoticeCircleCard' +import NoticeCircleName from '../NoticeCircleName' +import NoticeDate from '../NoticeDate' +import NoticeHead from '../NoticeHead' +import NoticeTypeIcon from '../NoticeTypeIcon' +import styles from '../styles.css' + +import { CircleCommentNotice as NoticeType } from './__generated__/CircleCommentNotice' + +type CircleCommentNoticeType = { + notice: NoticeType + noticeType: + 'circleNewDiscussion' | + 'circleNewBroadcast' | + 'circleMemberBroadcast' | + 'circleMemberNewDiscussion' | + 'circleMemberNewDiscussionReply' | + 'circleMemberNewBroadcastReply' | + 'inCircleNewArticle' | + 'inCircleNewBroadcast' | + 'inCircleNewBroadcastReply' | + 'inCircleNewDiscussion' | + 'inCircleNewDiscussionReply' +} + +const CircleCommentNotice = ({ notice, noticeType }: CircleCommentNoticeType) => { + if (!notice.actors) { + return null + } + + const actorsCount = notice.actors.length + const isMultiActors = actorsCount > 1 + const discussion = + noticeType === 'circleNewDiscussion' || + noticeType === 'circleMemberNewDiscussion' || + noticeType === 'inCircleNewDiscussion' + const discussionReply = + noticeType === 'circleMemberNewDiscussionReply' || + noticeType === 'inCircleNewDiscussionReply' + const broadcastReply = + noticeType === 'circleMemberNewBroadcastReply' || + noticeType === 'inCircleNewBroadcastReply' + + return ( +
+
+ {isMultiActors ? ( + + ) : ( + + )} +
+ +
+ + {notice.actors.slice(0, 2).map((actor, index) => ( + + + {isMultiActors && index < 1 && } + + ))}{' '} + {isMultiActors && ( + + )} + + <> + + + {discussion && ( + + )} + {discussionReply && ( + + )} + {broadcastReply && ( + + )} + + + + +
+ + +
+ ) +} +CircleCommentNotice.fragments = { + notice: gql` + fragment CircleCommentNotice on CircleNotice { + id + ...NoticeDate + actors { + ...NoticeActorAvatarUser + ...NoticeActorNameUser + } + circle: target { + ...NoticeCircleCard + } + } + ${NoticeActorAvatar.fragments.user} + ${NoticeActorName.fragments.user} + ${NoticeCircleCard.fragments.circle} + ${NoticeDate.fragments.notice} + `, +} + +export default CircleCommentNotice diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index 6a72845c85..ed13b815fc 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -1,5 +1,6 @@ import gql from 'graphql-tag' +import CircleCommentNotice from './CircleCommentNotice' import CircleInvitationNotice from './CircleInvitationNotice' import CircleNewUserNotice from './CircleNewUserNotice' @@ -7,14 +8,36 @@ import { CircleNotice as NoticeType } from './__generated__/CircleNotice' const CircleNotice = ({ notice }: { notice: NoticeType }) => { switch (notice.circleNoticeType) { - case 'CircleNewFollower': - return case 'CircleNewSubscriber': return + case 'CircleNewFollower': + return case 'CircleNewUnsubscriber': return case 'CircleInvitation': return + case 'CircleNewDiscussion': + return + case 'CircleNewBroadcast': + return + case 'CircleMemberBroadcast': + return + case 'CircleMemberNewDiscussion': + return + case 'CircleMemberNewDiscussionReply': + return + case 'CircleMemberNewBroadcastReply': + return + case 'InCircleNewArticle': + return + case 'InCircleNewBroadcast': + return + case 'InCircleNewBroadcastReply': + return + case 'InCircleNewDiscussion': + return + case 'InCircleNewDiscussionReply': + return default: return null } @@ -29,9 +52,11 @@ CircleNotice.fragments = { circleNoticeType: type ...CircleNewUserNotice ...CircleInvitationNotice + ...CircleCommentNotice } ${CircleNewUserNotice.fragments.notice} ${CircleInvitationNotice.fragments.notice} + ${CircleCommentNotice.fragments.notice} `, } diff --git a/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx b/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx index 71f904f8f4..dca49e211a 100644 --- a/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx +++ b/src/components/Notice/CommentCommentNotice/CommentNewReplyNotice.tsx @@ -87,9 +87,9 @@ const CommentNewReplyNotice = ({ notice }: { notice: NoticeType }) => { )} - + /> */} {isMultiActors && (
From 2a3bd1f3e861871a7a2f3da4e2040ac1c8d9e3f1 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Tue, 2 Aug 2022 21:16:20 +0800 Subject: [PATCH 067/122] fix: format code --- .../CircleNotice/CircleCommentNotice.tsx | 41 +++++------ src/components/Notice/CircleNotice/index.tsx | 68 ++++++++++++++++--- 2 files changed, 74 insertions(+), 35 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx index 51a5ed88b8..766209c256 100644 --- a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx @@ -19,20 +19,23 @@ import { CircleCommentNotice as NoticeType } from './__generated__/CircleComment type CircleCommentNoticeType = { notice: NoticeType noticeType: - 'circleNewDiscussion' | - 'circleNewBroadcast' | - 'circleMemberBroadcast' | - 'circleMemberNewDiscussion' | - 'circleMemberNewDiscussionReply' | - 'circleMemberNewBroadcastReply' | - 'inCircleNewArticle' | - 'inCircleNewBroadcast' | - 'inCircleNewBroadcastReply' | - 'inCircleNewDiscussion' | - 'inCircleNewDiscussionReply' + | 'circleNewDiscussion' + | 'circleNewBroadcast' + | 'circleMemberBroadcast' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewArticle' + | 'inCircleNewBroadcast' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } -const CircleCommentNotice = ({ notice, noticeType }: CircleCommentNoticeType) => { +const CircleCommentNotice = ({ + notice, + noticeType, +}: CircleCommentNoticeType) => { if (!notice.actors) { return null } @@ -75,7 +78,6 @@ const CircleCommentNotice = ({ notice, noticeType }: CircleCommentNoticeType) => en={`etc. ${numAbbr(actorsCount)} users`} /> )} - <> @@ -87,21 +89,12 @@ const CircleCommentNotice = ({ notice, noticeType }: CircleCommentNoticeType) => /> )} {discussionReply && ( - + )} {broadcastReply && ( - + )} -
diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index ed13b815fc..e6c994bb44 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -17,27 +17,73 @@ const CircleNotice = ({ notice }: { notice: NoticeType }) => { case 'CircleInvitation': return case 'CircleNewDiscussion': - return + return ( + + ) case 'CircleNewBroadcast': - return + return ( + + ) case 'CircleMemberBroadcast': - return + return ( + + ) case 'CircleMemberNewDiscussion': - return + return ( + + ) case 'CircleMemberNewDiscussionReply': - return + return ( + + ) case 'CircleMemberNewBroadcastReply': - return + return ( + + ) case 'InCircleNewArticle': - return + return ( + + ) case 'InCircleNewBroadcast': - return + return ( + + ) case 'InCircleNewBroadcastReply': - return + return ( + + ) case 'InCircleNewDiscussion': - return + return ( + + ) case 'InCircleNewDiscussionReply': - return + return ( + + ) default: return null } From 032dfd6aeec5905243d015734dc69682f70c052c Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Wed, 3 Aug 2022 02:02:20 +0800 Subject: [PATCH 068/122] fix: add NoticeActorAvatar --- .../CircleNotice/CircleCommentNotice.tsx | 35 +++++++++++++------ src/components/Notice/CircleNotice/index.tsx | 1 + src/components/Notice/index.tsx | 1 + 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx index 766209c256..427dee84c3 100644 --- a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx @@ -19,17 +19,17 @@ import { CircleCommentNotice as NoticeType } from './__generated__/CircleComment type CircleCommentNoticeType = { notice: NoticeType noticeType: - | 'circleNewDiscussion' - | 'circleNewBroadcast' - | 'circleMemberBroadcast' - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewArticle' - | 'inCircleNewBroadcast' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleNewDiscussion' + | 'circleNewBroadcast' + | 'circleMemberBroadcast' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewArticle' + | 'inCircleNewBroadcast' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } const CircleCommentNotice = ({ @@ -65,12 +65,14 @@ const CircleCommentNotice = ({
+ {notice.actors.slice(0, 2).map((actor, index) => ( {isMultiActors && index < 1 && } ))}{' '} + {isMultiActors && ( )} + <> @@ -95,7 +98,17 @@ const CircleCommentNotice = ({ )} + + {isMultiActors && ( +
+ {notice.actors.map((actor, index) => ( + + ))} +
+ )} + +
diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index e6c994bb44..be5828d96f 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -7,6 +7,7 @@ import CircleNewUserNotice from './CircleNewUserNotice' import { CircleNotice as NoticeType } from './__generated__/CircleNotice' const CircleNotice = ({ notice }: { notice: NoticeType }) => { + console.log(notice.circleNoticeType) switch (notice.circleNoticeType) { case 'CircleNewSubscriber': return diff --git a/src/components/Notice/index.tsx b/src/components/Notice/index.tsx index b3d4bf904a..14b9adee25 100644 --- a/src/components/Notice/index.tsx +++ b/src/components/Notice/index.tsx @@ -71,6 +71,7 @@ const fragments = { } const BaseNotice: React.FC = ({ notice }) => { + console.log(notice.__typename === 'CircleNotice' ? ' ' : notice.__typename) switch (notice.__typename) { case 'UserNotice': return From 7a3b79ac9f9b5ff2bb7c8896865711611917a56e Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Wed, 3 Aug 2022 02:03:18 +0800 Subject: [PATCH 069/122] fix: format code --- .../CircleNotice/CircleCommentNotice.tsx | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx index 427dee84c3..60d276eff9 100644 --- a/src/components/Notice/CircleNotice/CircleCommentNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleCommentNotice.tsx @@ -19,17 +19,17 @@ import { CircleCommentNotice as NoticeType } from './__generated__/CircleComment type CircleCommentNoticeType = { notice: NoticeType noticeType: - | 'circleNewDiscussion' - | 'circleNewBroadcast' - | 'circleMemberBroadcast' - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewArticle' - | 'inCircleNewBroadcast' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleNewDiscussion' + | 'circleNewBroadcast' + | 'circleMemberBroadcast' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewArticle' + | 'inCircleNewBroadcast' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } const CircleCommentNotice = ({ @@ -65,14 +65,12 @@ const CircleCommentNotice = ({
- {notice.actors.slice(0, 2).map((actor, index) => ( {isMultiActors && index < 1 && } ))}{' '} - {isMultiActors && ( )} - <> @@ -98,7 +95,6 @@ const CircleCommentNotice = ({ )} - {isMultiActors && (
{notice.actors.map((actor, index) => ( @@ -106,9 +102,7 @@ const CircleCommentNotice = ({ ))}
)} - -
From 29ebe1764ca8cbc67be35ffdd0b95cba3104c5e8 Mon Sep 17 00:00:00 2001 From: Zeck Li Date: Wed, 3 Aug 2022 10:54:20 +0800 Subject: [PATCH 070/122] feat(copy): update English copies --- src/components/Dialogs/ReviseArticleDialog/index.tsx | 2 +- .../Header/ConfirmRevisedPublishDialogContent/index.tsx | 2 +- .../SettingsButton/ConfirmPublishDialogContent/index.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Dialogs/ReviseArticleDialog/index.tsx b/src/components/Dialogs/ReviseArticleDialog/index.tsx index bbb08ef448..981c0a2da1 100644 --- a/src/components/Dialogs/ReviseArticleDialog/index.tsx +++ b/src/components/Dialogs/ReviseArticleDialog/index.tsx @@ -17,7 +17,7 @@ export const ReviseArticleDialog = ({ children, revisionCountLeft }: Props) => { + } closeDialog={closeDialog} closeTextId="cancel" diff --git a/src/views/ArticleDetail/EditMode/Header/ConfirmRevisedPublishDialogContent/index.tsx b/src/views/ArticleDetail/EditMode/Header/ConfirmRevisedPublishDialogContent/index.tsx index e55bde7fc4..dc837ec8d3 100644 --- a/src/views/ArticleDetail/EditMode/Header/ConfirmRevisedPublishDialogContent/index.tsx +++ b/src/views/ArticleDetail/EditMode/Header/ConfirmRevisedPublishDialogContent/index.tsx @@ -30,7 +30,7 @@ const ConfirmRevisedPublishDialogContent = ({ return ( <> } + title={} leftButton={} rightButton={SubmitButton} /> diff --git a/src/views/Me/DraftDetail/SettingsButton/ConfirmPublishDialogContent/index.tsx b/src/views/Me/DraftDetail/SettingsButton/ConfirmPublishDialogContent/index.tsx index 37f90d68db..dba83955ec 100644 --- a/src/views/Me/DraftDetail/SettingsButton/ConfirmPublishDialogContent/index.tsx +++ b/src/views/Me/DraftDetail/SettingsButton/ConfirmPublishDialogContent/index.tsx @@ -44,7 +44,7 @@ const ConfirmPublishDialogContent: React.FC< return ( <> } + title={} leftButton={} rightButton={SubmitButton} /> From 33da5a99b9fc9bbeaca6dcaf8bd939bf5fe8f220 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Wed, 3 Aug 2022 20:01:45 +0800 Subject: [PATCH 071/122] feat(image): force `` to use `.gif` instead of `.webp` for GIFs --- src/components/ResponsiveImage/index.tsx | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/components/ResponsiveImage/index.tsx b/src/components/ResponsiveImage/index.tsx index b70f81c4f0..bbd743a443 100644 --- a/src/components/ResponsiveImage/index.tsx +++ b/src/components/ResponsiveImage/index.tsx @@ -21,6 +21,8 @@ const BaseResponsiveImage = ({ }: ResponsiveImageProps) => { const [error, setError] = useState(false) + const isGIF = /gif/i.test(url) + // Fallback to the raw `url` if manually disable or responsive image is failed to load if (disabled || error) { return @@ -28,7 +30,7 @@ const BaseResponsiveImage = ({ return ( setError(true)}> - {smUpSize && ( + {smUpSize && !isGIF && ( )} - + {!isGIF && ( + + )} From 7cf446e0fa776566d199758f59569498ce9f44b6 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Wed, 3 Aug 2022 21:55:39 +0800 Subject: [PATCH 072/122] fix(announcement-cover): incorrect z-index --- src/views/Home/Announcements/Carousel/styles.css | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/views/Home/Announcements/Carousel/styles.css b/src/views/Home/Announcements/Carousel/styles.css index ce3ea9f819..e050e0b5f2 100644 --- a/src/views/Home/Announcements/Carousel/styles.css +++ b/src/views/Home/Announcements/Carousel/styles.css @@ -47,6 +47,7 @@ header { & .content { position: relative; + z-index: 0; height: var(--announcement-height); padding: calc( var(--announcement-header-height) + var(--spacing-base) + @@ -64,17 +65,21 @@ header { & h3 { @mixin line-clamp; - -webkit-line-clamp: 2; font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); line-height: 1.5rem; color: var(--color-white); + -webkit-line-clamp: 2; } & p { display: none; } + & :global(picture, img) { + z-index: -1; + } + @media (--sm-up) { & h3 { font-size: var(--font-size-xm); @@ -83,11 +88,11 @@ header { & p { @mixin line-clamp; - -webkit-line-clamp: 1; margin-top: var(--spacing-xx-tight); font-size: var(--font-size-sm-s); line-height: 1.25rem; color: rgba(255, 255, 255, 0.8); + -webkit-line-clamp: 1; } } } From 8262c9220aad564adc5e1f1231fc5d65ad409ae5 Mon Sep 17 00:00:00 2001 From: 49659410+tx0c <> Date: Tue, 2 Aug 2022 16:44:15 +0000 Subject: [PATCH 073/122] feat(tags): use id-slug for tag path, and append `#feed` for tab after initial for thematters/matters-server#2547 resolves #2348 --- src/common/utils/route.ts | 9 +- src/common/utils/text.ts | 11 ++ src/components/Dialogs/TagDialog/Content.tsx | 7 +- src/components/Tag/index.tsx | 1 + src/components/TagDigest/Feed/index.tsx | 1 + src/components/TagDigest/Rich/index.tsx | 1 + src/components/TagDigest/Sidebar/index.tsx | 2 +- .../Home/Feed/Tags/TagFeedDigest/index.tsx | 1 + src/views/Home/Sidebar/Tags/index.tsx | 1 + src/views/Search/AggregateResults/Tags.tsx | 1 + src/views/Search/SearchTags/index.tsx | 1 + src/views/TagDetail/Articles/index.tsx | 8 +- src/views/TagDetail/gql.ts | 103 ++++++----- src/views/TagDetail/index.tsx | 163 +++++++++++++++--- src/views/Tags/Card/index.tsx | 2 +- src/views/Tags/Feed.tsx | 1 + src/views/User/Tags/UserTags.tsx | 1 + 17 files changed, 239 insertions(+), 75 deletions(-) diff --git a/src/common/utils/route.ts b/src/common/utils/route.ts index 07d0a0a5fa..28987c2069 100644 --- a/src/common/utils/route.ts +++ b/src/common/utils/route.ts @@ -6,6 +6,7 @@ import { PATHS, ROUTES } from '~/common/enums' import { UtmParams } from './analytics' import { fromGlobalId } from './globalId' +import { tagSlugify } from './text' import { parseURL } from './url' interface ArticleArgs { @@ -55,6 +56,8 @@ type ToPathArgs = | { page: 'tagDetail' id: string + content: string + fragment?: string } | { page: 'userProfile' | 'userSubscriptons' | 'userComments' | 'userTags' @@ -174,8 +177,12 @@ export const toPath = ( } } case 'tagDetail': { + const { id: numberId } = fromGlobalId(args.id as string) + const pathname = `/tags/${numberId}-${tagSlugify(args.content)}` + const hash = args.fragment ? `#${args.fragment}` : '' return { - href: `/tags/${args.id}`, + href: `${pathname}${hash}`, + pathname, } } case 'userProfile': { diff --git a/src/common/utils/text.ts b/src/common/utils/text.ts index ea61bf3346..544ee92155 100644 --- a/src/common/utils/text.ts +++ b/src/common/utils/text.ts @@ -144,3 +144,14 @@ export const stripNonEnglishUrl = (url: string) => url.match(/^[\x21-\x7e]+[A-Za-z0-9]/)?.[0] || // fallback to full url url + +const anyNonAlphaNum = new RegExp(nonAlphaNumUni, 'gu') + +// to simulate slugify at DB server side +// https://github.com/thematters/matters-metabase/blob/master/sql/stale-tags-create-table-view.sql#L2-L13 +// might be able to use under more scenarios +export const tagSlugify = (content: string) => + `${content}` + // .toLowerCase() + .replace(anyNonAlphaNum, '-') // replace all non alpha-number to `-`, including spaces and punctuations + .replace(/(^-+|-+$)/g, '') // strip leading or trailing `-` if there's any diff --git a/src/components/Dialogs/TagDialog/Content.tsx b/src/components/Dialogs/TagDialog/Content.tsx index 9c8fdf73be..9cb4595e17 100644 --- a/src/components/Dialogs/TagDialog/Content.tsx +++ b/src/components/Dialogs/TagDialog/Content.tsx @@ -191,12 +191,17 @@ const TagDialogContent: React.FC = ({ ) const returnedTagId = result?.data?.putTag?.id + const returnedTagContent = result?.data?.putTag?.content as string setSubmitting(false) if (!id) { // if created, then redirect to tag detail page - const path = toPath({ page: 'tagDetail', id: returnedTagId || '' }) + const path = toPath({ + page: 'tagDetail', + id: returnedTagId || '', + content: returnedTagContent, + }) router.push(path.href) } else { closeDialog() diff --git a/src/components/Tag/index.tsx b/src/components/Tag/index.tsx index 2f0279a14a..60135dd585 100644 --- a/src/components/Tag/index.tsx +++ b/src/components/Tag/index.tsx @@ -76,6 +76,7 @@ export const Tag = ({ const path = toPath({ page: 'tagDetail', id: tag.id, + content: tag.content, }) let iconProps: IconProps = {} diff --git a/src/components/TagDigest/Feed/index.tsx b/src/components/TagDigest/Feed/index.tsx index 35fac3640d..5111a766d2 100644 --- a/src/components/TagDigest/Feed/index.tsx +++ b/src/components/TagDigest/Feed/index.tsx @@ -54,6 +54,7 @@ const Feed = ({ tag, ...cardProps }: TagDigestFeedProps) => { const path = toPath({ page: 'tagDetail', id: tag.id, + content: tag.content, }) const articles = tag.articles.edges diff --git a/src/components/TagDigest/Rich/index.tsx b/src/components/TagDigest/Rich/index.tsx index babcbbe50e..21f10d0060 100644 --- a/src/components/TagDigest/Rich/index.tsx +++ b/src/components/TagDigest/Rich/index.tsx @@ -46,6 +46,7 @@ const Rich = ({ const path = toPath({ page: 'tagDetail', id: tag.id, + content: tag.content, }) return ( diff --git a/src/components/TagDigest/Sidebar/index.tsx b/src/components/TagDigest/Sidebar/index.tsx index cd5d55cc0c..c0800bafda 100644 --- a/src/components/TagDigest/Sidebar/index.tsx +++ b/src/components/TagDigest/Sidebar/index.tsx @@ -40,7 +40,7 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => { const path = toPath({ page: 'tagDetail', id: tag.id, - // content: tag.content, + content: tag.content, }) return ( diff --git a/src/views/Home/Feed/Tags/TagFeedDigest/index.tsx b/src/views/Home/Feed/Tags/TagFeedDigest/index.tsx index a57e2603f1..177221816b 100644 --- a/src/views/Home/Feed/Tags/TagFeedDigest/index.tsx +++ b/src/views/Home/Feed/Tags/TagFeedDigest/index.tsx @@ -45,6 +45,7 @@ const TagFeedDigest = ({ tag, ...cardProps }: TagFeedDigestProps) => { const path = toPath({ page: 'tagDetail', id: tag.id, + content: tag.content, }) const maskClasses = classNames({ mask: !!tag.cover }) diff --git a/src/views/Home/Sidebar/Tags/index.tsx b/src/views/Home/Sidebar/Tags/index.tsx index ab8ed536f9..1974d51e65 100644 --- a/src/views/Home/Sidebar/Tags/index.tsx +++ b/src/views/Home/Sidebar/Tags/index.tsx @@ -110,6 +110,7 @@ const Tags = () => { {...toPath({ page: 'tagDetail', id: node.id, + content: node.content, })} spacing={['xtight', 'xtight']} bgColor="none" diff --git a/src/views/Search/AggregateResults/Tags.tsx b/src/views/Search/AggregateResults/Tags.tsx index ecd9a53e63..838683ffa9 100644 --- a/src/views/Search/AggregateResults/Tags.tsx +++ b/src/views/Search/AggregateResults/Tags.tsx @@ -56,6 +56,7 @@ const AggregateTagResults = () => { {...toPath({ page: 'tagDetail', id: node.id, + content: node.content, })} onClick={() => analytics.trackEvent('click_feed', { diff --git a/src/views/Search/SearchTags/index.tsx b/src/views/Search/SearchTags/index.tsx index c3d0c1fb28..0742b69a4e 100644 --- a/src/views/Search/SearchTags/index.tsx +++ b/src/views/Search/SearchTags/index.tsx @@ -84,6 +84,7 @@ const SearchTag = () => { {...toPath({ page: 'tagDetail', id: node.id, + content: node.content, })} onClick={() => analytics.trackEvent('click_feed', { diff --git a/src/views/TagDetail/Articles/index.tsx b/src/views/TagDetail/Articles/index.tsx index 51b851837a..7fa914316a 100644 --- a/src/views/TagDetail/Articles/index.tsx +++ b/src/views/TagDetail/Articles/index.tsx @@ -1,5 +1,5 @@ import { NetworkStatus } from 'apollo-client' -import { useContext, useEffect, useRef } from 'react' +import React, { useContext, useEffect, useRef } from 'react' import { ArticleDigestFeed, @@ -170,8 +170,8 @@ const TagDetailArticles = ({ tagId, selected }: TagArticlesProps) => { {(edges || []).map(({ node, cursor }, i) => ( - <> - + + @@ -202,7 +202,7 @@ const TagDetailArticles = ({ tagId, selected }: TagArticlesProps) => { {!isLargeUp && edges.length >= 4 && i === 3 && ( )} - + ))} diff --git a/src/views/TagDetail/gql.ts b/src/views/TagDetail/gql.ts index b60659d491..7cacd1e440 100644 --- a/src/views/TagDetail/gql.ts +++ b/src/views/TagDetail/gql.ts @@ -6,47 +6,43 @@ import ArticlesCount from './ArticlesCount' import { TagDetailButtons } from './Buttons' import Followers from './Followers' -export const TAG_DETAIL_PUBLIC = gql` - query TagDetailPublic($id: ID!) { - node(input: { id: $id }) { - ... on Tag { - id - content - cover - description - numArticles - numAuthors - creator { - id - ...UserDigestMiniUser - } - editors { - id - ...UserDigestMiniUser - } - owner { +const tagFragment = gql` + fragment TagFragment on Tag { + id + content + cover + description + numArticles + numAuthors + creator { + id + ...UserDigestMiniUser + } + editors { + id + ...UserDigestMiniUser + } + owner { + id + ...UserDigestMiniUser + } + selectedArticles: articles(input: { first: 0, selected: true }) { + totalCount + } + isOfficial + ...FollowersTag + ...ArticleCountTag + ...FollowButtonTagPrivate + recommended(input: {}) { + edges { + cursor + node { id - ...UserDigestMiniUser - } - selectedArticles: articles(input: { first: 0, selected: true }) { - totalCount - } - isOfficial - ...FollowersTag - ...ArticleCountTag - ...FollowButtonTagPrivate - recommended(input: {}) { - edges { - cursor - node { - id - content - description - cover - numArticles - numAuthors - } - } + content + description + cover + numArticles + numAuthors } } } @@ -57,6 +53,33 @@ export const TAG_DETAIL_PUBLIC = gql` ${TagDetailButtons.FollowButton.fragments.tag.private} ` +export const TAG_DETAIL_PUBLIC = gql` + query TagDetailPublic($id: ID!) { + node(input: { id: $id }) { + ...TagFragment + } + } + ${tagFragment} +` + +export const TAG_DETAIL_BY_SEARCH = gql` + query TagDetailPublicBySearch($key: String!) { + search(input: { type: Tag, key: $key, first: 1 }) { + totalCount + pageInfo { + hasNextPage + } + edges { + cursor + node { + ...TagFragment + } + } + } + } + ${tagFragment} +` + export const TAG_DETAIL_PRIVATE = gql` query TagDetailPrivate($id: ID!) { node(input: { id: $id }) { diff --git a/src/views/TagDetail/index.tsx b/src/views/TagDetail/index.tsx index a448c70cbb..75a5c3b1ae 100644 --- a/src/views/TagDetail/index.tsx +++ b/src/views/TagDetail/index.tsx @@ -1,5 +1,5 @@ -import _find from 'lodash/find' -import _some from 'lodash/some' +// import _find from 'lodash/find' +// import _some from 'lodash/some' import dynamic from 'next/dynamic' import { useContext, useEffect, useState } from 'react' @@ -24,7 +24,13 @@ import { getErrorCodes, QueryError } from '~/components/GQL' import ShareButton from '~/components/Layout/Header/ShareButton' import { ERROR_CODES } from '~/common/enums' -import { makeTitle, stripPunctPrefixSuffix } from '~/common/utils' +import { + fromGlobalId, + makeTitle, + stripPunctPrefixSuffix, + toGlobalId, + toPath, +} from '~/common/utils' import IMAGE_INTRO from '@/public/static/images/intro.jpg' @@ -34,24 +40,32 @@ import { TagDetailButtons } from './Buttons' import TagCover from './Cover' import DropdownActions from './DropdownActions' import Followers from './Followers' -import { TAG_DETAIL_PRIVATE, TAG_DETAIL_PUBLIC } from './gql' +import { + TAG_DETAIL_BY_SEARCH, + TAG_DETAIL_PRIVATE, + TAG_DETAIL_PUBLIC, +} from './gql' import Owner from './Owner' import RelatedTags from './RelatedTags' import styles from './styles.css' import { TagDetailPublic, - TagDetailPublic_node_Tag, + // TagDetailPublic_node_Tag, } from './__generated__/TagDetailPublic' +import { TagDetailPublicBySearch } from './__generated__/TagDetailPublicBySearch' +import { TagFragment } from './__generated__/TagFragment' const DynamicCommunity = dynamic(() => import('./Community'), { ssr: false, loading: Spinner, }) -type TagFeedType = 'latest' | 'selected' | 'community' +const validTagFeedTypes = ['latest', 'selected', 'community'] as const +type TagFeedType = typeof validTagFeedTypes[number] -const TagDetail = ({ tag }: { tag: TagDetailPublic_node_Tag }) => { +const TagDetail = ({ tag }: { tag: TagFragment }) => { + const { router } = useRoute() const viewer = useContext(ViewerContext) const features = useFeatures() @@ -60,19 +74,58 @@ const TagDetail = ({ tag }: { tag: TagDetailPublic_node_Tag }) => { const [feed, setFeed] = useState( hasSelectedFeed ? 'selected' : 'latest' ) + const isSelected = feed === 'selected' const isLatest = feed === 'latest' const isCommunity = feed === 'community' + const [tab, setTab] = useState(undefined) + const changeTab = (newTab: TagFeedType) => { + setFeed(newTab) + setTab(newTab) + } + useEffect(() => { if (!hasSelectedFeed && isSelected) { - setFeed('latest') + changeTab('latest') } }) + useEffect(() => { + if (process.browser) { + const ftype = window.location.hash.split('#')?.[1] as TagFeedType // router.asPath.split('#')?.[1] + // console.log('in browser call:', { hash: window.location.hash, ftype }) + if (validTagFeedTypes.includes(ftype)) { + changeTab(ftype) // override if provided + } + } + }, []) + + useEffect(() => { + if (process.browser) { + const newPath = toPath({ + page: 'tagDetail', + id: tag.id, // toGlobalId(tagId), + content: tag.content, + fragment: tab, + }) + + // console.log('in browser call:', { hash: window.location.hash, newPath, asPath: router.asPath }) + + if (newPath.href !== router.asPath) { + // console.log('replace url:', { from: router.asPath, to: newPath.href }) + router.replace( + newPath.href, // + `#${feed}`, + undefined, + { shallow: true } + ) + } + } + }, [tab]) + // define permission const isOwner = tag?.owner?.id === viewer.id - const isEditor = _some(tag?.editors || [], ['id', viewer.id]) + const isEditor = (tag?.editors || []).some((t) => t.id === viewer.id) const isMatty = viewer.info.email === 'hi@matters.news' const isMaintainer = isOwner || isEditor || isMatty const isOfficial = !!tag?.isOfficial @@ -156,16 +209,22 @@ const TagDetail = ({ tag }: { tag: TagDetailPublic_node_Tag }) => { {hasSelectedFeed && ( - setFeed('selected')}> + changeTab('selected')} + > )} - setFeed('latest')}> + changeTab('latest')}> - setFeed('community')}> + changeTab('community')} + > @@ -183,44 +242,81 @@ const TagDetail = ({ tag }: { tag: TagDetailPublic_node_Tag }) => { const TagDetailContainer = () => { const viewer = useContext(ViewerContext) const { getQuery } = useRoute() - const tagId = getQuery('tagId') + + const param = getQuery('tagId') + // const ma = parm?.match(/^(\d+)/) + // const isRawGlobalId: boolean = !ma + let isRawGlobalId = false + try { + const { type, id } = fromGlobalId(param) + if (type === 'Tag' && id?.match(/^\d+$/)) { + isRawGlobalId = true + } + } catch (err) { + // ignore + } + const numberId = param?.match(/^(\d+)/)?.[1] + const searchKey = !(isRawGlobalId || numberId) ? param : '' + const tagId = isRawGlobalId + ? param + : numberId + ? toGlobalId({ type: 'Tag', id: numberId }) + : '' // undefined /** * Data Fetching */ // public data const { - data, + data: dataByTagId, loading, error, refetch: refetchPublic, client, } = usePublicQuery(TAG_DETAIL_PUBLIC, { variables: { id: tagId }, + skip: !!searchKey, // !(isRawGlobalId || numberId), + }) + + const data2 = usePublicQuery(TAG_DETAIL_BY_SEARCH, { + variables: { key: searchKey }, + skip: !searchKey, }) // private data - const loadPrivate = () => { - if (!viewer.isAuthed || !tagId) { + const loadPrivate = (id: string) => { + if (!viewer.isAuthed || !id) { return } client.query({ query: TAG_DETAIL_PRIVATE, fetchPolicy: 'network-only', - variables: { id: tagId }, + variables: { id }, }) } // fetch private data for first page useEffect(() => { - loadPrivate() - }, [tagId, viewer.id]) + const retryTagId = + tagId || (data2?.data?.search.edges?.[0].node as TagFragment)?.id + if (retryTagId) { + loadPrivate( + retryTagId + // tagId || (data2?.data?.search.edges?.[0].node as TagFragment).id + ) + } + }, [tagId, data2?.data, viewer.id]) // refetch & pull to refresh const refetch = async () => { - await refetchPublic() - loadPrivate() + const retryTagId = + tagId || (data2?.data?.search.edges?.[0].node as TagFragment)?.id + await refetchPublic({ id: retryTagId }) + loadPrivate( + retryTagId + // tagId || (data2?.data?.search.edges?.[0].node as TagFragment).id + ) } usePullToRefresh.Register() usePullToRefresh.Handler(refetch) @@ -228,7 +324,7 @@ const TagDetailContainer = () => { /** * Render */ - if (loading) { + if (loading || data2?.loading) { return ( @@ -236,8 +332,9 @@ const TagDetailContainer = () => { ) } - if (error) { - const errorCodes = getErrorCodes(error) + if (error || data2?.error) { + const err = (error || data2?.error)! + const errorCodes = getErrorCodes(err) if (errorCodes[0] === ERROR_CODES.ENTITY_NOT_FOUND) { return ( @@ -249,12 +346,17 @@ const TagDetailContainer = () => { return ( - + ) } - if (data?.node?.__typename !== 'Tag') { + if ( + (!searchKey && dataByTagId?.node?.__typename !== 'Tag') || + (searchKey && + (data2?.data?.search.edges?.[0].node as TagFragment)?.__typename !== + 'Tag') + ) { return ( @@ -262,7 +364,14 @@ const TagDetailContainer = () => { ) } - return + return ( + + ) } export default TagDetailContainer diff --git a/src/views/Tags/Card/index.tsx b/src/views/Tags/Card/index.tsx index d32468f253..ff960db54d 100644 --- a/src/views/Tags/Card/index.tsx +++ b/src/views/Tags/Card/index.tsx @@ -17,7 +17,7 @@ interface CardProps { } const Card = ({ tag }: CardProps) => { - const path = toPath({ page: 'tagDetail', id: tag.id }) + const path = toPath({ page: 'tagDetail', id: tag.id, content: tag.content }) const url = tag.cover || IMAGE_TAG_COVER.src const nameClasses = classNames({ name: true, mask: !!tag.cover }) diff --git a/src/views/Tags/Feed.tsx b/src/views/Tags/Feed.tsx index f97565de1c..037b49e44d 100644 --- a/src/views/Tags/Feed.tsx +++ b/src/views/Tags/Feed.tsx @@ -87,6 +87,7 @@ const Feed = ({ type }: Props) => { {...toPath({ page: 'tagDetail', id: node.id, + content: node.content, })} onClick={() => analytics.trackEvent('click_feed', { diff --git a/src/views/User/Tags/UserTags.tsx b/src/views/User/Tags/UserTags.tsx index f7a6f4b469..878036a5a6 100644 --- a/src/views/User/Tags/UserTags.tsx +++ b/src/views/User/Tags/UserTags.tsx @@ -156,6 +156,7 @@ const UserTags = () => { {...toPath({ page: 'tagDetail', id: node.id, + content: node.content, })} onClick={() => analytics.trackEvent('click_feed', { From e78a8b6f221987d6b8742e78f5b58662b0f9d2da Mon Sep 17 00:00:00 2001 From: 49659410+tx0c <> Date: Mon, 25 Jul 2022 14:36:43 +0000 Subject: [PATCH 074/122] feat(track-exp): add delay_msecs to track delays of exposure events for both CardExposure and TagExposure --- src/common/utils/analytics.ts | 2 ++ src/components/Analytics/CardExposureTracker/index.tsx | 1 + src/components/Analytics/TagExposureTracker/index.tsx | 3 +++ 3 files changed, 6 insertions(+) diff --git a/src/common/utils/analytics.ts b/src/common/utils/analytics.ts index 3d5783abb2..87266dd1d5 100644 --- a/src/common/utils/analytics.ts +++ b/src/common/utils/analytics.ts @@ -144,11 +144,13 @@ interface CardExposureProp { feedType: FeedType contentType: ContentType | ActivityType location: number | string + delay_msecs?: number } interface TagExposureProp { id: string location: number | string + delay_msecs?: number } // content type diff --git a/src/components/Analytics/CardExposureTracker/index.tsx b/src/components/Analytics/CardExposureTracker/index.tsx index 332c5a6cd2..451d40164c 100644 --- a/src/components/Analytics/CardExposureTracker/index.tsx +++ b/src/components/Analytics/CardExposureTracker/index.tsx @@ -35,6 +35,7 @@ export const CardExposureTracker = ({ contentType, location, id, + delay_msecs: window?.performance.now() ?? -1, }) setRecorded(true) }, 500) diff --git a/src/components/Analytics/TagExposureTracker/index.tsx b/src/components/Analytics/TagExposureTracker/index.tsx index 5ceccfa267..d0fe70a956 100644 --- a/src/components/Analytics/TagExposureTracker/index.tsx +++ b/src/components/Analytics/TagExposureTracker/index.tsx @@ -29,6 +29,9 @@ export const TagExposureTracker = ({ analytics.trackEvent('tag_exposure', { location, id, + + // performance.now() = Date.now() - performance.timing.navigationStart + delay_msecs: window?.performance.now() ?? -1, }) setRecorded(true) }, 500) From 6c50e9312efca819dde0ab37e92c3ff57d67a118 Mon Sep 17 00:00:00 2001 From: 49659410+tx0c <> Date: Tue, 2 Aug 2022 11:22:23 +0000 Subject: [PATCH 075/122] fix(tag-id-slug): use pass-in tagId instead of from router.query in tag maintainers manage dialogs --- src/components/Dialogs/TagAdoptionDialog/index.tsx | 9 +++++---- src/components/Dialogs/TagEditorDialog/index.tsx | 13 +++++++++---- src/components/Dialogs/TagLeaveDialog/index.tsx | 11 ++++++----- .../Buttons/AddButton/CreateDraftMenuItem/index.tsx | 5 +++-- src/views/TagDetail/Buttons/AddButton/index.tsx | 5 +++-- src/views/TagDetail/Community/Maintainers/index.tsx | 9 ++++----- src/views/TagDetail/DropdownActions/index.tsx | 10 ++++++---- src/views/TagDetail/Owner/index.tsx | 7 ++++--- 8 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/components/Dialogs/TagAdoptionDialog/index.tsx b/src/components/Dialogs/TagAdoptionDialog/index.tsx index bd0376dabc..1c6fa4b6b6 100644 --- a/src/components/Dialogs/TagAdoptionDialog/index.tsx +++ b/src/components/Dialogs/TagAdoptionDialog/index.tsx @@ -3,7 +3,7 @@ import { Translate, useDialogSwitch, useMutation, - useRoute, + // useRoute, } from '~/components' import UPDATE_TAG_SETTING from '~/components/GQL/mutations/updateTagSetting' @@ -12,6 +12,7 @@ import { ADD_TOAST } from '~/common/enums' import { UpdateTagSetting } from '~/components/GQL/mutations/__generated__/UpdateTagSetting' interface Props { + id: string children: ({ openDialog }: { openDialog: () => void }) => React.ReactNode } @@ -30,11 +31,11 @@ const textEn = ' You can set the cover and description of the tag, and add works to selected feed. ' + ' You can use it for writing collection, curation, or subcommunity and group discussions, be creative and discover new usages!' -const BaseDialog = ({ children }: Props) => { +const BaseDialog = ({ id, children }: Props) => { const { show, openDialog, closeDialog } = useDialogSwitch(true) - const { getQuery } = useRoute() - const id = getQuery('tagId') + // const { getQuery } = useRoute() + // const id = getQuery('tagId') const [update, { loading }] = useMutation(UPDATE_TAG_SETTING) diff --git a/src/components/Dialogs/TagEditorDialog/index.tsx b/src/components/Dialogs/TagEditorDialog/index.tsx index 1f8990e511..747445e374 100644 --- a/src/components/Dialogs/TagEditorDialog/index.tsx +++ b/src/components/Dialogs/TagEditorDialog/index.tsx @@ -1,6 +1,10 @@ import { useState } from 'react' -import { Dialog, useDialogSwitch, useRoute, useStep } from '~/components' +import { + Dialog, + useDialogSwitch, // useRoute, + useStep, +} from '~/components' import TagEditorList from './List' import TagRemoveEditor from './Remove' @@ -22,10 +26,11 @@ import { TagMaintainers_node_Tag_editors as TagEditor } from '~/components/GQL/q type Step = 'list' | 'add' | 'remove' interface Props { + id: string children: ({ openDialog }: { openDialog: () => void }) => React.ReactNode } -const BaseDialog = ({ children }: Props) => { +const BaseDialog = ({ id, children }: Props) => { const defaultStep = 'list' const { @@ -44,8 +49,8 @@ const BaseDialog = ({ children }: Props) => { baseOpenDialog() } - const { getQuery } = useRoute() - const id = getQuery('tagId') + // const { getQuery } = useRoute() + // const id = getQuery('tagId') const isAdd = currStep === 'add' const isList = currStep === 'list' diff --git a/src/components/Dialogs/TagLeaveDialog/index.tsx b/src/components/Dialogs/TagLeaveDialog/index.tsx index 135f92872b..3add76c805 100644 --- a/src/components/Dialogs/TagLeaveDialog/index.tsx +++ b/src/components/Dialogs/TagLeaveDialog/index.tsx @@ -3,7 +3,7 @@ import { Translate, useDialogSwitch, useMutation, - useRoute, + // useRoute, } from '~/components' import UPDATE_TAG_SETTING from '~/components/GQL/mutations/updateTagSetting' @@ -12,15 +12,16 @@ import { ADD_TOAST } from '~/common/enums' import { UpdateTagSetting } from '~/components/GQL/mutations/__generated__/UpdateTagSetting' interface Props { - children: ({ openDialog }: { openDialog: () => void }) => React.ReactNode + id: string isOwner?: boolean + children: ({ openDialog }: { openDialog: () => void }) => React.ReactNode } -const BaseDialog = ({ children, isOwner }: Props) => { +const BaseDialog = ({ id, isOwner, children }: Props) => { const { show, openDialog, closeDialog } = useDialogSwitch(true) - const { getQuery } = useRoute() - const id = getQuery('tagId') + // const { getQuery } = useRoute() + // const id = getQuery('tagId') const [update, { loading }] = useMutation(UPDATE_TAG_SETTING) diff --git a/src/views/TagDetail/Buttons/AddButton/CreateDraftMenuItem/index.tsx b/src/views/TagDetail/Buttons/AddButton/CreateDraftMenuItem/index.tsx index c3b6ba723b..de65e0451b 100644 --- a/src/views/TagDetail/Buttons/AddButton/CreateDraftMenuItem/index.tsx +++ b/src/views/TagDetail/Buttons/AddButton/CreateDraftMenuItem/index.tsx @@ -16,10 +16,11 @@ import { ADD_TOAST, OPEN_LIKE_COIN_DIALOG } from '~/common/enums' import { analytics, toPath, translate } from '~/common/utils' import { CreateDraft } from '~/components/GQL/mutations/__generated__/CreateDraft' -import { TagDetailPublic_node_Tag } from '../../../__generated__/TagDetailPublic' +// import { TagDetailPublic_node_Tag } from '../../../__generated__/TagDetailPublic' +import { TagFragment } from '../../../__generated__/TagFragment' interface CreateDraftButtonProps { - tag: TagDetailPublic_node_Tag + tag: TagFragment // TagDetailPublic_node_Tag } const BaseCreateDraftButton = ({ onClick }: { onClick: () => any }) => ( diff --git a/src/views/TagDetail/Buttons/AddButton/index.tsx b/src/views/TagDetail/Buttons/AddButton/index.tsx index c37a85491d..afabccf9c8 100644 --- a/src/views/TagDetail/Buttons/AddButton/index.tsx +++ b/src/views/TagDetail/Buttons/AddButton/index.tsx @@ -23,10 +23,11 @@ import AddMyArticlesButton from './AddMyArticlesButton' import CreateDraftMenuItem from './CreateDraftMenuItem' import { AddArticlesTags } from '~/components/GQL/mutations/__generated__/AddArticlesTags' -import { TagDetailPublic_node_Tag } from '../../__generated__/TagDetailPublic' +// import { TagDetailPublic_node_Tag } from '../../__generated__/TagDetailPublic' +import { TagFragment } from '../../__generated__/TagFragment' interface DropdownActionsProps { - tag: TagDetailPublic_node_Tag + tag: TagFragment // TagDetailPublic_node_Tag } interface DialogProps { diff --git a/src/views/TagDetail/Community/Maintainers/index.tsx b/src/views/TagDetail/Community/Maintainers/index.tsx index 02e7139f0f..a1a0412e98 100644 --- a/src/views/TagDetail/Community/Maintainers/index.tsx +++ b/src/views/TagDetail/Community/Maintainers/index.tsx @@ -18,13 +18,12 @@ import { TagMaintainers } from '~/components/GQL/queries/__generated__/TagMainta interface Props { id: string - - isOwner: boolean + isOwner?: boolean } -const ManageButton = () => { +const ManageButton = ({ id }: Props) => { return ( - + {({ openDialog }) => (
{isOwner && (
- +
)}
diff --git a/src/views/TagDetail/DropdownActions/index.tsx b/src/views/TagDetail/DropdownActions/index.tsx index 790b31ff3d..9f3b810054 100644 --- a/src/views/TagDetail/DropdownActions/index.tsx +++ b/src/views/TagDetail/DropdownActions/index.tsx @@ -31,13 +31,15 @@ import { translate } from '~/common/utils' import styles from './styles.css' import { AddArticlesTags } from '~/components/GQL/mutations/__generated__/AddArticlesTags' -import { TagDetailPublic_node_Tag } from '../__generated__/TagDetailPublic' +// import { TagDetailPublic_node_Tag } from '../__generated__/TagDetailPublic' +import { TagFragment } from '../__generated__/TagFragment' interface DropdownActionsProps { + // id: string isOwner: boolean isEditor: boolean isMaintainer: boolean - tag: TagDetailPublic_node_Tag + tag: TagFragment // TagDetailPublic_node_Tag } interface DialogProps { @@ -227,9 +229,9 @@ const DropdownActions = (props: DropdownActionsProps) => { saving={loading} > {({ openDialog: openTagAddSelectedArticlesDialog }) => ( - + {({ openDialog: openTagLeaveDialog }) => ( - + {({ openDialog: openTagEditorDialog }) => ( { +const Owner = ({ tag }: { tag: TagFragment }) => { const viewer = useContext(ViewerContext) const forbid = () => { @@ -52,7 +53,7 @@ const Owner = ({ tag }: { tag: TagDetailPublic_node_Tag }) => {
- + {({ openDialog }) => (
) } -CircleCommentNotice.fragments = { +CircleReplyNotice.fragments = { notice: gql` - fragment CircleCommentNotice on CircleNotice { + fragment CircleReplyNotice on CircleNotice { id ...NoticeDate actors { @@ -130,4 +124,4 @@ CircleCommentNotice.fragments = { `, } -export default CircleCommentNotice +export default CircleReplyNotice diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index 6c5a8deafb..032cc3fb66 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -1,8 +1,8 @@ import gql from 'graphql-tag' -import CircleCommentNotice from './CircleCommentNotice' import CircleInvitationNotice from './CircleInvitationNotice' import CircleNewUserNotice from './CircleNewUserNotice' +import CircleReplyNotice from './CircleReplyNotice' import { CircleNotice as NoticeType } from './__generated__/CircleNotice' @@ -17,63 +17,45 @@ const CircleNotice = ({ notice }: { notice: NoticeType }) => { return case 'CircleInvitation': return - case 'CircleNewDiscussion': - return ( - - ) - case 'CircleNewBroadcast': + + case 'CircleMemberNewBroadcastReply': return ( - + ) case 'CircleMemberNewDiscussion': return ( - ) case 'CircleMemberNewDiscussionReply': return ( - ) - case 'CircleMemberNewBroadcastReply': - return ( - - ) - case 'InCircleNewArticle': - return ( - - ) - case 'InCircleNewBroadcast': - return ( - - ) case 'InCircleNewBroadcastReply': return ( - ) case 'InCircleNewDiscussion': return ( - ) case 'InCircleNewDiscussionReply': return ( - @@ -92,11 +74,11 @@ CircleNotice.fragments = { circleNoticeType: type ...CircleNewUserNotice ...CircleInvitationNotice - ...CircleCommentNotice + ...CircleReplyNotice } ${CircleNewUserNotice.fragments.notice} ${CircleInvitationNotice.fragments.notice} - ${CircleCommentNotice.fragments.notice} + ${CircleReplyNotice.fragments.notice} `, } diff --git a/src/components/Notice/CommentNotice/CircleBroadcastMentionedYouNotice.tsx b/src/components/Notice/CommentNotice/CircleBroadcastMentionedYouNotice.tsx new file mode 100644 index 0000000000..f8f963f709 --- /dev/null +++ b/src/components/Notice/CommentNotice/CircleBroadcastMentionedYouNotice.tsx @@ -0,0 +1,84 @@ +import gql from 'graphql-tag' + +import { Translate } from '~/components' + +import NoticeActorAvatar from '../NoticeActorAvatar' +import NoticeActorName from '../NoticeActorName' +import NoticeArticleTitle from '../NoticeArticleTitle' +import NoticeCircleName from '../NoticeCircleName' +import NoticeComment from '../NoticeComment' +import NoticeDate from '../NoticeDate' +import NoticeHead from '../NoticeHead' +import styles from '../styles.css' + +import { CircleBroadcastMentionedYouNotice as NoticeType } from './__generated__/CircleBroadcastMentionedYouNotice' + +const CircleBroadcastMentionedYouNotice = ({ + notice, +}: { + notice: NoticeType +}) => { + if (!notice.actors) { + return null + } + + const actor = notice.actors[0] + const commentCircle = + notice.comment?.node.__typename === 'Circle' ? notice.comment.node : null + + return ( +
+
+ +
+ +
+ + + + + + + + + + +
+ + +
+ ) +} + +CircleBroadcastMentionedYouNotice.fragments = { + notice: gql` + fragment CircleBroadcastMentionedYouNotice on CommentNotice { + id + ...NoticeDate + actors { + ...NoticeActorAvatarUser + ...NoticeActorNameUser + } + comment: target { + ...NoticeComment + node { + ... on Circle { + ...NoticeCircleName + } + } + } + } + ${NoticeActorAvatar.fragments.user} + ${NoticeActorName.fragments.user} + ${NoticeArticleTitle.fragments.article} + ${NoticeCircleName.fragments.circle} + ${NoticeComment.fragments.comment} + ${NoticeDate.fragments.notice} + `, +} + +export default CircleBroadcastMentionedYouNotice diff --git a/src/components/Notice/CommentNotice/CircleDiscussionMentionedYouNotice.tsx b/src/components/Notice/CommentNotice/CircleDiscussionMentionedYouNotice.tsx new file mode 100644 index 0000000000..21969d48d3 --- /dev/null +++ b/src/components/Notice/CommentNotice/CircleDiscussionMentionedYouNotice.tsx @@ -0,0 +1,84 @@ +import gql from 'graphql-tag' + +import { Translate } from '~/components' + +import NoticeActorAvatar from '../NoticeActorAvatar' +import NoticeActorName from '../NoticeActorName' +import NoticeArticleTitle from '../NoticeArticleTitle' +import NoticeCircleName from '../NoticeCircleName' +import NoticeComment from '../NoticeComment' +import NoticeDate from '../NoticeDate' +import NoticeHead from '../NoticeHead' +import styles from '../styles.css' + +import { CircleDiscussionMentionedYouNotice as NoticeType } from './__generated__/CircleDiscussionMentionedYouNotice' + +const CircleDiscussionMentionedYouNotice = ({ + notice, +}: { + notice: NoticeType +}) => { + if (!notice.actors) { + return null + } + + const actor = notice.actors[0] + const commentCircle = + notice.comment?.node.__typename === 'Circle' ? notice.comment.node : null + + return ( +
+
+ +
+ +
+ + + + + + + + + + +
+ + +
+ ) +} + +CircleDiscussionMentionedYouNotice.fragments = { + notice: gql` + fragment CircleDiscussionMentionedYouNotice on CommentNotice { + id + ...NoticeDate + actors { + ...NoticeActorAvatarUser + ...NoticeActorNameUser + } + comment: target { + ...NoticeComment + node { + ... on Circle { + ...NoticeCircleName + } + } + } + } + ${NoticeActorAvatar.fragments.user} + ${NoticeActorName.fragments.user} + ${NoticeArticleTitle.fragments.article} + ${NoticeCircleName.fragments.circle} + ${NoticeComment.fragments.comment} + ${NoticeDate.fragments.notice} + `, +} + +export default CircleDiscussionMentionedYouNotice diff --git a/src/components/Notice/CommentNotice/index.tsx b/src/components/Notice/CommentNotice/index.tsx index ec3cca306f..ba1e94d123 100644 --- a/src/components/Notice/CommentNotice/index.tsx +++ b/src/components/Notice/CommentNotice/index.tsx @@ -1,8 +1,9 @@ import gql from 'graphql-tag' import ArticleNewCommentNotice from './ArticleNewCommentNotice' +import CircleBroadcastMentionedYouNotice from './CircleBroadcastMentionedYouNotice' +import CircleDiscussionMentionedYouNotice from './CircleDiscussionMentionedYouNotice' import CircleNewBroadcastNotice from './CircleNewBroadcastNotice' -import CircleNewDiscussionNotice from './CircleNewDiscussionNotice' import CommentMentionedYouNotice from './CommentMentionedYouNotice' import CommentPinnedNotice from './CommentPinnedNotice' import SubscribedArticleNewCommentNotice from './SubscribedArticleNewCommentNotice' @@ -21,8 +22,10 @@ const CommentNotice = ({ notice }: { notice: NoticeType }) => { return case 'CircleNewBroadcast': return - case 'CircleNewDiscussion': - return + case 'CircleBroadcastMentionedYou': + return + case 'CircleDiscussionMentionedYou': + return default: return null } @@ -40,14 +43,16 @@ CommentNotice.fragments = { ...ArticleNewCommentNotice ...SubscribedArticleNewCommentNotice ...CircleNewBroadcastNotice - ...CircleNewDiscussionNotice + ...CircleBroadcastMentionedYouNotice + ...CircleDiscussionMentionedYouNotice } ${CommentMentionedYouNotice.fragments.notice} ${CommentPinnedNotice.fragments.notice} ${ArticleNewCommentNotice.fragments.notice} ${SubscribedArticleNewCommentNotice.fragments.notice} ${CircleNewBroadcastNotice.fragments.notice} - ${CircleNewDiscussionNotice.fragments.notice} + ${CircleBroadcastMentionedYouNotice.fragments.notice} + ${CircleDiscussionMentionedYouNotice.fragments.notice} `, } From 07457a513d74efaca203b362bf21012b6d53651a Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Thu, 11 Aug 2022 16:27:45 +0800 Subject: [PATCH 087/122] code format --- .../Notice/CircleNotice/CircleReplyNotice.tsx | 17 +++++++---------- src/components/Notice/CircleNotice/index.tsx | 5 +---- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx index f9858afae1..489d257600 100644 --- a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx @@ -19,18 +19,15 @@ import { CircleReplyNotice as NoticeType } from './__generated__/CircleReplyNoti type CircleReplyNoticeType = { notice: NoticeType noticeType: - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } -const CircleReplyNotice = ({ - notice, - noticeType, -}: CircleReplyNoticeType) => { +const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { if (!notice.actors) { return null } diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index 032cc3fb66..9181be9c35 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -48,10 +48,7 @@ const CircleNotice = ({ notice }: { notice: NoticeType }) => { ) case 'InCircleNewDiscussion': return ( - + ) case 'InCircleNewDiscussionReply': return ( From dac631621928553b5a35fe23b2268a002028aaf1 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:23:45 +0800 Subject: [PATCH 088/122] feat: deprecate web push notification --- next.config.js | 6 - public/firebase-messaging-sw-develop.js | 15 - public/firebase-messaging-sw-production.js | 15 - public/static/manifest.json | 1 - src/common/enums/oauth.ts | 6 - src/common/enums/text.ts | 4 - src/common/utils/index.ts | 1 - src/common/utils/push.tsx | 300 ------------------ src/common/utils/types/index.ts | 3 - src/components/Buttons/Bookmark/Subscribe.tsx | 30 +- .../CommentFormDialog/CommentForm/index.tsx | 21 +- .../GlobalDialogs/TermAlertDialog/index.tsx | 8 +- src/components/Layout/NavMenu/Bottom.tsx | 8 +- src/components/PushInitializer/index.tsx | 20 -- src/components/Root/index.tsx | 5 - .../Me/Settings/Notification/Preference.tsx | 53 ---- 16 files changed, 5 insertions(+), 491 deletions(-) delete mode 100644 public/firebase-messaging-sw-develop.js delete mode 100644 public/firebase-messaging-sw-production.js delete mode 100644 src/common/utils/push.tsx delete mode 100644 src/components/PushInitializer/index.tsx diff --git a/next.config.js b/next.config.js index f43a96ce8a..722025db3d 100644 --- a/next.config.js +++ b/next.config.js @@ -14,10 +14,6 @@ const isProd = process.env.NEXT_PUBLIC_RUNTIME_ENV === 'production' const isStatic = process.env.NEXT_PUBLIC_BUILD_TYPE === 'static' const nextAssetDomain = process.env.NEXT_PUBLIC_NEXT_ASSET_DOMAIN || '' -const URL_PUSH_SW = isProd - ? './firebase-messaging-sw-production.js' - : './firebase-messaging-sw-develop.js' - const nextConfig = { /** * Build time configs @@ -128,8 +124,6 @@ if (!isStatic) { // FIXME: https://github.com/hanford/next-offline/issues/195 generateInDevMode: false, workboxOpts: { - // https://github.com/hanford/next-offline/issues/35 - importScripts: [URL_PUSH_SW], swDest: '../public/service-worker.js', runtimeCaching: [ { diff --git a/public/firebase-messaging-sw-develop.js b/public/firebase-messaging-sw-develop.js deleted file mode 100644 index fca49f4bed..0000000000 --- a/public/firebase-messaging-sw-develop.js +++ /dev/null @@ -1,15 +0,0 @@ -// ref: https://github.com/firebase/quickstart-js/blob/master/messaging/firebase-messaging-sw.js - -// Import and configure the Firebase SDK -importScripts('https://www.gstatic.com/firebasejs/7.2.3/firebase-app.js'); -importScripts('https://www.gstatic.com/firebasejs/7.2.3/firebase-messaging.js'); - -// Initialize the Firebase app in the service worker by passing in the -// messagingSenderId. -firebase.initializeApp({ - 'messagingSenderId': '315393900359' -}); - -// Retrieve an instance of Firebase Messaging so that it can handle background -// messages. -const messaging = firebase.messaging(); diff --git a/public/firebase-messaging-sw-production.js b/public/firebase-messaging-sw-production.js deleted file mode 100644 index f983b91a20..0000000000 --- a/public/firebase-messaging-sw-production.js +++ /dev/null @@ -1,15 +0,0 @@ -// ref: https://github.com/firebase/quickstart-js/blob/master/messaging/firebase-messaging-sw.js - -// Import and configure the Firebase SDK -importScripts('https://www.gstatic.com/firebasejs/7.2.3/firebase-app.js'); -importScripts('https://www.gstatic.com/firebasejs/7.2.3/firebase-messaging.js'); - -// Initialize the Firebase app in the service worker by passing in the -// messagingSenderId. -firebase.initializeApp({ - 'messagingSenderId': '717135072570' -}); - -// Retrieve an instance of Firebase Messaging so that it can handle background -// messages. -const messaging = firebase.messaging(); diff --git a/public/static/manifest.json b/public/static/manifest.json index 1caab75b87..62578fbe0a 100644 --- a/public/static/manifest.json +++ b/public/static/manifest.json @@ -3,7 +3,6 @@ "background_color": "#ffffff", "description": "Matters 致力搭建去中心化的寫作社群與內容生態。基於 IPFS 技術,令創作不受制於任何平台,獨立性得到保障;引入加密貨幣,以收入的形式回饋給作者;代碼開源,建立創作者自治社區。", "display": "standalone", - "gcm_sender_id": "103953800507", "icons": [ { "sizes": "72x72", diff --git a/src/common/enums/oauth.ts b/src/common/enums/oauth.ts index 59340d2c0b..39230e55bc 100644 --- a/src/common/enums/oauth.ts +++ b/src/common/enums/oauth.ts @@ -183,12 +183,6 @@ export const OAUTH_SCOPE_TREE = { zh_hans: '封锁用户', }, }, - toggleSubscribePush: { - _t: { - zh_hant: '修改推送通知設定', - zh_hans: '修改推送通知设定', - }, - }, migration: { _t: { zh_hant: '導入作品', diff --git a/src/common/enums/text.ts b/src/common/enums/text.ts index 90acdd3643..19493b11c9 100644 --- a/src/common/enums/text.ts +++ b/src/common/enums/text.ts @@ -244,7 +244,6 @@ export const TEXT = { publishToISCN: '註冊 ISCN', publishToISCNHint_1: '發布時註冊 ', publishToISCNHint_2: ',費用 ≈1 LIKE,推廣期由平台補助', - pushDescription: '別錯過精彩討論和最新消息,快點開啓推送吧!', putComment: '發布評論', QUERY_FIELD_NOT_FOUND: '要查詢的數據不存在', RATE_LIMIT_EXCEEDED: '操作過於頻繁,請稍候重試', @@ -609,7 +608,6 @@ export const TEXT = { publishToISCN: '註冊 ISCN', publishToISCNHint_1: '发布时註冊 ', publishToISCNHint_2: ',费用 ≈1 LIKE,推广期由平台补助', - pushDescription: '别错过精彩讨论和最新消息,快点开启推送吧!', putComment: '发布评论', QUERY_FIELD_NOT_FOUND: '要查询的数据不存在', RATE_LIMIT_EXCEEDED: '操作过于频繁,请稍候重试', @@ -996,8 +994,6 @@ export const TEXT = { publishToISCNHint_1: 'The cost of ', publishToISCNHint_2: ' registration is about 1 LIKE. During promotion period it is sponsored by Matters.News.', - pushDescription: - 'Turn on notifications to receive latest news and discussions.', putComment: 'Comment', QUERY_FIELD_NOT_FOUND: 'Query not found', RATE_LIMIT_EXCEEDED: 'Operation too frequent, please try again later.', diff --git a/src/common/utils/index.ts b/src/common/utils/index.ts index bd459d8f41..7d0ddc531d 100644 --- a/src/common/utils/index.ts +++ b/src/common/utils/index.ts @@ -19,7 +19,6 @@ export * from './browser' export * from './response' export * from './oauth' export * from './form' -export * from './push' export * from './payment' export * from './firebase' export * from './cookie' diff --git a/src/common/utils/push.tsx b/src/common/utils/push.tsx deleted file mode 100644 index 5a31078f82..0000000000 --- a/src/common/utils/push.tsx +++ /dev/null @@ -1,300 +0,0 @@ -import ApolloClient from 'apollo-client' -import gql from 'graphql-tag' - -import { Translate, Viewer } from '~/components' - -import { ADD_TOAST, STORAGE_KEY_PUSH } from '~/common/enums' -import { initializeFirebase, storage } from '~/common/utils' - -import { ToggleSubscribePush } from './__generated__/ToggleSubscribePush' - -const isProd = process.env.NEXT_PUBLIC_RUNTIME_ENV === 'production' - -const TOGGLE_SUBSCRIBE_PUSH = gql` - mutation ToggleSubscribePush($id: ID!, $enabled: Boolean!) { - toggleSubscribePush(input: { id: $id, enabled: $enabled }) { - id - } - } -` - -let cachedClient: ApolloClient | null = null - -export const initializePush = async ({ - client, - viewer, -}: { - client: ApolloClient - viewer: Viewer -}) => { - if (!isProd) { - return - } - - const firebase = await initializeFirebase() - await import('firebase/messaging') - - cachedClient = client - - if (firebase?.messaging.isSupported()) { - client.writeData({ - id: 'ClientPreference:local', - data: { - push: { - supported: true, - __typename: 'Push', - }, - }, - }) - } else { - return - } - - // Init FCM - const messaging = firebase.messaging() - messaging.usePublicVapidKey(process.env.NEXT_PUBLIC_FCM_VAPID_KEY || '') - - // Register our custom path service worker - const registration = await window.navigator.serviceWorker.register( - '/service-worker.js' - ) - console.log('[Push] SW registered: ', registration) - messaging.useServiceWorker(registration) - - // Handle incoming messages. Called when: - // - a message is received while the app has focus - // - the user clicks on an app notification created by a service worker - // `messaging.setBackgroundMessageHandler` handler. - messaging.onMessage((payload) => { - console.log('[Push] Message received. ', payload) - // ... - }) - - // Callback fired if Instance ID token is updated. - messaging.onTokenRefresh(async () => { - await unsubscribePush() - await subscribePush({ silent: true }) - }) - - /** - * Init push setting in local - */ - const push = storage.get(STORAGE_KEY_PUSH) || {} - const isViewerPush = viewer.id === push.userId - const isNotificationGranted = - window.Notification && Notification.permission === 'granted' - - if (!viewer.isAuthed || !isNotificationGranted) { - return - } - - if (!isViewerPush) { - await unsubscribePush() - } - - client.writeData({ - id: 'ClientPreference:local', - data: { - push: { - enabled: (isViewerPush && push.enabled) || false, - __typename: 'Push', - }, - }, - }) -} - -export const subscribePush = async (options?: { silent?: boolean }) => { - const { silent } = options || { silent: false } - - // Request token - if (!silent) { - await requestPermission() - } - - let token - try { - token = await getToken() - } catch (e) { - if (!silent) { - window.dispatchEvent( - new CustomEvent(ADD_TOAST, { - detail: { - color: 'red', - content: ( - - ), - }, - }) - ) - } - } - - if (!token) { - return - } - - if (!cachedClient) { - throw new Error('[Push] `cachedClient` is required') - } - - try { - // Send to server - const { data } = await cachedClient.mutate({ - mutation: TOGGLE_SUBSCRIBE_PUSH, - variables: { id: token, enabled: true }, - }) - - // Update local state - cachedClient.writeData({ - id: 'ClientPreference:local', - data: { - push: { - enabled: true, - __typename: 'Push', - }, - }, - }) - storage.set(STORAGE_KEY_PUSH, { - userId: data?.toggleSubscribePush?.id, - enabled: true, - token, - }) - - if (!silent) { - window.dispatchEvent( - new CustomEvent(ADD_TOAST, { - detail: { - color: 'green', - content: ( - - ), - }, - }) - ) - } - } catch (e) { - if (!silent) { - window.dispatchEvent( - new CustomEvent(ADD_TOAST, { - detail: { - color: 'red', - content: ( - - ), - }, - }) - ) - console.error('[Push] Failed to subscribe push', e) - } - } - - console.log('[Push] Subscribed') -} - -export const unsubscribePush = async () => { - const firebase = await import('firebase/app') - const messaging = firebase.messaging() - - let token - try { - token = await getToken() - } catch (e) { - console.error('[Push] Failed to getToken', e) - } - - // Unsubscribe from Firebase - if (token) { - try { - await messaging.deleteToken(token) - } catch (e) { - console.error('[Push] Failed to deleteToken in local', e) - } - } - - // Update local state - storage.remove(STORAGE_KEY_PUSH) - - if (!cachedClient) { - return - } - - cachedClient.writeData({ - id: 'ClientPreference:local', - data: { - push: { - enabled: false, - __typename: 'Push', - }, - }, - }) - - // Unsubscribe from our server - if (token) { - try { - await cachedClient.mutate({ - mutation: TOGGLE_SUBSCRIBE_PUSH, - variables: { id: token, enabled: false }, - }) - } catch (e) { - console.error('[Push] Failed to unsubscribe from server', e) - } - } - - console.log('[Push] Unsubscribed') -} - -// Get Instance ID token. Initially this makes a network call, once retrieved -// subsequent calls to getToken will return from cache. -const getToken = async () => { - const firebase = await import('firebase/app') - const messaging = firebase.messaging() - - try { - const token = await messaging.getToken() - if (token) { - console.log('[Push] Token: ', token) - return token - } else { - console.log( - '[Push] No Instance ID token available. Request permission to generate one.' - ) - } - } catch (e) { - console.error('[Push] An error occurred while retrieving token. ', e) - throw e - } -} - -const requestPermission = async () => { - const permission = await Notification.requestPermission() - - if (permission === 'granted') { - console.log('[Push] Notification permission granted.') - } else { - console.log('[Push] Unable to get permission to notify.') - window.dispatchEvent( - new CustomEvent(ADD_TOAST, { - detail: { - color: 'red', - content: ( - - ), - }, - }) - ) - throw new Error('[Push] Need to grant permission') - } -} diff --git a/src/common/utils/types/index.ts b/src/common/utils/types/index.ts index cc31dfbc7b..7e256e713e 100644 --- a/src/common/utils/types/index.ts +++ b/src/common/utils/types/index.ts @@ -30,9 +30,6 @@ export default gql` "Login or sign up wall in article detail page" wall: Boolean! - "Whether push notification is supported/enabled" - push: Push! - "Log route history for page back button" routeHistory: [String!] diff --git a/src/components/Buttons/Bookmark/Subscribe.tsx b/src/components/Buttons/Bookmark/Subscribe.tsx index f076134155..0eab5bd675 100644 --- a/src/components/Buttons/Bookmark/Subscribe.tsx +++ b/src/components/Buttons/Bookmark/Subscribe.tsx @@ -1,4 +1,3 @@ -import { useQuery } from '@apollo/react-hooks' import { useContext } from 'react' import { @@ -10,15 +9,13 @@ import { useMutation, ViewerContext, } from '~/components' -import CLIENT_PREFERENCE from '~/components/GQL/queries/clientPreference' import { ADD_TOAST } from '~/common/enums' -import { subscribePush, translate } from '~/common/utils' +import { translate } from '~/common/utils' import TOGGLE_SUBSCRIBE_ARTICLE from '../../GQL/mutations/toggleSubscribeArticle' import { ToggleSubscribeArticle } from '~/components/GQL/mutations/__generated__/ToggleSubscribeArticle' -import { ClientPreference } from '~/components/GQL/queries/__generated__/ClientPreference' interface SubscribeProps { articleId?: string @@ -46,10 +43,6 @@ const Subscribe = ({ articleId, size, disabled, inCard }: SubscribeProps) => { : undefined, } ) - const { data } = useQuery(CLIENT_PREFERENCE, { - variables: { id: 'local' }, - }) - const push = data?.clientPreference.push const onClick = async () => { if (viewer.isFrozen) { @@ -65,27 +58,6 @@ const Subscribe = ({ articleId, size, disabled, inCard }: SubscribeProps) => { } await subscribe() - - // skip - if (!push || !push.supported || push.enabled || !viewer.isAuthed) { - return - } - - // show toast to subscribe push - window.dispatchEvent( - new CustomEvent(ADD_TOAST, { - detail: { - color: 'green', - content: , - customButton: ( - - ), - buttonPlacement: 'center', - }, - }) - ) } return ( diff --git a/src/components/Dialogs/CommentFormDialog/CommentForm/index.tsx b/src/components/Dialogs/CommentFormDialog/CommentForm/index.tsx index ac0bdc0aed..e20df63e35 100644 --- a/src/components/Dialogs/CommentFormDialog/CommentForm/index.tsx +++ b/src/components/Dialogs/CommentFormDialog/CommentForm/index.tsx @@ -3,7 +3,6 @@ import dynamic from 'next/dynamic' import { useState } from 'react' import { - Button, CommentFormType, Dialog, Spinner, @@ -11,16 +10,14 @@ import { useMutation, } from '~/components' import PUT_COMMENT from '~/components/GQL/mutations/putComment' -import CLIENT_PREFERENCE from '~/components/GQL/queries/clientPreference' import COMMENT_DRAFT from '~/components/GQL/queries/commentDraft' import { ADD_TOAST, COMMENT_TYPE_TEXT, TextId } from '~/common/enums' -import { dom, stripHtml, subscribePush, trimLineBreaks } from '~/common/utils' +import { dom, stripHtml, trimLineBreaks } from '~/common/utils' import styles from './styles.css' import { PutComment } from '~/components/GQL/mutations/__generated__/PutComment' -import { ClientPreference } from '~/components/GQL/queries/__generated__/ClientPreference' import { CommentDraft } from '~/components/GQL/queries/__generated__/CommentDraft' const CommentEditor = dynamic(() => import('~/components/Editor/Comment'), { @@ -69,10 +66,6 @@ const CommentForm: React.FC = ({ variables: { id: commentDraftId }, }) - // retrieve push setting - const { data: clientPreferenceData } = - useQuery(CLIENT_PREFERENCE) - const [putComment] = useMutation(PUT_COMMENT) const [isSubmitting, setSubmitting] = useState(false) const [content, setContent] = useState( @@ -95,9 +88,6 @@ const CommentForm: React.FC = ({ }, } - const push = clientPreferenceData?.clientPreference.push - const skipPushButton = !push || !push.supported || push.enabled - event.preventDefault() setSubmitting(true) @@ -116,18 +106,11 @@ const CommentForm: React.FC = ({ new CustomEvent(ADD_TOAST, { detail: { color: 'green', - content: skipPushButton ? ( + content: ( - ) : ( - - ), - customButton: !skipPushButton && ( - ), buttonPlacement: 'center', }, diff --git a/src/components/GlobalDialogs/TermAlertDialog/index.tsx b/src/components/GlobalDialogs/TermAlertDialog/index.tsx index 97b03abed6..97283cce8b 100644 --- a/src/components/GlobalDialogs/TermAlertDialog/index.tsx +++ b/src/components/GlobalDialogs/TermAlertDialog/index.tsx @@ -14,7 +14,7 @@ import { import USER_LOGOUT from '~/components/GQL/mutations/userLogout' import { ADD_TOAST, STORAGE_KEY_AUTH_TOKEN } from '~/common/enums' -import { storage, unsubscribePush } from '~/common/utils' +import { storage } from '~/common/utils' import styles from './styles.css' @@ -57,12 +57,6 @@ const TermContent: React.FC = ({ closeDialog }) => { }) const onLogout = async () => { - try { - await unsubscribePush() - } catch (e) { - console.error(e) - } - try { await logout().then(() => { storage.remove(STORAGE_KEY_AUTH_TOKEN) diff --git a/src/components/Layout/NavMenu/Bottom.tsx b/src/components/Layout/NavMenu/Bottom.tsx index 1a1ed7ce61..05b2afa860 100644 --- a/src/components/Layout/NavMenu/Bottom.tsx +++ b/src/components/Layout/NavMenu/Bottom.tsx @@ -11,7 +11,7 @@ import { import USER_LOGOUT from '~/components/GQL/mutations/userLogout' import { ADD_TOAST, PATHS, STORAGE_KEY_AUTH_TOKEN } from '~/common/enums' -import { redirectToTarget, storage, unsubscribePush } from '~/common/utils' +import { redirectToTarget, storage } from '~/common/utils' import { UserLogout } from '~/components/GQL/mutations/__generated__/UserLogout' @@ -24,12 +24,6 @@ const NavMenuBottom: React.FC = ({ isInSideDrawerNav }) => { showToast: false, }) const onClickLogout = async () => { - try { - await unsubscribePush() - } catch (e) { - console.error(e) - } - try { await logout().then(() => { storage.remove(STORAGE_KEY_AUTH_TOKEN) diff --git a/src/components/PushInitializer/index.tsx b/src/components/PushInitializer/index.tsx deleted file mode 100644 index a6dace3e2b..0000000000 --- a/src/components/PushInitializer/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import ApolloClient from 'apollo-client' -import { useContext, useEffect } from 'react' - -import { ViewerContext } from '~/components' - -import { initializePush } from '~/common/utils' - -const PushInitializer = ({ client }: { client: ApolloClient }) => { - const viewer = useContext(ViewerContext) - - useEffect(() => { - if (viewer.privateFetched) { - initializePush({ client, viewer }) - } - }, [viewer.privateFetched]) - - return null -} - -export default PushInitializer diff --git a/src/components/Root/index.tsx b/src/components/Root/index.tsx index 6720300693..f28dd03990 100644 --- a/src/components/Root/index.tsx +++ b/src/components/Root/index.tsx @@ -32,10 +32,6 @@ import { } from './__generated__/RootQueryPrivate' import { RootQueryPublic } from './__generated__/RootQueryPublic' -const DynamicPushInitializer = dynamic( - () => import('~/components/PushInitializer'), - { ssr: false } -) const DynamicProgressBar = dynamic(() => import('~/components/ProgressBar'), { ssr: false, }) @@ -169,7 +165,6 @@ const Root = ({ - diff --git a/src/views/Me/Settings/Notification/Preference.tsx b/src/views/Me/Settings/Notification/Preference.tsx index 0018000555..6669211926 100644 --- a/src/views/Me/Settings/Notification/Preference.tsx +++ b/src/views/Me/Settings/Notification/Preference.tsx @@ -1,12 +1,5 @@ -import { useQuery } from '@apollo/react-hooks' -import { useState } from 'react' - import { Form, Switch, Translate } from '~/components' -import CLIENT_PREFERENCE from '~/components/GQL/queries/clientPreference' - -import { subscribePush, unsubscribePush } from '~/common/utils' -import { ClientPreference } from '~/components/GQL/queries/__generated__/ClientPreference' import { ViewerNotificationSettings_viewer_settings_notification } from './__generated__/ViewerNotificationSettings' interface PreferenceProps { @@ -16,56 +9,10 @@ interface PreferenceProps { ) => void } -const PushSwitch = () => { - const [loading, setLoading] = useState(false) - const { data } = useQuery(CLIENT_PREFERENCE, { - variables: { id: 'local' }, - }) - const push = data?.clientPreference.push - - if (!push || !push.supported) { - return null - } - - const onClick = async () => { - setLoading(true) - if (push.enabled) { - await unsubscribePush() - } else { - await subscribePush() - } - setLoading(false) - } - - return ( - - } - subtitle={ - - } - right={ - - } - /> - ) -} - const Preference = ({ settings, toggle }: PreferenceProps) => ( } > - - Date: Fri, 12 Aug 2022 14:09:34 +0800 Subject: [PATCH 089/122] feat: deprecate pwa --- next.config.js | 35 +- package-lock.json | 2254 ++++++++++----------------------------------- package.json | 3 +- 3 files changed, 505 insertions(+), 1787 deletions(-) diff --git a/next.config.js b/next.config.js index 722025db3d..f962145777 100644 --- a/next.config.js +++ b/next.config.js @@ -6,7 +6,6 @@ const withPlugins = require('next-compose-plugins') const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true', }) -const withOffline = require('next-offline') const packageJson = require('./package.json') @@ -115,39 +114,7 @@ let plugins = [ ] if (!isStatic) { - plugins = [ - ...plugins, - // offline - [ - withOffline, - { - // FIXME: https://github.com/hanford/next-offline/issues/195 - generateInDevMode: false, - workboxOpts: { - swDest: '../public/service-worker.js', - runtimeCaching: [ - { - urlPattern: '/', - handler: 'NetworkFirst', - options: { - cacheName: 'homepage-cache', - }, - }, - { - urlPattern: new RegExp('/_next/static/'), - handler: 'CacheFirst', - options: { - cacheName: 'static-cache', - cacheableResponse: { - statuses: [0, 200], - }, - }, - }, - ], - }, - }, - ], - ] + plugins = [...plugins] } module.exports = withPlugins(plugins, nextConfig) diff --git a/package-lock.json b/package-lock.json index 1be22433a1..dc3bd6849c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,6 @@ "lodash": "^4.17.21", "next": "^12.1.4", "next-compose-plugins": "^2.2.1", - "next-offline": "^5.0.5", "next-with-apollo": "^5.3.0", "nprogress": "^0.2.0", "number-precision": "^1.5.1", @@ -159,6 +158,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -171,6 +171,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -347,6 +348,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -376,6 +378,7 @@ "version": "7.18.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "dev": true, "dependencies": { "@babel/types": "^7.18.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -389,6 +392,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -404,7 +408,8 @@ "node_modules/@babel/core/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/@babel/generator": { "version": "7.12.11", @@ -430,6 +435,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -441,6 +447,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, "dependencies": { "@babel/helper-explode-assignable-expression": "^7.10.4", "@babel/types": "^7.10.4" @@ -467,6 +474,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.6", @@ -487,6 +495,7 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "regexpu-core": "^4.7.1" @@ -499,6 +508,7 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/types": "^7.10.5", @@ -559,6 +569,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, "dependencies": { "@babel/types": "^7.12.1" } @@ -590,6 +601,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -612,6 +624,7 @@ "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -630,6 +643,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -649,6 +663,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", @@ -659,6 +674,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-member-expression-to-functions": "^7.18.6", @@ -674,6 +690,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -685,6 +702,7 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -723,6 +741,7 @@ "version": "7.12.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/template": "^7.10.4", @@ -734,6 +753,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "dev": true, "dependencies": { "@babel/template": "^7.18.6", "@babel/traverse": "^7.18.6", @@ -771,6 +791,7 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.12.1", @@ -784,6 +805,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -815,6 +837,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" @@ -843,6 +866,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -855,6 +879,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" @@ -867,6 +892,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -879,6 +905,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" @@ -891,6 +918,7 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -903,6 +931,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", @@ -916,6 +945,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" @@ -928,6 +958,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -944,6 +975,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -956,6 +988,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -971,6 +1004,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -994,6 +1028,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1020,6 +1055,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1046,6 +1082,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1084,6 +1121,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1107,6 +1145,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1118,6 +1157,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1129,6 +1169,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1140,6 +1181,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1151,6 +1193,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1162,6 +1205,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1173,6 +1217,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1199,6 +1244,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1210,6 +1256,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -1223,6 +1270,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1234,6 +1282,7 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1245,6 +1294,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-define-map": "^7.10.4", @@ -1263,6 +1313,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1274,6 +1325,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1285,6 +1337,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1297,6 +1350,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1308,6 +1362,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -1336,6 +1391,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1347,6 +1403,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -1359,6 +1416,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1370,6 +1428,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1381,6 +1440,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -1394,6 +1454,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -1408,6 +1469,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.10.4", "@babel/helper-module-transforms": "^7.12.1", @@ -1423,6 +1485,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1435,6 +1498,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1" }, @@ -1446,6 +1510,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1457,6 +1522,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.12.1" @@ -1469,6 +1535,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1480,6 +1547,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1556,6 +1624,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, @@ -1567,6 +1636,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1648,6 +1718,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1659,6 +1730,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" @@ -1671,6 +1743,7 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1682,6 +1755,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1693,6 +1767,7 @@ "version": "7.12.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1721,6 +1796,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1732,6 +1808,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1744,6 +1821,7 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "dev": true, "dependencies": { "@babel/compat-data": "^7.12.7", "@babel/helper-compilation-targets": "^7.12.5", @@ -1820,6 +1898,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, "bin": { "semver": "bin/semver" } @@ -1845,6 +1924,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -3571,51 +3651,6 @@ "node": ">=6" } }, - "node_modules/@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "deprecated": "Moved to 'npm install @sideway/address'" - }, - "node_modules/@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained" - }, - "node_modules/@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "deprecated": "Switch to 'npm install joi'", - "dependencies": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "node_modules/@hapi/joi/node_modules/@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "deprecated": "This version has been deprecated and is no longer supported or maintained" - }, - "node_modules/@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dependencies": { - "@hapi/hoek": "^8.3.0" - } - }, - "node_modules/@hapi/topo/node_modules/@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "deprecated": "This version has been deprecated and is no longer supported or maintained" - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -7490,52 +7525,6 @@ "zdog": ">=1.0" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", - "dependencies": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.14.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, "node_modules/@samverschueren/stream-to-observable": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", @@ -9959,15 +9948,6 @@ "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@storybook/core-server/node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -11670,24 +11650,6 @@ "postcss-syntax": ">=0.36.2" } }, - "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", - "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", - "dependencies": { - "ejs": "^2.6.1", - "magic-string": "^0.25.0" - } - }, - "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", - "hasInstallScript": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", @@ -12486,7 +12448,8 @@ "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.11", @@ -12867,14 +12830,6 @@ "@types/react": "*" } }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -13572,6 +13527,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -13734,6 +13690,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13749,6 +13706,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, "peerDependencies": { "ajv": ">=5.0.0" } @@ -13757,6 +13715,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -13803,6 +13762,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, "engines": { "node": ">=6" } @@ -14494,7 +14454,8 @@ "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "node_modules/are-we-there-yet": { "version": "2.0.0", @@ -14592,6 +14553,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, "dependencies": { "array-uniq": "^1.0.1" }, @@ -14603,6 +14565,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -14945,17 +14908,6 @@ "follow-redirects": "^1.14.0" } }, - "node_modules/babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "dependencies": { - "babylon": "^6.18.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/babel-jest": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", @@ -15213,13 +15165,13 @@ } }, "node_modules/babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "dependencies": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" }, @@ -15231,32 +15183,6 @@ "webpack": ">=2" } }, - "node_modules/babel-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/babel-plugin-add-react-displayname": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz", @@ -15290,6 +15216,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, "dependencies": { "object.assign": "^4.1.0" } @@ -15572,20 +15499,6 @@ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", "dev": true }, - "node_modules/babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "node_modules/babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dependencies": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, "node_modules/babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", @@ -15654,6 +15567,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -15664,20 +15578,14 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, "hasInstallScript": true }, "node_modules/babel-runtime/node_modules/regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "bin": { - "babylon": "bin/babylon.js" - } + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true }, "node_modules/backo2": { "version": "1.0.2", @@ -15853,6 +15761,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, "engines": { "node": "*" } @@ -15904,7 +15813,8 @@ "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "node_modules/bn.js": { "version": "5.2.1", @@ -16384,17 +16294,6 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -16509,6 +16408,7 @@ "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, "dependencies": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -16531,6 +16431,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -16538,7 +16439,8 @@ "node_modules/cacache/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/cache-base": { "version": "1.0.1", @@ -16958,7 +16860,8 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "node_modules/chrome-trace-event": { "version": "1.0.3", @@ -17668,7 +17571,8 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/commitizen": { "version": "4.2.4", @@ -17797,6 +17701,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true, "engines": { "node": ">=4.0.0" } @@ -17804,7 +17709,8 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "node_modules/component-emitter": { "version": "1.3.0", @@ -17866,6 +17772,7 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, "engines": [ "node >= 0.8" ], @@ -17880,6 +17787,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17894,6 +17802,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -17967,6 +17876,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -17988,6 +17898,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, "dependencies": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -18014,259 +17925,6 @@ "toggle-selection": "^1.0.6" } }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "node_modules/copy-webpack-plugin/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/copy-webpack-plugin/node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "engines": { - "node": ">=4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/copy-webpack-plugin/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-js": { "version": "3.16.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.1.tgz", @@ -18313,7 +17971,8 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -18581,14 +18240,6 @@ "node": "*" } }, - "node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "engines": { - "node": ">=4" - } - }, "node_modules/css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", @@ -19224,7 +18875,8 @@ "node_modules/cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true }, "node_modules/cz-conventional-changelog": { "version": "3.3.0", @@ -20154,6 +19806,7 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -20165,6 +19818,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -20179,6 +19833,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -20307,6 +19962,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "engines": { "node": ">= 4" } @@ -20338,6 +19994,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -20846,15 +20503,11 @@ "node": ">=8.3.0" } }, - "node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -21727,7 +21380,8 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-diff": { "version": "1.1.2", @@ -21859,7 +21513,8 @@ "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true }, "node_modules/figures": { "version": "3.2.0", @@ -22207,6 +21862,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -22216,6 +21872,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22230,6 +21887,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -22604,6 +22262,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -22613,6 +22272,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22627,6 +22287,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -22668,6 +22329,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -22679,6 +22341,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22693,6 +22356,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -22952,6 +22616,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -22985,11 +22650,6 @@ "node": ">=6" } }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -23514,7 +23174,8 @@ "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/graphql": { "version": "14.7.0", @@ -24492,12 +24153,13 @@ "node_modules/iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -24606,6 +24268,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, "engines": { "node": ">=0.8.19" } @@ -24628,7 +24291,8 @@ "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflected": { "version": "2.1.0", @@ -25149,6 +24813,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -25190,6 +24855,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -25234,11 +24900,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -25275,14 +24936,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -25379,14 +25032,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -25575,7 +25220,8 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -29760,7 +29406,8 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify": { "version": "1.0.1", @@ -29780,6 +29427,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -30366,7 +30014,8 @@ "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -30464,6 +30113,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" @@ -30473,6 +30123,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0" } @@ -30780,14 +30431,6 @@ "lz-string": "bin/bin.js" } }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -31171,7 +30814,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", @@ -31483,7 +31127,8 @@ "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "node_modules/minimist-options": { "version": "4.1.0", @@ -31582,6 +31227,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, "dependencies": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -31627,6 +31273,7 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -31974,6 +31621,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, "dependencies": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -32151,49 +31799,6 @@ "resolved": "https://registry.npmjs.org/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz", "integrity": "sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==" }, - "node_modules/next-offline": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/next-offline/-/next-offline-5.0.5.tgz", - "integrity": "sha512-GOpq+mD7ecrgW+A8+Y31BLNca3b8EeyRMhW5C9PsCc/C2RO1AzrssgIgQIrRulFuXDvXuPE5hWI4/DTHeOUp6Q==", - "dependencies": { - "copy-webpack-plugin": "~5.1.2", - "fs-extra": "~8.1.0", - "workbox-webpack-plugin": "^5.0.0" - }, - "peerDependencies": { - "next": ">=7.0.0", - "webpack": "^4.19.1" - } - }, - "node_modules/next-offline/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/next-offline/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/next-offline/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -32510,6 +32115,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -32731,6 +32337,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -33383,6 +32990,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, "dependencies": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -33393,6 +33001,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -33407,6 +33016,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -33642,7 +33252,8 @@ "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -33725,6 +33336,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -33736,6 +33348,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, "engines": { "node": ">=6" } @@ -35687,17 +35300,6 @@ "node": ">=6.0.0" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -35786,7 +35388,8 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/progress": { "version": "2.0.3", @@ -35800,7 +35403,8 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true }, "node_modules/promise-polyfill": { "version": "8.1.3", @@ -36037,6 +35641,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -36046,6 +35651,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -36056,6 +35662,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -36065,6 +35672,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } @@ -37445,12 +37053,14 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, "dependencies": { "regenerate": "^1.4.0" }, @@ -37467,6 +37077,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -37510,6 +37121,7 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, "dependencies": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -37525,12 +37137,14 @@ "node_modules/regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true }, "node_modules/regjsparser": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz", "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==", + "dev": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -37542,6 +37156,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, "bin": { "jsesc": "bin/jsesc" } @@ -38077,6 +37692,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -38254,6 +37878,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -38304,73 +37929,6 @@ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true }, - "node_modules/rollup": { - "version": "1.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", - "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", - "dependencies": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - }, - "bin": { - "rollup": "dist/bin/rollup" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "@babel/core": "7 || ^7.0.0-rc.2", - "rollup": ">=0.60.0 <3" - } - }, - "node_modules/rollup-plugin-terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", - "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", - "dependencies": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" - }, - "peerDependencies": { - "rollup": ">=0.66.0 <3" - } - }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "dependencies": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/rollup-pluginutils/node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" - }, "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -38413,6 +37971,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, "dependencies": { "aproba": "^1.1.1" } @@ -38744,6 +38303,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -39211,12 +38771,14 @@ "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -39246,6 +38808,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -39254,12 +38817,8 @@ "node_modules/source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true }, "node_modules/space-separated-tokens": { "version": "1.1.5", @@ -39367,6 +38926,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, "dependencies": { "figgy-pudding": "^3.5.1" } @@ -39773,6 +39333,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -39818,7 +39379,8 @@ "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true }, "node_modules/strict-uri-encode": { "version": "2.0.0", @@ -39993,19 +39555,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -40027,18 +39576,6 @@ "node": ">=4" } }, - "node_modules/strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "dependencies": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -40775,15 +40312,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stylelint/node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -40944,6 +40472,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -41232,35 +40761,6 @@ "memoizerific": "^1.11.3" } }, - "node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "dependencies": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -41281,6 +40781,7 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -41520,6 +41021,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -41529,6 +41031,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -41543,6 +41046,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -42268,7 +41772,8 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -42342,6 +41847,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, "engines": { "node": ">=4" } @@ -42350,6 +41856,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" @@ -42362,6 +41869,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true, "engines": { "node": ">=4" } @@ -42370,6 +41878,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, "engines": { "node": ">=4" } @@ -42440,6 +41949,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, "dependencies": { "unique-slug": "^2.0.0" } @@ -42448,21 +41958,11 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4" } }, - "node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/unist-builder": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", @@ -42677,6 +42177,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, "engines": { "node": ">=4", "yarn": "*" @@ -42716,6 +42218,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -42951,6 +42454,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, "bin": { "uuid": "bin/uuid" } @@ -43724,6 +43228,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, "dependencies": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" @@ -43749,6 +43254,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -44130,219 +43636,6 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, - "node_modules/workbox-background-sync": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", - "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-broadcast-update": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", - "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-build": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", - "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", - "dependencies": { - "@babel/core": "^7.8.4", - "@babel/preset-env": "^7.8.4", - "@babel/runtime": "^7.8.4", - "@hapi/joi": "^15.1.0", - "@rollup/plugin-node-resolve": "^7.1.1", - "@rollup/plugin-replace": "^2.3.1", - "@surma/rollup-plugin-off-main-thread": "^1.1.1", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.6", - "lodash.template": "^4.5.0", - "pretty-bytes": "^5.3.0", - "rollup": "^1.31.1", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-terser": "^5.3.1", - "source-map": "^0.7.3", - "source-map-url": "^0.4.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "tempy": "^0.3.0", - "upath": "^1.2.0", - "workbox-background-sync": "^5.1.4", - "workbox-broadcast-update": "^5.1.4", - "workbox-cacheable-response": "^5.1.4", - "workbox-core": "^5.1.4", - "workbox-expiration": "^5.1.4", - "workbox-google-analytics": "^5.1.4", - "workbox-navigation-preload": "^5.1.4", - "workbox-precaching": "^5.1.4", - "workbox-range-requests": "^5.1.4", - "workbox-routing": "^5.1.4", - "workbox-strategies": "^5.1.4", - "workbox-streams": "^5.1.4", - "workbox-sw": "^5.1.4", - "workbox-window": "^5.1.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/workbox-build/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/workbox-build/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/workbox-build/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-build/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/workbox-cacheable-response": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", - "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-core": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", - "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==" - }, - "node_modules/workbox-expiration": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", - "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-google-analytics": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", - "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", - "dependencies": { - "workbox-background-sync": "^5.1.4", - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4", - "workbox-strategies": "^5.1.4" - } - }, - "node_modules/workbox-navigation-preload": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", - "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-precaching": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", - "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-range-requests": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", - "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-routing": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", - "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, - "node_modules/workbox-strategies": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", - "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", - "dependencies": { - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4" - } - }, - "node_modules/workbox-streams": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", - "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", - "dependencies": { - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4" - } - }, - "node_modules/workbox-sw": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", - "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==" - }, - "node_modules/workbox-webpack-plugin": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", - "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "fast-json-stable-stringify": "^2.0.0", - "source-map-url": "^0.4.0", - "upath": "^1.1.2", - "webpack-sources": "^1.3.0", - "workbox-build": "^5.1.4" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/workbox-window": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", - "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", - "dependencies": { - "workbox-core": "^5.1.4" - } - }, "node_modules/worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -44877,6 +44170,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -44886,6 +44180,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -45007,6 +44302,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -45029,6 +44325,7 @@ "version": "7.18.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", + "dev": true, "requires": { "@babel/types": "^7.18.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -45039,6 +44336,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -45046,7 +44344,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -45073,6 +44372,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -45081,6 +44381,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.10.4", "@babel/types": "^7.10.4" @@ -45101,6 +44402,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.6", @@ -45115,6 +44417,7 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "regexpu-core": "^4.7.1" @@ -45124,6 +44427,7 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/types": "^7.10.5", @@ -45172,6 +44476,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, "requires": { "@babel/types": "^7.12.1" } @@ -45197,6 +44502,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -45213,6 +44519,7 @@ "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -45228,6 +44535,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -45241,6 +44549,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", @@ -45251,6 +44560,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", + "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-member-expression-to-functions": "^7.18.6", @@ -45263,6 +44573,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -45271,6 +44582,7 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -45297,6 +44609,7 @@ "version": "7.12.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/template": "^7.10.4", @@ -45308,6 +44621,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", + "dev": true, "requires": { "@babel/template": "^7.18.6", "@babel/traverse": "^7.18.6", @@ -45333,6 +44647,7 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.12.1", @@ -45343,6 +44658,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45365,6 +44681,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" @@ -45384,6 +44701,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -45393,6 +44711,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" @@ -45402,6 +44721,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -45411,6 +44731,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" @@ -45420,6 +44741,7 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -45429,6 +44751,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", @@ -45439,6 +44762,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" @@ -45448,6 +44772,7 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -45458,6 +44783,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45467,6 +44793,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45476,6 +44803,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45493,6 +44821,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45510,6 +44839,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45527,6 +44857,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -45553,6 +44884,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45570,6 +44902,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45578,6 +44911,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45586,6 +44920,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45594,6 +44929,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45602,6 +44938,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45610,6 +44947,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -45618,6 +44956,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45635,6 +44974,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45643,6 +44983,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -45653,6 +44994,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45661,6 +45003,7 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45669,6 +45012,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-define-map": "^7.10.4", @@ -45684,6 +45028,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45692,6 +45037,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45700,6 +45046,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45709,6 +45056,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45717,6 +45065,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -45736,6 +45085,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45744,6 +45094,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -45753,6 +45104,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45761,6 +45113,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45769,6 +45122,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -45779,6 +45133,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -45790,6 +45145,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.10.4", "@babel/helper-module-transforms": "^7.12.1", @@ -45802,6 +45158,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, "requires": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45811,6 +45168,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1" } @@ -45819,6 +45177,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45827,6 +45186,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.12.1" @@ -45836,6 +45196,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45844,6 +45205,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45902,6 +45264,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, "requires": { "regenerator-transform": "^0.14.2" } @@ -45910,6 +45273,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45970,6 +45334,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45978,6 +45343,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" @@ -45987,6 +45353,7 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45995,6 +45362,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -46003,6 +45371,7 @@ "version": "7.12.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -46022,6 +45391,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -46030,6 +45400,7 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -46039,6 +45410,7 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "dev": true, "requires": { "@babel/compat-data": "^7.12.7", "@babel/helper-compilation-targets": "^7.12.5", @@ -46111,7 +45483,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, @@ -46130,6 +45503,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -47328,49 +46702,6 @@ "protobufjs": "^6.8.6" } }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - } - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "requires": { - "@hapi/hoek": "^8.3.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - } - } - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -50297,37 +49628,6 @@ "@react-spring/types": "~9.4.0" } }, - "@rollup/plugin-node-resolve": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", - "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", - "requires": { - "@rollup/pluginutils": "^3.0.8", - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.14.2" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, "@samverschueren/stream-to-observable": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", @@ -52000,12 +51300,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -53228,22 +52522,6 @@ "unist-util-find-all-after": "^3.0.2" } }, - "@surma/rollup-plugin-off-main-thread": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", - "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", - "requires": { - "ejs": "^2.6.1", - "magic-string": "^0.25.0" - }, - "dependencies": { - "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" - } - } - }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", @@ -53903,7 +53181,8 @@ "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, "@types/express": { "version": "4.17.11", @@ -54284,14 +53563,6 @@ "@types/react": "*" } }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "requires": { - "@types/node": "*" - } - }, "@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -54969,7 +54240,8 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true }, "acorn-globals": { "version": "6.0.0", @@ -55095,6 +54367,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -55105,12 +54378,14 @@ "ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true }, "ansi-align": { "version": "3.0.1", @@ -55149,7 +54424,8 @@ "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true }, "ansi-escapes": { "version": "4.3.1", @@ -55701,7 +54977,8 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "are-we-there-yet": { "version": "2.0.0", @@ -55778,6 +55055,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, "requires": { "array-uniq": "^1.0.1" } @@ -55785,7 +55063,8 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true }, "array-unique": { "version": "0.3.2", @@ -56056,14 +55335,6 @@ "follow-redirects": "^1.14.0" } }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "requires": { - "babylon": "^6.18.0" - } - }, "babel-jest": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", @@ -56266,37 +55537,15 @@ } }, "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", + "loader-utils": "^2.0.0", "make-dir": "^3.1.0", "schema-utils": "^2.6.5" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } } }, "babel-plugin-add-react-displayname": { @@ -56327,6 +55576,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, "requires": { "object.assign": "^4.1.0" } @@ -56562,20 +55812,6 @@ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", "dev": true }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", @@ -56635,6 +55871,7 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -56643,20 +55880,17 @@ "core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true } } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -56790,7 +56024,8 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "bignumber.js": { "version": "9.0.1", @@ -56835,7 +56070,8 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "bn.js": { "version": "5.2.1", @@ -57216,11 +56452,6 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==" - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -57301,6 +56532,7 @@ "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, "requires": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -57323,6 +56555,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "requires": { "yallist": "^3.0.2" } @@ -57330,7 +56563,8 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true } } }, @@ -57656,7 +56890,8 @@ "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "chrome-trace-event": { "version": "1.0.3", @@ -58207,7 +57442,8 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "commitizen": { "version": "4.2.4", @@ -58309,12 +57545,14 @@ "common-tags": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "component-emitter": { "version": "1.3.0", @@ -58369,6 +57607,7 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -58380,6 +57619,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -58394,6 +57634,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -58465,6 +57706,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -58483,6 +57725,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, "requires": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -58506,197 +57749,6 @@ "toggle-selection": "^1.0.6" } }, - "copy-webpack-plugin": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", - "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", - "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "requires": { - "path-type": "^3.0.0" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "requires": { - "find-up": "^3.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - } - } - }, "core-js": { "version": "3.16.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.1.tgz", @@ -58728,7 +57780,8 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "7.0.1", @@ -58953,11 +58006,6 @@ "randomfill": "^1.0.3" } }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" - }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", @@ -59457,7 +58505,8 @@ "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true }, "cz-conventional-changelog": { "version": "3.3.0", @@ -60226,6 +59275,7 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, "requires": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -60237,6 +59287,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -60251,6 +59302,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -60367,7 +59419,8 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "emotion-theming": { "version": "10.3.0", @@ -60389,6 +59442,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -60800,15 +59854,11 @@ "c8": "^7.6.0" } }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", @@ -61524,7 +60574,8 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-diff": { "version": "1.1.2", @@ -61647,7 +60698,8 @@ "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true }, "figures": { "version": "3.2.0", @@ -61909,6 +60961,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, "requires": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -61918,6 +60971,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -61932,6 +60986,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -62188,6 +61243,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -62197,6 +61253,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -62211,6 +61268,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -62248,6 +61306,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -62259,6 +61318,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -62273,6 +61333,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -62477,7 +61538,8 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true }, "get-caller-file": { "version": "2.0.5", @@ -62499,11 +61561,6 @@ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -62913,7 +61970,8 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "graphql": { "version": "14.7.0", @@ -63661,12 +62719,13 @@ "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "image-size": { @@ -63741,7 +62800,8 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, "indent-string": { "version": "4.0.0", @@ -63758,7 +62818,8 @@ "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "inflected": { "version": "2.1.0", @@ -64155,7 +63216,8 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -64188,6 +63250,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -64215,11 +63278,6 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -64241,11 +63299,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, "is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -64317,11 +63370,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -64457,7 +63505,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -67707,7 +66756,8 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify": { "version": "1.0.1", @@ -67726,7 +66776,8 @@ "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true }, "jsonfile": { "version": "6.1.0", @@ -68203,7 +67254,8 @@ "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true }, "lodash.camelcase": { "version": "4.3.0", @@ -68301,6 +67353,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" @@ -68310,6 +67363,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0" } @@ -68549,14 +67603,6 @@ "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", "dev": true }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -68862,7 +67908,8 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -69108,7 +68155,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -69185,6 +68233,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, "requires": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -69223,6 +68272,7 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -69497,6 +68547,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, "requires": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -69630,41 +68681,6 @@ "resolved": "https://registry.npmjs.org/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz", "integrity": "sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==" }, - "next-offline": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/next-offline/-/next-offline-5.0.5.tgz", - "integrity": "sha512-GOpq+mD7ecrgW+A8+Y31BLNca3b8EeyRMhW5C9PsCc/C2RO1AzrssgIgQIrRulFuXDvXuPE5hWI4/DTHeOUp6Q==", - "requires": { - "copy-webpack-plugin": "~5.1.2", - "fs-extra": "~8.1.0", - "workbox-webpack-plugin": "^5.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -69932,7 +68948,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "normalize-range": { "version": "0.1.2", @@ -70106,6 +69123,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -70595,6 +69613,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, "requires": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -70605,6 +69624,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -70619,6 +69639,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -70829,7 +69850,8 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true }, "path-exists": { "version": "4.0.0", @@ -70896,12 +69918,14 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, "pirates": { "version": "4.0.5", @@ -72384,11 +71408,6 @@ "fast-diff": "^1.1.2" } }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - }, "pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -72458,7 +71477,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", @@ -72469,7 +71489,8 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true }, "promise-polyfill": { "version": "8.1.3", @@ -72676,6 +71697,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -72685,6 +71707,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, "requires": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -72695,6 +71718,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -72705,7 +71729,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "q": { "version": "1.5.1", @@ -73746,12 +72771,14 @@ "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "regenerate-unicode-properties": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, "requires": { "regenerate": "^1.4.0" } @@ -73765,6 +72792,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -73799,6 +72827,7 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, "requires": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -73811,12 +72840,14 @@ "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true }, "regjsparser": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz", "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==", + "dev": true, "requires": { "jsesc": "~0.5.0" }, @@ -73824,7 +72855,8 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true } } }, @@ -74228,6 +73260,12 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -74369,6 +73407,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -74412,63 +73451,6 @@ } } }, - "rollup": { - "version": "1.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", - "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", - "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-terser": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", - "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", - "requires": { - "@babel/code-frame": "^7.5.5", - "jest-worker": "^24.9.0", - "rollup-pluginutils": "^2.8.2", - "serialize-javascript": "^4.0.0", - "terser": "^4.6.2" - }, - "dependencies": { - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - } - } - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" - } - } - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -74491,6 +73473,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, "requires": { "aproba": "^1.1.1" } @@ -74748,6 +73731,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -75127,12 +74111,14 @@ "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-js": { "version": "1.0.2", @@ -75156,6 +74142,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -75164,12 +74151,8 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true }, "space-separated-tokens": { "version": "1.1.5", @@ -75256,6 +74239,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, "requires": { "figgy-pudding": "^3.5.1" } @@ -75568,6 +74552,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -75615,7 +74600,8 @@ "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true }, "strict-uri-encode": { "version": "2.0.0", @@ -75741,16 +74727,6 @@ "es-abstract": "^1.19.5" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -75766,15 +74742,6 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -76237,12 +75204,6 @@ "strip-indent": "^3.0.0" } }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -76429,6 +75390,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -76656,28 +75618,6 @@ "memoizerific": "^1.11.3" } }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" - }, - "tempy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", - "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", - "requires": { - "temp-dir": "^1.0.0", - "type-fest": "^0.3.1", - "unique-string": "^1.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - } - } - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -76692,6 +75632,7 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -76868,6 +75809,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -76877,6 +75819,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -76891,6 +75834,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -77441,7 +76385,8 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", @@ -77494,12 +76439,14 @@ "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true }, "unicode-match-property-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" @@ -77508,12 +76455,14 @@ "unicode-match-property-value-ecmascript": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true }, "unicode-property-aliases-ecmascript": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true }, "unified": { "version": "9.2.0", @@ -77559,6 +76508,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, "requires": { "unique-slug": "^2.0.0" } @@ -77567,18 +76517,11 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "requires": { - "crypto-random-string": "^1.0.0" - } - }, "unist-builder": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", @@ -77735,7 +76678,9 @@ "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true }, "upper-case": { "version": "2.0.2", @@ -77775,6 +76720,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -77935,7 +76881,8 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true }, "uuid-browser": { "version": "3.1.0", @@ -78674,6 +77621,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, "requires": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" @@ -78693,6 +77641,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -78856,203 +77805,6 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, - "workbox-background-sync": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", - "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-broadcast-update": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", - "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-build": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", - "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", - "requires": { - "@babel/core": "^7.8.4", - "@babel/preset-env": "^7.8.4", - "@babel/runtime": "^7.8.4", - "@hapi/joi": "^15.1.0", - "@rollup/plugin-node-resolve": "^7.1.1", - "@rollup/plugin-replace": "^2.3.1", - "@surma/rollup-plugin-off-main-thread": "^1.1.1", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^8.1.0", - "glob": "^7.1.6", - "lodash.template": "^4.5.0", - "pretty-bytes": "^5.3.0", - "rollup": "^1.31.1", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-terser": "^5.3.1", - "source-map": "^0.7.3", - "source-map-url": "^0.4.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "tempy": "^0.3.0", - "upath": "^1.2.0", - "workbox-background-sync": "^5.1.4", - "workbox-broadcast-update": "^5.1.4", - "workbox-cacheable-response": "^5.1.4", - "workbox-core": "^5.1.4", - "workbox-expiration": "^5.1.4", - "workbox-google-analytics": "^5.1.4", - "workbox-navigation-preload": "^5.1.4", - "workbox-precaching": "^5.1.4", - "workbox-range-requests": "^5.1.4", - "workbox-routing": "^5.1.4", - "workbox-strategies": "^5.1.4", - "workbox-streams": "^5.1.4", - "workbox-sw": "^5.1.4", - "workbox-window": "^5.1.4" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "workbox-cacheable-response": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", - "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-core": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", - "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==" - }, - "workbox-expiration": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", - "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-google-analytics": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", - "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", - "requires": { - "workbox-background-sync": "^5.1.4", - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4", - "workbox-strategies": "^5.1.4" - } - }, - "workbox-navigation-preload": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", - "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-precaching": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", - "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-range-requests": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", - "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-routing": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", - "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", - "requires": { - "workbox-core": "^5.1.4" - } - }, - "workbox-strategies": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", - "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", - "requires": { - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4" - } - }, - "workbox-streams": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", - "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", - "requires": { - "workbox-core": "^5.1.4", - "workbox-routing": "^5.1.4" - } - }, - "workbox-sw": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", - "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==" - }, - "workbox-webpack-plugin": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", - "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", - "requires": { - "@babel/runtime": "^7.5.5", - "fast-json-stable-stringify": "^2.0.0", - "source-map-url": "^0.4.0", - "upath": "^1.1.2", - "webpack-sources": "^1.3.0", - "workbox-build": "^5.1.4" - } - }, - "workbox-window": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", - "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", - "requires": { - "workbox-core": "^5.1.4" - } - }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", diff --git a/package.json b/package.json index 553d896a34..6bf2deedb3 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,6 @@ "lodash": "^4.17.21", "next": "^12.1.4", "next-compose-plugins": "^2.2.1", - "next-offline": "^5.0.5", "next-with-apollo": "^5.3.0", "nprogress": "^0.2.0", "number-precision": "^1.5.1", @@ -160,8 +159,8 @@ "postcss-mixins": "^6.2.3", "postcss-preset-env": "^6.7.0", "prettier": "^2.5.1", - "storybook-addon-next": "^1.6.7", "react-is": "^17.0.2", + "storybook-addon-next": "^1.6.7", "styled-jsx-plugin-postcss": "^4.0.1", "stylelint": "^13.13.1", "stylelint-config-prettier": "^8.0.2", From cef9992c69f80128a8bfb57b2d4f45ebb93405a0 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 12 Aug 2022 15:55:50 +0800 Subject: [PATCH 090/122] fix: notification type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update: CircleBroadcastMentionedYouNotice、 CircleDiscussionMentionedYouNotice、 InCircleNewArticleNotice、 InCircleNewBroadcastNotice --- src/common/gql/fragmentTypes.json | 2 + .../InCircleNewArticleNotice.tsx | 85 +++++++++++++++++++ .../Notice/CircleArticleNotice/index.tsx | 29 +++++++ .../InCircleNewBroadcastNotice.tsx | 50 +++-------- .../CircleBroadcastMentionedYouNotice.tsx | 22 ++--- .../CircleDiscussionMentionedYouNotice.tsx | 24 ++---- src/components/Notice/CircleNotice/index.tsx | 10 +++ src/components/Notice/CommentNotice/index.tsx | 10 --- src/components/Notice/index.tsx | 18 +++- 9 files changed, 167 insertions(+), 83 deletions(-) create mode 100644 src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx create mode 100644 src/components/Notice/CircleArticleNotice/index.tsx rename src/components/Notice/{CommentNotice => CircleNotice}/CircleBroadcastMentionedYouNotice.tsx (75%) rename src/components/Notice/{CommentNotice => CircleNotice}/CircleDiscussionMentionedYouNotice.tsx (71%) diff --git a/src/common/gql/fragmentTypes.json b/src/common/gql/fragmentTypes.json index eed2c8da91..e6f1a76326 100644 --- a/src/common/gql/fragmentTypes.json +++ b/src/common/gql/fragmentTypes.json @@ -18,6 +18,8 @@ { "name": "ArticleTagNotice" }, { "name": "TagNotice" }, { "name": "TransactionNotice" }, + { "name": "CircleArticleNotice" }, + { "name": "CircleCommentNotice" }, { "name": "CircleNotice" }, { "name": "CryptoNotice" }, { "name": "OfficialAnnouncementNotice" } diff --git a/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx b/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx new file mode 100644 index 0000000000..e4e8697a7b --- /dev/null +++ b/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx @@ -0,0 +1,85 @@ +import gql from 'graphql-tag' + +import { Translate } from '~/components' + +import NoticeActorAvatar from '../NoticeActorAvatar' +import NoticeActorName from '../NoticeActorName' +import NoticeArticleCard from '../NoticeArticleCard' +import NoticeCircleCard from '../NoticeCircleCard' +import NoticeCircleName from '../NoticeCircleName' +import NoticeDate from '../NoticeDate' +import NoticeHead from '../NoticeHead' +import NoticeTypeIcon from '../NoticeTypeIcon' +import styles from '../styles.css' + +import { InCircleNewArticleNotice as NoticeType } from './__generated__/InCircleNewArticleNotice' + +const InCircleNewArticleNotice = ({ notice }: { notice: NoticeType }) => { + + const circle = notice.circle + const article = notice.collection + const isMember = notice.circle.isMember + const isPublic = notice.collection.access.articleAccessType === 'public' + + return ( +
+
+ +
+ +
+ : + + } + > + + + + + + + +
+ + +
+ ) +} +InCircleNewArticleNotice.fragments = { + notice: gql` + fragment InCircleNewArticleNotice on CircleArticleNotice { + id + ...NoticeDate + actors { + ...NoticeActorAvatarUser + ...NoticeActorNameUser + } + circle: target { + isMember + ...NoticeCircleCard + } + collection: article { + access { + articleAccessType: type + } + ...NoticeArticleCard + } + } + ${NoticeActorAvatar.fragments.user} + ${NoticeActorName.fragments.user} + ${NoticeCircleCard.fragments.circle} + ${NoticeArticleCard.fragments.article} + ${NoticeDate.fragments.notice} + `, +} + +export default InCircleNewArticleNotice diff --git a/src/components/Notice/CircleArticleNotice/index.tsx b/src/components/Notice/CircleArticleNotice/index.tsx new file mode 100644 index 0000000000..02e7995005 --- /dev/null +++ b/src/components/Notice/CircleArticleNotice/index.tsx @@ -0,0 +1,29 @@ +import gql from 'graphql-tag' + +import InCircleNewArticleNotice from './InCircleNewArticleNotice' + +import { CircleArticleNotice as NoticeType } from './__generated__/CircleArticleNotice' + +const CircleArticleNotice = ({ notice }: { notice: NoticeType }) => { + switch (notice.circleArticleNoticeType) { + case 'InCircleNewArticle': + return + default: + return null + } +} + +CircleArticleNotice.fragments = { + notice: gql` + fragment CircleArticleNotice on CircleArticleNotice { + id + unread + __typename + circleArticleNoticeType: type + ...InCircleNewArticleNotice + } + ${InCircleNewArticleNotice.fragments.notice} + `, +} + +export default CircleArticleNotice diff --git a/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx b/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx index 4e72a40ba4..fe9824405c 100644 --- a/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx +++ b/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx @@ -1,17 +1,14 @@ import gql from 'graphql-tag' -import { Fragment } from 'react' import { Translate } from '~/components' -import { numAbbr } from '~/common/utils' - import NoticeActorAvatar from '../NoticeActorAvatar' import NoticeActorName from '../NoticeActorName' import NoticeCircleCard from '../NoticeCircleCard' import NoticeCircleName from '../NoticeCircleName' +import NoticeComment from '../NoticeComment' import NoticeDate from '../NoticeDate' import NoticeHead from '../NoticeHead' -import NoticeTypeIcon from '../NoticeTypeIcon' import styles from '../styles.css' import { InCircleNewBroadcastNotice as NoticeType } from './__generated__/InCircleNewBroadcastNotice' @@ -21,51 +18,26 @@ const InCircleNewBroadcastNotice = ({ notice }: { notice: NoticeType }) => { return null } - const actorsCount = notice.actors.length - const isMultiActors = actorsCount > 1 const circle = notice.circle + const actor = notice.actors[0] return (
- {isMultiActors ? ( - - ) : ( - - )} +
- {notice.actors.slice(0, 2).map((actor, index) => ( - - - {isMultiActors && index < 1 && } - - ))}{' '} - {isMultiActors && ( - - )} - + + - + - {/* */} - - {isMultiActors && ( -
- {notice.actors.map((actor, index) => ( - - ))} -
- )} +
@@ -86,10 +58,14 @@ InCircleNewBroadcastNotice.fragments = { circle: target { ...NoticeCircleCard } + reply: comment { + ...NoticeComment + } } ${NoticeActorAvatar.fragments.user} ${NoticeActorName.fragments.user} ${NoticeCircleCard.fragments.circle} + ${NoticeComment.fragments.comment} ${NoticeDate.fragments.notice} `, } diff --git a/src/components/Notice/CommentNotice/CircleBroadcastMentionedYouNotice.tsx b/src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx similarity index 75% rename from src/components/Notice/CommentNotice/CircleBroadcastMentionedYouNotice.tsx rename to src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx index f8f963f709..3659abc15c 100644 --- a/src/components/Notice/CommentNotice/CircleBroadcastMentionedYouNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx @@ -5,8 +5,8 @@ import { Translate } from '~/components' import NoticeActorAvatar from '../NoticeActorAvatar' import NoticeActorName from '../NoticeActorName' import NoticeArticleTitle from '../NoticeArticleTitle' +import NoticeCircleCard from '../NoticeCircleCard' import NoticeCircleName from '../NoticeCircleName' -import NoticeComment from '../NoticeComment' import NoticeDate from '../NoticeDate' import NoticeHead from '../NoticeHead' import styles from '../styles.css' @@ -23,8 +23,6 @@ const CircleBroadcastMentionedYouNotice = ({ } const actor = notice.actors[0] - const commentCircle = - notice.comment?.node.__typename === 'Circle' ? notice.comment.node : null return (
@@ -40,12 +38,10 @@ const CircleBroadcastMentionedYouNotice = ({ zh_hans=" 在围炉 " en=" mentioned you on " /> - + - -
@@ -56,27 +52,21 @@ const CircleBroadcastMentionedYouNotice = ({ CircleBroadcastMentionedYouNotice.fragments = { notice: gql` - fragment CircleBroadcastMentionedYouNotice on CommentNotice { + fragment CircleBroadcastMentionedYouNotice on CircleNotice { id ...NoticeDate actors { ...NoticeActorAvatarUser ...NoticeActorNameUser } - comment: target { - ...NoticeComment - node { - ... on Circle { - ...NoticeCircleName - } - } + circle: target { + ...NoticeCircleCard } } ${NoticeActorAvatar.fragments.user} ${NoticeActorName.fragments.user} ${NoticeArticleTitle.fragments.article} - ${NoticeCircleName.fragments.circle} - ${NoticeComment.fragments.comment} + ${NoticeCircleCard.fragments.circle} ${NoticeDate.fragments.notice} `, } diff --git a/src/components/Notice/CommentNotice/CircleDiscussionMentionedYouNotice.tsx b/src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx similarity index 71% rename from src/components/Notice/CommentNotice/CircleDiscussionMentionedYouNotice.tsx rename to src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx index 21969d48d3..ea388f8708 100644 --- a/src/components/Notice/CommentNotice/CircleDiscussionMentionedYouNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx @@ -4,9 +4,8 @@ import { Translate } from '~/components' import NoticeActorAvatar from '../NoticeActorAvatar' import NoticeActorName from '../NoticeActorName' -import NoticeArticleTitle from '../NoticeArticleTitle' +import NoticeCircleCard from '../NoticeCircleCard' import NoticeCircleName from '../NoticeCircleName' -import NoticeComment from '../NoticeComment' import NoticeDate from '../NoticeDate' import NoticeHead from '../NoticeHead' import styles from '../styles.css' @@ -23,8 +22,6 @@ const CircleDiscussionMentionedYouNotice = ({ } const actor = notice.actors[0] - const commentCircle = - notice.comment?.node.__typename === 'Circle' ? notice.comment.node : null return (
@@ -40,12 +37,10 @@ const CircleDiscussionMentionedYouNotice = ({ zh_hans=" 在围炉 " en=" mentioned you on " /> - + - -
@@ -56,27 +51,20 @@ const CircleDiscussionMentionedYouNotice = ({ CircleDiscussionMentionedYouNotice.fragments = { notice: gql` - fragment CircleDiscussionMentionedYouNotice on CommentNotice { + fragment CircleDiscussionMentionedYouNotice on CircleNotice { id ...NoticeDate actors { ...NoticeActorAvatarUser ...NoticeActorNameUser } - comment: target { - ...NoticeComment - node { - ... on Circle { - ...NoticeCircleName - } - } + circle: target { + ...NoticeCircleCard } } ${NoticeActorAvatar.fragments.user} ${NoticeActorName.fragments.user} - ${NoticeArticleTitle.fragments.article} - ${NoticeCircleName.fragments.circle} - ${NoticeComment.fragments.comment} + ${NoticeCircleCard.fragments.circle} ${NoticeDate.fragments.notice} `, } diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index 9181be9c35..302b871e1b 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -1,5 +1,7 @@ import gql from 'graphql-tag' +import CircleBroadcastMentionedYouNotice from './CircleBroadcastMentionedYouNotice' +import CircleDiscussionMentionedYouNotice from './CircleDiscussionMentionedYouNotice' import CircleInvitationNotice from './CircleInvitationNotice' import CircleNewUserNotice from './CircleNewUserNotice' import CircleReplyNotice from './CircleReplyNotice' @@ -57,6 +59,10 @@ const CircleNotice = ({ notice }: { notice: NoticeType }) => { noticeType="inCircleNewDiscussionReply" /> ) + case 'CircleBroadcastMentionedYou': + return + case 'CircleDiscussionMentionedYou': + return default: return null } @@ -72,10 +78,14 @@ CircleNotice.fragments = { ...CircleNewUserNotice ...CircleInvitationNotice ...CircleReplyNotice + ...CircleBroadcastMentionedYouNotice + ...CircleDiscussionMentionedYouNotice } ${CircleNewUserNotice.fragments.notice} ${CircleInvitationNotice.fragments.notice} ${CircleReplyNotice.fragments.notice} + ${CircleBroadcastMentionedYouNotice.fragments.notice} + ${CircleDiscussionMentionedYouNotice.fragments.notice} `, } diff --git a/src/components/Notice/CommentNotice/index.tsx b/src/components/Notice/CommentNotice/index.tsx index ba1e94d123..53edd98a3b 100644 --- a/src/components/Notice/CommentNotice/index.tsx +++ b/src/components/Notice/CommentNotice/index.tsx @@ -1,8 +1,6 @@ import gql from 'graphql-tag' import ArticleNewCommentNotice from './ArticleNewCommentNotice' -import CircleBroadcastMentionedYouNotice from './CircleBroadcastMentionedYouNotice' -import CircleDiscussionMentionedYouNotice from './CircleDiscussionMentionedYouNotice' import CircleNewBroadcastNotice from './CircleNewBroadcastNotice' import CommentMentionedYouNotice from './CommentMentionedYouNotice' import CommentPinnedNotice from './CommentPinnedNotice' @@ -22,10 +20,6 @@ const CommentNotice = ({ notice }: { notice: NoticeType }) => { return case 'CircleNewBroadcast': return - case 'CircleBroadcastMentionedYou': - return - case 'CircleDiscussionMentionedYou': - return default: return null } @@ -43,16 +37,12 @@ CommentNotice.fragments = { ...ArticleNewCommentNotice ...SubscribedArticleNewCommentNotice ...CircleNewBroadcastNotice - ...CircleBroadcastMentionedYouNotice - ...CircleDiscussionMentionedYouNotice } ${CommentMentionedYouNotice.fragments.notice} ${CommentPinnedNotice.fragments.notice} ${ArticleNewCommentNotice.fragments.notice} ${SubscribedArticleNewCommentNotice.fragments.notice} ${CircleNewBroadcastNotice.fragments.notice} - ${CircleBroadcastMentionedYouNotice.fragments.notice} - ${CircleDiscussionMentionedYouNotice.fragments.notice} `, } diff --git a/src/components/Notice/index.tsx b/src/components/Notice/index.tsx index 1f66a56d38..0849dfdc8d 100644 --- a/src/components/Notice/index.tsx +++ b/src/components/Notice/index.tsx @@ -4,6 +4,8 @@ import React from 'react' import ArticleArticleNotice from './ArticleArticleNotice' import ArticleNotice from './ArticleNotice' import ArticleTagNotice from './ArticleTagNotice' +import CircleArticleNotice from './CircleArticleNotice' +import CircleCommentNotice from './CircleCommentNotice' import CircleNotice from './CircleNotice' import CommentCommentNotice from './CommentCommentNotice' import CommentNotice from './CommentNotice' @@ -46,6 +48,12 @@ const fragments = { ... on TransactionNotice { ...TransactionNotice } + ... on CircleArticleNotice { + ...CircleArticleNotice + } + ... on CircleCommentNotice { + ...CircleCommentNotice + } ... on CircleNotice { ...CircleNotice } @@ -64,7 +72,9 @@ const fragments = { ${CommentNotice.fragments.notice} ${TagNotice.fragments.notice} ${TransactionNotice.fragments.notice} - ${CircleNotice.fragments.notice} + ${CircleArticleNotice.fragments.notice} + ${CircleCommentNotice.fragments.notice} + ${CircleNotice.fragments.notice} ${CryptoNotice.fragments.notice} ${OfficialAnnouncementNotice.fragments.notice} `, @@ -72,7 +82,7 @@ const fragments = { const BaseNotice: React.FC = ({ notice }) => { if (notice.__typename !== 'CircleNotice') { - console.log(notice.__typename) + console.log(notice) } switch (notice.__typename) { case 'UserNotice': @@ -91,6 +101,10 @@ const BaseNotice: React.FC = ({ notice }) => { return case 'TransactionNotice': return + case 'CircleArticleNotice': + return + case 'CircleCommentNotice': + return case 'CircleNotice': return case 'CryptoNotice': From e7da4d5293605e23b10155d09b0ffceac7de5207 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 12 Aug 2022 15:57:08 +0800 Subject: [PATCH 091/122] fix: format code --- .../CircleArticleNotice/InCircleNewArticleNotice.tsx | 7 ++++--- .../CircleCommentNotice/InCircleNewBroadcastNotice.tsx | 10 ++++++---- src/components/Notice/index.tsx | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx b/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx index e4e8697a7b..0f4f5c0e67 100644 --- a/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx +++ b/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx @@ -15,7 +15,6 @@ import styles from '../styles.css' import { InCircleNewArticleNotice as NoticeType } from './__generated__/InCircleNewArticleNotice' const InCircleNewArticleNotice = ({ notice }: { notice: NoticeType }) => { - const circle = notice.circle const article = notice.collection const isMember = notice.circle.isMember @@ -30,15 +29,17 @@ const InCircleNewArticleNotice = ({ notice }: { notice: NoticeType }) => {
: + /> + ) : ( + ) } > diff --git a/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx b/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx index fe9824405c..9a66336ff7 100644 --- a/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx +++ b/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx @@ -32,12 +32,14 @@ const InCircleNewBroadcastNotice = ({ notice }: { notice: NoticeType }) => { - + - +
diff --git a/src/components/Notice/index.tsx b/src/components/Notice/index.tsx index 0849dfdc8d..5a49b239b0 100644 --- a/src/components/Notice/index.tsx +++ b/src/components/Notice/index.tsx @@ -74,7 +74,7 @@ const fragments = { ${TransactionNotice.fragments.notice} ${CircleArticleNotice.fragments.notice} ${CircleCommentNotice.fragments.notice} - ${CircleNotice.fragments.notice} + ${CircleNotice.fragments.notice} ${CryptoNotice.fragments.notice} ${OfficialAnnouncementNotice.fragments.notice} `, From 06841ea2abbe54886fa644c9f7e05de5de6f1252 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 12 Aug 2022 16:05:53 +0800 Subject: [PATCH 092/122] fix: remove console --- src/components/Notice/index.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/Notice/index.tsx b/src/components/Notice/index.tsx index 5a49b239b0..ed06048089 100644 --- a/src/components/Notice/index.tsx +++ b/src/components/Notice/index.tsx @@ -81,9 +81,6 @@ const fragments = { } const BaseNotice: React.FC = ({ notice }) => { - if (notice.__typename !== 'CircleNotice') { - console.log(notice) - } switch (notice.__typename) { case 'UserNotice': return From 670781ba732c7b67a69c2d26dc6bd782d592caae Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Fri, 12 Aug 2022 17:22:02 +0800 Subject: [PATCH 093/122] feat: remove push related fields of local schema --- src/common/utils/resolvers/clientPreference.ts | 5 ----- src/common/utils/types/index.ts | 5 ----- src/components/GQL/queries/clientPreference.ts | 4 ---- 3 files changed, 14 deletions(-) diff --git a/src/common/utils/resolvers/clientPreference.ts b/src/common/utils/resolvers/clientPreference.ts index 52eba591ff..c3c17d3a49 100644 --- a/src/common/utils/resolvers/clientPreference.ts +++ b/src/common/utils/resolvers/clientPreference.ts @@ -4,11 +4,6 @@ const clientPreferenceResolver = (_: any) => { id: 'local', readCivicLikerDialog: false, wall: true, - push: { - enabled: false, - supported: false, - __typename: 'Push', - }, routeHistory: [], onboardingTasks: { enabled: false, diff --git a/src/common/utils/types/index.ts b/src/common/utils/types/index.ts index 7e256e713e..f9928c06fe 100644 --- a/src/common/utils/types/index.ts +++ b/src/common/utils/types/index.ts @@ -59,11 +59,6 @@ export default gql` feedAuthors: Int } - type Push { - enabled: Boolean! - supported: Boolean! - } - type ViewportSize { width: Int height: Int diff --git a/src/components/GQL/queries/clientPreference.ts b/src/components/GQL/queries/clientPreference.ts index adebda2d98..143f202a3c 100644 --- a/src/components/GQL/queries/clientPreference.ts +++ b/src/components/GQL/queries/clientPreference.ts @@ -6,10 +6,6 @@ export default gql` id readCivicLikerDialog wall - push { - enabled - supported - } routeHistory onboardingTasks { enabled From febd5d72288717a91610b456f46a4bc9ae933c26 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Sat, 13 Aug 2022 03:00:08 +0800 Subject: [PATCH 094/122] feat: add reply your discussion --- .../Notice/CircleNotice/CircleReplyNotice.tsx | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx index 489d257600..973ade7a2b 100644 --- a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx @@ -1,7 +1,7 @@ import gql from 'graphql-tag' -import { Fragment } from 'react' +import { Fragment, useContext } from 'react' -import { Translate } from '~/components' +import { Translate, ViewerContext } from '~/components' import { numAbbr } from '~/common/utils' @@ -9,6 +9,7 @@ import NoticeActorAvatar from '../NoticeActorAvatar' import NoticeActorName from '../NoticeActorName' import NoticeCircleCard from '../NoticeCircleCard' import NoticeCircleName from '../NoticeCircleName' +import NoticeComment from '../NoticeComment' import NoticeDate from '../NoticeDate' import NoticeHead from '../NoticeHead' import NoticeTypeIcon from '../NoticeTypeIcon' @@ -19,15 +20,20 @@ import { CircleReplyNotice as NoticeType } from './__generated__/CircleReplyNoti type CircleReplyNoticeType = { notice: NoticeType noticeType: - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { + + const viewer = useContext(ViewerContext) + const node = notice.node?.__typename === 'Comment' ? notice.node : null + const replyMyDiscuddion = viewer.id === node?.replyTo?.author?.id + if (!notice.actors) { return null } @@ -80,7 +86,10 @@ const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { /> )} {discussionReply && ( - + replyMyDiscuddion ? + + : + )} {broadcastReply && ( @@ -93,8 +102,9 @@ const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { ))}
)} - + {/* */} + @@ -113,10 +123,21 @@ CircleReplyNotice.fragments = { circle: target { ...NoticeCircleCard } + node { + ... on Comment { + ...NoticeComment + replyTo { + author { + id + } + } + } + } } ${NoticeActorAvatar.fragments.user} ${NoticeActorName.fragments.user} ${NoticeCircleCard.fragments.circle} + ${NoticeComment.fragments.comment} ${NoticeDate.fragments.notice} `, } From 1a5a72d97c7b0f43697c07def86c3b129c0e2b3d Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Sat, 13 Aug 2022 03:00:49 +0800 Subject: [PATCH 095/122] fix: code format --- .../Notice/CircleNotice/CircleReplyNotice.tsx | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx index 973ade7a2b..ce7233c5ea 100644 --- a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx @@ -20,16 +20,15 @@ import { CircleReplyNotice as NoticeType } from './__generated__/CircleReplyNoti type CircleReplyNoticeType = { notice: NoticeType noticeType: - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { - const viewer = useContext(ViewerContext) const node = notice.node?.__typename === 'Comment' ? notice.node : null const replyMyDiscuddion = viewer.id === node?.replyTo?.author?.id @@ -85,12 +84,16 @@ const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { en="" /> )} - {discussionReply && ( - replyMyDiscuddion ? - - : + {discussionReply && + (replyMyDiscuddion ? ( + + ) : ( - )} + ))} {broadcastReply && ( )} From 898590bb944db90938d723ce9d3f623305cb6a43 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Sat, 13 Aug 2022 14:59:18 +0800 Subject: [PATCH 096/122] fix: typo & remove NoticeComment --- .../Notice/CircleNotice/CircleReplyNotice.tsx | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx index ce7233c5ea..f1adc7d62c 100644 --- a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx @@ -9,7 +9,6 @@ import NoticeActorAvatar from '../NoticeActorAvatar' import NoticeActorName from '../NoticeActorName' import NoticeCircleCard from '../NoticeCircleCard' import NoticeCircleName from '../NoticeCircleName' -import NoticeComment from '../NoticeComment' import NoticeDate from '../NoticeDate' import NoticeHead from '../NoticeHead' import NoticeTypeIcon from '../NoticeTypeIcon' @@ -20,18 +19,18 @@ import { CircleReplyNotice as NoticeType } from './__generated__/CircleReplyNoti type CircleReplyNoticeType = { notice: NoticeType noticeType: - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { const viewer = useContext(ViewerContext) const node = notice.node?.__typename === 'Comment' ? notice.node : null - const replyMyDiscuddion = viewer.id === node?.replyTo?.author?.id + const replyMyDiscussion = viewer.id === node?.replyTo?.author.id if (!notice.actors) { return null @@ -85,7 +84,7 @@ const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { /> )} {discussionReply && - (replyMyDiscuddion ? ( + (replyMyDiscussion ? ( { )} - {/* */} @@ -128,7 +126,6 @@ CircleReplyNotice.fragments = { } node { ... on Comment { - ...NoticeComment replyTo { author { id @@ -140,7 +137,6 @@ CircleReplyNotice.fragments = { ${NoticeActorAvatar.fragments.user} ${NoticeActorName.fragments.user} ${NoticeCircleCard.fragments.circle} - ${NoticeComment.fragments.comment} ${NoticeDate.fragments.notice} `, } From 3ef5787faf0f48738b0524addf2a813549d149cc Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Sat, 13 Aug 2022 15:00:03 +0800 Subject: [PATCH 097/122] fix: format code --- .../Notice/CircleNotice/CircleReplyNotice.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx index f1adc7d62c..4befd49386 100644 --- a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleReplyNotice.tsx @@ -19,12 +19,12 @@ import { CircleReplyNotice as NoticeType } from './__generated__/CircleReplyNoti type CircleReplyNoticeType = { notice: NoticeType noticeType: - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' + | 'circleMemberNewDiscussion' + | 'circleMemberNewDiscussionReply' + | 'circleMemberNewBroadcastReply' + | 'inCircleNewBroadcastReply' + | 'inCircleNewDiscussion' + | 'inCircleNewDiscussionReply' } const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { From b018a89e70d344b5d516402d5a31fea77a1e23e7 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 15 Aug 2022 13:21:07 +0800 Subject: [PATCH 098/122] feat: remove --- .../components/CircleBanner/index.stories.tsx | 17 --- .../Home/CircleBanner/applicationLinks.ts | 8 -- src/views/Home/CircleBanner/index.tsx | 129 ------------------ src/views/Home/CircleBanner/styles.css | 40 ------ 4 files changed, 194 deletions(-) delete mode 100644 src/stories/components/CircleBanner/index.stories.tsx delete mode 100644 src/views/Home/CircleBanner/applicationLinks.ts delete mode 100644 src/views/Home/CircleBanner/index.tsx delete mode 100644 src/views/Home/CircleBanner/styles.css diff --git a/src/stories/components/CircleBanner/index.stories.tsx b/src/stories/components/CircleBanner/index.stories.tsx deleted file mode 100644 index d531092bfe..0000000000 --- a/src/stories/components/CircleBanner/index.stories.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { MockedProvider } from '@apollo/react-testing' -import { ComponentMeta, ComponentStory } from '@storybook/react' -import React from 'react' -import CircleBanner from '~/views/Home/CircleBanner' - -export default { - title: 'Components/CircleBanner', - component: CircleBanner, -} as ComponentMeta - -const Template: ComponentStory = () => ( - - - -) - -export const Default = Template.bind({}) diff --git a/src/views/Home/CircleBanner/applicationLinks.ts b/src/views/Home/CircleBanner/applicationLinks.ts deleted file mode 100644 index 5ec979404d..0000000000 --- a/src/views/Home/CircleBanner/applicationLinks.ts +++ /dev/null @@ -1,8 +0,0 @@ -// https://github.com/mckeever02/mailtolink -export const APPLICATION_LINKS = { - zh_hant: - 'mailto:hi@matters.news?subject=%E6%88%91%E7%94%B3%E8%AB%8B%E6%88%90%E7%82%BA%20Matters%E3%80%8C%E5%9C%8D%E7%88%90%E3%80%8D%E7%88%90%E4%B8%BB&body=%E4%BD%A0%E5%A5%BD%EF%BC%8C%E8%AB%8B%E5%A1%AB%E5%AF%AB%E4%B8%8B%E6%96%B9%E4%BF%A1%E6%81%AF%EF%BC%8C%E5%B9%AB%E5%8A%A9%E6%88%91%E5%80%91%E6%9B%B4%E5%A5%BD%E5%9C%B0%E4%BA%86%E8%A7%A3%E4%BD%A0%E7%9A%84%E5%89%B5%E4%BD%9C%E8%A8%88%E7%95%AB%E3%80%82%E6%88%91%E5%80%91%E6%9C%83%E5%9C%A848%E5%B0%8F%E6%99%82%E5%85%A7%E5%9B%9E%E8%A6%86%E4%BD%A0%E6%98%AF%E5%90%A6%E7%94%B3%E8%AB%8B%E6%88%90%E5%8A%9F%E3%80%82%E6%88%90%E5%8A%9F%E5%BE%8C%EF%BC%8C%E4%BD%A0%E5%8D%B3%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Matters%20%E9%96%8B%E8%A8%AD%E4%BD%A0%E7%9A%84%E5%9C%8D%E7%88%90%E3%80%82%0D%0A%0D%0A%E3%80%90%E8%AB%8B%E5%A1%AB%E5%AF%AB%E4%BB%A5%E4%B8%8B%E5%95%8F%E9%A1%8C%EF%BC%8C%E5%B9%AB%E5%8A%A9%E6%88%91%E5%80%91%E4%BA%86%E8%A7%A3%E4%BD%A0%E3%80%91%0D%0A%0D%0A1%E3%80%81%E4%BD%A0%E6%98%AF%E5%90%A6%E5%B7%B2%E7%B6%93%E5%9C%A8%E4%BD%BF%E7%94%A8%E5%85%B6%E4%BB%96%E8%A8%82%E9%96%B1%E5%88%B6%E5%8A%9F%E8%83%BD%EF%BC%8C%E5%90%91%E8%AE%80%E8%80%85%E6%94%B6%E8%B2%BB%EF%BC%9F%0D%0Aa.%20%E6%98%AF%EF%BC%8C%E8%AB%8B%E6%8F%90%E4%BE%9B%E4%BD%A0%E7%9A%84%E8%A8%82%E9%96%B1%E5%88%B6%E9%80%A3%E7%B5%90%E9%A0%81%E9%9D%A2%EF%BC%9A%0D%0Ab.%20%E5%90%A6%0D%0A%0D%0A2%E3%80%81%E4%BD%A0%E6%98%AF%E5%90%A6%E5%B7%B2%E7%B6%93%E5%9C%A8%E4%BD%BF%E7%94%A8%E5%85%B6%E4%BB%96%E5%8A%9F%E8%83%BD%EF%BC%8C%E9%81%8B%E7%87%9F%E8%87%AA%E5%B7%B1%E7%9A%84%E8%AE%80%E8%80%85%E7%A4%BE%E7%BE%A4%EF%BC%9A%0D%0Aa.%20%E6%98%AF%EF%BC%8C%E8%AB%8B%E8%A8%BB%E6%98%8E%E4%BD%A0%E4%BD%BF%E7%94%A8%E7%9A%84%E9%81%8B%E7%87%9F%E5%B7%A5%E5%85%B7%EF%BC%88%E8%AD%AC%E5%A6%82%E8%87%89%E6%9B%B8%E7%B2%89%E7%B5%B2%E9%A0%81%E6%88%96%20Telegram%20%E7%BE%A4%E7%B5%84%E7%AD%89%EF%BC%89%0D%0Ab.%20%E5%90%A6%EF%BC%8C%E6%B2%92%E6%9C%89%E6%AD%A3%E5%9C%A8%E9%81%8B%E7%87%9F%E4%B8%AD%E7%9A%84%E8%AE%80%E8%80%85%E7%A4%BE%E7%BE%A4%0D%0A%0D%0A3%E3%80%81%E4%BD%A0%E9%A0%90%E4%BC%B0%E5%9C%A8%E9%96%8B%E8%A8%AD%E5%9C%8D%E7%88%90%E5%85%A9%E5%80%8B%E6%9C%88%E5%BE%8C%EF%BC%8C%E5%B0%87%E6%9C%83%E7%8D%B2%E5%BE%97%E5%A4%9A%E5%B0%91%E8%A8%82%E9%96%B1%E8%AE%80%E8%80%85%EF%BC%9F%0D%0Aa.%201-10%0D%0Ab.%2010-50%0D%0Ac.%2050-100%0D%0Ad.%20100%20%E4%BB%A5%E4%B8%8A%0D%0A%0D%0A4%E3%80%81%E8%AE%80%E8%80%85%E5%8A%A0%E5%85%A5%E5%9C%8D%E7%88%90%E9%9C%80%E8%A6%81%E4%BB%98%E8%B2%BB%EF%BC%8C%E4%BD%A0%E9%A0%90%E8%A8%88%E8%A8%AD%E7%BD%AE%E7%9A%84%E6%9C%88%E8%B2%BB%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%9F%EF%BC%88%E7%9B%AE%E5%89%8D%E5%83%85%E8%83%BD%E6%B3%95%E5%B9%A3%E6%94%AF%E4%BB%98%EF%BC%8C%E4%BB%A5%E6%9C%88%E7%82%BA%E5%96%AE%E4%BD%8D%E8%A8%88%E7%AE%97%EF%BC%8C%E5%B9%A3%E5%80%BC%E7%82%BA%E6%B8%AF%E5%B9%A3%EF%BC%89%0D%0A%0D%0A5%E3%80%81%E4%BD%A0%E5%9C%A8%20Matters%20%E7%9A%84%E7%94%A8%E6%88%B6%E5%90%8D%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F%E8%AB%8B%E9%99%84%E4%B8%8A%E4%BD%A0%E7%9A%84%E5%80%8B%E4%BA%BA%E4%B8%BB%E9%A0%81%E9%80%A3%E7%B5%90%0D%0A%0D%0A%0D%0A%E8%AC%9D%E8%AC%9D%E4%BD%A0%E5%A1%AB%E5%AF%AB%E9%80%99%E4%BB%BD%E7%94%B3%E8%AB%8B%E3%80%82%E6%88%91%E5%80%91%E5%B0%87%E5%9C%A848%E5%B0%8F%E6%99%82%E5%85%A7%E5%9B%9E%E8%A6%86%E4%BD%A0%E3%80%82%0D%0A%0D%0A%E7%A5%9D%E9%A1%98%E5%89%B5%E4%BD%9C%E5%BF%AB%E6%A8%82%F0%9F%98%8A%0D%0A%0D%0AMatters%20%E5%9C%98%E9%9A%8A%E6%95%AC%E4%B8%8A', - zh_hans: - 'mailto:hi@matters.news?subject=%E6%88%91%E7%94%B3%E8%AF%B7%E6%88%90%E4%B8%BA%20Matters%E3%80%8C%E5%9B%B4%E7%82%89%E3%80%8D%E7%82%89%E4%B8%BB&body=%E4%BD%A0%E5%A5%BD%EF%BC%8C%E8%AF%B7%E5%A1%AB%E5%86%99%E4%B8%8B%E6%96%B9%E4%BF%A1%E6%81%AF%EF%BC%8C%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E6%9B%B4%E5%A5%BD%E5%9C%B0%E4%BA%86%E8%A7%A3%E4%BD%A0%E7%9A%84%E5%88%9B%E4%BD%9C%E8%AE%A1%E5%88%92%E3%80%82%E6%88%91%E4%BB%AC%E4%BC%9A%E5%9C%A848%E5%B0%8F%E6%97%B6%E5%86%85%E5%9B%9E%E5%A4%8D%E4%BD%A0%E6%98%AF%E5%90%A6%E7%94%B3%E8%AF%B7%E6%88%90%E5%8A%9F%E3%80%82%E6%88%90%E5%8A%9F%E5%90%8E%EF%BC%8C%E4%BD%A0%E5%8D%B3%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Matters%20%E5%BC%80%E8%AE%BE%E4%BD%A0%E7%9A%84%E5%9B%B4%E7%82%89%E3%80%82%0D%0A%0D%0A%E3%80%90%E8%AF%B7%E5%A1%AB%E5%86%99%E4%BB%A5%E4%B8%8B%E9%97%AE%E9%A2%98%EF%BC%8C%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E4%BA%86%E8%A7%A3%E4%BD%A0%E3%80%91%0D%0A%0D%0A1%E3%80%81%E4%BD%A0%E6%98%AF%E5%90%A6%E5%B7%B2%E7%BB%8F%E5%9C%A8%E4%BD%BF%E7%94%A8%E5%85%B6%E4%BB%96%E8%AE%A2%E9%98%85%E5%88%B6%E5%8A%9F%E8%83%BD%EF%BC%8C%E5%90%91%E8%AF%BB%E8%80%85%E6%94%B6%E8%B4%B9%EF%BC%9F%0D%0Aa.%20%E6%98%AF%EF%BC%8C%E8%AF%B7%E6%8F%90%E4%BE%9B%E4%BD%A0%E7%9A%84%E8%AE%A2%E9%98%85%E5%88%B6%E8%BF%9E%E7%BB%93%E9%A1%B5%E9%9D%A2%EF%BC%9A%0D%0Ab.%20%E5%90%A6%0D%0A%0D%0A2%E3%80%81%E4%BD%A0%E6%98%AF%E5%90%A6%E5%B7%B2%E7%BB%8F%E5%9C%A8%E4%BD%BF%E7%94%A8%E5%85%B6%E4%BB%96%E5%8A%9F%E8%83%BD%EF%BC%8C%E8%BF%90%E8%90%A5%E8%87%AA%E5%B7%B1%E7%9A%84%E8%AF%BB%E8%80%85%E7%A4%BE%E7%BE%A4%EF%BC%9A%0D%0Aa.%20%E6%98%AF%EF%BC%8C%E8%AF%B7%E6%B3%A8%E6%98%8E%E4%BD%A0%E4%BD%BF%E7%94%A8%E7%9A%84%E8%BF%90%E8%90%A5%E5%B7%A5%E5%85%B7%EF%BC%88%E8%AD%AC%E5%A6%82%E8%84%B8%E4%B9%A6%E7%B2%89%E4%B8%9D%E9%A1%B5%E6%88%96%20Telegram%20%E7%BE%A4%E7%BB%84%E7%AD%89%EF%BC%89%0D%0Ab.%20%E5%90%A6%EF%BC%8C%E6%B2%A1%E6%9C%89%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%90%A5%E4%B8%AD%E7%9A%84%E8%AF%BB%E8%80%85%E7%A4%BE%E7%BE%A4%0D%0A%0D%0A3%E3%80%81%E4%BD%A0%E9%A2%84%E4%BC%B0%E5%9C%A8%E5%BC%80%E8%AE%BE%E5%9B%B4%E7%82%89%E4%B8%A4%E4%B8%AA%E6%9C%88%E5%90%8E%EF%BC%8C%E5%B0%86%E4%BC%9A%E8%8E%B7%E5%BE%97%E5%A4%9A%E5%B0%91%E8%AE%A2%E9%98%85%E8%AF%BB%E8%80%85%EF%BC%9F%0D%0Aa.%201-10%0D%0Ab.%2010-50%0D%0Ac.%2050-100%0D%0Ad.%20100%20%E4%BB%A5%E4%B8%8A%0D%0A%0D%0A4%E3%80%81%E8%AF%BB%E8%80%85%E5%8A%A0%E5%85%A5%E5%9B%B4%E7%82%89%E9%9C%80%E8%A6%81%E4%BB%98%E8%B4%B9%EF%BC%8C%E4%BD%A0%E9%A2%84%E8%AE%A1%E8%AE%BE%E7%BD%AE%E7%9A%84%E6%9C%88%E8%B4%B9%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%9F%EF%BC%88%E7%9B%AE%E5%89%8D%E4%BB%85%E8%83%BD%E6%B3%95%E5%B8%81%E6%94%AF%E4%BB%98%EF%BC%8C%E4%BB%A5%E6%9C%88%E4%B8%BA%E5%8D%95%E4%BD%8D%E8%AE%A1%E7%AE%97%EF%BC%8C%E5%B8%81%E5%80%BC%E4%B8%BA%E6%B8%AF%E5%B8%81%EF%BC%89%0D%0A%0D%0A5%E3%80%81%E4%BD%A0%E5%9C%A8%20Matters%20%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E8%AF%B7%E9%99%84%E4%B8%8A%E4%BD%A0%E7%9A%84%E4%B8%AA%E4%BA%BA%E4%B8%BB%E9%A1%B5%E8%BF%9E%E7%BB%93%0D%0A%0D%0A%0D%0A%E8%B0%A2%E8%B0%A2%E4%BD%A0%E5%A1%AB%E5%86%99%E8%BF%99%E4%BB%BD%E7%94%B3%E8%AF%B7%E3%80%82%E6%88%91%E4%BB%AC%E5%B0%86%E5%9C%A848%E5%B0%8F%E6%97%B6%E5%86%85%E5%9B%9E%E5%A4%8D%E4%BD%A0%E3%80%82%0D%0A%0D%0A%E7%A5%9D%E6%84%BF%E5%88%9B%E4%BD%9C%E5%BF%AB%E4%B9%90%F0%9F%98%8A%0D%0A%0D%0AMatters%20%E5%9B%A2%E9%98%9F%E6%95%AC%E4%B8%8A', - en: 'mailto:hi@matters.news?Subject=Application%20of%20Matters%20Circle%20Owner&Body=Hi%20%F0%9F%91%8B%2C%0A%0APlease%20answer%20the%20following%20questions%20to%20help%20us%20understand%20your%20writing%20plan%2C%20and%20we%20will%20reply%20in%2024%20hours.%20If%20succeed%2C%20you%20will%20be%20able%20to%20start%20your%20Circle%20on%20Matters.%0A%0A%0A1%2C%20Are%20you%20already%20using%20other%20subscription%20service%20to%20provide%20paid%20content%20to%20your%20readers%3F%0Aa.%20yes%2C%20please%20provide%20your%20subscription%20page%3A%0Ab.%20no%0A%0A2%2C%20Are%20already%20using%20other%20community%20and%20commutation%20tools%20to%20maintain%20your%20reader%20communities%3F%0Aa.%20yes%2C%20please%20specify%20the%20tools%20you%20use%20%28e.g.%20Facebook%20page%2C%20Telegram%20group%29%0A%0A%0A3.%20What%20are%20the%20subscription%20number%20you%20expect%20after%20two%20month%3F%0Aa.%201-10%0Ab.%2010-50%0Ac.%2050-100%0Ad.%20100+%0A%0A%0A4%2C%20Users%20need%20to%20pay%20to%20join%20as%20your%20Circle%20member%2C%20what%20will%20your%20monthly%20membership%20cost%3F%20%28in%20HongKong%20dollar%29%0A%0A%0A5%2C%20What%20is%20your%20Matters%20user%20name%3F%20Please%20provide%20the%20link%20to%20your%20personal%20page.%0A%0A%0A%0AThank%20you%20for%20applying%2C%20we%20will%20reply%20in%2048%20hours.%0A%0AHappy%20creating%20%E2%9D%A4%EF%B8%8F%2C%0A%0AMatters%20team', -} diff --git a/src/views/Home/CircleBanner/index.tsx b/src/views/Home/CircleBanner/index.tsx deleted file mode 100644 index 19f1c47c39..0000000000 --- a/src/views/Home/CircleBanner/index.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { useQuery } from '@apollo/react-hooks' -import Link from 'next/link' -import { useContext } from 'react' - -import { - Button, - IconClose32, - LanguageContext, - Translate, - useFeatures, - ViewerContext, -} from '~/components' -import CLIENT_PREFERENCE from '~/components/GQL/queries/clientPreference' - -import { PATHS, STORAGE_KEY_CIRCLE_BANNER } from '~/common/enums' -import { storage, translate } from '~/common/utils' - -import IMAGE_CIRCLE_AD_BANNER from '@/public/static/images/circle-ad-banner.svg' - -import { APPLICATION_LINKS } from './applicationLinks' -import styles from './styles.css' - -import { ClientPreference } from '~/components/GQL/queries/__generated__/ClientPreference' - -const CircleBanner = () => { - const viewer = useContext(ViewerContext) - const { lang } = useContext(LanguageContext) - const features = useFeatures() - const { data: clientPreferenceData, client } = useQuery( - CLIENT_PREFERENCE, - { variables: { id: 'local' } } - ) - const ownCirclesCount = viewer?.ownCircles?.length || 0 - const hasOwnCircle = ownCirclesCount > 0 - - // determine whether banner should be shown or not - const storedCircleBanner = storage.get(STORAGE_KEY_CIRCLE_BANNER) - const enabled = - typeof storedCircleBanner === 'boolean' - ? storedCircleBanner - : clientPreferenceData?.clientPreference?.circleBanner - - const hideBanner = () => { - storage.set(STORAGE_KEY_CIRCLE_BANNER, false) - - client.writeData({ - id: 'ClientPreference:local', - data: { - circleBanner: false, - }, - }) - } - - if (!enabled || hasOwnCircle) { - return null - } - - const canCreateCircle = features.circle_management - - return ( -
- {!canCreateCircle && ( - -
-

- -

-

- -

-
-
- )} - - {canCreateCircle && ( - - -
-

- -

-

- -

-
-
- - )} - -
- -
- - -
- ) -} - -export default CircleBanner diff --git a/src/views/Home/CircleBanner/styles.css b/src/views/Home/CircleBanner/styles.css deleted file mode 100644 index d7ba7feca2..0000000000 --- a/src/views/Home/CircleBanner/styles.css +++ /dev/null @@ -1,40 +0,0 @@ -.container { - position: relative; - padding: var(--spacing-base) var(--spacing-base) var(--spacing-x-tight); - - @media (--sm-up) { - padding: var(--spacing-base) var(--spacing-base) 0; - } -} - -.banner { - position: relative; - width: 100%; - height: 8.5rem; - padding: var(--spacing-base); - color: var(--color-white); - background-color: var(--color-matters-green); - background-position: bottom right; - border-radius: 1rem; -} - -h3 { - font-size: var(--font-size-lg); - font-weight: var(--font-weight-semibold); - line-height: 1.5rem; -} - -p { - margin-top: var(--spacing-xx-tight); - font-size: var(--font-size-sm-s); - line-height: 1.5rem; -} - -.close { - position: absolute; - top: var(--spacing-base); - right: var(--spacing-base); - z-index: 1; - display: inline-flex; - padding: var(--spacing-x-tight); -} From 979495d02833aac22afd1d93bb027b164e01509d Mon Sep 17 00:00:00 2001 From: carolusian <> Date: Mon, 15 Aug 2022 16:44:03 +0800 Subject: [PATCH 099/122] fix: update sentry ingest endpoint in CSP --- src/common/enums/csp.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/enums/csp.ts b/src/common/enums/csp.ts index 672dbcd6ff..fc8de65ed5 100644 --- a/src/common/enums/csp.ts +++ b/src/common/enums/csp.ts @@ -73,7 +73,7 @@ const CONNECT_SRC = [ process.env.NEXT_PUBLIC_OAUTH_API_URL, // Sentry - 'sentry.matters.one', + '*.ingest.sentry.io', // GA 'www.google-analytics.com', From 03f3a175b3d2552865820a6041c3db0c208adb8f Mon Sep 17 00:00:00 2001 From: Aka jazzy Date: Mon, 15 Aug 2022 23:03:32 +0800 Subject: [PATCH 100/122] feat(related-tags): add shuffle button and function into related tags --- src/views/TagDetail/RelatedTags/gql.ts | 4 +- src/views/TagDetail/RelatedTags/index.tsx | 93 ++++++++++++++++------- 2 files changed, 68 insertions(+), 29 deletions(-) diff --git a/src/views/TagDetail/RelatedTags/gql.ts b/src/views/TagDetail/RelatedTags/gql.ts index d3d39d10a1..4c40aaa88a 100644 --- a/src/views/TagDetail/RelatedTags/gql.ts +++ b/src/views/TagDetail/RelatedTags/gql.ts @@ -3,11 +3,11 @@ import gql from 'graphql-tag' import { TagDigest } from '~/components' export const RELATED_TAGS = gql` - query TagDetailRecommended($id: ID!) { + query TagDetailRecommended($id: ID!, $random: random_Int_min_0_max_49) { node(input: { id: $id }) { ... on Tag { id - recommended(input: { first: 10 }) { + recommended(input: { first: 10, filter: { random: $random } }) { edges { cursor node { diff --git a/src/views/TagDetail/RelatedTags/index.tsx b/src/views/TagDetail/RelatedTags/index.tsx index 7c606b12b2..9778477963 100644 --- a/src/views/TagDetail/RelatedTags/index.tsx +++ b/src/views/TagDetail/RelatedTags/index.tsx @@ -1,10 +1,13 @@ +import { useQuery } from '@apollo/react-hooks' import classNames from 'classnames' import _chunk from 'lodash/chunk' import _get from 'lodash/get' +import _random from 'lodash/random' import { List, PageHeader, + ShuffleButton, Slides, TagDigest, Translate, @@ -12,6 +15,7 @@ import { ViewAllButton, ViewMoreCard, } from '~/components' +import FETCH_RECORD from '~/components/GQL/queries/lastFetchRandom' import { PATHS } from '~/common/enums' import { analytics } from '~/common/utils' @@ -19,6 +23,7 @@ import { analytics } from '~/common/utils' import { RELATED_TAGS } from './gql' import styles from './styles.css' +import { LastFetchRandom } from '~/components/GQL/queries/__generated__/LastFetchRandom' import { TagDetailRecommended } from './__generated__/TagDetailRecommended' interface RelatedTagsProps { @@ -26,35 +31,53 @@ interface RelatedTagsProps { inSidebar?: boolean } -const RelatedTagsHeader = ({ hasViewAll }: { hasViewAll?: boolean }) => ( - - } - is="h2" - hasNoBorder - > - {hasViewAll && ( +const RelatedTagsHeader = ({ + hasViewAll, + hasShuffle, + onShuffle, +}: { + hasViewAll?: boolean + hasShuffle?: boolean + onShuffle?: () => void +}) => { + return ( + + } + is="h2" + hasNoBorder + >
- + {hasShuffle && } + {hasViewAll && ( + + )}
- )} -
-) + +
+ ) +} const RelatedTags: React.FC = ({ tagId, inSidebar }) => { - const { data } = usePublicQuery(RELATED_TAGS, { - variables: { id: tagId }, - }) + const { data: lastFetchRandom, client } = useQuery( + FETCH_RECORD, + { variables: { id: 'local' } } + ) + + const lastRandom = lastFetchRandom?.lastFetchRandom.feedTags + const { data, refetch } = usePublicQuery(RELATED_TAGS, { + variables: { id: tagId, random: lastRandom || 0 }, + }) const { edges } = (data?.node?.__typename === 'Tag' && data.node.recommended) || {} - const onClick = (i: number, id: string) => () => + const trackRelatedTags = (i: number, id: string) => () => analytics.trackEvent('click_feed', { type: 'related_tags', contentType: 'tag', @@ -66,6 +89,16 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { return null } + const shuffle = () => { + const random = _random(0, 49) + refetch({ random }) + + client.writeData({ + id: 'LastFetchRandom:local', + data: { feedAuthors: random }, + }) + } + const relatedTagsClasses = classNames({ relatedTags: true, inSidebar, @@ -74,7 +107,9 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { if (!inSidebar) { return (
- }> + } + > {_chunk(edges, 5).map((chunks, edgeIndex) => (
@@ -83,7 +118,10 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { key={cursor} tag={node} onClick={() => - onClick((edgeIndex + 1) * (nodeIndex + 1) - 1, node.id) + trackRelatedTags( + (edgeIndex + 1) * (nodeIndex + 1) - 1, + node.id + ) } /> ))} @@ -103,7 +141,6 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => {
-
) @@ -111,12 +148,14 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { return (
- - + {edges?.map(({ node, cursor }, i) => ( - onClick(i, node.id)} /> + trackRelatedTags(i, node.id)} + /> ))} From d06be2926b0cd0c42930807f3aa85358b2a17826 Mon Sep 17 00:00:00 2001 From: bluecloud <96812901+pitb2022@users.noreply.github.com> Date: Tue, 16 Aug 2022 18:18:16 +0800 Subject: [PATCH 101/122] truncate title in article card. --- src/components/ArticleDigest/Title/index.tsx | 2 +- src/components/ArticleDigest/Title/styles.css | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/ArticleDigest/Title/index.tsx b/src/components/ArticleDigest/Title/index.tsx index 7fb0d017ad..3f32eb1c23 100644 --- a/src/components/ArticleDigest/Title/index.tsx +++ b/src/components/ArticleDigest/Title/index.tsx @@ -53,7 +53,7 @@ export const ArticleDigestTitle = ({ textSize = 'md', textWeight = 'md', - lineClamp, + lineClamp = true, is = 'h2', disabled, diff --git a/src/components/ArticleDigest/Title/styles.css b/src/components/ArticleDigest/Title/styles.css index fc2fc1ff54..816c40bdeb 100644 --- a/src/components/ArticleDigest/Title/styles.css +++ b/src/components/ArticleDigest/Title/styles.css @@ -36,4 +36,7 @@ .line-clamp { @mixin line-clamp; + + text-overflow: ellipsis; + -webkit-line-clamp: 2; } From 95d0f4d37513e07eb77ad1d21ee214bcf17b34f5 Mon Sep 17 00:00:00 2001 From: Aka jazzy Date: Tue, 16 Aug 2022 23:19:36 +0800 Subject: [PATCH 102/122] feat(related-tags): omit the {true} for hasShuffle property --- src/views/TagDetail/RelatedTags/index.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/views/TagDetail/RelatedTags/index.tsx b/src/views/TagDetail/RelatedTags/index.tsx index 9778477963..e6e2c888d9 100644 --- a/src/views/TagDetail/RelatedTags/index.tsx +++ b/src/views/TagDetail/RelatedTags/index.tsx @@ -74,6 +74,7 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { const { data, refetch } = usePublicQuery(RELATED_TAGS, { variables: { id: tagId, random: lastRandom || 0 }, }) + const { edges } = (data?.node?.__typename === 'Tag' && data.node.recommended) || {} @@ -108,7 +109,7 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { return (
} + header={} > {_chunk(edges, 5).map((chunks, edgeIndex) => ( @@ -148,7 +149,7 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { return (
- + {edges?.map(({ node, cursor }, i) => ( From e3f784b15ee59d550ed547c3646f11a1872f1d77 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Wed, 17 Aug 2022 00:35:09 +0800 Subject: [PATCH 103/122] feat(notice): merge cirlce notices into `` and `` --- .../InCircleNewArticleNotice.tsx | 86 --------- .../Notice/CircleArticleNotice/index.tsx | 29 --- .../InCircleNewBroadcastNotice.tsx | 75 -------- .../Notice/CircleCommentNotice/index.tsx | 29 --- .../CircleBroadcastMentionedYouNotice.tsx | 74 -------- .../CircleDiscussionMentionedYouNotice.tsx | 72 -------- ...ice.tsx => CircleNewBroadcastComments.tsx} | 94 +++++----- .../CircleNewDiscussionComments.tsx | 173 ++++++++++++++++++ src/components/Notice/CircleNotice/index.tsx | 63 +------ src/components/Notice/index.tsx | 14 -- 10 files changed, 229 insertions(+), 480 deletions(-) delete mode 100644 src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx delete mode 100644 src/components/Notice/CircleArticleNotice/index.tsx delete mode 100644 src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx delete mode 100644 src/components/Notice/CircleCommentNotice/index.tsx delete mode 100644 src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx delete mode 100644 src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx rename src/components/Notice/CircleNotice/{CircleReplyNotice.tsx => CircleNewBroadcastComments.tsx} (56%) create mode 100644 src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx diff --git a/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx b/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx deleted file mode 100644 index 0f4f5c0e67..0000000000 --- a/src/components/Notice/CircleArticleNotice/InCircleNewArticleNotice.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import gql from 'graphql-tag' - -import { Translate } from '~/components' - -import NoticeActorAvatar from '../NoticeActorAvatar' -import NoticeActorName from '../NoticeActorName' -import NoticeArticleCard from '../NoticeArticleCard' -import NoticeCircleCard from '../NoticeCircleCard' -import NoticeCircleName from '../NoticeCircleName' -import NoticeDate from '../NoticeDate' -import NoticeHead from '../NoticeHead' -import NoticeTypeIcon from '../NoticeTypeIcon' -import styles from '../styles.css' - -import { InCircleNewArticleNotice as NoticeType } from './__generated__/InCircleNewArticleNotice' - -const InCircleNewArticleNotice = ({ notice }: { notice: NoticeType }) => { - const circle = notice.circle - const article = notice.collection - const isMember = notice.circle.isMember - const isPublic = notice.collection.access.articleAccessType === 'public' - - return ( -
-
- -
- -
- - ) : ( - - ) - } - > - - - - - - - -
- - -
- ) -} -InCircleNewArticleNotice.fragments = { - notice: gql` - fragment InCircleNewArticleNotice on CircleArticleNotice { - id - ...NoticeDate - actors { - ...NoticeActorAvatarUser - ...NoticeActorNameUser - } - circle: target { - isMember - ...NoticeCircleCard - } - collection: article { - access { - articleAccessType: type - } - ...NoticeArticleCard - } - } - ${NoticeActorAvatar.fragments.user} - ${NoticeActorName.fragments.user} - ${NoticeCircleCard.fragments.circle} - ${NoticeArticleCard.fragments.article} - ${NoticeDate.fragments.notice} - `, -} - -export default InCircleNewArticleNotice diff --git a/src/components/Notice/CircleArticleNotice/index.tsx b/src/components/Notice/CircleArticleNotice/index.tsx deleted file mode 100644 index 02e7995005..0000000000 --- a/src/components/Notice/CircleArticleNotice/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import gql from 'graphql-tag' - -import InCircleNewArticleNotice from './InCircleNewArticleNotice' - -import { CircleArticleNotice as NoticeType } from './__generated__/CircleArticleNotice' - -const CircleArticleNotice = ({ notice }: { notice: NoticeType }) => { - switch (notice.circleArticleNoticeType) { - case 'InCircleNewArticle': - return - default: - return null - } -} - -CircleArticleNotice.fragments = { - notice: gql` - fragment CircleArticleNotice on CircleArticleNotice { - id - unread - __typename - circleArticleNoticeType: type - ...InCircleNewArticleNotice - } - ${InCircleNewArticleNotice.fragments.notice} - `, -} - -export default CircleArticleNotice diff --git a/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx b/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx deleted file mode 100644 index 9a66336ff7..0000000000 --- a/src/components/Notice/CircleCommentNotice/InCircleNewBroadcastNotice.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import gql from 'graphql-tag' - -import { Translate } from '~/components' - -import NoticeActorAvatar from '../NoticeActorAvatar' -import NoticeActorName from '../NoticeActorName' -import NoticeCircleCard from '../NoticeCircleCard' -import NoticeCircleName from '../NoticeCircleName' -import NoticeComment from '../NoticeComment' -import NoticeDate from '../NoticeDate' -import NoticeHead from '../NoticeHead' -import styles from '../styles.css' - -import { InCircleNewBroadcastNotice as NoticeType } from './__generated__/InCircleNewBroadcastNotice' - -const InCircleNewBroadcastNotice = ({ notice }: { notice: NoticeType }) => { - if (!notice.actors) { - return null - } - - const circle = notice.circle - const actor = notice.actors[0] - - return ( -
-
- -
- -
- - - - - - - - - - -
- - -
- ) -} -InCircleNewBroadcastNotice.fragments = { - notice: gql` - fragment InCircleNewBroadcastNotice on CircleCommentNotice { - id - ...NoticeDate - actors { - ...NoticeActorAvatarUser - ...NoticeActorNameUser - } - circle: target { - ...NoticeCircleCard - } - reply: comment { - ...NoticeComment - } - } - ${NoticeActorAvatar.fragments.user} - ${NoticeActorName.fragments.user} - ${NoticeCircleCard.fragments.circle} - ${NoticeComment.fragments.comment} - ${NoticeDate.fragments.notice} - `, -} - -export default InCircleNewBroadcastNotice diff --git a/src/components/Notice/CircleCommentNotice/index.tsx b/src/components/Notice/CircleCommentNotice/index.tsx deleted file mode 100644 index 35ace6260e..0000000000 --- a/src/components/Notice/CircleCommentNotice/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import gql from 'graphql-tag' - -import InCircleNewBroadcastNotice from './InCircleNewBroadcastNotice' - -import { CircleCommentNotice as NoticeType } from './__generated__/CircleCommentNotice' - -const CircleCommentNotice = ({ notice }: { notice: NoticeType }) => { - switch (notice.circleCommentNoticeType) { - case 'InCircleNewBroadcast': - return - default: - return null - } -} - -CircleCommentNotice.fragments = { - notice: gql` - fragment CircleCommentNotice on CircleCommentNotice { - id - unread - __typename - circleCommentNoticeType: type - ...InCircleNewBroadcastNotice - } - ${InCircleNewBroadcastNotice.fragments.notice} - `, -} - -export default CircleCommentNotice diff --git a/src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx b/src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx deleted file mode 100644 index 3659abc15c..0000000000 --- a/src/components/Notice/CircleNotice/CircleBroadcastMentionedYouNotice.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import gql from 'graphql-tag' - -import { Translate } from '~/components' - -import NoticeActorAvatar from '../NoticeActorAvatar' -import NoticeActorName from '../NoticeActorName' -import NoticeArticleTitle from '../NoticeArticleTitle' -import NoticeCircleCard from '../NoticeCircleCard' -import NoticeCircleName from '../NoticeCircleName' -import NoticeDate from '../NoticeDate' -import NoticeHead from '../NoticeHead' -import styles from '../styles.css' - -import { CircleBroadcastMentionedYouNotice as NoticeType } from './__generated__/CircleBroadcastMentionedYouNotice' - -const CircleBroadcastMentionedYouNotice = ({ - notice, -}: { - notice: NoticeType -}) => { - if (!notice.actors) { - return null - } - - const actor = notice.actors[0] - - return ( -
-
- -
- -
- - - - - - - - -
- - -
- ) -} - -CircleBroadcastMentionedYouNotice.fragments = { - notice: gql` - fragment CircleBroadcastMentionedYouNotice on CircleNotice { - id - ...NoticeDate - actors { - ...NoticeActorAvatarUser - ...NoticeActorNameUser - } - circle: target { - ...NoticeCircleCard - } - } - ${NoticeActorAvatar.fragments.user} - ${NoticeActorName.fragments.user} - ${NoticeArticleTitle.fragments.article} - ${NoticeCircleCard.fragments.circle} - ${NoticeDate.fragments.notice} - `, -} - -export default CircleBroadcastMentionedYouNotice diff --git a/src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx b/src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx deleted file mode 100644 index ea388f8708..0000000000 --- a/src/components/Notice/CircleNotice/CircleDiscussionMentionedYouNotice.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import gql from 'graphql-tag' - -import { Translate } from '~/components' - -import NoticeActorAvatar from '../NoticeActorAvatar' -import NoticeActorName from '../NoticeActorName' -import NoticeCircleCard from '../NoticeCircleCard' -import NoticeCircleName from '../NoticeCircleName' -import NoticeDate from '../NoticeDate' -import NoticeHead from '../NoticeHead' -import styles from '../styles.css' - -import { CircleDiscussionMentionedYouNotice as NoticeType } from './__generated__/CircleDiscussionMentionedYouNotice' - -const CircleDiscussionMentionedYouNotice = ({ - notice, -}: { - notice: NoticeType -}) => { - if (!notice.actors) { - return null - } - - const actor = notice.actors[0] - - return ( -
-
- -
- -
- - - - - - - - -
- - -
- ) -} - -CircleDiscussionMentionedYouNotice.fragments = { - notice: gql` - fragment CircleDiscussionMentionedYouNotice on CircleNotice { - id - ...NoticeDate - actors { - ...NoticeActorAvatarUser - ...NoticeActorNameUser - } - circle: target { - ...NoticeCircleCard - } - } - ${NoticeActorAvatar.fragments.user} - ${NoticeActorName.fragments.user} - ${NoticeCircleCard.fragments.circle} - ${NoticeDate.fragments.notice} - `, -} - -export default CircleDiscussionMentionedYouNotice diff --git a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx similarity index 56% rename from src/components/Notice/CircleNotice/CircleReplyNotice.tsx rename to src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx index 4befd49386..5554fb4e30 100644 --- a/src/components/Notice/CircleNotice/CircleReplyNotice.tsx +++ b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx @@ -14,45 +14,38 @@ import NoticeHead from '../NoticeHead' import NoticeTypeIcon from '../NoticeTypeIcon' import styles from '../styles.css' -import { CircleReplyNotice as NoticeType } from './__generated__/CircleReplyNotice' +import { CircleNewBroadcastComments as NoticeType } from './__generated__/CircleNewBroadcastComments' -type CircleReplyNoticeType = { +type CircleNewBroadcastCommentsType = { notice: NoticeType - noticeType: - | 'circleMemberNewDiscussion' - | 'circleMemberNewDiscussionReply' - | 'circleMemberNewBroadcastReply' - | 'inCircleNewBroadcastReply' - | 'inCircleNewDiscussion' - | 'inCircleNewDiscussionReply' } -const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { +const CircleNewBroadcastComments = ({ + notice, +}: CircleNewBroadcastCommentsType) => { const viewer = useContext(ViewerContext) - const node = notice.node?.__typename === 'Comment' ? notice.node : null - const replyMyDiscussion = viewer.id === node?.replyTo?.author.id + const { replies, mentions } = notice if (!notice.actors) { return null } + const isCircleOwner = notice.circle.owner.id === viewer.id + const replyCount = replies?.length + const mentionCount = mentions?.length + + if (!replyCount && !mentionCount) { + return null + } + const actorsCount = notice.actors.length const isMultiActors = actorsCount > 1 - const discussion = - noticeType === 'circleMemberNewDiscussion' || - noticeType === 'inCircleNewDiscussion' - const discussionReply = - noticeType === 'circleMemberNewDiscussionReply' || - noticeType === 'inCircleNewDiscussionReply' - const broadcastReply = - noticeType === 'circleMemberNewBroadcastReply' || - noticeType === 'inCircleNewBroadcastReply' return (
{isMultiActors ? ( - + ) : ( )} @@ -74,27 +67,28 @@ const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => { /> )} <> - + {isCircleOwner ? ( + + ) : ( + + )} - {discussion && ( + {replyCount && !mentionCount && ( + + )} + {!replyCount && mentionCount && ( )} - {discussionReply && - (replyMyDiscussion ? ( - - ) : ( - - ))} - {broadcastReply && ( - + {replyCount && mentionCount && ( + )} {isMultiActors && ( @@ -112,9 +106,10 @@ const CircleReplyNotice = ({ notice, noticeType }: CircleReplyNoticeType) => {
) } -CircleReplyNotice.fragments = { + +CircleNewBroadcastComments.fragments = { notice: gql` - fragment CircleReplyNotice on CircleNotice { + fragment CircleNewBroadcastComments on CircleNotice { id ...NoticeDate actors { @@ -124,15 +119,18 @@ CircleReplyNotice.fragments = { circle: target { ...NoticeCircleCard } - node { - ... on Comment { - replyTo { - author { - id - } - } + comments { + id + } + replies { + id + author { + id } } + mentions { + id + } } ${NoticeActorAvatar.fragments.user} ${NoticeActorName.fragments.user} @@ -141,4 +139,4 @@ CircleReplyNotice.fragments = { `, } -export default CircleReplyNotice +export default CircleNewBroadcastComments diff --git a/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx b/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx new file mode 100644 index 0000000000..9f68bc9fc3 --- /dev/null +++ b/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx @@ -0,0 +1,173 @@ +import gql from 'graphql-tag' +import { Fragment, useContext } from 'react' + +import { Translate, ViewerContext } from '~/components' + +import { numAbbr } from '~/common/utils' + +import NoticeActorAvatar from '../NoticeActorAvatar' +import NoticeActorName from '../NoticeActorName' +import NoticeCircleCard from '../NoticeCircleCard' +import NoticeCircleName from '../NoticeCircleName' +import NoticeDate from '../NoticeDate' +import NoticeHead from '../NoticeHead' +import NoticeTypeIcon from '../NoticeTypeIcon' +import styles from '../styles.css' + +import { CircleNewDiscussionComments as NoticeType } from './__generated__/CircleNewDiscussionComments' + +type CircleNewDiscussionCommentsType = { + notice: NoticeType +} + +const CircleNewDiscussionComments = ({ + notice, +}: CircleNewDiscussionCommentsType) => { + const viewer = useContext(ViewerContext) + const { comments, replies, mentions } = notice + + if (!notice.actors) { + return null + } + + const isCircleOwner = notice.circle.owner.id === viewer.id + const newDiscussionCount = comments?.length + const replyCount = replies?.length + const mentionCount = mentions?.length + + if (!newDiscussionCount && !replyCount && !mentionCount) { + return null + } + + const actorsCount = notice.actors.length + const isMultiActors = actorsCount > 1 + + return ( +
+
+ {isMultiActors ? ( + + ) : ( + + )} +
+ +
+ + {notice.actors.slice(0, 2).map((actor, index) => ( + + + {isMultiActors && index < 1 && } + + ))}{' '} + {isMultiActors && ( + + )} + <> + {isCircleOwner ? ( + + ) : ( + + )} + + {newDiscussionCount && !replyCount && !mentionCount && ( + + )} + {!newDiscussionCount && replyCount && !mentionCount && ( + + )} + {!newDiscussionCount && !replyCount && mentionCount && ( + + )} + {newDiscussionCount && replyCount && !mentionCount && ( + + )} + {newDiscussionCount && !replyCount && mentionCount && ( + + )} + {!newDiscussionCount && replyCount && mentionCount && ( + + )} + {newDiscussionCount && replyCount && mentionCount && ( + + )} + + {isMultiActors && ( +
+ {notice.actors.map((actor, index) => ( + + ))} +
+ )} +
+ +
+ + +
+ ) +} + +CircleNewDiscussionComments.fragments = { + notice: gql` + fragment CircleNewDiscussionComments on CircleNotice { + id + ...NoticeDate + actors { + ...NoticeActorAvatarUser + ...NoticeActorNameUser + } + circle: target { + ...NoticeCircleCard + } + comments { + id + } + replies { + id + replyTo { + author { + id + } + } + } + mentions { + id + } + } + ${NoticeActorAvatar.fragments.user} + ${NoticeActorName.fragments.user} + ${NoticeCircleCard.fragments.circle} + ${NoticeDate.fragments.notice} + `, +} + +export default CircleNewDiscussionComments diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index 302b871e1b..a15eb74ef6 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -1,10 +1,9 @@ import gql from 'graphql-tag' -import CircleBroadcastMentionedYouNotice from './CircleBroadcastMentionedYouNotice' -import CircleDiscussionMentionedYouNotice from './CircleDiscussionMentionedYouNotice' import CircleInvitationNotice from './CircleInvitationNotice' +import CircleNewBroadcastComments from './CircleNewBroadcastComments' +import CircleNewDiscussionComments from './CircleNewDiscussionComments' import CircleNewUserNotice from './CircleNewUserNotice' -import CircleReplyNotice from './CircleReplyNotice' import { CircleNotice as NoticeType } from './__generated__/CircleNotice' @@ -19,50 +18,10 @@ const CircleNotice = ({ notice }: { notice: NoticeType }) => { return case 'CircleInvitation': return - - case 'CircleMemberNewBroadcastReply': - return ( - - ) - case 'CircleMemberNewDiscussion': - return ( - - ) - case 'CircleMemberNewDiscussionReply': - return ( - - ) - case 'InCircleNewBroadcastReply': - return ( - - ) - case 'InCircleNewDiscussion': - return ( - - ) - case 'InCircleNewDiscussionReply': - return ( - - ) - case 'CircleBroadcastMentionedYou': - return - case 'CircleDiscussionMentionedYou': - return + case 'CircleNewBroadcastComments': + return + case 'CircleNewDiscussionComments': + return default: return null } @@ -77,15 +36,13 @@ CircleNotice.fragments = { circleNoticeType: type ...CircleNewUserNotice ...CircleInvitationNotice - ...CircleReplyNotice - ...CircleBroadcastMentionedYouNotice - ...CircleDiscussionMentionedYouNotice + ...CircleNewBroadcastComments + ...CircleNewDiscussionComments } ${CircleNewUserNotice.fragments.notice} ${CircleInvitationNotice.fragments.notice} - ${CircleReplyNotice.fragments.notice} - ${CircleBroadcastMentionedYouNotice.fragments.notice} - ${CircleDiscussionMentionedYouNotice.fragments.notice} + ${CircleNewBroadcastComments.fragments.notice} + ${CircleNewDiscussionComments.fragments.notice} `, } diff --git a/src/components/Notice/index.tsx b/src/components/Notice/index.tsx index ed06048089..b3d4bf904a 100644 --- a/src/components/Notice/index.tsx +++ b/src/components/Notice/index.tsx @@ -4,8 +4,6 @@ import React from 'react' import ArticleArticleNotice from './ArticleArticleNotice' import ArticleNotice from './ArticleNotice' import ArticleTagNotice from './ArticleTagNotice' -import CircleArticleNotice from './CircleArticleNotice' -import CircleCommentNotice from './CircleCommentNotice' import CircleNotice from './CircleNotice' import CommentCommentNotice from './CommentCommentNotice' import CommentNotice from './CommentNotice' @@ -48,12 +46,6 @@ const fragments = { ... on TransactionNotice { ...TransactionNotice } - ... on CircleArticleNotice { - ...CircleArticleNotice - } - ... on CircleCommentNotice { - ...CircleCommentNotice - } ... on CircleNotice { ...CircleNotice } @@ -72,8 +64,6 @@ const fragments = { ${CommentNotice.fragments.notice} ${TagNotice.fragments.notice} ${TransactionNotice.fragments.notice} - ${CircleArticleNotice.fragments.notice} - ${CircleCommentNotice.fragments.notice} ${CircleNotice.fragments.notice} ${CryptoNotice.fragments.notice} ${OfficialAnnouncementNotice.fragments.notice} @@ -98,10 +88,6 @@ const BaseNotice: React.FC = ({ notice }) => { return case 'TransactionNotice': return - case 'CircleArticleNotice': - return - case 'CircleCommentNotice': - return case 'CircleNotice': return case 'CryptoNotice': From b6c714fd891bb4c207995f6457cd2e111a4ed16c Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 19 Aug 2022 04:08:02 +0800 Subject: [PATCH 104/122] fix(css): name length limit --- src/components/Tag/styles.css | 1 + src/components/UserDigest/Rich/styles.css | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/components/Tag/styles.css b/src/components/Tag/styles.css index a0cc418f0d..4cbc21746f 100644 --- a/src/components/Tag/styles.css +++ b/src/components/Tag/styles.css @@ -5,6 +5,7 @@ .tag .name { @mixin line-clamp; + max-width: 6.9375rem; line-height: inherit; } diff --git a/src/components/UserDigest/Rich/styles.css b/src/components/UserDigest/Rich/styles.css index 87d324b937..03ce30bd37 100644 --- a/src/components/UserDigest/Rich/styles.css +++ b/src/components/UserDigest/Rich/styles.css @@ -37,6 +37,9 @@ header { } .name { + @mixin line-clamp; + + max-width: 6.9375rem; font-weight: var(--font-weight-medium); } @@ -79,6 +82,7 @@ header { .size-lg { & .content { height: 3rem; + padding-right: 4rem; /* width of extra button */ } & .name, From 040178fb2d8cdc0c1d62a50a752d59730c574209 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 19 Aug 2022 04:08:47 +0800 Subject: [PATCH 105/122] fix: code format --- src/views/TagDetail/RelatedTags/index.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/views/TagDetail/RelatedTags/index.tsx b/src/views/TagDetail/RelatedTags/index.tsx index e6e2c888d9..6b41557a5f 100644 --- a/src/views/TagDetail/RelatedTags/index.tsx +++ b/src/views/TagDetail/RelatedTags/index.tsx @@ -74,7 +74,7 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { const { data, refetch } = usePublicQuery(RELATED_TAGS, { variables: { id: tagId, random: lastRandom || 0 }, }) - + const { edges } = (data?.node?.__typename === 'Tag' && data.node.recommended) || {} @@ -108,9 +108,7 @@ const RelatedTags: React.FC = ({ tagId, inSidebar }) => { if (!inSidebar) { return (
- } - > + }> {_chunk(edges, 5).map((chunks, edgeIndex) => (
From 871f511656829788799911f15397281e7fcc84d1 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 19 Aug 2022 14:57:21 +0800 Subject: [PATCH 106/122] fix(props): add props to control --- src/components/Tag/index.tsx | 25 ++++++++++++---------- src/components/Tag/styles.css | 5 ++++- src/components/TagDigest/Sidebar/index.tsx | 1 + src/components/UserDigest/Rich/index.tsx | 3 +++ src/components/UserDigest/Rich/styles.css | 6 ++++-- src/views/Home/Feed/Authors/index.tsx | 1 + src/views/Home/Sidebar/Authors/index.tsx | 1 + 7 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/components/Tag/index.tsx b/src/components/Tag/index.tsx index 60135dd585..b9e2e24be2 100644 --- a/src/components/Tag/index.tsx +++ b/src/components/Tag/index.tsx @@ -25,6 +25,7 @@ interface TagProps { disabled?: boolean // disable default hasCount?: boolean hasClose?: boolean + hasLengthLimit?: boolean removeTag?: (tag: DigestTag) => void onClick?: () => void } @@ -41,17 +42,17 @@ const fragments = { } export const toDigestTagPlaceholder = (content: string) => - ({ - __typename: 'Tag', - id: content, - content, - articles: { - __typename: 'ArticleConnection', - totalCount: 0, - }, - numArticles: 0, - numAuthors: 0, - } as DigestTag) +({ + __typename: 'Tag', + id: content, + content, + articles: { + __typename: 'ArticleConnection', + totalCount: 0, + }, + numArticles: 0, + numAuthors: 0, +} as DigestTag) export const Tag = ({ tag, @@ -62,6 +63,7 @@ export const Tag = ({ disabled, hasCount = true, hasClose, + hasLengthLimit = false, removeTag, onClick, }: TagProps) => { @@ -71,6 +73,7 @@ export const Tag = ({ active, clickable: !!onClick, disabled: !!disabled && !onClick, + limit: hasLengthLimit }) const path = toPath({ diff --git a/src/components/Tag/styles.css b/src/components/Tag/styles.css index 4cbc21746f..1daeaef252 100644 --- a/src/components/Tag/styles.css +++ b/src/components/Tag/styles.css @@ -5,10 +5,13 @@ .tag .name { @mixin line-clamp; - max-width: 6.9375rem; line-height: inherit; } +.limit .name { + max-width: 6.9375rem; +} + .list { position: relative; display: block; diff --git a/src/components/TagDigest/Sidebar/index.tsx b/src/components/TagDigest/Sidebar/index.tsx index c0800bafda..d95f11e900 100644 --- a/src/components/TagDigest/Sidebar/index.tsx +++ b/src/components/TagDigest/Sidebar/index.tsx @@ -71,6 +71,7 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => { type="plain" iconProps={{ color: 'grey-darker' }} textIconProps={{ color: 'black', weight: 'md', size: 'sm' }} + hasLengthLimit /> diff --git a/src/components/UserDigest/Rich/index.tsx b/src/components/UserDigest/Rich/index.tsx index c0a859e528..aa57551332 100644 --- a/src/components/UserDigest/Rich/index.tsx +++ b/src/components/UserDigest/Rich/index.tsx @@ -35,6 +35,7 @@ export type UserDigestRichProps = { hasState?: boolean hasUnblock?: boolean hasDescriptionReplacement?: boolean + hasLengthLimit?: boolean } & CardProps & AvatarProps @@ -50,6 +51,7 @@ const Rich = ({ hasState = true, hasUnblock, hasDescriptionReplacement = false, + hasLengthLimit = false, ...cardProps }: UserDigestRichProps) => { @@ -62,6 +64,7 @@ const Rich = ({ container: true, [`size-${size}`]: !!size, disabled: isArchived, + limit: hasLengthLimit }) if (isArchived) { diff --git a/src/components/UserDigest/Rich/styles.css b/src/components/UserDigest/Rich/styles.css index 03ce30bd37..aa0cb664fb 100644 --- a/src/components/UserDigest/Rich/styles.css +++ b/src/components/UserDigest/Rich/styles.css @@ -9,6 +9,10 @@ text-decoration: underline; } } + + &.limit .name { + max-width: 6.9375rem; + } } .avatar { @@ -39,7 +43,6 @@ header { .name { @mixin line-clamp; - max-width: 6.9375rem; font-weight: var(--font-weight-medium); } @@ -82,7 +85,6 @@ header { .size-lg { & .content { height: 3rem; - padding-right: 4rem; /* width of extra button */ } & .name, diff --git a/src/views/Home/Feed/Authors/index.tsx b/src/views/Home/Feed/Authors/index.tsx index 146cfa1905..60604a55a8 100644 --- a/src/views/Home/Feed/Authors/index.tsx +++ b/src/views/Home/Feed/Authors/index.tsx @@ -105,6 +105,7 @@ const Authors = () => { id: node.id, }) } + hasLengthLimit /> ))}
diff --git a/src/views/Home/Sidebar/Authors/index.tsx b/src/views/Home/Sidebar/Authors/index.tsx index b2584e57f3..fd3219973f 100644 --- a/src/views/Home/Sidebar/Authors/index.tsx +++ b/src/views/Home/Sidebar/Authors/index.tsx @@ -99,6 +99,7 @@ const Authors = () => { }) } hasState={false} + hasLengthLimit /> ))} From 75ccf60a5492483ad47dc280f708f7f4ffdbbdb3 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Fri, 19 Aug 2022 14:58:03 +0800 Subject: [PATCH 107/122] fix: code format --- src/components/Tag/index.tsx | 24 ++++++++++++------------ src/components/UserDigest/Rich/index.tsx | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/Tag/index.tsx b/src/components/Tag/index.tsx index b9e2e24be2..f4a7842413 100644 --- a/src/components/Tag/index.tsx +++ b/src/components/Tag/index.tsx @@ -42,17 +42,17 @@ const fragments = { } export const toDigestTagPlaceholder = (content: string) => -({ - __typename: 'Tag', - id: content, - content, - articles: { - __typename: 'ArticleConnection', - totalCount: 0, - }, - numArticles: 0, - numAuthors: 0, -} as DigestTag) + ({ + __typename: 'Tag', + id: content, + content, + articles: { + __typename: 'ArticleConnection', + totalCount: 0, + }, + numArticles: 0, + numAuthors: 0, + } as DigestTag) export const Tag = ({ tag, @@ -73,7 +73,7 @@ export const Tag = ({ active, clickable: !!onClick, disabled: !!disabled && !onClick, - limit: hasLengthLimit + limit: hasLengthLimit, }) const path = toPath({ diff --git a/src/components/UserDigest/Rich/index.tsx b/src/components/UserDigest/Rich/index.tsx index aa57551332..ad2e688269 100644 --- a/src/components/UserDigest/Rich/index.tsx +++ b/src/components/UserDigest/Rich/index.tsx @@ -64,7 +64,7 @@ const Rich = ({ container: true, [`size-${size}`]: !!size, disabled: isArchived, - limit: hasLengthLimit + limit: hasLengthLimit, }) if (isArchived) { From 11fd65c7cc582db9eeb7f265317ab62b5e60bc26 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Fri, 19 Aug 2022 14:59:33 +0800 Subject: [PATCH 108/122] feat(notice): revise circle notice copies --- .../CircleNewBroadcastComments.tsx | 10 ++--- .../CircleNewDiscussionComments.tsx | 44 ++++++++++--------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx index 5554fb4e30..a2be802a67 100644 --- a/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx +++ b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx @@ -74,19 +74,19 @@ const CircleNewBroadcastComments = ({ )} {replyCount && !mentionCount && ( - + )} {!replyCount && mentionCount && ( )} {replyCount && mentionCount && ( )} diff --git a/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx b/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx index 9f68bc9fc3..44c0360841 100644 --- a/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx +++ b/src/components/Notice/CircleNotice/CircleNewDiscussionComments.tsx @@ -69,54 +69,58 @@ const CircleNewDiscussionComments = ({ )} <> {isCircleOwner ? ( - + ) : ( - + )} {newDiscussionCount && !replyCount && !mentionCount && ( )} {!newDiscussionCount && replyCount && !mentionCount && ( - + )} {!newDiscussionCount && !replyCount && mentionCount && ( )} {newDiscussionCount && replyCount && !mentionCount && ( )} {newDiscussionCount && !replyCount && mentionCount && ( )} {!newDiscussionCount && replyCount && mentionCount && ( )} {newDiscussionCount && replyCount && mentionCount && ( )} From 5f939e7e85171253a3c12a1db9b0ca9fa44b47c0 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Fri, 19 Aug 2022 15:10:58 +0800 Subject: [PATCH 109/122] feat(notice): revise circle notice copies --- .../CircleNewBroadcastComments.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx index a2be802a67..fea059bbbe 100644 --- a/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx +++ b/src/components/Notice/CircleNotice/CircleNewBroadcastComments.tsx @@ -68,26 +68,34 @@ const CircleNewBroadcastComments = ({ )} <> {isCircleOwner ? ( - + ) : ( - + )} {replyCount && !mentionCount && ( - + )} {!replyCount && mentionCount && ( )} {replyCount && mentionCount && ( )} From 46c5f6efa39464b9cdac1ce29cfbd3982daeb136 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Sat, 20 Aug 2022 11:37:34 +0800 Subject: [PATCH 110/122] fix: revise sidebar --- public/static/icons/8px/arrow-right.svg | 3 +++ src/components/Buttons/ViewAll/index.tsx | 29 +++++++---------------- src/components/Icon/IconArrowRight8.tsx | 5 ++++ src/components/Icon/index.tsx | 1 + src/views/Home/Feed/Tags/index.tsx | 2 +- src/views/Home/SectionHeader/index.tsx | 8 +------ src/views/Home/Sidebar/Authors/index.tsx | 2 +- src/views/Home/Sidebar/Tags/index.tsx | 2 +- src/views/TagDetail/RelatedTags/index.tsx | 8 +------ 9 files changed, 22 insertions(+), 38 deletions(-) create mode 100644 public/static/icons/8px/arrow-right.svg create mode 100644 src/components/Icon/IconArrowRight8.tsx diff --git a/public/static/icons/8px/arrow-right.svg b/public/static/icons/8px/arrow-right.svg new file mode 100644 index 0000000000..86224434fc --- /dev/null +++ b/public/static/icons/8px/arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Buttons/ViewAll/index.tsx b/src/components/Buttons/ViewAll/index.tsx index b9b568b089..3e5e242699 100644 --- a/src/components/Buttons/ViewAll/index.tsx +++ b/src/components/Buttons/ViewAll/index.tsx @@ -1,37 +1,24 @@ import { Button, ButtonProps, - IconArrowDown16, - IconArrowRight16, + IconArrowRight8, TextIcon, Translate, } from '~/components' -type ViewAllButtonProps = { - arrowIconDirection?: 'down' | 'right' -} & ButtonProps - -export const ViewAllButton: React.FC = ({ - arrowIconDirection = 'right', - ...props -}) => { - const icon = - arrowIconDirection === 'right' ? ( - - ) : ( - - ) +type ViewAllButtonProps = ButtonProps +export const ViewAllButton: React.FC = ({ ...props }) => { return (
diff --git a/src/views/Home/SectionHeader/index.tsx b/src/views/Home/SectionHeader/index.tsx index cdb9fd4df2..d9b81b1a2e 100644 --- a/src/views/Home/SectionHeader/index.tsx +++ b/src/views/Home/SectionHeader/index.tsx @@ -30,13 +30,7 @@ const FeedHeader = ({
{rightButton} - {path && viewAll && ( - - )} + {path && viewAll && }
diff --git a/src/views/Home/Sidebar/Authors/index.tsx b/src/views/Home/Sidebar/Authors/index.tsx index fd3219973f..6a93dc008f 100644 --- a/src/views/Home/Sidebar/Authors/index.tsx +++ b/src/views/Home/Sidebar/Authors/index.tsx @@ -98,8 +98,8 @@ const Authors = () => { id: node.id, }) } + hasFollow={false} hasState={false} - hasLengthLimit /> ))} diff --git a/src/views/Home/Sidebar/Tags/index.tsx b/src/views/Home/Sidebar/Tags/index.tsx index 4a710df35e..b562aa2a5c 100644 --- a/src/views/Home/Sidebar/Tags/index.tsx +++ b/src/views/Home/Sidebar/Tags/index.tsx @@ -27,7 +27,7 @@ const SIDEBAR_TAGS = gql` viewer @connection(key: "viewerSidebarTags") { id recommendation { - tags(input: { first: 10, filter: { random: $random } }) { + tags(input: { first: 6, filter: { random: $random } }) { totalCount edges { cursor diff --git a/src/views/TagDetail/RelatedTags/index.tsx b/src/views/TagDetail/RelatedTags/index.tsx index 6b41557a5f..2e84ad72e1 100644 --- a/src/views/TagDetail/RelatedTags/index.tsx +++ b/src/views/TagDetail/RelatedTags/index.tsx @@ -50,13 +50,7 @@ const RelatedTagsHeader = ({ >
{hasShuffle && } - {hasViewAll && ( - - )} + {hasViewAll && }
From e914a4d9b328b4e1e82fcc1b5df7c087b1787dcd Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Sat, 20 Aug 2022 11:53:45 +0800 Subject: [PATCH 111/122] feat: increase recommended author list size (resolved #2585) --- src/views/Follow/PickAuthors/AuthorPicker/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/Follow/PickAuthors/AuthorPicker/index.tsx b/src/views/Follow/PickAuthors/AuthorPicker/index.tsx index 3313204670..c6aff770f1 100644 --- a/src/views/Follow/PickAuthors/AuthorPicker/index.tsx +++ b/src/views/Follow/PickAuthors/AuthorPicker/index.tsx @@ -28,7 +28,7 @@ const AUTHOR_PICKER = gql` } } recommendation { - authors(input: { first: 5, filter: { random: $random } }) { + authors(input: { first: 15, filter: { random: $random } }) { edges { cursor node { From 78d6746cd89ab75811f5a9bb3555c45edd1a5261 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 22 Aug 2022 12:04:20 +0800 Subject: [PATCH 112/122] feat(editor): reorder editor setting dialog --- src/components/Context/Viewer/index.tsx | 1 + .../Editor/SettingsDialog/List/index.tsx | 18 +++++++++--------- src/components/Notice/CircleNotice/index.tsx | 1 - 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/Context/Viewer/index.tsx b/src/components/Context/Viewer/index.tsx index d4002525b0..b1cf1a9d80 100644 --- a/src/components/Context/Viewer/index.tsx +++ b/src/components/Context/Viewer/index.tsx @@ -21,6 +21,7 @@ const ViewerFragments = { } status { state + unreadNoticeCount hasPaymentPassword } ownCircles { diff --git a/src/components/Editor/SettingsDialog/List/index.tsx b/src/components/Editor/SettingsDialog/List/index.tsx index 4541170562..ee11e9e102 100644 --- a/src/components/Editor/SettingsDialog/List/index.tsx +++ b/src/components/Editor/SettingsDialog/List/index.tsx @@ -58,15 +58,6 @@ const SettingsList = ({
    - } - subTitle={} - hint - onClick={() => forward('cover')} - > - - - } subTitle={ @@ -80,6 +71,15 @@ const SettingsList = ({ + } + subTitle={} + hint + onClick={() => forward('cover')} + > + + + } onClick={() => forward('collection')} diff --git a/src/components/Notice/CircleNotice/index.tsx b/src/components/Notice/CircleNotice/index.tsx index a15eb74ef6..8f378700a2 100644 --- a/src/components/Notice/CircleNotice/index.tsx +++ b/src/components/Notice/CircleNotice/index.tsx @@ -8,7 +8,6 @@ import CircleNewUserNotice from './CircleNewUserNotice' import { CircleNotice as NoticeType } from './__generated__/CircleNotice' const CircleNotice = ({ notice }: { notice: NoticeType }) => { - console.log('CircleNotice -> ' + notice.circleNoticeType) switch (notice.circleNoticeType) { case 'CircleNewSubscriber': return From 4127bc6d0fd81325348cd54c814be81d2ca81595 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 22 Aug 2022 13:01:27 +0800 Subject: [PATCH 113/122] feat: add back PWA --- next.config.js | 36 +- package-lock.json | 2118 +++++++++++++++++++++++++++++++++++---------- package.json | 1 + 3 files changed, 1680 insertions(+), 475 deletions(-) diff --git a/next.config.js b/next.config.js index f962145777..90f4bb440a 100644 --- a/next.config.js +++ b/next.config.js @@ -7,6 +7,8 @@ const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true', }) +const withOffline = require('next-offline') + const packageJson = require('./package.json') const isProd = process.env.NEXT_PUBLIC_RUNTIME_ENV === 'production' @@ -114,7 +116,39 @@ let plugins = [ ] if (!isStatic) { - plugins = [...plugins] + plugins = [ + ...plugins, + // offline + [ + withOffline, + { + // FIXME: https://github.com/hanford/next-offline/issues/195 + generateInDevMode: false, + workboxOpts: { + swDest: '../public/service-worker.js', + runtimeCaching: [ + { + urlPattern: '/', + handler: 'NetworkFirst', + options: { + cacheName: 'homepage-cache', + }, + }, + { + urlPattern: new RegExp('/_next/static/'), + handler: 'CacheFirst', + options: { + cacheName: 'static-cache', + cacheableResponse: { + statuses: [0, 200], + }, + }, + }, + ], + }, + }, + ], + ] } module.exports = withPlugins(plugins, nextConfig) diff --git a/package-lock.json b/package-lock.json index dc3bd6849c..19637f4e29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,6 +60,7 @@ "lodash": "^4.17.21", "next": "^12.1.4", "next-compose-plugins": "^2.2.1", + "next-offline": "^5.0.5", "next-with-apollo": "^5.3.0", "nprogress": "^0.2.0", "number-precision": "^1.5.1", @@ -158,7 +159,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -171,7 +171,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -348,7 +347,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", - "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -378,7 +376,6 @@ "version": "7.18.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, "dependencies": { "@babel/types": "^7.18.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -392,7 +389,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -408,8 +404,7 @@ "node_modules/@babel/core/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@babel/generator": { "version": "7.12.11", @@ -435,7 +430,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -447,7 +441,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, "dependencies": { "@babel/helper-explode-assignable-expression": "^7.10.4", "@babel/types": "^7.10.4" @@ -474,7 +467,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.6", @@ -495,7 +487,6 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "regexpu-core": "^4.7.1" @@ -508,7 +499,6 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/types": "^7.10.5", @@ -569,7 +559,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", - "dev": true, "dependencies": { "@babel/types": "^7.12.1" } @@ -601,7 +590,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -624,7 +612,6 @@ "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -643,7 +630,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -663,7 +649,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", @@ -674,7 +659,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-member-expression-to-functions": "^7.18.6", @@ -690,7 +674,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, "dependencies": { "@babel/types": "^7.18.6" }, @@ -702,7 +685,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -741,7 +723,6 @@ "version": "7.12.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", - "dev": true, "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/template": "^7.10.4", @@ -753,7 +734,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "dev": true, "dependencies": { "@babel/template": "^7.18.6", "@babel/traverse": "^7.18.6", @@ -791,7 +771,6 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.12.1", @@ -805,7 +784,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -837,7 +815,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" @@ -866,7 +843,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -879,7 +855,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" @@ -892,7 +867,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -905,7 +879,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" @@ -918,7 +891,6 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -931,7 +903,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", @@ -945,7 +916,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" @@ -958,7 +928,6 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -975,7 +944,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -988,7 +956,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1004,7 +971,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1028,7 +994,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1055,7 +1020,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1082,7 +1046,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1121,7 +1084,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1145,7 +1107,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1157,7 +1118,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1169,7 +1129,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1181,7 +1140,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1193,7 +1151,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1205,7 +1162,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1217,7 +1173,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1244,7 +1199,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1256,7 +1210,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -1270,7 +1223,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1282,7 +1234,6 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1294,7 +1245,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-define-map": "^7.10.4", @@ -1313,7 +1263,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1325,7 +1274,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1337,7 +1285,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1350,7 +1297,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1362,7 +1308,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", - "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -1391,7 +1336,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1403,7 +1347,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", - "dev": true, "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -1416,7 +1359,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1428,7 +1370,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1440,7 +1381,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -1454,7 +1394,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -1469,7 +1408,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", - "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.10.4", "@babel/helper-module-transforms": "^7.12.1", @@ -1485,7 +1423,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1498,7 +1435,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1" }, @@ -1510,7 +1446,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1522,7 +1457,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.12.1" @@ -1535,7 +1469,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1547,7 +1480,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1624,7 +1556,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", - "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" }, @@ -1636,7 +1567,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1718,7 +1648,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1730,7 +1659,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" @@ -1743,7 +1671,6 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1755,7 +1682,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1767,7 +1693,6 @@ "version": "7.12.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1796,7 +1721,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1808,7 +1732,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -1821,7 +1744,6 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.12.7", "@babel/helper-compilation-targets": "^7.12.5", @@ -1898,7 +1820,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, "bin": { "semver": "bin/semver" } @@ -1924,7 +1845,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -3651,6 +3571,45 @@ "node": ">=6" } }, + "node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'" + }, + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "deprecated": "Switch to 'npm install joi'", + "dependencies": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dependencies": { + "@hapi/hoek": "^8.3.0" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -7525,6 +7484,52 @@ "zdog": ">=1.0" } }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "dependencies": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, "node_modules/@samverschueren/stream-to-observable": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", @@ -11650,6 +11655,24 @@ "postcss-syntax": ">=0.36.2" } }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", + "dependencies": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", @@ -12448,8 +12471,7 @@ "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, "node_modules/@types/express": { "version": "4.17.11", @@ -12830,6 +12852,14 @@ "@types/react": "*" } }, + "node_modules/@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -13527,7 +13557,6 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -13690,7 +13719,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13706,7 +13734,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, "peerDependencies": { "ajv": ">=5.0.0" } @@ -13715,7 +13742,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -13762,7 +13788,6 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, "engines": { "node": ">=6" } @@ -14454,8 +14479,7 @@ "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "node_modules/are-we-there-yet": { "version": "2.0.0", @@ -14553,7 +14577,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, "dependencies": { "array-uniq": "^1.0.1" }, @@ -14565,7 +14588,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -14908,6 +14930,17 @@ "follow-redirects": "^1.14.0" } }, + "node_modules/babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "dependencies": { + "babylon": "^6.18.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/babel-jest": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", @@ -15216,7 +15249,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, "dependencies": { "object.assign": "^4.1.0" } @@ -15499,6 +15531,20 @@ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", "dev": true }, + "node_modules/babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==" + }, + "node_modules/babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==", + "dependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, "node_modules/babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", @@ -15567,7 +15613,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -15578,14 +15623,20 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, "hasInstallScript": true }, "node_modules/babel-runtime/node_modules/regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bin": { + "babylon": "bin/babylon.js" + } }, "node_modules/backo2": { "version": "1.0.2", @@ -15761,7 +15812,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, "engines": { "node": "*" } @@ -15813,8 +15863,7 @@ "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/bn.js": { "version": "5.2.1", @@ -16294,6 +16343,17 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -16408,7 +16468,6 @@ "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, "dependencies": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -16431,7 +16490,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -16439,8 +16497,7 @@ "node_modules/cacache/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/cache-base": { "version": "1.0.1", @@ -16860,8 +16917,7 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "node_modules/chrome-trace-event": { "version": "1.0.3", @@ -17571,8 +17627,7 @@ "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/commitizen": { "version": "4.2.4", @@ -17701,7 +17756,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true, "engines": { "node": ">=4.0.0" } @@ -17709,8 +17763,7 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, "node_modules/component-emitter": { "version": "1.3.0", @@ -17772,7 +17825,6 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, "engines": [ "node >= 0.8" ], @@ -17787,7 +17839,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17802,7 +17853,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -17876,7 +17926,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -17898,7 +17947,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, "dependencies": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -17925,6 +17973,259 @@ "toggle-selection": "^1.0.6" } }, + "node_modules/copy-webpack-plugin": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", + "dependencies": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "node_modules/copy-webpack-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/copy-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/core-js": { "version": "3.16.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.1.tgz", @@ -17971,8 +18272,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -18240,6 +18540,14 @@ "node": "*" } }, + "node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", + "engines": { + "node": ">=4" + } + }, "node_modules/css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", @@ -18875,8 +19183,7 @@ "node_modules/cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "node_modules/cz-conventional-changelog": { "version": "3.3.0", @@ -19806,7 +20113,6 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -19818,7 +20124,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -19833,7 +20138,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -19962,7 +20266,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, "engines": { "node": ">= 4" } @@ -19994,7 +20297,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -20503,11 +20805,15 @@ "node": ">=8.3.0" } }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -21380,8 +21686,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.1.2", @@ -21513,8 +21818,7 @@ "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" }, "node_modules/figures": { "version": "3.2.0", @@ -21862,7 +22166,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -21872,7 +22175,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21887,7 +22189,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -22262,7 +22563,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -22272,7 +22572,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22287,7 +22586,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -22329,7 +22627,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -22341,7 +22638,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22356,7 +22652,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -22616,7 +22911,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -22650,6 +22944,11 @@ "node": ">=6" } }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -23174,8 +23473,7 @@ "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "node_modules/graphql": { "version": "14.7.0", @@ -24153,8 +24451,7 @@ "node_modules/iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, "node_modules/ignore": { "version": "5.2.0", @@ -24268,7 +24565,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -24291,8 +24587,7 @@ "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "node_modules/inflected": { "version": "2.1.0", @@ -24813,7 +25108,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -24855,7 +25149,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -24900,6 +25193,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -24936,6 +25234,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -25032,6 +25338,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -25220,8 +25534,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "node_modules/isexe": { "version": "2.0.0", @@ -29406,8 +29719,7 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify": { "version": "1.0.1", @@ -29427,7 +29739,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -30014,8 +30325,7 @@ "node_modules/lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -30113,7 +30423,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" @@ -30123,7 +30432,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, "dependencies": { "lodash._reinterpolate": "^3.0.0" } @@ -30431,6 +30739,14 @@ "lz-string": "bin/bin.js" } }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -30814,8 +31130,7 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", @@ -31127,8 +31442,7 @@ "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "node_modules/minimist-options": { "version": "4.1.0", @@ -31227,7 +31541,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, "dependencies": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -31273,7 +31586,6 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -31621,7 +31933,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, "dependencies": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -31799,6 +32110,49 @@ "resolved": "https://registry.npmjs.org/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz", "integrity": "sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==" }, + "node_modules/next-offline": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/next-offline/-/next-offline-5.0.5.tgz", + "integrity": "sha512-GOpq+mD7ecrgW+A8+Y31BLNca3b8EeyRMhW5C9PsCc/C2RO1AzrssgIgQIrRulFuXDvXuPE5hWI4/DTHeOUp6Q==", + "dependencies": { + "copy-webpack-plugin": "~5.1.2", + "fs-extra": "~8.1.0", + "workbox-webpack-plugin": "^5.0.0" + }, + "peerDependencies": { + "next": ">=7.0.0", + "webpack": "^4.19.1" + } + }, + "node_modules/next-offline/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/next-offline/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/next-offline/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -32115,7 +32469,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -32337,7 +32690,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -32990,7 +33342,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, "dependencies": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -33001,7 +33352,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -33016,7 +33366,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -33252,8 +33601,7 @@ "node_modules/path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "node_modules/path-exists": { "version": "4.0.0", @@ -33336,7 +33684,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -33348,7 +33695,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, "engines": { "node": ">=6" } @@ -35300,6 +35646,17 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -35388,8 +35745,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", @@ -35403,8 +35759,7 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "node_modules/promise-polyfill": { "version": "8.1.3", @@ -35641,7 +35996,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -35651,7 +36005,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, "dependencies": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -35662,7 +36015,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -35672,7 +36024,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -37053,14 +37404,12 @@ "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, "dependencies": { "regenerate": "^1.4.0" }, @@ -37077,7 +37426,6 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } @@ -37121,7 +37469,6 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, "dependencies": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -37137,14 +37484,12 @@ "node_modules/regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "node_modules/regjsparser": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz", "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==", - "dev": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -37156,7 +37501,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, "bin": { "jsesc": "bin/jsesc" } @@ -37878,7 +38222,6 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -37929,6 +38272,73 @@ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true }, + "node_modules/rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "7 || ^7.0.0-rc.2", + "rollup": ">=0.60.0 <3" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "peerDependencies": { + "rollup": ">=0.66.0 <3" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + }, "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -37971,7 +38381,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, "dependencies": { "aproba": "^1.1.1" } @@ -38303,7 +38712,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -38771,14 +39179,12 @@ "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -38808,7 +39214,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -38817,8 +39222,12 @@ "node_modules/source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "node_modules/space-separated-tokens": { "version": "1.1.5", @@ -38926,7 +39335,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, "dependencies": { "figgy-pudding": "^3.5.1" } @@ -39333,7 +39741,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -39379,8 +39786,7 @@ "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "node_modules/strict-uri-encode": { "version": "2.0.0", @@ -39555,6 +39961,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -39576,6 +39995,18 @@ "node": ">=4" } }, + "node_modules/strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "dependencies": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -40472,7 +40903,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -40761,6 +41191,35 @@ "memoizerific": "^1.11.3" } }, + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -40781,7 +41240,6 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -41021,7 +41479,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -41031,7 +41488,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -41046,7 +41502,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -41772,8 +42227,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -41847,7 +42301,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true, "engines": { "node": ">=4" } @@ -41856,7 +42309,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" @@ -41869,7 +42321,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true, "engines": { "node": ">=4" } @@ -41878,7 +42329,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true, "engines": { "node": ">=4" } @@ -41949,7 +42399,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, "dependencies": { "unique-slug": "^2.0.0" } @@ -41958,11 +42407,21 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, "dependencies": { "imurmurhash": "^0.1.4" } }, + "node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/unist-builder": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", @@ -42177,8 +42636,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true, "engines": { "node": ">=4", "yarn": "*" @@ -42218,7 +42675,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -42454,7 +42910,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, "bin": { "uuid": "bin/uuid" } @@ -43228,7 +43683,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, "dependencies": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" @@ -43254,7 +43708,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -43636,6 +44089,219 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "node_modules/workbox-background-sync": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", + "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", + "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-build": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", + "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", + "dependencies": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/workbox-build/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", + "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-core": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", + "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==" + }, + "node_modules/workbox-expiration": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", + "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-google-analytics": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", + "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", + "dependencies": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", + "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-precaching": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", + "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-range-requests": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", + "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-routing": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", + "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-strategies": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", + "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "node_modules/workbox-streams": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", + "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "node_modules/workbox-sw": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", + "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==" + }, + "node_modules/workbox-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/workbox-window": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", + "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, "node_modules/worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -44170,7 +44836,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -44180,7 +44845,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, "requires": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -44302,7 +44966,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", - "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -44325,7 +44988,6 @@ "version": "7.18.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, "requires": { "@babel/types": "^7.18.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -44336,7 +44998,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -44344,8 +45005,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -44372,7 +45032,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -44381,7 +45040,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, "requires": { "@babel/helper-explode-assignable-expression": "^7.10.4", "@babel/types": "^7.10.4" @@ -44402,7 +45060,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz", "integrity": "sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.6", @@ -44417,7 +45074,6 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "regexpu-core": "^4.7.1" @@ -44427,7 +45083,6 @@ "version": "7.10.5", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/types": "^7.10.5", @@ -44476,7 +45131,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", - "dev": true, "requires": { "@babel/types": "^7.12.1" } @@ -44502,7 +45156,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz", "integrity": "sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -44519,7 +45172,6 @@ "version": "7.18.8", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz", "integrity": "sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", @@ -44535,7 +45187,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -44549,7 +45200,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", @@ -44560,7 +45210,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz", "integrity": "sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==", - "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.6", "@babel/helper-member-expression-to-functions": "^7.18.6", @@ -44573,7 +45222,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, "requires": { "@babel/types": "^7.18.6" } @@ -44582,7 +45230,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -44609,7 +45256,6 @@ "version": "7.12.3", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/template": "^7.10.4", @@ -44621,7 +45267,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "dev": true, "requires": { "@babel/template": "^7.18.6", "@babel/traverse": "^7.18.6", @@ -44647,7 +45292,6 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.12.1", @@ -44658,7 +45302,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -44681,7 +45324,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" @@ -44701,7 +45343,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -44711,7 +45352,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" @@ -44721,7 +45361,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -44731,7 +45370,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" @@ -44741,7 +45379,6 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -44751,7 +45388,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", @@ -44762,7 +45398,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" @@ -44772,7 +45407,6 @@ "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", @@ -44783,7 +45417,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -44793,7 +45426,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -44803,7 +45435,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44821,7 +45452,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -44839,7 +45469,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44857,7 +45486,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } @@ -44884,7 +45512,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44902,7 +45529,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -44911,7 +45537,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44920,7 +45545,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -44929,7 +45553,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44938,7 +45561,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44947,7 +45569,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -44956,7 +45577,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -44974,7 +45594,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -44983,7 +45602,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -44994,7 +45612,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45003,7 +45620,6 @@ "version": "7.12.12", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45012,7 +45628,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", - "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-define-map": "^7.10.4", @@ -45028,7 +45643,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45037,7 +45651,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45046,7 +45659,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45056,7 +45668,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45065,7 +45676,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", - "dev": true, "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -45085,7 +45695,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45094,7 +45703,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", - "dev": true, "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -45104,7 +45712,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45113,7 +45720,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45122,7 +45728,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -45133,7 +45738,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", @@ -45145,7 +45749,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", - "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.10.4", "@babel/helper-module-transforms": "^7.12.1", @@ -45158,7 +45761,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", - "dev": true, "requires": { "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45168,7 +45770,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1" } @@ -45177,7 +45778,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45186,7 +45786,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.12.1" @@ -45196,7 +45795,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45205,7 +45803,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45264,7 +45861,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", - "dev": true, "requires": { "regenerator-transform": "^0.14.2" } @@ -45273,7 +45869,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45334,7 +45929,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45343,7 +45937,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" @@ -45353,7 +45946,6 @@ "version": "7.12.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45362,7 +45954,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45371,7 +45962,6 @@ "version": "7.12.10", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45391,7 +45981,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -45400,7 +45989,6 @@ "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", - "dev": true, "requires": { "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" @@ -45410,7 +45998,6 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", - "dev": true, "requires": { "@babel/compat-data": "^7.12.7", "@babel/helper-compilation-targets": "^7.12.5", @@ -45483,8 +46070,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -45503,7 +46089,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -46702,6 +47287,40 @@ "protobufjs": "^6.8.6" } }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -49628,6 +50247,37 @@ "@react-spring/types": "~9.4.0" } }, + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, "@samverschueren/stream-to-observable": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", @@ -52522,6 +53172,22 @@ "unist-util-find-all-after": "^3.0.2" } }, + "@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", + "requires": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + }, + "dependencies": { + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + } + } + }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", @@ -53181,8 +53847,7 @@ "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, "@types/express": { "version": "4.17.11", @@ -53563,6 +54228,14 @@ "@types/react": "*" } }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "requires": { + "@types/node": "*" + } + }, "@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -54240,8 +54913,7 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "6.0.0", @@ -54367,7 +55039,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -54378,14 +55049,12 @@ "ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, "ansi-align": { "version": "3.0.1", @@ -54424,8 +55093,7 @@ "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" }, "ansi-escapes": { "version": "4.3.1", @@ -54977,8 +55645,7 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { "version": "2.0.0", @@ -55055,7 +55722,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, "requires": { "array-uniq": "^1.0.1" } @@ -55063,8 +55729,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { "version": "0.3.2", @@ -55335,6 +56000,14 @@ "follow-redirects": "^1.14.0" } }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "requires": { + "babylon": "^6.18.0" + } + }, "babel-jest": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", @@ -55576,7 +56249,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, "requires": { "object.assign": "^4.1.0" } @@ -55812,6 +56484,20 @@ "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", "dev": true }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==" + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==", + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", @@ -55871,7 +56557,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -55880,17 +56565,20 @@ "core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" } } }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -56024,8 +56712,7 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "bignumber.js": { "version": "9.0.1", @@ -56070,8 +56757,7 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { "version": "5.2.1", @@ -56452,6 +57138,11 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" + }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -56532,7 +57223,6 @@ "version": "12.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, "requires": { "bluebird": "^3.5.5", "chownr": "^1.1.1", @@ -56555,7 +57245,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "requires": { "yallist": "^3.0.2" } @@ -56563,8 +57252,7 @@ "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, @@ -56890,8 +57578,7 @@ "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "chrome-trace-event": { "version": "1.0.3", @@ -57442,8 +58129,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commitizen": { "version": "4.2.4", @@ -57545,14 +58231,12 @@ "common-tags": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, "component-emitter": { "version": "1.3.0", @@ -57607,7 +58291,6 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -57619,7 +58302,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -57634,7 +58316,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -57706,7 +58387,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -57725,7 +58405,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, "requires": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -57749,6 +58428,197 @@ "toggle-selection": "^1.0.6" } }, + "copy-webpack-plugin": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "requires": { + "path-type": "^3.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" + } + } + }, "core-js": { "version": "3.16.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.1.tgz", @@ -57780,8 +58650,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "7.0.1", @@ -58006,6 +58875,11 @@ "randomfill": "^1.0.3" } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==" + }, "css-blank-pseudo": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", @@ -58505,8 +59379,7 @@ "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "cz-conventional-changelog": { "version": "3.3.0", @@ -59275,7 +60148,6 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, "requires": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -59287,7 +60159,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -59302,7 +60173,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -59419,8 +60289,7 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, "emotion-theming": { "version": "10.3.0", @@ -59442,7 +60311,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -59854,11 +60722,15 @@ "c8": "^7.6.0" } }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -60574,8 +61446,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-diff": { "version": "1.1.2", @@ -60698,8 +61569,7 @@ "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" }, "figures": { "version": "3.2.0", @@ -60961,7 +61831,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, "requires": { "inherits": "^2.0.3", "readable-stream": "^2.3.6" @@ -60971,7 +61840,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -60986,7 +61854,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -61243,7 +62110,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -61253,7 +62119,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -61268,7 +62133,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -61306,7 +62170,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "iferr": "^0.1.5", @@ -61318,7 +62181,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -61333,7 +62195,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -61538,8 +62399,7 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", @@ -61561,6 +62421,11 @@ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -61970,8 +62835,7 @@ "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, "graphql": { "version": "14.7.0", @@ -62719,8 +63583,7 @@ "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, "ignore": { "version": "5.2.0", @@ -62800,8 +63663,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { "version": "4.0.0", @@ -62818,8 +63680,7 @@ "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "inflected": { "version": "2.1.0", @@ -63216,8 +64077,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -63250,7 +64110,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -63278,6 +64137,11 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -63299,6 +64163,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" + }, "is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", @@ -63370,6 +64239,11 @@ "has-tostringtag": "^1.0.0" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" + }, "is-retry-allowed": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", @@ -63505,8 +64379,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -66756,8 +67629,7 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stable-stringify": { "version": "1.0.1", @@ -66776,8 +67648,7 @@ "json5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonfile": { "version": "6.1.0", @@ -67254,8 +68125,7 @@ "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, "lodash.camelcase": { "version": "4.3.0", @@ -67353,7 +68223,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" @@ -67363,7 +68232,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, "requires": { "lodash._reinterpolate": "^3.0.0" } @@ -67603,6 +68471,14 @@ "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", "dev": true }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -67908,8 +68784,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1", @@ -68155,8 +69030,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minimist-options": { "version": "4.1.0", @@ -68233,7 +69107,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, "requires": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -68272,7 +69145,6 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -68547,7 +69419,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, "requires": { "aproba": "^1.1.1", "copy-concurrently": "^1.0.0", @@ -68681,6 +69552,41 @@ "resolved": "https://registry.npmjs.org/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz", "integrity": "sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==" }, + "next-offline": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/next-offline/-/next-offline-5.0.5.tgz", + "integrity": "sha512-GOpq+mD7ecrgW+A8+Y31BLNca3b8EeyRMhW5C9PsCc/C2RO1AzrssgIgQIrRulFuXDvXuPE5hWI4/DTHeOUp6Q==", + "requires": { + "copy-webpack-plugin": "~5.1.2", + "fs-extra": "~8.1.0", + "workbox-webpack-plugin": "^5.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -68948,8 +69854,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", @@ -69123,7 +70028,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -69613,7 +70517,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, "requires": { "cyclist": "^1.0.1", "inherits": "^2.0.3", @@ -69624,7 +70527,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -69639,7 +70541,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -69850,8 +70751,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { "version": "4.0.0", @@ -69918,14 +70818,12 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "pirates": { "version": "4.0.5", @@ -71408,6 +72306,11 @@ "fast-diff": "^1.1.2" } }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" + }, "pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -71477,8 +72380,7 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", @@ -71489,8 +72391,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "promise-polyfill": { "version": "8.1.3", @@ -71697,7 +72598,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -71707,7 +72607,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, "requires": { "duplexify": "^3.6.0", "inherits": "^2.0.3", @@ -71718,7 +72617,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -71729,8 +72627,7 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "q": { "version": "1.5.1", @@ -72771,14 +73668,12 @@ "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "regenerate-unicode-properties": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, "requires": { "regenerate": "^1.4.0" } @@ -72792,7 +73687,6 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, "requires": { "@babel/runtime": "^7.8.4" } @@ -72827,7 +73721,6 @@ "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, "requires": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -72840,14 +73733,12 @@ "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "regjsparser": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz", "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==", - "dev": true, "requires": { "jsesc": "~0.5.0" }, @@ -72855,8 +73746,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" } } }, @@ -73407,7 +74297,6 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -73451,6 +74340,63 @@ } } }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "dependencies": { + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" + } + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -73473,7 +74419,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, "requires": { "aproba": "^1.1.1" } @@ -73731,7 +74676,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -74111,14 +75055,12 @@ "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { "version": "1.0.2", @@ -74142,7 +75084,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -74151,8 +75092,12 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "space-separated-tokens": { "version": "1.1.5", @@ -74239,7 +75184,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, "requires": { "figgy-pudding": "^3.5.1" } @@ -74552,7 +75496,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" @@ -74600,8 +75543,7 @@ "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "strict-uri-encode": { "version": "2.0.0", @@ -74727,6 +75669,16 @@ "es-abstract": "^1.19.5" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -74742,6 +75694,15 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -75390,7 +76351,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -75618,6 +76578,28 @@ "memoizerific": "^1.11.3" } }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + } + } + }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -75632,7 +76614,6 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -75809,7 +76790,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -75819,7 +76799,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -75834,7 +76813,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -76385,8 +77363,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -76439,14 +77416,12 @@ "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" }, "unicode-match-property-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" @@ -76455,14 +77430,12 @@ "unicode-match-property-value-ecmascript": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" }, "unicode-property-aliases-ecmascript": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "unified": { "version": "9.2.0", @@ -76508,7 +77481,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, "requires": { "unique-slug": "^2.0.0" } @@ -76517,11 +77489,18 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "unist-builder": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", @@ -76678,9 +77657,7 @@ "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "upper-case": { "version": "2.0.2", @@ -76720,7 +77697,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -76881,8 +77857,7 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "uuid-browser": { "version": "3.1.0", @@ -77621,7 +78596,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, "requires": { "ansi-colors": "^3.0.0", "uuid": "^3.3.2" @@ -77641,7 +78615,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -77805,6 +78778,203 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "workbox-background-sync": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", + "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-broadcast-update": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", + "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-build": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", + "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", + "requires": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "workbox-cacheable-response": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", + "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-core": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", + "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==" + }, + "workbox-expiration": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", + "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-google-analytics": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", + "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", + "requires": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "workbox-navigation-preload": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", + "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-precaching": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", + "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-range-requests": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", + "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-routing": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", + "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-strategies": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", + "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-streams": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", + "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-sw": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", + "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==" + }, + "workbox-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", + "requires": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + } + }, + "workbox-window": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", + "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", + "requires": { + "workbox-core": "^5.1.4" + } + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", diff --git a/package.json b/package.json index 6bf2deedb3..b567938596 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ "lodash": "^4.17.21", "next": "^12.1.4", "next-compose-plugins": "^2.2.1", + "next-offline": "^5.0.5", "next-with-apollo": "^5.3.0", "nprogress": "^0.2.0", "number-precision": "^1.5.1", From b6cbeef9704571d95cf0730e49a7397bf6b3e95d Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 22 Aug 2022 15:42:26 +0800 Subject: [PATCH 114/122] feat: replace `process.browser` with `typeof window` --- src/common/utils/cache.ts | 4 ++-- src/common/utils/firebase.ts | 2 +- src/common/utils/route.ts | 2 +- src/common/utils/withApollo.ts | 2 +- src/components/Context/Language/LanguageContext.tsx | 4 ++-- .../Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx | 2 +- src/components/Dialogs/ShareDialog/index.tsx | 5 ++--- src/components/DropdownDialog/index.tsx | 2 +- src/components/Fingerprint/index.tsx | 2 +- .../Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx | 2 +- src/components/Forms/PaymentForm/Processing/index.tsx | 2 +- .../Forms/PaymentForm/SubscribeCircle/Processing/index.tsx | 2 +- src/components/GQL/error.tsx | 2 +- src/components/Layout/SideNav/index.tsx | 2 +- src/components/Layout/UnreadIcon/Follow.tsx | 2 +- src/components/Layout/UnreadIcon/Notification.tsx | 2 +- src/components/Search/SearchBar/index.tsx | 2 +- src/components/Share/EmbedShare/index.tsx | 5 ++--- .../ArticleDetail/EditMode/PublishState/PendingState.tsx | 2 +- src/views/ArticleDetail/Responses/LatestResponses/index.tsx | 2 +- src/views/Home/Feed/MainFeed/index.tsx | 2 +- src/views/Me/DraftDetail/PublishState/PendingState.tsx | 2 +- src/views/Me/Settings/Settings/Wallet/index.tsx | 2 +- 23 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/common/utils/cache.ts b/src/common/utils/cache.ts index ee11c4ae2a..bda8382a9f 100644 --- a/src/common/utils/cache.ts +++ b/src/common/utils/cache.ts @@ -10,7 +10,7 @@ const APP_VERSION_KEY = 'app-version' let persistor: any = null export const clearPersistCache = async () => { - if (!persistor || !process.browser) { + if (!persistor || !typeof window) { return } @@ -28,7 +28,7 @@ export const clearPersistCache = async () => { } export const setupPersistCache = async (inMemoryCache: any) => { - if (!process.browser) { + if (!typeof window) { return } diff --git a/src/common/utils/firebase.ts b/src/common/utils/firebase.ts index 9fb712427d..7e91196e04 100644 --- a/src/common/utils/firebase.ts +++ b/src/common/utils/firebase.ts @@ -8,7 +8,7 @@ export const initializeFirebase = async () => { const firebase = await import('firebase/app') // FIXME: https://github.com/zeit/next.js/issues/1999 - if (firebase.apps.length || !process.browser) { + if (firebase.apps.length || !typeof window) { return } diff --git a/src/common/utils/route.ts b/src/common/utils/route.ts index df0f25366f..c1dc200427 100644 --- a/src/common/utils/route.ts +++ b/src/common/utils/route.ts @@ -269,7 +269,7 @@ export const redirectToLogin = () => { export const appendTarget = (href: string, fallbackCurrent?: boolean) => { let target = '' - if (process.browser) { + if (typeof window) { target = getTarget() target = fallbackCurrent ? getEncodedCurrent() : target } diff --git a/src/common/utils/withApollo.ts b/src/common/utils/withApollo.ts index 9cfcb082c4..ab7499837a 100644 --- a/src/common/utils/withApollo.ts +++ b/src/common/utils/withApollo.ts @@ -200,7 +200,7 @@ const customWithApollo = withApollo(({ ctx, headers, initialState }) => { const host = ctx?.req?.headers.host || (typeof window === 'undefined' ? '' : _get(window, 'location.host')) - const cookie = headers?.cookie || (process.browser ? document.cookie : '') + const cookie = headers?.cookie || (typeof window ? document.cookie : '') const client = new ApolloClient({ link: ApolloLink.from([ diff --git a/src/components/Context/Language/LanguageContext.tsx b/src/components/Context/Language/LanguageContext.tsx index e9ebc18ce2..074fd9278f 100644 --- a/src/components/Context/Language/LanguageContext.tsx +++ b/src/components/Context/Language/LanguageContext.tsx @@ -48,7 +48,7 @@ export const LanguageProvider = ({ const viewerLang = viewer?.settings?.language let storedLang - if (process.browser) { + if (typeof window) { storedLang = storage.get(STORAGE_KEY_LANGUAGE) } @@ -57,7 +57,7 @@ export const LanguageProvider = ({ let lang = (viewer.isAuthed && viewerLang) || localLang // fallback to browser preference - if (process.browser && !lang && navigator?.language) { + if (typeof window && !lang && navigator?.language) { lang = langConvert.bcp472sys(navigator.language) } diff --git a/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx b/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx index 5b6dc57af5..1cf2bf2fe9 100644 --- a/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx +++ b/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx @@ -29,7 +29,7 @@ const Binding: React.FC = ({ prevStep, nextStep, windowRef }) => { pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !process.browser, + skip: !typeof window, }) const likerId = data?.viewer?.liker.likerId diff --git a/src/components/Dialogs/ShareDialog/index.tsx b/src/components/Dialogs/ShareDialog/index.tsx index 7b43130cd1..9c0d79c44e 100644 --- a/src/components/Dialogs/ShareDialog/index.tsx +++ b/src/components/Dialogs/ShareDialog/index.tsx @@ -63,14 +63,13 @@ function tryDecodeUrl(url: string) { export const ShareDialog = (props: ShareDialogProps) => { const { title, path, tags } = props const shareLink = tryDecodeUrl( - process.browser + typeof window ? path ? `${window.location.origin}${path}` : window.location.href : '' ) - const shareTitle = - title || (process.browser ? window.document.title || '' : '') + const shareTitle = title || (typeof window ? window.document.title || '' : '') const onShare = async (fallbackShare: () => void) => { const navigator = window.navigator as any diff --git a/src/components/DropdownDialog/index.tsx b/src/components/DropdownDialog/index.tsx index dff2832ec5..ccc5458da6 100644 --- a/src/components/DropdownDialog/index.tsx +++ b/src/components/DropdownDialog/index.tsx @@ -127,7 +127,7 @@ const BaseDropdownDialog = ({ onClickOutside={closeDialog} visible={show} zIndex={Z_INDEX.OVER_BOTTOM_BAR} - appendTo={process.browser ? document.body : undefined} + appendTo={typeof window ? document.body : undefined} {...dropdown} content={ diff --git a/src/components/Fingerprint/index.tsx b/src/components/Fingerprint/index.tsx index f3f2a34143..7d80ddd0fe 100644 --- a/src/components/Fingerprint/index.tsx +++ b/src/components/Fingerprint/index.tsx @@ -6,7 +6,7 @@ import { storage } from '~/common/utils' const Fingerprint = () => { useEffect(() => { - if (!process.browser || typeof window === 'undefined') { + if (!typeof window || typeof window === 'undefined') { return } diff --git a/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx b/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx index d1d0caee29..c00e9e01ba 100644 --- a/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx +++ b/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx @@ -30,7 +30,7 @@ const Onboarding: React.FC = ({ nextStep }) => { pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !process.browser, + skip: !typeof window, }) const stripeAccount = data?.viewer?.wallet.stripeAccount?.id diff --git a/src/components/Forms/PaymentForm/Processing/index.tsx b/src/components/Forms/PaymentForm/Processing/index.tsx index ea11d39cdc..33dd15d434 100644 --- a/src/components/Forms/PaymentForm/Processing/index.tsx +++ b/src/components/Forms/PaymentForm/Processing/index.tsx @@ -45,7 +45,7 @@ const PaymentProcessingForm: React.FC = ({ pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !process.browser, + skip: !typeof window, }) const txState = _get(data, 'viewer.wallet.transactions.edges.0.node.state') diff --git a/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx b/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx index b647b93964..9aecdedc7f 100644 --- a/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx +++ b/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx @@ -20,7 +20,7 @@ const Processing: React.FC = ({ circleName, nextStep }) => { pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !process.browser, + skip: !typeof window, }) const isMember = data?.circle?.isMember diff --git a/src/components/GQL/error.tsx b/src/components/GQL/error.tsx index e6c02f4e86..e573339bae 100644 --- a/src/components/GQL/error.tsx +++ b/src/components/GQL/error.tsx @@ -54,7 +54,7 @@ export const mutationOnError = ( Sentry.captureException(error) }) - if (!process.browser) { + if (!typeof window) { throw error } diff --git a/src/components/Layout/SideNav/index.tsx b/src/components/Layout/SideNav/index.tsx index 6bbcd99c8f..471aca4de1 100644 --- a/src/components/Layout/SideNav/index.tsx +++ b/src/components/Layout/SideNav/index.tsx @@ -116,7 +116,7 @@ const SideNav = () => { } placement="right-start" - appendTo={process.browser ? document.body : undefined} + appendTo={typeof window ? document.body : undefined} offset={[-24, 24]} zIndex={Z_INDEX.OVER_BOTTOM_BAR} onShown={hidePopperOnClick} diff --git a/src/components/Layout/UnreadIcon/Follow.tsx b/src/components/Layout/UnreadIcon/Follow.tsx index 6d32e8dd8b..8cb68f51f7 100644 --- a/src/components/Layout/UnreadIcon/Follow.tsx +++ b/src/components/Layout/UnreadIcon/Follow.tsx @@ -22,7 +22,7 @@ const FollowUnreadIcon: React.FC = ({ active }) => { const { data, startPolling } = useQuery(UNREAD_FOLLOWING, { errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !viewer.isAuthed || !process.browser, + skip: !viewer.isAuthed || !typeof window, }) // FIXME: https://github.com/apollographql/apollo-client/issues/3775 diff --git a/src/components/Layout/UnreadIcon/Notification.tsx b/src/components/Layout/UnreadIcon/Notification.tsx index 45891e03ac..669aa8c825 100644 --- a/src/components/Layout/UnreadIcon/Notification.tsx +++ b/src/components/Layout/UnreadIcon/Notification.tsx @@ -24,7 +24,7 @@ const NotificationUnreadIcon: React.FC = ({ active }) => { { errorPolicy: 'ignore', fetchPolicy: 'network-only', - skip: !viewer.isAuthed || !process.browser, + skip: !viewer.isAuthed || !typeof window, } ) diff --git a/src/components/Search/SearchBar/index.tsx b/src/components/Search/SearchBar/index.tsx index 7f2406aec9..1eaabeb9a2 100644 --- a/src/components/Search/SearchBar/index.tsx +++ b/src/components/Search/SearchBar/index.tsx @@ -116,7 +116,7 @@ export const SearchBar: React.FC = ({ ) } trigger={undefined} - appendTo={process.browser ? document.body : undefined} + appendTo={typeof window ? document.body : undefined} placement="bottom-start" onClickOutside={closeDropdown} visible={showDropdown} diff --git a/src/components/Share/EmbedShare/index.tsx b/src/components/Share/EmbedShare/index.tsx index 2fa42aa0f8..79c03faeb3 100644 --- a/src/components/Share/EmbedShare/index.tsx +++ b/src/components/Share/EmbedShare/index.tsx @@ -25,13 +25,12 @@ export const EmbedShare = ({ headerTitle, wrap, }: EmbedShareProps) => { - const shareLink = process.browser + const shareLink = typeof window ? path ? `${window.location.origin}${path}` : window.location.href : '' - const shareTitle = - title || (process.browser ? window.document.title || '' : '') + const shareTitle = title || (typeof window ? window.document.title || '' : '') const buttonClasses = classNames({ buttons: true, diff --git a/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx b/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx index 8a478bfab3..b43f0504c8 100644 --- a/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx +++ b/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx @@ -19,7 +19,7 @@ const PendingState = ({ pollInterval: 1000 * 2, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !process.browser, + skip: !typeof window, }) return ( diff --git a/src/views/ArticleDetail/Responses/LatestResponses/index.tsx b/src/views/ArticleDetail/Responses/LatestResponses/index.tsx index e4bdaa8c72..a55ec1b58b 100644 --- a/src/views/ArticleDetail/Responses/LatestResponses/index.tsx +++ b/src/views/ArticleDetail/Responses/LatestResponses/index.tsx @@ -64,7 +64,7 @@ const LatestResponses = ({ lock }: { lock: boolean }) => { let fragment = '' let parentId = '' let descendantId = '' - if (process.browser) { + if (typeof window) { fragment = window.location.hash.replace('#', '') parentId = fragment.split('-')[0] descendantId = fragment.split('-')[1] diff --git a/src/views/Home/Feed/MainFeed/index.tsx b/src/views/Home/Feed/MainFeed/index.tsx index 6e6ef1e4d3..96e3921c6c 100644 --- a/src/views/Home/Feed/MainFeed/index.tsx +++ b/src/views/Home/Feed/MainFeed/index.tsx @@ -155,7 +155,7 @@ const MainFeed = ({ feedSortType: sortBy }: MainFeedProps) => { * Render */ if (loading && (!result || isNewLoading)) { - if (process.browser) { + if (typeof window) { window.scrollTo(0, 0) document.body.focus() } diff --git a/src/views/Me/DraftDetail/PublishState/PendingState.tsx b/src/views/Me/DraftDetail/PublishState/PendingState.tsx index e36650965f..b961d3dda7 100644 --- a/src/views/Me/DraftDetail/PublishState/PendingState.tsx +++ b/src/views/Me/DraftDetail/PublishState/PendingState.tsx @@ -12,7 +12,7 @@ const PendingState = ({ draft }: { draft: PublishStateDraft }) => { pollInterval: 1000 * 2, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !process.browser, + skip: !typeof window, }) return ( diff --git a/src/views/Me/Settings/Settings/Wallet/index.tsx b/src/views/Me/Settings/Settings/Wallet/index.tsx index 5796010ea4..768bd5643a 100644 --- a/src/views/Me/Settings/Settings/Wallet/index.tsx +++ b/src/views/Me/Settings/Settings/Wallet/index.tsx @@ -48,7 +48,7 @@ const WalletSettings = () => { VIEWER_LIKE_INFO, { errorPolicy: 'none', - skip: !process.browser, + skip: !typeof window, } ) From 5fce89148e7c352251d7a3bf75babba2e7b05459 Mon Sep 17 00:00:00 2001 From: robertu <4065233+robertu7@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:22:16 +0800 Subject: [PATCH 115/122] fix: failure on `typeof window` --- src/common/utils/cache.ts | 4 ++-- src/common/utils/firebase.ts | 2 +- src/common/utils/route.ts | 2 +- src/common/utils/withApollo.ts | 3 ++- .../Context/Language/LanguageContext.tsx | 4 ++-- .../LikeCoinDialog/SetupLikeCoin/Binding/index.tsx | 2 +- src/components/Dialogs/ShareDialog/index.tsx | 5 +++-- src/components/DropdownDialog/index.tsx | 2 +- src/components/Fingerprint/index.tsx | 4 ---- .../ConnectStripeAccount/Onboarding.tsx | 2 +- .../Forms/PaymentForm/Processing/index.tsx | 2 +- .../SubscribeCircle/Processing/index.tsx | 2 +- src/components/GQL/error.tsx | 2 +- src/components/Hook/useWindowResize.ts | 2 +- src/components/Layout/SideNav/index.tsx | 2 +- src/components/Layout/UnreadIcon/Follow.tsx | 2 +- src/components/Layout/UnreadIcon/Notification.tsx | 2 +- src/components/Search/SearchBar/index.tsx | 2 +- src/components/Share/EmbedShare/index.tsx | 14 ++++++++------ .../EditMode/PublishState/PendingState.tsx | 2 +- .../Responses/LatestResponses/index.tsx | 2 +- src/views/Home/Feed/MainFeed/index.tsx | 2 +- .../Me/DraftDetail/PublishState/PendingState.tsx | 2 +- src/views/Me/Settings/Settings/Wallet/index.tsx | 2 +- 24 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/common/utils/cache.ts b/src/common/utils/cache.ts index bda8382a9f..6477a8aeab 100644 --- a/src/common/utils/cache.ts +++ b/src/common/utils/cache.ts @@ -10,7 +10,7 @@ const APP_VERSION_KEY = 'app-version' let persistor: any = null export const clearPersistCache = async () => { - if (!persistor || !typeof window) { + if (!persistor || typeof window === 'undefined') { return } @@ -28,7 +28,7 @@ export const clearPersistCache = async () => { } export const setupPersistCache = async (inMemoryCache: any) => { - if (!typeof window) { + if (typeof window === 'undefined') { return } diff --git a/src/common/utils/firebase.ts b/src/common/utils/firebase.ts index 7e91196e04..f63a484232 100644 --- a/src/common/utils/firebase.ts +++ b/src/common/utils/firebase.ts @@ -8,7 +8,7 @@ export const initializeFirebase = async () => { const firebase = await import('firebase/app') // FIXME: https://github.com/zeit/next.js/issues/1999 - if (firebase.apps.length || !typeof window) { + if (firebase.apps.length || typeof window === 'undefined') { return } diff --git a/src/common/utils/route.ts b/src/common/utils/route.ts index c1dc200427..f9e44b403f 100644 --- a/src/common/utils/route.ts +++ b/src/common/utils/route.ts @@ -269,7 +269,7 @@ export const redirectToLogin = () => { export const appendTarget = (href: string, fallbackCurrent?: boolean) => { let target = '' - if (typeof window) { + if (typeof window !== 'undefined') { target = getTarget() target = fallbackCurrent ? getEncodedCurrent() : target } diff --git a/src/common/utils/withApollo.ts b/src/common/utils/withApollo.ts index ab7499837a..c1ac520cf3 100644 --- a/src/common/utils/withApollo.ts +++ b/src/common/utils/withApollo.ts @@ -200,7 +200,8 @@ const customWithApollo = withApollo(({ ctx, headers, initialState }) => { const host = ctx?.req?.headers.host || (typeof window === 'undefined' ? '' : _get(window, 'location.host')) - const cookie = headers?.cookie || (typeof window ? document.cookie : '') + const cookie = + headers?.cookie || (typeof window !== 'undefined' ? document.cookie : '') const client = new ApolloClient({ link: ApolloLink.from([ diff --git a/src/components/Context/Language/LanguageContext.tsx b/src/components/Context/Language/LanguageContext.tsx index 074fd9278f..1a9c585ca0 100644 --- a/src/components/Context/Language/LanguageContext.tsx +++ b/src/components/Context/Language/LanguageContext.tsx @@ -48,7 +48,7 @@ export const LanguageProvider = ({ const viewerLang = viewer?.settings?.language let storedLang - if (typeof window) { + if (typeof window !== 'undefined') { storedLang = storage.get(STORAGE_KEY_LANGUAGE) } @@ -57,7 +57,7 @@ export const LanguageProvider = ({ let lang = (viewer.isAuthed && viewerLang) || localLang // fallback to browser preference - if (typeof window && !lang && navigator?.language) { + if (typeof window !== 'undefined' && !lang && navigator?.language) { lang = langConvert.bcp472sys(navigator.language) } diff --git a/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx b/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx index 1cf2bf2fe9..0e02f9b631 100644 --- a/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx +++ b/src/components/Dialogs/LikeCoinDialog/SetupLikeCoin/Binding/index.tsx @@ -29,7 +29,7 @@ const Binding: React.FC = ({ prevStep, nextStep, windowRef }) => { pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !typeof window, + skip: typeof window === 'undefined', }) const likerId = data?.viewer?.liker.likerId diff --git a/src/components/Dialogs/ShareDialog/index.tsx b/src/components/Dialogs/ShareDialog/index.tsx index 9c0d79c44e..23486cf268 100644 --- a/src/components/Dialogs/ShareDialog/index.tsx +++ b/src/components/Dialogs/ShareDialog/index.tsx @@ -63,13 +63,14 @@ function tryDecodeUrl(url: string) { export const ShareDialog = (props: ShareDialogProps) => { const { title, path, tags } = props const shareLink = tryDecodeUrl( - typeof window + typeof window !== 'undefined' ? path ? `${window.location.origin}${path}` : window.location.href : '' ) - const shareTitle = title || (typeof window ? window.document.title || '' : '') + const shareTitle = + title || (typeof window !== 'undefined' ? window.document.title || '' : '') const onShare = async (fallbackShare: () => void) => { const navigator = window.navigator as any diff --git a/src/components/DropdownDialog/index.tsx b/src/components/DropdownDialog/index.tsx index ccc5458da6..fd057ed1d6 100644 --- a/src/components/DropdownDialog/index.tsx +++ b/src/components/DropdownDialog/index.tsx @@ -127,7 +127,7 @@ const BaseDropdownDialog = ({ onClickOutside={closeDialog} visible={show} zIndex={Z_INDEX.OVER_BOTTOM_BAR} - appendTo={typeof window ? document.body : undefined} + appendTo={typeof window !== 'undefined' ? document.body : undefined} {...dropdown} content={ diff --git a/src/components/Fingerprint/index.tsx b/src/components/Fingerprint/index.tsx index 7d80ddd0fe..f95e96136d 100644 --- a/src/components/Fingerprint/index.tsx +++ b/src/components/Fingerprint/index.tsx @@ -6,10 +6,6 @@ import { storage } from '~/common/utils' const Fingerprint = () => { useEffect(() => { - if (!typeof window || typeof window === 'undefined') { - return - } - try { const stored = storage.get(STORAGE_KEY_AGENT_HASH) if (!stored || !stored.startsWith(AGENT_HASH_PREFIX)) { diff --git a/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx b/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx index c00e9e01ba..487d718b31 100644 --- a/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx +++ b/src/components/Forms/PaymentForm/ConnectStripeAccount/Onboarding.tsx @@ -30,7 +30,7 @@ const Onboarding: React.FC = ({ nextStep }) => { pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !typeof window, + skip: typeof window === 'undefined', }) const stripeAccount = data?.viewer?.wallet.stripeAccount?.id diff --git a/src/components/Forms/PaymentForm/Processing/index.tsx b/src/components/Forms/PaymentForm/Processing/index.tsx index 33dd15d434..b8301a6e44 100644 --- a/src/components/Forms/PaymentForm/Processing/index.tsx +++ b/src/components/Forms/PaymentForm/Processing/index.tsx @@ -45,7 +45,7 @@ const PaymentProcessingForm: React.FC = ({ pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !typeof window, + skip: typeof window === 'undefined', }) const txState = _get(data, 'viewer.wallet.transactions.edges.0.node.state') diff --git a/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx b/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx index 9aecdedc7f..10123b01c6 100644 --- a/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx +++ b/src/components/Forms/PaymentForm/SubscribeCircle/Processing/index.tsx @@ -20,7 +20,7 @@ const Processing: React.FC = ({ circleName, nextStep }) => { pollInterval: polling ? 1000 : undefined, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !typeof window, + skip: typeof window === 'undefined', }) const isMember = data?.circle?.isMember diff --git a/src/components/GQL/error.tsx b/src/components/GQL/error.tsx index e573339bae..0a5482eba5 100644 --- a/src/components/GQL/error.tsx +++ b/src/components/GQL/error.tsx @@ -54,7 +54,7 @@ export const mutationOnError = ( Sentry.captureException(error) }) - if (!typeof window) { + if (typeof window === 'undefined') { throw error } diff --git a/src/components/Hook/useWindowResize.ts b/src/components/Hook/useWindowResize.ts index cbc54e0570..aec178d909 100644 --- a/src/components/Hook/useWindowResize.ts +++ b/src/components/Hook/useWindowResize.ts @@ -19,7 +19,7 @@ type Height = number | undefined type Size = [Width, Height] const getSize = (): Size => { - if (typeof window === undefined) { + if ((typeof window !== 'undefined') === undefined) { return [undefined, undefined] } diff --git a/src/components/Layout/SideNav/index.tsx b/src/components/Layout/SideNav/index.tsx index 471aca4de1..d0ee4b7e2c 100644 --- a/src/components/Layout/SideNav/index.tsx +++ b/src/components/Layout/SideNav/index.tsx @@ -116,7 +116,7 @@ const SideNav = () => { } placement="right-start" - appendTo={typeof window ? document.body : undefined} + appendTo={typeof window !== 'undefined' ? document.body : undefined} offset={[-24, 24]} zIndex={Z_INDEX.OVER_BOTTOM_BAR} onShown={hidePopperOnClick} diff --git a/src/components/Layout/UnreadIcon/Follow.tsx b/src/components/Layout/UnreadIcon/Follow.tsx index 8cb68f51f7..162d98cd52 100644 --- a/src/components/Layout/UnreadIcon/Follow.tsx +++ b/src/components/Layout/UnreadIcon/Follow.tsx @@ -22,7 +22,7 @@ const FollowUnreadIcon: React.FC = ({ active }) => { const { data, startPolling } = useQuery(UNREAD_FOLLOWING, { errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !viewer.isAuthed || !typeof window, + skip: !viewer.isAuthed || typeof window === 'undefined', }) // FIXME: https://github.com/apollographql/apollo-client/issues/3775 diff --git a/src/components/Layout/UnreadIcon/Notification.tsx b/src/components/Layout/UnreadIcon/Notification.tsx index 669aa8c825..174c2a5597 100644 --- a/src/components/Layout/UnreadIcon/Notification.tsx +++ b/src/components/Layout/UnreadIcon/Notification.tsx @@ -24,7 +24,7 @@ const NotificationUnreadIcon: React.FC = ({ active }) => { { errorPolicy: 'ignore', fetchPolicy: 'network-only', - skip: !viewer.isAuthed || !typeof window, + skip: !viewer.isAuthed || typeof window === 'undefined', } ) diff --git a/src/components/Search/SearchBar/index.tsx b/src/components/Search/SearchBar/index.tsx index 1eaabeb9a2..a66d790353 100644 --- a/src/components/Search/SearchBar/index.tsx +++ b/src/components/Search/SearchBar/index.tsx @@ -116,7 +116,7 @@ export const SearchBar: React.FC = ({ ) } trigger={undefined} - appendTo={typeof window ? document.body : undefined} + appendTo={typeof window !== 'undefined' ? document.body : undefined} placement="bottom-start" onClickOutside={closeDropdown} visible={showDropdown} diff --git a/src/components/Share/EmbedShare/index.tsx b/src/components/Share/EmbedShare/index.tsx index 79c03faeb3..f282d0676f 100644 --- a/src/components/Share/EmbedShare/index.tsx +++ b/src/components/Share/EmbedShare/index.tsx @@ -25,12 +25,14 @@ export const EmbedShare = ({ headerTitle, wrap, }: EmbedShareProps) => { - const shareLink = typeof window - ? path - ? `${window.location.origin}${path}` - : window.location.href - : '' - const shareTitle = title || (typeof window ? window.document.title || '' : '') + const shareLink = + typeof window !== 'undefined' + ? path + ? `${window.location.origin}${path}` + : window.location.href + : '' + const shareTitle = + title || (typeof window !== 'undefined' ? window.document.title || '' : '') const buttonClasses = classNames({ buttons: true, diff --git a/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx b/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx index b43f0504c8..e307a0719b 100644 --- a/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx +++ b/src/views/ArticleDetail/EditMode/PublishState/PendingState.tsx @@ -19,7 +19,7 @@ const PendingState = ({ pollInterval: 1000 * 2, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !typeof window, + skip: typeof window === 'undefined', }) return ( diff --git a/src/views/ArticleDetail/Responses/LatestResponses/index.tsx b/src/views/ArticleDetail/Responses/LatestResponses/index.tsx index a55ec1b58b..4db4ceb84d 100644 --- a/src/views/ArticleDetail/Responses/LatestResponses/index.tsx +++ b/src/views/ArticleDetail/Responses/LatestResponses/index.tsx @@ -64,7 +64,7 @@ const LatestResponses = ({ lock }: { lock: boolean }) => { let fragment = '' let parentId = '' let descendantId = '' - if (typeof window) { + if (typeof window !== 'undefined') { fragment = window.location.hash.replace('#', '') parentId = fragment.split('-')[0] descendantId = fragment.split('-')[1] diff --git a/src/views/Home/Feed/MainFeed/index.tsx b/src/views/Home/Feed/MainFeed/index.tsx index 96e3921c6c..de07d16d76 100644 --- a/src/views/Home/Feed/MainFeed/index.tsx +++ b/src/views/Home/Feed/MainFeed/index.tsx @@ -155,7 +155,7 @@ const MainFeed = ({ feedSortType: sortBy }: MainFeedProps) => { * Render */ if (loading && (!result || isNewLoading)) { - if (typeof window) { + if (typeof window !== 'undefined') { window.scrollTo(0, 0) document.body.focus() } diff --git a/src/views/Me/DraftDetail/PublishState/PendingState.tsx b/src/views/Me/DraftDetail/PublishState/PendingState.tsx index b961d3dda7..b531270ff3 100644 --- a/src/views/Me/DraftDetail/PublishState/PendingState.tsx +++ b/src/views/Me/DraftDetail/PublishState/PendingState.tsx @@ -12,7 +12,7 @@ const PendingState = ({ draft }: { draft: PublishStateDraft }) => { pollInterval: 1000 * 2, errorPolicy: 'none', fetchPolicy: 'network-only', - skip: !typeof window, + skip: typeof window === 'undefined', }) return ( diff --git a/src/views/Me/Settings/Settings/Wallet/index.tsx b/src/views/Me/Settings/Settings/Wallet/index.tsx index 768bd5643a..d17dab9159 100644 --- a/src/views/Me/Settings/Settings/Wallet/index.tsx +++ b/src/views/Me/Settings/Settings/Wallet/index.tsx @@ -48,7 +48,7 @@ const WalletSettings = () => { VIEWER_LIKE_INFO, { errorPolicy: 'none', - skip: !typeof window, + skip: typeof window === 'undefined', } ) From c3939eebb06d878c9b8504e762c3ab4534612057 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Mon, 22 Aug 2022 22:29:17 +0800 Subject: [PATCH 116/122] fix: limit length rule --- src/components/TagDigest/Feed/index.tsx | 4 ++-- src/components/TagDigest/Sidebar/index.tsx | 5 ++--- src/views/ArticleDetail/TagList/index.tsx | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/TagDigest/Feed/index.tsx b/src/components/TagDigest/Feed/index.tsx index 5111a766d2..0968d509cf 100644 --- a/src/components/TagDigest/Feed/index.tsx +++ b/src/components/TagDigest/Feed/index.tsx @@ -78,7 +78,7 @@ const Feed = ({ tag, ...cardProps }: TagDigestFeedProps) => { />
    - {tag.numAuthors && ( + {tag && ( } size="xs" @@ -89,7 +89,7 @@ const Feed = ({ tag, ...cardProps }: TagDigestFeedProps) => { )} - {tag.numArticles && ( + {tag && ( } size="xs" diff --git a/src/components/TagDigest/Sidebar/index.tsx b/src/components/TagDigest/Sidebar/index.tsx index d95f11e900..742f64921e 100644 --- a/src/components/TagDigest/Sidebar/index.tsx +++ b/src/components/TagDigest/Sidebar/index.tsx @@ -71,12 +71,11 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => { type="plain" iconProps={{ color: 'grey-darker' }} textIconProps={{ color: 'black', weight: 'md', size: 'sm' }} - hasLengthLimit />
    - {tag?.numAuthors && ( + {tag && ( } size="xs" @@ -87,7 +86,7 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => { )} - {tag?.numArticles && ( + {tag && ( } size="xs" diff --git a/src/views/ArticleDetail/TagList/index.tsx b/src/views/ArticleDetail/TagList/index.tsx index 108f2f19b2..c386ed3941 100644 --- a/src/views/ArticleDetail/TagList/index.tsx +++ b/src/views/ArticleDetail/TagList/index.tsx @@ -40,6 +40,7 @@ const TagList = ({ article }: { article: TagListArticle }) => { pageType: 'article_detail', }) }} + hasLengthLimit /> From 137dde7e1429f6aa5b7dbfda10cbb03cbd248883 Mon Sep 17 00:00:00 2001 From: 49659410+tx0c <> Date: Fri, 19 Aug 2022 17:02:31 +0000 Subject: [PATCH 117/122] fix(tags-hint): tag creation hint - change length limit to 50; instead of 40; - squeeze all spaces except the first; --- src/common/enums/index.ts | 3 +- src/common/utils/text.ts | 17 +++++--- .../Analytics/PageViewTracker/index.tsx | 10 ++++- src/components/Dialogs/TagDialog/Content.tsx | 43 ++++++++++++++++++- src/components/Dialogs/TagDialog/styles.css | 11 +++++ src/components/Form/DropdownInput/index.tsx | 7 +-- 6 files changed, 77 insertions(+), 14 deletions(-) diff --git a/src/common/enums/index.ts b/src/common/enums/index.ts index 5ac680cb74..6f7a1c30f5 100644 --- a/src/common/enums/index.ts +++ b/src/common/enums/index.ts @@ -51,4 +51,5 @@ export const COOKIE_USER_GROUP = '__user_group' export const MAX_ARTICLE_REVISION_COUNT = 4 export const MAX_ARTICLE_REVISION_DIFF = 50 -export const MAX_TAG_CONTENT_LENGTH = 40 +export const MAX_TAG_CONTENT_LENGTH = 50 +export const MAX_TAG_DESCRIPTION_LENGTH = 200 diff --git a/src/common/utils/text.ts b/src/common/utils/text.ts index 6407e94b25..1f2a77025b 100644 --- a/src/common/utils/text.ts +++ b/src/common/utils/text.ts @@ -152,11 +152,18 @@ export const tagSlugify = (content: string) => .replace(anyNonAlphaNum, '-') // replace all non alpha-number to `-`, including spaces and punctuations .replace(/(^-+|-+$)/g, '') // strip leading or trailing `-` if there's any -export const stripAllPunct = (content: string) => - `${content}` - // .replace(prefixOrSuffixNonAlphaNum, '') // strip prefix or suffix punct - .replace(anyNonAlphaNum, ' ') - .trim() +export const stripAllPunct = (content: string) => { + const words = `${content}`.split(anyNonAlphaNum).filter(Boolean) + switch (words.length) { + case 0: + return '' + case 1: + return words[0] + default: + const [first, ...rest] = words + return `${first} ${rest.join('')}` + } +} export const normalizeTagInput = (content: string) => stripAllPunct(content).substring(0, MAX_TAG_CONTENT_LENGTH) diff --git a/src/components/Analytics/PageViewTracker/index.tsx b/src/components/Analytics/PageViewTracker/index.tsx index 67bd0a54d2..3ec09bb604 100644 --- a/src/components/Analytics/PageViewTracker/index.tsx +++ b/src/components/Analytics/PageViewTracker/index.tsx @@ -5,6 +5,12 @@ import { ViewerContext } from '~/components' import { analytics } from '~/common/utils' +// get referrer without query string +// should be same as window.location.origin + window.location.pathname +function getPageReferrer(url: string = window.location.href) { + return url.split('?')?.[0] || url +} + const PageViewTracker = () => { const router = useRouter() const viewer = useContext(ViewerContext) @@ -22,7 +28,7 @@ const PageViewTracker = () => { analytics.trackPage() }, 1000) - referrer.current = window.location.pathname + referrer.current = getPageReferrer() // window.location.origin + window.location.pathname }, [viewer.privateFetched]) // subsequent changes @@ -33,7 +39,7 @@ const PageViewTracker = () => { } analytics.trackPage('page_view', { page_referrer: referrer.current }) - referrer.current = window.location.pathname + referrer.current = getPageReferrer() // window.location.origin + window.location.pathname } router.events.on('routeChangeComplete', trackPage) diff --git a/src/components/Dialogs/TagDialog/Content.tsx b/src/components/Dialogs/TagDialog/Content.tsx index 4e2d7b750b..3db5a5eaed 100644 --- a/src/components/Dialogs/TagDialog/Content.tsx +++ b/src/components/Dialogs/TagDialog/Content.tsx @@ -16,7 +16,13 @@ import { } from '~/components' import SEARCH_TAGS from '~/components/GQL/queries/searchTags' -import { ADD_TOAST, ASSET_TYPE, ENTITY_TYPE } from '~/common/enums' +import { + ADD_TOAST, + ASSET_TYPE, + ENTITY_TYPE, + MAX_TAG_CONTENT_LENGTH, + MAX_TAG_DESCRIPTION_LENGTH, +} from '~/common/enums' import { normalizeTagInput, // stripAllPunct, // stripPunctPrefixSuffix, numAbbr, @@ -100,6 +106,19 @@ const DropdownList = ({ ) } +const HintLengthText: React.FC<{ + curLength: number + maxLength: number +}> = ({ curLength, maxLength }) => ( + <> + + 0 ? 'highlight' : ''}>{curLength ?? 0} +  / {maxLength} + + + +) + const DropdownListWithDefaultItem = (props: DropdownListBaseProps) => { return ( @@ -244,11 +263,25 @@ const TagDialogContent: React.FC = ({ onChange={(e) => { const newContent = normalizeTagInput(e.target.value) setFieldValue('newContent', newContent) + return newContent }} dropdownAppendTo={formId} dropdownAutoSizing DropdownContent={DropdownContent} query={SEARCH_TAGS} + hint={ + + } + maxLength={MAX_TAG_CONTENT_LENGTH} + extraButton={ + + } /> = ({ onBlur={handleBlur} onChange={handleChange} required + maxLength={MAX_TAG_DESCRIPTION_LENGTH} + extraButton={ + + } /> ) @@ -283,6 +323,7 @@ const TagDialogContent: React.FC = ({ /> {InnerForm} + ) } diff --git a/src/components/Dialogs/TagDialog/styles.css b/src/components/Dialogs/TagDialog/styles.css index f5f02d9827..c9d1ef2766 100644 --- a/src/components/Dialogs/TagDialog/styles.css +++ b/src/components/Dialogs/TagDialog/styles.css @@ -5,9 +5,20 @@ } .search-tag-item { + @mixin flex-start-space-between; + & .keyword, & .count { margin-left: var(--spacing-xx-tight); color: var(--color-grey); } } + +.count { + margin-left: var(--spacing-xx-tight); + color: var(--color-grey); + + & .highlight { + color: var(--color-matters-green); + } +} diff --git a/src/components/Form/DropdownInput/index.tsx b/src/components/Form/DropdownInput/index.tsx index 767e9e9905..b889fa18e1 100644 --- a/src/components/Form/DropdownInput/index.tsx +++ b/src/components/Form/DropdownInput/index.tsx @@ -130,11 +130,8 @@ const DropdownInput: React.FC = ({ } }} onChange={(e) => { - if (inputProps.onChange) { - inputProps.onChange(e) - } - - const trimedValue = e.target.value.trim() + const trimedValue = + inputProps?.onChange?.(e) ?? e.target.value.trim() setSearch(trimedValue) From 56dd193697a969638d49cd183196370f99ece158 Mon Sep 17 00:00:00 2001 From: Elk Leung Date: Tue, 23 Aug 2022 15:41:27 +0800 Subject: [PATCH 118/122] fix: remove && --- src/components/TagDigest/Feed/index.tsx | 38 ++++++++++------------ src/components/TagDigest/Sidebar/index.tsx | 36 +++++++++----------- 2 files changed, 33 insertions(+), 41 deletions(-) diff --git a/src/components/TagDigest/Feed/index.tsx b/src/components/TagDigest/Feed/index.tsx index 0968d509cf..e1c85225cc 100644 --- a/src/components/TagDigest/Feed/index.tsx +++ b/src/components/TagDigest/Feed/index.tsx @@ -78,27 +78,23 @@ const Feed = ({ tag, ...cardProps }: TagDigestFeedProps) => { />
    - {tag && ( - } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numAuthors)} - - )} - - {tag && ( - } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numArticles)} - - )} + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numAuthors)} + + + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numArticles)} +
    diff --git a/src/components/TagDigest/Sidebar/index.tsx b/src/components/TagDigest/Sidebar/index.tsx index 742f64921e..b74d661563 100644 --- a/src/components/TagDigest/Sidebar/index.tsx +++ b/src/components/TagDigest/Sidebar/index.tsx @@ -75,27 +75,23 @@ const Sidebar = ({ tag, ...cardProps }: TagDigestSidebarProps) => {
    - {tag && ( - } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numAuthors)} - - )} + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numAuthors)} + - {tag && ( - } - size="xs" - spacing="xxtight" - color="grey-dark" - > - {numAbbr(tag.numArticles)} - - )} + } + size="xs" + spacing="xxtight" + color="grey-dark" + > + {numAbbr(tag.numArticles)} +
    From 74edba1a4fb8b35e53c3dd0d6d4f5177eef84e6c Mon Sep 17 00:00:00 2001 From: Zeck Li Date: Tue, 23 Aug 2022 16:30:42 +0800 Subject: [PATCH 119/122] feat(copy): update English copies --- src/common/enums/text.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/enums/text.ts b/src/common/enums/text.ts index 19493b11c9..f6977799ba 100644 --- a/src/common/enums/text.ts +++ b/src/common/enums/text.ts @@ -145,7 +145,7 @@ export const TEXT = { hide: '站內隱藏', hintAddTag: '通過添加標籤幫助讀者更好地找到你的作品。如果沒有合適的標籤,你可以創建新的。', - hintAddRecommendedTag: '下方為推薦標籤,點選添加:', + hintAddRecommendedTag: '下方是你近期使用過標籤,點選添加:', hintAddTagNoTag: '目前尚無標籤,立即添加提高作品曝光度!', hintAddTagShort: '添加合適標籤,讓站內外讀者找到你的作品', hintAddCircleInvitee: '添加站內或站外朋友加入圍爐', @@ -509,7 +509,7 @@ export const TEXT = { hide: '站内隐藏', hintAddTag: '通过添加标签帮助读者更好地找到你的作品。如果没有合适的标签,你可以创建新的。', - hintAddRecommendedTag: '下方为推荐标签,点选添加:', + hintAddRecommendedTag: '下方是你近期使用过标签,点选添加:', hintAddTagNoTag: '目前尚无标签,立即添加提高作品曝光度!', hintAddTagShort: '添加适合标签,帮助读者找到你的作品', hintAddCircleInvitee: '添加站内或站外朋友加入围炉', @@ -880,7 +880,7 @@ export const TEXT = { hide: 'Archived', hintAddTag: 'Adding tags helps readers find your articles. Add or create new tags.', - hintAddRecommendedTag: 'Click to add recommended tags:', + hintAddRecommendedTag: 'Click to add tags you recently used :', hintAddTagNoTag: 'Not using tags yet, add tags now to improve discoverability!', hintAddTagShort: 'Adding tags helps readers find your articles.', From 0f9166c8eb7528ac4be817937b505e83b4eaa1d6 Mon Sep 17 00:00:00 2001 From: bluecloud <96812901+pitb2022@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:35:47 +0800 Subject: [PATCH 120/122] fix height calculation error --- src/components/Expandable/index.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/Expandable/index.tsx b/src/components/Expandable/index.tsx index 4dae05c417..cb2aefa847 100644 --- a/src/components/Expandable/index.tsx +++ b/src/components/Expandable/index.tsx @@ -22,7 +22,7 @@ export const Expandable: React.FC> = ({ useEffect(() => { if (node?.current) { - const height = node.current.clientHeight + const height = node.current.firstElementChild?.clientHeight || 0 const lineHeight = window .getComputedStyle(node.current, null) .getPropertyValue('line-height') @@ -43,9 +43,11 @@ export const Expandable: React.FC> = ({ }} > -
    {children}
    +
    {children}
    - {children} +
    +
    {children}
    +
    {expandable && !expand && (