diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b84badc4..8de6d5a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,7 @@ jobs: integration-test: runs-on: ubuntu-latest + needs: lint services: postgres: image: postgres:12.4 @@ -52,6 +53,7 @@ jobs: publish-gojek-mlp-ui: if: ${{ startsWith(github.ref, 'refs/tags/') }} runs-on: ubuntu-latest + needs: lint steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 diff --git a/.gitignore b/.gitignore index 1e02cd62..065b683c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,8 @@ +# VSCode +.vscode +.bloop +.metals +*.code-workspace + # Binary directory bin/ diff --git a/ui/package.json b/ui/package.json index 1826a4d5..32cdc86e 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,6 +1,6 @@ { "name": "@gojek/mlp-ui", - "version": "1.0.1", + "version": "1.1.0", "private": true, "repository": { "type": "git", diff --git a/ui/packages/app/package.json b/ui/packages/app/package.json index 08ac0d98..7a5eb6f0 100644 --- a/ui/packages/app/package.json +++ b/ui/packages/app/package.json @@ -1,11 +1,11 @@ { "name": "mlp-ui", - "version": "1.0.1", + "version": "1.1.0", "private": true, "license": "Apache-2.0", "dependencies": { "@elastic/datemath": "5.0.3", - "@elastic/eui": "27.0.0", + "@elastic/eui": "29.0.0", "@gojek/mlp-ui": "1.0.1", "@reach/router": "1.3.3", "@sentry/browser": "5.15.5", diff --git a/ui/packages/lib/package.json b/ui/packages/lib/package.json index e3d56b20..5c60aec1 100644 --- a/ui/packages/lib/package.json +++ b/ui/packages/lib/package.json @@ -1,6 +1,6 @@ { "name": "@gojek/mlp-ui", - "version": "1.0.1", + "version": "1.1.0", "license": "Apache-2.0", "main": "dist/index.js", "module": "dist/index.es.js", @@ -30,14 +30,20 @@ "preunlink": "yarn unlink:react && yarn unlink:react-dom" }, "dependencies": { + "classnames": "^2.2.6", + "lodash": "^4.17.20", "prop-types": "15.7.2", "proper-url-join": "2.1.1", "query-string": "^6.13.1", "react-fast-compare": "^3.2.0", - "react-google-login": "5.1.19" + "react-google-login": "5.1.19", + "react-scroll": "^1.8.1", + "react-sticky": "^6.0.3", + "resize-observer-polyfill": "^1.5.1", + "yup": "^0.29.1" }, "peerDependencies": { - "@elastic/eui": "27.0.0", + "@elastic/eui": "29.0.0", "@reach/router": "1.3.3", "@sentry/browser": "5.15.5", "moment": "^2.27.0", diff --git a/ui/packages/lib/src/components/accordion_form/AccordionForm.js b/ui/packages/lib/src/components/accordion_form/AccordionForm.js new file mode 100644 index 00000000..8db3e7fe --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/AccordionForm.js @@ -0,0 +1,97 @@ +import React, { useRef } from "react"; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from "@elastic/eui"; +import { StepActions } from "../multi_steps_form/StepActions"; +import { Sticky, StickyContainer } from "react-sticky"; +import FormValidationContext from "../form/validation/context"; +import { MultiSectionFormValidationContextProvider } from "../form/validation/multi_section_provider"; +import { + AccordionFormScrollController, + AccordionFormSection, + AccordionFormSideNav +} from "."; + +import "./AccordionForm.scss"; +import { useDimension } from "../../hooks"; +import { isEmpty } from "../../utils/object"; + +export const isSectionInvalid = errors => !isEmpty(errors); + +export const AccordionForm = ({ + name, + sections, + onCancel, + onSubmit, + submitLabel, + renderTitle +}) => { + const lastSectionRef = useRef(null); + const { height: lastSectionHeight } = useDimension(lastSectionRef); + + return ( + + + + + {({ style, isSticky }) => ( + + {isSticky && } + + + )} + + + + s.validationSchema)} + contexts={sections.map(s => s.validationContext)}> + + {({ errors, onSubmit, isSubmitting }) => ( + + + + {sections.map((section, idx) => ( + + + + + + ))} + + + + + + + + )} + + + + + + ); +}; diff --git a/ui/packages/lib/src/components/accordion_form/AccordionForm.scss b/ui/packages/lib/src/components/accordion_form/AccordionForm.scss new file mode 100644 index 00000000..da44fe95 --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/AccordionForm.scss @@ -0,0 +1,24 @@ +@import "~@elastic/eui/src/global_styling/variables/index"; + +.accordionForm { + .accordionForm--sideNavContainer { + padding: $euiSize $euiSizeL; + border-right: 1px solid #d3dae6; + width: 216px; + } + + .accordionForm--content { + > .euiFlexGroup > .euiFlexItem { + width: 90%; + } + } + .euiAccordionForm__button:hover, + .euiAccordion__button:focus { + text-decoration: none !important; + } + + // https://github.com/elastic/eui/issues/3548 + .euiAccordion__childWrapper { + transform: none; + } +} diff --git a/ui/packages/lib/src/components/accordion_form/AccordionFormScrollController.js b/ui/packages/lib/src/components/accordion_form/AccordionFormScrollController.js new file mode 100644 index 00000000..f3d3f24b --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/AccordionFormScrollController.js @@ -0,0 +1,32 @@ +import { useContext, useEffect, useState } from "react"; +import { FormValidationContext } from "../form/validation"; +import { slugify } from "@gojek/mlp-ui"; +import { scroller } from "react-scroll"; +import { animatedScrollConfig } from "./scroll"; +import { isSectionInvalid } from "./AccordionForm"; + +export const AccordionFormScrollController = ({ sections }) => { + const [isFormSubmissionInProgress, setFormSubmissionInProgress] = useState( + false + ); + const { isSubmitting, errors } = useContext(FormValidationContext); + + useEffect(() => { + !!isSubmitting && setFormSubmissionInProgress(true); + }, [isSubmitting]); + + useEffect(() => { + // after submission is completed, scroll to the first section that has errors + if (isFormSubmissionInProgress && !isSubmitting) { + const errorSectionIdx = errors.findIndex(isSectionInvalid); + if (errorSectionIdx !== -1) + scroller.scrollTo( + `${slugify(sections[errorSectionIdx].title)}`, + animatedScrollConfig + ); + setFormSubmissionInProgress(false); + } + }, [errors, sections, isFormSubmissionInProgress, isSubmitting]); + + return null; +}; diff --git a/ui/packages/lib/src/components/accordion_form/AccordionFormSection.js b/ui/packages/lib/src/components/accordion_form/AccordionFormSection.js new file mode 100644 index 00000000..7abb7b1c --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/AccordionFormSection.js @@ -0,0 +1,27 @@ +import React from "react"; +import { Element } from "react-scroll"; +import { EuiAccordion } from "@elastic/eui"; +import { slugify } from "@gojek/mlp-ui"; +import { FormValidationContext } from "../form/validation"; +import { isSectionInvalid } from "./AccordionForm"; + +export const AccordionFormSection = ({ section, errors, renderTitle }) => ( + + + + {section.children} + + + +); diff --git a/ui/packages/lib/src/components/accordion_form/AccordionFormSideNav.js b/ui/packages/lib/src/components/accordion_form/AccordionFormSideNav.js new file mode 100644 index 00000000..08b5dde3 --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/AccordionFormSideNav.js @@ -0,0 +1,41 @@ +import React from "react"; +import { slugify } from "@gojek/mlp-ui"; +import { EuiIcon, EuiSideNav } from "@elastic/eui"; +import { Link } from "react-scroll"; +import { animatedScrollConfig } from "./scroll"; + +export const AccordionFormSideNav = ({ name, sections }) => { + const sideNav = [ + { + name: name, + id: 0, + items: sections.map((section, idx) => ({ + id: idx, + name: section.title, + renderItem: () => + })) + } + ]; + + return ; +}; + +const AccordionFormSideNavItem = ({ section }) => ( + + + {section.iconType && ( + + )} + {section.title} + + +); diff --git a/ui/packages/lib/src/components/accordion_form/index.js b/ui/packages/lib/src/components/accordion_form/index.js new file mode 100644 index 00000000..58e543a1 --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/index.js @@ -0,0 +1,4 @@ +export * from "./AccordionForm"; +export * from "./AccordionFormSection"; +export * from "./AccordionFormSideNav"; +export * from "./AccordionFormScrollController"; diff --git a/ui/packages/lib/src/components/accordion_form/scroll.js b/ui/packages/lib/src/components/accordion_form/scroll.js new file mode 100644 index 00000000..32cd9695 --- /dev/null +++ b/ui/packages/lib/src/components/accordion_form/scroll.js @@ -0,0 +1,6 @@ +export const animatedScrollConfig = { + smooth: true, + offset: 0, + delay: 50, + duration: 300 +}; diff --git a/ui/packages/lib/src/components/confirmation_modal/ConfirmationModal.js b/ui/packages/lib/src/components/confirmation_modal/ConfirmationModal.js new file mode 100644 index 00000000..89299e13 --- /dev/null +++ b/ui/packages/lib/src/components/confirmation_modal/ConfirmationModal.js @@ -0,0 +1,36 @@ +import React, { Fragment } from "react"; +import { useToggle } from "@gojek/mlp-ui"; +import { EuiOverlayMask, EuiConfirmModal, EuiProgress } from "@elastic/eui"; + +export const ConfirmationModal = ({ + title, + content, + onConfirm, + confirmButtonText, + confirmButtonColor, + isLoading, + ...props +}) => { + const [isModalVisible, toggleModalVisible] = useToggle(); + + return ( + + {props.children(toggleModalVisible)} + + {isModalVisible && ( + + + {content} + {isLoading && } + + + )} + + ); +}; diff --git a/ui/packages/lib/src/components/confirmation_modal/index.js b/ui/packages/lib/src/components/confirmation_modal/index.js new file mode 100644 index 00000000..d610d312 --- /dev/null +++ b/ui/packages/lib/src/components/confirmation_modal/index.js @@ -0,0 +1 @@ +export * from "./ConfirmationModal"; diff --git a/ui/packages/lib/src/components/expandable_container/ExpandableContainer.js b/ui/packages/lib/src/components/expandable_container/ExpandableContainer.js new file mode 100644 index 00000000..05574419 --- /dev/null +++ b/ui/packages/lib/src/components/expandable_container/ExpandableContainer.js @@ -0,0 +1,59 @@ +import React, { Fragment, useRef } from "react"; +import { EuiButton, EuiFlexItem, EuiLink, EuiSpacer } from "@elastic/eui"; +import classNames from "classnames"; +import { useToggle } from "@gojek/mlp-ui"; + +import "./ExpandableDescriptionList.scss"; +import { useDimension } from "../../hooks"; + +export const ExpandableContainer = ({ + maxHeight = 300, + isScrollable = true, + toggleKind = "button", // "button" | "text" + children, +}) => { + const contentRef = useRef(); + const [isExpanded, toggle] = useToggle(); + const { height: contentHeight } = useDimension(contentRef); + + return ( +
+ +
+
{children}
+
+
+ + {contentHeight > maxHeight && ( + + +
+ {toggleKind === "button" ? ( + + {isExpanded ? "Collapse" : "Expand"} + + ) : ( + + {isExpanded ? "Show less" : "Show more"} + + )} +
+
+ )} +
+ ); +}; diff --git a/ui/packages/lib/src/components/expandable_container/ExpandableDescriptionList.scss b/ui/packages/lib/src/components/expandable_container/ExpandableDescriptionList.scss new file mode 100644 index 00000000..b363efcc --- /dev/null +++ b/ui/packages/lib/src/components/expandable_container/ExpandableDescriptionList.scss @@ -0,0 +1,23 @@ +@import "~@elastic/eui/src/global_styling/variables/animations"; + +@mixin expandable-container-closed { + margin: 0; + padding: 0; + list-style: none; + overflow: hidden; +} + +.expandableContainer__childWrapper { + @include expandable-container-closed; +} + +.expandableContainer__childWrapper.scrollableContainer { + @include expandable-container-closed; + overflow-y: auto; +} + +.expandableContainer.expandableContainer-isOpen { + .expandableContainer__childWrapper { + height: auto; + } +} diff --git a/ui/packages/lib/src/components/expandable_container/index.js b/ui/packages/lib/src/components/expandable_container/index.js new file mode 100644 index 00000000..b1bd6afa --- /dev/null +++ b/ui/packages/lib/src/components/expandable_container/index.js @@ -0,0 +1 @@ +export * from "./ExpandableContainer"; diff --git a/ui/packages/lib/src/components/form/combo_box/ComboboxSuggestItem.js b/ui/packages/lib/src/components/form/combo_box/ComboboxSuggestItem.js new file mode 100644 index 00000000..2c328727 --- /dev/null +++ b/ui/packages/lib/src/components/form/combo_box/ComboboxSuggestItem.js @@ -0,0 +1,38 @@ +import React from "react"; +import { EuiFlexGroup, EuiFlexItem, EuiHighlight, EuiIcon } from "@elastic/eui"; + +export const EuiComboboxSuggestItemRowHeight = 40; + +export const ComboboxSuggestItem = ({ + option, + searchValue, + optionContentClassname, + prepend, + append +}) => { + return ( + + {append ? ( + {append} + ) : ( + option.icon && ( + + + + ) + )} + + + + {option.label} + + + + {prepend && ( + + {prepend} + + )} + + ); +}; diff --git a/ui/packages/lib/src/components/form/combo_box/EuiComboBoxSelect.js b/ui/packages/lib/src/components/form/combo_box/EuiComboBoxSelect.js new file mode 100644 index 00000000..8b1a5ccd --- /dev/null +++ b/ui/packages/lib/src/components/form/combo_box/EuiComboBoxSelect.js @@ -0,0 +1,46 @@ +import React, { useEffect, useState } from "react"; +import { EuiComboBox } from "@elastic/eui"; +import { + ComboboxSuggestItem, + EuiComboboxSuggestItemRowHeight +} from "./ComboboxSuggestItem"; + +export const EuiComboBoxSelect = ({ value, onChange, options, ...props }) => { + const [selected, setSelected] = useState([]); + + useEffect(() => { + let selected = options.filter(suggestion => suggestion.label === value); + + if (value && selected.length === 0) { + selected = [{ label: value }]; + } + setSelected(selected); + }, [value, options, setSelected]); + + return ( + { + onChange(selected.length ? selected[0].label : undefined); + }} + isClearable={props.isClearable || true} + selectedOptions={selected} + rowHeight={EuiComboboxSuggestItemRowHeight} + onCreateOption={props.onCreateOption} + renderOption={(option, searchValue, optionContentClassname) => ( + + )} + prepend={props.prepend} + /> + ); +}; diff --git a/ui/packages/lib/src/components/form/combo_box/index.js b/ui/packages/lib/src/components/form/combo_box/index.js new file mode 100644 index 00000000..edfcde9f --- /dev/null +++ b/ui/packages/lib/src/components/form/combo_box/index.js @@ -0,0 +1,2 @@ +export * from "./ComboboxSuggestItem"; +export * from "./EuiComboBoxSelect"; diff --git a/ui/packages/lib/src/components/form/context.js b/ui/packages/lib/src/components/form/context.js new file mode 100644 index 00000000..ec5f8986 --- /dev/null +++ b/ui/packages/lib/src/components/form/context.js @@ -0,0 +1,32 @@ +import React, { useCallback, useState, useMemo } from "react"; +import { set } from "@gojek/mlp-ui/src/utils"; +import { StackableFunction } from "./functions/stackable_function"; +import { useOnChangeHandler } from "./hooks/useOnChangeHandler"; + +export const FormContext = React.createContext({}); + +export const FormContextProvider = ({ data: initData, ...props }) => { + const [data, setData] = useState(initData); + + const handleChanges = useCallback( + (paths, value) => { + const path = paths.filter((part) => !!part).join("."); + setData((data) => { + set(data, path, value); + return Object.assign(Object.create(data), data); + }); + }, + [setData] + ); + + const rootHandler = useMemo(() => new StackableFunction([], handleChanges), [ + handleChanges, + ]); + const { onChangeHandler, onChange } = useOnChangeHandler(rootHandler); + + return ( + + {props.children} + + ); +}; diff --git a/ui/packages/lib/src/components/form/described_form_group/DescribedFormGroup.js b/ui/packages/lib/src/components/form/described_form_group/DescribedFormGroup.js new file mode 100644 index 00000000..3720da79 --- /dev/null +++ b/ui/packages/lib/src/components/form/described_form_group/DescribedFormGroup.js @@ -0,0 +1,17 @@ +import React from "react"; +import { EuiFlexGroup, EuiFlexItem, EuiText } from "@elastic/eui"; +import "./DescribedFormGroup.scss"; + +export const DescribedFormGroup = ({ description, ...props }) => ( + + {props.children} + + {description && ( + + + {description} + + + )} + +); diff --git a/ui/packages/lib/src/components/form/described_form_group/DescribedFormGroup.scss b/ui/packages/lib/src/components/form/described_form_group/DescribedFormGroup.scss new file mode 100644 index 00000000..8035600f --- /dev/null +++ b/ui/packages/lib/src/components/form/described_form_group/DescribedFormGroup.scss @@ -0,0 +1,4 @@ +.euiFlexItem--engineTypeDescription { + padding-top: 18px; + padding-left: 24px; +} diff --git a/ui/packages/lib/src/components/form/described_form_group/index.js b/ui/packages/lib/src/components/form/described_form_group/index.js new file mode 100644 index 00000000..ebc64554 --- /dev/null +++ b/ui/packages/lib/src/components/form/described_form_group/index.js @@ -0,0 +1 @@ +export * from "./DescribedFormGroup"; diff --git a/ui/packages/lib/src/components/form/docker_image_combo_box/DockerRegistryPopover.js b/ui/packages/lib/src/components/form/docker_image_combo_box/DockerRegistryPopover.js new file mode 100644 index 00000000..2ad72eaf --- /dev/null +++ b/ui/packages/lib/src/components/form/docker_image_combo_box/DockerRegistryPopover.js @@ -0,0 +1,40 @@ +import React, { useState } from "react"; +import { EuiButtonEmpty, EuiContextMenu, EuiPopover } from "@elastic/eui"; +import { flattenPanelTree } from "@gojek/mlp-ui"; + +export const DockerRegistryPopover = ({ value, registryOptions, onChange }) => { + const [isOpen, setOpen] = useState(false); + + const panels = flattenPanelTree({ + id: 0, + items: registryOptions.map(registry => ({ + name: registry.inputDisplay, + value: registry.value, + icon: "logoDocker", + onClick: () => { + togglePopover(); + onChange(registry.value); + } + })) + }); + + const togglePopover = () => setOpen(!isOpen); + + return ( + + {registryOptions.find(o => o.value === value).inputDisplay} + + } + isOpen={isOpen} + closePopover={togglePopover} + panelPaddingSize="s"> + + + ); +}; diff --git a/ui/packages/lib/src/components/form/docker_image_combo_box/SelectDockerImageComboBox.js b/ui/packages/lib/src/components/form/docker_image_combo_box/SelectDockerImageComboBox.js new file mode 100644 index 00000000..786c1e8e --- /dev/null +++ b/ui/packages/lib/src/components/form/docker_image_combo_box/SelectDockerImageComboBox.js @@ -0,0 +1,56 @@ +import React from "react"; +import { DockerRegistryPopover } from "./DockerRegistryPopover"; +import "./SelectDockerImageComboBox.scss"; +import { EuiComboBoxSelect } from "../combo_box/EuiComboBoxSelect"; + +const extractRegistry = (image, registries) => { + if (image) { + const registry = registries.find(o => image.startsWith(o.value)); + if (registry && registry.value) { + image = image.substr(registry.value.length); + image && image.startsWith("/") && (image = image.substr(1)); + return [registry.value, image]; + } + } + + return ["", image]; +}; + +export const SelectDockerImageComboBox = ({ + value, + registryOptions, + imageOptions, + onChange, + ...props +}) => { + const [registry, image] = extractRegistry(value, registryOptions); + + const onRegistryChange = value => { + onChange(value ? `${value}/${image}` : image); + }; + + const onImageChange = value => { + onChange(registry ? `${registry}/${value}` : value); + }; + + return ( + onImageChange(value || "")} + onCreateOption={onImageChange} + prepend={ + + } + /> + ); +}; diff --git a/ui/packages/lib/src/components/form/docker_image_combo_box/SelectDockerImageComboBox.scss b/ui/packages/lib/src/components/form/docker_image_combo_box/SelectDockerImageComboBox.scss new file mode 100644 index 00000000..9057b59c --- /dev/null +++ b/ui/packages/lib/src/components/form/docker_image_combo_box/SelectDockerImageComboBox.scss @@ -0,0 +1,5 @@ +@import "~@elastic/eui/src/global_styling/variables/index"; + +.euiComboBox--dockerImage .euiFormControlLayout { + height: $euiFormControlHeight; +} diff --git a/ui/packages/lib/src/components/form/docker_image_combo_box/index.js b/ui/packages/lib/src/components/form/docker_image_combo_box/index.js new file mode 100644 index 00000000..3267eb77 --- /dev/null +++ b/ui/packages/lib/src/components/form/docker_image_combo_box/index.js @@ -0,0 +1,2 @@ +export { DockerRegistryPopover } from "./DockerRegistryPopover"; +export * from "./SelectDockerImageComboBox"; diff --git a/ui/packages/lib/src/components/form/endpoint_combo_box/SelectEndpointComboBox.js b/ui/packages/lib/src/components/form/endpoint_combo_box/SelectEndpointComboBox.js new file mode 100644 index 00000000..036e4b6a --- /dev/null +++ b/ui/packages/lib/src/components/form/endpoint_combo_box/SelectEndpointComboBox.js @@ -0,0 +1,28 @@ +import React from "react"; +import { isValidUrl } from "../../../utils/validation"; +import { EuiComboBoxSelect } from "../combo_box/EuiComboBoxSelect"; + +export const SelectEndpointComboBox = ({ + value, + onChange, + options, + ...props +}) => { + const onCreateOption = value => { + if (!isValidUrl(value)) { + return false; + } + onChange(value); + }; + + return ( + + ); +}; diff --git a/ui/packages/lib/src/components/form/endpoint_combo_box/index.js b/ui/packages/lib/src/components/form/endpoint_combo_box/index.js new file mode 100644 index 00000000..6c3dd6d5 --- /dev/null +++ b/ui/packages/lib/src/components/form/endpoint_combo_box/index.js @@ -0,0 +1 @@ +export * from "./SelectEndpointComboBox"; diff --git a/ui/packages/lib/src/components/form/field_duration/EuiFieldDuration.js b/ui/packages/lib/src/components/form/field_duration/EuiFieldDuration.js new file mode 100644 index 00000000..e47964be --- /dev/null +++ b/ui/packages/lib/src/components/form/field_duration/EuiFieldDuration.js @@ -0,0 +1,28 @@ +import React from "react"; +import { EuiFieldNumber, EuiFormLabel } from "@elastic/eui"; + +const durationRegex = /([0-9]+)(ms|s|m|h)$/; + +const parseDuration = value => { + if (value) { + let matches = `${value}`.match(durationRegex); + if (matches) { + return [parseInt(matches[1]), matches[2]]; + } + } + return undefined; +}; + +export const EuiFieldDuration = props => { + const [value, timeUnit] = parseDuration(props.value) || [0, "ms"]; + + return ( + props.onChange(`${e.target.value}${timeUnit}`)} + append={{timeUnit}} + /> + ); +}; diff --git a/ui/packages/lib/src/components/form/field_duration/index.js b/ui/packages/lib/src/components/form/field_duration/index.js new file mode 100644 index 00000000..9976f558 --- /dev/null +++ b/ui/packages/lib/src/components/form/field_duration/index.js @@ -0,0 +1 @@ +export * from "./EuiFieldDuration"; diff --git a/ui/packages/lib/src/components/form/functions/extensible_function.js b/ui/packages/lib/src/components/form/functions/extensible_function.js new file mode 100644 index 00000000..2c4f2d10 --- /dev/null +++ b/ui/packages/lib/src/components/form/functions/extensible_function.js @@ -0,0 +1,6 @@ +export class ExtensibleFunction extends Function { + constructor(f) { + super(); + return Object.setPrototypeOf(f, new.target.prototype); + } +} diff --git a/ui/packages/lib/src/components/form/functions/index.js b/ui/packages/lib/src/components/form/functions/index.js new file mode 100644 index 00000000..899d6be7 --- /dev/null +++ b/ui/packages/lib/src/components/form/functions/index.js @@ -0,0 +1,2 @@ +export * from "./extensible_function"; +export * from "./stackable_function"; diff --git a/ui/packages/lib/src/components/form/functions/stackable_function.js b/ui/packages/lib/src/components/form/functions/stackable_function.js new file mode 100644 index 00000000..c9faed58 --- /dev/null +++ b/ui/packages/lib/src/components/form/functions/stackable_function.js @@ -0,0 +1,15 @@ +import { ExtensibleFunction } from "./extensible_function"; + +export class StackableFunction extends ExtensibleFunction { + constructor(args, apply) { + super(value => { + apply(args, value); + }); + this.apply = apply; + this.args = args; + } + + withArg(arg) { + return new StackableFunction([...this.args, arg], this.apply); + } +} diff --git a/ui/packages/lib/src/components/form/hooks/index.js b/ui/packages/lib/src/components/form/hooks/index.js new file mode 100644 index 00000000..8efe9d4f --- /dev/null +++ b/ui/packages/lib/src/components/form/hooks/index.js @@ -0,0 +1 @@ +export * from "./useOnChangeHandler"; diff --git a/ui/packages/lib/src/components/form/hooks/useOnChangeHandler.js b/ui/packages/lib/src/components/form/hooks/useOnChangeHandler.js new file mode 100644 index 00000000..fbfceaba --- /dev/null +++ b/ui/packages/lib/src/components/form/hooks/useOnChangeHandler.js @@ -0,0 +1,22 @@ +import { useCallback, useEffect, useRef } from "react"; + +export const useOnChangeHandler = onChangeHandler => { + const nested = useRef({}); + + // reset nested handlers when the parent handler is changed + useEffect(() => { + nested.current = {}; + }, [onChangeHandler]); + + const onChange = useCallback( + arg => { + if (!nested.current[arg]) { + nested.current[arg] = onChangeHandler.withArg(arg); + } + return nested.current[arg]; + }, + [onChangeHandler] + ); + + return { onChangeHandler, onChange }; +}; diff --git a/ui/packages/lib/src/components/form/in_memory_table_form/InMemoryTableForm.js b/ui/packages/lib/src/components/form/in_memory_table_form/InMemoryTableForm.js new file mode 100644 index 00000000..3a1f1a7b --- /dev/null +++ b/ui/packages/lib/src/components/form/in_memory_table_form/InMemoryTableForm.js @@ -0,0 +1,49 @@ +import React, { useMemo } from "react"; +import { + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiInMemoryTable, +} from "@elastic/eui"; +import { get } from "@gojek/mlp-ui/src/utils"; + +import "./InMemoryTableForm.scss"; + +export const InMemoryTableForm = ({ + errors = {}, + renderErrorHeader = (key) => key, + ...props +}) => { + const errorMessage = useMemo(() => { + return Object.keys(errors).flatMap((fieldName) => { + const fieldErrors = Object.keys(errors[fieldName]).flatMap( + (key) => get(errors[fieldName], key) || [] + ); + return ( + + + {renderErrorHeader(fieldName)}: + + + + {fieldErrors.map((error, idx) => ( + + {error} + + ))} + + + + ); + }); + }, [errors, renderErrorHeader]); + + return ( + + + + ); +}; diff --git a/ui/packages/lib/src/components/form/in_memory_table_form/InMemoryTableForm.scss b/ui/packages/lib/src/components/form/in_memory_table_form/InMemoryTableForm.scss new file mode 100644 index 00000000..95250b8e --- /dev/null +++ b/ui/packages/lib/src/components/form/in_memory_table_form/InMemoryTableForm.scss @@ -0,0 +1,32 @@ +.euiBasicTable--inMemoryFormTable { + .euiTableCellContent { + display: grid; + + .cell-first-column, + svg { + margin-right: inherit; + } + } + + input[type="text"].inlineTableInput { + float: left; + padding: 0; + font-size: inherit !important; + line-height: inherit !important; + font-family: inherit !important; + height: inherit !important; + transition: inherit !important; + background-color: inherit !important; + box-shadow: none !important; + min-width: 90px; + + &:focus { + background-size: 0 100%; + } + } + + .euiTableRow--isInvalid { + border-left: 2px solid #bd271e; + background-color: #f8e9e98c; + } +} diff --git a/ui/packages/lib/src/components/form/in_memory_table_form/index.js b/ui/packages/lib/src/components/form/in_memory_table_form/index.js new file mode 100644 index 00000000..401c9abd --- /dev/null +++ b/ui/packages/lib/src/components/form/in_memory_table_form/index.js @@ -0,0 +1 @@ +export * from "./InMemoryTableForm"; diff --git a/ui/packages/lib/src/components/form/index.js b/ui/packages/lib/src/components/form/index.js new file mode 100644 index 00000000..95f247ac --- /dev/null +++ b/ui/packages/lib/src/components/form/index.js @@ -0,0 +1,11 @@ +export * from "./combo_box"; +export * from "./described_form_group"; +export * from "./docker_image_combo_box"; +export * from "./endpoint_combo_box"; +export * from "./field_duration"; +export * from "./functions"; +export * from "./hooks"; +export * from "./in_memory_table_form"; +export * from "./label_with_tooltip"; +export * from "./validation"; +export { FormContext, FormContextProvider } from "./context"; diff --git a/ui/packages/lib/src/components/form/label_with_tooltip/FormLabelWithToolTip.js b/ui/packages/lib/src/components/form/label_with_tooltip/FormLabelWithToolTip.js new file mode 100644 index 00000000..9a5b0df5 --- /dev/null +++ b/ui/packages/lib/src/components/form/label_with_tooltip/FormLabelWithToolTip.js @@ -0,0 +1,16 @@ +import React from "react"; +import { EuiIcon, EuiToolTip } from "@elastic/eui"; + +export const FormLabelWithToolTip = ({ label, content, size = "s" }) => ( + + + {label}  + + + +); diff --git a/ui/packages/lib/src/components/form/label_with_tooltip/index.js b/ui/packages/lib/src/components/form/label_with_tooltip/index.js new file mode 100644 index 00000000..f0cad42b --- /dev/null +++ b/ui/packages/lib/src/components/form/label_with_tooltip/index.js @@ -0,0 +1 @@ +export * from "./FormLabelWithToolTip"; diff --git a/ui/packages/lib/src/components/form/validation/context.js b/ui/packages/lib/src/components/form/validation/context.js new file mode 100644 index 00000000..850074bc --- /dev/null +++ b/ui/packages/lib/src/components/form/validation/context.js @@ -0,0 +1,5 @@ +import React from "react"; + +const FormValidationContext = React.createContext({}); + +export default FormValidationContext; diff --git a/ui/packages/lib/src/components/form/validation/errors.js b/ui/packages/lib/src/components/form/validation/errors.js new file mode 100644 index 00000000..78ecc36f --- /dev/null +++ b/ui/packages/lib/src/components/form/validation/errors.js @@ -0,0 +1,13 @@ +import { get, normalizePath, set } from "@gojek/mlp-ui/src/utils"; + +export const extractErrors = (validationError) => { + let errors = {}; + if (validationError.inner) { + for (let err of validationError.inner) { + const path = normalizePath(err.path); + const fieldsErrors = get(errors, path) || []; + set(errors, path, [...fieldsErrors, err.message]); + } + } + return errors; +}; diff --git a/ui/packages/lib/src/components/form/validation/index.js b/ui/packages/lib/src/components/form/validation/index.js new file mode 100644 index 00000000..8d43f68e --- /dev/null +++ b/ui/packages/lib/src/components/form/validation/index.js @@ -0,0 +1,3 @@ +export { default as FormValidationContext } from "./context"; +export { MultiSectionFormValidationContextProvider } from "./multi_section_provider"; +export { FormValidationContextProvider } from "./provider"; diff --git a/ui/packages/lib/src/components/form/validation/multi_section_provider.js b/ui/packages/lib/src/components/form/validation/multi_section_provider.js new file mode 100644 index 00000000..af0e9beb --- /dev/null +++ b/ui/packages/lib/src/components/form/validation/multi_section_provider.js @@ -0,0 +1,84 @@ +import React, { useCallback, useContext, useEffect, useState } from "react"; +import { FormContext } from "../context"; +import FormValidationContext from "./context"; +import { extractErrors } from "./errors"; +import zip from "lodash/zip"; + +export const MultiSectionFormValidationContextProvider = ({ + schemas, + contexts, + onSubmit, + children +}) => { + const { data: formData } = useContext(FormContext); + + // identifies if user tried to submit this form + const [isTouched, setIsTouched] = useState(false); + + // identifies if the form was validated + const [isValidated, setIsValidated] = useState(false); + + // identifies if the form is in submission state + const [isSubmitting, setIsSubmitting] = useState(false); + const [errors, setErrors] = useState([]); + + const isValid = errors => + errors.reduce( + (isValid, errors) => isValid && !Object.keys(errors).length, + true + ); + + const onStartSubmitting = event => { + event && event.preventDefault(); + setIsTouched(true); + setIsSubmitting(true); + }; + + const onFinishSubmitting = useCallback(() => { + setIsTouched(false); + setIsValidated(false); + setIsSubmitting(false); + onSubmit(); + }, [onSubmit]); + + useEffect(() => { + if (isTouched) { + if (schemas) { + Promise.all( + zip(schemas, contexts).map(([schema, ctx]) => { + return !!schema + ? new Promise((resolve, reject) => { + schema + .validate(formData, { + abortEarly: false, + context: ctx + }) + .then( + () => resolve({}), + err => resolve(extractErrors(err)) + ); + }) + : Promise.resolve({}); + }) + ) + .then(setErrors) + .then(() => setIsValidated(true)); + } else { + setIsValidated(true); + } + } + }, [isTouched, schemas, contexts, formData]); + + useEffect(() => { + if (isSubmitting && isValidated) { + isValid(errors) ? onFinishSubmitting() : setIsSubmitting(false); + } + }, [isSubmitting, isValidated, errors, onFinishSubmitting]); + + return ( + + {children} + + ); +}; diff --git a/ui/packages/lib/src/components/form/validation/provider.js b/ui/packages/lib/src/components/form/validation/provider.js new file mode 100644 index 00000000..c90d24a5 --- /dev/null +++ b/ui/packages/lib/src/components/form/validation/provider.js @@ -0,0 +1,24 @@ +import React from "react"; +import FormValidationContext from "./context"; +import { MultiSectionFormValidationContextProvider } from "./multi_section_provider"; + +export const FormValidationContextProvider = ({ + schema, + context, + onSubmit, + children +}) => ( + + + {({ onSubmit, isSubmitting, errors }) => ( + + {children} + + )} + + +); diff --git a/ui/packages/lib/src/components/horizontal_description_list/HorizontalDescriptionList.js b/ui/packages/lib/src/components/horizontal_description_list/HorizontalDescriptionList.js new file mode 100644 index 00000000..b1dc9ef9 --- /dev/null +++ b/ui/packages/lib/src/components/horizontal_description_list/HorizontalDescriptionList.js @@ -0,0 +1,24 @@ +import { EuiDescriptionList, EuiFlexGroup, EuiFlexItem } from "@elastic/eui"; +import React from "react"; + +export const HorizontalDescriptionList = ({ + listItems, + titleProps, + descriptionProps, + ...props +}) => ( + + {listItems.map((item, idx) => ( + + + + ))} + +); diff --git a/ui/packages/lib/src/components/horizontal_description_list/index.js b/ui/packages/lib/src/components/horizontal_description_list/index.js new file mode 100644 index 00000000..11acb7c4 --- /dev/null +++ b/ui/packages/lib/src/components/horizontal_description_list/index.js @@ -0,0 +1 @@ +export * from "./HorizontalDescriptionList"; diff --git a/ui/packages/lib/src/components/index.js b/ui/packages/lib/src/components/index.js index 30b2e96a..aa3c92b1 100644 --- a/ui/packages/lib/src/components/index.js +++ b/ui/packages/lib/src/components/index.js @@ -1,6 +1,14 @@ +export * from "./accordion_form"; export * from "./breadcrumbs"; +export * from "./confirmation_modal"; +export * from "./expandable_container"; +export * from "./form"; export * from "./header"; +export * from "./horizontal_description_list"; +export * from "./multi_steps_form"; export * from "./nav_drawer"; +export * from "./overlay_mask"; +export * from "./page_navigation"; export * from "./projects_dropdown"; export * from "./DateFromNow"; diff --git a/ui/packages/lib/src/components/multi_steps_form/StepActions.js b/ui/packages/lib/src/components/multi_steps_form/StepActions.js new file mode 100644 index 00000000..0d9e775c --- /dev/null +++ b/ui/packages/lib/src/components/multi_steps_form/StepActions.js @@ -0,0 +1,43 @@ +import React from "react"; +import { + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem +} from "@elastic/eui"; + +export const StepActions = ({ + currentStep = 0, + onCancel, + onPrevious, + onSubmit, + submitLabel, + isSubmitting +}) => { + return ( + + + {currentStep === 0 ? ( + + Cancel + + ) : ( + + Previous + + )} + + + + + {submitLabel} + + + + ); +}; diff --git a/ui/packages/lib/src/components/multi_steps_form/StepContent.js b/ui/packages/lib/src/components/multi_steps_form/StepContent.js new file mode 100644 index 00000000..b2209487 --- /dev/null +++ b/ui/packages/lib/src/components/multi_steps_form/StepContent.js @@ -0,0 +1,10 @@ +import { EuiFlexGroup, EuiFlexItem } from "@elastic/eui"; +import React from "react"; + +export const StepContent = ({ children, width = "75%" }) => ( + + + {children} + + +); diff --git a/ui/packages/lib/src/components/multi_steps_form/StepsWizardHorizontal.js b/ui/packages/lib/src/components/multi_steps_form/StepsWizardHorizontal.js new file mode 100644 index 00000000..a68b56ea --- /dev/null +++ b/ui/packages/lib/src/components/multi_steps_form/StepsWizardHorizontal.js @@ -0,0 +1,71 @@ +import React, { useState } from "react"; +import { + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiStepsHorizontal +} from "@elastic/eui"; +import { StepContent } from "./StepContent"; +import { StepActions } from "./StepActions"; +import FormValidationContext from "../form/validation/context"; +import { FormValidationContextProvider } from "../form/validation/provider"; + +export const StepsWizardHorizontal = ({ + steps, + onCancel, + onSubmit, + submitLabel = "Done" +}) => { + const [currentStep, setCurrentStep] = useState(0); + const isLastStep = currentStep === steps.length - 1; + + const onPrevious = () => setCurrentStep(step => step - 1); + const onNext = () => setCurrentStep(step => step + 1); + + return ( + + + + ({ + title: step.title, + isSelected: idx === currentStep, + isComplete: idx < currentStep, + onClick: () => { + idx < currentStep && setCurrentStep(idx); + } + }))} + /> + + + + + + {steps[currentStep].children} + + + + + + + + {({ onSubmit, isSubmitting }) => ( + + )} + + + + + + ); +}; diff --git a/ui/packages/lib/src/components/multi_steps_form/index.js b/ui/packages/lib/src/components/multi_steps_form/index.js new file mode 100644 index 00000000..8574c602 --- /dev/null +++ b/ui/packages/lib/src/components/multi_steps_form/index.js @@ -0,0 +1,3 @@ +export * from "./StepActions"; +export * from "./StepContent"; +export * from "./StepsWizardHorizontal"; diff --git a/ui/packages/lib/src/components/overlay_mask/OverlayMask.js b/ui/packages/lib/src/components/overlay_mask/OverlayMask.js new file mode 100644 index 00000000..75e08d64 --- /dev/null +++ b/ui/packages/lib/src/components/overlay_mask/OverlayMask.js @@ -0,0 +1,16 @@ +import React from "react"; + +import "./OverlayMask.scss"; +import { useDimension } from "../../hooks"; + +export const OverlayMask = ({ parentRef, opacity = 0.5, children }) => { + const { width, height } = useDimension(parentRef); + + return ( +
+ {children} +
+ ); +}; diff --git a/ui/packages/lib/src/components/overlay_mask/OverlayMask.scss b/ui/packages/lib/src/components/overlay_mask/OverlayMask.scss new file mode 100644 index 00000000..88ae923a --- /dev/null +++ b/ui/packages/lib/src/components/overlay_mask/OverlayMask.scss @@ -0,0 +1,13 @@ +.overlayMask { + position: absolute; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + z-index: 999; +} diff --git a/ui/packages/lib/src/components/overlay_mask/index.js b/ui/packages/lib/src/components/overlay_mask/index.js new file mode 100644 index 00000000..5c8611b6 --- /dev/null +++ b/ui/packages/lib/src/components/overlay_mask/index.js @@ -0,0 +1 @@ +export * from "./OverlayMask"; diff --git a/ui/packages/lib/src/components/page_navigation/PageNavigation.js b/ui/packages/lib/src/components/page_navigation/PageNavigation.js new file mode 100644 index 00000000..3e421f4c --- /dev/null +++ b/ui/packages/lib/src/components/page_navigation/PageNavigation.js @@ -0,0 +1,94 @@ +import React, { useState } from "react"; +import { + EuiContextMenuItem, + EuiContextMenuPanel, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiPopover, + EuiTab, + EuiTabs +} from "@elastic/eui"; + +import "./PageNavigation.scss"; + +export const PageNavigation = ({ + tabs, + actions, + selectedTab = "", + ...props +}) => ( + + + + {tabs.map((tab, index) => ( + props.navigate(`./${tab.id}`) })} + isSelected={selectedTab.startsWith(tab.id)} + disabled={tab.disabled} + key={index}> + {tab.name} + + ))} + + + {actions && actions.length && ( + + + + )} + +); + +const MoreActionsButton = ({ actions }) => { + const [isPopoverOpen, setPopover] = useState(false); + const togglePopover = () => setPopover(isPopoverOpen => !isPopoverOpen); + + const items = actions + .filter(item => !item.hidden) + .map((item, idx) => ( + { + togglePopover(); + item.onClick(); + }} + disabled={item.disabled} + className={item.color ? `euiTextColor--${item.color}` : ""}> + {item.name} + + )); + + const button = ( + + + + More Actions  + + + + + ); + + return ( + + + + ); +}; diff --git a/ui/packages/lib/src/components/page_navigation/PageNavigation.scss b/ui/packages/lib/src/components/page_navigation/PageNavigation.scss new file mode 100644 index 00000000..4faeadbd --- /dev/null +++ b/ui/packages/lib/src/components/page_navigation/PageNavigation.scss @@ -0,0 +1,6 @@ +@import "~@elastic/eui/src/global_styling/variables/index"; +@import "~@elastic/eui/src/components/context_menu/context_menu"; + +.euiContextPanel--moreActions { + min-width: $euiContextMenuWidth; +} diff --git a/ui/packages/lib/src/components/page_navigation/index.js b/ui/packages/lib/src/components/page_navigation/index.js new file mode 100644 index 00000000..8e471cfc --- /dev/null +++ b/ui/packages/lib/src/components/page_navigation/index.js @@ -0,0 +1 @@ +export * from "./PageNavigation"; diff --git a/ui/packages/lib/src/hooks/index.js b/ui/packages/lib/src/hooks/index.js index ff6c5161..f5114aab 100644 --- a/ui/packages/lib/src/hooks/index.js +++ b/ui/packages/lib/src/hooks/index.js @@ -1,3 +1,4 @@ export { useApi } from "./useApi"; +export { useDimension } from "./useDimension"; export { useMlpApi } from "./useMlpApi"; export { useToggle } from "./useToggle"; diff --git a/ui/packages/lib/src/hooks/useDimension.js b/ui/packages/lib/src/hooks/useDimension.js new file mode 100644 index 00000000..98b3c73d --- /dev/null +++ b/ui/packages/lib/src/hooks/useDimension.js @@ -0,0 +1,23 @@ +import { useRef, useState, useEffect } from "react"; +import ResizeObserver from "resize-observer-polyfill"; + +const initialState = { width: 0, height: 0 }; + +export const useDimension = (ref) => { + const [dimensions, setDimensions] = useState(initialState); + const resizeObserverRef = useRef(null); + + useEffect(() => { + resizeObserverRef.current = new ResizeObserver((entries = []) => { + entries.forEach((entry) => { + const { width, height } = entry.contentRect; + setDimensions({ width, height }); + }); + }); + if (ref.current) resizeObserverRef.current.observe(ref.current); + return () => { + if (resizeObserverRef.current) resizeObserverRef.current.disconnect(); + }; + }, [ref]); + return dimensions; +}; diff --git a/ui/packages/lib/src/utils/index.js b/ui/packages/lib/src/utils/index.js index 49b2eb36..7fe81aee 100644 --- a/ui/packages/lib/src/utils/index.js +++ b/ui/packages/lib/src/utils/index.js @@ -1,3 +1,5 @@ export { get } from "./get"; export { flattenPanelTree } from "./flattenPanelTree"; +export { normalizePath } from "./normalizePath"; +export { set } from "./set"; export { slugify } from "./slugify"; diff --git a/ui/packages/lib/src/utils/normalizePath.js b/ui/packages/lib/src/utils/normalizePath.js new file mode 100644 index 00000000..c7cca942 --- /dev/null +++ b/ui/packages/lib/src/utils/normalizePath.js @@ -0,0 +1 @@ +export const normalizePath = (key) => key.replace(/\[([^}\]]+)]/g, ".$1"); diff --git a/ui/packages/lib/src/utils/object.js b/ui/packages/lib/src/utils/object.js new file mode 100644 index 00000000..696a64fc --- /dev/null +++ b/ui/packages/lib/src/utils/object.js @@ -0,0 +1 @@ +export const isEmpty = obj => !obj || !Object.keys(obj).length; diff --git a/ui/packages/lib/src/utils/set.js b/ui/packages/lib/src/utils/set.js new file mode 100644 index 00000000..86714747 --- /dev/null +++ b/ui/packages/lib/src/utils/set.js @@ -0,0 +1,17 @@ +/*eslint no-sequences: 0*/ +export const set = (obj, key, value) => { + let props = key.split("."), + arrIndex = -1; + props.reduce( + (o, d, i) => ( + (arrIndex = d.indexOf("[") > -1 && d[d.indexOf("[") + 1]), + arrIndex && (d = d.slice(0, d.indexOf("["))), + i === props.length - 1 + ? (o[d] = value) + : ((o[d] = o[d] || {}), + arrIndex && (Array.isArray(o[d]) || (o[d] = [o[d]])), + (arrIndex && o[d][arrIndex]) || o[d]) + ), + obj + ); +}; diff --git a/ui/packages/lib/src/utils/validation.js b/ui/packages/lib/src/utils/validation.js new file mode 100644 index 00000000..4250ff2a --- /dev/null +++ b/ui/packages/lib/src/utils/validation.js @@ -0,0 +1,5 @@ +const urlRegex = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/; + +export const isValidUrl = value => { + return value.match(urlRegex) !== null; +}; diff --git a/ui/yarn.lock b/ui/yarn.lock index 7c950629..06d9b251 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -1114,6 +1114,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.10.5", "@babel/runtime@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d" + integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.8.6": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -1172,38 +1179,45 @@ dependencies: tslib "^1.9.3" -"@elastic/eui@27.0.0": - version "27.0.0" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-27.0.0.tgz#5d2f8fce2816376461b69e8b3c16233c4dcbf304" - integrity sha512-Fd03m3YLabBRdfgMz22xQ2wrm5o591yKoNxsaMhbjJPFwE/dT4JxSxvXVscEZTx7ItR7zJ1vmw0dcEnHXPibPg== +"@elastic/eui@29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-29.0.0.tgz#1c8d822c62ad5e29298a3a36f5b02fd9b32a5550" + integrity sha512-YsDjtN/nRA4vvWukg5FDN4iPQgHUVxDwn/JZ1mArCeMe34JwzYJlEkk6Z/+iNbJOZQNHngmV8I2TStcP8k82gg== dependencies: "@types/chroma-js" "^2.0.0" - "@types/enzyme" "^3.1.13" - "@types/lodash" "^4.14.116" - "@types/numeral" "^0.0.25" - "@types/react-beautiful-dnd" "^12.1.2" - "@types/react-input-autosize" "^2.0.2" + "@types/lodash" "^4.14.160" + "@types/numeral" "^0.0.28" + "@types/react-beautiful-dnd" "^13.0.0" + "@types/react-input-autosize" "^2.2.0" "@types/react-virtualized-auto-sizer" "^1.0.0" - "@types/react-window" "^1.8.1" - chroma-js "^2.0.4" - classnames "^2.2.5" + "@types/react-window" "^1.8.2" + "@types/vfile-message" "^2.0.0" + chroma-js "^2.1.0" + classnames "^2.2.6" highlight.js "^9.12.0" - html "^1.0.0" - keymirror "^0.1.1" - lodash "^4.17.11" + lodash "^4.17.20" numeral "^2.0.6" prop-types "^15.6.0" react-ace "^7.0.5" react-beautiful-dnd "^13.0.0" - react-focus-lock "^1.17.7" + react-dropzone "^10.2.1" + react-focus-on "^3.5.0" react-input-autosize "^2.2.2" react-is "~16.3.0" react-virtualized-auto-sizer "^1.0.2" react-window "^1.8.5" - resize-observer-polyfill "^1.5.0" + rehype-raw "^4.0.1" + rehype-react "^6.0.0" + rehype-stringify "^6.0.1" + remark-emoji "^2.1.0" + remark-highlight.js "^5.2.0" + remark-parse "^7.0.2" + remark-rehype "^7.0.0" tabbable "^3.0.0" text-diff "^1.0.1" - uuid "^3.1.0" + unified "^8.4.2" + uuid "^8.3.0" + vfile "^4.2.0" "@hapi/address@2.x.x": version "2.1.4" @@ -1425,6 +1439,13 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@mapbox/hast-util-table-cell-style@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@mapbox/hast-util-table-cell-style/-/hast-util-table-cell-style-0.1.3.tgz#5b7166ae01297d72216932b245e4b2f0b642dca6" + integrity sha512-QsEsh5YaDvHoMQ2YHdvZy2iDnU3GgKVBTcHf6cILyoWDZtPSdlG444pL/ioPYO/GpXSfODBb9sefEetfC4v9oA== + dependencies: + unist-util-visit "^1.3.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1636,13 +1657,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/cheerio@*": - version "0.22.21" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.21.tgz#5e37887de309ba11b2e19a6e14cad7874b31a8a3" - integrity sha512-aGI3DfswwqgKPiEOTaiHV2ZPC9KEhprpgEbJnv0fZl3SGX0cGgEva1126dGrMC6AJM6v/aihlUgJn9M5DbDZ/Q== - dependencies: - "@types/node" "*" - "@types/chroma-js@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.0.0.tgz#b0fc98c8625d963f14e8138e0a7961103303ab22" @@ -1653,14 +1667,6 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/enzyme@^3.1.13": - version "3.10.5" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.5.tgz#fe7eeba3550369eed20e7fb565bfb74eec44f1f0" - integrity sha512-R+phe509UuUYy9Tk0YlSbipRpfVtIzb/9BHn5pTEtjJTF5LXvUjrIQcZvNyANNEyFrd2YGs196PniNT1fgvOQA== - dependencies: - "@types/cheerio" "*" - "@types/react" "*" - "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" @@ -1704,10 +1710,17 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== -"@types/lodash@^4.14.116": - version "4.14.157" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.157.tgz#fdac1c52448861dfde1a2e1515dbc46e54926dc8" - integrity sha512-Ft5BNFmv2pHDgxV5JDsndOWTRJ+56zte0ZpYLowp03tW+K+t8u8YMOzAnpuqPgzX6WO1XpDIUm7u04M8vdDiVQ== +"@types/lodash@^4.14.160": + version "4.14.168" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" + integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== + +"@types/mdast@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + dependencies: + "@types/unist" "*" "@types/minimatch@*": version "3.0.3" @@ -1719,10 +1732,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.22.tgz#23ea4d88189cec7d58f9e6b66f786b215eb61bdc" integrity sha512-emeGcJvdiZ4Z3ohbmw93E/64jRzUHAItSHt8nF7M4TGgQTiWqFVGB8KNpLGFmUHmHLvjvBgFwVlqNcq+VuGv9g== -"@types/numeral@^0.0.25": - version "0.0.25" - resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.25.tgz#b6f55062827a4787fe4ab151cf3412a468e65271" - integrity sha512-ShHzHkYD+Ldw3eyttptCpUhF1/mkInWwasQkCNXZHOsJMJ/UMa8wXrxSrTJaVk0r4pLK/VnESVM0wFsfQzNEKQ== +"@types/numeral@^0.0.28": + version "0.0.28" + resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" + integrity sha512-Sjsy10w6XFHDktJJdXzBJmoondAKW+LcGpRFH+9+zXEDj0cOH8BxJuZA9vUDSMAzU1YRJlsPKmZEEiTYDlICLw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1739,17 +1752,17 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/react-beautiful-dnd@^12.1.2": - version "12.1.3" - resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-12.1.3.tgz#4ee393e0342b3b73b5ab6221e7d75cf1abb7ad10" - integrity sha512-QPPBg4kfodlDjx/BIar/mMcdynzZEqCsty+g3nBMF1KZKCepM0/QnqNaEmFj+129dgFGQBabF4qQHEYq5Y8mTQ== +"@types/react-beautiful-dnd@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#e60d3d965312fcf1516894af92dc3e9249587db4" + integrity sha512-by80tJ8aTTDXT256Gl+RfLRtFjYbUWOnZuEigJgNsJrSEGxvFe5eY6k3g4VIvf0M/6+xoLgfYWoWonlOo6Wqdg== dependencies: "@types/react" "*" -"@types/react-input-autosize@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/react-input-autosize/-/react-input-autosize-2.0.2.tgz#6ccdfb100c21b6096c1a04c3c3fac196b0ce61c1" - integrity sha512-QzewaD5kog7c6w5e3dretb+50oM8RDdDvVumQKCtPjI6VHyR8lA/HxCiTrv5l9Vgbi4NCitYuix/NorOevlrng== +"@types/react-input-autosize@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/react-input-autosize/-/react-input-autosize-2.2.0.tgz#d62b07567088e547500f4693ae25dce0639c1b4e" + integrity sha512-8NO64XLmdRKUHeteXnweVnXuuSQr5HMSa4vRyNBUKOeZlimvgHPMtRchFHVHO9k7VpDoufCFYMJ6XHJ44qMTBQ== dependencies: "@types/react" "*" @@ -1760,7 +1773,7 @@ dependencies: "@types/react" "*" -"@types/react-window@^1.8.1": +"@types/react-window@^1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.2.tgz#a5a6b2762ce73ffaab7911ee1397cf645f2459fe" integrity sha512-gP1xam68Wc4ZTAee++zx6pTdDAH08rAkQrWm4B4F/y6hhmlT9Mgx2q8lTCXnrPHXsr15XjRN9+K2DLKcz44qEQ== @@ -1787,6 +1800,18 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/vfile-message@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" + integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== + dependencies: + vfile-message "*" + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -2206,6 +2231,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +aria-hidden@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.1.2.tgz#5354315a29bffdaced3993fccd826817dc8c5272" + integrity sha512-WAMH9q3vRimVqP+B0q2eDvx7IPDoY17A2fWwj5atTA/zTYJCNcS6HJ5YErZ5FO3PUHhrV0y0yR1NA0dRNm913A== + dependencies: + tslib "^1.0.0" + aria-query@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" @@ -2386,6 +2418,11 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +attr-accept@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" + integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== + autoprefixer@^9.6.1: version "9.8.5" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.5.tgz#2c225de229ddafe1d1424c02791d0c3e10ccccaa" @@ -2571,6 +2608,11 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -3020,6 +3062,11 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +ccount@^1.0.0, ccount@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3048,6 +3095,26 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -3092,7 +3159,7 @@ chownr@^1.1.1, chownr@^1.1.2: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chroma-js@^2.0.4: +chroma-js@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.1.0.tgz#c0be48a21fe797ef8965608c1c4f911ef2da49d5" integrity sha512-uiRdh4ZZy+UTPSrAdp8hqEdVb1EllLtTHOt5TMaOjJUvi+O54/83Fc5K2ld1P+TJX+dw5B+8/sCgzI6eaur/lg== @@ -3129,7 +3196,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: +classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -3228,6 +3295,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3288,6 +3360,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + commander@^2.11.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3355,7 +3432,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.7, concat-stream@^1.5.0: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4007,6 +4084,11 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-node-es@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.0.0.tgz#c0318b9e539a5256ca780dd9575c9345af05b8ed" + integrity sha512-S4AHriUkTX9FoFvL4G8hXDcx6t3gp2HpfCza3Q0v6S78gul2hKWifLQbeW+ZF89+hSm2ZIc/uF3J97ZgytgTRg== + detect-node@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" @@ -4240,6 +4322,11 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== +emoticon@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" + integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4755,7 +4842,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4820,6 +4907,13 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== + dependencies: + format "^0.2.0" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -4868,6 +4962,13 @@ file-loader@4.3.0: loader-utils "^1.2.3" schema-utils "^2.5.0" +file-selector@^0.1.12: + version "0.1.19" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.1.19.tgz#8ecc9d069a6f544f2e4a096b64a8052e70ec8abf" + integrity sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ== + dependencies: + tslib "^2.0.1" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -4999,10 +5100,17 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -focus-lock@^0.6.3: - version "0.6.8" - resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.8.tgz#61985fadfa92f02f2ee1d90bc738efaf7f3c9f46" - integrity sha512-vkHTluRCoq9FcsrldC0ulQHiyBYgVJB2CX53I8r0nTC6KnEij7Of0jpBspjt3/CuNb6fyoj3aOh9J2HgQUM0og== +fn-name@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-3.0.0.tgz#0596707f635929634d791f452309ab41558e3c5c" + integrity sha512-eNMNr5exLoavuAMhIUVsOKF79SWd/zG104ef6sxBTSw+cZc6BXdQXDvYcGvp0VbxVVSp1XDUNoz7mg1xMtSznA== + +focus-lock@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.8.1.tgz#bb36968abf77a2063fa173cb6c47b12ac8599d33" + integrity sha512-/LFZOIo82WDsyyv7h7oc0MJF9ACOvDRdx9rWPZ2pgMfNWu/z8hQDBtOchuB/0BVLmuFOZjV02YwUVzNsWx/EzA== + dependencies: + tslib "^1.9.3" follow-redirects@1.5.10: version "1.5.10" @@ -5061,6 +5169,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -5225,6 +5338,11 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -5482,6 +5600,108 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hast-to-hyperscript@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-7.0.4.tgz#7c4c037d9a8ea19b0a3fdb676a26448ad922353d" + integrity sha512-vmwriQ2H0RPS9ho4Kkbf3n3lY436QKLq6VaGA1pzBh36hBi3tm1DO9bR+kaJIbpT10UqaANDkMjxvjVfr+cnOA== + dependencies: + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.2.1" + unist-util-is "^3.0.0" + web-namespaces "^1.1.2" + +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== + dependencies: + "@types/unist" "^2.0.3" + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" + +hast-util-from-parse5@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c" + integrity sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA== + dependencies: + ccount "^1.0.3" + hastscript "^5.0.0" + property-information "^5.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" + +hast-util-is-element@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" + integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== + +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hast-util-raw@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-5.0.2.tgz#62288f311ec2f35e066a30d5e0277f963ad43a67" + integrity sha512-3ReYQcIHmzSgMq8UrDZHFL0oGlbuVGdLKs8s/Fe8BfHFAyZDrdv1fy/AGn+Fim8ZuvAHcJ61NQhVMtyfHviT/g== + dependencies: + hast-util-from-parse5 "^5.0.0" + hast-util-to-parse5 "^5.0.0" + html-void-elements "^1.0.0" + parse5 "^5.0.0" + unist-util-position "^3.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hast-util-to-html@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-6.1.0.tgz#86bcd19c3bd46af456984f8f34db16298c2b10b0" + integrity sha512-IlC+LG2HGv0Y8js3wqdhg9O2sO4iVpRDbHOPwXd7qgeagpGsnY49i8yyazwqS35RA35WCzrBQE/n0M6GG/ewxA== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.1" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^5.2.0" + space-separated-tokens "^1.0.0" + stringify-entities "^2.0.0" + unist-util-is "^3.0.0" + xtend "^4.0.1" + +hast-util-to-parse5@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-5.1.2.tgz#09d27bee9ba9348ea05a6cfcc44e02f9083969b6" + integrity sha512-ZgYLJu9lYknMfsBY0rBV4TJn2xiwF1fXFFjbP6EE7S0s5mS8LIKBVWzhA1MeIs1SWW6GnnE4In6c3kPb+CWhog== + dependencies: + hast-to-hyperscript "^7.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" + +hast-util-whitespace@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" + integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== + +hastscript@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" + integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -5497,6 +5717,11 @@ highlight.js@^9.12.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== +highlight.js@~10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.6.0.tgz#0073aa71d566906965ba6e1b7be7b2682f5e18b6" + integrity sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5573,6 +5798,11 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + html-webpack-plugin@4.0.0-beta.11: version "4.0.0-beta.11" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz#3059a69144b5aecef97708196ca32f9e68677715" @@ -5585,13 +5815,6 @@ html-webpack-plugin@4.0.0-beta.11: tapable "^1.1.3" util.promisify "1.0.0" -html@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/html/-/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" - integrity sha1-pUT6nqVJK/s6LMqCEKEL57WvH2E= - dependencies: - concat-stream "^1.4.7" - htmlparser2@^3.3.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" @@ -5824,7 +6047,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5844,6 +6067,11 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + inquirer@7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" @@ -5950,6 +6178,19 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arguments@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" @@ -5984,6 +6225,11 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.4, is-callable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" @@ -6027,6 +6273,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-decimal@^1.0.0, is-decimal@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -6113,6 +6364,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -6164,6 +6420,11 @@ is-plain-obj@^1.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -6232,11 +6493,21 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" @@ -6898,11 +7169,6 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: array-includes "^3.1.1" object.assign "^4.1.0" -keymirror@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/keymirror/-/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35" - integrity sha1-kYiJ6hP40KQufFVyUO7nE63JXDU= - killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -7126,6 +7392,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash-es@^4.17.11: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7" + integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA== + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -7166,6 +7437,16 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -7176,6 +7457,11 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -7220,6 +7506,14 @@ lower-case@^2.0.1: dependencies: tslib "^1.10.0" +lowlight@^1.2.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.19.0.tgz#b8544199cafcf10c5731b21c7458c358f79a2a97" + integrity sha512-NIskvQ1d1ovKyUytkMpT8+8Bhq3Ub54os1Xp4RAC9uNbXH1YVRf5NERq7JNzapEe5BzUc1Cj4F0I+eLBBFj6hA== + dependencies: + fault "^1.0.0" + highlight.js "~10.6.0" + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -7293,6 +7587,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -7302,6 +7601,27 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-util-definitions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz#06af6c49865fc63d6d7d30125569e2f7ae3d0a86" + integrity sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-to-hast@^9.1.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-9.1.2.tgz#10fa5ed9d45bf3755891e5801d0f32e2584a9423" + integrity sha512-OpkFLBC2VnNAb2FNKcKWu9FMbJhQKog+FCT8nuKmQNIKXyT1n3SIskE7uWDep6x+cA20QXlK5AETHQtYmQmxtQ== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^3.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" @@ -7312,6 +7632,11 @@ mdn-data@2.0.6: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -7668,6 +7993,13 @@ no-case@^3.0.3: lower-case "^2.0.1" tslib "^1.10.0" +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" @@ -8251,6 +8583,18 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -8286,6 +8630,11 @@ parse5@5.1.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -9267,6 +9616,18 @@ proper-url-join@2.1.1: dependencies: query-string "^6.3.0" +property-expr@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" + integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg== + +property-information@^5.0.0, property-information@^5.2.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -9403,7 +9764,7 @@ raf-schd@^4.0.2: resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== -raf@^3.4.1: +raf@^3.3.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -9476,12 +9837,12 @@ react-beautiful-dnd@^13.0.0: redux "^4.0.4" use-memo-one "^1.1.1" -react-clientside-effect@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837" - integrity sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A== +react-clientside-effect@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz#e2c4dc3c9ee109f642fac4f5b6e9bf5bcd2219a3" + integrity sha512-2bL8qFW1TGBHozGGbVeyvnggRpMjibeZM2536AKNENLECutp2yfs44IL8Hmpn8qjFQ2K7A9PnYf3vc7aQq/cPA== dependencies: - "@babel/runtime" "^7.0.0" + "@babel/runtime" "^7.12.13" react-dev-utils@^10.2.1: version "10.2.1" @@ -9523,6 +9884,15 @@ react-dom@16.13.1: prop-types "^15.6.2" scheduler "^0.19.1" +react-dropzone@^10.2.1: + version "10.2.2" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-10.2.2.tgz#67b4db7459589a42c3b891a82eaf9ade7650b815" + integrity sha512-U5EKckXVt6IrEyhMMsgmHQiWTGLudhajPPG77KFSvgsMqNEHSyGpqWvOMc5+DhEah/vH4E1n+J5weBNLd5VtyA== + dependencies: + attr-accept "^2.0.0" + file-selector "^0.1.12" + prop-types "^15.7.2" + react-error-overlay@^6.0.7: version "6.0.7" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" @@ -9533,15 +9903,29 @@ react-fast-compare@^3.2.0: resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-focus-lock@^1.17.7: - version "1.19.1" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-1.19.1.tgz#2f3429793edaefe2d077121f973ce5a3c7a0651a" - integrity sha512-TPpfiack1/nF4uttySfpxPk4rGZTLXlaZl7ncZg/ELAk24Iq2B1UUaUioID8H8dneUXqznT83JTNDHDj+kwryw== +react-focus-lock@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.5.0.tgz#12e3a3940e897c26e2c2a0408cd25ea3c99b3709" + integrity sha512-XLxj6uTXgz0US8TmqNU2jMfnXwZG0mH2r/afQqvPEaX6nyEll5LHVcEXk2XDUQ34RVeLPkO/xK5x6c/qiuSq/A== dependencies: "@babel/runtime" "^7.0.0" - focus-lock "^0.6.3" + focus-lock "^0.8.1" prop-types "^15.6.2" - react-clientside-effect "^1.2.0" + react-clientside-effect "^1.2.2" + use-callback-ref "^1.2.1" + use-sidecar "^1.0.1" + +react-focus-on@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/react-focus-on/-/react-focus-on-3.5.1.tgz#b459309cbee1b0a42dac92253e434d2860a509f6" + integrity sha512-6iE56nYNwVU6Pke362TjqRLz/G7DBGnEugkxhPAhpXEZW5og3vhc9qDPlyiHgxoiY9kYTWjdAEFz4nJgSluANg== + dependencies: + aria-hidden "^1.1.1" + react-focus-lock "^2.3.1" + react-remove-scroll "^2.4.0" + react-style-singleton "^2.1.0" + use-callback-ref "^1.2.3" + use-sidecar "^1.0.1" react-google-login@5.1.19: version "5.1.19" @@ -9584,6 +9968,25 @@ react-redux@^7.1.1: prop-types "^15.7.2" react-is "^16.9.0" +react-remove-scroll-bar@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.2.0.tgz#d4d545a7df024f75d67e151499a6ab5ac97c8cdd" + integrity sha512-UU9ZBP1wdMR8qoUs7owiVcpaPwsQxUDC2lypP6mmixaGlARZa7ZIBx1jcuObLdhMOvCsnZcvetOho0wzPa9PYg== + dependencies: + react-style-singleton "^2.1.0" + tslib "^1.0.0" + +react-remove-scroll@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.4.1.tgz#e0af6126621083a5064591d367291a81b2d107f5" + integrity sha512-K7XZySEzOHMTq7dDwcHsZA6Y7/1uX5RsWhRXVYv8rdh+y9Qz2nMwl9RX/Mwnj/j7JstCGmxyfyC0zbVGXYh3mA== + dependencies: + react-remove-scroll-bar "^2.1.0" + react-style-singleton "^2.1.0" + tslib "^1.0.0" + use-callback-ref "^1.2.3" + use-sidecar "^1.0.1" + react-scripts@3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.1.tgz#f551298b5c71985cc491b9acf3c8e8c0ae3ada0a" @@ -9644,6 +10047,31 @@ react-scripts@3.4.1: optionalDependencies: fsevents "2.1.2" +react-scroll@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/react-scroll/-/react-scroll-1.8.1.tgz#eb4052265f1606cf60855c981ebcfed1bc3beff3" + integrity sha512-UAKmawFHn+c7x/DoXuHqOsQ5xwNk2Dxv7vP8Ft41K2hglPWkshcSos0tMTr8704UkFqImoUGzMTdN4vuZXoqbw== + dependencies: + lodash.throttle "^4.1.1" + prop-types "^15.7.2" + +react-sticky@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/react-sticky/-/react-sticky-6.0.3.tgz#7a18b643e1863da113d7f7036118d2a75d9ecde4" + integrity sha512-LNH4UJlRatOqo29/VHxDZOf6fwbgfgcHO4mkEFvrie5FuaZCSTGtug5R8NGqJ0kSnX8gHw8qZN37FcvnFBJpTQ== + dependencies: + prop-types "^15.5.8" + raf "^3.3.0" + +react-style-singleton@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.1.1.tgz#ce7f90b67618be2b6b94902a30aaea152ce52e66" + integrity sha512-jNRp07Jza6CBqdRKNgGhT3u9umWvils1xsuMOjZlghBDH2MU0PL2WZor4PGYjXpnRCa9DQSlHMs/xnABWOwYbA== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^1.0.0" + react-virtualized-auto-sizer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.2.tgz#a61dd4f756458bbf63bd895a92379f9b70f803bd" @@ -9869,11 +10297,79 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +rehype-raw@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-4.0.2.tgz#5d3191689df96c8c651ce5f51a6c668d2c07b9c8" + integrity sha512-xQt94oXfDaO7sK9mJBtsZXkjW/jm6kArCoYN+HqKZ51O19AFHlp3Xa5UfZZ2tJkbpAZzKtgVUYvnconk9IsFuA== + dependencies: + hast-util-raw "^5.0.0" + +rehype-react@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/rehype-react/-/rehype-react-6.2.0.tgz#705a5b3055548848ff8a7778c978fd368b0d4425" + integrity sha512-XpR3p8ejdJ5CSEKqAfASIrkD+KaHLy0JOqXu9zM32tvkr1cUeM7AeidF6Q8eQ/wtMvcJb+h/L4QRwg1eFwBggQ== + dependencies: + "@mapbox/hast-util-table-cell-style" "^0.1.3" + hast-to-hyperscript "^9.0.0" + +rehype-stringify@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-6.0.1.tgz#b6aa9f84d5276c5d247c62fc1ea15983a35a4575" + integrity sha512-JfEPRDD4DiG7jet4md7sY07v6ACeb2x+9HWQtRPm2iA6/ic31hCv1SNBUtpolJASxQ/D8gicXiviW4TJKEMPKQ== + dependencies: + hast-util-to-html "^6.0.0" + xtend "^4.0.0" + relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +remark-emoji@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/remark-emoji/-/remark-emoji-2.1.0.tgz#69165d1181b98a54ad5d9ef811003d53d7ebc7db" + integrity sha512-lDddGsxXURV01WS9WAiS9rO/cedO1pvr9tahtLhr6qCGFhHG4yZSJW3Ha4Nw9Uk1hLNmUBtPC0+m45Ms+xEitg== + dependencies: + emoticon "^3.2.0" + node-emoji "^1.10.0" + unist-util-visit "^2.0.2" + +remark-highlight.js@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/remark-highlight.js/-/remark-highlight.js-5.2.0.tgz#6d8d22085e0c76573744b7e3706fc232269f5b02" + integrity sha512-5tCr1CfdXDYzR8HCAnohlr1rK8DjUTFxEZdr+QEul5o13+EOEt5RrO8U6Znf8Faj5rVLcMJtxLPq6hHrZFo33A== + dependencies: + lowlight "^1.2.0" + unist-util-visit "^1.0.0" + +remark-parse@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf" + integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + +remark-rehype@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-7.0.0.tgz#8e106e49806c69b2e9523b76d24965119e2da67b" + integrity sha512-uqQ/VbaTdxyu/da6npHAso6hA00cMqhA3a59RziQdOLN2KEIkPykAVy52IcmZEVTuauXO0VtpxkyCey4phtHzQ== + dependencies: + mdast-util-to-hast "^9.1.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -9895,7 +10391,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -9969,7 +10465,7 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resize-observer-polyfill@^1.5.0: +resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== @@ -10670,6 +11166,11 @@ source-map@^0.5.0, source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -10776,6 +11277,11 @@ stack-utils@^1.0.1: resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -10949,6 +11455,17 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-2.0.0.tgz#fa7ca6614b355fb6c28448140a20c4ede7462827" + integrity sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.2" + is-hexadecimal "^1.0.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -11036,6 +11553,20 @@ style-loader@0.23.1: loader-utils "^1.1.0" schema-utils "^1.0.0" +style-to-object@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" + integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== + dependencies: + inline-style-parser "0.1.1" + +style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + stylehacks@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" @@ -11105,6 +11636,11 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synchronous-promise@^2.0.13: + version "2.0.15" + resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e" + integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== + tabbable@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-3.1.2.tgz#f2d16cccd01f400e38635c7181adfe0ad965a4a2" @@ -11292,6 +11828,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -11312,6 +11853,21 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +trim-trailing-lines@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + "true-case-path@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" @@ -11329,11 +11885,21 @@ ts-pnp@^1.1.6: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== +tslib@^1.0.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -11398,6 +11964,14 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -11421,6 +11995,17 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unified@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" + integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -11455,6 +12040,76 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== + +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-is@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50" + integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA== + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + +unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -11520,11 +12175,24 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +use-callback-ref@^1.2.1, use-callback-ref@^1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.5.tgz#6115ed242cfbaed5915499c0a9842ca2912f38a5" + integrity sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg== + use-memo-one@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== +use-sidecar@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.4.tgz#38398c3723727f9f924bed2343dfa3db6aaaee46" + integrity sha512-A5ggIS3/qTdxCAlcy05anO2/oqXOfpmxnpRE1Jm+fHHtCvUvNSZDGqgOSAXPriBVAcw2fMFFkh5v5KqrFFhCMA== + dependencies: + detect-node-es "^1.0.0" + tslib "^1.9.3" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -11577,11 +12245,16 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" @@ -11614,6 +12287,29 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@*, vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile@^4.0.0, vfile@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + vlq@^0.2.2: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" @@ -11690,6 +12386,11 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +web-namespaces@^1.0.0, web-namespaces@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -12112,7 +12813,7 @@ xregexp@^4.3.0: dependencies: "@babel/runtime-corejs3" "^7.8.3" -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -12191,3 +12892,21 @@ yargs@^13.3.0, yargs@^13.3.2: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^13.1.2" + +yup@^0.29.1: + version "0.29.3" + resolved "https://registry.yarnpkg.com/yup/-/yup-0.29.3.tgz#69a30fd3f1c19f5d9e31b1cf1c2b851ce8045fea" + integrity sha512-RNUGiZ/sQ37CkhzKFoedkeMfJM0vNQyaz+wRZJzxdKE7VfDeVKH8bb4rr7XhRLbHJz5hSjoDNwMEIaKhuMZ8gQ== + dependencies: + "@babel/runtime" "^7.10.5" + fn-name "~3.0.0" + lodash "^4.17.15" + lodash-es "^4.17.11" + property-expr "^2.0.2" + synchronous-promise "^2.0.13" + toposort "^2.0.2" + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==