diff --git a/core/.eslintrc.js b/core/.eslintrc.js index e1e0cdbd..066881cd 100644 --- a/core/.eslintrc.js +++ b/core/.eslintrc.js @@ -55,6 +55,24 @@ module.exports = { caughtErrorsIgnorePattern: '^_', }, ], + '@typescript-eslint/no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['@mui/*/*/*', '!@mui/material/test-utils/*'], + message: 'Do not import material imports as 3rd level imports', + allowTypeImports: true, + }, + { + group: ['@mui/material', '!@mui/material/'], + message: 'Please import material imports as defaults or 2nd level imports', + allowTypeImports: true, + }, + ], + }, + ], + 'import/prefer-default-export': 'error', }, plugins: ['babel', '@emotion', 'cypress', 'unicorn', 'react-hooks'], settings: { @@ -62,9 +80,7 @@ module.exports = { version: 'detect', }, 'import/resolver': { - node: { - extensions: ['.js', '.jsx', '.ts', '.tsx'], - }, + typescript: {}, // this loads /tsconfig.json to eslint }, 'import/core-modules': ['src'], }, diff --git a/core/dev-test/index.html b/core/dev-test/index.html index a5c8ee28..ab756e5e 100644 --- a/core/dev-test/index.html +++ b/core/dev-test/index.html @@ -68,9 +68,7 @@ content: '{}', }, 'image.json': { - content: `{ - "required": "/assets/uploads/moby-dick.jpg" - }`, + content: `{}`, }, 'map.json': { content: '{}', @@ -125,7 +123,71 @@ dateString + 'T00:00:00.000Z\n---\n# The post is number ' + i + - '\n\nAnd this is yet another identical post body', + `\n\n![Static CMS](https://raw.githubusercontent.com/StaticJsCMS/static-cms/main/static-cms-logo.png) + +# Awesome Editor! + +It was _released as open source in 2022_ and is **_continually_** evolving to be the **best editor experience** available for static site generators. + +## MDX + +The output out this widget is \`mdx\`, a mixture of \`markdown\` and \`javascript components\`. See [MDX documentation](https://mdxjs.com/docs/). + +\`\`\`yaml +name: body +label: Blog post content +widget: markdown +\`\`\` + +\`\`\`js +name: 'body', +label: 'Blog post content', +widget: 'markdown', +\`\`\` + +> See the table below for default options +> More API information can be found in the document + +| Name | Type | Default | Description | +| ------------- | --------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| default | string | \`''\` | _Optional_. The default value for the field. Accepts markdown content | +| media_library | Media Library Options | \`{}\` | _Optional_. Media library settings to apply when a media library is opened by the current widget. See [Media Library Options](#media-library-options) | +| media_folder | string | | _Optional_. Specifies the folder path where uploaded files should be saved, relative to the base of the repo | +| public_folder | string | | _Optional_. Specifies the folder path where the files uploaded by the media library will be accessed, relative to the base of the built site | + +### Media Library Options + +| Name | Type | Default | Description | +| -------------- | ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| allow_multiple | boolean | \`true\` | _Optional_. When set to \`false\`, prevents multiple selection for any media library extension, but must be supported by the extension in use | +| config | string | \`{}\` | _Optional_. A configuration object that will be passed directly to the media library being used - available options are determined by the library | +| choose_url | string
\\| boolean | \`true\` | _Optional_. When set to \`false\`, the "Insert from URL" button will be hidden + +## Features + +* CommonMark + GFM Specifications + * Live \`Preview\` + * Auto Indent + * Syntax Highlight + 1. Rich Editor + 2. Preview + +## Formatting + +Colored Text + +

Centered Text

+ +**Bold**, *Italic*, ***both***, Underlined + +~~Strikethrough~~, subscript, superscript + +## Support + +> * Supports remark plugins +> * Supports wrappers +> 1. [x] React +> 2. [ ] More coming soon`, }; } diff --git a/core/package.json b/core/package.json index 6f40b79f..946e5a90 100644 --- a/core/package.json +++ b/core/package.json @@ -41,30 +41,41 @@ "last 2 Safari versions" ], "dependencies": { + "@codemirror/commands": "6.1.2", + "@codemirror/view": "6.6.0", "@emotion/babel-preset-css-prop": "11.10.0", "@emotion/css": "11.10.0", "@emotion/react": "11.10.4", "@emotion/styled": "11.10.4", "@ltd/j-toml": "1.35.3", + "@mdx-js/mdx": "2.1.5", + "@mdx-js/react": "2.1.5", "@mui/icons-material": "5.10.6", "@mui/material": "5.10.10", "@mui/system": "5.4.1", "@mui/x-date-pickers": "5.0.9", - "@reduxjs/toolkit": "1.8.5", - "@toast-ui/react-editor": "3.2.2", + "@reduxjs/toolkit": "1.9.1", + "@styled-icons/fluentui-system-regular": "10.46.0", + "@styled-icons/remix-editor": "10.46.0", + "@udecode/plate": "18.9.0", + "@udecode/plate-juice": "18.9.0", + "@udecode/plate-serializer-md": "18.9.0", + "@uiw/codemirror-extensions-langs": "4.14.2", + "@uiw/react-codemirror": "4.14.2", "ajv": "8.11.2", "ajv-errors": "3.0.0", "ajv-keywords": "5.1.0", "array-move": "4.0.0", "buffer": "6.0.3", "clean-stack": "4.2.0", - "codemirror": "5.65.9", + "codemirror": "6.0.1", "common-tags": "1.8.1", "copy-text-to-clipboard": "3.0.1", "create-react-class": "15.7.0", "date-fns": "2.29.3", "deepmerge": "4.2.2", "diacritics": "1.3.0", + "escape-html": "1.0.3", "eslint-config-prettier": "8.5.0", "eslint-plugin-babel": "5.3.1", "fuzzy": "0.1.3", @@ -74,7 +85,7 @@ "graphql-tag": "2.12.6", "gray-matter": "4.0.3", "history": "4.10.1", - "immer": "9.0.15", + "immer": "9.0.16", "ini": "2.0.0", "is-hotkey": "0.2.0", "js-base64": "3.7.2", @@ -88,15 +99,14 @@ "ol": "6.15.1", "path-browserify": "1.0.1", "react": "18.2.0", - "react-codemirror2": "7.2.1", "react-color": "2.19.3", - "react-dnd": "14.0.5", - "react-dnd-html5-backend": "14.1.0", + "react-dnd": "16.0.1", + "react-dnd-html5-backend": "16.0.1", "react-dom": "18.2.0", "react-frame-component": "5.2.3", "react-is": "18.2.0", "react-polyglot": "0.7.2", - "react-redux": "8.0.4", + "react-redux": "8.0.5", "react-router-dom": "6.4.1", "react-scroll-sync": "0.9.0", "react-sortable-hoc": "2.0.0", @@ -105,17 +115,31 @@ "react-virtualized-auto-sizer": "1.0.7", "react-waypoint": "10.3.0", "react-window": "1.8.7", + "remark-gfm": "3.0.1", + "remark-html": "15.0.1", + "remark-mdx": "2.1.5", + "remark-parse": "10.0.1", "sanitize-filename": "1.6.3", "semaphore": "1.1.0", + "slate": "0.85.0", + "slate-history": "0.85.0", + "slate-hyperscript": "0.77.0", + "slate-react": "0.83.2", "stream-browserify": "3.0.0", + "styled-components": "5.3.6", "symbol-observable": "4.0.0", "ts-loader": "9.4.1", + "unified": "10.1.2", + "unist-util-visit": "4.1.1", "uploadcare-widget": "3.19.0", "uploadcare-widget-tab-effects": "1.5.0", "url": "0.11.0", "url-join": "4.0.1", "uuid": "3.4.0", "validate-color": "2.2.1", + "vfile": "5.3.6", + "vfile-message": "3.1.3", + "vfile-statistics": "2.0.0", "what-input": "5.2.12", "what-the-diff": "0.6.0", "yaml": "1.10.2" @@ -137,7 +161,7 @@ "@octokit/core": "4.1.0", "@octokit/rest": "16.43.2", "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", - "@types/codemirror": "5.60.5", + "@simbathesailor/use-what-changed": "2.0.0", "@types/common-tags": "1.8.0", "@types/create-react-class": "15.6.3", "@types/fs-extra": "9.0.13", @@ -149,6 +173,7 @@ "@types/jwt-decode": "2.2.1", "@types/lodash": "4.14.191", "@types/minimatch": "5.1.2", + "@types/node": "16.18.4", "@types/node-fetch": "2.6.2", "@types/react": "18.0.25", "@types/react-color": "3.0.6", @@ -156,6 +181,7 @@ "@types/react-scroll-sync": "0.8.4", "@types/react-virtualized-auto-sizer": "1.0.1", "@types/react-window": "1.8.5", + "@types/styled-components": "5.1.26", "@types/url-join": "4.0.1", "@types/uuid": "3.4.10", "@typescript-eslint/eslint-plugin": "5.38.0", @@ -179,6 +205,7 @@ "css-loader": "3.6.0", "dotenv": "10.0.0", "eslint": "8.24.0", + "eslint-import-resolver-typescript": "3.5.2", "eslint-plugin-cypress": "2.12.1", "eslint-plugin-import": "2.26.0", "eslint-plugin-prettier": "4.2.1", @@ -208,6 +235,7 @@ "source-map-loader": "4.0.0", "style-loader": "3.3.1", "to-string-loader": "1.2.0", + "tsconfig-paths-webpack-plugin": "4.0.0", "typescript": "4.8.4", "webpack": "5.74.0", "webpack-cli": "4.10.0", diff --git a/core/src/actions/config.ts b/core/src/actions/config.ts index b222437e..f768ea89 100644 --- a/core/src/actions/config.ts +++ b/core/src/actions/config.ts @@ -5,7 +5,7 @@ import trimStart from 'lodash/trimStart'; import yaml from 'yaml'; import { resolveBackend } from '../backend'; -import { validateConfig } from '../constants/configSchema'; +import validateConfig from '../constants/configSchema'; import { I18N, I18N_FIELD, I18N_STRUCTURE } from '../lib/i18n'; import { selectDefaultSortableFields } from '../lib/util/collection.util'; import { getIntegrations, selectIntegration } from '../reducers/integrations'; diff --git a/core/src/actions/entries.ts b/core/src/actions/entries.ts index fc62cda1..32aa3539 100644 --- a/core/src/actions/entries.ts +++ b/core/src/actions/entries.ts @@ -14,7 +14,7 @@ import { selectEntriesSortFields, selectIsFetching } from '../reducers/entries'; import { navigateToEntry } from '../routing/history'; import { addSnackbar } from '../store/slices/snackbars'; import { createAssetProxy } from '../valueObjects/AssetProxy'; -import { createEntry } from '../valueObjects/Entry'; +import createEntry from '../valueObjects/createEntry'; import { addAssets, getAsset } from './media'; import { loadMedia, waitForMediaLibraryToLoad } from './mediaLibrary'; import { waitUntil } from './waitUntil'; @@ -475,18 +475,16 @@ export function changeDraftField({ path, field, value, - entry, i18n, }: { path: string; field: Field; value: ValueOrNestedValue; - entry?: Entry | null; i18n?: I18nSettings; }) { return { type: DRAFT_CHANGE_FIELD, - payload: { path, field, value, entry, i18n }, + payload: { path, field, value, i18n }, } as const; } @@ -884,7 +882,7 @@ export function createEmptyDraftData( fields: Field[], skipField: (field: Field) => boolean = () => false, ) { - return fields.reduce((acc, item) => { + const ddd = fields.reduce((acc, item) => { if (skipField(item)) { return acc; } @@ -904,7 +902,7 @@ export function createEmptyDraftData( } else { const asList = Array.isArray(subfields) ? subfields : [subfields]; - const subDefaultValue = Array.isArray(subfields) + const subDefaultValue = list ? [createEmptyDraftData(asList, skipField)] : createEmptyDraftData(asList, skipField); @@ -921,6 +919,8 @@ export function createEmptyDraftData( return acc; }, {} as ObjectValue); + + return ddd; } function createEmptyDraftI18nData(collection: Collection, dataFields: Field[]) { diff --git a/core/src/actions/media.ts b/core/src/actions/media.ts index 59754387..b89ef552 100644 --- a/core/src/actions/media.ts +++ b/core/src/actions/media.ts @@ -42,7 +42,7 @@ export function loadAssetFailure(path: string, error: Error) { return { type: LOAD_ASSET_FAILURE, payload: { path, error } } as const; } -const emptyAsset = createAssetProxy({ +export const emptyAsset = createAssetProxy({ path: 'empty.svg', file: new File([``], 'empty.svg', { type: 'image/svg+xml', @@ -84,7 +84,7 @@ async function loadAsset( const promiseCache: Record> = {}; export function getAsset( - collection: Collection | null | undefined, + collection: Collection | null | undefined, entry: Entry | null | undefined, path: string, field?: F, @@ -104,7 +104,7 @@ export function getAsset( const resolvedPath = selectMediaFilePath( state.config.config, - collection, + collection as Collection, entry, path, field as Field, diff --git a/core/src/backend.ts b/core/src/backend.ts index 26a15025..b01c00ec 100644 --- a/core/src/backend.ts +++ b/core/src/backend.ts @@ -41,7 +41,7 @@ import { import { selectMediaFilePath } from './lib/util/media.util'; import { set } from './lib/util/object.util'; import { dateParsers, expandPath, extractTemplateVars } from './lib/widgets/stringTemplate'; -import { createEntry } from './valueObjects/Entry'; +import createEntry from './valueObjects/createEntry'; import type { BackendClass, diff --git a/core/src/backends/bitbucket/API.ts b/core/src/backends/bitbucket/API.ts index 098787bd..a2e787bc 100644 --- a/core/src/backends/bitbucket/API.ts +++ b/core/src/backends/bitbucket/API.ts @@ -15,11 +15,11 @@ import { then, throwOnConflictingBranches, unsentRequest, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; -import type { DataFile, PersistOptions } from '../../interface'; -import type { ApiRequest, FetchError } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +import type { DataFile, PersistOptions } from '@staticcms/core/interface'; +import type { ApiRequest, FetchError } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; interface Config { apiRoot?: string; diff --git a/core/src/backends/bitbucket/AuthenticationPage.tsx b/core/src/backends/bitbucket/AuthenticationPage.tsx index b24889f3..a8d530da 100644 --- a/core/src/backends/bitbucket/AuthenticationPage.tsx +++ b/core/src/backends/bitbucket/AuthenticationPage.tsx @@ -1,12 +1,12 @@ import { styled } from '@mui/material/styles'; import React, { useCallback, useMemo, useState } from 'react'; -import AuthenticationPage from '../../components/UI/AuthenticationPage'; -import Icon from '../../components/UI/Icon'; -import { ImplicitAuthenticator, NetlifyAuthenticator } from '../../lib/auth'; +import AuthenticationPage from '@staticcms/core/components/UI/AuthenticationPage'; +import Icon from '@staticcms/core/components/UI/Icon'; +import { ImplicitAuthenticator, NetlifyAuthenticator } from '@staticcms/core/lib/auth'; import type { MouseEvent } from 'react'; -import type { AuthenticationPageProps, TranslatedProps } from '../../interface'; +import type { AuthenticationPageProps, TranslatedProps } from '@staticcms/core/interface'; const LoginButtonIcon = styled(Icon)` margin-right: 18px; diff --git a/core/src/backends/bitbucket/git-lfs-client.ts b/core/src/backends/bitbucket/git-lfs-client.ts index fc1e837d..add42b2b 100644 --- a/core/src/backends/bitbucket/git-lfs-client.ts +++ b/core/src/backends/bitbucket/git-lfs-client.ts @@ -1,8 +1,8 @@ import minimatch from 'minimatch'; -import { unsentRequest } from '../../lib/util'; +import { unsentRequest } from '@staticcms/core/lib/util'; -import type { ApiRequest, PointerFile } from '../../lib/util'; +import type { ApiRequest, PointerFile } from '@staticcms/core/lib/util'; type MakeAuthorizedRequest = (req: ApiRequest) => Promise; @@ -37,7 +37,7 @@ interface LfsBatchUploadResponse { objects: (LfsBatchObjectUpload | LfsBatchObjectError)[]; } -export class GitLfsClient { +export default class GitLfsClient { private static defaultContentHeaders = { Accept: 'application/vnd.git-lfs+json', ['Content-Type']: 'application/vnd.git-lfs+json', diff --git a/core/src/backends/bitbucket/implementation.ts b/core/src/backends/bitbucket/implementation.ts index ecb13f02..fe4887cf 100644 --- a/core/src/backends/bitbucket/implementation.ts +++ b/core/src/backends/bitbucket/implementation.ts @@ -2,7 +2,7 @@ import { stripIndent } from 'common-tags'; import trimStart from 'lodash/trimStart'; import semaphore from 'semaphore'; -import { NetlifyAuthenticator } from '../../lib/auth'; +import { NetlifyAuthenticator } from '@staticcms/core/lib/auth'; import { AccessTokenError, allEntriesByFolder, @@ -22,10 +22,10 @@ import { localForage, runWithLock, unsentRequest, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; import API, { API_NAME } from './API'; import AuthenticationPage from './AuthenticationPage'; -import { GitLfsClient } from './git-lfs-client'; +import GitLfsClient from './git-lfs-client'; import type { Semaphore } from 'semaphore'; import type { @@ -37,9 +37,9 @@ import type { ImplementationFile, PersistOptions, User, -} from '../../interface'; -import type { ApiRequest, AsyncLock, Cursor, FetchError } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +} from '@staticcms/core/interface'; +import type { ApiRequest, AsyncLock, Cursor, FetchError } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; const MAX_CONCURRENT_DOWNLOADS = 10; diff --git a/core/src/backends/git-gateway/AuthenticationPage.tsx b/core/src/backends/git-gateway/AuthenticationPage.tsx index 0e4e4da2..6ecc9bc9 100644 --- a/core/src/backends/git-gateway/AuthenticationPage.tsx +++ b/core/src/backends/git-gateway/AuthenticationPage.tsx @@ -1,8 +1,8 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import AuthenticationPage from '../../components/UI/AuthenticationPage'; +import AuthenticationPage from '@staticcms/core/components/UI/AuthenticationPage'; -import type { AuthenticationPageProps, TranslatedProps, User } from '../../interface'; +import type { AuthenticationPageProps, TranslatedProps, User } from '@staticcms/core/interface'; function useNetlifyIdentifyEvent(eventName: 'login', callback: (login: User) => void): void; function useNetlifyIdentifyEvent(eventName: 'logout', callback: () => void): void; diff --git a/core/src/backends/git-gateway/GitHubAPI.ts b/core/src/backends/git-gateway/GitHubAPI.ts index 90c8e906..feaa0e05 100644 --- a/core/src/backends/git-gateway/GitHubAPI.ts +++ b/core/src/backends/git-gateway/GitHubAPI.ts @@ -1,7 +1,7 @@ -import { APIError } from '../../lib/util'; +import { APIError } from '@staticcms/core/lib/util'; import { API as GithubAPI } from '../github'; -import type { FetchError } from '../../lib/util'; +import type { FetchError } from '@staticcms/core/lib/util'; import type { Config as GitHubConfig } from '../github/API'; type Config = GitHubConfig & { diff --git a/core/src/backends/git-gateway/GitLabAPI.ts b/core/src/backends/git-gateway/GitLabAPI.ts index 6862a94b..171d7c95 100644 --- a/core/src/backends/git-gateway/GitLabAPI.ts +++ b/core/src/backends/git-gateway/GitLabAPI.ts @@ -1,8 +1,8 @@ -import { unsentRequest } from '../../lib/util'; +import { unsentRequest } from '@staticcms/core/lib/util'; import { API as GitlabAPI } from '../gitlab'; import type { Config as GitLabConfig, CommitAuthor } from '../gitlab/API'; -import type { ApiRequest } from '../../lib/util'; +import type { ApiRequest } from '@staticcms/core/lib/util'; type Config = GitLabConfig & { tokenPromise: () => Promise; commitAuthor: CommitAuthor }; diff --git a/core/src/backends/git-gateway/implementation.tsx b/core/src/backends/git-gateway/implementation.tsx index 395b4a96..823c3f05 100644 --- a/core/src/backends/git-gateway/implementation.tsx +++ b/core/src/backends/git-gateway/implementation.tsx @@ -15,7 +15,7 @@ import { getPointerFileForMediaFileObj, parsePointerFile, unsentRequest, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; import { API as BitBucketAPI, BitbucketBackend } from '../bitbucket'; import { GitHubBackend } from '../github'; import { GitLabBackend } from '../gitlab'; @@ -36,9 +36,9 @@ import type { PersistOptions, TranslatedProps, User, -} from '../../interface'; -import type { ApiRequest, Cursor } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +} from '@staticcms/core/interface'; +import type { ApiRequest, Cursor } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; import type { Client } from './netlify-lfs-client'; const STATUS_PAGE = 'https://www.netlifystatus.com'; diff --git a/core/src/backends/git-gateway/netlify-lfs-client.ts b/core/src/backends/git-gateway/netlify-lfs-client.ts index 1ce964ed..e1b9a2b6 100644 --- a/core/src/backends/git-gateway/netlify-lfs-client.ts +++ b/core/src/backends/git-gateway/netlify-lfs-client.ts @@ -3,9 +3,9 @@ import isPlainObject from 'lodash/isPlainObject'; import isEmpty from 'lodash/isEmpty'; import minimatch from 'minimatch'; -import { unsentRequest } from '../../lib/util'; +import { unsentRequest } from '@staticcms/core/lib/util'; -import type { ApiRequest, PointerFile } from '../../lib/util'; +import type { ApiRequest, PointerFile } from '@staticcms/core/lib/util'; type MakeAuthorizedRequest = (req: ApiRequest) => Promise; diff --git a/core/src/backends/github/API.ts b/core/src/backends/github/API.ts index a65f64b9..1c4c0d11 100644 --- a/core/src/backends/github/API.ts +++ b/core/src/backends/github/API.ts @@ -17,13 +17,13 @@ import { readFileMetadata, requestWithBackoff, unsentRequest, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; import type { Octokit } from '@octokit/rest'; import type { Semaphore } from 'semaphore'; -import type { DataFile, PersistOptions } from '../../interface'; -import type { ApiRequest, FetchError } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +import type { DataFile, PersistOptions } from '@staticcms/core/interface'; +import type { ApiRequest, FetchError } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; type GitHubUser = Octokit.UsersGetAuthenticatedResponse; type GitCreateTreeParamsTree = Octokit.GitCreateTreeParamsTree; diff --git a/core/src/backends/github/AuthenticationPage.tsx b/core/src/backends/github/AuthenticationPage.tsx index fc5e23fd..3f961414 100644 --- a/core/src/backends/github/AuthenticationPage.tsx +++ b/core/src/backends/github/AuthenticationPage.tsx @@ -1,12 +1,12 @@ import { styled } from '@mui/material/styles'; import React, { useCallback, useState } from 'react'; -import AuthenticationPage from '../../components/UI/AuthenticationPage'; -import Icon from '../../components/UI/Icon'; -import { NetlifyAuthenticator } from '../../lib/auth'; +import AuthenticationPage from '@staticcms/core/components/UI/AuthenticationPage'; +import Icon from '@staticcms/core/components/UI/Icon'; +import { NetlifyAuthenticator } from '@staticcms/core/lib/auth'; import type { MouseEvent } from 'react'; -import type { AuthenticationPageProps, TranslatedProps } from '../../interface'; +import type { AuthenticationPageProps, TranslatedProps } from '@staticcms/core/interface'; const LoginButtonIcon = styled(Icon)` margin-right: 18px; diff --git a/core/src/backends/github/implementation.tsx b/core/src/backends/github/implementation.tsx index 65bb3f5b..573bdaa1 100644 --- a/core/src/backends/github/implementation.tsx +++ b/core/src/backends/github/implementation.tsx @@ -16,7 +16,7 @@ import { getMediaDisplayURL, runWithLock, unsentRequest, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; import API, { API_NAME } from './API'; import AuthenticationPage from './AuthenticationPage'; @@ -31,9 +31,9 @@ import type { ImplementationFile, PersistOptions, User, -} from '../../interface'; -import type { AsyncLock } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +} from '@staticcms/core/interface'; +import type { AsyncLock } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; type GitHubUser = Octokit.UsersGetAuthenticatedResponse; diff --git a/core/src/backends/github/mutations.ts b/core/src/backends/github/mutations.ts index 7c869ad5..79cc7638 100644 --- a/core/src/backends/github/mutations.ts +++ b/core/src/backends/github/mutations.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/prefer-default-export */ import { gql } from 'graphql-tag'; import * as fragments from './fragments'; diff --git a/core/src/backends/gitlab/API.ts b/core/src/backends/gitlab/API.ts index 1e2b718c..c8c2983e 100644 --- a/core/src/backends/gitlab/API.ts +++ b/core/src/backends/gitlab/API.ts @@ -15,11 +15,11 @@ import { responseParser, throwOnConflictingBranches, unsentRequest, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; -import type { DataFile, PersistOptions } from '../../interface'; -import type { ApiRequest, FetchError } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +import type { DataFile, PersistOptions } from '@staticcms/core/interface'; +import type { ApiRequest, FetchError } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; export const API_NAME = 'GitLab'; diff --git a/core/src/backends/gitlab/AuthenticationPage.tsx b/core/src/backends/gitlab/AuthenticationPage.tsx index e0d16e2d..f808ffe6 100644 --- a/core/src/backends/gitlab/AuthenticationPage.tsx +++ b/core/src/backends/gitlab/AuthenticationPage.tsx @@ -1,17 +1,17 @@ import { styled } from '@mui/material/styles'; import React, { useCallback, useMemo, useState } from 'react'; -import AuthenticationPage from '../../components/UI/AuthenticationPage'; -import Icon from '../../components/UI/Icon'; -import { NetlifyAuthenticator, PkceAuthenticator } from '../../lib/auth'; -import { isNotEmpty } from '../../lib/util/string.util'; +import AuthenticationPage from '@staticcms/core/components/UI/AuthenticationPage'; +import Icon from '@staticcms/core/components/UI/Icon'; +import { NetlifyAuthenticator, PkceAuthenticator } from '@staticcms/core/lib/auth'; +import { isNotEmpty } from '@staticcms/core/lib/util/string.util'; import type { MouseEvent } from 'react'; import type { AuthenticationPageProps, AuthenticatorConfig, TranslatedProps, -} from '../../interface'; +} from '@staticcms/core/interface'; const LoginButtonIcon = styled(Icon)` margin-right: 18px; diff --git a/core/src/backends/gitlab/implementation.ts b/core/src/backends/gitlab/implementation.ts index 8668541b..0927b5e3 100644 --- a/core/src/backends/gitlab/implementation.ts +++ b/core/src/backends/gitlab/implementation.ts @@ -17,12 +17,12 @@ import { getMediaDisplayURL, localForage, runWithLock, -} from '../../lib/util'; +} from '@staticcms/core/lib/util'; import API, { API_NAME } from './API'; import AuthenticationPage from './AuthenticationPage'; import type { Semaphore } from 'semaphore'; -import type { AsyncLock, Cursor } from '../../lib/util'; +import type { AsyncLock, Cursor } from '@staticcms/core/lib/util'; import type { Config, Credentials, @@ -32,8 +32,8 @@ import type { ImplementationFile, PersistOptions, User, -} from '../../interface'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +} from '@staticcms/core/interface'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; const MAX_CONCURRENT_DOWNLOADS = 10; diff --git a/core/src/backends/proxy/AuthenticationPage.tsx b/core/src/backends/proxy/AuthenticationPage.tsx index 28fc02da..5aeeef0c 100644 --- a/core/src/backends/proxy/AuthenticationPage.tsx +++ b/core/src/backends/proxy/AuthenticationPage.tsx @@ -2,11 +2,11 @@ import Button from '@mui/material/Button'; import { styled } from '@mui/material/styles'; import React, { useCallback } from 'react'; -import GoBackButton from '../../components/UI/GoBackButton'; -import Icon from '../../components/UI/Icon'; +import GoBackButton from '@staticcms/core/components/UI/GoBackButton'; +import Icon from '@staticcms/core/components/UI/Icon'; import type { MouseEvent } from 'react'; -import type { AuthenticationPageProps, TranslatedProps } from '../../interface'; +import type { AuthenticationPageProps, TranslatedProps } from '@staticcms/core/interface'; const StyledAuthenticationPage = styled('section')` display: flex; diff --git a/core/src/backends/proxy/implementation.ts b/core/src/backends/proxy/implementation.ts index 6d7b0b54..b7410b3a 100644 --- a/core/src/backends/proxy/implementation.ts +++ b/core/src/backends/proxy/implementation.ts @@ -1,4 +1,4 @@ -import { APIError, basename, blobToFileObj, unsentRequest } from '../../lib/util'; +import { APIError, basename, blobToFileObj, unsentRequest } from '@staticcms/core/lib/util'; import AuthenticationPage from './AuthenticationPage'; import type { @@ -10,9 +10,9 @@ import type { ImplementationFile, PersistOptions, User, -} from '../../interface'; -import type { Cursor } from '../../lib/util'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +} from '@staticcms/core/interface'; +import type { Cursor } from '@staticcms/core/lib/util'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; async function serializeAsset(assetProxy: AssetProxy) { const base64content = await assetProxy.toBase64!(); diff --git a/core/src/backends/test/AuthenticationPage.tsx b/core/src/backends/test/AuthenticationPage.tsx index 9141e307..f1fd7a97 100644 --- a/core/src/backends/test/AuthenticationPage.tsx +++ b/core/src/backends/test/AuthenticationPage.tsx @@ -2,11 +2,11 @@ import Button from '@mui/material/Button'; import { styled } from '@mui/material/styles'; import React, { useCallback, useEffect } from 'react'; -import GoBackButton from '../../components/UI/GoBackButton'; -import Icon from '../../components/UI/Icon'; +import GoBackButton from '@staticcms/core/components/UI/GoBackButton'; +import Icon from '@staticcms/core/components/UI/Icon'; import type { MouseEvent } from 'react'; -import type { AuthenticationPageProps, TranslatedProps } from '../../interface'; +import type { AuthenticationPageProps, TranslatedProps } from '@staticcms/core/interface'; const StyledAuthenticationPage = styled('section')` display: flex; diff --git a/core/src/backends/test/implementation.ts b/core/src/backends/test/implementation.ts index 2ec094e8..4c82a918 100644 --- a/core/src/backends/test/implementation.ts +++ b/core/src/backends/test/implementation.ts @@ -5,7 +5,7 @@ import unset from 'lodash/unset'; import { extname } from 'path'; import uuid from 'uuid/v4'; -import { basename, Cursor, CURSOR_COMPATIBILITY_SYMBOL } from '../../lib/util'; +import { basename, Cursor, CURSOR_COMPATIBILITY_SYMBOL } from '@staticcms/core/lib/util'; import AuthenticationPage from './AuthenticationPage'; import type { @@ -16,8 +16,8 @@ import type { ImplementationEntry, ImplementationFile, User, -} from '../../interface'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +} from '@staticcms/core/interface'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; type RepoFile = { path: string; content: string | AssetProxy }; type RepoTree = { [key: string]: RepoFile | RepoTree }; diff --git a/core/src/bootstrap.tsx b/core/src/bootstrap.tsx index d368c721..0d1194c0 100644 --- a/core/src/bootstrap.tsx +++ b/core/src/bootstrap.tsx @@ -12,7 +12,7 @@ import { loadConfig } from './actions/config'; import App from './components/App/App'; import './components/EditorWidgets'; import { ErrorBoundary } from './components/UI'; -import { addExtensions } from './extensions'; +import addExtensions from './extensions'; import { getPhrases } from './lib/phrases'; import './mediaLibrary'; import { selectLocale } from './reducers/config'; diff --git a/core/src/components/App/App.tsx b/core/src/components/App/App.tsx index 4185f707..0987b982 100644 --- a/core/src/components/App/App.tsx +++ b/core/src/components/App/App.tsx @@ -1,18 +1,18 @@ import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; import Fab from '@mui/material/Fab'; import { styled } from '@mui/material/styles'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import { translate } from 'react-polyglot'; import { connect } from 'react-redux'; import { Navigate, Route, Routes, useLocation, useParams } from 'react-router-dom'; import { ScrollSync } from 'react-scroll-sync'; import TopBarProgress from 'react-topbar-progress-indicator'; -import { loginUser as loginUserAction } from '../../actions/auth'; -import { discardDraft as discardDraftAction } from '../../actions/entries'; -import { currentBackend } from '../../backend'; -import { colors, GlobalStyles } from '../../components/UI/styles'; -import { history } from '../../routing/history'; +import { loginUser as loginUserAction } from '@staticcms/core/actions/auth'; +import { discardDraft as discardDraftAction } from '@staticcms/core/actions/entries'; +import { currentBackend } from '@staticcms/core/backend'; +import { colors, GlobalStyles } from '@staticcms/core/components/UI/styles'; +import { history } from '@staticcms/core/routing/history'; import CollectionRoute from '../Collection/CollectionRoute'; import EditorRoute from '../Editor/EditorRoute'; import MediaLibrary from '../MediaLibrary/MediaLibrary'; @@ -24,10 +24,10 @@ import Loader from '../UI/Loader'; import ScrollTop from '../UI/ScrollTop'; import NotFoundPage from './NotFoundPage'; +import type { Collections, Credentials, TranslatedProps } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; import type { ComponentType } from 'react'; import type { ConnectedProps } from 'react-redux'; -import type { Collections, Credentials, TranslatedProps } from '../../interface'; -import type { RootState } from '../../store'; TopBarProgress.config({ barColors: { @@ -162,7 +162,7 @@ const App = ({ const defaultPath = useMemo(() => getDefaultPath(collections), [collections]); const { pathname } = useLocation(); - React.useEffect(() => { + useEffect(() => { if (!/\/collections\/[a-zA-Z0-9_-]+\/entries\/[a-zA-Z0-9_-]+/g.test(pathname)) { discardDraft(); } diff --git a/core/src/components/App/Header.tsx b/core/src/components/App/Header.tsx index 42c48345..8b23c476 100644 --- a/core/src/components/App/Header.tsx +++ b/core/src/components/App/Header.tsx @@ -1,4 +1,3 @@ -import { styled } from '@mui/material/styles'; import DescriptionIcon from '@mui/icons-material/Description'; import ImageIcon from '@mui/icons-material/Image'; import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; @@ -8,24 +7,25 @@ import Button from '@mui/material/Button'; import Link from '@mui/material/Link'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; +import { styled } from '@mui/material/styles'; import Toolbar from '@mui/material/Toolbar'; -import React, { useCallback, useEffect, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; import { connect } from 'react-redux'; -import { logoutUser as logoutUserAction } from '../../actions/auth'; -import { createNewEntry } from '../../actions/collections'; -import { openMediaLibrary as openMediaLibraryAction } from '../../actions/mediaLibrary'; -import { checkBackendStatus as checkBackendStatusAction } from '../../actions/status'; -import { buttons, colors } from '../../components/UI/styles'; -import { stripProtocol } from '../../lib/urlHelper'; +import { logoutUser as logoutUserAction } from '@staticcms/core/actions/auth'; +import { createNewEntry } from '@staticcms/core/actions/collections'; +import { openMediaLibrary as openMediaLibraryAction } from '@staticcms/core/actions/mediaLibrary'; +import { checkBackendStatus as checkBackendStatusAction } from '@staticcms/core/actions/status'; +import { buttons, colors } from '@staticcms/core/components/UI/styles'; +import { stripProtocol } from '@staticcms/core/lib/urlHelper'; import NavLink from '../UI/NavLink'; import SettingsDropdown from '../UI/SettingsDropdown'; -import type { ComponentType } from 'react'; +import type { TranslatedProps } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; +import type { ComponentType, MouseEvent } from 'react'; import type { ConnectedProps } from 'react-redux'; -import type { TranslatedProps } from '../../interface'; -import type { RootState } from '../../store'; const StyledAppBar = styled(AppBar)` background-color: ${colors.foreground}; @@ -73,9 +73,9 @@ const Header = ({ showMediaButton, checkBackendStatus, }: TranslatedProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { diff --git a/core/src/components/App/MainView.tsx b/core/src/components/App/MainView.tsx index e6e59b75..4db89b5f 100644 --- a/core/src/components/App/MainView.tsx +++ b/core/src/components/App/MainView.tsx @@ -2,7 +2,7 @@ import { styled } from '@mui/material/styles'; import React from 'react'; import TopBarProgress from 'react-topbar-progress-indicator'; -import { colors } from '../../components/UI/styles'; +import { colors } from '@staticcms/core/components/UI/styles'; import Header from './Header'; import type { ReactNode } from 'react'; diff --git a/core/src/components/App/NotFoundPage.tsx b/core/src/components/App/NotFoundPage.tsx index 5ac7afb8..1a2e7cab 100644 --- a/core/src/components/App/NotFoundPage.tsx +++ b/core/src/components/App/NotFoundPage.tsx @@ -2,7 +2,7 @@ import { styled } from '@mui/material/styles'; import React from 'react'; import { translate } from 'react-polyglot'; -import { lengths } from '../../components/UI/styles'; +import { lengths } from '@staticcms/core/components/UI/styles'; import type { ComponentType } from 'react'; import type { TranslateProps } from 'react-polyglot'; diff --git a/core/src/components/Collection/Collection.tsx b/core/src/components/Collection/Collection.tsx index bfeba861..5588a51d 100644 --- a/core/src/components/Collection/Collection.tsx +++ b/core/src/components/Collection/Collection.tsx @@ -8,21 +8,21 @@ import { filterByField as filterByFieldAction, groupByField as groupByFieldAction, sortByField as sortByFieldAction, -} from '../../actions/entries'; -import { components } from '../../components/UI/styles'; -import { SORT_DIRECTION_ASCENDING } from '../../constants'; -import { getNewEntryUrl } from '../../lib/urlHelper'; +} from '@staticcms/core/actions/entries'; +import { components } from '@staticcms/core/components/UI/styles'; +import { SORT_DIRECTION_ASCENDING } from '@staticcms/core/constants'; +import { getNewEntryUrl } from '@staticcms/core/lib/urlHelper'; import { selectSortableFields, selectViewFilters, selectViewGroups, -} from '../../lib/util/collection.util'; +} from '@staticcms/core/lib/util/collection.util'; import { selectEntriesFilter, selectEntriesGroup, selectEntriesSort, selectViewStyle, -} from '../../reducers/entries'; +} from '@staticcms/core/reducers/entries'; import CollectionControls from './CollectionControls'; import CollectionTop from './CollectionTop'; import EntriesCollection from './Entries/EntriesCollection'; @@ -37,8 +37,8 @@ import type { TranslatedProps, ViewFilter, ViewGroup, -} from '../../interface'; -import type { RootState } from '../../store'; +} from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; const CollectionMain = styled('main')` width: 100%; diff --git a/core/src/components/Collection/CollectionControls.tsx b/core/src/components/Collection/CollectionControls.tsx index b743bf4b..3f35503c 100644 --- a/core/src/components/Collection/CollectionControls.tsx +++ b/core/src/components/Collection/CollectionControls.tsx @@ -6,7 +6,7 @@ import GroupControl from './GroupControl'; import SortControl from './SortControl'; import ViewStyleControl from './ViewStyleControl'; -import type { CollectionViewStyle } from '../../constants/collectionViews'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; import type { FilterMap, GroupMap, @@ -16,7 +16,7 @@ import type { TranslatedProps, ViewFilter, ViewGroup, -} from '../../interface'; +} from '@staticcms/core/interface'; const CollectionControlsContainer = styled('div')` display: flex; diff --git a/core/src/components/Collection/CollectionRoute.tsx b/core/src/components/Collection/CollectionRoute.tsx index 5fb29930..5a214a72 100644 --- a/core/src/components/Collection/CollectionRoute.tsx +++ b/core/src/components/Collection/CollectionRoute.tsx @@ -4,7 +4,7 @@ import { Navigate, useParams } from 'react-router-dom'; import MainView from '../App/MainView'; import Collection from './Collection'; -import type { Collections } from '../../interface'; +import type { Collections } from '@staticcms/core/interface'; function getDefaultPath(collections: Collections) { const first = Object.values(collections).filter(collection => collection.hide !== true)[0]; diff --git a/core/src/components/Collection/CollectionSearch.tsx b/core/src/components/Collection/CollectionSearch.tsx index f3baf6a7..dc94af8a 100644 --- a/core/src/components/Collection/CollectionSearch.tsx +++ b/core/src/components/Collection/CollectionSearch.tsx @@ -6,11 +6,11 @@ import TextField from '@mui/material/TextField'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { translate } from 'react-polyglot'; -import { colors, colorsRaw, lengths } from '../../components/UI/styles'; -import { transientOptions } from '../../lib'; +import { colors, colorsRaw, lengths } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; import type { ChangeEvent, FocusEvent, KeyboardEvent, MouseEvent } from 'react'; -import type { Collection, Collections, TranslatedProps } from '../../interface'; +import type { Collection, Collections, TranslatedProps } from '@staticcms/core/interface'; const SearchContainer = styled('div')` position: relative; diff --git a/core/src/components/Collection/CollectionTop.tsx b/core/src/components/Collection/CollectionTop.tsx index 3cbd1953..9db20b6f 100644 --- a/core/src/components/Collection/CollectionTop.tsx +++ b/core/src/components/Collection/CollectionTop.tsx @@ -6,9 +6,9 @@ import React, { useCallback } from 'react'; import { translate } from 'react-polyglot'; import { useNavigate } from 'react-router-dom'; -import { components } from '../../components/UI/styles'; +import { components } from '@staticcms/core/components/UI/styles'; -import type { Collection, TranslatedProps } from '../../interface'; +import type { Collection, TranslatedProps } from '@staticcms/core/interface'; const CollectionTopRow = styled('div')` display: flex; diff --git a/core/src/components/Collection/Entries/Entries.tsx b/core/src/components/Collection/Entries/Entries.tsx index 08be5d70..f23d1b3b 100644 --- a/core/src/components/Collection/Entries/Entries.tsx +++ b/core/src/components/Collection/Entries/Entries.tsx @@ -2,12 +2,12 @@ import { styled } from '@mui/material/styles'; import React from 'react'; import { translate } from 'react-polyglot'; -import Loader from '../../UI/Loader'; +import Loader from '@staticcms/core/components/UI/Loader'; import EntryListing from './EntryListing'; -import type { CollectionViewStyle } from '../../../constants/collectionViews'; -import type { Collection, Collections, Entry, TranslatedProps } from '../../../interface'; -import type Cursor from '../../../lib/util/Cursor'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; +import type { Collection, Collections, Entry, TranslatedProps } from '@staticcms/core/interface'; +import type Cursor from '@staticcms/core/lib/util/Cursor'; const PaginationMessage = styled('div')` padding: 16px; diff --git a/core/src/components/Collection/Entries/EntriesCollection.tsx b/core/src/components/Collection/Entries/EntriesCollection.tsx index 21a8149d..8ea4e651 100644 --- a/core/src/components/Collection/Entries/EntriesCollection.tsx +++ b/core/src/components/Collection/Entries/EntriesCollection.tsx @@ -6,24 +6,24 @@ import { connect } from 'react-redux'; import { loadEntries as loadEntriesAction, traverseCollectionCursor as traverseCollectionCursorAction, -} from '../../../actions/entries'; -import { colors } from '../../../components/UI/styles'; -import { Cursor } from '../../../lib/util'; -import { selectCollectionEntriesCursor } from '../../../reducers/cursors'; +} from '@staticcms/core/actions/entries'; +import { colors } from '@staticcms/core/components/UI/styles'; +import { Cursor } from '@staticcms/core/lib/util'; +import { selectCollectionEntriesCursor } from '@staticcms/core/reducers/cursors'; import { selectEntries, selectEntriesLoaded, selectGroups, selectIsFetching, -} from '../../../reducers/entries'; +} from '@staticcms/core/reducers/entries'; import Entries from './Entries'; import type { ComponentType } from 'react'; import type { t } from 'react-polyglot'; import type { ConnectedProps } from 'react-redux'; -import type { CollectionViewStyle } from '../../../constants/collectionViews'; -import type { Collection, Entry, GroupOfEntries, TranslatedProps } from '../../../interface'; -import type { RootState } from '../../../store'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; +import type { Collection, Entry, GroupOfEntries, TranslatedProps } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; const GroupHeading = styled('h2')` font-size: 23px; diff --git a/core/src/components/Collection/Entries/EntriesSearch.tsx b/core/src/components/Collection/Entries/EntriesSearch.tsx index 92d2b2ed..33a3192e 100644 --- a/core/src/components/Collection/Entries/EntriesSearch.tsx +++ b/core/src/components/Collection/Entries/EntriesSearch.tsx @@ -5,15 +5,15 @@ import { connect } from 'react-redux'; import { clearSearch as clearSearchAction, searchEntries as searchEntriesAction, -} from '../../../actions/search'; -import { Cursor } from '../../../lib/util'; -import { selectSearchedEntries } from '../../../reducers'; +} from '@staticcms/core/actions/search'; +import { Cursor } from '@staticcms/core/lib/util'; +import { selectSearchedEntries } from '@staticcms/core/reducers'; import Entries from './Entries'; import type { ConnectedProps } from 'react-redux'; -import type { CollectionViewStyle } from '../../../constants/collectionViews'; -import type { Collections } from '../../../interface'; -import type { RootState } from '../../../store'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; +import type { Collections } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; const EntriesSearch = ({ collections, diff --git a/core/src/components/Collection/Entries/EntryCard.tsx b/core/src/components/Collection/Entries/EntryCard.tsx index feae6bbe..0b63b961 100644 --- a/core/src/components/Collection/Entries/EntryCard.tsx +++ b/core/src/components/Collection/Entries/EntryCard.tsx @@ -7,15 +7,15 @@ import React, { useEffect, useMemo, useState } from 'react'; import { connect } from 'react-redux'; import { Link } from 'react-router-dom'; -import { getAsset as getAssetAction } from '../../../actions/media'; -import { VIEW_STYLE_GRID, VIEW_STYLE_LIST } from '../../../constants/collectionViews'; -import { selectEntryCollectionTitle } from '../../../lib/util/collection.util'; -import { selectIsLoadingAsset } from '../../../reducers/medias'; +import { getAsset as getAssetAction } from '@staticcms/core/actions/media'; +import { VIEW_STYLE_GRID, VIEW_STYLE_LIST } from '@staticcms/core/constants/collectionViews'; +import { selectEntryCollectionTitle } from '@staticcms/core/lib/util/collection.util'; +import { selectIsLoadingAsset } from '@staticcms/core/reducers/medias'; import type { ConnectedProps } from 'react-redux'; -import type { CollectionViewStyle } from '../../../constants/collectionViews'; -import type { Field, Collection, Entry } from '../../../interface'; -import type { RootState } from '../../../store'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; +import type { Field, Collection, Entry } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; const EntryCard = ({ collection, diff --git a/core/src/components/Collection/Entries/EntryListing.tsx b/core/src/components/Collection/Entries/EntryListing.tsx index 72e4990b..0d85e4d0 100644 --- a/core/src/components/Collection/Entries/EntryListing.tsx +++ b/core/src/components/Collection/Entries/EntryListing.tsx @@ -2,14 +2,14 @@ import { styled } from '@mui/material/styles'; import React, { useCallback, useMemo } from 'react'; import { Waypoint } from 'react-waypoint'; -import { VIEW_STYLE_LIST } from '../../../constants/collectionViews'; -import { transientOptions } from '../../../lib'; -import { selectFields, selectInferedField } from '../../../lib/util/collection.util'; +import { VIEW_STYLE_LIST } from '@staticcms/core/constants/collectionViews'; +import { transientOptions } from '@staticcms/core/lib'; +import { selectFields, selectInferedField } from '@staticcms/core/lib/util/collection.util'; import EntryCard from './EntryCard'; -import type { CollectionViewStyle } from '../../../constants/collectionViews'; -import type { Field, Collection, Collections, Entry } from '../../../interface'; -import type Cursor from '../../../lib/util/Cursor'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; +import type { Field, Collection, Collections, Entry } from '@staticcms/core/interface'; +import type Cursor from '@staticcms/core/lib/util/Cursor'; interface CardsGridProps { $layout: CollectionViewStyle; diff --git a/core/src/components/Collection/FilterControl.tsx b/core/src/components/Collection/FilterControl.tsx index da973c87..820a690b 100644 --- a/core/src/components/Collection/FilterControl.tsx +++ b/core/src/components/Collection/FilterControl.tsx @@ -5,10 +5,11 @@ import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; -import type { FilterMap, TranslatedProps, ViewFilter } from '../../interface'; +import type { FilterMap, TranslatedProps, ViewFilter } from '@staticcms/core/interface'; +import type { MouseEvent } from 'react'; interface FilterControlProps { filter: Record; @@ -22,9 +23,9 @@ const FilterControl = ({ onFilterClick, filter, }: TranslatedProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { diff --git a/core/src/components/Collection/GroupControl.tsx b/core/src/components/Collection/GroupControl.tsx index 928e70fe..3070f801 100644 --- a/core/src/components/Collection/GroupControl.tsx +++ b/core/src/components/Collection/GroupControl.tsx @@ -1,14 +1,15 @@ +import CheckIcon from '@mui/icons-material/Check'; import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; -import Button from '@mui/material/Button/Button'; +import Button from '@mui/material/Button'; import ListItemText from '@mui/material/ListItemText'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; -import React, { useCallback, useMemo } from 'react'; -import { translate } from 'react-polyglot'; -import CheckIcon from '@mui/icons-material/Check'; import { styled } from '@mui/material/styles'; +import React, { useCallback, useMemo, useState } from 'react'; +import { translate } from 'react-polyglot'; -import type { GroupMap, TranslatedProps, ViewGroup } from '../../interface'; +import type { GroupMap, TranslatedProps, ViewGroup } from '@staticcms/core/interface'; +import type { MouseEvent } from 'react'; const StyledMenuIconWrapper = styled('div')` width: 32px; @@ -30,9 +31,9 @@ const GroupControl = ({ t, onGroupClick, }: TranslatedProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { diff --git a/core/src/components/Collection/NestedCollection.tsx b/core/src/components/Collection/NestedCollection.tsx index 76c627a1..8f9b3eba 100644 --- a/core/src/components/Collection/NestedCollection.tsx +++ b/core/src/components/Collection/NestedCollection.tsx @@ -1,20 +1,20 @@ -import { styled } from '@mui/material/styles'; import ArticleIcon from '@mui/icons-material/Article'; +import { styled } from '@mui/material/styles'; import sortBy from 'lodash/sortBy'; import { dirname, sep } from 'path'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { Fragment, useCallback, useEffect, useState } from 'react'; import { connect } from 'react-redux'; import { NavLink } from 'react-router-dom'; -import { colors, components } from '../../components/UI/styles'; -import { transientOptions } from '../../lib'; -import { selectEntryCollectionTitle } from '../../lib/util/collection.util'; -import { stringTemplate } from '../../lib/widgets'; -import { selectEntries } from '../../reducers/entries'; +import { colors, components } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; +import { selectEntryCollectionTitle } from '@staticcms/core/lib/util/collection.util'; +import { stringTemplate } from '@staticcms/core/lib/widgets'; +import { selectEntries } from '@staticcms/core/reducers/entries'; +import type { Collection, Entry } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; import type { ConnectedProps } from 'react-redux'; -import type { Collection, Entry } from '../../interface'; -import type { RootState } from '../../store'; const { addFileTemplateFields } = stringTemplate; @@ -124,7 +124,7 @@ const TreeNode = ({ collection, treeData, depth = 0, onToggle }: TreeNodeProps) const hasChildren = depth === 0 || node.children.some(c => c.children.some(c => c.isDir)); return ( - + )} - + ); })} diff --git a/core/src/components/Collection/Sidebar.tsx b/core/src/components/Collection/Sidebar.tsx index 97189e0a..999f370a 100644 --- a/core/src/components/Collection/Sidebar.tsx +++ b/core/src/components/Collection/Sidebar.tsx @@ -11,15 +11,15 @@ import Typography from '@mui/material/Typography'; import React, { useMemo } from 'react'; import { translate } from 'react-polyglot'; -import { searchCollections } from '../../actions/collections'; -import { colors } from '../../components/UI/styles'; -import { getAdditionalLinks, getIcon } from '../../lib/registry'; +import { searchCollections } from '@staticcms/core/actions/collections'; +import { colors } from '@staticcms/core/components/UI/styles'; +import { getAdditionalLinks, getIcon } from '@staticcms/core/lib/registry'; import NavLink from '../UI/NavLink'; import CollectionSearch from './CollectionSearch'; import NestedCollection from './NestedCollection'; import type { ReactNode } from 'react'; -import type { Collection, Collections, TranslatedProps } from '../../interface'; +import type { Collection, Collections, TranslatedProps } from '@staticcms/core/interface'; const StyledSidebar = styled('div')` position: sticky; diff --git a/core/src/components/Collection/SortControl.tsx b/core/src/components/Collection/SortControl.tsx index 19a1875a..9c99f77e 100644 --- a/core/src/components/Collection/SortControl.tsx +++ b/core/src/components/Collection/SortControl.tsx @@ -1,20 +1,26 @@ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; -import { styled } from '@mui/material'; import Button from '@mui/material/Button'; import ListItemText from '@mui/material/ListItemText'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; -import React, { useCallback, useMemo } from 'react'; +import { styled } from '@mui/material/styles'; +import React, { useCallback, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; import { SORT_DIRECTION_ASCENDING, SORT_DIRECTION_DESCENDING, SORT_DIRECTION_NONE, -} from '../../constants'; +} from '@staticcms/core/constants'; -import type { SortableField, SortDirection, SortMap, TranslatedProps } from '../../interface'; +import type { + SortableField, + SortDirection, + SortMap, + TranslatedProps, +} from '@staticcms/core/interface'; +import type { MouseEvent } from 'react'; const StyledMenuIconWrapper = styled('div')` width: 32px; @@ -42,9 +48,9 @@ interface SortControlProps { } const SortControl = ({ t, fields, onSortClick, sort }: TranslatedProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { diff --git a/core/src/components/Collection/ViewStyleControl.tsx b/core/src/components/Collection/ViewStyleControl.tsx index 5bb8693b..41969f98 100644 --- a/core/src/components/Collection/ViewStyleControl.tsx +++ b/core/src/components/Collection/ViewStyleControl.tsx @@ -4,9 +4,9 @@ import ReorderSharpIcon from '@mui/icons-material/ReorderSharp'; import IconButton from '@mui/material/IconButton'; import React from 'react'; -import { VIEW_STYLE_GRID, VIEW_STYLE_LIST } from '../../constants/collectionViews'; +import { VIEW_STYLE_GRID, VIEW_STYLE_LIST } from '@staticcms/core/constants/collectionViews'; -import type { CollectionViewStyle } from '../../constants/collectionViews'; +import type { CollectionViewStyle } from '@staticcms/core/constants/collectionViews'; const ViewControlsSection = styled('div')` margin-left: 24px; diff --git a/core/src/components/Editor/Editor.tsx b/core/src/components/Editor/Editor.tsx index d184f690..5ea18527 100644 --- a/core/src/components/Editor/Editor.tsx +++ b/core/src/components/Editor/Editor.tsx @@ -3,7 +3,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; import { connect } from 'react-redux'; -import { logoutUser as logoutUserAction } from '../../actions/auth'; +import { logoutUser as logoutUserAction } from '@staticcms/core/actions/auth'; import { changeDraftFieldValidation as changeDraftFieldValidationAction, createDraftDuplicateFromEntry as createDraftDuplicateFromEntryAction, @@ -18,15 +18,15 @@ import { persistEntry as persistEntryAction, persistLocalBackup as persistLocalBackupAction, retrieveLocalBackup as retrieveLocalBackupAction, -} from '../../actions/entries'; +} from '@staticcms/core/actions/entries'; import { loadScroll as loadScrollAction, toggleScroll as toggleScrollAction, -} from '../../actions/scroll'; -import { selectFields } from '../../lib/util/collection.util'; -import { useWindowEvent } from '../../lib/util/window.util'; -import { selectEntry } from '../../reducers'; -import { history, navigateToCollection, navigateToNewEntry } from '../../routing/history'; +} from '@staticcms/core/actions/scroll'; +import { selectFields } from '@staticcms/core/lib/util/collection.util'; +import { useWindowEvent } from '@staticcms/core/lib/util/window.util'; +import { selectEntry } from '@staticcms/core/reducers'; +import { history, navigateToCollection, navigateToNewEntry } from '@staticcms/core/routing/history'; import confirm from '../UI/Confirm'; import Loader from '../UI/Loader'; import EditorInterface from './EditorInterface'; @@ -34,8 +34,13 @@ import EditorInterface from './EditorInterface'; import type { TransitionPromptHook } from 'history'; import type { ComponentType } from 'react'; import type { ConnectedProps } from 'react-redux'; -import type { Collection, EditorPersistOptions, Entry, TranslatedProps } from '../../interface'; -import type { RootState } from '../../store'; +import type { + Collection, + EditorPersistOptions, + Entry, + TranslatedProps, +} from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; const Editor = ({ entry, diff --git a/core/src/components/Editor/EditorControlPane/EditorControl.tsx b/core/src/components/Editor/EditorControlPane/EditorControl.tsx index 60b1a8de..549cf3c9 100644 --- a/core/src/components/Editor/EditorControlPane/EditorControl.tsx +++ b/core/src/components/Editor/EditorControlPane/EditorControl.tsx @@ -1,30 +1,30 @@ import { styled } from '@mui/material/styles'; +import { isEqual } from 'lodash'; import isEmpty from 'lodash/isEmpty'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { createElement, useCallback, useEffect, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; import { connect } from 'react-redux'; import { changeDraftField as changeDraftFieldAction, changeDraftFieldValidation as changeDraftFieldValidationAction, -} from '../../../actions/entries'; -import { getAsset as getAssetAction } from '../../../actions/media'; +} from '@staticcms/core/actions/entries'; +import { getAsset as getAssetAction } from '@staticcms/core/actions/media'; import { clearMediaControl as clearMediaControlAction, openMediaLibrary as openMediaLibraryAction, removeInsertedMedia as removeInsertedMediaAction, removeMediaControl as removeMediaControlAction, -} from '../../../actions/mediaLibrary'; -import { query as queryAction } from '../../../actions/search'; -import { borders, colors, lengths, transitions } from '../../../components/UI/styles'; -import { transientOptions } from '../../../lib'; -import { resolveWidget } from '../../../lib/registry'; -import { getFieldLabel } from '../../../lib/util/field.util'; -import { validate } from '../../../lib/util/validation.util'; -import { selectIsLoadingAsset } from '../../../reducers/medias'; +} from '@staticcms/core/actions/mediaLibrary'; +import { query as queryAction } from '@staticcms/core/actions/search'; +import { borders, colors, lengths, transitions } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; +import useMemoCompare from '@staticcms/core/lib/hooks/useMemoCompare'; +import { resolveWidget } from '@staticcms/core/lib/registry'; +import { getFieldLabel } from '@staticcms/core/lib/util/field.util'; +import { validate } from '@staticcms/core/lib/util/validation.util'; +import { selectIsLoadingAsset } from '@staticcms/core/reducers/medias'; -import type { ComponentType } from 'react'; -import type { ConnectedProps } from 'react-redux'; import type { Field, FieldsErrors, @@ -34,8 +34,10 @@ import type { UnknownField, ValueOrNestedValue, Widget, -} from '../../../interface'; -import type { RootState } from '../../../store'; +} from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; +import type { ComponentType } from 'react'; +import type { ConnectedProps } from 'react-redux'; /** * This is a necessary bridge as we are still passing classnames to widgets @@ -130,7 +132,6 @@ const ControlHint = styled( ); const EditorControl = ({ - className, clearMediaControl, collection, config: configState, @@ -167,7 +168,8 @@ const EditorControl = ({ ); const [dirty, setDirty] = useState(!isEmpty(value)); - const errors = useMemo(() => fieldsErrors[path] ?? [], [fieldsErrors, path]); + // eslint-disable-next-line react-hooks/exhaustive-deps + const errors = useMemo(() => fieldsErrors[path] ?? [], [fieldsErrors[path]]); const hasErrors = (submitted || dirty) && Boolean(errors.length); const handleGetAsset: GetAssetFunction = useMemo( @@ -189,71 +191,101 @@ const EditorControl = ({ const handleChangeDraftField = useCallback( (value: ValueOrNestedValue) => { setDirty(true); - changeDraftField({ path, field, value, entry, i18n }); + changeDraftField({ path, field, value, i18n }); }, - [changeDraftField, entry, field, i18n, path], + [changeDraftField, field, i18n, path], ); const config = useMemo(() => configState.config, [configState.config]); - if (!collection || !entry || !config) { - return null; - } - return ( - - <> - {React.createElement(widget.control, { - key: `field_${path}`, - collection, - config, - entry, - field: field as UnknownField, - fieldsErrors, - submitted, - getAsset: handleGetAsset, - isDisabled: isDisabled ?? false, - isFieldDuplicate, - isFieldHidden, - label: getFieldLabel(field, t), - locale, - mediaPaths, - onChange: handleChangeDraftField, - clearMediaControl, - openMediaLibrary, - removeInsertedMedia, - removeMediaControl, - path, - query, - t, - value, - forList, - i18n, - hasErrors, - })} - {fieldHint ? ( - - {fieldHint} - - ) : null} - {hasErrors ? ( - - {errors.map(error => { - return ( - error.message && - typeof error.message === 'string' && ( -
  • {error.message}
  • - ) - ); - })} -
    - ) : null} - -
    - ); + const finalValue = useMemoCompare(value, isEqual); + + return useMemo(() => { + if (!collection || !entry || !config) { + return null; + } + + return ( + + <> + {createElement(widget.control, { + key: `field_${path}`, + collection, + config, + entry, + field: field as UnknownField, + fieldsErrors, + submitted, + getAsset: handleGetAsset, + isDisabled: isDisabled ?? false, + isFieldDuplicate, + isFieldHidden, + label: getFieldLabel(field, t), + locale, + mediaPaths, + onChange: handleChangeDraftField, + clearMediaControl, + openMediaLibrary, + removeInsertedMedia, + removeMediaControl, + path, + query, + t, + value: finalValue, + forList, + i18n, + hasErrors, + })} + {fieldHint ? ( + + {fieldHint} + + ) : null} + {hasErrors ? ( + + {errors.map(error => { + return ( + error.message && + typeof error.message === 'string' && ( +
  • {error.message}
  • + ) + ); + })} +
    + ) : null} + +
    + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ + collection, + config, + path, + errors, + isHidden, + widget.control, + field, + submitted, + handleGetAsset, + isDisabled, + t, + locale, + mediaPaths, + handleChangeDraftField, + clearMediaControl, + openMediaLibrary, + removeInsertedMedia, + removeMediaControl, + query, + finalValue, + forList, + i18n, + hasErrors, + fieldHint, + ]); }; interface EditorControlOwnProps { - className?: string; field: Field; fieldsErrors: FieldsErrors; submitted: boolean; diff --git a/core/src/components/Editor/EditorControlPane/EditorControlPane.tsx b/core/src/components/Editor/EditorControlPane/EditorControlPane.tsx index ed4bbfbb..a42cbb7d 100644 --- a/core/src/components/Editor/EditorControlPane/EditorControlPane.tsx +++ b/core/src/components/Editor/EditorControlPane/EditorControlPane.tsx @@ -3,11 +3,11 @@ import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import { styled } from '@mui/material/styles'; import get from 'lodash/get'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { connect } from 'react-redux'; -import { changeDraftField as changeDraftFieldAction } from '../../../actions/entries'; -import confirm from '../../../components/UI/Confirm'; +import { changeDraftField as changeDraftFieldAction } from '@staticcms/core/actions/entries'; +import confirm from '@staticcms/core/components/UI/Confirm'; import { getI18nInfo, getLocaleDataPath, @@ -15,10 +15,9 @@ import { isFieldDuplicate, isFieldHidden, isFieldTranslatable, -} from '../../../lib/i18n'; +} from '@staticcms/core/lib/i18n'; import EditorControl from './EditorControl'; -import type { ConnectedProps } from 'react-redux'; import type { Collection, Entry, @@ -27,8 +26,10 @@ import type { I18nSettings, TranslatedProps, ValueOrNestedValue, -} from '../../../interface'; -import type { RootState } from '../../../store'; +} from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; +import type { MouseEvent } from 'react'; +import type { ConnectedProps } from 'react-redux'; const ControlPaneContainer = styled('div')` max-width: 1000px; @@ -50,9 +51,9 @@ interface LocaleDropdownProps { } const LocaleDropdown = ({ locales, dropdownText, onLocaleChange }: LocaleDropdownProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { @@ -154,7 +155,7 @@ const EditorControlPane = ({ sourceLocale !== i18n?.defaultLocale, sourceLocale, ); - changeDraftField({ path: field.name, field, value: copyValue, entry, i18n }); + changeDraftField({ path: field.name, field, value: copyValue, i18n }); } }); }, diff --git a/core/src/components/Editor/EditorInterface.tsx b/core/src/components/Editor/EditorInterface.tsx index 4911f230..1eecec11 100644 --- a/core/src/components/Editor/EditorInterface.tsx +++ b/core/src/components/Editor/EditorInterface.tsx @@ -6,10 +6,10 @@ import { styled } from '@mui/material/styles'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { ScrollSync, ScrollSyncPane } from 'react-scroll-sync'; -import { colorsRaw, components, zIndex } from '../../components/UI/styles'; -import { transientOptions } from '../../lib'; -import { getI18nInfo, getPreviewEntry, hasI18n } from '../../lib/i18n'; -import { getFileFromSlug } from '../../lib/util/collection.util'; +import { colorsRaw, components, zIndex } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; +import { getI18nInfo, getPreviewEntry, hasI18n } from '@staticcms/core/lib/i18n'; +import { getFileFromSlug } from '@staticcms/core/lib/util/collection.util'; import EditorControlPane from './EditorControlPane/EditorControlPane'; import EditorPreviewPane from './EditorPreviewPane/EditorPreviewPane'; import EditorToolbar from './EditorToolbar'; @@ -22,7 +22,7 @@ import type { FieldsErrors, TranslatedProps, User, -} from '../../interface'; +} from '@staticcms/core/interface'; const PREVIEW_VISIBLE = 'cms.preview-visible'; const I18N_VISIBLE = 'cms.i18n-visible'; diff --git a/core/src/components/Editor/EditorPreviewPane/EditorPreview.tsx b/core/src/components/Editor/EditorPreviewPane/EditorPreview.tsx index 13a08a99..19d712f9 100644 --- a/core/src/components/Editor/EditorPreviewPane/EditorPreview.tsx +++ b/core/src/components/Editor/EditorPreviewPane/EditorPreview.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { styled } from '@mui/material/styles'; -import type { Field, TemplatePreviewProps } from '../../../interface'; +import type { Field, TemplatePreviewProps } from '@staticcms/core/interface'; function isVisible(field: Field) { return field.widget !== 'hidden'; diff --git a/core/src/components/Editor/EditorPreviewPane/EditorPreviewContent.tsx b/core/src/components/Editor/EditorPreviewPane/EditorPreviewContent.tsx index f89142f5..c5b13861 100644 --- a/core/src/components/Editor/EditorPreviewPane/EditorPreviewContent.tsx +++ b/core/src/components/Editor/EditorPreviewPane/EditorPreviewContent.tsx @@ -1,6 +1,6 @@ -import React, { memo } from 'react'; +import { createElement, memo } from 'react'; -import type { TemplatePreviewComponent, TemplatePreviewProps } from '../../../interface'; +import type { TemplatePreviewComponent, TemplatePreviewProps } from '@staticcms/core/interface'; interface EditorPreviewContentProps { previewComponent?: TemplatePreviewComponent; @@ -13,7 +13,7 @@ const EditorPreviewContent = memo( return null; } - return React.createElement(previewComponent, previewProps); + return createElement(previewComponent, previewProps); }, ); diff --git a/core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.tsx b/core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.tsx index 14e6323f..6439c6bc 100644 --- a/core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.tsx +++ b/core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.tsx @@ -1,26 +1,24 @@ import { styled } from '@mui/material/styles'; -import React, { isValidElement, useCallback, useMemo } from 'react'; +import React, { Fragment, isValidElement, useCallback, useMemo } from 'react'; import ReactDOM from 'react-dom'; import Frame, { FrameContextConsumer } from 'react-frame-component'; import { translate } from 'react-polyglot'; import { connect } from 'react-redux'; import { ScrollSyncPane } from 'react-scroll-sync'; -import { getAsset as getAssetAction } from '../../../actions/media'; -import { lengths } from '../../../components/UI/styles'; -import { getPreviewStyles, getPreviewTemplate, resolveWidget } from '../../../lib/registry'; -import { selectTemplateName, useInferedFields } from '../../../lib/util/collection.util'; -import { selectField } from '../../../lib/util/field.util'; -import { selectIsLoadingAsset } from '../../../reducers/medias'; -import { getTypedFieldForValue } from '../../../widgets/list/typedListHelpers'; -import { ErrorBoundary } from '../../UI'; +import { getAsset as getAssetAction } from '@staticcms/core/actions/media'; +import { ErrorBoundary } from '@staticcms/core/components/UI'; +import { lengths } from '@staticcms/core/components/UI/styles'; +import { getPreviewStyles, getPreviewTemplate, resolveWidget } from '@staticcms/core/lib/registry'; +import { selectTemplateName, useInferedFields } from '@staticcms/core/lib/util/collection.util'; +import { selectField } from '@staticcms/core/lib/util/field.util'; +import { selectIsLoadingAsset } from '@staticcms/core/reducers/medias'; +import { getTypedFieldForValue } from '@staticcms/list/typedListHelpers'; import EditorPreview from './EditorPreview'; import EditorPreviewContent from './EditorPreviewContent'; import PreviewHOC from './PreviewHOC'; -import type { ComponentType, ReactFragment, ReactNode } from 'react'; -import type { ConnectedProps } from 'react-redux'; -import type { InferredField } from '../../../constants/fieldInference'; +import type { InferredField } from '@staticcms/core/constants/fieldInference'; import type { Collection, Config, @@ -35,8 +33,10 @@ import type { TranslatedProps, ValueOrNestedValue, WidgetPreviewComponent, -} from '../../../interface'; -import type { RootState } from '../../../store'; +} from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; +import type { ComponentType, ReactFragment, ReactNode } from 'react'; +import type { ConnectedProps } from 'react-redux'; const PreviewPaneFrame = styled(Frame)` width: 100%; @@ -180,10 +180,10 @@ function isJsxElement(value: any): value is JSX.Element { // eslint-disable-next-line @typescript-eslint/no-explicit-any function isReactFragment(value: any): value is ReactFragment { if (value.type) { - return value.type === React.Fragment; + return value.type === Fragment; } - return value === React.Fragment; + return value === Fragment; } function getWidget( @@ -478,7 +478,9 @@ const PreviewPane = (props: TranslatedProps) => { () => ` - + + +
    `, diff --git a/core/src/components/Editor/EditorPreviewPane/PreviewHOC.tsx b/core/src/components/Editor/EditorPreviewPane/PreviewHOC.tsx index 6a09eb18..78b2d4b1 100644 --- a/core/src/components/Editor/EditorPreviewPane/PreviewHOC.tsx +++ b/core/src/components/Editor/EditorPreviewPane/PreviewHOC.tsx @@ -1,6 +1,6 @@ -import React from 'react'; +import { cloneElement, createElement, isValidElement } from 'react'; -import type { WidgetPreviewComponent, WidgetPreviewProps } from '../../../interface'; +import type { WidgetPreviewComponent, WidgetPreviewProps } from '@staticcms/core/interface'; // eslint-disable-next-line @typescript-eslint/no-explicit-any interface PreviewHOCProps extends Omit { @@ -11,10 +11,10 @@ interface PreviewHOCProps extends Omit { const PreviewHOC = ({ previewComponent, ...props }: PreviewHOCProps) => { if (!previewComponent) { return null; - } else if (React.isValidElement(previewComponent)) { - return React.cloneElement(previewComponent, props); + } else if (isValidElement(previewComponent)) { + return cloneElement(previewComponent, props); } else { - return React.createElement(previewComponent, props); + return createElement(previewComponent, props); } }; diff --git a/core/src/components/Editor/EditorRoute.tsx b/core/src/components/Editor/EditorRoute.tsx index 407c4d0a..417aee91 100644 --- a/core/src/components/Editor/EditorRoute.tsx +++ b/core/src/components/Editor/EditorRoute.tsx @@ -3,7 +3,7 @@ import { Navigate, useParams } from 'react-router-dom'; import Editor from './Editor'; -import type { Collections } from '../../interface'; +import type { Collections } from '@staticcms/core/interface'; function getDefaultPath(collections: Collections) { const first = Object.values(collections).filter(collection => collection.hide !== true)[0]; diff --git a/core/src/components/Editor/EditorToolbar.tsx b/core/src/components/Editor/EditorToolbar.tsx index e53f1e26..d4a3d8d0 100644 --- a/core/src/components/Editor/EditorToolbar.tsx +++ b/core/src/components/Editor/EditorToolbar.tsx @@ -3,7 +3,7 @@ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import AppBar from '@mui/material/AppBar'; import Button from '@mui/material/Button'; import CircularProgress from '@mui/material/CircularProgress'; -import green from '@mui/material/colors/green'; +import { green } from '@mui/material/colors'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import { styled } from '@mui/material/styles'; @@ -11,13 +11,18 @@ import Toolbar from '@mui/material/Toolbar'; import React, { useCallback, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; -import { colors, components, zIndex } from '../../components/UI/styles'; -import { selectAllowDeletion } from '../../lib/util/collection.util'; +import { colors, components, zIndex } from '@staticcms/core/components/UI/styles'; +import { selectAllowDeletion } from '@staticcms/core/lib/util/collection.util'; import { SettingsDropdown } from '../UI'; import NavLink from '../UI/NavLink'; import type { MouseEvent } from 'react'; -import type { Collection, EditorPersistOptions, TranslatedProps, User } from '../../interface'; +import type { + Collection, + EditorPersistOptions, + TranslatedProps, + User, +} from '@staticcms/core/interface'; const StyledAppBar = styled(AppBar)` background-color: ${colors.foreground}; diff --git a/core/src/components/EditorWidgets/Unknown/UnknownControl.tsx b/core/src/components/EditorWidgets/Unknown/UnknownControl.tsx index 11bd44f1..6f2af21a 100644 --- a/core/src/components/EditorWidgets/Unknown/UnknownControl.tsx +++ b/core/src/components/EditorWidgets/Unknown/UnknownControl.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { translate } from 'react-polyglot'; -import type { WidgetControlProps, TranslatedProps } from '../../../interface'; +import type { WidgetControlProps, TranslatedProps } from '@staticcms/core/interface'; const UnknownControl = ({ field, t }: TranslatedProps>) => { return
    {t('editor.editorWidgets.unknownControl.noControl', { widget: field.widget })}
    ; diff --git a/core/src/components/EditorWidgets/Unknown/UnknownPreview.tsx b/core/src/components/EditorWidgets/Unknown/UnknownPreview.tsx index 0fa8c6b5..06f7552e 100644 --- a/core/src/components/EditorWidgets/Unknown/UnknownPreview.tsx +++ b/core/src/components/EditorWidgets/Unknown/UnknownPreview.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { translate } from 'react-polyglot'; -import type { WidgetPreviewProps, TranslatedProps } from '../../../interface'; +import type { WidgetPreviewProps, TranslatedProps } from '@staticcms/core/interface'; const UnknownPreview = ({ field, t }: TranslatedProps) => { return ( diff --git a/core/src/components/EditorWidgets/index.ts b/core/src/components/EditorWidgets/index.ts index 31207d3a..338f5cff 100644 --- a/core/src/components/EditorWidgets/index.ts +++ b/core/src/components/EditorWidgets/index.ts @@ -1,4 +1,4 @@ -import { registerWidget } from '../../lib/registry'; +import { registerWidget } from '@staticcms/core/lib/registry'; import UnknownControl from './Unknown/UnknownControl'; import UnknownPreview from './Unknown/UnknownPreview'; diff --git a/core/src/components/MediaLibrary/MediaLibrary.tsx b/core/src/components/MediaLibrary/MediaLibrary.tsx index c9247f60..5c4ed0d8 100644 --- a/core/src/components/MediaLibrary/MediaLibrary.tsx +++ b/core/src/components/MediaLibrary/MediaLibrary.tsx @@ -10,17 +10,17 @@ import { loadMedia as loadMediaAction, loadMediaDisplayURL as loadMediaDisplayURLAction, persistMedia as persistMediaAction, -} from '../../actions/mediaLibrary'; -import { fileExtension } from '../../lib/util'; -import { selectMediaFiles } from '../../reducers/mediaLibrary'; +} from '@staticcms/core/actions/mediaLibrary'; +import { fileExtension } from '@staticcms/core/lib/util'; +import { selectMediaFiles } from '@staticcms/core/reducers/mediaLibrary'; import alert from '../UI/Alert'; import confirm from '../UI/Confirm'; import MediaLibraryModal from './MediaLibraryModal'; import type { ChangeEvent, KeyboardEvent } from 'react'; import type { ConnectedProps } from 'react-redux'; -import type { MediaFile, TranslatedProps } from '../../interface'; -import type { RootState } from '../../store'; +import type { MediaFile, TranslatedProps } from '@staticcms/core/interface'; +import type { RootState } from '@staticcms/core/store'; /** * Extensions used to determine which files to show when the media library is diff --git a/core/src/components/MediaLibrary/MediaLibraryButtons.tsx b/core/src/components/MediaLibrary/MediaLibraryButtons.tsx index db9a8500..3c72a110 100644 --- a/core/src/components/MediaLibrary/MediaLibraryButtons.tsx +++ b/core/src/components/MediaLibrary/MediaLibraryButtons.tsx @@ -2,9 +2,9 @@ import Button from '@mui/material/Button'; import copyToClipboard from 'copy-text-to-clipboard'; import React, { useCallback, useEffect, useState } from 'react'; -import { isAbsolutePath } from '../../lib/util'; +import { isAbsolutePath } from '@staticcms/core/lib/util'; -import type { TranslatedProps } from '../../interface'; +import type { TranslatedProps } from '@staticcms/core/interface'; export interface CopyToClipBoardButtonProps { disabled: boolean; diff --git a/core/src/components/MediaLibrary/MediaLibraryCard.tsx b/core/src/components/MediaLibrary/MediaLibraryCard.tsx index a2b580d6..1ef97f92 100644 --- a/core/src/components/MediaLibrary/MediaLibraryCard.tsx +++ b/core/src/components/MediaLibrary/MediaLibraryCard.tsx @@ -1,10 +1,10 @@ import { styled } from '@mui/material/styles'; import React, { useEffect, useMemo } from 'react'; -import { borders, colors, effects, lengths, shadows } from '../../components/UI/styles'; -import { transientOptions } from '../../lib'; +import { borders, colors, effects, lengths, shadows } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; -import type { MediaLibraryDisplayURL } from '../../reducers/mediaLibrary'; +import type { MediaLibraryDisplayURL } from '@staticcms/core/reducers/mediaLibrary'; const IMAGE_HEIGHT = 160; diff --git a/core/src/components/MediaLibrary/MediaLibraryCardGrid.tsx b/core/src/components/MediaLibrary/MediaLibraryCardGrid.tsx index 2db0462f..20225047 100644 --- a/core/src/components/MediaLibrary/MediaLibraryCardGrid.tsx +++ b/core/src/components/MediaLibrary/MediaLibraryCardGrid.tsx @@ -7,8 +7,11 @@ import { FixedSizeGrid as Grid } from 'react-window'; import MediaLibraryCard from './MediaLibraryCard'; import type { GridChildComponentProps } from 'react-window'; -import type { MediaFile } from '../../interface'; -import type { MediaLibraryDisplayURL, MediaLibraryState } from '../../reducers/mediaLibrary'; +import type { MediaFile } from '@staticcms/core/interface'; +import type { + MediaLibraryDisplayURL, + MediaLibraryState, +} from '@staticcms/core/reducers/mediaLibrary'; export interface MediaLibraryCardItem { displayURL?: MediaLibraryDisplayURL; diff --git a/core/src/components/MediaLibrary/MediaLibraryModal.tsx b/core/src/components/MediaLibrary/MediaLibraryModal.tsx index e5ee6e46..218cbe1c 100644 --- a/core/src/components/MediaLibrary/MediaLibraryModal.tsx +++ b/core/src/components/MediaLibrary/MediaLibraryModal.tsx @@ -12,8 +12,8 @@ import MediaLibraryCardGrid from './MediaLibraryCardGrid'; import MediaLibraryTop from './MediaLibraryTop'; import type { ChangeEvent, ChangeEventHandler, KeyboardEventHandler } from 'react'; -import type { MediaFile, TranslatedProps } from '../../interface'; -import type { MediaLibraryState } from '../../reducers/mediaLibrary'; +import type { MediaFile, TranslatedProps } from '@staticcms/core/interface'; +import type { MediaLibraryState } from '@staticcms/core/reducers/mediaLibrary'; const StyledFab = styled(Fab)` position: absolute; diff --git a/core/src/components/MediaLibrary/MediaLibraryTop.tsx b/core/src/components/MediaLibrary/MediaLibraryTop.tsx index 5130a4da..dfe03f65 100644 --- a/core/src/components/MediaLibrary/MediaLibraryTop.tsx +++ b/core/src/components/MediaLibrary/MediaLibraryTop.tsx @@ -5,11 +5,11 @@ import React from 'react'; import { CopyToClipBoardButton } from './MediaLibraryButtons'; import MediaLibrarySearch from './MediaLibrarySearch'; -import { buttons, shadows, zIndex } from '../../components/UI/styles'; +import { buttons, shadows, zIndex } from '@staticcms/core/components/UI/styles'; import FileUploadButton from '../UI/FileUploadButton'; import type { ChangeEvent, ChangeEventHandler, KeyboardEventHandler } from 'react'; -import type { MediaFile, TranslatedProps } from '../../interface'; +import type { MediaFile, TranslatedProps } from '@staticcms/core/interface'; const LibraryTop = styled('div')` position: relative; diff --git a/core/src/components/UI/Alert.tsx b/core/src/components/UI/Alert.tsx index f77edbc0..628a8d7d 100644 --- a/core/src/components/UI/Alert.tsx +++ b/core/src/components/UI/Alert.tsx @@ -7,8 +7,8 @@ import DialogTitle from '@mui/material/DialogTitle'; import React, { useCallback, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; -import AlertEvent from '../../lib/util/events/AlertEvent'; -import { useWindowEvent } from '../../lib/util/window.util'; +import AlertEvent from '@staticcms/core/lib/util/events/AlertEvent'; +import { useWindowEvent } from '@staticcms/core/lib/util/window.util'; import type { TranslateProps } from 'react-polyglot'; diff --git a/core/src/components/UI/AuthenticationPage.tsx b/core/src/components/UI/AuthenticationPage.tsx index 62478fee..37c86921 100644 --- a/core/src/components/UI/AuthenticationPage.tsx +++ b/core/src/components/UI/AuthenticationPage.tsx @@ -6,7 +6,7 @@ import GoBackButton from './GoBackButton'; import Icon from './Icon'; import type { MouseEventHandler, ReactNode } from 'react'; -import type { TranslatedProps } from '../../interface'; +import type { TranslatedProps } from '@staticcms/core/interface'; const StyledAuthenticationPage = styled('section')` display: flex; diff --git a/core/src/components/UI/Confirm.tsx b/core/src/components/UI/Confirm.tsx index b3dce11e..7171662c 100644 --- a/core/src/components/UI/Confirm.tsx +++ b/core/src/components/UI/Confirm.tsx @@ -7,8 +7,8 @@ import DialogTitle from '@mui/material/DialogTitle'; import React, { useCallback, useMemo, useState } from 'react'; import { translate } from 'react-polyglot'; -import ConfirmEvent from '../../lib/util/events/ConfirmEvent'; -import { useWindowEvent } from '../../lib/util/window.util'; +import ConfirmEvent from '@staticcms/core/lib/util/events/ConfirmEvent'; +import { useWindowEvent } from '@staticcms/core/lib/util/window.util'; import type { TranslateProps } from 'react-polyglot'; diff --git a/core/src/components/UI/ErrorBoundary.tsx b/core/src/components/UI/ErrorBoundary.tsx index 53a517bc..77bde50c 100644 --- a/core/src/components/UI/ErrorBoundary.tsx +++ b/core/src/components/UI/ErrorBoundary.tsx @@ -2,15 +2,15 @@ import { styled } from '@mui/material/styles'; import cleanStack from 'clean-stack'; import copyToClipboard from 'copy-text-to-clipboard'; import truncate from 'lodash/truncate'; -import React from 'react'; +import React, { Component } from 'react'; import { translate } from 'react-polyglot'; import yaml from 'yaml'; -import { localForage } from '../../lib/util'; -import { buttons, colors } from '../../components/UI/styles'; +import { buttons, colors } from '@staticcms/core/components/UI/styles'; +import { localForage } from '@staticcms/core/lib/util'; +import type { Config, TranslatedProps } from '@staticcms/core/interface'; import type { ReactNode } from 'react'; -import type { Config, TranslatedProps } from '../../interface'; const ISSUE_URL = 'https://github.com/StaticJsCMS/static-cms/issues/new?'; @@ -45,7 +45,7 @@ function buildIssueTemplate(config: Config) { } const template = getIssueTemplate( version, - config.backend.name, + config?.backend?.name, navigator.userAgent, yaml.stringify(config), ); @@ -145,7 +145,7 @@ interface ErrorBoundaryState { backup: string; } -export class ErrorBoundary extends React.Component< +export class ErrorBoundary extends Component< TranslatedProps, ErrorBoundaryState > { diff --git a/core/src/components/UI/FileUploadButton.tsx b/core/src/components/UI/FileUploadButton.tsx index 1ea33b51..3d122dae 100644 --- a/core/src/components/UI/FileUploadButton.tsx +++ b/core/src/components/UI/FileUploadButton.tsx @@ -1,10 +1,12 @@ import Button from '@mui/material/Button'; import React from 'react'; +import type { ChangeEventHandler } from 'react'; + export interface FileUploadButtonProps { label: string; imagesOnly?: boolean; - onChange: React.ChangeEventHandler; + onChange: ChangeEventHandler; disabled?: boolean; } diff --git a/core/src/components/UI/GoBackButton.tsx b/core/src/components/UI/GoBackButton.tsx index e27249ac..4a9d6ee6 100644 --- a/core/src/components/UI/GoBackButton.tsx +++ b/core/src/components/UI/GoBackButton.tsx @@ -2,7 +2,7 @@ import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import Button from '@mui/material/Button'; import React from 'react'; -import type { TranslatedProps } from '../../interface'; +import type { TranslatedProps } from '@staticcms/core/interface'; interface GoBackButtonProps { href: string; diff --git a/core/src/components/UI/Icon.tsx b/core/src/components/UI/Icon.tsx index da5a390c..d0c3363c 100644 --- a/core/src/components/UI/Icon.tsx +++ b/core/src/components/UI/Icon.tsx @@ -2,7 +2,7 @@ import { styled } from '@mui/material/styles'; import React from 'react'; import icons from './Icon/icons'; -import transientOptions from '../../lib/util/transientOptions'; +import transientOptions from '@staticcms/core/lib/util/transientOptions'; import type { IconType } from './Icon/icons'; diff --git a/core/src/components/UI/ListItemTopBar.tsx b/core/src/components/UI/ListItemTopBar.tsx index ee92eb2b..f9745327 100644 --- a/core/src/components/UI/ListItemTopBar.tsx +++ b/core/src/components/UI/ListItemTopBar.tsx @@ -5,7 +5,7 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import IconButton from '@mui/material/IconButton'; import React from 'react'; -import { transientOptions } from '../../lib/util'; +import { transientOptions } from '@staticcms/core/lib/util'; import { buttons, colors, lengths, transitions } from './styles'; import type { ComponentClass, MouseEvent, ReactNode } from 'react'; diff --git a/core/src/components/UI/NavLink.tsx b/core/src/components/UI/NavLink.tsx index 8ae92c02..4473687b 100644 --- a/core/src/components/UI/NavLink.tsx +++ b/core/src/components/UI/NavLink.tsx @@ -2,8 +2,8 @@ import React, { forwardRef } from 'react'; import { NavLink as NavLinkBase } from 'react-router-dom'; import { styled } from '@mui/material/styles'; -import { colors } from '../../components/UI/styles'; -import { transientOptions } from '../../lib'; +import { colors } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; import type { RefAttributes } from 'react'; import type { NavLinkProps as RouterNavLinkProps } from 'react-router-dom'; diff --git a/core/src/components/UI/ObjectWidgetTopBar.tsx b/core/src/components/UI/ObjectWidgetTopBar.tsx index b9433d77..f37a2655 100644 --- a/core/src/components/UI/ObjectWidgetTopBar.tsx +++ b/core/src/components/UI/ObjectWidgetTopBar.tsx @@ -5,13 +5,13 @@ import IconButton from '@mui/material/IconButton'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import { styled } from '@mui/material/styles'; -import React, { useCallback } from 'react'; +import React, { useCallback, useState } from 'react'; -import { transientOptions } from '../../lib'; +import { transientOptions } from '@staticcms/core/lib'; import { colors, colorsRaw, transitions } from './styles'; +import type { ObjectField, TranslatedProps } from '@staticcms/core/interface'; import type { MouseEvent, ReactNode } from 'react'; -import type { ObjectField, TranslatedProps } from '../../interface'; const TopBarContainer = styled('div')` position: relative; @@ -67,9 +67,9 @@ const ObjectWidgetTopBar = ({ hasError = false, t, }: TranslatedProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { diff --git a/core/src/components/UI/Outline.tsx b/core/src/components/UI/Outline.tsx index 6e0f14d7..c3ddc15a 100644 --- a/core/src/components/UI/Outline.tsx +++ b/core/src/components/UI/Outline.tsx @@ -1,7 +1,7 @@ import { styled } from '@mui/material/styles'; import React from 'react'; -import transientOptions from '../../lib/util/transientOptions'; +import transientOptions from '@staticcms/core/lib/util/transientOptions'; interface StyledOutlineProps { $active: boolean; diff --git a/core/src/components/UI/ScrollTop.tsx b/core/src/components/UI/ScrollTop.tsx index 952f01d1..c2f61a92 100644 --- a/core/src/components/UI/ScrollTop.tsx +++ b/core/src/components/UI/ScrollTop.tsx @@ -3,6 +3,8 @@ import { styled } from '@mui/material/styles'; import useScrollTrigger from '@mui/material/useScrollTrigger'; import React, { useCallback } from 'react'; +import type { ReactNode, MouseEvent } from 'react'; + const StyledScrollTop = styled('div')` position: fixed; bottom: 16px; @@ -10,7 +12,7 @@ const StyledScrollTop = styled('div')` `; interface ScrollTopProps { - children: React.ReactNode; + children: ReactNode; } const ScrollTop = ({ children }: ScrollTopProps) => { @@ -19,7 +21,7 @@ const ScrollTop = ({ children }: ScrollTopProps) => { threshold: 100, }); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { const anchor = ((event.target as HTMLDivElement).ownerDocument || document).querySelector( '#back-to-top-anchor', ); diff --git a/core/src/components/UI/SettingsDropdown.tsx b/core/src/components/UI/SettingsDropdown.tsx index d8b02215..6408d86e 100644 --- a/core/src/components/UI/SettingsDropdown.tsx +++ b/core/src/components/UI/SettingsDropdown.tsx @@ -1,13 +1,14 @@ +import PersonIcon from '@mui/icons-material/Person'; import Avatar from '@mui/material/Avatar'; import IconButton from '@mui/material/IconButton'; import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import Tooltip from '@mui/material/Tooltip'; -import React, { useCallback } from 'react'; +import React, { useCallback, useState } from 'react'; import { translate } from 'react-polyglot'; -import PersonIcon from '@mui/icons-material/Person'; -import type { TranslatedProps } from '../../interface'; +import type { TranslatedProps } from '@staticcms/core/interface'; +import type { MouseEvent } from 'react'; interface AvatarImageProps { imageUrl: string | undefined; @@ -33,9 +34,9 @@ const SettingsDropdown = ({ onLogoutClick, t, }: TranslatedProps) => { - const [anchorEl, setAnchorEl] = React.useState(null); + const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); - const handleClick = useCallback((event: React.MouseEvent) => { + const handleClick = useCallback((event: MouseEvent) => { setAnchorEl(event.currentTarget); }, []); const handleClose = useCallback(() => { diff --git a/core/src/components/UI/styles.tsx b/core/src/components/UI/styles.tsx index 39e57e16..f37e298d 100644 --- a/core/src/components/UI/styles.tsx +++ b/core/src/components/UI/styles.tsx @@ -519,10 +519,7 @@ function GlobalStyles() { } ${quantifier} { - font-family: ${fonts.primary}; - font-weight: normal; background-color: ${colors.background}; - color: ${colors.text}; margin: 0; .ol-viewport { diff --git a/core/src/components/page/Page.tsx b/core/src/components/page/Page.tsx index ea69ad8c..4a83528b 100644 --- a/core/src/components/page/Page.tsx +++ b/core/src/components/page/Page.tsx @@ -4,13 +4,13 @@ import { translate } from 'react-polyglot'; import { connect } from 'react-redux'; import { useParams } from 'react-router-dom'; -import { getAdditionalLink } from '../../lib/registry'; +import { getAdditionalLink } from '@staticcms/core/lib/registry'; import MainView from '../App/MainView'; import Sidebar from '../Collection/Sidebar'; import type { ComponentType } from 'react'; import type { ConnectedProps } from 'react-redux'; -import type { RootState } from '../../store'; +import type { RootState } from '@staticcms/core/store'; const StyledPageContent = styled('div')` width: 100%; diff --git a/core/src/components/snackbar/Snackbars.tsx b/core/src/components/snackbar/Snackbars.tsx index a3fe093e..6c8e5251 100644 --- a/core/src/components/snackbar/Snackbars.tsx +++ b/core/src/components/snackbar/Snackbars.tsx @@ -5,17 +5,18 @@ import Snackbar from '@mui/material/Snackbar'; import React, { useCallback, useEffect, useState } from 'react'; import { translate } from 'react-polyglot'; -import { useAppDispatch, useAppSelector } from '../../store/hooks'; -import { removeSnackbarById, selectSnackbars } from '../../store/slices/snackbars'; +import { useAppDispatch, useAppSelector } from '@staticcms/core/store/hooks'; +import { removeSnackbarById, selectSnackbars } from '@staticcms/core/store/slices/snackbars'; -import type { TranslatedProps } from '../../interface'; -import type { SnackbarMessage } from '../../store/slices/snackbars'; +import type { TranslatedProps } from '@staticcms/core/interface'; +import type { SnackbarMessage } from '@staticcms/core/store/slices/snackbars'; +import type { SyntheticEvent } from 'react'; // eslint-disable-next-line @typescript-eslint/no-empty-interface interface SnackbarsProps {} const Snackbars = ({ t }: TranslatedProps) => { - const [open, setOpen] = React.useState(false); + const [open, setOpen] = useState(false); const [messageInfo, setMessageInfo] = useState(undefined); const snackbars = useAppSelector(selectSnackbars); @@ -34,7 +35,7 @@ const Snackbars = ({ t }: TranslatedProps) => { } }, [snackbars, messageInfo, open, dispatch]); - const handleClose = useCallback((_event?: React.SyntheticEvent | Event, reason?: string) => { + const handleClose = useCallback((_event?: SyntheticEvent | Event, reason?: string) => { if (reason === 'clickaway') { return; } diff --git a/core/src/constants/configSchema.tsx b/core/src/constants/configSchema.tsx index a2baf9f5..700c96d8 100644 --- a/core/src/constants/configSchema.tsx +++ b/core/src/constants/configSchema.tsx @@ -343,7 +343,7 @@ class ConfigError extends Error { * `validateConfig` is a pure function. It does not mutate * the config that is passed in. */ -export function validateConfig(config: Config) { +export default function validateConfig(config: Config) { const ajv = new AJV({ allErrors: true, allowUnionTypes: true, $data: true }); uniqueItemProperties(ajv); select(ajv); diff --git a/core/src/constants/files.ts b/core/src/constants/files.ts index 1b349f97..14657a70 100644 --- a/core/src/constants/files.ts +++ b/core/src/constants/files.ts @@ -1,2 +1,3 @@ +/* eslint-disable import/prefer-default-export */ export const IMAGE_EXTENSION_REGEX = /(\.apng|\.avif|\.gif|\.jpg|\.jpeg|\.jfif|\.pjpeg|\.pjp|\.png|\.svg|\.webp)$/g; diff --git a/core/src/extensions.ts b/core/src/extensions.ts index 1753a432..1a1928dd 100644 --- a/core/src/extensions.ts +++ b/core/src/extensions.ts @@ -7,7 +7,7 @@ import { TestBackend, } from './backends'; import { registerBackend, registerLocale, registerWidget } from './lib/registry'; -import { locales } from './locales'; +import locales from './locales'; import { BooleanWidget, CodeWidget, @@ -26,7 +26,7 @@ import { TextWidget, } from './widgets'; -export function addExtensions() { +export default function addExtensions() { // Register all the things registerBackend('git-gateway', GitGatewayBackend); registerBackend('github', GitHubBackend); diff --git a/core/src/formats/FileFormatter.ts b/core/src/formats/FileFormatter.ts index 9647b4cd..88a2fb43 100644 --- a/core/src/formats/FileFormatter.ts +++ b/core/src/formats/FileFormatter.ts @@ -1,4 +1,4 @@ -export abstract class FileFormatter { +export default abstract class FileFormatter { abstract fromFile(content: string): object; abstract toFile(data: object, sortedKeys?: string[], comments?: Record): string; } diff --git a/core/src/formats/JsonFormatter.ts b/core/src/formats/JsonFormatter.ts index 4c684a0d..0dbf61d9 100644 --- a/core/src/formats/JsonFormatter.ts +++ b/core/src/formats/JsonFormatter.ts @@ -1,4 +1,4 @@ -import { FileFormatter } from './FileFormatter'; +import FileFormatter from './FileFormatter'; class JsonFormatter extends FileFormatter { fromFile(content: string) { diff --git a/core/src/formats/TomlFormatter.ts b/core/src/formats/TomlFormatter.ts index 7373573b..29be17fe 100644 --- a/core/src/formats/TomlFormatter.ts +++ b/core/src/formats/TomlFormatter.ts @@ -1,6 +1,6 @@ import toml from '@ltd/j-toml'; -import { FileFormatter } from './FileFormatter'; +import FileFormatter from './FileFormatter'; class TomlFormatter extends FileFormatter { fromFile(content: string) { diff --git a/core/src/formats/YamlFormatter.ts b/core/src/formats/YamlFormatter.ts index 086597a2..c2332d2c 100644 --- a/core/src/formats/YamlFormatter.ts +++ b/core/src/formats/YamlFormatter.ts @@ -1,7 +1,7 @@ import yaml from 'yaml'; import { sortKeys } from './helpers'; -import { FileFormatter } from './FileFormatter'; +import FileFormatter from './FileFormatter'; import type { Pair, YAMLMap, YAMLSeq } from 'yaml/types'; diff --git a/core/src/formats/formats.ts b/core/src/formats/formats.ts index d64acc05..67292cef 100644 --- a/core/src/formats/formats.ts +++ b/core/src/formats/formats.ts @@ -5,7 +5,7 @@ import { FrontmatterInfer, frontmatterJSON, frontmatterTOML, frontmatterYAML } f import type { Delimiter } from './frontmatter'; import type { Collection, Entry, Format } from '../interface'; -import type { FileFormatter } from './FileFormatter'; +import type FileFormatter from './FileFormatter'; export const frontmatterFormats = ['yaml-frontmatter', 'toml-frontmatter', 'json-frontmatter']; diff --git a/core/src/formats/frontmatter.ts b/core/src/formats/frontmatter.ts index 805a85ba..4b3af81b 100644 --- a/core/src/formats/frontmatter.ts +++ b/core/src/formats/frontmatter.ts @@ -3,7 +3,7 @@ import matter from 'gray-matter'; import YamlFormatter from './YamlFormatter'; import TomlFormatter from './TomlFormatter'; import JsonFormatter from './JsonFormatter'; -import { FileFormatter } from './FileFormatter'; +import FileFormatter from './FileFormatter'; const Languages = { YAML: 'yaml', diff --git a/core/src/formats/helpers.ts b/core/src/formats/helpers.ts index 54c44830..7e02b831 100644 --- a/core/src/formats/helpers.ts +++ b/core/src/formats/helpers.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/prefer-default-export */ export function sortKeys( sortedKeys: string[], // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/core/src/index.ts b/core/src/index.ts index 7d46d767..ea935848 100644 --- a/core/src/index.ts +++ b/core/src/index.ts @@ -1,5 +1,5 @@ import createReactClass from 'create-react-class'; -import React from 'react'; +import { createElement, useCallback, useEffect, useMemo, useState } from 'react'; import bootstrap from './bootstrap'; import Registry from './lib/registry'; @@ -7,7 +7,7 @@ import Registry from './lib/registry'; export * from './backends'; export * from './widgets'; export * from './media-libraries'; -export * from './locales'; +export { default as locales } from './locales'; export * from './lib'; export * from './interface'; @@ -20,11 +20,11 @@ const CMS = { if (typeof window !== 'undefined') { window.CMS = CMS; window.createClass = window.createClass || createReactClass; - window.useState = window.useState || React.useState; - window.useMemo = window.useMemo || React.useMemo; - window.useEffect = window.useEffect || React.useEffect; - window.useCallback = window.useCallback || React.useCallback; - window.h = window.h || React.createElement; + window.useState = window.useState || useState; + window.useMemo = window.useMemo || useMemo; + window.useEffect = window.useEffect || useEffect; + window.useCallback = window.useCallback || useCallback; + window.h = window.h || createElement; } export default CMS; diff --git a/core/src/integrations/providers/algolia/implementation.ts b/core/src/integrations/providers/algolia/implementation.ts index f94b80f5..ef8b0a8c 100644 --- a/core/src/integrations/providers/algolia/implementation.ts +++ b/core/src/integrations/providers/algolia/implementation.ts @@ -1,10 +1,10 @@ import flatten from 'lodash/flatten'; -import { unsentRequest } from '../../../lib/util'; -import { selectEntrySlug } from '../../../lib/util/collection.util'; -import { createEntry } from '../../../valueObjects/Entry'; +import { unsentRequest } from '@staticcms/core/lib/util'; +import { selectEntrySlug } from '@staticcms/core/lib/util/collection.util'; +import createEntry from '@staticcms/core/valueObjects/createEntry'; -import type { AlgoliaConfig, Collection, Entry, SearchResponse } from '../../../interface'; +import type { AlgoliaConfig, Collection, Entry, SearchResponse } from '@staticcms/core/interface'; const { fetchWithTimeout: fetch } = unsentRequest; diff --git a/core/src/interface.ts b/core/src/interface.ts index 062ade0c..70d18519 100644 --- a/core/src/interface.ts +++ b/core/src/interface.ts @@ -1,10 +1,12 @@ -import type { - EditorPlugin as MarkdownPlugin, - EditorType as MarkdownEditorType, -} from '@toast-ui/editor/types/editor'; -import type { ToolbarItemOptions as MarkdownToolbarItemOptions } from '@toast-ui/editor/types/ui'; +import type { LanguageName } from '@uiw/codemirror-extensions-langs'; import type { PropertiesSchema } from 'ajv/dist/types/json-schema'; -import type { ComponentType, FunctionComponent, ReactNode } from 'react'; +import type { + ComponentType, + FunctionComponent, + JSXElementConstructor, + ReactElement, + ReactNode, +} from 'react'; import type { t, TranslateProps as ReactPolyglotTranslateProps } from 'react-polyglot'; import type { MediaFile as BackendMediaFile } from './backend'; import type { EditorControlProps } from './components/Editor/EditorControlPane/EditorControl'; @@ -18,7 +20,6 @@ import type { I18N_STRUCTURE } from './lib/i18n'; import type { AllowedEvent } from './lib/registry'; import type Cursor from './lib/util/Cursor'; import type AssetProxy from './valueObjects/AssetProxy'; -import type { MediaHolder } from './widgets/markdown/hooks/useMedia'; export interface Pages { [collection: string]: { isFetching?: boolean; page?: number; ids: string[] }; @@ -278,7 +279,7 @@ export interface WidgetPreviewProps = // eslint-disable-next-line @typescript-eslint/no-explicit-any - | React.ReactElement> + | ReactElement> | ComponentType>; export type WidgetsFor

    = ( @@ -286,11 +287,11 @@ export type WidgetsFor

    = ( ) => P[K] extends Array ? { data: U | null; - widgets: Record; + widgets: Record; }[] : { data: P[K] | null; - widgets: Record; + widgets: Record; }; export interface TemplatePreviewProps { @@ -841,7 +842,7 @@ export interface I18nInfo { export interface ProcessedCodeLanguage { label: string; identifiers: string[]; - codemirror_mode: string; + codemirror_mode: LanguageName; codemirror_mime_type: string; } @@ -862,22 +863,25 @@ export interface PreviewStyle { export interface MarkdownPluginFactoryProps { config: Config; field: MarkdownField; - media: MediaHolder; mode: 'editor' | 'preview'; } -export type MarkdownPluginFactory = (props: MarkdownPluginFactoryProps) => MarkdownPlugin; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type MarkdownPluginFactory = (props: MarkdownPluginFactoryProps) => any; export interface MarkdownToolbarItemsFactoryProps { - imageToolbarButton: MarkdownToolbarItemOptions; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + imageToolbarButton: any; } export type MarkdownToolbarItemsFactory = ( props: MarkdownToolbarItemsFactoryProps, -) => (string | MarkdownToolbarItemOptions)[][]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any +) => (string | any)[][]; export interface MarkdownEditorOptions { - initialEditType?: MarkdownEditorType; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + initialEditType?: any; height?: string; toolbarItems?: MarkdownToolbarItemsFactory; plugins?: MarkdownPluginFactory[]; diff --git a/core/src/lib/auth/implicit-oauth.ts b/core/src/lib/auth/implicit-oauth.ts index dd4d726e..67b00233 100644 --- a/core/src/lib/auth/implicit-oauth.ts +++ b/core/src/lib/auth/implicit-oauth.ts @@ -3,7 +3,7 @@ import trimEnd from 'lodash/trimEnd'; import { createNonce, isInsecureProtocol, validateNonce } from './utils'; -import type { User, AuthenticatorConfig } from '../../interface'; +import type { User, AuthenticatorConfig } from '@staticcms/core/interface'; import type { NetlifyError } from './netlify-auth'; export default class ImplicitAuthenticator { diff --git a/core/src/lib/auth/netlify-auth.ts b/core/src/lib/auth/netlify-auth.ts index 06637cf2..7ea5be94 100644 --- a/core/src/lib/auth/netlify-auth.ts +++ b/core/src/lib/auth/netlify-auth.ts @@ -1,7 +1,7 @@ import trim from 'lodash/trim'; import trimEnd from 'lodash/trimEnd'; -import type { User, AuthenticatorConfig } from '../../interface'; +import type { User, AuthenticatorConfig } from '@staticcms/core/interface'; const NETLIFY_API = 'https://api.netlify.com'; const AUTH_ENDPOINT = 'auth'; diff --git a/core/src/lib/auth/pkce-oauth.ts b/core/src/lib/auth/pkce-oauth.ts index 4e28633b..17d5de75 100644 --- a/core/src/lib/auth/pkce-oauth.ts +++ b/core/src/lib/auth/pkce-oauth.ts @@ -3,7 +3,7 @@ import trimEnd from 'lodash/trimEnd'; import { createNonce, isInsecureProtocol, validateNonce } from './utils'; -import type { User, AuthenticatorConfig } from '../../interface'; +import type { User, AuthenticatorConfig } from '@staticcms/core/interface'; import type { NetlifyError } from './netlify-auth'; async function sha256(text: string) { diff --git a/core/src/lib/hooks/useDebounce.ts b/core/src/lib/hooks/useDebounce.ts new file mode 100644 index 00000000..72247cb9 --- /dev/null +++ b/core/src/lib/hooks/useDebounce.ts @@ -0,0 +1,22 @@ +import { useEffect, useState } from 'react'; + +export default function useDebounce(value: T, delay: number): T { + const [debouncedValue, setDebouncedValue] = useState(value); + + useEffect(() => { + if (delay === 0) { + setDebouncedValue(value); + return; + } + + const handler = setTimeout(() => { + setDebouncedValue(value); + }, delay); + + return () => { + clearTimeout(handler); + }; + }, [value, delay]); + + return delay === 0 ? value : debouncedValue; +} diff --git a/core/src/lib/hooks/useDebouncedCallback.ts b/core/src/lib/hooks/useDebouncedCallback.ts new file mode 100644 index 00000000..59d4b070 --- /dev/null +++ b/core/src/lib/hooks/useDebouncedCallback.ts @@ -0,0 +1,25 @@ +import { useCallback, useRef } from 'react'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const useDebouncedCallback = any>(func: T, wait: number) => { + // Use a ref to store the timeout between renders + // and prevent changes to it from causing re-renders + const timeout = useRef(); + + return useCallback( + (...args: Parameters) => { + const later = () => { + clearTimeout(timeout.current); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + func(...args); + }; + + clearTimeout(timeout.current); + timeout.current = setTimeout(later, wait); + }, + [func, wait], + ); +}; + +export default useDebouncedCallback; diff --git a/core/src/lib/hooks/useIsMediaAsset.ts b/core/src/lib/hooks/useIsMediaAsset.ts new file mode 100644 index 00000000..541675dd --- /dev/null +++ b/core/src/lib/hooks/useIsMediaAsset.ts @@ -0,0 +1,30 @@ +import { useEffect, useState } from 'react'; + +import { emptyAsset, getAsset } from '@staticcms/core/actions/media'; +import { useAppDispatch } from '@staticcms/core/store/hooks'; +import { isNotEmpty } from '../util/string.util'; + +import type { Collection, Entry, FileOrImageField, MarkdownField } from '@staticcms/core/interface'; + +export default function useIsMediaAsset( + url: string, + collection: Collection, + field: T, + entry: Entry, +): boolean { + const dispatch = useAppDispatch(); + const [exists, setExists] = useState(false); + + useEffect(() => { + const checkMediaExistence = async () => { + const asset = await dispatch(getAsset(collection, entry, url, field)); + setExists( + Boolean(asset && asset !== emptyAsset && isNotEmpty(asset.toString()) && asset.fileObj), + ); + }; + + checkMediaExistence(); + }, [collection, dispatch, entry, field, url]); + + return exists; +} diff --git a/core/src/lib/hooks/useMediaAsset.ts b/core/src/lib/hooks/useMediaAsset.ts new file mode 100644 index 00000000..3b5e18f0 --- /dev/null +++ b/core/src/lib/hooks/useMediaAsset.ts @@ -0,0 +1,27 @@ +import { useEffect, useState } from 'react'; + +import { getAsset } from '@staticcms/core/actions/media'; +import { useAppDispatch } from '@staticcms/core/store/hooks'; + +import type { Collection, Entry, FileOrImageField, MarkdownField } from '@staticcms/core/interface'; + +export default function useMediaAsset( + url: string, + collection: Collection, + field: T, + entry: Entry, +): string { + const dispatch = useAppDispatch(); + const [assetSource, setAssetSource] = useState(url); + + useEffect(() => { + const fetchMedia = async () => { + const asset = (await dispatch(getAsset(collection, entry, url, field)))?.toString() ?? ''; + setAssetSource(asset); + }; + + fetchMedia(); + }, [collection, dispatch, entry, field, url]); + + return assetSource; +} diff --git a/core/src/lib/hooks/useMediaInsert.ts b/core/src/lib/hooks/useMediaInsert.ts new file mode 100644 index 00000000..e2f9e910 --- /dev/null +++ b/core/src/lib/hooks/useMediaInsert.ts @@ -0,0 +1,61 @@ +import { useCallback, useEffect, useMemo } from 'react'; +import uuid from 'uuid'; + +import { selectMediaPath } from '@staticcms/core/reducers/mediaLibrary'; +import { useAppDispatch, useAppSelector } from '@staticcms/core/store/hooks'; +import { openMediaLibrary, removeInsertedMedia } from '@staticcms/core/actions/mediaLibrary'; + +import type { MouseEvent } from 'react'; +import type { FileOrImageField, MarkdownField } from '@staticcms/core/interface'; + +export default function useMediaInsert( + value: T, + options: { field?: FileOrImageField | MarkdownField; controlID?: string; forImage?: boolean }, + callback: (newValue: T) => void, +): (e?: MouseEvent) => void { + const dispatch = useAppDispatch(); + + const { controlID, field, forImage = false } = options; + + const finalControlID = useMemo(() => controlID ?? uuid(), [controlID]); + const mediaPathSelector = useMemo(() => selectMediaPath(finalControlID), [finalControlID]); + const mediaPath = useAppSelector(mediaPathSelector); + + const mediaLibraryFieldOptions = useMemo(() => { + return field?.media_library ?? {}; + }, [field?.media_library]); + + const config = useMemo( + () => ('config' in mediaLibraryFieldOptions ? mediaLibraryFieldOptions.config : undefined), + [mediaLibraryFieldOptions], + ); + + useEffect(() => { + if (mediaPath && mediaPath !== value) { + callback(mediaPath as T); + setTimeout(() => { + dispatch(removeInsertedMedia(finalControlID)); + }); + } + }, [callback, finalControlID, dispatch, mediaPath, value]); + + const handleOpenMediaLibrary = useCallback( + (e?: MouseEvent, { replaceIndex }: { replaceIndex?: number } = {}) => { + e?.preventDefault(); + dispatch( + openMediaLibrary({ + controlID: finalControlID, + forImage, + value, + replaceIndex, + allowMultiple: false, + config, + field, + }), + ); + }, + [dispatch, finalControlID, forImage, value, config, field], + ); + + return handleOpenMediaLibrary; +} diff --git a/core/src/lib/hooks/useMemoCompare.ts b/core/src/lib/hooks/useMemoCompare.ts new file mode 100644 index 00000000..34c568ba --- /dev/null +++ b/core/src/lib/hooks/useMemoCompare.ts @@ -0,0 +1,23 @@ +import { useEffect, useRef } from 'react'; + +export default function useMemoCompare(next: T, compare: (prev: T, next: T) => boolean): T { + // Ref for storing previous value + const previousRef = useRef(next); + const previous = previousRef.current; + + // Pass previous and next value to compare function + // to determine whether to consider them equal. + const isEqual = compare(previous, next); + + // If not equal update previousRef to next value. + // We only update if not equal so that this hook continues to return + // the same old value if compare keeps returning true. + useEffect(() => { + if (!isEqual) { + previousRef.current = next; + } + }); + + // Finally, if equal then return the previous value + return isEqual ? previous : next; +} diff --git a/core/src/lib/phrases.ts b/core/src/lib/phrases.ts index d6b59484..84641bb3 100644 --- a/core/src/lib/phrases.ts +++ b/core/src/lib/phrases.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/prefer-default-export */ import merge from 'lodash/merge'; import { getLocale } from './registry'; diff --git a/core/src/lib/textHelper.ts b/core/src/lib/textHelper.ts index e1e4fd22..874e4355 100644 --- a/core/src/lib/textHelper.ts +++ b/core/src/lib/textHelper.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/prefer-default-export */ export function stringToRGB(str: string) { if (!str) return '000000'; let hash = 0; diff --git a/core/src/lib/util/API.ts b/core/src/lib/util/API.ts index 8e99b5b2..465e88d7 100644 --- a/core/src/lib/util/API.ts +++ b/core/src/lib/util/API.ts @@ -3,7 +3,7 @@ import unsentRequest from './unsentRequest'; import APIError from './APIError'; import type { AsyncLock } from './asyncLock'; -import type { FileMetadata } from '../../interface'; +import type { FileMetadata } from '@staticcms/core/interface'; export class FetchError extends Error { status: number; diff --git a/core/src/lib/util/collection.util.ts b/core/src/lib/util/collection.util.ts index 38408d9c..e9577430 100644 --- a/core/src/lib/util/collection.util.ts +++ b/core/src/lib/util/collection.util.ts @@ -1,21 +1,21 @@ import get from 'lodash/get'; import { useMemo } from 'react'; -import { COMMIT_AUTHOR, COMMIT_DATE } from '../../constants/commitProps'; +import { COMMIT_AUTHOR, COMMIT_DATE } from '@staticcms/core/constants/commitProps'; import { IDENTIFIER_FIELDS, INFERABLE_FIELDS, SORTABLE_FIELDS, -} from '../../constants/fieldInference'; -import { formatExtensions } from '../../formats/formats'; +} from '@staticcms/core/constants/fieldInference'; +import { formatExtensions } from '@staticcms/core/formats/formats'; import consoleError from '../consoleError'; import { summaryFormatter } from '../formatters'; import { keyToPathArray } from '../widgets/stringTemplate'; import { selectField } from './field.util'; import { selectMediaFolder } from './media.util'; -import type { Backend } from '../../backend'; -import type { InferredField } from '../../constants/fieldInference'; +import type { Backend } from '@staticcms/core/backend'; +import type { InferredField } from '@staticcms/core/constants/fieldInference'; import type { Collection, Config, @@ -24,7 +24,7 @@ import type { FilesCollection, ObjectField, SortableField, -} from '../../interface'; +} from '@staticcms/core/interface'; function fileForEntry(collection: FilesCollection, slug?: string) { const files = collection.files; diff --git a/core/src/lib/util/events/AlertEvent.ts b/core/src/lib/util/events/AlertEvent.ts index af9b0d3c..75a76b32 100644 --- a/core/src/lib/util/events/AlertEvent.ts +++ b/core/src/lib/util/events/AlertEvent.ts @@ -1,4 +1,4 @@ -import type { AlertDialogProps } from '../../../components/UI/Alert'; +import type { AlertDialogProps } from '@staticcms/core/components/UI/Alert'; export default class AlertEvent extends CustomEvent { constructor(detail: AlertDialogProps) { diff --git a/core/src/lib/util/events/ConfirmEvent.ts b/core/src/lib/util/events/ConfirmEvent.ts index 6c23740c..f9c7bece 100644 --- a/core/src/lib/util/events/ConfirmEvent.ts +++ b/core/src/lib/util/events/ConfirmEvent.ts @@ -1,4 +1,4 @@ -import type { ConfirmDialogProps } from '../../../components/UI/Confirm'; +import type { ConfirmDialogProps } from '@staticcms/core/components/UI/Confirm'; export default class ConfirmEvent extends CustomEvent { constructor(detail: ConfirmDialogProps) { diff --git a/core/src/lib/util/fetch.util.ts b/core/src/lib/util/fetch.util.ts index 5b4a26d3..df3ff616 100644 --- a/core/src/lib/util/fetch.util.ts +++ b/core/src/lib/util/fetch.util.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/prefer-default-export */ export async function doesUrlFileExist(url: string): Promise<{ type: string; exists: boolean }> { const cleanUrl = url.replace(/^blob:/g, ''); diff --git a/core/src/lib/util/field.util.ts b/core/src/lib/util/field.util.ts index 8822111f..a3c0d48f 100644 --- a/core/src/lib/util/field.util.ts +++ b/core/src/lib/util/field.util.ts @@ -1,7 +1,7 @@ import { keyToPathArray } from '../widgets/stringTemplate'; import type { t } from 'react-polyglot'; -import type { Collection, Field } from '../../interface'; +import type { Collection, Field } from '@staticcms/core/interface'; export function selectField(collection: Collection, key: string) { const array = keyToPathArray(key); diff --git a/core/src/lib/util/git-lfs.ts b/core/src/lib/util/git-lfs.ts index a2a5a025..05bf291e 100644 --- a/core/src/lib/util/git-lfs.ts +++ b/core/src/lib/util/git-lfs.ts @@ -5,7 +5,7 @@ import { filter, flow, fromPairs, map } from 'lodash/fp'; import getBlobSHA from './getBlobSHA'; -import type AssetProxy from '../../valueObjects/AssetProxy'; +import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy'; export interface PointerFile { size: number; diff --git a/core/src/lib/util/implementation.ts b/core/src/lib/util/implementation.ts index 7a85e8fb..6c9a983a 100644 --- a/core/src/lib/util/implementation.ts +++ b/core/src/lib/util/implementation.ts @@ -11,7 +11,7 @@ import type { FileMetadata, ImplementationEntry, ImplementationFile, -} from '../../interface'; +} from '@staticcms/core/interface'; import type { AsyncLock } from './asyncLock'; const MAX_CONCURRENT_DOWNLOADS = 10; diff --git a/core/src/lib/util/media.util.ts b/core/src/lib/util/media.util.ts index 75e639ef..126edaae 100644 --- a/core/src/lib/util/media.util.ts +++ b/core/src/lib/util/media.util.ts @@ -15,7 +15,7 @@ import type { MarkdownField, ListField, ObjectField, -} from '../../interface'; +} from '@staticcms/core/interface'; export const DRAFT_MEDIA_FILES = 'DRAFT_MEDIA_FILES'; diff --git a/core/src/lib/util/sort.util.ts b/core/src/lib/util/sort.util.ts index 163502e9..ebed5fb3 100644 --- a/core/src/lib/util/sort.util.ts +++ b/core/src/lib/util/sort.util.ts @@ -1,7 +1,8 @@ -import { COMMIT_AUTHOR, COMMIT_DATE } from '../../constants/commitProps'; +/* eslint-disable import/prefer-default-export */ +import { COMMIT_AUTHOR, COMMIT_DATE } from '@staticcms/core/constants/commitProps'; import { selectField } from './field.util'; -import type { Collection } from '../../interface'; +import type { Collection } from '@staticcms/core/interface'; export function selectSortDataPath(collection: Collection, key: string) { if (key === COMMIT_DATE) { diff --git a/core/src/lib/util/validation.util.ts b/core/src/lib/util/validation.util.ts index f0e393ba..37b626b7 100644 --- a/core/src/lib/util/validation.util.ts +++ b/core/src/lib/util/validation.util.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import ValidationErrorTypes from '../../constants/validationErrorTypes'; +import ValidationErrorTypes from '@staticcms/core/constants/validationErrorTypes'; import type { t } from 'react-polyglot'; import type { @@ -10,7 +10,7 @@ import type { UnknownField, ValueOrNestedValue, Widget, -} from '../../interface'; +} from '@staticcms/core/interface'; export function isEmpty(value: ValueOrNestedValue) { return ( diff --git a/core/src/lib/widgets/stringTemplate.ts b/core/src/lib/widgets/stringTemplate.ts index 50196151..e45896f1 100644 --- a/core/src/lib/widgets/stringTemplate.ts +++ b/core/src/lib/widgets/stringTemplate.ts @@ -4,7 +4,7 @@ import truncate from 'lodash/truncate'; import moment from 'moment'; import { basename, dirname, extname } from 'path'; -import type { Entry, EntryData, ObjectValue } from '../../interface'; +import type { Entry, EntryData, ObjectValue } from '@staticcms/core/interface'; const filters = [ { pattern: /^upper$/, transform: (str: string) => str.toUpperCase() }, diff --git a/core/src/lib/widgets/validations.ts b/core/src/lib/widgets/validations.ts index 9583cfb0..2b05741b 100644 --- a/core/src/lib/widgets/validations.ts +++ b/core/src/lib/widgets/validations.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/prefer-default-export */ import isNumber from 'lodash/isNumber'; export function validateMinMax( diff --git a/core/src/locales/bg/index.ts b/core/src/locales/bg/index.ts index 7b9fe377..e488861d 100644 --- a/core/src/locales/bg/index.ts +++ b/core/src/locales/bg/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const bg: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/ca/index.ts b/core/src/locales/ca/index.ts index eac6a17e..71928711 100644 --- a/core/src/locales/ca/index.ts +++ b/core/src/locales/ca/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const ca: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/cs/index.ts b/core/src/locales/cs/index.ts index ec71d3cc..b74a5083 100644 --- a/core/src/locales/cs/index.ts +++ b/core/src/locales/cs/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const cs: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/da/index.ts b/core/src/locales/da/index.ts index c0a74a3f..c60a14c9 100644 --- a/core/src/locales/da/index.ts +++ b/core/src/locales/da/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const da: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/de/index.ts b/core/src/locales/de/index.ts index b21477a2..b5a88ea6 100644 --- a/core/src/locales/de/index.ts +++ b/core/src/locales/de/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const de: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/en/index.ts b/core/src/locales/en/index.ts index a0d0547e..0e043549 100644 --- a/core/src/locales/en/index.ts +++ b/core/src/locales/en/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const en: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/es/index.ts b/core/src/locales/es/index.ts index 69e5857e..3a9f056e 100644 --- a/core/src/locales/es/index.ts +++ b/core/src/locales/es/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const es: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/fr/index.ts b/core/src/locales/fr/index.ts index fd1189a6..ea2d2c64 100644 --- a/core/src/locales/fr/index.ts +++ b/core/src/locales/fr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const fr: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/gr/index.ts b/core/src/locales/gr/index.ts index 3cffa4a9..d9494455 100644 --- a/core/src/locales/gr/index.ts +++ b/core/src/locales/gr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const gr: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/he/index.ts b/core/src/locales/he/index.ts index b8eac06d..8235e814 100644 --- a/core/src/locales/he/index.ts +++ b/core/src/locales/he/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const he: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/hr/index.ts b/core/src/locales/hr/index.ts index 0d76cb7e..337a65c5 100644 --- a/core/src/locales/hr/index.ts +++ b/core/src/locales/hr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const hr: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/hu/index.ts b/core/src/locales/hu/index.ts index 744214d7..7f074ac4 100644 --- a/core/src/locales/hu/index.ts +++ b/core/src/locales/hu/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const hu: LocalePhrasesRoot = { app: { diff --git a/core/src/locales/index.ts b/core/src/locales/index.ts index 369f8553..8f5b5e92 100644 --- a/core/src/locales/index.ts +++ b/core/src/locales/index.ts @@ -31,7 +31,7 @@ import he from './he'; import type { LocalePhrasesRoot } from '../interface'; -export const locales: Record = { +const locales: Record = { cs, da, de, @@ -63,3 +63,5 @@ export const locales: Record = { zh_Hans, he, }; + +export default locales; diff --git a/core/src/locales/it/index.ts b/core/src/locales/it/index.ts index 8d0dc4d4..1f916e6e 100644 --- a/core/src/locales/it/index.ts +++ b/core/src/locales/it/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const it: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/ja/index.ts b/core/src/locales/ja/index.ts index a3efeaf3..87518a1c 100644 --- a/core/src/locales/ja/index.ts +++ b/core/src/locales/ja/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const ja: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/ko/index.ts b/core/src/locales/ko/index.ts index 0c167634..9a3df24e 100644 --- a/core/src/locales/ko/index.ts +++ b/core/src/locales/ko/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const ko: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/lt/index.ts b/core/src/locales/lt/index.ts index 1d8d3fd5..46e2c41b 100644 --- a/core/src/locales/lt/index.ts +++ b/core/src/locales/lt/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const lt: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/nb_no/index.ts b/core/src/locales/nb_no/index.ts index a651772e..d675dae9 100644 --- a/core/src/locales/nb_no/index.ts +++ b/core/src/locales/nb_no/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const nb_no: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/nl/index.ts b/core/src/locales/nl/index.ts index cb664208..14309f5d 100644 --- a/core/src/locales/nl/index.ts +++ b/core/src/locales/nl/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const nl: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/nn_no/index.ts b/core/src/locales/nn_no/index.ts index 432b4d46..49e622fe 100644 --- a/core/src/locales/nn_no/index.ts +++ b/core/src/locales/nn_no/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const nn_no: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/pl/index.ts b/core/src/locales/pl/index.ts index 402f4625..91a7c6c7 100644 --- a/core/src/locales/pl/index.ts +++ b/core/src/locales/pl/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const pl: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/pt/index.ts b/core/src/locales/pt/index.ts index 20d47bd2..f16e43f9 100644 --- a/core/src/locales/pt/index.ts +++ b/core/src/locales/pt/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const pt: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/ro/index.ts b/core/src/locales/ro/index.ts index 87ec11d7..449b3647 100644 --- a/core/src/locales/ro/index.ts +++ b/core/src/locales/ro/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const ro: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/ru/index.ts b/core/src/locales/ru/index.ts index eac2123a..4c801d69 100644 --- a/core/src/locales/ru/index.ts +++ b/core/src/locales/ru/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const ru: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/sv/index.ts b/core/src/locales/sv/index.ts index 42a7e4a9..86251d73 100644 --- a/core/src/locales/sv/index.ts +++ b/core/src/locales/sv/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const sv: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/th/index.ts b/core/src/locales/th/index.ts index 2ff57290..1beb4b19 100644 --- a/core/src/locales/th/index.ts +++ b/core/src/locales/th/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const th: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/tr/index.ts b/core/src/locales/tr/index.ts index b86f2be9..147f44f3 100644 --- a/core/src/locales/tr/index.ts +++ b/core/src/locales/tr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const tr: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/uk/index.ts b/core/src/locales/uk/index.ts index 52760107..e4765c6b 100644 --- a/core/src/locales/uk/index.ts +++ b/core/src/locales/uk/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const uk: LocalePhrasesRoot = { app: { diff --git a/core/src/locales/vi/index.ts b/core/src/locales/vi/index.ts index 651c8896..e928e8f3 100644 --- a/core/src/locales/vi/index.ts +++ b/core/src/locales/vi/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const vi: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/zh_Hans/index.ts b/core/src/locales/zh_Hans/index.ts index 262d769d..d3189e99 100644 --- a/core/src/locales/zh_Hans/index.ts +++ b/core/src/locales/zh_Hans/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const zh_Hans: LocalePhrasesRoot = { auth: { diff --git a/core/src/locales/zh_Hant/index.ts b/core/src/locales/zh_Hant/index.ts index c29b5fcc..a34ee437 100644 --- a/core/src/locales/zh_Hant/index.ts +++ b/core/src/locales/zh_Hant/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '../../interface'; +import type { LocalePhrasesRoot } from '@staticcms/core/interface'; const zh_Hant: LocalePhrasesRoot = { auth: { diff --git a/core/src/media-libraries/cloudinary/index.ts b/core/src/media-libraries/cloudinary/index.ts index b314c4ba..ba0df7c4 100644 --- a/core/src/media-libraries/cloudinary/index.ts +++ b/core/src/media-libraries/cloudinary/index.ts @@ -1,8 +1,8 @@ import pick from 'lodash/pick'; -import { loadScript } from '../../lib/util'; +import { loadScript } from '@staticcms/core/lib/util'; -import type { MediaLibraryInitOptions, MediaLibraryInstance } from '../../interface'; +import type { MediaLibraryInitOptions, MediaLibraryInstance } from '@staticcms/core/interface'; interface GetAssetOptions { use_secure_url: boolean; diff --git a/core/src/media-libraries/uploadcare/index.ts b/core/src/media-libraries/uploadcare/index.ts index bd834f7c..7d7ac7fa 100644 --- a/core/src/media-libraries/uploadcare/index.ts +++ b/core/src/media-libraries/uploadcare/index.ts @@ -1,7 +1,7 @@ import uploadcare from 'uploadcare-widget'; import uploadcareTabEffects from 'uploadcare-widget-tab-effects'; -import type { MediaLibraryInitOptions, MediaLibraryInstance } from '../../interface'; +import type { MediaLibraryInitOptions, MediaLibraryInstance } from '@staticcms/core/interface'; declare global { interface Window { diff --git a/core/src/reducers/entryDraft.ts b/core/src/reducers/entryDraft.ts index c2193956..1d6ae01e 100644 --- a/core/src/reducers/entryDraft.ts +++ b/core/src/reducers/entryDraft.ts @@ -154,7 +154,7 @@ function entryDraftReducer( return state; } - const { path, field, value, entry, i18n } = action.payload; + const { path, field, value, i18n } = action.payload; const dataPath = (i18n && getDataPath(i18n.currentLocale, i18n.defaultLocale)) || ['data']; newState = { @@ -170,7 +170,7 @@ function entryDraftReducer( return { ...newState, - hasChanged: !entry || !isEqual(newData, get(newState.original, dataPath)), + hasChanged: !newState.original || !isEqual(newData, get(newState.original, dataPath)), }; } diff --git a/core/src/reducers/mediaLibrary.ts b/core/src/reducers/mediaLibrary.ts index 8dab1de1..a612fcf6 100644 --- a/core/src/reducers/mediaLibrary.ts +++ b/core/src/reducers/mediaLibrary.ts @@ -320,4 +320,8 @@ export function selectMediaDisplayURL(state: RootState, id: string) { return displayUrlState; } +export const selectMediaPath = (controlID: string) => (state: RootState) => { + return state.mediaLibrary.controlMedia[controlID]; +}; + export default mediaLibrary; diff --git a/core/src/store/hooks.ts b/core/src/store/hooks.ts index f4515ae0..a67c3306 100644 --- a/core/src/store/hooks.ts +++ b/core/src/store/hooks.ts @@ -1,7 +1,11 @@ import { useDispatch, useSelector } from 'react-redux'; -import type { RootState, AppDispatch } from './index'; +import type { RootState } from './index'; import type { TypedUseSelectorHook } from 'react-redux'; +import type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type AppDispatch = ThunkDispatch; export const useAppDispatch = () => useDispatch(); export const useAppSelector: TypedUseSelectorHook = useSelector; diff --git a/core/src/types/what-the-diff.d.ts b/core/src/types/what-the-diff.d.ts index 1f3bdeab..268f40d3 100644 --- a/core/src/types/what-the-diff.d.ts +++ b/core/src/types/what-the-diff.d.ts @@ -1,4 +1,5 @@ declare module 'what-the-diff' { + // eslint-disable-next-line import/prefer-default-export export const parse: ( rawDiff: string, ) => { oldPath?: string; newPath?: string; binary: boolean; status: string }[]; diff --git a/core/src/valueObjects/Entry.ts b/core/src/valueObjects/createEntry.ts similarity index 90% rename from core/src/valueObjects/Entry.ts rename to core/src/valueObjects/createEntry.ts index 2996bb4d..85ae52ae 100644 --- a/core/src/valueObjects/Entry.ts +++ b/core/src/valueObjects/createEntry.ts @@ -20,7 +20,12 @@ interface Options { }; } -export function createEntry(collection: string, slug = '', path = '', options: Options = {}) { +export default function createEntry( + collection: string, + slug = '', + path = '', + options: Options = {}, +) { const returnObj: Entry = { collection, slug, diff --git a/core/src/valueObjects/index.ts b/core/src/valueObjects/index.ts new file mode 100644 index 00000000..a06a73e4 --- /dev/null +++ b/core/src/valueObjects/index.ts @@ -0,0 +1,3 @@ +export * from './AssetProxy'; +export { default as AssetProxy } from './AssetProxy'; +export { default as createEntry } from './createEntry'; diff --git a/core/src/widgets/boolean/BooleanControl.tsx b/core/src/widgets/boolean/BooleanControl.tsx index fde5c7f1..cb0690a6 100644 --- a/core/src/widgets/boolean/BooleanControl.tsx +++ b/core/src/widgets/boolean/BooleanControl.tsx @@ -1,17 +1,17 @@ -import { colors } from '@mui/material'; +import { red } from '@mui/material/colors'; import FormControlLabel from '@mui/material/FormControlLabel'; import Switch from '@mui/material/Switch'; import React, { useCallback, useEffect, useState } from 'react'; -import type { ChangeEvent } from 'react'; -import type { BooleanField, WidgetControlProps } from '../../interface'; +import type { BooleanField, WidgetControlProps } from '@staticcms/core/interface'; +import type { ChangeEvent, FC } from 'react'; -const BooleanControl = ({ +const BooleanControl: FC> = ({ value, label, onChange, hasErrors, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value); const handleChange = useCallback( @@ -39,7 +39,7 @@ const BooleanControl = ({ } label={label} labelPlacement="start" - sx={{ marginLeft: '4px', color: hasErrors ? colors.red[500] : undefined }} + sx={{ marginLeft: '4px', color: hasErrors ? red[500] : undefined }} /> ); }; diff --git a/core/src/widgets/boolean/index.ts b/core/src/widgets/boolean/index.ts index a7df1144..f343d5ef 100644 --- a/core/src/widgets/boolean/index.ts +++ b/core/src/widgets/boolean/index.ts @@ -1,6 +1,6 @@ import controlComponent from './BooleanControl'; -import type { BooleanField, WidgetParam } from '../../interface'; +import type { BooleanField, WidgetParam } from '@staticcms/core/interface'; const BooleanWidget = (): WidgetParam => { return { @@ -9,4 +9,6 @@ const BooleanWidget = (): WidgetParam => { }; }; +export { controlComponent as BooleanControl }; + export default BooleanWidget; diff --git a/core/src/widgets/code/CodeControl.tsx b/core/src/widgets/code/CodeControl.tsx index 47aa47a0..baeab28d 100644 --- a/core/src/widgets/code/CodeControl.tsx +++ b/core/src/widgets/code/CodeControl.tsx @@ -1,23 +1,19 @@ -import { ClassNames } from '@emotion/react'; import { styled } from '@mui/material/styles'; -import 'codemirror/keymap/emacs'; -import 'codemirror/keymap/sublime'; -import 'codemirror/keymap/vim'; -import codeMirrorStyles from 'codemirror/lib/codemirror.css'; -import materialTheme from 'codemirror/theme/material.css'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { UnControlled as ReactCodeMirror } from 'react-codemirror2'; +import { loadLanguage } from '@uiw/codemirror-extensions-langs'; +import CodeMirror from '@uiw/react-codemirror'; +import React, { useCallback, useMemo, useState } from 'react'; import uuid from 'uuid/v4'; -import ObjectWidgetTopBar from '../../components/UI/ObjectWidgetTopBar'; -import Outline from '../../components/UI/Outline'; -import transientOptions from '../../lib/util/transientOptions'; -import languageData from './data/languages'; +import ObjectWidgetTopBar from '@staticcms/core/components/UI/ObjectWidgetTopBar'; +import Outline from '@staticcms/core/components/UI/Outline'; +import transientOptions from '@staticcms/core/lib/util/transientOptions'; +import languages from './data/languages'; import SettingsButton from './SettingsButton'; import SettingsPane from './SettingsPane'; -import type { Editor } from 'codemirror'; -import type { CodeField, WidgetControlProps } from '../../interface'; +import type { CodeField, WidgetControlProps } from '@staticcms/core/interface'; +import type { LanguageName } from '@uiw/codemirror-extensions-langs'; +import type { FC } from 'react'; const StyledCodeControlWrapper = styled('div')` display: flex; @@ -35,7 +31,8 @@ const StyledCodeControlContent = styled( transientOptions, )( ({ $collapsed }) => ` - display: flex; + display: block; + width: 100%; ${ $collapsed ? ` @@ -46,26 +43,6 @@ const StyledCodeControlContent = styled( `, ); -interface CodeLanguage { - label: string; - name: string; - mode: string; - mimeType: string; -} - -const languages: CodeLanguage[] = languageData.map(lang => ({ - label: lang.label, - name: lang.identifiers[0], - mode: lang.codemirror_mode, - mimeType: lang.codemirror_mime_type, -})); - -const styleString = ` - padding: 0; -`; - -const defaultLang = { name: '', mode: '', label: 'none' }; - function valueToOption(val: string | { name: string; label?: string }): { value: string; label: string; @@ -76,25 +53,42 @@ function valueToOption(val: string | { name: string; label?: string }): { return { value: val.name, label: val.label || val.name }; } -const modes = languages.map(valueToOption); - -const themes = ['default', 'material']; - -const settingsPersistKeys = { - theme: 'cms.codemirror.theme', - keyMap: 'cms.codemirror.keymap', -}; - -const CodeControl = ({ +const CodeControl: FC> = ({ field, onChange, hasErrors, value, t, -}: WidgetControlProps) => { +}) => { + const keys = useMemo(() => { + const defaults = { + code: 'code', + lang: 'lang', + }; + + const keys = field.keys ?? {}; + return { ...defaults, ...keys }; + }, [field]); + + const valueIsMap = useMemo(() => Boolean(!field.output_code_only), [field.output_code_only]); + const [internalValue, setInternalValue] = useState(value ?? ''); + const [lang, setLang] = useState(() => { + return valueIsMap && typeof internalValue !== 'string' + ? internalValue && internalValue[keys.lang] + : field.default_language ?? ''; + }); const [collapsed, setCollapsed] = useState(false); + const [hasFocus, setHasFocus] = useState(false); + const handleFocus = useCallback(() => { + setHasFocus(true); + }, []); + + const handleBlur = useCallback(() => { + setHasFocus(false); + }, []); + const handleCollapseToggle = useCallback(() => { setCollapsed(!collapsed); }, [collapsed]); @@ -107,140 +101,8 @@ const CodeControl = ({ [onChange], ); - // If the value is a map, keys can be customized via config. - const getKeys = useCallback((field: CodeField) => { - const defaults = { - code: 'code', - lang: 'lang', - }; - - const keys = field.keys ?? {}; - return { ...defaults, ...keys }; - }, []); - - const keys = useMemo(() => getKeys(field), [field, getKeys]); - - // Determine if the persisted value is a map rather than a plain string. A map value allows both the code string and the language to be persisted. - const valueIsMap = useMemo(() => Boolean(!field.output_code_only), [field.output_code_only]); - - // This widget is not fully controlled, it only takes a value through props upon initialization. - const getInitialLang = useCallback(() => { - return valueIsMap && typeof internalValue !== 'string' - ? internalValue && internalValue[keys.lang] - : field.default_language; - }, [field.default_language, keys.lang, internalValue, valueIsMap]); - - const [codemirrorEditor, setCodemirrorEditor] = useState(null); - const [lang, setLang] = useState(getInitialLang() ?? ''); - const [keyMap, setKeyMap] = useState( - localStorage.getItem(settingsPersistKeys['keyMap']) || 'default', - ); - const [settingsVisible, setSettingsVisible] = useState(false); - const [codemirrorKey, setCodemirrorKey] = useState(uuid()); - const [theme, setTheme] = useState( - localStorage.getItem(settingsPersistKeys['theme']) || themes[themes.length - 1], - ); - const [lastKnownValue, setLastKnownValue] = useState( - (internalValue && typeof internalValue === 'object' - ? internalValue[keys.code] - : internalValue) ?? '', - ); - - const getLanguageByName = useCallback((name: string) => { - return languages.find(lang => lang.name === name); - }, []); - - const handleChangeCodemirrorProps = useCallback( - async (changedProps: { lang?: string; theme?: string; keyMap?: string }) => { - if (changedProps.lang) { - const { mode } = getLanguageByName(changedProps.lang) || {}; - if (mode) { - require(`codemirror/mode/${mode}/${mode}.js`); - } - } - - // Changing CodeMirror props requires re-initializing the - // detached/uncontrolled React CodeMirror component, so here we save and - // restore the selections and cursor position after the state change. - if (codemirrorEditor) { - const cursor = codemirrorEditor.getDoc().getCursor(); - const selections = codemirrorEditor.getDoc().listSelections(); - setCodemirrorKey(uuid()); - codemirrorEditor.getDoc().setCursor(cursor); - codemirrorEditor.getDoc().setSelections(selections); - } - - if (changedProps.theme) { - localStorage.setItem(settingsPersistKeys.theme, changedProps.theme); - } - - if (changedProps.keyMap) { - localStorage.setItem(settingsPersistKeys.keyMap, changedProps.keyMap); - } - - // Only persist the language change if supported - requires the value to be - // a map rather than just a code string. - if (changedProps.lang && valueIsMap) { - handleOnChange({ - ...(typeof internalValue !== 'string' ? internalValue : {}), - lang: changedProps.lang, - }); - } - }, - [codemirrorEditor, getLanguageByName, handleOnChange, internalValue, valueIsMap], - ); - - const [prevLang, setPrevLang] = useState(); - useEffect(() => { - if (prevLang !== lang) { - setPrevLang(lang); - setTimeout(() => { - handleChangeCodemirrorProps({ lang }); - }); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [lang]); - - const [prevTheme, setPrevTheme] = useState(); - useEffect(() => { - if (prevTheme !== theme) { - setPrevTheme(theme); - setTimeout(() => { - handleChangeCodemirrorProps({ theme }); - }); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [theme]); - - const [prevKeyMap, setPrevKeyMap] = useState(); - useEffect(() => { - if (prevKeyMap !== keyMap) { - setPrevKeyMap(keyMap); - setTimeout(() => { - handleChangeCodemirrorProps({ keyMap }); - }); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [keyMap]); - - const getKeyMapOptions = useCallback(() => { - return ['emacs', 'vim', 'sublime', 'default'].map(keyMap => ({ value: keyMap, label: keyMap })); - }, []); - - // If `allow_language_selection` is not set, default to true. Otherwise, use its value. - const allowLanguageSelection = useMemo( - () => Boolean(field.allow_language_selection), - [field.allow_language_selection], - ); - const handleChange = useCallback( (newValue: string) => { - if (!codemirrorEditor) { - return; - } - - setLastKnownValue(newValue); - if (valueIsMap) { handleOnChange({ ...(typeof internalValue !== 'string' ? internalValue : {}), @@ -249,31 +111,69 @@ const CodeControl = ({ } handleOnChange(newValue); }, - [codemirrorEditor, handleOnChange, internalValue, valueIsMap], + [handleOnChange, internalValue, valueIsMap], ); + const loadedLangExtension = useMemo(() => { + if (!lang) { + return null; + } + return loadLanguage(lang as LanguageName); + }, [lang]); + + const extensions = useMemo(() => { + if (!loadedLangExtension) { + return []; + } + + return [loadedLangExtension]; + }, [loadedLangExtension]); + + const code = useMemo(() => { + if (typeof internalValue === 'string') { + return internalValue; + } + + return internalValue[keys.code]; + }, [internalValue, keys.code]); + + const [settingsVisible, setSettingsVisible] = useState(false); const showSettings = useCallback(() => { setSettingsVisible(true); }, []); const hideSettings = useCallback(() => { - if (settingsVisible) { - setSettingsVisible(false); - } - codemirrorEditor?.focus(); - }, [codemirrorEditor, settingsVisible]); - - const handleFocus = useCallback(() => { - hideSettings(); - }, [hideSettings]); - - const langInfo = useMemo(() => getLanguageByName(lang), [getLanguageByName, lang]); - const mode = langInfo?.mimeType || langInfo?.mode; + setSettingsVisible(false); + }, []); const uniqueId = useMemo(() => uuid(), []); + // If `allow_language_selection` is not set, default to true. Otherwise, use its value. + const allowLanguageSelection = useMemo( + () => Boolean(field.allow_language_selection), + [field.allow_language_selection], + ); + + const availableLanguages = languages.map(language => + valueToOption({ name: language.codemirror_mode, label: language.label }), + ); + return ( + {allowLanguageSelection ? ( + !settingsVisible ? ( + + ) : ( + setLang(newLang)} + /> + ) + ) : null} - - {({ css, cx }) => ( -

    - {!settingsVisible && } - {settingsVisible && ( - t === theme) ?? themes[0]} - themes={themes} - keyMap={{ value: keyMap, label: keyMap }} - keyMaps={getKeyMapOptions()} - allowLanguageSelection={allowLanguageSelection} - onChangeLang={newLang => setLang(newLang)} - onChangeTheme={newTheme => setTheme(newTheme)} - onChangeKeyMap={newKeyMap => setKeyMap(newKeyMap)} - /> - )} - { - setCodemirrorEditor(cm); - }} - value={lastKnownValue} - onChange={(_editor, _data, newValue) => handleChange(newValue)} - onFocus={handleFocus} - /> -
    - )} - + - + ); }; diff --git a/core/src/widgets/code/CodePreview.tsx b/core/src/widgets/code/CodePreview.tsx index afa3b37d..d35706f3 100644 --- a/core/src/widgets/code/CodePreview.tsx +++ b/core/src/widgets/code/CodePreview.tsx @@ -1,9 +1,10 @@ -import React from 'react'; import isString from 'lodash/isString'; +import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { CodeField, WidgetPreviewProps } from '../../interface'; +import type { CodeField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; function toValue(value: string | Record | undefined | null, field: CodeField) { if (isString(value)) { @@ -17,10 +18,10 @@ function toValue(value: string | Record | undefined | null, fiel return ''; } -const CodePreview = ({ +const CodePreview: FC, CodeField>> = ({ value, field, -}: WidgetPreviewProps, CodeField>) => { +}) => { return (
    diff --git a/core/src/widgets/code/SettingsButton.tsx b/core/src/widgets/code/SettingsButton.tsx
    index d1fcd81b..1280dd32 100644
    --- a/core/src/widgets/code/SettingsButton.tsx
    +++ b/core/src/widgets/code/SettingsButton.tsx
    @@ -4,40 +4,30 @@ import IconButton from '@mui/material/IconButton';
     import { styled } from '@mui/material/styles';
     import React from 'react';
     
    -import { zIndex } from '../../components/UI/styles';
    -import { transientOptions } from '../../lib';
    +import { zIndex } from '@staticcms/core/components/UI/styles';
     
    -import type { MouseEvent } from 'react';
    +import type { FC, MouseEvent } from 'react';
     
    -interface StyledSettingsButtonProps {
    -  $showClose: boolean;
    -}
    +const StyledSettingsButton = styled(IconButton)`
    +  position: absolute;
    +  z-index: ${zIndex.zIndex100};
    +  right: 8px;
    +  top: 8px;
    +  opacity: 0.8;
    +  padding: 2px 4px;
    +  line-height: 1;
    +  height: auto;
    +  color: #000;
    +`;
     
    -const StyledSettingsButton = styled(
    -  IconButton,
    -  transientOptions,
    -)(
    -  ({ $showClose }) => `
    -    position: absolute;
    -    z-index: ${zIndex.zIndex100};
    -    right: 8px;
    -    top: 8px;
    -    opacity: 0.8;
    -    padding: 2px 4px;
    -    line-height: 1;
    -    height: auto;
    -    color: ${$showClose ? '#000' : '#fff'};
    -  `,
    -);
    -
    -interface SettingsButtonProps {
    +export interface SettingsButtonProps {
       showClose?: boolean;
       onClick: (event: MouseEvent) => void;
     }
     
    -const SettingsButton = ({ showClose = false, onClick }: SettingsButtonProps) => {
    +const SettingsButton: FC = ({ showClose = false, onClick }) => {
       return (
    -    
    +    
           {showClose ?  : }
         
       );
    diff --git a/core/src/widgets/code/SettingsPane.tsx b/core/src/widgets/code/SettingsPane.tsx
    index a3dfdf97..afe845e6 100644
    --- a/core/src/widgets/code/SettingsPane.tsx
    +++ b/core/src/widgets/code/SettingsPane.tsx
    @@ -6,20 +6,21 @@ import { styled } from '@mui/material/styles';
     import isHotkey from 'is-hotkey';
     import React from 'react';
     
    -import { shadows, zIndex } from '../../components/UI/styles';
    +import { shadows, zIndex } from '@staticcms/core/components/UI/styles';
     import SettingsButton from './SettingsButton';
     
     import type { SelectChangeEvent } from '@mui/material/Select';
    +import type { FC } from 'react';
     
     const SettingsPaneContainer = styled('div')`
       position: absolute;
    -  right: 0;
    +  top: 1px;
    +  bottom: 1px;
    +  right: 1px;
       width: 200px;
       z-index: ${zIndex.zIndex10};
    -  height: 100%;
       background-color: #fff;
       overflow: hidden;
    -  overflow-y: scroll;
       padding: 12px;
       border-radius: 0 3px 3px 0;
       ${shadows.drop};
    @@ -39,7 +40,7 @@ const SettingsSectionTitle = styled('h3')`
     `;
     
     interface SettingsSelectProps {
    -  type: 'mode' | 'theme' | 'keymap';
    +  type: 'language';
       label: string;
       uniqueId: string;
       value: {
    @@ -53,14 +54,14 @@ interface SettingsSelectProps {
       onChange: (newValue: string) => void;
     }
     
    -const SettingsSelect = ({
    +const SettingsSelect: FC = ({
       value,
       label,
       options,
       onChange,
       uniqueId,
       type,
    -}: SettingsSelectProps) => {
    +}) => {
       const handleChange = (event: SelectChangeEvent) => {
         onChange(event.target.value);
       };
    @@ -87,81 +88,40 @@ const SettingsSelect = ({
       );
     };
     
    -interface SettingsPaneProps {
    +export interface SettingsPaneProps {
       hideSettings: () => void;
       uniqueId: string;
    -  modes: {
    +  languages: {
         value: string;
         label: string;
       }[];
    -  mode: {
    +  language: {
         value: string;
         label: string;
       };
    -  theme: string;
    -  themes: string[];
    -  keyMap: { value: string; label: string };
    -  keyMaps: {
    -    value: string;
    -    label: string;
    -  }[];
       allowLanguageSelection: boolean;
    -  onChangeLang: (lang: string) => void;
    -  onChangeTheme: (theme: string) => void;
    -  onChangeKeyMap: (keyMap: string) => void;
    +  onChangeLanguage: (lang: string) => void;
     }
     
    -const SettingsPane = ({
    +const SettingsPane: FC = ({
       hideSettings,
       uniqueId,
    -  modes,
    -  mode,
    -  theme,
    -  themes,
    -  keyMap,
    -  keyMaps,
    -  allowLanguageSelection,
    -  onChangeLang,
    -  onChangeTheme,
    -  onChangeKeyMap,
    -}: SettingsPaneProps) => {
    +  languages,
    +  language,
    +  onChangeLanguage,
    +}) => {
       return (
          isHotkey('esc', e) && hideSettings()}>
           
    -      {allowLanguageSelection && (
    -        <>
    -          Field Settings
    -          
    -        
    -      )}
           <>
    -        Global Settings
    -        {themes && (
    -          <>
    -             ({ value: t, label: t }))}
    -              onChange={onChangeTheme}
    -            />
    -          
    -        )}
    +        Field Settings
             
           
         
    diff --git a/core/src/widgets/code/data/languages.ts b/core/src/widgets/code/data/languages.ts
    index 9f0c2938..e4080b3b 100644
    --- a/core/src/widgets/code/data/languages.ts
    +++ b/core/src/widgets/code/data/languages.ts
    @@ -1,10 +1,10 @@
    -import type { ProcessedCodeLanguage } from '../../../interface';
    +import type { ProcessedCodeLanguage } from '@staticcms/core/interface';
     
     const languages: ProcessedCodeLanguage[] = [
       {
         label: 'AGS Script',
         identifiers: ['ags', 'asc', 'ash'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -13,16 +13,10 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'apl',
         codemirror_mime_type: 'text/apl',
       },
    -  {
    -    label: 'ASN.1',
    -    identifiers: ['asn'],
    -    codemirror_mode: 'asn.1',
    -    codemirror_mime_type: 'text/x-ttcn-asn',
    -  },
       {
         label: 'ASP',
         identifiers: ['asp', 'aspx', 'asax', 'ascx', 'ashx', 'asmx', 'axd'],
    -    codemirror_mode: 'htmlembedded',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'application/x-aspx',
       },
       {
    @@ -34,7 +28,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'AngelScript',
         identifiers: ['angelscript', 'as'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -46,13 +40,13 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Apex',
         identifiers: ['apex', 'cls'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-java',
       },
       {
         label: 'Asymptote',
         identifiers: ['asymptote', 'asy'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-kotlin',
       },
       {
    @@ -70,13 +64,13 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'C',
         identifiers: ['c', 'cats', 'h', 'idc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
         label: 'C#',
         identifiers: ['csharp', 'cs', 'cake', 'csx'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'csharp',
         codemirror_mime_type: 'text/x-csharp',
       },
       {
    @@ -98,7 +92,7 @@ const languages: ProcessedCodeLanguage[] = [
           'tcc',
           'tpp',
         ],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'cpp',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -146,7 +140,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'ChucK',
         identifiers: ['chuck', 'ck'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-java',
       },
       {
    @@ -155,12 +149,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'clojure',
         codemirror_mime_type: 'text/x-clojure',
       },
    -  {
    -    label: 'Closure Templates',
    -    identifiers: ['soy'],
    -    codemirror_mode: 'soy',
    -    codemirror_mime_type: 'text/x-soy',
    -  },
       {
         label: 'Cloud Firestore Security Rules',
         identifiers: [],
    @@ -176,7 +164,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Common Lisp',
         identifiers: ['lisp', 'asd', 'cl', 'l', 'lsp', 'ny', 'podsl', 'sexp'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
    @@ -200,7 +188,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Cuda',
         identifiers: ['cuda', 'cu', 'cuh'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -224,7 +212,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'DTrace',
         identifiers: ['dtrace', 'd'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
    @@ -272,7 +260,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'EQ',
         identifiers: ['eq'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csharp',
       },
       {
    @@ -302,7 +290,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Edje Data Collection',
         identifiers: ['edc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -320,7 +308,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Emacs Lisp',
         identifiers: ['elisp', 'emacs', 'el'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
    @@ -335,12 +323,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'erlang',
         codemirror_mime_type: 'text/x-erlang',
       },
    -  {
    -    label: 'F#',
    -    identifiers: ['fsharp', 'fs', 'fsi', 'fsx'],
    -    codemirror_mode: 'mllike',
    -    codemirror_mime_type: 'text/x-fsharp',
    -  },
       {
         label: 'Factor',
         identifiers: ['factor'],
    @@ -362,7 +344,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'GCC Machine Description',
         identifiers: ['md'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
    @@ -374,7 +356,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Game Maker Language',
         identifiers: ['gml'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -431,12 +413,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'groovy',
         codemirror_mime_type: 'text/x-groovy',
       },
    -  {
    -    label: 'Groovy Server Pages',
    -    identifiers: ['gsp'],
    -    codemirror_mode: 'htmlembedded',
    -    codemirror_mime_type: 'application/x-jsp',
    -  },
       {
         label: 'HCL',
         identifiers: ['hcl', 'terraform', 'tf', 'tfvars', 'workflow'],
    @@ -446,31 +422,25 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'HTML',
         identifiers: ['html', 'xhtml', 'htm', 'inc', 'st', 'xht'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
    -  {
    -    label: 'HTML+Django',
    -    identifiers: ['django', 'htmldjango', 'njk', 'nunjucks', 'jinja', 'mustache'],
    -    codemirror_mode: 'django',
    -    codemirror_mime_type: 'text/x-django',
    -  },
       {
         label: 'HTML+ECR',
         identifiers: ['ecr'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
         label: 'HTML+EEX',
         identifiers: ['eex'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
         label: 'HTML+ERB',
         identifiers: ['erb'],
    -    codemirror_mode: 'htmlembedded',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'application/x-erb',
       },
       {
    @@ -482,7 +452,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'HTML+Razor',
         identifiers: ['razor', 'cshtml'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
    @@ -497,12 +467,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'php',
         codemirror_mime_type: 'application/x-httpd-php',
       },
    -  {
    -    label: 'Haml',
    -    identifiers: ['haml'],
    -    codemirror_mode: 'haml',
    -    codemirror_mime_type: 'text/x-haml',
    -  },
       {
         label: 'Haskell',
         identifiers: ['haskell', 'hs', 'hsc'],
    @@ -518,7 +482,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'HolyC',
         identifiers: ['holyc', 'hc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
    @@ -599,7 +563,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Java',
         identifiers: ['java'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'java',
         codemirror_mime_type: 'text/x-java',
       },
       {
    @@ -611,7 +575,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Java Server Pages',
         identifiers: ['jsp'],
    -    codemirror_mode: 'htmlembedded',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'application/x-jsp',
       },
       {
    @@ -662,25 +626,25 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'KiCad Layout',
         identifiers: ['pcbnew'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
         label: 'Kit',
         identifiers: ['kit'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
         label: 'Kotlin',
         identifiers: ['kotlin', 'kt', 'ktm', 'kts'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'kotlin',
         codemirror_mime_type: 'text/x-kotlin',
       },
       {
         label: 'LFE',
         identifiers: ['lfe'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
    @@ -695,12 +659,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'xml',
         codemirror_mime_type: 'text/xml',
       },
    -  {
    -    label: 'Latte',
    -    identifiers: ['latte'],
    -    codemirror_mode: 'smarty',
    -    codemirror_mime_type: 'text/x-smarty',
    -  },
       {
         label: 'Less',
         identifiers: ['less'],
    @@ -710,7 +668,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Literate Haskell',
         identifiers: ['lhaskell', 'lhs'],
    -    codemirror_mode: 'haskell-literate',
    +    codemirror_mode: 'haskell',
         codemirror_mime_type: 'text/x-literate-haskell',
       },
       {
    @@ -746,7 +704,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'MTML',
         identifiers: ['mtml'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
    @@ -776,13 +734,13 @@ const languages: ProcessedCodeLanguage[] = [
           'ronn',
           'workbook',
         ],
    -    codemirror_mode: 'gfm',
    +    codemirror_mode: 'markdown',
         codemirror_mime_type: 'text/x-gfm',
       },
       {
         label: 'Marko',
         identifiers: ['marko', 'markojs'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
    @@ -806,7 +764,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Metal',
         identifiers: ['metal'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-c++src',
       },
       {
    @@ -830,13 +788,13 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'NetLogo',
         identifiers: ['netlogo', 'nlogo'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
         label: 'NewLisp',
         identifiers: ['newlisp', 'nl', 'lisp', 'lsp'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
    @@ -857,28 +815,22 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'python',
         codemirror_mime_type: 'text/x-python',
       },
    -  {
    -    label: 'OCaml',
    -    identifiers: ['ocaml', 'ml', 'eliom', 'eliomi', 'mli', 'mll', 'mly'],
    -    codemirror_mode: 'mllike',
    -    codemirror_mime_type: 'text/x-ocaml',
    -  },
       {
         label: 'Objective-C',
         identifiers: ['objc', 'objectivec', 'm', 'h'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-objectivec',
       },
       {
         label: 'Objective-C++',
         identifiers: ['mm'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-objectivec',
       },
       {
         label: 'OpenCL',
         identifiers: ['opencl', 'cl'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
    @@ -973,15 +925,9 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Public Key',
         identifiers: ['asc', 'pub'],
    -    codemirror_mode: 'asciiarmor',
    +    codemirror_mode: 'asciiArmor',
         codemirror_mime_type: 'application/pgp',
       },
    -  {
    -    label: 'Pug',
    -    identifiers: ['pug', 'jade'],
    -    codemirror_mode: 'pug',
    -    codemirror_mime_type: 'text/x-pug',
    -  },
       {
         label: 'Puppet',
         identifiers: ['puppet', 'pp'],
    @@ -1035,21 +981,15 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'RHTML',
         identifiers: ['rhtml'],
    -    codemirror_mode: 'htmlembedded',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'application/x-erb',
       },
       {
         label: 'RMarkdown',
         identifiers: ['rmarkdown', 'rmd'],
    -    codemirror_mode: 'gfm',
    +    codemirror_mode: 'markdown',
         codemirror_mime_type: 'text/x-gfm',
       },
    -  {
    -    label: 'RPM Spec',
    -    identifiers: ['specfile', 'spec'],
    -    codemirror_mode: 'rpm',
    -    codemirror_mime_type: 'text/x-rpm-spec',
    -  },
       {
         label: 'Reason',
         identifiers: ['reason', 're', 'rei'],
    @@ -1157,7 +1097,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'SRecode Template',
         identifiers: ['srt'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
       {
    @@ -1187,7 +1127,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Scala',
         identifiers: ['scala', 'kojo', 'sbt', 'sc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'scala',
         codemirror_mime_type: 'text/x-scala',
       },
       {
    @@ -1220,40 +1160,22 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'shell',
         codemirror_mime_type: 'text/x-sh',
       },
    -  {
    -    label: 'Slim',
    -    identifiers: ['slim'],
    -    codemirror_mode: 'slim',
    -    codemirror_mime_type: 'text/x-slim',
    -  },
       {
         label: 'Smalltalk',
         identifiers: ['smalltalk', 'squeak', 'st', 'cs'],
         codemirror_mode: 'smalltalk',
         codemirror_mime_type: 'text/x-stsrc',
       },
    -  {
    -    label: 'Smarty',
    -    identifiers: ['smarty', 'tpl'],
    -    codemirror_mode: 'smarty',
    -    codemirror_mime_type: 'text/x-smarty',
    -  },
       {
         label: 'Squirrel',
         identifiers: ['squirrel', 'nut'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'squirrel',
         codemirror_mime_type: 'text/x-c++src',
       },
    -  {
    -    label: 'Standard ML',
    -    identifiers: ['sml', 'ML', 'fun', 'sig'],
    -    codemirror_mode: 'mllike',
    -    codemirror_mime_type: 'text/x-ocaml',
    -  },
       {
         label: 'Svelte',
         identifiers: ['svelte'],
    -    codemirror_mode: 'htmlmixed',
    +    codemirror_mode: 'html',
         codemirror_mime_type: 'text/html',
       },
       {
    @@ -1332,12 +1254,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'turtle',
         codemirror_mime_type: 'text/turtle',
       },
    -  {
    -    label: 'Twig',
    -    identifiers: ['twig'],
    -    codemirror_mode: 'twig',
    -    codemirror_mime_type: 'text/x-twig',
    -  },
       {
         label: 'TypeScript',
         identifiers: ['typescript', 'ts'],
    @@ -1347,7 +1263,7 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Unified Parallel C',
         identifiers: ['upc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
    @@ -1359,13 +1275,13 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'Uno',
         identifiers: ['uno'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csharp',
       },
       {
         label: 'UnrealScript',
         identifiers: ['unrealscript', 'uc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-java',
       },
       {
    @@ -1401,15 +1317,9 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'WebAssembly',
         identifiers: ['webassembly', 'wast', 'wasm', 'wat'],
    -    codemirror_mode: 'commonlisp',
    +    codemirror_mode: 'commonLisp',
         codemirror_mime_type: 'text/x-common-lisp',
       },
    -  {
    -    label: 'WebIDL',
    -    identifiers: ['webidl'],
    -    codemirror_mode: 'webidl',
    -    codemirror_mime_type: 'text/x-webidl',
    -  },
       {
         label: 'Windows Registry Entries',
         identifiers: ['reg'],
    @@ -1419,19 +1329,19 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'X BitMap',
         identifiers: ['xbm'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
         label: 'X PixMap',
         identifiers: ['xpm', 'pm'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
         label: 'XC',
         identifiers: ['xc'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
    @@ -1560,13 +1470,13 @@ const languages: ProcessedCodeLanguage[] = [
       {
         label: 'XQuery',
         identifiers: ['xquery', 'xq', 'xql', 'xqm', 'xqy'],
    -    codemirror_mode: 'xquery',
    +    codemirror_mode: 'xQuery',
         codemirror_mime_type: 'application/xquery',
       },
       {
         label: 'XS',
         identifiers: ['xs'],
    -    codemirror_mode: 'clike',
    +    codemirror_mode: 'c',
         codemirror_mime_type: 'text/x-csrc',
       },
       {
    @@ -1587,12 +1497,6 @@ const languages: ProcessedCodeLanguage[] = [
         codemirror_mode: 'clojure',
         codemirror_mime_type: 'text/x-clojure',
       },
    -  {
    -    label: 'reStructuredText',
    -    identifiers: ['restructuredtext', 'rst', 'rest'],
    -    codemirror_mode: 'rst',
    -    codemirror_mime_type: 'text/x-rst',
    -  },
       {
         label: 'wisp',
         identifiers: ['wisp'],
    diff --git a/core/src/widgets/code/index.ts b/core/src/widgets/code/index.ts
    index f5dfc999..83884866 100644
    --- a/core/src/widgets/code/index.ts
    +++ b/core/src/widgets/code/index.ts
    @@ -2,7 +2,7 @@ import controlComponent from './CodeControl';
     import previewComponent from './CodePreview';
     import schema from './schema';
     
    -import type { CodeField, WidgetParam } from '../../interface';
    +import type { CodeField, WidgetParam } from '@staticcms/core/interface';
     
     const CodeWidget = (): WidgetParam => {
       return {
    @@ -15,4 +15,10 @@ const CodeWidget = (): WidgetParam> = ({
       field,
       onChange,
       value,
       hasErrors,
       t,
    -}: WidgetControlProps) => {
    +}) => {
       const [collapsed, setCollapsed] = useState(false);
     
       const handleCollapseToggle = useCallback(() => {
    diff --git a/core/src/widgets/colorstring/ColorPreview.tsx b/core/src/widgets/colorstring/ColorPreview.tsx
    index 5f0bcf33..23c00208 100644
    --- a/core/src/widgets/colorstring/ColorPreview.tsx
    +++ b/core/src/widgets/colorstring/ColorPreview.tsx
    @@ -1,10 +1,11 @@
     import React from 'react';
     
    -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer';
    +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer';
     
    -import type { ColorField, WidgetPreviewProps } from '../../interface';
    +import type { ColorField, WidgetPreviewProps } from '@staticcms/core/interface';
    +import type { FC } from 'react';
     
    -const ColorPreview = ({ value }: WidgetPreviewProps) => {
    +const ColorPreview: FC> = ({ value }) => {
       return {value};
     };
     
    diff --git a/core/src/widgets/colorstring/index.ts b/core/src/widgets/colorstring/index.ts
    index e3cc7b42..97e1b3d2 100644
    --- a/core/src/widgets/colorstring/index.ts
    +++ b/core/src/widgets/colorstring/index.ts
    @@ -1,7 +1,7 @@
     import controlComponent from './ColorControl';
     import previewComponent from './ColorPreview';
     
    -import type { ColorField, WidgetParam } from '../../interface';
    +import type { ColorField, WidgetParam } from '@staticcms/core/interface';
     
     const ColorWidget = (): WidgetParam => {
       return {
    @@ -11,4 +11,6 @@ const ColorWidget = (): WidgetParam => {
       };
     };
     
    +export { controlComponent as ColorControl, previewComponent as ColorPreview };
    +
     export default ColorWidget;
    diff --git a/core/src/widgets/datetime/DateTimeControl.tsx b/core/src/widgets/datetime/DateTimeControl.tsx
    index 8cb6dba7..e5ae011d 100644
    --- a/core/src/widgets/datetime/DateTimeControl.tsx
    +++ b/core/src/widgets/datetime/DateTimeControl.tsx
    @@ -13,10 +13,10 @@ import parse from 'date-fns/parse';
     import parseISO from 'date-fns/parseISO';
     import React, { useCallback, useEffect, useMemo, useState } from 'react';
     
    -import { isNotEmpty } from '../../lib/util/string.util';
    +import { isNotEmpty } from '@staticcms/core/lib/util/string.util';
     
    -import type { MouseEvent } from 'react';
    -import type { DateTimeField, TranslatedProps, WidgetControlProps } from '../../interface';
    +import type { DateTimeField, TranslatedProps, WidgetControlProps } from '@staticcms/core/interface';
    +import type { FC, MouseEvent } from 'react';
     
     const StyledNowButton = styled('div')`
       width: fit-content;
    @@ -27,7 +27,7 @@ interface NowButtonProps {
       disabled: boolean;
     }
     
    -function NowButton({ t, handleChange, disabled }: TranslatedProps) {
    +const NowButton: FC> = ({ t, handleChange, disabled }) => {
       const handleClick = useCallback(
         (event: MouseEvent) => {
           event.stopPropagation();
    @@ -49,9 +49,9 @@ function NowButton({ t, handleChange, disabled }: TranslatedProps
         
       );
    -}
    +};
     
    -const DateTimeControl = ({
    +const DateTimeControl: FC> = ({
       field,
       label,
       value,
    @@ -59,7 +59,7 @@ const DateTimeControl = ({
       isDisabled,
       onChange,
       hasErrors,
    -}: WidgetControlProps) => {
    +}) => {
       const { format, dateFormat, timeFormat } = useMemo(() => {
         const format = field.format;
     
    diff --git a/core/src/widgets/datetime/DateTimePreview.tsx b/core/src/widgets/datetime/DateTimePreview.tsx
    index 5821ddca..12b2f01f 100644
    --- a/core/src/widgets/datetime/DateTimePreview.tsx
    +++ b/core/src/widgets/datetime/DateTimePreview.tsx
    @@ -1,11 +1,12 @@
     import React from 'react';
     
    -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer';
    +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer';
     
    -import type { DateTimeField, WidgetPreviewProps } from '../../interface';
    +import type { DateTimeField, WidgetPreviewProps } from '@staticcms/core/interface';
    +import type { FC } from 'react';
     
    -function DatePreview({ value }: WidgetPreviewProps) {
    +const DatePreview: FC> = ({ value }) => {
       return {value ? value.toString() : null};
    -}
    +};
     
     export default DatePreview;
    diff --git a/core/src/widgets/datetime/index.tsx b/core/src/widgets/datetime/index.tsx
    index 684f8725..a84a160f 100644
    --- a/core/src/widgets/datetime/index.tsx
    +++ b/core/src/widgets/datetime/index.tsx
    @@ -2,7 +2,7 @@ import controlComponent from './DateTimeControl';
     import previewComponent from './DateTimePreview';
     import schema from './schema';
     
    -import type { DateTimeField, WidgetParam } from '../../interface';
    +import type { DateTimeField, WidgetParam } from '@staticcms/core/interface';
     
     const DateTimeWidget = (): WidgetParam => {
       return {
    @@ -15,4 +15,10 @@ const DateTimeWidget = (): WidgetParam => {
       };
     };
     
    +export {
    +  controlComponent as DateTimeControl,
    +  previewComponent as DateTimePreview,
    +  schema as DateTimeSchema,
    +};
    +
     export default DateTimeWidget;
    diff --git a/core/src/widgets/file/FilePreview.tsx b/core/src/widgets/file/FilePreview.tsx
    index c174aa10..9eac1bc2 100644
    --- a/core/src/widgets/file/FilePreview.tsx
    +++ b/core/src/widgets/file/FilePreview.tsx
    @@ -1,31 +1,25 @@
    -import { styled } from '@mui/material/styles';
    -import React, { useEffect, useState } from 'react';
    +import React from 'react';
     
    -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer';
    +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer';
    +import useMediaAsset from '@staticcms/core/lib/hooks/useMediaAsset';
     
    -import type { FileOrImageField, GetAssetFunction, WidgetPreviewProps } from '../../interface';
    +import type {
    +  Collection,
    +  Entry,
    +  FileOrImageField,
    +  WidgetPreviewProps,
    +} from '@staticcms/core/interface';
    +import type { FC } from 'react';
     
     interface FileLinkProps {
       value: string;
    -  getAsset: GetAssetFunction;
    +  collection: Collection;
       field: FileOrImageField;
    +  entry: Entry;
     }
     
    -const FileLink = ({ value, getAsset, field }: FileLinkProps) => {
    -  const [assetSource, setAssetSource] = useState('');
    -  useEffect(() => {
    -    if (!value || Array.isArray(value)) {
    -      return;
    -    }
    -
    -    const getImage = async () => {
    -      const asset = (await getAsset(value, field))?.toString() ?? '';
    -      setAssetSource(asset);
    -    };
    -
    -    getImage();
    -    // eslint-disable-next-line react-hooks/exhaustive-deps
    -  }, [value]);
    +const FileLink: FC = ({ value, collection, field, entry }) => {
    +  const assetSource = useMediaAsset(value, collection, field, entry);
     
       return (
         
    @@ -34,48 +28,35 @@ const FileLink = ({ value, getAsset, field }: FileLinkProps) => {
       );
     };
     
    -const StyledFileLink = styled(FileLink)`
    -  display: block;
    -`;
    -
    -interface FileLinkListProps {
    -  values: string[];
    -  getAsset: GetAssetFunction;
    -  field: FileOrImageField;
    -}
    -
    -function FileLinkList({ values, getAsset, field }: FileLinkListProps) {
    -  return (
    -    
    - {values.map(value => ( - - ))} -
    - ); -} - -function FileContent({ +const FileContent: FC> = ({ value, - getAsset, + collection, field, -}: WidgetPreviewProps) { + entry, +}) => { if (!value) { return null; } if (Array.isArray(value)) { - return ; + return ( +
    + {value.map(link => ( + + ))} +
    + ); } - return ; -} + return ; +}; -function FilePreview(props: WidgetPreviewProps) { +const FilePreview: FC> = props => { return ( {props.value ? : null} ); -} +}; export default FilePreview; diff --git a/core/src/widgets/file/index.ts b/core/src/widgets/file/index.ts index 0540c94b..83522d4b 100644 --- a/core/src/widgets/file/index.ts +++ b/core/src/widgets/file/index.ts @@ -1,8 +1,9 @@ -import withFileControl, { getValidValue } from './withFileControl'; import previewComponent from './FilePreview'; import schema from './schema'; +import withFileControl, { getValidFileValue } from './withFileControl'; -import type { FileOrImageField, WidgetParam } from '../../interface'; +import type { WithFileControlProps } from './withFileControl'; +import type { FileOrImageField, WidgetParam } from '@staticcms/core/interface'; const controlComponent = withFileControl(); @@ -13,9 +14,17 @@ const FileWidget = (): WidgetParam => { previewComponent, options: { schema, - getValidValue, + getValidValue: getValidFileValue, }, }; }; +export type { WithFileControlProps }; +export { + withFileControl as withFileControl, + previewComponent as FilePreview, + schema as FileSchema, + getValidFileValue, +}; + export default FileWidget; diff --git a/core/src/widgets/file/withFileControl.tsx b/core/src/widgets/file/withFileControl.tsx index e3897149..d75cc297 100644 --- a/core/src/widgets/file/withFileControl.tsx +++ b/core/src/widgets/file/withFileControl.tsx @@ -8,14 +8,19 @@ import React, { memo, useCallback, useEffect, useMemo, useState } from 'react'; import { SortableContainer, SortableElement } from 'react-sortable-hoc'; import uuid from 'uuid/v4'; -import ObjectWidgetTopBar from '../../components/UI/ObjectWidgetTopBar'; -import Outline from '../../components/UI/Outline'; -import { borders, effects, lengths, shadows } from '../../components/UI/styles'; -import { basename, transientOptions } from '../../lib/util'; -import { isEmpty } from '../../lib/util/string.util'; +import ObjectWidgetTopBar from '@staticcms/core/components/UI/ObjectWidgetTopBar'; +import Outline from '@staticcms/core/components/UI/Outline'; +import { borders, effects, lengths, shadows } from '@staticcms/core/components/UI/styles'; +import useMediaInsert from '@staticcms/core/lib/hooks/useMediaInsert'; +import { basename, transientOptions } from '@staticcms/core/lib/util'; +import { isEmpty } from '@staticcms/core/lib/util/string.util'; -import type { MouseEvent, MouseEventHandler } from 'react'; -import type { FileOrImageField, GetAssetFunction, WidgetControlProps } from '../../interface'; +import type { + FileOrImageField, + GetAssetFunction, + WidgetControlProps, +} from '@staticcms/core/interface'; +import type { FC, MouseEvent, MouseEventHandler } from 'react'; const MAX_DISPLAY_LENGTH = 50; @@ -102,7 +107,7 @@ interface ImageProps { src: string; } -const Image = ({ src }: ImageProps) => { +const Image: FC = ({ src }) => { return ; }; @@ -111,7 +116,7 @@ interface SortableImageButtonsProps { onReplace: MouseEventHandler; } -const SortableImageButtons = ({ onRemove, onReplace }: SortableImageButtonsProps) => { +const SortableImageButtons: FC = ({ onRemove, onReplace }) => { return ( @@ -217,7 +222,7 @@ function isMultiple(value: string | string[] | null | undefined): value is strin return Array.isArray(value); } -export function getValidValue(value: string | string[] | null | undefined) { +export function getValidFileValue(value: string | string[] | null | undefined) { if (value) { return isMultiple(value) ? value.map(v => basename(v)) : basename(value); } @@ -225,318 +230,309 @@ export function getValidValue(value: string | string[] | null | undefined) { return value; } -interface WithImageOptions { +export interface WithFileControlProps { forImage?: boolean; } -export default function withFileControl({ forImage = false }: WithImageOptions = {}) { - const FileControl = memo((props: WidgetControlProps) => { - const { +const withFileControl = ({ forImage = false }: WithFileControlProps = {}) => { + const FileControl: FC> = memo( + ({ value, field, onChange, openMediaLibrary, clearMediaControl, - removeInsertedMedia, removeMediaControl, getAsset, - mediaPaths, hasErrors, t, - } = props; + }) => { + const controlID = useMemo(() => uuid(), []); + const [collapsed, setCollapsed] = useState(false); + const [internalValue, setInternalValue] = useState(value ?? ''); - const controlID = useMemo(() => uuid(), []); - const [collapsed, setCollapsed] = useState(false); - const [internalValue, setInternalValue] = useState(value ?? ''); - - const handleOnChange = useCallback( - (newValue: string | string[]) => { - if (newValue !== internalValue) { - setInternalValue(newValue); - setTimeout(() => { - onChange(newValue); - }); - } - }, - [internalValue, onChange], - ); - - const handleCollapseToggle = useCallback(() => { - setCollapsed(!collapsed); - }, [collapsed]); - - useEffect(() => { - const mediaPath = mediaPaths[controlID]; - if (mediaPath && mediaPath !== internalValue) { - handleOnChange(mediaPath); - } else if (mediaPath && mediaPath === internalValue) { - removeInsertedMedia(controlID); - } - }, [controlID, handleOnChange, internalValue, mediaPaths, removeInsertedMedia]); - - useEffect(() => { - return () => { - removeMediaControl(controlID); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const mediaLibraryFieldOptions = useMemo(() => { - return field.media_library ?? {}; - }, [field.media_library]); - - const config = useMemo( - () => ('config' in mediaLibraryFieldOptions ? mediaLibraryFieldOptions.config : undefined), - [mediaLibraryFieldOptions], - ); - - const allowsMultiple = useMemo(() => { - return config?.multiple ?? false; - }, [config?.multiple]); - - const chooseUrl = useMemo( - () => - 'choose_url' in mediaLibraryFieldOptions && (mediaLibraryFieldOptions.choose_url ?? true), - [mediaLibraryFieldOptions], - ); - - const handleChange = useCallback( - (e: MouseEvent) => { - e.preventDefault(); - return openMediaLibrary({ - controlID, - forImage, - value: internalValue, - allowMultiple: - 'allow_multiple' in mediaLibraryFieldOptions - ? mediaLibraryFieldOptions.allow_multiple ?? true - : true, - config, - field, - }); - }, - [config, controlID, field, mediaLibraryFieldOptions, openMediaLibrary, internalValue], - ); - - const handleUrl = useCallback( - (subject: 'image' | 'file') => (e: MouseEvent) => { - e.preventDefault(); - - const url = window.prompt(t(`editor.editorWidgets.${subject}.promptUrl`)); - - handleOnChange(url ?? ''); - }, - [handleOnChange, t], - ); - - const handleRemove = useCallback( - (e: MouseEvent) => { - e.preventDefault(); - clearMediaControl(controlID); - handleOnChange(''); - }, - [clearMediaControl, controlID, handleOnChange], - ); - - const onRemoveOne = useCallback( - (index: number) => () => { - if (Array.isArray(internalValue)) { - const newValue = [...internalValue]; - newValue.splice(index, 1); - handleOnChange(newValue); - } - }, - [handleOnChange, internalValue], - ); - - const onReplaceOne = useCallback( - (index: number) => () => { - return openMediaLibrary({ - controlID, - forImage, - value: internalValue, - replaceIndex: index, - allowMultiple: false, - config, - field, - }); - }, - [config, controlID, field, openMediaLibrary, internalValue], - ); - - const onSortEnd = useCallback( - ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => { - if (Array.isArray(internalValue)) { - const newValue = arrayMoveImmutable(internalValue, oldIndex, newIndex); - handleOnChange(newValue); - } - }, - [handleOnChange, internalValue], - ); - - const renderFileLink = useCallback((link: string | undefined | null) => { - const size = MAX_DISPLAY_LENGTH; - if (!link || link.length <= size) { - return link; - } - const text = `${link.slice(0, size / 2)}\u2026${link.slice(-(size / 2) + 1)}`; - return ( - - {text} - + const handleOnChange = useCallback( + (newValue: string | string[]) => { + if (newValue !== internalValue) { + setInternalValue(newValue); + setTimeout(() => { + onChange(newValue); + }); + } + }, + [internalValue, onChange], ); - }, []); - const [assetSource, setAssetSource] = useState(''); - useEffect(() => { - if (Array.isArray(internalValue)) { - return; - } + const handleOpenMediaLibrary = useMediaInsert( + internalValue, + { field, controlID }, + handleOnChange, + ); - const getImage = async () => { - const newValue = (await getAsset(internalValue, field))?.toString() ?? ''; - if (newValue !== internalValue) { - setAssetSource(newValue); + const handleCollapseToggle = useCallback(() => { + setCollapsed(!collapsed); + }, [collapsed]); + + useEffect(() => { + return () => { + removeMediaControl(controlID); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const mediaLibraryFieldOptions = useMemo(() => { + return field.media_library ?? {}; + }, [field.media_library]); + + const config = useMemo( + () => ('config' in mediaLibraryFieldOptions ? mediaLibraryFieldOptions.config : undefined), + [mediaLibraryFieldOptions], + ); + + const allowsMultiple = useMemo(() => { + return config?.multiple ?? false; + }, [config?.multiple]); + + const chooseUrl = useMemo( + () => + 'choose_url' in mediaLibraryFieldOptions && (mediaLibraryFieldOptions.choose_url ?? true), + [mediaLibraryFieldOptions], + ); + + const handleUrl = useCallback( + (subject: 'image' | 'file') => (e: MouseEvent) => { + e.preventDefault(); + + const url = window.prompt(t(`editor.editorWidgets.${subject}.promptUrl`)); + + handleOnChange(url ?? ''); + }, + [handleOnChange, t], + ); + + const handleRemove = useCallback( + (e: MouseEvent) => { + e.preventDefault(); + clearMediaControl(controlID); + handleOnChange(''); + }, + [clearMediaControl, controlID, handleOnChange], + ); + + const onRemoveOne = useCallback( + (index: number) => () => { + if (Array.isArray(internalValue)) { + const newValue = [...internalValue]; + newValue.splice(index, 1); + handleOnChange(newValue); + } + }, + [handleOnChange, internalValue], + ); + + const onReplaceOne = useCallback( + (index: number) => () => { + return openMediaLibrary({ + controlID, + forImage, + value: internalValue, + replaceIndex: index, + allowMultiple: false, + config, + field, + }); + }, + [config, controlID, field, openMediaLibrary, internalValue], + ); + + const onSortEnd = useCallback( + ({ oldIndex, newIndex }: { oldIndex: number; newIndex: number }) => { + if (Array.isArray(internalValue)) { + const newValue = arrayMoveImmutable(internalValue, oldIndex, newIndex); + handleOnChange(newValue); + } + }, + [handleOnChange, internalValue], + ); + + const renderFileLink = useCallback((link: string | undefined | null) => { + const size = MAX_DISPLAY_LENGTH; + if (!link || link.length <= size) { + return link; } - }; + const text = `${link.slice(0, size / 2)}\u2026${link.slice(-(size / 2) + 1)}`; + return ( + + {text} + + ); + }, []); - getImage(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [internalValue]); + const [assetSource, setAssetSource] = useState(''); + useEffect(() => { + if (Array.isArray(internalValue)) { + return; + } - const renderedImagesLinks = useMemo(() => { - if (forImage) { - if (!internalValue) { - return null; + const getImage = async () => { + const newValue = (await getAsset(internalValue, field))?.toString() ?? ''; + if (newValue !== internalValue) { + setAssetSource(newValue); + } + }; + + getImage(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [internalValue]); + + const renderedImagesLinks = useMemo(() => { + if (forImage) { + if (!internalValue) { + return null; + } + + if (isMultiple(internalValue)) { + return ( + + ); + } + + return ( + + + + ); } if (isMultiple(internalValue)) { return ( - + + + {internalValue.map(val => ( +
  • {renderFileLink(val)}
  • + ))} +
    +
    + ); + } + + return {renderFileLink(internalValue)}; + }, [ + assetSource, + field, + getAsset, + internalValue, + onRemoveOne, + onReplaceOne, + onSortEnd, + renderFileLink, + ]); + + const content = useMemo(() => { + const subject = forImage ? 'image' : 'file'; + + if (Array.isArray(internalValue) ? internalValue.length === 0 : isEmpty(internalValue)) { + return ( + + + {chooseUrl ? ( + + ) : null} + ); } return ( - - - - ); - } - - if (isMultiple(internalValue)) { - return ( - - - {internalValue.map(val => ( -
  • {renderFileLink(val)}
  • - ))} -
    -
    - ); - } - - return {renderFileLink(internalValue)}; - }, [ - assetSource, - field, - getAsset, - internalValue, - onRemoveOne, - onReplaceOne, - onSortEnd, - renderFileLink, - ]); - - const content = useMemo(() => { - const subject = forImage ? 'image' : 'file'; - - if (Array.isArray(internalValue) ? internalValue.length === 0 : isEmpty(internalValue)) { - return ( - - - {chooseUrl ? ( + + {renderedImagesLinks} + - ) : null} - + {chooseUrl && !allowsMultiple ? ( + + ) : null} + + + ); - } + }, [ + internalValue, + renderedImagesLinks, + handleOpenMediaLibrary, + t, + allowsMultiple, + chooseUrl, + handleUrl, + handleRemove, + ]); - return ( - - {renderedImagesLinks} - - - {chooseUrl && !allowsMultiple ? ( - - ) : null} - - - + return useMemo( + () => ( + + + {content} + + + ), + [collapsed, content, field.label, field.name, handleCollapseToggle, hasErrors, t], ); - }, [ - internalValue, - renderedImagesLinks, - handleChange, - t, - allowsMultiple, - chooseUrl, - handleUrl, - handleRemove, - ]); - - return useMemo( - () => ( - - - {content} - - - ), - [collapsed, content, field.label, field.name, handleCollapseToggle, hasErrors, t], - ); - }); + }, + ); FileControl.displayName = 'FileControl'; return FileControl; -} +}; + +export default withFileControl; diff --git a/core/src/widgets/image/ImagePreview.tsx b/core/src/widgets/image/ImagePreview.tsx index d6eea28d..a0e99b10 100644 --- a/core/src/widgets/image/ImagePreview.tsx +++ b/core/src/widgets/image/ImagePreview.tsx @@ -1,9 +1,16 @@ import { styled } from '@mui/material/styles'; -import React, { useEffect, useState } from 'react'; +import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; +import useMediaAsset from '@staticcms/core/lib/hooks/useMediaAsset'; -import type { FileOrImageField, GetAssetFunction, WidgetPreviewProps } from '../../interface'; +import type { + Collection, + Entry, + FileOrImageField, + WidgetPreviewProps, +} from '@staticcms/core/interface'; +import type { FC } from 'react'; interface StyledImageProps { src: string; @@ -18,31 +25,24 @@ const StyledImage = styled(({ src }: StyledImageProps) => ( `; interface ImageAssetProps { - getAsset: GetAssetFunction; value: string; + collection: Collection; field: FileOrImageField; + entry: Entry; } -function ImageAsset({ getAsset, value, field }: ImageAssetProps) { - const [assetSource, setAssetSource] = useState(''); - useEffect(() => { - const getImage = async () => { - const asset = (await getAsset(value, field))?.toString() ?? ''; - setAssetSource(asset); - }; - - getImage(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [value]); +const ImageAsset: FC = ({ value, collection, field, entry }) => { + const assetSource = useMediaAsset(value, collection, field, entry); return ; -} +}; -function ImagePreviewContent({ +const ImagePreviewContent: FC> = ({ value, - getAsset, + collection, field, -}: WidgetPreviewProps) { + entry, +}) => { if (!value) { return null; } @@ -51,21 +51,21 @@ function ImagePreviewContent({ return ( <> {value.map(val => ( - + ))} ); } - return ; -} + return ; +}; -function ImagePreview(props: WidgetPreviewProps) { +const ImagePreview: FC> = props => { return ( {props.value ? : null} ); -} +}; export default ImagePreview; diff --git a/core/src/widgets/image/index.ts b/core/src/widgets/image/index.ts index 9746f46e..493f856f 100644 --- a/core/src/widgets/image/index.ts +++ b/core/src/widgets/image/index.ts @@ -1,8 +1,8 @@ -import withFileControl, { getValidValue } from '../file/withFileControl'; +import withFileControl, { getValidFileValue } from '../file/withFileControl'; import previewComponent from './ImagePreview'; import schema from './schema'; -import type { FileOrImageField, WidgetParam } from '../../interface'; +import type { FileOrImageField, WidgetParam } from '@staticcms/core/interface'; const controlComponent = withFileControl({ forImage: true }); @@ -13,9 +13,11 @@ function ImageWidget(): WidgetParam { previewComponent, options: { schema, - getValidValue, + getValidValue: getValidFileValue, }, }; } +export { previewComponent as ImagePreview, schema as ImageSchema }; + export default ImageWidget; diff --git a/core/src/widgets/index.tsx b/core/src/widgets/index.tsx index 23c1c16a..43b11808 100644 --- a/core/src/widgets/index.tsx +++ b/core/src/widgets/index.tsx @@ -1,15 +1,30 @@ +export * from './boolean'; export { default as BooleanWidget } from './boolean'; +export * from './code'; export { default as CodeWidget } from './code'; +export * from './colorstring'; export { default as ColorStringWidget } from './colorstring'; +export * from './datetime'; export { default as DateTimeWidget } from './datetime'; +export * from './file'; export { default as FileWidget } from './file'; +export * from './image'; export { default as ImageWidget } from './image'; +export * from './list'; export { default as ListWidget } from './list'; +export * from './map'; export { default as MapWidget } from './map'; +export * from './markdown'; export { default as MarkdownWidget } from './markdown'; +export * from './number'; export { default as NumberWidget } from './number'; +export * from './object'; export { default as ObjectWidget } from './object'; +export * from './relation'; export { default as RelationWidget } from './relation'; +export * from './select'; export { default as SelectWidget } from './select'; +export * from './string'; export { default as StringWidget } from './string'; +export * from './text'; export { default as TextWidget } from './text'; diff --git a/core/src/widgets/list/ListControl.tsx b/core/src/widgets/list/ListControl.tsx index ccaba04b..5c9a8101 100644 --- a/core/src/widgets/list/ListControl.tsx +++ b/core/src/widgets/list/ListControl.tsx @@ -5,21 +5,21 @@ import React, { useCallback, useMemo, useState } from 'react'; import { SortableContainer } from 'react-sortable-hoc'; import uuid from 'uuid'; -import FieldLabel from '../../components/UI/FieldLabel'; -import ObjectWidgetTopBar from '../../components/UI/ObjectWidgetTopBar'; -import Outline from '../../components/UI/Outline'; -import transientOptions from '../../lib/util/transientOptions'; +import FieldLabel from '@staticcms/core/components/UI/FieldLabel'; +import ObjectWidgetTopBar from '@staticcms/core/components/UI/ObjectWidgetTopBar'; +import Outline from '@staticcms/core/components/UI/Outline'; +import transientOptions from '@staticcms/core/lib/util/transientOptions'; import ListItem from './ListItem'; import { resolveFieldKeyType, TYPES_KEY } from './typedListHelpers'; -import type { MouseEvent } from 'react'; import type { Field, ListField, ObjectValue, ValueOrNestedValue, WidgetControlProps, -} from '../../interface'; +} from '@staticcms/core/interface'; +import type { FC, MouseEvent } from 'react'; const StyledListWrapper = styled('div')` position: relative; @@ -95,7 +95,7 @@ function getFieldsDefault(fields: Field[], initialValue: ObjectValue = {}): Obje }, initialValue); } -const ListControl = ({ +const ListControl: FC> = ({ entry, field, fieldsErrors, @@ -109,7 +109,7 @@ const ListControl = ({ value, i18n, hasErrors, -}: WidgetControlProps) => { +}) => { const internalValue = useMemo(() => value ?? [], [value]); const [collapsed, setCollapsed] = useState(field.collapsed ?? true); const [keys, setKeys] = useState(Array.from({ length: internalValue.length }, () => uuid())); diff --git a/core/src/widgets/list/ListItem.tsx b/core/src/widgets/list/ListItem.tsx index 15191be3..8ff7037a 100644 --- a/core/src/widgets/list/ListItem.tsx +++ b/core/src/widgets/list/ListItem.tsx @@ -3,16 +3,18 @@ import partial from 'lodash/partial'; import React, { useCallback, useMemo, useState } from 'react'; import { SortableElement, SortableHandle } from 'react-sortable-hoc'; -import EditorControl from '../../components/Editor/EditorControlPane/EditorControl'; -import ListItemTopBar from '../../components/UI/ListItemTopBar'; -import Outline from '../../components/UI/Outline'; -import { colors } from '../../components/UI/styles'; -import { transientOptions } from '../../lib'; -import { addFileTemplateFields, compileStringTemplate } from '../../lib/widgets/stringTemplate'; +import EditorControl from '@staticcms/core/components/Editor/EditorControlPane/EditorControl'; +import ListItemTopBar from '@staticcms/core/components/UI/ListItemTopBar'; +import Outline from '@staticcms/core/components/UI/Outline'; +import { colors } from '@staticcms/core/components/UI/styles'; +import { transientOptions } from '@staticcms/core/lib'; +import { + addFileTemplateFields, + compileStringTemplate, +} from '@staticcms/core/lib/widgets/stringTemplate'; import { ListValueType } from './ListControl'; import { getTypedFieldForValue } from './typedListHelpers'; -import type { MouseEvent } from 'react'; import type { Entry, EntryData, @@ -20,7 +22,8 @@ import type { ObjectField, ObjectValue, WidgetControlProps, -} from '../../interface'; +} from '@staticcms/core/interface'; +import type { FC, MouseEvent } from 'react'; const StyledListItem = styled('div')` position: relative; @@ -95,7 +98,7 @@ interface ListItemProps handleRemove: (index: number, event: MouseEvent) => void; } -const ListItem = ({ +const ListItem: FC = ({ index, entry, field, @@ -109,7 +112,7 @@ const ListItem = ({ handleRemove, value, i18n, -}: ListItemProps) => { +}) => { const [objectLabel, objectField] = useMemo((): [string, ListField | ObjectField] => { const childObjectField: ObjectField = { name: `${index}`, diff --git a/core/src/widgets/list/ListPreview.tsx b/core/src/widgets/list/ListPreview.tsx index eaa3f0ea..b7af2587 100644 --- a/core/src/widgets/list/ListPreview.tsx +++ b/core/src/widgets/list/ListPreview.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { ListField, ObjectValue, WidgetPreviewProps } from '../../interface'; +import type { ListField, ObjectValue, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -function ObjectPreview({ field }: WidgetPreviewProps) { +const ObjectPreview: FC> = ({ field }) => { return {field.fields ?? null}; -} +}; export default ObjectPreview; diff --git a/core/src/widgets/list/index.ts b/core/src/widgets/list/index.ts index 97b5167e..3f01986a 100644 --- a/core/src/widgets/list/index.ts +++ b/core/src/widgets/list/index.ts @@ -2,7 +2,7 @@ import controlComponent from './ListControl'; import previewComponent from './ListPreview'; import schema from './schema'; -import type { ListField, WidgetParam, ObjectValue } from '../../interface'; +import type { ListField, ObjectValue, WidgetParam } from '@staticcms/core/interface'; const ListWidget = (): WidgetParam => { return { @@ -15,4 +15,8 @@ const ListWidget = (): WidgetParam => { }; }; +export { default as ListItem } from './ListItem'; +export * from './typedListHelpers'; +export { controlComponent as ListControl, previewComponent as ListPreview, schema as ListSchema }; + export default ListWidget; diff --git a/core/src/widgets/list/typedListHelpers.ts b/core/src/widgets/list/typedListHelpers.ts index e89c063d..afe78356 100644 --- a/core/src/widgets/list/typedListHelpers.ts +++ b/core/src/widgets/list/typedListHelpers.ts @@ -1,4 +1,4 @@ -import type { ListField, ObjectField, ObjectValue } from '../../interface'; +import type { ListField, ObjectField, ObjectValue } from '@staticcms/core/interface'; export const TYPES_KEY = 'types'; export const TYPE_KEY = 'type_key'; diff --git a/core/src/widgets/map/MapPreview.tsx b/core/src/widgets/map/MapPreview.tsx index 8e9301a2..ad6d3404 100644 --- a/core/src/widgets/map/MapPreview.tsx +++ b/core/src/widgets/map/MapPreview.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { MapField, WidgetPreviewProps } from '../../interface'; +import type { MapField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -const MapPreview = ({ value }: WidgetPreviewProps) => { +const MapPreview: FC> = ({ value }) => { return {value ? value.toString() : null}; }; diff --git a/core/src/widgets/map/index.ts b/core/src/widgets/map/index.ts index c0a9871b..5ed2256a 100644 --- a/core/src/widgets/map/index.ts +++ b/core/src/widgets/map/index.ts @@ -2,7 +2,7 @@ import previewComponent from './MapPreview'; import schema from './schema'; import withMapControl from './withMapControl'; -import type { MapField, WidgetParam } from '../../interface'; +import type { MapField, WidgetParam } from '@staticcms/core/interface'; const controlComponent = withMapControl(); @@ -17,4 +17,6 @@ const MapWidget = (): WidgetParam => { }; }; +export { previewComponent as MapPreview, schema as MapSchema, withMapControl }; + export default MapWidget; diff --git a/core/src/widgets/map/withMapControl.tsx b/core/src/widgets/map/withMapControl.tsx index 8321f736..2e57cdda 100644 --- a/core/src/widgets/map/withMapControl.tsx +++ b/core/src/widgets/map/withMapControl.tsx @@ -8,14 +8,15 @@ import olStyles from 'ol/ol.css'; import OSMSource from 'ol/source/OSM'; import VectorSource from 'ol/source/Vector'; import View from 'ol/View.js'; -import React, { useCallback, useLayoutEffect, useMemo, useState } from 'react'; +import React, { useCallback, useLayoutEffect, useRef, useState } from 'react'; -import ObjectWidgetTopBar from '../../components/UI/ObjectWidgetTopBar'; -import Outline from '../../components/UI/Outline'; -import transientOptions from '../../lib/util/transientOptions'; +import ObjectWidgetTopBar from '@staticcms/core/components/UI/ObjectWidgetTopBar'; +import Outline from '@staticcms/core/components/UI/Outline'; +import transientOptions from '@staticcms/core/lib/util/transientOptions'; +import type { MapField, WidgetControlProps } from '@staticcms/core/interface'; import type { Geometry } from 'ol/geom'; -import type { MapField, WidgetControlProps } from '../../interface'; +import type { FC } from 'react'; const StyledMapControlWrapper = styled('div')` display: flex; @@ -77,8 +78,8 @@ interface WithMapControlProps { getMap?: (target: HTMLDivElement, featuresLayer: VectorLayer>) => Map; } -export default function withMapControl({ getFormat, getMap }: WithMapControlProps = {}) { - const MapControl = ({ +const withMapControl = ({ getFormat, getMap }: WithMapControlProps = {}) => { + const MapControl: FC> = ({ path, value, field, @@ -86,7 +87,7 @@ export default function withMapControl({ getFormat, getMap }: WithMapControlProp hasErrors, label, t, - }: WidgetControlProps) => { + }) => { const [collapsed, setCollapsed] = useState(false); const handleCollapseToggle = useCallback(() => { @@ -94,7 +95,7 @@ export default function withMapControl({ getFormat, getMap }: WithMapControlProp }, [collapsed]); const { height = '400px' } = field; - const mapContainer: React.LegacyRef = useMemo(() => React.createRef(), []); + const mapContainer = useRef(null); useLayoutEffect(() => { const format = getFormat ? getFormat(field) : getDefaultFormat(); @@ -147,4 +148,6 @@ export default function withMapControl({ getFormat, getMap }: WithMapControlProp MapControl.displayName = 'MapControl'; return MapControl; -} +}; + +export default withMapControl; diff --git a/core/src/widgets/markdown/MarkdownControl.tsx b/core/src/widgets/markdown/MarkdownControl.tsx index 8fcfaab9..2c1a79d2 100644 --- a/core/src/widgets/markdown/MarkdownControl.tsx +++ b/core/src/widgets/markdown/MarkdownControl.tsx @@ -1,24 +1,17 @@ import { styled } from '@mui/material/styles'; -import { Editor } from '@toast-ui/react-editor'; -import isEmpty from 'lodash/isEmpty'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import uuid from 'uuid'; +import React, { useCallback, useMemo, useState } from 'react'; -import FieldLabel from '../../components/UI/FieldLabel'; -import Outline from '../../components/UI/Outline'; -import { IMAGE_EXTENSION_REGEX } from '../../constants/files'; -import { doesUrlFileExist } from '../../lib/util/fetch.util'; -import { isNotNullish } from '../../lib/util/null.util'; -import { isNotEmpty } from '../../lib/util/string.util'; -import useEditorOptions from './hooks/useEditorOptions'; -import useMedia, { MediaHolder } from './hooks/useMedia'; -import usePlugins from './hooks/usePlugins'; -import useToolbarItems from './hooks/useToolbarItems'; +import FieldLabel from '@staticcms/core/components/UI/FieldLabel'; +import Outline from '@staticcms/core/components/UI/Outline'; +import useDebounce from '../../lib/hooks/useDebounce'; +import useMarkdownToSlate from './plate/hooks/useMarkdownToSlate'; +import PlateEditor from './plate/PlateEditor'; +import serialize from './plate/serialization/serializerMarkdown'; -import type { RefObject } from 'react'; -import type { MarkdownField, MediaLibrary, WidgetControlProps } from '../../interface'; - -import '@toast-ui/editor/dist/toastui-editor.css'; +import type { MarkdownField, WidgetControlProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; +import type { MdValue } from './plate/plateTypes'; +import type { BlockType, LeafType } from './plate/serialization/slate/ast-types'; const StyledEditorWrapper = styled('div')` position: relative; @@ -41,20 +34,18 @@ const StyledEditorWrapper = styled('div')` } `; -const MarkdownControl = ({ +const MarkdownControl: FC> = ({ label, value, onChange, hasErrors, + collection, + entry, field, - openMediaLibrary, - mediaPaths, - getAsset, - config, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value ?? ''); - const editorRef = useMemo(() => React.createRef(), []) as RefObject; const [hasFocus, setHasFocus] = useState(false); + const debouncedFocus = useDebounce(hasFocus, 150); const handleOnFocus = useCallback(() => { setHasFocus(true); @@ -64,114 +55,25 @@ const MarkdownControl = ({ setHasFocus(false); }, []); - const handleOnChange = useCallback(() => { - const newValue = editorRef.current?.getInstance().getMarkdown() ?? ''; - if (newValue !== internalValue) { - setInternalValue(newValue); - onChange(newValue); - } - }, [editorRef, internalValue, onChange]); + const handleOnChange = useCallback( + (slateValue: MdValue) => { + const newValue = slateValue.map(v => serialize(v as BlockType | LeafType)).join('\n'); + console.log('[Plate] slateValue', slateValue, 'newMarkdownValue', newValue); + if (newValue !== internalValue) { + setInternalValue(newValue); + onChange(newValue); + } + }, + [internalValue, onChange], + ); const handleLabelClick = useCallback(() => { - editorRef.current?.getInstance().focus(); - }, [editorRef]); + // editorRef.current?.getInstance().focus(); + }, []); - const controlID: string = useMemo(() => uuid(), []); - const mediaLibraryFieldOptions: MediaLibrary = useMemo( - () => field.media_library ?? {}, - [field.media_library], - ); - const handleOpenMedialLibrary = useCallback( - (forImage: boolean) => { - openMediaLibrary({ - controlID, - forImage, - allowMultiple: false, - field, - config: 'config' in mediaLibraryFieldOptions ? mediaLibraryFieldOptions.config : undefined, - }); - }, - [controlID, field, mediaLibraryFieldOptions, openMediaLibrary], - ); + const [slateValue, loaded] = useMarkdownToSlate(internalValue); - const getMedia = useCallback( - async (path: string) => { - const { type, exists } = await doesUrlFileExist(path); - if (!exists) { - const asset = await getAsset(path, field); - if (isNotNullish(asset)) { - return { - type: IMAGE_EXTENSION_REGEX.test(path) ? 'image' : 'file', - exists: false, - url: asset.toString(), - }; - } - } - - return { url: path, type, exists }; - }, - [field, getAsset], - ); - - const mediaPath = mediaPaths[controlID]; - useEffect(() => { - if (isEmpty(mediaPath) || Array.isArray(mediaPath)) { - return; - } - - const addMedia = async () => { - const { type } = await getMedia(mediaPath); - let content: string | undefined; - const name = mediaPath.split('/').pop(); - if (type.startsWith('image')) { - content = `![${name}](${mediaPath})`; - } else { - content = `[${name}](${mediaPath})`; - } - - if (isNotEmpty(content)) { - const editorInstance = editorRef.current?.getInstance(); - if (!editorInstance) { - return; - } - - editorInstance.focus(); - const isOnMarkdown = editorInstance.isMarkdownMode(); - if (!isOnMarkdown) { - editorInstance.changeMode('markdown'); - } - editorInstance.insertText(content); - if (!isOnMarkdown) { - editorInstance.changeMode('wysiwyg'); - } - setTimeout(() => { - handleOnChange(); - }); - } - }; - - addMedia(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [mediaPath]); - - const { initialEditType, height, ...markdownEditorOptions } = useEditorOptions(); - - const media = useMedia({ value, getAsset, field }); - const mediaHolder = useMemo(() => new MediaHolder(), []); - - useEffect(() => { - mediaHolder.setBulkMedia(media); - editorRef.current?.getInstance().setMarkdown(internalValue); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [media]); - - const plugins = usePlugins(markdownEditorOptions.plugins, { - media: mediaHolder, - config, - field, - mode: 'editor', - }); - const toolbarItems = useToolbarItems(markdownEditorOptions.toolbarItems, handleOpenMedialLibrary); + console.log('[Plate] slateValue', slateValue); return useMemo( () => ( @@ -184,39 +86,27 @@ const MarkdownControl = ({ > {label} - + ) : null} + - ), - [ - editorRef, - handleLabelClick, - handleOnBlur, - handleOnChange, - handleOnFocus, - hasErrors, - hasFocus, - height, - initialEditType, - internalValue, - label, - plugins, - toolbarItems, - ], + // eslint-disable-next-line react-hooks/exhaustive-deps + [hasErrors, hasFocus, label, loaded, slateValue], ); }; diff --git a/core/src/widgets/markdown/MarkdownPreview.tsx b/core/src/widgets/markdown/MarkdownPreview.tsx index 5f6a824b..b82fe833 100644 --- a/core/src/widgets/markdown/MarkdownPreview.tsx +++ b/core/src/widgets/markdown/MarkdownPreview.tsx @@ -1,43 +1,56 @@ -import { Viewer } from '@toast-ui/react-editor'; -import React, { useEffect, useMemo, useRef } from 'react'; +import { MDXProvider } from '@mdx-js/react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { VFileMessage } from 'vfile-message'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; -import useEditorOptions from './hooks/useEditorOptions'; -import useMedia, { MediaHolder } from './hooks/useMedia'; -import usePlugins from './hooks/usePlugins'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; +import useMdx from './plate/hooks/useMdx'; -import type { MarkdownField, WidgetPreviewProps } from '../../interface'; +import type { FC } from 'react'; +import type { MarkdownField, WidgetPreviewProps } from '@staticcms/core/interface'; -const MarkdownPreview = ({ - value, - getAsset, - config, - field, -}: WidgetPreviewProps) => { - const options = useEditorOptions(); +interface FallbackComponentProps { + error: string; +} - const mediaHolder = useMemo(() => new MediaHolder(), []); - const media = useMedia({ value, getAsset, field }); - - const viewer = useRef(null); +function FallbackComponent({ error }: FallbackComponentProps) { + const message = new VFileMessage(error); + message.fatal = true; + return ( +
    +      {String(message)}
    +    
    + ); +} +const MarkdownPreview: FC> = ({ value }) => { useEffect(() => { - viewer.current?.getInstance().setMarkdown(value ?? ''); + // viewer.current?.getInstance().setMarkdown(value ?? ''); // eslint-disable-next-line react-hooks/exhaustive-deps }, [value]); + const [state, setValue] = useMdx(value ?? ''); + const [prevValue, setPrevValue] = useState(value); useEffect(() => { - mediaHolder.setBulkMedia(media); - viewer.current?.getInstance().setMarkdown(value ?? ''); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [media]); + if (prevValue !== value) { + setPrevValue(value ?? ''); + setValue(value ?? ''); + } + }, [prevValue, setValue, value]); - const plugins = usePlugins(options.plugins, { - config, - media: mediaHolder, - field, - mode: 'preview', - }); + // Create a preview component that can handle errors with try-catch block; for catching invalid JS expressions errors that ErrorBoundary cannot catch. + const MdxComponent = useCallback(() => { + if (!state.file) { + return null; + } + + try { + return (state.file.result as FC)({}); + } catch (error) { + return ; + } + }, [state.file]); + + const components = useMemo(() => ({}), []); return useMemo(() => { if (!value) { @@ -46,16 +59,15 @@ const MarkdownPreview = ({ return ( - content} - plugins={plugins} - /> + {state.file && state.file.result ? ( + + + + ) : null} ); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [plugins]); + }, [MdxComponent]); }; export default MarkdownPreview; diff --git a/core/src/widgets/markdown/hooks/useEditorOptions.ts b/core/src/widgets/markdown/hooks/useEditorOptions.ts deleted file mode 100644 index 9683a169..00000000 --- a/core/src/widgets/markdown/hooks/useEditorOptions.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useMemo } from 'react'; - -import { getMarkdownEditorOptions } from '../../../lib/registry'; - -const useEditorOptions = () => { - return useMemo(() => { - const { - initialEditType = 'wysiwyg', - height = '600px', - plugins = [], - ...markdownEditorOptions - } = getMarkdownEditorOptions(); - - return { - initialEditType, - height, - plugins, - ...markdownEditorOptions, - }; - }, []); -}; - -export default useEditorOptions; diff --git a/core/src/widgets/markdown/hooks/useMedia.ts b/core/src/widgets/markdown/hooks/useMedia.ts deleted file mode 100644 index 3ebc3e56..00000000 --- a/core/src/widgets/markdown/hooks/useMedia.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { useEffect, useState } from 'react'; - -import type { GetAssetFunction, MarkdownField } from '../../../interface'; -import type AssetProxy from '../../../valueObjects/AssetProxy'; - -interface UseMediaProps { - value: string | undefined | null; - getAsset: GetAssetFunction; - field: MarkdownField; -} - -export class MediaHolder { - private media: Record = {}; - - public setBulkMedia(otherMedia: Record) { - for (const [url, asset] of Object.entries(otherMedia)) { - this.setMedia(url, asset); - } - } - - public setMedia(url: string, asset: AssetProxy) { - this.media[url] = asset; - } - - public getMedia(url: string) { - return this.media[url]; - } -} - -const useMedia = ({ value, getAsset, field }: UseMediaProps) => { - const [media, setMedia] = useState>({}); - - useEffect(() => { - if (!value) { - return; - } - - let alive = true; - - const getMedia = async () => { - const regExp = /!\[[^\]()]*\]\(([^)]+)\)/g; - let matches = regExp.exec(value); - - const mediaToLoad: string[] = []; - while (matches && matches.length === 2) { - mediaToLoad.push(matches[1]); - matches = regExp.exec(value); - } - - const uniqueMediaToLoad = mediaToLoad.filter( - (value, index, self) => self.indexOf(value) === index && !(value in media), - ); - - for (const url of uniqueMediaToLoad) { - const asset = await getAsset(url, field); - if (!alive) { - break; - } - - setMedia(oldValue => ({ - ...oldValue, - [url]: asset, - })); - } - }; - - getMedia(); - - return () => { - alive = false; - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [value]); - - return media; -}; - -export default useMedia; diff --git a/core/src/widgets/markdown/hooks/usePlugins.ts b/core/src/widgets/markdown/hooks/usePlugins.ts deleted file mode 100644 index 2508d577..00000000 --- a/core/src/widgets/markdown/hooks/usePlugins.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useMemo } from 'react'; - -import imagePlugin from '../plugins/imagePlugin'; - -import type { MarkdownEditorOptions, MarkdownPluginFactoryProps } from '../../../interface'; - -const usePlugins = ( - editorPlugins: MarkdownEditorOptions['plugins'] = [], - { config, media, field, mode }: MarkdownPluginFactoryProps, -) => { - return useMemo(() => { - const plugins = [imagePlugin({ config, media, field, mode })]; - - if (plugins) { - plugins.push( - ...editorPlugins.map(editorPlugin => editorPlugin({ config, media, field, mode })), - ); - } - - return plugins; - }, [config, editorPlugins, field, media, mode]); -}; - -export default usePlugins; diff --git a/core/src/widgets/markdown/hooks/useToolbarItems.ts b/core/src/widgets/markdown/hooks/useToolbarItems.ts deleted file mode 100644 index 5d172142..00000000 --- a/core/src/widgets/markdown/hooks/useToolbarItems.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { useMemo } from 'react'; - -import useImageToolbarButton from '../toolbar/useImageToolbarButton'; - -import type { MarkdownEditorOptions } from '../../../interface'; - -const useToolbarItems = ( - toolbarItems: MarkdownEditorOptions['toolbarItems'], - openMediaLibrary: (forImage: boolean) => void, -) => { - const imageToolbarButton = useImageToolbarButton({ - openMediaLibrary, - }); - - return useMemo(() => { - let items = [ - ['heading', 'bold', 'italic', 'strike'], - ['hr', 'quote'], - ['ul', 'ol', 'task', 'indent', 'outdent'], - ['table', imageToolbarButton, 'link'], - ['code', 'codeblock'], - ]; - - if (toolbarItems) { - items = toolbarItems({ imageToolbarButton }); - } - - return items; - }, [imageToolbarButton, toolbarItems]); -}; - -export default useToolbarItems; diff --git a/core/src/widgets/markdown/index.ts b/core/src/widgets/markdown/index.ts index 357ee4bb..eae41944 100644 --- a/core/src/widgets/markdown/index.ts +++ b/core/src/widgets/markdown/index.ts @@ -1,7 +1,7 @@ import controlComponent from './MarkdownControl'; import previewComponent from './MarkdownPreview'; -import type { MarkdownField, WidgetParam } from '../../interface'; +import type { MarkdownField, WidgetParam } from '@staticcms/core/interface'; const MarkdownWidget = (): WidgetParam => { return { @@ -11,4 +11,7 @@ const MarkdownWidget = (): WidgetParam => { }; }; +export * from './plate'; +export { controlComponent as MarkdownControl, previewComponent as MarkdownPreview }; + export default MarkdownWidget; diff --git a/core/src/widgets/markdown/plate/PlateEditor.tsx b/core/src/widgets/markdown/plate/PlateEditor.tsx new file mode 100644 index 00000000..fa285cfa --- /dev/null +++ b/core/src/widgets/markdown/plate/PlateEditor.tsx @@ -0,0 +1,294 @@ +import { styled } from '@mui/material/styles'; +import { + createAlignPlugin, + createAutoformatPlugin, + createBlockquotePlugin, + createBoldPlugin, + createCodePlugin, + createExitBreakPlugin, + createFontBackgroundColorPlugin, + createFontColorPlugin, + createHeadingPlugin, + createImagePlugin, + createItalicPlugin, + createLinkPlugin, + createParagraphPlugin, + createResetNodePlugin, + createSoftBreakPlugin, + createStrikethroughPlugin, + createSubscriptPlugin, + createSuperscriptPlugin, + createTodoListPlugin, + createTrailingBlockPlugin, + createUnderlinePlugin, + ELEMENT_BLOCKQUOTE, + ELEMENT_CODE_BLOCK, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_IMAGE, + ELEMENT_LI, + ELEMENT_LIC, + ELEMENT_LINK, + ELEMENT_OL, + ELEMENT_PARAGRAPH, + ELEMENT_TABLE, + ELEMENT_TD, + ELEMENT_TH, + ELEMENT_TR, + ELEMENT_UL, + MARK_BOLD, + MARK_ITALIC, + MARK_STRIKETHROUGH, + MARK_SUBSCRIPT, + MARK_SUPERSCRIPT, + MARK_UNDERLINE, + Plate, + PlateProvider, + withProps, +} from '@udecode/plate'; +import { StyledLeaf } from '@udecode/plate-styled-components'; +import React, { useCallback, useMemo, useRef, useState } from 'react'; +import { DndProvider } from 'react-dnd'; +import { HTML5Backend } from 'react-dnd-html5-backend'; + +import { BalloonToolbar } from './components/balloon-toolbar'; +import { BlockquoteElement } from './components/nodes/blockquote'; +import { CodeBlockElement } from './components/nodes/code-block'; +import { + Heading1, + Heading2, + Heading3, + Heading4, + Heading5, + Heading6, +} from './components/nodes/headings'; +import { withImageElement } from './components/nodes/image'; +import { withLinkElement } from './components/nodes/link'; +import { + ListItemContentElement, + ListItemElement, + OrderedListElement, + UnorderedListElement, +} from './components/nodes/list'; +import Paragraph from './components/nodes/paragraph/Paragraph'; +import { TableCellElement, TableElement, TableRowElement } from './components/nodes/table'; +import { Toolbar } from './components/toolbar'; +import editableProps from './editableProps'; +import { createMdPlugins } from './plateTypes'; +import { alignPlugin } from './plugins/align'; +import { autoformatPlugin } from './plugins/autoformat'; +import { createCodeBlockPlugin } from './plugins/code-block'; +import { CursorOverlayContainer } from './plugins/cursor-overlay'; +import { exitBreakPlugin } from './plugins/exit-break'; +import { createListPlugin } from './plugins/list'; +import { resetBlockTypePlugin } from './plugins/reset-node'; +import { softBreakPlugin } from './plugins/soft-break'; +import { createTablePlugin } from './plugins/table'; +import { trailingBlockPlugin } from './plugins/trailing-block'; + +import type { Collection, Entry, MarkdownField } from '@staticcms/core/interface'; +import type { AutoformatPlugin } from '@udecode/plate'; +import type { CSSProperties, FC } from 'react'; +import type { MdEditor, MdValue } from './plateTypes'; + +const StyledPlateEditor = styled('div')` + position: relative; + padding: 1.25rem; + padding-bottom: 0; + margin-bottom: 1.25rem; +`; + +const styles: Record = { + container: { position: 'relative' }, +}; + +export interface PlateEditorProps { + initialValue: MdValue; + collection: Collection; + entry: Entry; + field: MarkdownField; + onChange: (value: MdValue) => void; + onFocus: () => void; + onBlur: () => void; +} + +const PlateEditor: FC = ({ + initialValue, + collection, + entry, + field, + onChange, + onFocus, + onBlur, +}) => { + const outerEditorContainerRef = useRef(null); + const editorContainerRef = useRef(null); + const innerEditorContainerRef = useRef(null); + + const components = useMemo( + () => ({ + [ELEMENT_H1]: Heading1, + [ELEMENT_H2]: Heading2, + [ELEMENT_H3]: Heading3, + [ELEMENT_H4]: Heading4, + [ELEMENT_H5]: Heading5, + [ELEMENT_H6]: Heading6, + [ELEMENT_PARAGRAPH]: Paragraph, + [ELEMENT_TABLE]: TableElement, + [ELEMENT_TR]: TableRowElement, + [ELEMENT_TH]: TableCellElement, + [ELEMENT_TD]: TableCellElement, + [ELEMENT_BLOCKQUOTE]: BlockquoteElement, + [ELEMENT_CODE_BLOCK]: CodeBlockElement, + [ELEMENT_LINK]: withLinkElement({ + containerRef: innerEditorContainerRef.current, + collection, + entry, + field, + }), + [ELEMENT_IMAGE]: withImageElement({ + containerRef: innerEditorContainerRef.current, + collection, + entry, + field, + }), + [ELEMENT_OL]: OrderedListElement, + [ELEMENT_UL]: UnorderedListElement, + [ELEMENT_LI]: ListItemElement, + [ELEMENT_LIC]: ListItemContentElement, + [MARK_BOLD]: withProps(StyledLeaf, { as: 'strong' }), + [MARK_ITALIC]: withProps(StyledLeaf, { as: 'em' }), + [MARK_STRIKETHROUGH]: withProps(StyledLeaf, { as: 's' }), + [MARK_SUBSCRIPT]: withProps(StyledLeaf, { as: 'sub' }), + [MARK_SUPERSCRIPT]: withProps(StyledLeaf, { as: 'sup' }), + [MARK_UNDERLINE]: withProps(StyledLeaf, { as: 'u' }), + }), + [collection, entry, field], + ); + + const [hasEditorFocus, setHasEditorFocus] = useState(false); + + const handleOnFocus = useCallback(() => { + setHasEditorFocus(true); + onFocus(); + }, [onFocus]); + + const handleOnBlur = useCallback(() => { + setHasEditorFocus(false); + onBlur(); + }, [onBlur]); + + const plugins = useMemo( + () => + createMdPlugins( + [ + createParagraphPlugin(), + createBlockquotePlugin(), + createTodoListPlugin(), + createHeadingPlugin(), + createImagePlugin(), + // createHorizontalRulePlugin(), + createLinkPlugin(), + createListPlugin(), + createTablePlugin(), + // createMediaEmbedPlugin(), + createCodeBlockPlugin(), + createAlignPlugin(alignPlugin), + createBoldPlugin(), + createCodePlugin(), + createItalicPlugin(), + // createHighlightPlugin(), + createUnderlinePlugin(), + createStrikethroughPlugin(), + createSubscriptPlugin(), + createSuperscriptPlugin(), + createFontColorPlugin(), + createFontBackgroundColorPlugin(), + // createFontSizePlugin(), + // createKbdPlugin(), + // createNodeIdPlugin(), + // createDndPlugin({ options: { enableScroller: true } }), + // dragOverCursorPlugin, + // createIndentPlugin(indentPlugin), + createAutoformatPlugin, MdValue, MdEditor>( + autoformatPlugin, + ), + createResetNodePlugin(resetBlockTypePlugin), + createSoftBreakPlugin(softBreakPlugin), + createExitBreakPlugin(exitBreakPlugin), + createTrailingBlockPlugin(trailingBlockPlugin), + // createSelectOnBackspacePlugin(selectOnBackspacePlugin), + // createComboboxPlugin(), + // createMentionPlugin(), + // createDeserializeMdPlugin(), + // createDeserializeCsvPlugin(), + // createDeserializeDocxPlugin(), + // createJuicePlugin() as MdPlatePlugin, + ], + { + components, + }, + ), + [components], + ); + + return useMemo( + () => ( + + + + key="plate-provider" + initialValue={initialValue} + plugins={plugins} + onChange={onChange} + > +
    + + +
    + +
    + + +
    +
    +
    +
    + +
    +
    + ), + // eslint-disable-next-line react-hooks/exhaustive-deps + [collection, field, handleOnBlur, handleOnFocus, initialValue, onChange, plugins], + ); +}; + +export default PlateEditor; diff --git a/core/src/widgets/markdown/plate/components/balloon-toolbar/BalloonToolbar.tsx b/core/src/widgets/markdown/plate/components/balloon-toolbar/BalloonToolbar.tsx new file mode 100644 index 00000000..c25368aa --- /dev/null +++ b/core/src/widgets/markdown/plate/components/balloon-toolbar/BalloonToolbar.tsx @@ -0,0 +1,255 @@ +import Box from '@mui/material/Box'; +import Popper from '@mui/material/Popper'; +import { styled } from '@mui/material/styles'; +import { + ELEMENT_LINK, + ELEMENT_TD, + findNodePath, + getNode, + getParentNode, + getSelectionBoundingClientRect, + getSelectionText, + isElement, + isElementEmpty, + isSelectionExpanded, + isText, + someNode, + usePlateSelection, +} from '@udecode/plate'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; + +import useDebounce from '@staticcms/core/lib/hooks/useDebounce'; +import { isEmpty } from '@staticcms/core/lib/util/string.util'; +import { useMdPlateEditorState, VOID_ELEMENTS } from '@staticcms/markdown'; +import BasicElementToolbarButtons from '../buttons/BasicElementToolbarButtons'; +import BasicMarkToolbarButtons from '../buttons/BasicMarkToolbarButtons'; +import MediaToolbarButtons from '../buttons/MediaToolbarButtons'; +import TableToolbarButtons from '../buttons/TableToolbarButtons'; + +import type { Collection, Entry, MarkdownField } from '@staticcms/core/interface'; +import type { ClientRectObject } from '@udecode/plate'; +import type { FC, ReactNode } from 'react'; + +const StyledPopperContent = styled('div')( + ({ theme }) => ` + display: flex; + gap: 4px; + background: ${theme.palette.background.paper}; + box-shadow: ${theme.shadows[8]}; + margin-bottom: 10px; + padding: 6px; + border-radius: 4px; + align-items: center; + `, +); + +const StyledDivider = styled('div')( + ({ theme }) => ` + height: 18px; + width: 1px; + background: ${theme.palette.text.secondary}; + margin: 0 4px; + opacity: 0.5; + `, +); + +export interface BalloonToolbarProps { + containerRef: HTMLElement | null; + hasEditorFocus: boolean; + collection: Collection; + field: MarkdownField; + entry: Entry; +} + +const BalloonToolbar: FC = ({ + containerRef, + hasEditorFocus, + collection, + field, + entry, +}) => { + const editor = useMdPlateEditorState(); + const selection = usePlateSelection(); + const [hasFocus, setHasFocus] = useState(false); + const debouncedHasFocus = useDebounce(hasFocus, 150); + + const handleFocus = useCallback(() => { + setHasFocus(true); + }, []); + + const handleBlur = useCallback(() => { + setHasFocus(false); + }, []); + + const anchorEl = useRef(); + const [selectionBoundingClientRect, setSelectionBoundingClientRect] = + useState(null); + + const [mediaOpen, setMediaOpen] = useState(false); + + const [selectionExpanded, selectionText] = useMemo(() => { + if (!editor) { + return [undefined, undefined, undefined]; + } + + return [isSelectionExpanded(editor), getSelectionText(editor)]; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [editor, selection]); + + const node = getNode(editor, editor.selection?.anchor.path ?? []); + + useEffect(() => { + if (!editor) { + return undefined; + } + + setTimeout(() => { + setSelectionBoundingClientRect(getSelectionBoundingClientRect()); + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [selection, debouncedHasFocus]); + + const isInTableCell = useMemo(() => { + return Boolean( + selection && someNode(editor, { match: { type: ELEMENT_TD }, at: selection?.anchor }), + ); + }, [editor, selection]); + + const debouncedEditorFocus = useDebounce(hasEditorFocus, 150); + + const groups: ReactNode[] = useMemo(() => { + if (!mediaOpen && !debouncedEditorFocus && !hasFocus && !debouncedHasFocus) { + return []; + } + + if (selection && someNode(editor, { match: { type: ELEMENT_LINK }, at: selection?.anchor })) { + return []; + } + + if (selectionText && selectionExpanded) { + return [ + , + , + isInTableCell && , + , + ].filter(Boolean); + } + + if ( + editor.children.length > 1 && + node && + ((isElement(node) && isElementEmpty(editor, node)) || (isText(node) && isEmpty(node.text))) + ) { + const path = findNodePath(editor, node) ?? []; + const parent = getParentNode(editor, path); + if ( + path.length > 0 && + path[0] !== 0 && + parent && + parent.length > 0 && + 'children' in parent[0] && + !VOID_ELEMENTS.includes(parent[0].type as string) && + parent[0].children.length === 1 + ) { + return [ + , + , + , + , + ]; + } + } + + return []; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ + collection, + editor, + field, + hasFocus, + debouncedHasFocus, + debouncedEditorFocus, + isInTableCell, + mediaOpen, + node, + selection, + selectionExpanded, + selectionText, + ]); + + const [prevSelectionBoundingClientRect, setPrevSelectionBoundingClientRect] = useState( + selectionBoundingClientRect, + ); + + const debouncedGroups = useDebounce( + groups, + prevSelectionBoundingClientRect !== selectionBoundingClientRect ? 0 : 150, + ); + const open = useMemo( + () => groups.length > 0 || debouncedGroups.length > 0, + [debouncedGroups.length, groups.length], + ); + const debouncedOpen = useDebounce( + open, + prevSelectionBoundingClientRect !== selectionBoundingClientRect ? 0 : 50, + ); + + useEffect(() => { + setPrevSelectionBoundingClientRect(selectionBoundingClientRect); + }, [selectionBoundingClientRect]); + + return ( + <> + + + + {(groups.length > 0 ? groups : debouncedGroups).map((group, index) => [ + index !== 0 ? : null, + group, + ])} + + + + ); +}; + +export default BalloonToolbar; diff --git a/core/src/widgets/markdown/plate/components/balloon-toolbar/index.ts b/core/src/widgets/markdown/plate/components/balloon-toolbar/index.ts new file mode 100644 index 00000000..c9e0deb0 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/balloon-toolbar/index.ts @@ -0,0 +1,2 @@ +export * from './BalloonToolbar'; +export { default as BalloonToolbar } from './BalloonToolbar'; diff --git a/core/src/widgets/markdown/plate/components/buttons/AlignToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/AlignToolbarButtons.tsx new file mode 100644 index 00000000..6f355ae5 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/AlignToolbarButtons.tsx @@ -0,0 +1,20 @@ +import FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter'; +import FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft'; +import FormatAlignRightIcon from '@mui/icons-material/FormatAlignRight'; +import React from 'react'; + +import AlignToolbarButton from './common/AlignToolbarButton'; + +import type { FC } from 'react'; + +const AlignToolbarButtons: FC = () => { + return ( + <> + } /> + } /> + } /> + + ); +}; + +export default AlignToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/BasicElementToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/BasicElementToolbarButtons.tsx new file mode 100644 index 00000000..853dbde1 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/BasicElementToolbarButtons.tsx @@ -0,0 +1,46 @@ +import CodeIcon from '@mui/icons-material/Code'; +import FormatQuoteIcon from '@mui/icons-material/FormatQuote'; +import { ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, insertEmptyCodeBlock } from '@udecode/plate'; +import React from 'react'; + +import BlockToolbarButton from './common/BlockToolbarButton'; +import FontTypeSelect from './FontTypeSelect'; + +import type { FC } from 'react'; + +export interface BasicElementToolbarButtonsProps { + hideFontTypeSelect?: boolean; + disableFontTypeSelect?: boolean; + hideCodeBlock?: boolean; +} + +const BasicElementToolbarButtons: FC = ({ + hideFontTypeSelect = false, + disableFontTypeSelect = false, + hideCodeBlock = false, +}) => { + return ( + <> + {!hideFontTypeSelect ? : null} + } + /> + {!hideCodeBlock ? ( + } + onClick={editor => + insertEmptyCodeBlock(editor, { + insertNodesOptions: { select: true }, + }) + } + /> + ) : null} + + ); +}; + +export default BasicElementToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/BasicMarkToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/BasicMarkToolbarButtons.tsx new file mode 100644 index 00000000..e38fa663 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/BasicMarkToolbarButtons.tsx @@ -0,0 +1,63 @@ +import CodeIcon from '@mui/icons-material/Code'; +import FormatBoldIcon from '@mui/icons-material/FormatBold'; +import FormatItalicIcon from '@mui/icons-material/FormatItalic'; +import FormatStrikethroughIcon from '@mui/icons-material/FormatStrikethrough'; +import FormatUnderlinedIcon from '@mui/icons-material/FormatUnderlined'; +import SubscriptIcon from '@mui/icons-material/Subscript'; +import SuperscriptIcon from '@mui/icons-material/Superscript'; +import { + MARK_BOLD, + MARK_CODE, + MARK_ITALIC, + MARK_STRIKETHROUGH, + MARK_SUBSCRIPT, + MARK_SUPERSCRIPT, + MARK_UNDERLINE, +} from '@udecode/plate'; +import React from 'react'; + +import MarkToolbarButton from './common/MarkToolbarButton'; + +import type { FC } from 'react'; + +export interface BasicMarkToolbarButtonsProps { + extended?: boolean; +} + +const BasicMarkToolbarButtons: FC = ({ extended = false }) => { + return ( + <> + } /> + } /> + } + /> + } + /> + } /> + {extended ? ( + <> + } + /> + } + /> + + ) : null} + + ); +}; + +export default BasicMarkToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/ColorToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/ColorToolbarButtons.tsx new file mode 100644 index 00000000..800206a7 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/ColorToolbarButtons.tsx @@ -0,0 +1,29 @@ +import FontDownloadIcon from '@mui/icons-material/FontDownload'; +import FormatColorTextIcon from '@mui/icons-material/FormatColorText'; +import { MARK_BG_COLOR, MARK_COLOR } from '@udecode/plate'; +import React from 'react'; + +import ColorPickerToolbarDropdown from './common/ColorPickerToolbarDropdown'; + +import type { FC } from 'react'; + +const ColorToolbarButtons: FC = () => { + return ( + <> + } + tooltip="Color" + /> + } + tooltip="Background Color" + /> + + ); +}; + +export default ColorToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/FontTypeSelect.tsx b/core/src/widgets/markdown/plate/components/buttons/FontTypeSelect.tsx new file mode 100644 index 00000000..4692a71d --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/FontTypeSelect.tsx @@ -0,0 +1,125 @@ +import FormControl from '@mui/material/FormControl'; +import MenuItem from '@mui/material/MenuItem'; +import Select from '@mui/material/Select'; +import { styled } from '@mui/material/styles'; +import { + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_PARAGRAPH, + focusEditor, +} from '@udecode/plate'; +import { someNode, toggleNodeType } from '@udecode/plate-core'; +import React, { useCallback, useMemo, useState } from 'react'; + +import useDebounce from '@staticcms/core/lib/hooks/useDebounce'; +import { useMdPlateEditorState } from '@staticcms/markdown'; + +import type { SelectChangeEvent } from '@mui/material/Select'; +import type { FC } from 'react'; + +const StyledSelect = styled(Select)` + padding: 0; + + & .MuiSelect-select { + padding: 4px 7px; + } +`; + +const types = [ + { + type: ELEMENT_H1, + label: 'Heading 1', + }, + { + type: ELEMENT_H2, + label: 'Heading 2', + }, + { + type: ELEMENT_H3, + label: 'Heading 3', + }, + { + type: ELEMENT_H4, + label: 'Heading 4', + }, + { + type: ELEMENT_H5, + label: 'Heading 5', + }, + { + type: ELEMENT_H6, + label: 'Heading 6', + }, + { + type: ELEMENT_PARAGRAPH, + label: 'Paragraph', + }, +]; + +export interface FontTypeSelectProps { + disabled?: boolean; +} + +/** + * Toolbar button to toggle the type of elements in selection. + */ +const FontTypeSelect: FC = ({ disabled = false }) => { + const editor = useMdPlateEditorState(); + const [version, setVersion] = useState(0); + + const selection = useDebounce(editor?.selection, 100); + + const value = useMemo(() => { + return ( + selection && + types.find(type => someNode(editor, { match: { type: type.type }, at: selection?.anchor })) + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [editor, selection, version]); + + const handleChange = useCallback( + (event: SelectChangeEvent) => { + event.preventDefault(); + + if (value?.type === event.target.value) { + return; + } + + toggleNodeType(editor, { + activeType: event.target.value, + }); + + setVersion(oldVersion => oldVersion + 1); + + setTimeout(() => { + focusEditor(editor); + }); + }, + [editor, value?.type], + ); + + return ( + + + {types.map(type => ( + + {type.label} + + ))} + + + ); +}; + +export default FontTypeSelect; diff --git a/core/src/widgets/markdown/plate/components/buttons/ListToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/ListToolbarButtons.tsx new file mode 100644 index 00000000..bf89aea0 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/ListToolbarButtons.tsx @@ -0,0 +1,44 @@ +import FormatIndentDecreaseIcon from '@mui/icons-material/FormatIndentDecrease'; +import FormatIndentIncreaseIcon from '@mui/icons-material/FormatIndentIncrease'; +import FormatListBulletedIcon from '@mui/icons-material/FormatListBulleted'; +import FormatListNumberedIcon from '@mui/icons-material/FormatListNumbered'; +import { ELEMENT_OL, ELEMENT_UL, getPluginType, indent, outdent } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { useMdPlateEditorRef } from '@staticcms/markdown'; +import ListToolbarButton from './common/ListToolbarButton'; +import ToolbarButton from './common/ToolbarButton'; + +import type { FC } from 'react'; +import type { MdEditor } from '@staticcms/markdown'; + +const ListToolbarButtons: FC = () => { + const editor = useMdPlateEditorRef(); + + const handleOutdent = useCallback((editor: MdEditor) => { + outdent(editor); + }, []); + + const handleIndent = useCallback((editor: MdEditor) => { + indent(editor); + }, []); + + return ( + <> + } /> + } + /> + } + /> + } /> + + ); +}; + +export default ListToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/MediaToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/MediaToolbarButtons.tsx new file mode 100644 index 00000000..10fe05c2 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/MediaToolbarButtons.tsx @@ -0,0 +1,77 @@ +import ImageIcon from '@mui/icons-material/Image'; +import LinkIcon from '@mui/icons-material/Link'; +import React, { useEffect, useState } from 'react'; + +import ImageToolbarButton from './common/ImageToolbarButton'; +import LinkToolbarButton from './common/LinkToolbarButton'; + +import type { Collection, Entry, MarkdownField } from '@staticcms/core/interface'; +import type { FC } from 'react'; + +export interface MediaToolbarButtonsProps { + containerRef: HTMLElement | null; + hideUploads?: boolean; + collection: Collection; + field: MarkdownField; + entry: Entry; + inserting?: boolean; + onMediaToggle?: (open: boolean) => void; +} + +const MediaToolbarButtons: FC = ({ + containerRef, + collection, + field, + entry, + hideUploads = false, + onMediaToggle, +}) => { + const [open, setOpen] = useState(false); + const [linkMediaOpen, setLinkMediaOpen] = useState(false); + const [imageMediaOpen, setImageMediaOpen] = useState(false); + + useEffect(() => { + if (open && !linkMediaOpen && !imageMediaOpen) { + setOpen(false); + onMediaToggle?.(false); + return; + } + + if (!open && (linkMediaOpen || imageMediaOpen)) { + setOpen(true); + onMediaToggle?.(true); + return; + } + }, [imageMediaOpen, linkMediaOpen, onMediaToggle, open]); + + return ( + <> + } + collection={collection} + field={field} + entry={entry} + mediaOpen={linkMediaOpen} + onMediaToggle={setLinkMediaOpen} + /> + {!hideUploads ? ( + } + collection={collection} + field={field} + entry={entry} + mediaOpen={imageMediaOpen} + onMediaToggle={setImageMediaOpen} + /> + ) : null} + + ); +}; + +export default MediaToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/TableToolbarButtons.tsx b/core/src/widgets/markdown/plate/components/buttons/TableToolbarButtons.tsx new file mode 100644 index 00000000..26c938b0 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/TableToolbarButtons.tsx @@ -0,0 +1,97 @@ +import { TableAdd } from '@styled-icons/fluentui-system-regular/TableAdd'; +import { TableDeleteColumn } from '@styled-icons/fluentui-system-regular/TableDeleteColumn'; +import { TableDeleteRow } from '@styled-icons/fluentui-system-regular/TableDeleteRow'; +import { TableDismiss } from '@styled-icons/fluentui-system-regular/TableDismiss'; +import { TableInsertColumn } from '@styled-icons/fluentui-system-regular/TableInsertColumn'; +import { TableInsertRow } from '@styled-icons/fluentui-system-regular/TableInsertRow'; +import { + deleteColumn, + deleteRow, + deleteTable, + insertTable, + insertTableColumn, + insertTableRow, +} from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import ToolbarButton from './common/ToolbarButton'; + +import type { FC } from 'react'; +import type { MdEditor } from '@staticcms/markdown'; + +export interface TableToolbarButtonsProps { + isInTable?: boolean; +} + +const TableToolbarButtons: FC = ({ isInTable = true }) => { + const handleTableAdd = useCallback((editor: MdEditor) => { + insertTable(editor, { + rowCount: 2, + colCount: 2, + }); + }, []); + + const handleInsertTableRow = useCallback((editor: MdEditor) => { + insertTableRow(editor); + }, []); + + const handleDeleteRow = useCallback((editor: MdEditor) => { + deleteRow(editor); + }, []); + + const handleInsertTableColumn = useCallback((editor: MdEditor) => { + insertTableColumn(editor); + }, []); + + const handleDeleteColumn = useCallback((editor: MdEditor) => { + deleteColumn(editor); + }, []); + + const handleDeleteTable = useCallback((editor: MdEditor) => { + deleteTable(editor); + }, []); + + return isInTable ? ( + <> + } + onClick={handleInsertTableRow} + /> + } + onClick={handleDeleteRow} + /> + } + onClick={handleInsertTableColumn} + /> + } + onClick={handleDeleteColumn} + /> + } + onClick={handleDeleteTable} + /> + + ) : ( + } + onClick={handleTableAdd} + /> + ); +}; + +export default TableToolbarButtons; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/AlignToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/AlignToolbarButton.tsx new file mode 100644 index 00000000..0ad962a6 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/AlignToolbarButton.tsx @@ -0,0 +1,45 @@ +import { isCollapsed, KEY_ALIGN, setAlign, someNode } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { useMdPlateEditorState } from '@staticcms/markdown'; +import ToolbarButton from './ToolbarButton'; + +import type { MdEditor } from '@staticcms/markdown'; +import type { Alignment } from '@udecode/plate'; +import type { FC } from 'react'; +import type { ToolbarButtonProps } from './ToolbarButton'; + +export interface AlignToolbarButtonProps extends Omit { + value: Alignment; + pluginKey?: string; +} + +const AlignToolbarButton: FC = ({ + value, + pluginKey = KEY_ALIGN, + ...props +}) => { + const editor = useMdPlateEditorState(); + + const handleOnClick = useCallback( + (editor: MdEditor) => { + setAlign(editor, { + value, + key: pluginKey, + }); + }, + [pluginKey, value], + ); + + return ( + + ); +}; + +export default AlignToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/BlockToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/BlockToolbarButton.tsx new file mode 100644 index 00000000..7bfbd5e1 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/BlockToolbarButton.tsx @@ -0,0 +1,41 @@ +import { someNode, toggleNodeType } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { useMdPlateEditorState } from '@staticcms/markdown'; +import ToolbarButton from './ToolbarButton'; + +import type { MdEditor } from '@staticcms/markdown'; +import type { FC } from 'react'; +import type { ToolbarButtonProps } from './ToolbarButton'; + +export interface BlockToolbarButtonProps extends Omit { + type: string; + inactiveType?: string; + onClick?: (editor: MdEditor) => void; +} + +const BlockToolbarButton: FC = ({ + type, + inactiveType, + onClick, + ...props +}) => { + const editor = useMdPlateEditorState(); + + const handleOnClick = useCallback( + (editor: MdEditor) => { + toggleNodeType(editor, { activeType: type, inactiveType }); + }, + [inactiveType, type], + ); + + return ( + + ); +}; + +export default BlockToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/ColorPickerToolbarDropdown.tsx b/core/src/widgets/markdown/plate/components/buttons/common/ColorPickerToolbarDropdown.tsx new file mode 100644 index 00000000..23e3c300 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/ColorPickerToolbarDropdown.tsx @@ -0,0 +1,106 @@ +import { DEFAULT_COLORS, DEFAULT_CUSTOM_COLORS } from '@udecode/plate'; +import { + getMark, + getPluginType, + removeMark, + setMarks, + usePlateEditorRef, +} from '@udecode/plate-core'; +import React, { useCallback, useEffect, useState } from 'react'; +import { Transforms } from 'slate'; +import { ReactEditor } from 'slate-react'; + +import { useMdPlateEditorState } from '@staticcms/markdown'; +import ColorPicker from '../../color-picker/ColorPicker'; +import ToolbarDropdown from './dropdown/ToolbarDropdown'; + +import type { ColorType } from '@udecode/plate'; +import type { FC } from 'react'; +import type { BaseEditor } from 'slate'; +import type { ToolbarButtonProps } from './ToolbarButton'; + +export interface ColorPickerToolbarDropdownProps extends Omit { + pluginKey: string; + colors?: ColorType[]; + customColors?: ColorType[]; + closeOnSelect?: boolean; +} + +const ColorPickerToolbarDropdown: FC = ({ + pluginKey, + colors = DEFAULT_COLORS, + customColors = DEFAULT_CUSTOM_COLORS, + closeOnSelect = true, + ...controlProps +}) => { + const [open, setOpen] = useState(false); + const editor = useMdPlateEditorState(); + const editorRef = usePlateEditorRef(); + + const type = getPluginType(editorRef, pluginKey); + + const color = editorRef && getMark(editorRef, type); + + const [selectedColor, setSelectedColor] = useState(); + + const onToggle = useCallback(() => { + setOpen(!open); + }, [open, setOpen]); + + const updateColor = useCallback( + (value: string) => { + if (editorRef && editor && editor.selection) { + setSelectedColor(value); + + Transforms.select(editorRef as BaseEditor, editor.selection); + ReactEditor.focus(editorRef as ReactEditor); + + setMarks(editor, { [type]: value }); + } + }, + [editor, editorRef, type], + ); + + const updateColorAndClose = useCallback( + (value: string) => { + updateColor(value); + closeOnSelect && onToggle(); + }, + [closeOnSelect, onToggle, updateColor], + ); + + const clearColor = useCallback(() => { + if (editorRef && editor && editor.selection) { + Transforms.select(editorRef as BaseEditor, editor.selection); + ReactEditor.focus(editorRef as ReactEditor); + + if (selectedColor) { + removeMark(editor, { key: type }); + } + + closeOnSelect && onToggle(); + } + }, [closeOnSelect, editor, editorRef, onToggle, selectedColor, type]); + + useEffect(() => { + if (editor?.selection) { + setSelectedColor(color); + } + }, [color, editor?.selection]); + + return ( + + + + ); +}; + +export default ColorPickerToolbarDropdown; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/ImageToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/ImageToolbarButton.tsx new file mode 100644 index 00000000..dd983aeb --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/ImageToolbarButton.tsx @@ -0,0 +1,25 @@ +import { insertImage } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { isNotEmpty } from '@staticcms/core/lib/util/string.util'; +import { useMdPlateEditorState } from '@staticcms/markdown'; +import MediaToolbarButton from './MediaToolbarButton'; + +import type { FC } from 'react'; +import type { MediaToolbarButtonProps } from './MediaToolbarButton'; + +const ImageToolbarButton: FC> = props => { + const editor = useMdPlateEditorState(); + const handleInsert = useCallback( + (newUrl: string) => { + if (isNotEmpty(newUrl)) { + insertImage(editor, newUrl); + } + }, + [editor], + ); + + return ; +}; + +export default ImageToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/LinkToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/LinkToolbarButton.tsx new file mode 100644 index 00000000..caf2f384 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/LinkToolbarButton.tsx @@ -0,0 +1,31 @@ +import { ELEMENT_LINK, insertLink, someNode } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { isNotEmpty } from '@staticcms/core/lib/util/string.util'; +import { useMdPlateEditorState } from '@staticcms/markdown'; +import MediaToolbarButton from './MediaToolbarButton'; + +import type { FC } from 'react'; +import type { MediaToolbarButtonProps } from './MediaToolbarButton'; + +const LinkToolbarButton: FC> = props => { + const editor = useMdPlateEditorState(); + const handleInsert = useCallback( + (newUrl: string, newText: string | undefined) => { + if (isNotEmpty(newUrl) && isNotEmpty(newText)) { + insertLink( + editor, + { url: newUrl, text: newText }, + { at: editor.selection ?? editor.prevSelection! }, + ); + } + }, + [editor], + ); + + const isLink = !!editor?.selection && someNode(editor, { match: { type: ELEMENT_LINK } }); + + return ; +}; + +export default LinkToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/ListToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/ListToolbarButton.tsx new file mode 100644 index 00000000..e2dbd6e6 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/ListToolbarButton.tsx @@ -0,0 +1,34 @@ +import { getListItemEntry, toggleList } from '@udecode/plate-list'; +import React, { useCallback } from 'react'; + +import { useMdPlateEditorState } from '@staticcms/markdown'; +import ToolbarButton from './ToolbarButton'; + +import type { MdEditor } from '@staticcms/markdown'; +import type { FC } from 'react'; +import type { ToolbarButtonProps } from './ToolbarButton'; + +export interface ListToolbarButtonProps extends Omit { + type: string; +} + +const ListToolbarButton: FC = ({ type, ...props }) => { + const editor = useMdPlateEditorState(); + + const handleOnClick = useCallback( + (editor: MdEditor) => { + toggleList(editor, { + type, + }); + }, + [type], + ); + + const res = !!editor?.selection && getListItemEntry(editor); + + return ( + + ); +}; + +export default ListToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/MarkToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/MarkToolbarButton.tsx new file mode 100644 index 00000000..a237c75a --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/MarkToolbarButton.tsx @@ -0,0 +1,35 @@ +import { isMarkActive, toggleMark } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { useMdPlateEditorState } from '@staticcms/markdown'; +import ToolbarButton from './ToolbarButton'; + +import type { MdEditor } from '@staticcms/markdown'; +import type { FC } from 'react'; +import type { ToolbarButtonProps } from './ToolbarButton'; + +export interface MarkToolbarButtonProps extends Omit { + type: string; + clear?: string | string[]; +} + +const MarkToolbarButton: FC = ({ type, clear, ...props }) => { + const editor = useMdPlateEditorState(); + + const handleOnClick = useCallback( + (editor: MdEditor) => { + toggleMark(editor, { key: type, clear }); + }, + [clear, type], + ); + + return ( + + ); +}; + +export default MarkToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/MediaToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/MediaToolbarButton.tsx new file mode 100644 index 00000000..66efeb40 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/MediaToolbarButton.tsx @@ -0,0 +1,118 @@ +import { focusEditor } from '@udecode/plate-core'; +import React, { useCallback, useEffect, useState } from 'react'; +import { useFocused } from 'slate-react'; + +import { MediaPopover, useMdPlateEditorState } from '@staticcms/markdown'; +import ToolbarButton from './ToolbarButton'; + +import type { MarkdownField } from '@staticcms/core/interface'; +import type { MdEditor, MediaPopoverProps } from '@staticcms/markdown'; +import type { FC, MouseEvent } from 'react'; +import type { ToolbarButtonProps } from './ToolbarButton'; + +export interface MediaToolbarButtonProps + extends Omit, + Pick< + MediaPopoverProps, + 'collection' | 'field' | 'entry' | 'inserting' | 'forImage' | 'textLabel' + > { + containerRef: HTMLElement | null; + mediaOpen: boolean; + onMediaToggle: (open: boolean) => void; + onChange: (newUrl: string, newText: string | undefined) => void; +} + +const MediaToolbarButton: FC = ({ + containerRef, + collection, + field, + entry, + inserting, + forImage, + textLabel, + mediaOpen, + onMediaToggle, + onChange, + ...props +}) => { + const editor = useMdPlateEditorState(); + const [anchorEl, setAnchorEl] = useState(null); + + const [internalUrl, setInternalUrl] = useState(''); + const [internalText, setInternalText] = useState(''); + + const handleClose = useCallback( + (newValue: string | undefined, shouldFocus: boolean) => { + setAnchorEl(null); + setInternalUrl(''); + setInternalText(''); + if (shouldFocus) { + focusEditor(editor, editor.selection ?? editor.prevSelection!); + } + const finalValue = newValue ?? internalUrl; + if (finalValue) { + onChange(finalValue, internalText); + } + }, + [editor, onChange, internalUrl, internalText], + ); + + const handleOnClick = useCallback( + (_editor: MdEditor, event: MouseEvent) => { + if (anchorEl) { + handleClose(undefined, true); + return; + } + + setAnchorEl(event.currentTarget); + }, + [anchorEl, handleClose], + ); + + const handleMediaChange = useCallback( + (newValue: string) => { + handleClose(newValue, true); + }, + [handleClose], + ); + + const handlePopoverClose = useCallback( + (shouldFocus: boolean) => { + handleClose(undefined, shouldFocus); + }, + [handleClose], + ); + + const editorHasFocus = useFocused(); + useEffect(() => { + if (editorHasFocus) { + handleClose(undefined, false); + } + }, [editorHasFocus, handleClose]); + + return ( + <> + + + + ); +}; + +export default MediaToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/ToolbarButton.tsx b/core/src/widgets/markdown/plate/components/buttons/common/ToolbarButton.tsx new file mode 100644 index 00000000..05e6b3ab --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/ToolbarButton.tsx @@ -0,0 +1,80 @@ +import Button from '@mui/material/Button'; +import { useTheme } from '@mui/material/styles'; +import Tooltip from '@mui/material/Tooltip'; +import { focusEditor } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { useMdPlateEditorState } from '@staticcms/markdown'; + +import type { MdEditor } from '@staticcms/markdown'; +import type { FC, MouseEvent, ReactNode } from 'react'; + +export interface ToolbarButtonProps { + label?: string; + tooltip: string; + active?: boolean; + activeColor?: string; + icon: ReactNode; + disableFocusAfterClick?: boolean; + onClick: (editor: MdEditor, event: MouseEvent) => void; +} + +const ToolbarButton: FC = ({ + icon, + tooltip, + label, + active = false, + activeColor, + disableFocusAfterClick = false, + onClick, +}) => { + const editor = useMdPlateEditorState(); + const theme = useTheme(); + + const handleOnClick = useCallback( + (event: MouseEvent) => { + event.preventDefault(); + + if (!editor) { + return; + } + + onClick(editor, event); + + if (!disableFocusAfterClick) { + setTimeout(() => { + focusEditor(editor); + }); + } + }, + [disableFocusAfterClick, editor, onClick], + ); + + return ( + + + + ); +}; + +export default ToolbarButton; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/dropdown/ToolbarDropdown.tsx b/core/src/widgets/markdown/plate/components/buttons/common/dropdown/ToolbarDropdown.tsx new file mode 100644 index 00000000..386e3b72 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/dropdown/ToolbarDropdown.tsx @@ -0,0 +1,67 @@ +import Popover from '@mui/material/Popover'; +import { styled } from '@mui/material/styles'; +import React, { useCallback, useState } from 'react'; + +import ToolbarButton from '../ToolbarButton'; + +import type { FC, ReactNode } from 'react'; +import type { ToolbarButtonProps } from '../ToolbarButton'; + +const StyledPopperContent = styled('div')` + display: flex; + gap: 4px; + padding: 16px; + border-radius: 4px; + align-items: center; +`; + +export interface ToolbarDropdownProps extends Omit { + children: ReactNode; + onClose?: () => void; +} + +const ToolbarDropdown: FC = ({ children, onClose, ...controlProps }) => { + const [anchorEl, setAnchorEl] = useState(null); + + const [open, setOpen] = useState(false); + + const handleClose = useCallback(() => { + onClose?.(); + setOpen(false); + }, [onClose]); + + const handleControlClick = useCallback(() => { + if (open) { + handleClose(); + return; + } + setOpen(!open); + }, [handleClose, open]); + + return ( + <> +
    + +
    + + + {children} + + + ); +}; + +export default ToolbarDropdown; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/dropdown/index.ts b/core/src/widgets/markdown/plate/components/buttons/common/dropdown/index.ts new file mode 100644 index 00000000..3fa99bec --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/dropdown/index.ts @@ -0,0 +1,2 @@ +export * from './ToolbarDropdown'; +export { default as ToolbarDropdown } from './ToolbarDropdown'; diff --git a/core/src/widgets/markdown/plate/components/buttons/common/index.ts b/core/src/widgets/markdown/plate/components/buttons/common/index.ts new file mode 100644 index 00000000..91ee2a52 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/common/index.ts @@ -0,0 +1,17 @@ +export * from './AlignToolbarButton'; +export { default as AlignToolbarButton } from './AlignToolbarButton'; +export * from './BlockToolbarButton'; +export { default as BlockToolbarButton } from './BlockToolbarButton'; +export * from './ColorPickerToolbarDropdown'; +export { default as ColorPickerToolbarDropdown } from './ColorPickerToolbarDropdown'; +export * from './dropdown'; +export { default as ImageToolbarButton } from './ImageToolbarButton'; +export { default as LinkToolbarButton } from './LinkToolbarButton'; +export * from './ListToolbarButton'; +export { default as ListToolbarButton } from './ListToolbarButton'; +export * from './MarkToolbarButton'; +export { default as MarkToolbarButton } from './MarkToolbarButton'; +export * from './MediaToolbarButton'; +export { default as MediaToolbarButton } from './MediaToolbarButton'; +export * from './ToolbarButton'; +export { default as ToolbarButton } from './ToolbarButton'; diff --git a/core/src/widgets/markdown/plate/components/buttons/index.ts b/core/src/widgets/markdown/plate/components/buttons/index.ts new file mode 100644 index 00000000..6d599af3 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/buttons/index.ts @@ -0,0 +1,14 @@ +export { default as AlignToolbarButtons } from './AlignToolbarButtons'; +export * from './BasicElementToolbarButtons'; +export { default as BasicElementToolbarButtons } from './BasicElementToolbarButtons'; +export * from './BasicMarkToolbarButtons'; +export { default as BasicMarkToolbarButtons } from './BasicMarkToolbarButtons'; +export { default as ColorToolbarButtons } from './ColorToolbarButtons'; +export * from './common'; +export * from './FontTypeSelect'; +export { default as FontTypeSelect } from './FontTypeSelect'; +export { default as ListToolbarButtons } from './ListToolbarButtons'; +export * from './MediaToolbarButtons'; +export { default as MediaToolbarButtons } from './MediaToolbarButtons'; +export * from './TableToolbarButtons'; +export { default as TableToolbarButtons } from './TableToolbarButtons'; diff --git a/core/src/widgets/markdown/plate/components/color-picker/ColorButton.tsx b/core/src/widgets/markdown/plate/components/color-picker/ColorButton.tsx new file mode 100644 index 00000000..72dd2611 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/color-picker/ColorButton.tsx @@ -0,0 +1,51 @@ +import CheckIcon from '@mui/icons-material/Check'; +import Avatar from '@mui/material/Avatar'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; +import React, { useCallback } from 'react'; + +import type { FC } from 'react'; + +export type ColorButtonProps = { + name: string; + value: string; + isBrightColor: boolean; + isSelected: boolean; + updateColor: (color: string) => void; +}; + +const ColorButton: FC = ({ + name, + value, + isBrightColor, + isSelected, + updateColor, +}) => { + const handleOnClick = useCallback(() => { + updateColor(value); + }, [updateColor, value]); + + return ( + + + + {isSelected ? ( + + ) : ( + <>  + )} + + + + ); +}; + +export default ColorButton; diff --git a/core/src/widgets/markdown/plate/components/color-picker/ColorInput.tsx b/core/src/widgets/markdown/plate/components/color-picker/ColorInput.tsx new file mode 100644 index 00000000..7b376763 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/color-picker/ColorInput.tsx @@ -0,0 +1,39 @@ +import Button from '@mui/material/Button'; +import { styled } from '@mui/material/styles'; +import React, { useRef } from 'react'; + +import type { ChangeEvent, FC } from 'react'; + +const StyledInput = styled('input')` + visibility: hidden; + position: absolute; +`; + +export interface ColorInputProps { + value?: string; + onChange: (event: ChangeEvent) => void; +} + +const ColorInput: FC = ({ value = '#000000', onChange }) => { + const ref = useRef(null); + + function handleClick() { + // force click action on the input to open color picker + ref.current?.click(); + } + + function handleOnChange(event: ChangeEvent) { + onChange?.(event); + } + + return ( +
    + + +
    + ); +}; + +export default ColorInput; diff --git a/core/src/widgets/markdown/plate/components/color-picker/ColorPicker.tsx b/core/src/widgets/markdown/plate/components/color-picker/ColorPicker.tsx new file mode 100644 index 00000000..1f65cab6 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/color-picker/ColorPicker.tsx @@ -0,0 +1,71 @@ +import Button from '@mui/material/Button'; +import { styled } from '@mui/material/styles'; +import React, { memo } from 'react'; + +import Colors from './Colors'; +import CustomColors from './CustomColors'; + +import type { ColorType } from '@udecode/plate'; +import type { FC } from 'react'; + +const StyledColorPicker = styled('div')` + display: flex; + flex-direction: column; + gap: 16px; +`; + +const StyledDivider = styled('div')( + ({ theme }) => ` + height: 1px; + width: 100%; + background: ${theme.palette.text.secondary}; + opacity: 0.1; + `, +); + +export type ColorPickerProps = { + color?: string; + colors: ColorType[]; + customColors: ColorType[]; + updateColor: (color: string) => void; + updateCustomColor: (color: string) => void; + clearColor: () => void; + open?: boolean; +}; + +const ColorPickerInternal: FC = ({ + color, + colors, + customColors, + updateColor, + updateCustomColor, + clearColor, +}) => { + return ( + + + + + + + ); +}; + +const ColorPicker = memo( + ColorPickerInternal, + (prev, next) => + prev.color === next.color && + prev.colors === next.colors && + prev.customColors === next.customColors && + prev.open === next.open, +); + +export default ColorPicker; diff --git a/core/src/widgets/markdown/plate/components/color-picker/Colors.tsx b/core/src/widgets/markdown/plate/components/color-picker/Colors.tsx new file mode 100644 index 00000000..04a52588 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/color-picker/Colors.tsx @@ -0,0 +1,38 @@ +import { styled } from '@mui/material/styles'; +import React from 'react'; + +import ColorButton from './ColorButton'; + +import type { ColorType } from '@udecode/plate'; +import type { FC } from 'react'; + +const StyledColors = styled('div')` + display: grid; + grid-template-columns: repeat(10, 1fr); + gap: 0.25rem; +`; + +export type ColorsProps = { + color?: string; + colors: ColorType[]; + updateColor: (color: string) => void; +}; + +const Colors: FC = ({ color, colors, updateColor }) => { + return ( + + {colors.map(({ name, value, isBrightColor }) => ( + + ))} + + ); +}; + +export default Colors; diff --git a/core/src/widgets/markdown/plate/components/color-picker/CustomColors.tsx b/core/src/widgets/markdown/plate/components/color-picker/CustomColors.tsx new file mode 100644 index 00000000..e7b162a9 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/color-picker/CustomColors.tsx @@ -0,0 +1,83 @@ +import debounce from 'lodash/debounce'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import { styled } from '@mui/material/styles'; + +import ColorInput from './ColorInput'; +import Colors from './Colors'; + +import type { ColorType } from '@udecode/plate'; +import type { ChangeEvent, FC } from 'react'; + +const StyledCustomColors = styled('div')` + display: flex; + flex-direction: column; + gap: 8px; +`; + +export type CustomColorsProps = { + color?: string; + colors: ColorType[]; + customColors: ColorType[]; + updateColor: (color: string) => void; + updateCustomColor: (color: string) => void; +}; + +const CustomColors: FC = ({ + color, + colors, + customColors, + updateColor, + updateCustomColor, +}: CustomColorsProps) => { + const [customColor, setCustomColor] = useState(); + // eslint-disable-next-line react-hooks/exhaustive-deps + const updateCustomColorDebounced = useCallback(debounce(updateCustomColor, 100), [ + updateCustomColor, + ]); + + const [value, setValue] = useState(color || '#000000'); + + useEffect(() => { + if ( + !color || + customColors.some(c => c.value === color) || + colors.some(c => c.value === color) + ) { + return; + } + + setCustomColor(color); + }, [color, colors, customColors]); + + const computedColors = useMemo( + () => + customColor + ? [ + ...customColors, + { + name: '', + value: customColor, + isBrightColor: false, + }, + ] + : customColors, + [customColor, customColors], + ); + + const handleChange = useCallback( + (event: ChangeEvent) => { + setValue(event.target.value); + updateCustomColorDebounced(event.target.value); + }, + [updateCustomColorDebounced], + ); + + return ( + + + + + ); +}; + +export default CustomColors; diff --git a/core/src/widgets/markdown/plate/components/color-picker/index.ts b/core/src/widgets/markdown/plate/components/color-picker/index.ts new file mode 100644 index 00000000..502d52f5 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/color-picker/index.ts @@ -0,0 +1,10 @@ +export * from './ColorButton'; +export { default as ColorButton } from './ColorButton'; +export * from './ColorInput'; +export { default as ColorInput } from './ColorInput'; +export * from './ColorPicker'; +export { default as ColorPicker } from './ColorPicker'; +export * from './Colors'; +export { default as Colors } from './Colors'; +export * from './CustomColors'; +export { default as CustomColors } from './CustomColors'; diff --git a/core/src/widgets/markdown/plate/components/index.ts b/core/src/widgets/markdown/plate/components/index.ts new file mode 100644 index 00000000..edfd9234 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/index.ts @@ -0,0 +1,5 @@ +export * from './balloon-toolbar'; +export * from './buttons'; +export * from './color-picker'; +export * from './nodes'; +export * from './toolbar'; diff --git a/core/src/widgets/markdown/plate/components/nodes/blockquote/BlockquoteElement.tsx b/core/src/widgets/markdown/plate/components/nodes/blockquote/BlockquoteElement.tsx new file mode 100644 index 00000000..f9ca343d --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/blockquote/BlockquoteElement.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +import type { MdBlockquoteElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const BlockquoteElement: FC> = ({ + children, +}) => { + return
    {children}
    ; +}; + +export default BlockquoteElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/blockquote/index.ts b/core/src/widgets/markdown/plate/components/nodes/blockquote/index.ts new file mode 100644 index 00000000..c95cafbf --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/blockquote/index.ts @@ -0,0 +1,2 @@ +/* eslint-disable import/prefer-default-export */ +export { default as BlockquoteElement } from './BlockquoteElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/code-block/CodeBlockElement.tsx b/core/src/widgets/markdown/plate/components/nodes/code-block/CodeBlockElement.tsx new file mode 100644 index 00000000..f9344182 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/code-block/CodeBlockElement.tsx @@ -0,0 +1,162 @@ +import { styled } from '@mui/material/styles'; +import { findNodePath, setNodes } from '@udecode/plate'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import Frame from 'react-frame-component'; +import { v4 as uuid } from 'uuid'; + +import Outline from '@staticcms/core/components/UI/Outline'; +import { useWindowEvent } from '@staticcms/core/lib/util/window.util'; +import CodeBlockFrame from './CodeBlockFrame'; + +import type { MdCodeBlockElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps, TCodeBlockElement } from '@udecode/plate'; +import type { FC, MutableRefObject, RefObject } from 'react'; + +const StyledCodeBlock = styled('div')` + position: relative; + margin: 12px 0; + overflow: hidden; + display: flex; + flex-direction: column; +`; + +const StyledInput = styled('input')` + flex-grow: 1; + outline: none; + padding: 8px; + border: 1px solid rgba(0, 0, 0, 0.35); + border-radius: 4px 4px 0 0; + width: 100%; + height: 34px; +`; + +const StyledCodeBlockContent = styled('div')` + position: relative; + display: flex; + + & div { + outline: none; + } +`; + +const StyledHiddenChildren = styled('div')` + height: 0; + position: absolute; +`; + +const CodeBlockElement: FC> = props => { + const [langHasFocus, setLangHasFocus] = useState(false); + const [codeHasFocus, setCodeHasFocus] = useState(false); + + const { attributes, nodeProps, element, editor, children } = props; + const id = useMemo(() => uuid(), []); + + const lang = ('lang' in element ? element.lang : '') as string | undefined; + const code = ('code' in element ? element.code ?? '' : '') as string; + + const handleChange = useCallback( + (value: string) => { + const path = findNodePath(editor, element); + path && setNodes(editor, { code: value }, { at: path }); + }, + [editor, element], + ); + + const receiveMessage = useCallback( + (event: MessageEvent) => { + switch (event.data.message) { + case `code_block_${id}_onChange`: + handleChange(event.data.value); + break; + case `code_block_${id}_onFocus`: + setCodeHasFocus(true); + break; + case `code_block_${id}_onBlur`: + setCodeHasFocus(false); + break; + } + }, + [handleChange, id], + ); + + useWindowEvent('message', receiveMessage); + + const initialFrameContent = useMemo( + () => ` + + + + + + +
    + + `, + [], + ); + + const [height, setHeight] = useState(24); + const iframeRef = useRef(); + + const handleResize = useCallback( + (iframe: MutableRefObject<(Frame & HTMLIFrameElement) | undefined>) => { + const height = iframe.current?.contentDocument?.body?.scrollHeight ?? 0; + if (height !== 0) { + setHeight(height); + } + }, + [], + ); + + useEffect(() => handleResize(iframeRef), [handleResize, iframeRef, code]); + useEffect(() => { + setTimeout(() => handleResize(iframeRef), 500); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + <> + + setLangHasFocus(true)} + onBlur={() => setLangHasFocus(false)} + onChange={event => { + const value = event.target.value; + const path = findNodePath(editor, element); + path && setNodes(editor, { lang: value }, { at: path }); + }} + /> + + & RefObject} + style={{ + border: 'none', + width: '100%', + height, + overflow: 'hidden', + }} + initialContent={initialFrameContent} + > + + + + + {children} + + + ); +}; + +export default CodeBlockElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/code-block/CodeBlockFrame.tsx b/core/src/widgets/markdown/plate/components/nodes/code-block/CodeBlockFrame.tsx new file mode 100644 index 00000000..75e9adc8 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/code-block/CodeBlockFrame.tsx @@ -0,0 +1,75 @@ +import { indentWithTab } from '@codemirror/commands'; +import { keymap } from '@codemirror/view'; +import { loadLanguage } from '@uiw/codemirror-extensions-langs'; +import CodeMirror from '@uiw/react-codemirror'; +import { basicSetup } from 'codemirror'; +import React, { useCallback, useMemo } from 'react'; +import { useFrame } from 'react-frame-component'; + +import languages from '@staticcms/code/data/languages'; + +import type { FC } from 'react'; + +export interface CodeBlockFrameProps { + id: string; + lang?: string; + code: string; +} + +const CodeBlockFrame: FC = ({ id, lang, code }) => { + const { window } = useFrame(); + + const loadedLangExtension = useMemo(() => { + if (!lang) { + return null; + } + + const languageName = languages.find(language => + language.identifiers.includes(lang), + )?.codemirror_mode; + + if (!languageName) { + return null; + } + + return loadLanguage(languageName); + }, [lang]); + + const extensions = useMemo(() => { + const coreExtensions = [basicSetup, keymap.of([indentWithTab])]; + + if (!loadedLangExtension) { + return coreExtensions; + } + + return [...coreExtensions, loadedLangExtension]; + }, [loadedLangExtension]); + + const handleChange = useCallback( + (value: string) => { + window?.parent.postMessage({ message: `code_block_${id}_onChange`, value }); + }, + [id, window], + ); + + const handleFocus = useCallback(() => { + window?.parent.postMessage({ message: `code_block_${id}_onFocus` }); + }, [id, window?.parent]); + + const handleBlur = useCallback(() => { + window?.parent.postMessage({ message: `code_block_${id}_onBlur` }); + }, [id, window?.parent]); + + return ( + + ); +}; + +export default CodeBlockFrame; diff --git a/core/src/widgets/markdown/plate/components/nodes/code-block/index.ts b/core/src/widgets/markdown/plate/components/nodes/code-block/index.ts new file mode 100644 index 00000000..5d6a69ee --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/code-block/index.ts @@ -0,0 +1,3 @@ +export { default as CodeBlockElement } from './CodeBlockElement'; +export * from './CodeBlockFrame'; +export { default as CodeBlockFrame } from './CodeBlockFrame'; diff --git a/core/src/widgets/markdown/plate/components/nodes/common/MediaPopover.tsx b/core/src/widgets/markdown/plate/components/nodes/common/MediaPopover.tsx new file mode 100644 index 00000000..ec278cec --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/common/MediaPopover.tsx @@ -0,0 +1,320 @@ +import DeleteForeverIcon from '@mui/icons-material/DeleteForever'; +import OpenInNewIcon from '@mui/icons-material/OpenInNew'; +import Button from '@mui/material/Button'; +import Popper from '@mui/material/Popper'; +import { styled, useTheme } from '@mui/material/styles'; +import TextField from '@mui/material/TextField'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useFocused } from 'slate-react'; + +import useDebounce from '@staticcms/core/lib/hooks/useDebounce'; +import useIsMediaAsset from '@staticcms/core/lib/hooks/useIsMediaAsset'; +import useMediaInsert from '@staticcms/core/lib/hooks/useMediaInsert'; + +import type { Collection, Entry, FileOrImageField, MarkdownField } from '@staticcms/core/interface'; +import type { ChangeEvent, KeyboardEvent } from 'react'; + +const StyledPopperContent = styled('div')( + ({ theme }) => ` + display: flex; + gap: 4px; + background: ${theme.palette.background.paper}; + box-shadow: ${theme.shadows[8]}; + margin-bottom: 10px; + padding: 6px; + border-radius: 4px; + align-items: center; + position: relative; + `, +); + +const StyledPopoverContent = styled(StyledPopperContent)` + display: flex; + align-items: center; + padding: 4px 8px; + gap: 2px; +`; + +const StyledPopoverEditingContent = styled(StyledPopperContent)` + display: flex; + flex-direction: column; + align-items: center; + padding: 16px; + gap: 16px; + width: 300px; +`; + +const StyledFloatingVerticalDivider = styled('div')` + width: 1px; + height: 20px; + background-color: rgba(229, 231, 235, 1); + margin: 0 4px; +`; + +export interface MediaPopoverProps { + containerRef: HTMLElement | null; + anchorEl: HTMLElement | null; + url: string; + text?: string; + textLabel?: string; + inserting?: boolean; + forImage?: boolean; + collection: Collection; + field: T; + entry: Entry; + onUrlChange: (newValue: string) => void; + onTextChange?: (newValue: string) => void; + onClose: (shouldFocus: boolean) => void; + mediaOpen?: boolean; + onMediaToggle?: (open: boolean) => void; + onMediaChange: (newValue: string) => void; + onRemove?: () => void; +} + +const MediaPopover = ({ + containerRef, + anchorEl, + url, + text, + textLabel = 'Text', + inserting = false, + forImage = false, + collection, + field, + entry, + onUrlChange, + onTextChange, + onClose, + mediaOpen, + onMediaToggle, + onMediaChange, + onRemove, +}: MediaPopoverProps) => { + const theme = useTheme(); + const buttonRef = useRef(null); + const urlRef = useRef(null); + const textRef = useRef(null); + + const [editing, setEditing] = useState(inserting); + + const hasEditorFocus = useFocused(); + const debouncedHasEditorFocus = useDebounce(hasEditorFocus, 150); + const [hasFocus, setHasFocus] = useState(false); + const debouncedHasFocus = useDebounce(hasFocus, 150); + + const handleClose = useCallback( + (shouldFocus: boolean) => { + onClose(shouldFocus); + if (!inserting) { + setEditing(false); + } + }, + [inserting, onClose], + ); + + const isMediaAsset = useIsMediaAsset(url, collection, field, entry); + + const mediaLibraryFieldOptions = useMemo(() => { + return field.media_library ?? {}; + }, [field.media_library]); + + const chooseUrl = useMemo( + () => 'choose_url' in mediaLibraryFieldOptions && (mediaLibraryFieldOptions.choose_url ?? true), + [mediaLibraryFieldOptions], + ); + + const urlDisabled = useMemo( + () => !chooseUrl && isMediaAsset && forImage, + [chooseUrl, forImage, isMediaAsset], + ); + + useEffect(() => { + if (anchorEl) { + if (!editing) { + return; + } + + if (urlDisabled) { + setTimeout(() => { + textRef.current?.focus(); + }); + return; + } + + setTimeout(() => { + urlRef.current?.focus(); + }); + return; + } + + if (!inserting) { + setEditing(false); + } + }, [anchorEl, editing, inserting, urlDisabled]); + + useEffect(() => { + if ( + !debouncedHasEditorFocus && + !hasEditorFocus && + !hasFocus && + !debouncedHasFocus && + !mediaOpen + ) { + handleClose(false); + } + }, [ + debouncedHasEditorFocus, + debouncedHasFocus, + handleClose, + hasEditorFocus, + hasFocus, + mediaOpen, + ]); + + const handleFocus = useCallback(() => { + setHasFocus(true); + }, []); + + const handleBlur = useCallback(() => { + setHasFocus(false); + }, []); + + const handleMediaChange = useCallback( + (newValue: string) => { + onMediaChange(newValue); + onMediaToggle?.(false); + }, + [onMediaChange, onMediaToggle], + ); + + const handleOpenMediaLibrary = useMediaInsert(url, { field, forImage }, handleMediaChange); + + const handleMediaOpen = useCallback(() => { + onMediaToggle?.(true); + handleOpenMediaLibrary(); + }, [handleOpenMediaLibrary, onMediaToggle]); + + const handleUrlChange = useCallback( + (event: ChangeEvent) => { + onUrlChange(event.target.value); + }, + [onUrlChange], + ); + + const handleTextChange = useCallback( + (event: ChangeEvent) => { + onTextChange?.(event.target.value); + }, + [onTextChange], + ); + + const handleEditStart = useCallback(() => { + setEditing(true); + }, []); + + const handleKeyDown = useCallback( + (event: KeyboardEvent) => { + if (event.key === 'Enter') { + event.stopPropagation(); + event.preventDefault(); + handleClose(true); + if (!inserting) { + setTimeout(() => { + setEditing(false); + }); + } + } + }, + [inserting, handleClose], + ); + + const open = Boolean(anchorEl); + const id = open ? 'edit-popover' : undefined; + + return ( + + {!editing ? ( + + + + {!forImage ? ( + + ) : null} + + + ) : ( + + + {!inserting || !forImage ? ( + + ) : null} + + + )} + + ); +}; + +export default MediaPopover; diff --git a/core/src/widgets/markdown/plate/components/nodes/common/index.ts b/core/src/widgets/markdown/plate/components/nodes/common/index.ts new file mode 100644 index 00000000..3c547415 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/common/index.ts @@ -0,0 +1,2 @@ +export { default as MediaPopover } from './MediaPopover'; +export * from './MediaPopover'; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/Heading1.tsx b/core/src/widgets/markdown/plate/components/nodes/headings/Heading1.tsx new file mode 100644 index 00000000..23d55579 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/Heading1.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { MdH1Element, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const Heading1: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( +

    + {children} +

    + ); +}; + +export default Heading1; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/Heading2.tsx b/core/src/widgets/markdown/plate/components/nodes/headings/Heading2.tsx new file mode 100644 index 00000000..87106f70 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/Heading2.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; +import type { MdH2Element, MdValue } from '@staticcms/markdown'; + +const Heading2: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( +

    + {children} +

    + ); +}; + +export default Heading2; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/Heading3.tsx b/core/src/widgets/markdown/plate/components/nodes/headings/Heading3.tsx new file mode 100644 index 00000000..bee2f1b9 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/Heading3.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { MdH3Element, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const Heading3: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( +

    + {children} +

    + ); +}; + +export default Heading3; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/Heading4.tsx b/core/src/widgets/markdown/plate/components/nodes/headings/Heading4.tsx new file mode 100644 index 00000000..be7c46e8 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/Heading4.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { MdH4Element, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const Heading4: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( +

    + {children} +

    + ); +}; + +export default Heading4; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/Heading5.tsx b/core/src/widgets/markdown/plate/components/nodes/headings/Heading5.tsx new file mode 100644 index 00000000..f0625f79 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/Heading5.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { MdH5Element, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const Heading5: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( +
    + {children} +
    + ); +}; + +export default Heading5; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/Heading6.tsx b/core/src/widgets/markdown/plate/components/nodes/headings/Heading6.tsx new file mode 100644 index 00000000..7ebb9cc7 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/Heading6.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { MdH6Element, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const Heading6: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( +
    + {children} +
    + ); +}; + +export default Heading6; diff --git a/core/src/widgets/markdown/plate/components/nodes/headings/index.ts b/core/src/widgets/markdown/plate/components/nodes/headings/index.ts new file mode 100644 index 00000000..a2ce3861 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/headings/index.ts @@ -0,0 +1,6 @@ +export { default as Heading1 } from './Heading1'; +export { default as Heading2 } from './Heading2'; +export { default as Heading3 } from './Heading3'; +export { default as Heading4 } from './Heading4'; +export { default as Heading5 } from './Heading5'; +export { default as Heading6 } from './Heading6'; diff --git a/core/src/widgets/markdown/plate/components/nodes/horizontal-rule/HrElement.tsx b/core/src/widgets/markdown/plate/components/nodes/horizontal-rule/HrElement.tsx new file mode 100644 index 00000000..86a5ac13 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/horizontal-rule/HrElement.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { MdValue, MdHrElement } from '@staticcms/markdown'; +import type { FC } from 'react'; + +const HrElement: FC> = props => { + const { attributes, children, nodeProps } = props; + + return ( +
    +
    + {children} +
    + ); +}; + +export default HrElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/horizontal-rule/index.ts b/core/src/widgets/markdown/plate/components/nodes/horizontal-rule/index.ts new file mode 100644 index 00000000..6d05d39c --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/horizontal-rule/index.ts @@ -0,0 +1,2 @@ +/* eslint-disable import/prefer-default-export */ +export { default as HrElement } from './HrElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/image/index.ts b/core/src/widgets/markdown/plate/components/nodes/image/index.ts new file mode 100644 index 00000000..fcc16270 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/image/index.ts @@ -0,0 +1,2 @@ +export { default as withImageElement } from './withImageElement'; +export * from './withImageElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/image/withImageElement.tsx b/core/src/widgets/markdown/plate/components/nodes/image/withImageElement.tsx new file mode 100644 index 00000000..64ca38a8 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/image/withImageElement.tsx @@ -0,0 +1,152 @@ +import { + findNodePath, + getNode, + removeNodes, + setNodes, + setSelection, + usePlateSelection, +} from '@udecode/plate'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { useFocused } from 'slate-react'; + +import useMediaAsset from '@staticcms/core/lib/hooks/useMediaAsset'; +import { isEmpty } from '@staticcms/core/lib/util/string.util'; +import { MediaPopover } from '@staticcms/markdown'; + +import type { Collection, Entry, MarkdownField } from '@staticcms/core/interface'; +import type { MdImageElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { TMediaElement } from '@udecode/plate-media'; +import type { FC } from 'react'; + +export interface WithImageElementProps { + containerRef: HTMLElement | null; + collection: Collection; + entry: Entry; + field: MarkdownField; +} + +const withImageElement = ({ containerRef, collection, entry, field }: WithImageElementProps) => { + const ImageElement: FC> = ({ + element, + editor, + children, + }) => { + const { url, alt } = element; + const [internalUrl, setInternalUrl] = useState(url); + const [internalAlt, setInternalAlt] = useState(alt); + const imageRef = useRef(null); + + const [anchorEl, setAnchorEl] = useState(null); + const hasEditorFocus = useFocused(); + + const handleBlur = useCallback(() => { + setAnchorEl(null); + }, []); + + const handleChange = useCallback( + (value: string, key: string) => { + const path = findNodePath(editor, element); + path && setNodes(editor, { [key]: value }, { at: path }); + }, + [editor, element], + ); + + const handleOpenPopover = useCallback(() => { + const path = findNodePath(editor, element); + let selection = editor.prevSelection!; + if (path) { + const childPath = [...path, 0]; + selection = { + anchor: { + path: childPath, + offset: 0, + }, + focus: { + path: childPath, + offset: 0, + }, + }; + } + setSelection(editor, selection); + setAnchorEl(imageRef.current); + }, [editor, element]); + + const handleClose = useCallback(() => { + setAnchorEl(null); + handleChange(internalUrl, 'url'); + handleChange(internalAlt ?? '', 'alt'); + }, [handleChange, internalAlt, internalUrl]); + + const assetSource = useMediaAsset(url, collection, field, entry); + + const handleMediaChange = useCallback( + (newValue: string) => { + handleChange(newValue, 'url'); + setInternalUrl(newValue); + }, + [handleChange], + ); + + const handleRemove = useCallback(() => { + const path = findNodePath(editor, element); + removeNodes(editor, { at: path }); + }, [editor, element]); + + const selection = usePlateSelection(); + + useEffect(() => { + if (!hasEditorFocus || !selection) { + return; + } + + const node = getNode(editor, selection.anchor.path); + const firstChild = + 'children' in element && element.children.length > 0 ? element.children[0] : undefined; + + if (!node) { + return; + } + + if (node !== element && node !== firstChild) { + handleClose(); + return; + } + + handleOpenPopover(); + }, [handleClose, hasEditorFocus, element, selection, editor, handleOpenPopover]); + + return ( +
    + {!isEmpty(alt) + + {children} +
    + ); + }; + + return ImageElement; +}; + +export default withImageElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/index.ts b/core/src/widgets/markdown/plate/components/nodes/index.ts new file mode 100644 index 00000000..90d5ccaa --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/index.ts @@ -0,0 +1,10 @@ +export * from './blockquote'; +export * from './code-block'; +export * from './common'; +export * from './headings'; +export * from './horizontal-rule'; +export * from './image'; +export * from './link'; +export * from './list'; +export * from './paragraph'; +export * from './table'; diff --git a/core/src/widgets/markdown/plate/components/nodes/link/index.ts b/core/src/widgets/markdown/plate/components/nodes/link/index.ts new file mode 100644 index 00000000..f35d8885 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/link/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as withLinkElement } from './withLinkElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/link/withLinkElement.tsx b/core/src/widgets/markdown/plate/components/nodes/link/withLinkElement.tsx new file mode 100644 index 00000000..2e9dd025 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/link/withLinkElement.tsx @@ -0,0 +1,100 @@ +import { + findNodePath, + focusEditor, + getEditorString, + setNodes, + unwrapLink, + upsertLink, +} from '@udecode/plate'; +import React, { useCallback, useMemo, useState } from 'react'; + +import MediaPopover from '../common/MediaPopover'; + +import type { MdLinkElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC, MouseEvent } from 'react'; +import type { Collection, Entry, MarkdownField } from '@staticcms/core/interface'; + +export interface WithLinkElementProps { + containerRef: HTMLElement | null; + collection: Collection; + field: MarkdownField; + entry: Entry; +} + +const withLinkElement = ({ containerRef, collection, field, entry }: WithLinkElementProps) => { + const LinkElement: FC> = ({ + attributes, + children, + nodeProps, + element, + editor, + }) => { + const [anchorEl, setAnchorEl] = useState(null); + + const { url } = element; + const path = useMemo(() => findNodePath(editor, element), [editor, element]); + + const [internalUrl, setInternalUrl] = useState(url); + const [internalText, setInternalText] = useState(getEditorString(editor, path)); + + const handleClick = useCallback((event: MouseEvent) => { + setAnchorEl(event.currentTarget); + }, []); + + const handleRemove = useCallback(() => { + if (!editor.selection) { + return; + } + unwrapLink(editor); + focusEditor(editor, editor.selection); + }, [editor]); + + const handleChange = useCallback( + (newUrl: string, newText: string) => { + path && setNodes(editor, { url: newUrl }, { at: path }); + upsertLink(editor, { url: newUrl, text: newText }); + }, + [editor, path], + ); + + const handleMediaChange = useCallback( + (newValue: string) => { + handleChange(newValue, internalText); + setInternalUrl(newValue); + }, + [handleChange, internalText], + ); + + const handleClose = useCallback(() => { + setAnchorEl(null); + handleChange(internalUrl, internalText); + }, [handleChange, internalText, internalUrl]); + + return ( + <> +
    + {children} + + + + ); + }; + + return LinkElement; +}; + +export default withLinkElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/list/ListItemContentElement.tsx b/core/src/widgets/markdown/plate/components/nodes/list/ListItemContentElement.tsx new file mode 100644 index 00000000..b19de819 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/list/ListItemContentElement.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +import type { MdListItemElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const ListItemContentElement: FC> = ({ + children, +}) => { + return {children}; +}; + +export default ListItemContentElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/list/ListItemElement.tsx b/core/src/widgets/markdown/plate/components/nodes/list/ListItemElement.tsx new file mode 100644 index 00000000..71f4a4c5 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/list/ListItemElement.tsx @@ -0,0 +1,36 @@ +import { findNodePath, setNodes } from '@udecode/plate'; +import React, { useCallback } from 'react'; + +import { isNotNullish } from '@staticcms/core/lib/util/null.util'; + +import type { MdListItemElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { ChangeEvent, FC } from 'react'; + +const ListItemElement: FC> = ({ + children, + editor, + element, +}) => { + const checked = element.checked; + + const handleChange = useCallback( + (event: ChangeEvent) => { + const value = event.target.checked; + const path = findNodePath(editor, element); + path && setNodes(editor, { checked: value }, { at: path }); + }, + [editor, element], + ); + + return ( +
  • + {isNotNullish(checked) ? ( + + ) : null} + {children} +
  • + ); +}; + +export default ListItemElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/list/OrderedListElement.tsx b/core/src/widgets/markdown/plate/components/nodes/list/OrderedListElement.tsx new file mode 100644 index 00000000..e1c86c91 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/list/OrderedListElement.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +import type { MdNumberedListElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const OrderedListElement: FC> = ({ + children, +}) => { + return
      {children}
    ; +}; + +export default OrderedListElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/list/UnorderedListElement.tsx b/core/src/widgets/markdown/plate/components/nodes/list/UnorderedListElement.tsx new file mode 100644 index 00000000..92260b95 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/list/UnorderedListElement.tsx @@ -0,0 +1,13 @@ +import React from 'react'; + +import type { MdBulletedListElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const UnorderedListElement: FC> = ({ + children, +}) => { + return
      {children}
    ; +}; + +export default UnorderedListElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/list/index.ts b/core/src/widgets/markdown/plate/components/nodes/list/index.ts new file mode 100644 index 00000000..d0bf389f --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/list/index.ts @@ -0,0 +1,4 @@ +export { default as ListItemContentElement } from './ListItemContentElement'; +export { default as ListItemElement } from './ListItemElement'; +export { default as OrderedListElement } from './OrderedListElement'; +export { default as UnorderedListElement } from './UnorderedListElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/paragraph/Paragraph.tsx b/core/src/widgets/markdown/plate/components/nodes/paragraph/Paragraph.tsx new file mode 100644 index 00000000..e91ab020 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/paragraph/Paragraph.tsx @@ -0,0 +1,14 @@ +import React from 'react'; + +import type { MdParagraphElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const Paragraph: FC> = ({ + children, + element: { align }, +}) => { + return

    {children}

    ; +}; + +export default Paragraph; diff --git a/core/src/widgets/markdown/plate/components/nodes/paragraph/index.ts b/core/src/widgets/markdown/plate/components/nodes/paragraph/index.ts new file mode 100644 index 00000000..5aa80d30 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/paragraph/index.ts @@ -0,0 +1,2 @@ +/* eslint-disable import/prefer-default-export */ +export { default as Paragraph } from './Paragraph'; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/TableCellElement/TableCellElement.tsx b/core/src/widgets/markdown/plate/components/nodes/table/TableCellElement/TableCellElement.tsx new file mode 100644 index 00000000..849123b4 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/TableCellElement/TableCellElement.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { MdTableCellElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const TableCellElement: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( + +
    {children}
    + + ); +}; + +export default TableCellElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/TableCellElement/index.ts b/core/src/widgets/markdown/plate/components/nodes/table/TableCellElement/index.ts new file mode 100644 index 00000000..845ca5d7 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/TableCellElement/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as TableCellElement } from './TableCellElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/TableElement/TableElement.tsx b/core/src/widgets/markdown/plate/components/nodes/table/TableElement/TableElement.tsx new file mode 100644 index 00000000..7046efd5 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/TableElement/TableElement.tsx @@ -0,0 +1,22 @@ +import { useSelectedCells } from '@udecode/plate'; +import React from 'react'; + +import type { MdTableElement, MdValue } from '@staticcms/markdown'; +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const TableElement: FC> = ({ + attributes, + children, + nodeProps, +}) => { + useSelectedCells(); + + return ( + + {children} +
    + ); +}; + +export default TableElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/TableElement/index.ts b/core/src/widgets/markdown/plate/components/nodes/table/TableElement/index.ts new file mode 100644 index 00000000..8adbefce --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/TableElement/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as TableElement } from './TableElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/TableRowElement/TableRowElement.tsx b/core/src/widgets/markdown/plate/components/nodes/table/TableRowElement/TableRowElement.tsx new file mode 100644 index 00000000..1dc3173e --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/TableRowElement/TableRowElement.tsx @@ -0,0 +1,19 @@ +import React from 'react'; + +import type { PlateRenderElementProps } from '@udecode/plate'; +import type { FC } from 'react'; +import type { MdTableRowElement, MdValue } from '@staticcms/markdown'; + +const TableRowElement: FC> = ({ + attributes, + children, + nodeProps, +}) => { + return ( + + {children} + + ); +}; + +export default TableRowElement; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/TableRowElement/index.ts b/core/src/widgets/markdown/plate/components/nodes/table/TableRowElement/index.ts new file mode 100644 index 00000000..2e35f1f8 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/TableRowElement/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as TableRowElement } from './TableRowElement'; diff --git a/core/src/widgets/markdown/plate/components/nodes/table/index.ts b/core/src/widgets/markdown/plate/components/nodes/table/index.ts new file mode 100644 index 00000000..0669c4d0 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/nodes/table/index.ts @@ -0,0 +1,3 @@ +export * from './TableCellElement/index'; +export * from './TableElement/index'; +export * from './TableRowElement/index'; diff --git a/core/src/widgets/markdown/plate/components/toolbar/Toolbar.tsx b/core/src/widgets/markdown/plate/components/toolbar/Toolbar.tsx new file mode 100644 index 00000000..7059db90 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/toolbar/Toolbar.tsx @@ -0,0 +1,75 @@ +import { styled } from '@mui/material/styles'; +import React from 'react'; + +import AlignToolbarButtons from '../buttons/AlignToolbarButtons'; +import BasicElementToolbarButtons from '../buttons/BasicElementToolbarButtons'; +import BasicMarkToolbarButtons from '../buttons/BasicMarkToolbarButtons'; +import ColorToolbarButtons from '../buttons/ColorToolbarButtons'; +import ListToolbarButtons from '../buttons/ListToolbarButtons'; +import MediaToolbarButton from '../buttons/MediaToolbarButtons'; + +import type { FC } from 'react'; +import type { Collection, Entry, MarkdownField } from '@staticcms/core/interface'; + +const StyledToolbar = styled('div')( + ({ theme }) => ` + display: flex; + align-items: center; + user-select: none; + box-sizing: content-box; + color: rgb(68,68,68); + min-height: 40px; + position: relative; + flex-wrap: wrap; + margin-top: -1.25rem; + margin-left: -1.25rem; + margin-right: -1.25rem; + padding: 12px; + border-bottom: 2px solid #eee; + gap:2px; + background: ${theme.palette.background.paper}; + `, +); + +const StyledDivider = styled('div')( + ({ theme }) => ` + height: 18px; + width: 1px; + background: ${theme.palette.text.secondary}; + margin: 0 4px; + opacity: 0.5; + `, +); + +export interface ToolbarProps { + containerRef: HTMLElement | null; + collection: Collection; + field: MarkdownField; + entry: Entry; +} + +const Toolbar: FC = ({ containerRef, collection, field, entry }) => { + return ( + + + + + + + + + + + + + + ); +}; + +export default Toolbar; diff --git a/core/src/widgets/markdown/plate/components/toolbar/index.ts b/core/src/widgets/markdown/plate/components/toolbar/index.ts new file mode 100644 index 00000000..a328d856 --- /dev/null +++ b/core/src/widgets/markdown/plate/components/toolbar/index.ts @@ -0,0 +1,2 @@ +export * from './Toolbar'; +export { default as Toolbar } from './Toolbar'; diff --git a/core/src/widgets/markdown/plate/editableProps.ts b/core/src/widgets/markdown/plate/editableProps.ts new file mode 100644 index 00000000..3a6979c8 --- /dev/null +++ b/core/src/widgets/markdown/plate/editableProps.ts @@ -0,0 +1,11 @@ +import type { TEditableProps } from '@udecode/plate'; +import type { MdValue } from './plateTypes'; + +const editableProps: TEditableProps = { + spellCheck: false, + autoFocus: false, + readOnly: false, + placeholder: 'Type…', +}; + +export default editableProps; diff --git a/core/src/widgets/markdown/plate/hooks/index.ts b/core/src/widgets/markdown/plate/hooks/index.ts new file mode 100644 index 00000000..9207feff --- /dev/null +++ b/core/src/widgets/markdown/plate/hooks/index.ts @@ -0,0 +1,3 @@ +export { default as useMarkdownToSlate } from './useMarkdownToSlate'; +export * from './useMdx'; +export { default as useMdx } from './useMdx'; diff --git a/core/src/widgets/markdown/plate/hooks/useMarkdownToSlate.tsx b/core/src/widgets/markdown/plate/hooks/useMarkdownToSlate.tsx new file mode 100644 index 00000000..7727c5f3 --- /dev/null +++ b/core/src/widgets/markdown/plate/hooks/useMarkdownToSlate.tsx @@ -0,0 +1,40 @@ +import { ELEMENT_PARAGRAPH } from '@udecode/plate'; +import { useEffect, useState } from 'react'; +import gfm from 'remark-gfm'; +import mdx from 'remark-mdx'; +import markdown from 'remark-parse'; +import { unified } from 'unified'; + +import toSlatePlugin from '../serialization/slate/toSlatePlugin'; + +import type { MdValue } from '../plateTypes'; + +const useMarkdownToSlate = (markdownValue: string): [MdValue, boolean] => { + const [loaded, setLoaded] = useState(false); + const [slateValue, setSlateValue] = useState([]); + + useEffect(() => { + unified() + .use(markdown) + .use(gfm) + .use(mdx) + .use(toSlatePlugin) + .process(markdownValue, (err, file) => { + if (err) { + console.error(err); + return; + } + setSlateValue(file?.result as MdValue); + setLoaded(true); + }); + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return [ + slateValue.length > 0 ? slateValue : [{ type: ELEMENT_PARAGRAPH, children: [{ text: '' }] }], + loaded, + ]; +}; + +export default useMarkdownToSlate; diff --git a/core/src/widgets/markdown/plate/hooks/useMdx.tsx b/core/src/widgets/markdown/plate/hooks/useMdx.tsx new file mode 100644 index 00000000..9390cb3d --- /dev/null +++ b/core/src/widgets/markdown/plate/hooks/useMdx.tsx @@ -0,0 +1,50 @@ +import { evaluate } from '@mdx-js/mdx'; +import { useCallback, useEffect, useState } from 'react'; +import * as runtime from 'react/jsx-runtime'; +import remarkGfm from 'remark-gfm'; +import { VFile } from 'vfile'; +import { VFileMessage } from 'vfile-message'; + +import useDebouncedCallback from '@staticcms/core/lib/hooks/useDebouncedCallback'; +import flattenListItemParagraphs from '../serialization/slate/flattenListItemParagraphs'; + +export interface UseMdxState { + file: VFile | null; +} + +export default function useMdx(input: string): [UseMdxState, (value: string) => void] { + const [state, setState] = useState({ file: null }); + + const setValueCallback = useCallback(async (value: string) => { + const file = new VFile({ basename: 'editor.mdx', value }); + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const options: any = { + ...runtime, + useDynamicImport: true, + remarkPlugins: [remarkGfm, flattenListItemParagraphs], + }; + + try { + file.result = (await evaluate(file, options)).default; + } catch (error) { + const message = error instanceof VFileMessage ? error : new VFileMessage(String(error)); + + if (!file.messages.includes(message)) { + file.messages.push(message); + } + + message.fatal = true; + } + + setState({ file }); + }, []); + + const setValue = useDebouncedCallback(setValueCallback, 100); + + useEffect(() => { + setValue(input); + }, [input, setValue]); + + return [state, setValue]; +} diff --git a/core/src/widgets/markdown/plate/index.ts b/core/src/widgets/markdown/plate/index.ts new file mode 100644 index 00000000..cf5f2f6a --- /dev/null +++ b/core/src/widgets/markdown/plate/index.ts @@ -0,0 +1,8 @@ +export * from './components'; +export { default as editableProps } from './editableProps'; +export * from './hooks'; +export * from './PlateEditor'; +export { default as PlateEditor } from './PlateEditor'; +export * from './plateTypes'; +export * from './plugins'; +export * from './serialization'; diff --git a/core/src/widgets/markdown/plate/plateTypes.ts b/core/src/widgets/markdown/plate/plateTypes.ts new file mode 100644 index 00000000..d73b6762 --- /dev/null +++ b/core/src/widgets/markdown/plate/plateTypes.ts @@ -0,0 +1,351 @@ +import { + createPlateEditor, + createPluginFactory, + createPlugins, + createTEditor, + getTEditor, + useEditorRef, + useEditorState, + usePlateActions, + usePlateEditorRef, + usePlateEditorState, + usePlateSelectors, + usePlateStates, +} from '@udecode/plate'; + +import type { + AutoformatRule, + CreatePlateEditorOptions, + Decorate, + DecorateEntry, + DOMHandler, + EDescendant, + EElement, + EElementEntry, + EElementOrText, + ELEMENT_BLOCKQUOTE, + ELEMENT_CODE_BLOCK, + ELEMENT_CODE_LINE, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_HR, + ELEMENT_IMAGE, + ELEMENT_LI, + ELEMENT_LINK, + ELEMENT_MEDIA_EMBED, + ELEMENT_MENTION, + ELEMENT_MENTION_INPUT, + ELEMENT_OL, + ELEMENT_PARAGRAPH, + ELEMENT_TABLE, + ELEMENT_TD, + ELEMENT_TR, + ELEMENT_UL, + EMarks, + ENode, + ENodeEntry, + EText, + ETextEntry, + InjectComponent, + InjectProps, + KeyboardHandler, + NoInfer, + OnChange, + OverrideByKey, + PlateEditor, + PlateId, + PlatePlugin, + PlatePluginComponent, + PlatePluginInsertData, + PlatePluginProps, + PlateProps, + PluginOptions, + SerializeHtml, + TElement, + TImageElement, + TLinkElement, + TMediaEmbedElement, + TMentionElement, + TMentionInputElement, + TNodeEntry, + TReactEditor, + TTableElement, + TText, + WithOverride, +} from '@udecode/plate'; +import type { CSSProperties } from 'styled-components'; + +/** + * Text + */ + +export type EmptyText = { + text: ''; +}; + +export type PlainText = { + text: string; +}; + +export interface RichText extends TText { + bold?: boolean; + italic?: boolean; + underline?: boolean; + strikethrough?: boolean; + code?: boolean; + kbd?: boolean; + subscript?: boolean; + backgroundColor?: CSSProperties['backgroundColor']; + fontFamily?: CSSProperties['fontFamily']; + color?: CSSProperties['color']; + fontSize?: CSSProperties['fontSize']; + fontWeight?: CSSProperties['fontWeight']; +} + +/** + * Inline Elements + */ + +export interface MdLinkElement extends TLinkElement { + type: typeof ELEMENT_LINK; + children: RichText[]; +} + +export interface MdMentionInputElement extends TMentionInputElement { + type: typeof ELEMENT_MENTION_INPUT; + children: [PlainText]; +} + +export interface MdMentionElement extends TMentionElement { + type: typeof ELEMENT_MENTION; + children: [EmptyText]; +} + +export type MdInlineElement = MdLinkElement | MdMentionElement | MdMentionInputElement; +export type MdInlineDescendant = MdInlineElement | RichText; +export type MdInlineChildren = MdInlineDescendant[]; + +/** + * Block props + */ + +export interface MdIndentProps { + indent?: number; +} + +export interface MdIndentListProps extends MdIndentProps { + listStart?: number; + listRestart?: number; + listStyleType?: string; +} + +export interface MdLineHeightProps { + lineHeight?: CSSProperties['lineHeight']; +} + +export interface MdAlignProps { + align?: CSSProperties['textAlign']; +} + +export interface MdBlockElement extends TElement, MdIndentListProps, MdLineHeightProps { + id?: PlateId; +} + +/** + * Blocks + */ + +export interface MdParagraphElement extends MdBlockElement { + type: typeof ELEMENT_PARAGRAPH; + children: MdInlineChildren; + align?: 'left' | 'center' | 'right'; +} + +export interface MdH1Element extends MdBlockElement { + type: typeof ELEMENT_H1; + children: MdInlineChildren; +} + +export interface MdH2Element extends MdBlockElement { + type: typeof ELEMENT_H2; + children: MdInlineChildren; +} + +export interface MdH3Element extends MdBlockElement { + type: typeof ELEMENT_H3; + children: MdInlineChildren; +} + +export interface MdH4Element extends MdBlockElement { + type: typeof ELEMENT_H4; + children: MdInlineChildren; +} + +export interface MdH5Element extends MdBlockElement { + type: typeof ELEMENT_H5; + children: MdInlineChildren; +} + +export interface MdH6Element extends MdBlockElement { + type: typeof ELEMENT_H6; + children: MdInlineChildren; +} + +export interface MdBlockquoteElement extends MdBlockElement { + type: typeof ELEMENT_BLOCKQUOTE; + children: MdInlineChildren; +} + +export interface MdCodeBlockElement extends MdBlockElement { + type: typeof ELEMENT_CODE_BLOCK; + lang: string | undefined; + code: string; +} + +export interface MdCodeLineElement extends TElement { + type: typeof ELEMENT_CODE_LINE; + children: PlainText[]; +} + +export interface MdTableElement extends TTableElement, MdBlockElement { + type: typeof ELEMENT_TABLE; + children: MdTableRowElement[]; +} + +export interface MdTableRowElement extends TElement { + type: typeof ELEMENT_TR; + children: MdTableCellElement[]; +} + +export interface MdTableCellElement extends TElement { + type: typeof ELEMENT_TD; + children: MdNestableBlock[]; +} + +export interface MdBulletedListElement extends TElement, MdBlockElement { + type: typeof ELEMENT_UL; + children: MdListItemElement[]; +} + +export interface MdNumberedListElement extends TElement, MdBlockElement { + type: typeof ELEMENT_OL; + children: MdListItemElement[]; +} + +export interface MdListItemElement extends TElement, MdBlockElement { + type: typeof ELEMENT_LI; + checked: boolean | null; + children: MdInlineChildren; +} + +export interface MdImageElement extends TImageElement, MdBlockElement { + type: typeof ELEMENT_IMAGE; + alt?: string; + children: [EmptyText]; +} + +export interface MdMediaEmbedElement extends TMediaEmbedElement, MdBlockElement { + type: typeof ELEMENT_MEDIA_EMBED; + children: [EmptyText]; +} + +export interface MdHrElement extends MdBlockElement { + type: typeof ELEMENT_HR; + children: [EmptyText]; +} + +export type MdNestableBlock = MdParagraphElement; + +export type MdBlock = Exclude; +export type MdBlockEntry = TNodeEntry; + +export type MdRootBlock = + | MdParagraphElement + | MdH1Element + | MdH2Element + | MdH3Element + | MdH4Element + | MdH5Element + | MdH6Element + | MdBlockquoteElement + | MdCodeBlockElement + | MdTableElement + | MdBulletedListElement + | MdNumberedListElement + | MdImageElement + | MdMediaEmbedElement + | MdHrElement; + +export type MdValue = MdRootBlock[]; + +/** + * Editor types + */ + +export type MdEditor = PlateEditor & { isDragging?: boolean }; +export type MdReactEditor = TReactEditor; +export type MdNode = ENode; +export type MdNodeEntry = ENodeEntry; +export type MdElement = EElement; +export type MdElementEntry = EElementEntry; +export type MdText = EText; +export type MdTextEntry = ETextEntry; +export type MdElementOrText = EElementOrText; +export type MdDescendant = EDescendant; +export type MdMarks = EMarks; +export type MdMark = keyof MdMarks; + +/** + * Plate types + */ + +export type MdDecorate

    = Decorate; +export type MdDecorateEntry = DecorateEntry; +export type MdDOMHandler

    = DOMHandler; +export type MdInjectComponent = InjectComponent; +export type MdInjectProps = InjectProps; +export type MdKeyboardHandler

    = KeyboardHandler; +export type MdOnChange

    = OnChange; +export type MdOverrideByKey = OverrideByKey; +export type MdPlatePlugin

    = PlatePlugin; +export type MdPlatePluginInsertData = PlatePluginInsertData; +export type MdPlatePluginProps = PlatePluginProps; +export type MdPlateProps = PlateProps; +export type MdSerializeHtml = SerializeHtml; +export type MdWithOverride

    = WithOverride; + +/** + * Plate store, Slate context + */ + +export const getMdEditor = (editor: MdEditor) => getTEditor(editor); +export const useMdEditorRef = () => useEditorRef(); +export const useMdEditorState = () => useEditorState(); +export const useMdPlateEditorRef = (id?: PlateId) => usePlateEditorRef(id); +export const useMdPlateEditorState = (id?: PlateId) => usePlateEditorState(id); +export const useMdPlateSelectors = (id?: PlateId) => usePlateSelectors(id); +export const useMdPlateActions = (id?: PlateId) => usePlateActions(id); +export const useMdPlateStates = (id?: PlateId) => usePlateStates(id); + +/** + * Utils + */ +export const createMdEditor = () => createTEditor() as MdEditor; +export const createMdPlateEditor = (options: CreatePlateEditorOptions = {}) => + createPlateEditor(options); +export const createMdPluginFactory =

    ( + defaultPlugin: PlatePlugin, MdValue, MdEditor>, +) => createPluginFactory(defaultPlugin); +export const createMdPlugins = ( + plugins: MdPlatePlugin[], + options?: { + components?: Record; + overrideByKey?: MdOverrideByKey; + }, +) => createPlugins(plugins, options); + +export type MdAutoformatRule = AutoformatRule; diff --git a/core/src/widgets/markdown/plate/plugins/align/alignPlugin.ts b/core/src/widgets/markdown/plate/plugins/align/alignPlugin.ts new file mode 100644 index 00000000..d253b1a2 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/align/alignPlugin.ts @@ -0,0 +1,29 @@ +import { + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_PARAGRAPH, +} from '@udecode/plate'; + +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const alignPlugin: Partial = { + inject: { + props: { + validTypes: [ + ELEMENT_PARAGRAPH, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ], + }, + }, +}; + +export default alignPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/align/index.ts b/core/src/widgets/markdown/plate/plugins/align/index.ts new file mode 100644 index 00000000..92349b20 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/align/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as alignPlugin } from './alignPlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/autoformatBlocks.ts b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatBlocks.ts new file mode 100644 index 00000000..f167bd6d --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatBlocks.ts @@ -0,0 +1,92 @@ +import { + ELEMENT_BLOCKQUOTE, + ELEMENT_CODE_BLOCK, + ELEMENT_DEFAULT, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_HR, + getPluginType, + insertEmptyCodeBlock, + insertNodes, + setNodes, +} from '@udecode/plate'; + +import { preFormat } from './autoformatUtils'; + +import type { MdAutoformatRule } from '@staticcms/markdown'; + +const autoformatBlocks: MdAutoformatRule[] = [ + { + mode: 'block', + type: ELEMENT_H1, + match: '# ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_H2, + match: '## ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_H3, + match: '### ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_H4, + match: '#### ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_H5, + match: '##### ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_H6, + match: '###### ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_BLOCKQUOTE, + match: '> ', + preFormat, + }, + { + mode: 'block', + type: ELEMENT_CODE_BLOCK, + match: '```', + triggerAtBlockStart: false, + preFormat, + format: editor => { + insertEmptyCodeBlock(editor, { + defaultType: getPluginType(editor, ELEMENT_DEFAULT), + insertNodesOptions: { select: true }, + }); + }, + }, + { + mode: 'block', + type: ELEMENT_HR, + match: ['---', '—-', '___ '], + format: editor => { + setNodes(editor, { type: ELEMENT_HR }); + insertNodes(editor, { + type: ELEMENT_DEFAULT, + children: [{ text: '' }], + }); + }, + }, +]; + +export default autoformatBlocks; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/autoformatLists.ts b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatLists.ts new file mode 100644 index 00000000..ff992366 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatLists.ts @@ -0,0 +1,72 @@ +import { ELEMENT_LI, ELEMENT_OL, ELEMENT_UL, getNode, setNodes } from '@udecode/plate'; + +import { formatList, preFormat } from './autoformatUtils'; + +import type { MdAutoformatRule } from '@staticcms/markdown'; + +const autoformatLists: MdAutoformatRule[] = [ + { + mode: 'block', + type: ELEMENT_LI, + match: ['* ', '- '], + preFormat, + format: editor => formatList(editor, ELEMENT_UL), + }, + { + mode: 'block', + type: ELEMENT_LI, + match: ['1. ', '1) '], + preFormat, + format: editor => formatList(editor, ELEMENT_OL), + }, + { + mode: 'block', + match: ['[ ] '], + format: editor => { + const at = [...(editor.selection?.anchor.path ?? [])].slice(0, -2); + setNodes( + editor, + { type: ELEMENT_LI, checked: false }, + { + at, + }, + ); + }, + query: editor => { + const node = getNode(editor, editor.selection?.anchor.path ?? []); + if (!node || !('text' in node) || !(node.text as string).startsWith('[ ]')) { + return false; + } + + const at = [...(editor.selection?.anchor.path ?? [])].slice(0, -2); + const parentNode = getNode(editor, at); + return Boolean(parentNode && 'type' in parentNode && parentNode.type === ELEMENT_LI); + }, + }, + { + mode: 'block', + match: ['[x] '], + format: editor => { + const at = [...(editor.selection?.anchor.path ?? [])].slice(0, -2); + setNodes( + editor, + { type: ELEMENT_LI, checked: true }, + { + at, + }, + ); + }, + query: editor => { + const node = getNode(editor, editor.selection?.anchor.path ?? []); + if (!node || !('text' in node) || !(node.text as string).startsWith('[x]')) { + return false; + } + + const at = [...(editor.selection?.anchor.path ?? [])].slice(0, -2); + const parentNode = getNode(editor, at); + return Boolean(parentNode && 'type' in parentNode && parentNode.type === ELEMENT_LI); + }, + }, +]; + +export default autoformatLists; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/autoformatMarks.ts b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatMarks.ts new file mode 100644 index 00000000..239e7707 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatMarks.ts @@ -0,0 +1,87 @@ +import { + MARK_BOLD, + MARK_CODE, + MARK_HIGHLIGHT, + MARK_ITALIC, + MARK_STRIKETHROUGH, + MARK_SUBSCRIPT, + MARK_SUPERSCRIPT, + MARK_UNDERLINE, +} from '@udecode/plate'; + +import type { MdAutoformatRule } from '@staticcms/markdown'; + +const autoformatMarks: MdAutoformatRule[] = [ + { + mode: 'mark', + type: [MARK_BOLD, MARK_ITALIC], + match: '***', + }, + { + mode: 'mark', + type: [MARK_UNDERLINE, MARK_ITALIC], + match: '__*', + }, + { + mode: 'mark', + type: [MARK_UNDERLINE, MARK_BOLD], + match: '__**', + }, + { + mode: 'mark', + type: [MARK_UNDERLINE, MARK_BOLD, MARK_ITALIC], + match: '___***', + }, + { + mode: 'mark', + type: MARK_BOLD, + match: '**', + }, + { + mode: 'mark', + type: MARK_UNDERLINE, + match: '__', + }, + { + mode: 'mark', + type: MARK_ITALIC, + match: '*', + }, + { + mode: 'mark', + type: MARK_ITALIC, + match: '_', + }, + { + mode: 'mark', + type: MARK_STRIKETHROUGH, + match: '~~', + }, + { + mode: 'mark', + type: MARK_SUPERSCRIPT, + match: '^', + }, + { + mode: 'mark', + type: MARK_SUBSCRIPT, + match: '~', + }, + { + mode: 'mark', + type: MARK_HIGHLIGHT, + match: '==', + }, + { + mode: 'mark', + type: MARK_HIGHLIGHT, + match: '≡', + }, + { + mode: 'mark', + type: MARK_CODE, + match: '`', + }, +]; + +export default autoformatMarks; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/autoformatPlugin.ts b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatPlugin.ts new file mode 100644 index 00000000..dc9f6a16 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatPlugin.ts @@ -0,0 +1,13 @@ +import autoformatRules from './autoformatRules'; + +import type { AutoformatPlugin } from '@udecode/plate'; +import type { MdEditor, MdPlatePlugin, MdValue } from '@staticcms/markdown'; + +const autoformatPlugin: Partial>> = { + options: { + rules: autoformatRules, + enableUndoOnDelete: true, + }, +}; + +export default autoformatPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/autoformatRules.ts b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatRules.ts new file mode 100644 index 00000000..71b7189e --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatRules.ts @@ -0,0 +1,28 @@ +import { + autoformatArrow, + autoformatLegal, + autoformatLegalHtml, + autoformatMath, + autoformatPunctuation, + autoformatSmartQuotes, +} from '@udecode/plate'; + +import autoformatBlocks from './autoformatBlocks'; +import autoformatLists from './autoformatLists'; +import autoformatMarks from './autoformatMarks'; + +import type { MdAutoformatRule } from '@staticcms/markdown'; + +const autoformatRules: MdAutoformatRule[] = [ + ...autoformatBlocks, + ...autoformatLists, + ...autoformatMarks, + ...(autoformatSmartQuotes as MdAutoformatRule[]), + ...(autoformatPunctuation as MdAutoformatRule[]), + ...(autoformatLegal as MdAutoformatRule[]), + ...(autoformatLegalHtml as MdAutoformatRule[]), + ...(autoformatArrow as MdAutoformatRule[]), + ...(autoformatMath as MdAutoformatRule[]), +]; + +export default autoformatRules; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/autoformatUtils.ts b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatUtils.ts new file mode 100644 index 00000000..b5ab9494 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/autoformatUtils.ts @@ -0,0 +1,43 @@ +import { + ELEMENT_CODE_BLOCK, + ELEMENT_CODE_LINE, + getParentNode, + isElement, + isType, + toggleList, + unwrapList, +} from '@udecode/plate'; + +import type { AutoformatBlockRule } from '@udecode/plate'; +import type { MdEditor, MdValue } from '@staticcms/markdown'; + +export const preFormat: AutoformatBlockRule['preFormat'] = editor => + unwrapList(editor); + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const format = (editor: MdEditor, customFormatting: any) => { + if (editor.selection) { + const parentEntry = getParentNode(editor, editor.selection); + if (!parentEntry) return; + const [node] = parentEntry; + if ( + isElement(node) && + !isType(editor, node, ELEMENT_CODE_BLOCK) && + !isType(editor, node, ELEMENT_CODE_LINE) + ) { + customFormatting(); + } + } +}; + +export const formatList = (editor: MdEditor, elementType: string) => { + format(editor, () => + toggleList(editor, { + type: elementType, + }), + ); +}; + +export const formatText = (editor: MdEditor, text: string) => { + format(editor, () => editor.insertText(text)); +}; diff --git a/core/src/widgets/markdown/plate/plugins/autoformat/index.ts b/core/src/widgets/markdown/plate/plugins/autoformat/index.ts new file mode 100644 index 00000000..3edec0ad --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/autoformat/index.ts @@ -0,0 +1,6 @@ +export { default as autoformatBlocks } from './autoformatBlocks'; +export { default as autoformatLists } from './autoformatLists'; +export { default as autoformatMarks } from './autoformatMarks'; +export { default as autoformatPlugin } from './autoformatPlugin'; +export { default as autoformatRules } from './autoformatRules'; +export * from './autoformatUtils'; diff --git a/core/src/widgets/markdown/plate/plugins/code-block/createCodeBlockPlugin.ts b/core/src/widgets/markdown/plate/plugins/code-block/createCodeBlockPlugin.ts new file mode 100644 index 00000000..121278dc --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/code-block/createCodeBlockPlugin.ts @@ -0,0 +1,21 @@ +import { ELEMENT_CODE_BLOCK } from '@udecode/plate'; +import { createPluginFactory } from '@udecode/plate-core'; + +import deserializeHtmlCodeBlock from './deserializeHtmlCodeBlock'; + +import type { MdValue } from '@staticcms/markdown'; +import type { HotkeyPlugin, PlateEditor } from '@udecode/plate-core'; + +/** + * Enables support for pre-formatted code blocks. + */ +const createCodeBlockPlugin = createPluginFactory>({ + key: ELEMENT_CODE_BLOCK, + isElement: true, + deserializeHtml: deserializeHtmlCodeBlock, + options: { + hotkey: ['mod+opt+8', 'mod+shift+8'], + }, +}); + +export default createCodeBlockPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/code-block/deserializeHtmlCodeBlock.ts b/core/src/widgets/markdown/plate/plugins/code-block/deserializeHtmlCodeBlock.ts new file mode 100644 index 00000000..cb644057 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/code-block/deserializeHtmlCodeBlock.ts @@ -0,0 +1,31 @@ +import { ELEMENT_CODE_BLOCK } from '@udecode/plate'; + +import type { DeserializeHtml } from '@udecode/plate-core'; + +const deserializeHtmlCodeBlock: DeserializeHtml = { + rules: [ + { + validNodeName: 'PRE', + }, + { + validNodeName: 'P', + validStyle: { + fontFamily: 'Consolas', + }, + }, + ], + getNode: el => { + // const languageSelectorText = + // [...el.childNodes].find((node: ChildNode) => node.nodeName === 'SELECT')?.textContent || ''; + + const textContent = el.textContent ?? ''; //?.replace(languageSelectorText, '') || ''; + + return { + type: ELEMENT_CODE_BLOCK, + code: textContent, + children: [{ text: '' }], + }; + }, +}; + +export default deserializeHtmlCodeBlock; diff --git a/core/src/widgets/markdown/plate/plugins/code-block/index.ts b/core/src/widgets/markdown/plate/plugins/code-block/index.ts new file mode 100644 index 00000000..ad2e7c17 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/code-block/index.ts @@ -0,0 +1,2 @@ +export { default as createCodeBlockPlugin } from './createCodeBlockPlugin'; +export { default as deserializeHtmlCodeBlock } from './deserializeHtmlCodeBlock'; diff --git a/core/src/widgets/markdown/plate/plugins/cursor-overlay/CursorOverlayContainer.tsx b/core/src/widgets/markdown/plate/plugins/cursor-overlay/CursorOverlayContainer.tsx new file mode 100644 index 00000000..ceddce2a --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/cursor-overlay/CursorOverlayContainer.tsx @@ -0,0 +1,17 @@ +import { CursorOverlay } from '@udecode/plate'; +import React from 'react'; + +import cursorStore from './cursorStore'; + +import type { CursorOverlayProps } from '@udecode/plate'; +import type { FC } from 'react'; + +const CursorOverlayContainer: FC = ({ cursors, ...props }) => { + const dynamicCursors = cursorStore.use.cursors(); + + const allCursors = { ...cursors, ...dynamicCursors }; + + return ; +}; + +export default CursorOverlayContainer; diff --git a/core/src/widgets/markdown/plate/plugins/cursor-overlay/cursorStore.ts b/core/src/widgets/markdown/plate/plugins/cursor-overlay/cursorStore.ts new file mode 100644 index 00000000..eb9927f9 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/cursor-overlay/cursorStore.ts @@ -0,0 +1,7 @@ +import { createStore } from '@udecode/plate'; + +const cursorStore = createStore('cursor')({ + cursors: {}, +}); + +export default cursorStore; diff --git a/core/src/widgets/markdown/plate/plugins/cursor-overlay/dragOverCursorPlugin.ts b/core/src/widgets/markdown/plate/plugins/cursor-overlay/dragOverCursorPlugin.ts new file mode 100644 index 00000000..0f152a08 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/cursor-overlay/dragOverCursorPlugin.ts @@ -0,0 +1,42 @@ +import { findEventRange } from '@udecode/plate'; + +import cursorStore from './cursorStore'; + +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const dragOverCursorPlugin: MdPlatePlugin = { + key: 'drag-over-cursor', + handlers: { + onDragOver: editor => event => { + if (editor.isDragging) return; + + const range = findEventRange(editor, event); + if (!range) return; + + cursorStore.set.cursors({ + drag: { + key: 'drag', + data: { + style: { + backgroundColor: '#fc00ff', + backgroundImage: 'linear-gradient(0deg, #fc00ff, #00dbde)', + width: 3, + }, + }, + selection: range, + }, + }); + }, + onDragLeave: () => () => { + cursorStore.set.cursors({}); + }, + onDragEnd: () => () => { + cursorStore.set.cursors({}); + }, + onDrop: () => () => { + cursorStore.set.cursors({}); + }, + }, +}; + +export default dragOverCursorPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/cursor-overlay/index.ts b/core/src/widgets/markdown/plate/plugins/cursor-overlay/index.ts new file mode 100644 index 00000000..3ea4e613 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/cursor-overlay/index.ts @@ -0,0 +1,4 @@ +export { default as CursorOverlayContainer } from './CursorOverlayContainer'; +export { default as cursorStore } from './cursorStore'; +export { default as dragOverCursorPlugin } from './dragOverCursorPlugin'; +export { default as staticCursors } from './staticCursors'; diff --git a/core/src/widgets/markdown/plate/plugins/cursor-overlay/staticCursors.tsx b/core/src/widgets/markdown/plate/plugins/cursor-overlay/staticCursors.tsx new file mode 100644 index 00000000..f9eec886 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/cursor-overlay/staticCursors.tsx @@ -0,0 +1,32 @@ +const staticCursors = { + one: { + key: 'one', + data: { style: { backgroundColor: 'red' } }, + selection: { + anchor: { + path: [0, 0], + offset: 5, + }, + focus: { + path: [0, 0], + offset: 12, + }, + }, + }, + two: { + key: 'two', + data: { style: { backgroundColor: 'red' } }, + selection: { + anchor: { + path: [0, 0], + offset: 18, + }, + focus: { + path: [0, 0], + offset: 18, + }, + }, + }, +}; + +export default staticCursors; diff --git a/core/src/widgets/markdown/plate/plugins/exit-break/exitBreakPlugin.ts b/core/src/widgets/markdown/plate/plugins/exit-break/exitBreakPlugin.ts new file mode 100644 index 00000000..db88c257 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/exit-break/exitBreakPlugin.ts @@ -0,0 +1,28 @@ +import { KEYS_HEADING } from '@udecode/plate'; + +import type { ExitBreakPlugin } from '@udecode/plate'; +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const exitBreakPlugin: Partial> = { + options: { + rules: [ + { + hotkey: 'mod+enter', + }, + { + hotkey: 'mod+shift+enter', + before: true, + }, + { + hotkey: 'enter', + query: { + start: true, + end: true, + allow: KEYS_HEADING, + }, + }, + ], + }, +}; + +export default exitBreakPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/exit-break/index.ts b/core/src/widgets/markdown/plate/plugins/exit-break/index.ts new file mode 100644 index 00000000..ce926649 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/exit-break/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as exitBreakPlugin } from './exitBreakPlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/indent/indentPlugin.ts b/core/src/widgets/markdown/plate/plugins/indent/indentPlugin.ts new file mode 100644 index 00000000..f8501150 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/indent/indentPlugin.ts @@ -0,0 +1,34 @@ +import { + ELEMENT_BLOCKQUOTE, + ELEMENT_CODE_BLOCK, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_PARAGRAPH, +} from '@udecode/plate'; + +import type { IndentPlugin } from '@udecode/plate'; +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const indentPlugin: Partial> = { + inject: { + props: { + validTypes: [ + ELEMENT_PARAGRAPH, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_BLOCKQUOTE, + ELEMENT_CODE_BLOCK, + ], + }, + }, +}; + +export default indentPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/indent/index.ts b/core/src/widgets/markdown/plate/plugins/indent/index.ts new file mode 100644 index 00000000..d7eea2ac --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/indent/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as indentPlugin } from './indentPlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/index.ts b/core/src/widgets/markdown/plate/plugins/index.ts new file mode 100644 index 00000000..f19bee3e --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/index.ts @@ -0,0 +1,12 @@ +export * from './align'; +export * from './autoformat'; +export * from './code-block'; +export * from './cursor-overlay'; +export * from './exit-break'; +export * from './indent'; +export * from './list'; +export * from './reset-node'; +export * from './select-on-backspace'; +export * from './soft-break'; +export * from './table'; +export * from './trailing-block'; diff --git a/core/src/widgets/markdown/plate/plugins/list/createListPlugin.ts b/core/src/widgets/markdown/plate/plugins/list/createListPlugin.ts new file mode 100644 index 00000000..b8043d69 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/list/createListPlugin.ts @@ -0,0 +1,73 @@ +import { createPluginFactory, KEY_DESERIALIZE_HTML, someNode } from '@udecode/plate-core'; +import { onKeyDownList } from '@udecode/plate-list'; + +import withList from './withList'; + +import type { PlateEditor, PlatePlugin } from '@udecode/plate-core'; +import type { ListPlugin } from '@udecode/plate-list'; +import type { MdValue } from '@staticcms/markdown'; + +export const ELEMENT_UL = 'ul'; +export const ELEMENT_OL = 'ol'; +export const ELEMENT_LI = 'li'; +export const ELEMENT_LIC = 'lic'; + +export type MdListPlugin = PlatePlugin>; + +/** + * Enables support for bulleted, numbered and to-do lists. + */ +const createListPlugin = createPluginFactory>({ + key: 'list', + plugins: [ + { + key: ELEMENT_UL, + isElement: true, + handlers: { + onKeyDown: onKeyDownList, + }, + withOverrides: withList, + deserializeHtml: { + rules: [ + { + validNodeName: 'UL', + }, + ], + }, + } as MdListPlugin, + { + key: ELEMENT_OL, + isElement: true, + handlers: { + onKeyDown: onKeyDownList, + }, + deserializeHtml: { rules: [{ validNodeName: 'OL' }] }, + } as MdListPlugin, + { + key: ELEMENT_LI, + isElement: true, + deserializeHtml: { rules: [{ validNodeName: 'LI' }] }, + then: (editor, { type }) => ({ + inject: { + pluginsByKey: { + [KEY_DESERIALIZE_HTML]: { + editor: { + insertData: { + preInsert: () => { + return someNode(editor, { match: { type } }); + }, + }, + }, + }, + }, + }, + }), + }, + { + key: ELEMENT_LIC, + isElement: true, + }, + ], +}); + +export default createListPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/list/index.ts b/core/src/widgets/markdown/plate/plugins/list/index.ts new file mode 100644 index 00000000..0f97268d --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/list/index.ts @@ -0,0 +1,5 @@ +export * from './createListPlugin'; +export { default as createListPlugin } from './createListPlugin'; +export { default as insertBreakList } from './insertBreakList'; +export * from './transforms'; +export { default as withList } from './withList'; diff --git a/core/src/widgets/markdown/plate/plugins/list/insertBreakList.ts b/core/src/widgets/markdown/plate/plugins/list/insertBreakList.ts new file mode 100644 index 00000000..b966d019 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/list/insertBreakList.ts @@ -0,0 +1,58 @@ +import { ELEMENT_DEFAULT, getPluginType, isBlockAboveEmpty, mockPlugin } from '@udecode/plate-core'; +import { ELEMENT_LI, getListItemEntry, moveListItemUp, unwrapList } from '@udecode/plate-list'; +import { onKeyDownResetNode, SIMULATE_BACKSPACE } from '@udecode/plate-reset-node'; + +import insertListItem from './transforms/insertListItem'; + +import type { PlateEditor } from '@udecode/plate-core'; +import type { ResetNodePlugin } from '@udecode/plate-reset-node'; +import type { MdValue } from '@staticcms/markdown'; + +const insertBreakList = (editor: PlateEditor) => { + if (!editor.selection) return; + + const res = getListItemEntry(editor, {}); + let moved: boolean | undefined; + + // If selection is in a li + if (res) { + const { list, listItem } = res; + + // If selected li is empty, move it up. + if (isBlockAboveEmpty(editor)) { + moved = moveListItemUp(editor, { + list, + listItem, + }); + + if (moved) return true; + } + } + + const didReset = onKeyDownResetNode( + editor as PlateEditor, + mockPlugin({ + options: { + rules: [ + { + types: [getPluginType(editor, ELEMENT_LI)], + defaultType: getPluginType(editor, ELEMENT_DEFAULT), + predicate: () => !moved && isBlockAboveEmpty(editor), + onReset: _editor => unwrapList(_editor), + }, + ], + }, + }), + )(SIMULATE_BACKSPACE); + if (didReset) return true; + + /** + * If selection is in li > p, insert li. + */ + if (!moved) { + const inserted = insertListItem(editor); + if (inserted) return true; + } +}; + +export default insertBreakList; diff --git a/core/src/widgets/markdown/plate/plugins/list/transforms/index.ts b/core/src/widgets/markdown/plate/plugins/list/transforms/index.ts new file mode 100644 index 00000000..53e012b7 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/list/transforms/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as insertListItem } from './insertListItem'; diff --git a/core/src/widgets/markdown/plate/plugins/list/transforms/insertListItem.ts b/core/src/widgets/markdown/plate/plugins/list/transforms/insertListItem.ts new file mode 100644 index 00000000..236f894b --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/list/transforms/insertListItem.ts @@ -0,0 +1,142 @@ +import { + collapseSelection, + deleteText, + getAboveNode, + getMarks, + getParentNode, + getPluginType, + insertElements, + isBlockTextEmptyAfterSelection, + isStartPoint, + moveNodes, + select, + splitNodes, + withoutNormalizing, + wrapNodes, +} from '@udecode/plate-core'; +import { Path, Range } from 'slate'; + +import { ELEMENT_LI, ELEMENT_LIC } from '../createListPlugin'; + +import type { PlateEditor, TElement } from '@udecode/plate-core'; +import type { MdListItemElement, MdValue } from '@staticcms/markdown'; + +/** + * Insert list item if selection in li>p. + * TODO: test + */ +const insertListItem = (editor: PlateEditor): boolean => { + const liType = getPluginType(editor, ELEMENT_LI); + const licType = getPluginType(editor, ELEMENT_LIC); + + if (!editor.selection) { + return false; + } + + const licEntry = getAboveNode(editor, { match: { type: licType } }); + if (!licEntry) { + return false; + } + + const [, paragraphPath] = licEntry; + + const listItemEntry = getParentNode(editor, paragraphPath); + if (!listItemEntry) { + return false; + } + + const [listItemNode, listItemPath] = listItemEntry; + if (listItemNode.type !== liType) { + return false; + } + + let success = false; + + withoutNormalizing(editor, () => { + if (!Range.isCollapsed(editor.selection!)) { + deleteText(editor); + } + + const isStart = isStartPoint(editor, editor.selection!.focus, paragraphPath); + const isEnd = isBlockTextEmptyAfterSelection(editor); + + const nextParagraphPath = Path.next(paragraphPath); + const nextListItemPath = Path.next(listItemPath); + + /** + * If start, insert a list item before + */ + if (isStart) { + insertElements( + editor, + { + type: liType, + checked: listItemNode.checked, + children: [{ type: licType, children: [{ text: '' }] }], + }, + { at: listItemPath }, + ); + + success = true; + + return; + } + + /** + * If not end, split nodes, wrap a list item on the new paragraph and move it to the next list item + */ + if (!isEnd) { + withoutNormalizing(editor, () => { + splitNodes(editor); + wrapNodes( + editor, + { + type: liType, + checked: listItemNode.checked, + children: [], + }, + { at: nextParagraphPath }, + ); + moveNodes(editor, { + at: nextParagraphPath, + to: nextListItemPath, + }); + select(editor, nextListItemPath); + collapseSelection(editor, { + edge: 'start', + }); + }); + } else { + /** + * If end, insert a list item after and select it + */ + const marks = getMarks(editor) || {}; + insertElements( + editor, + { + type: liType, + checked: listItemNode.checked, + children: [{ type: licType, children: [{ text: '', ...marks }] }], + }, + { at: nextListItemPath }, + ); + select(editor, nextListItemPath); + } + + /** + * If there is a list in the list item, move it to the next list item + */ + if (listItemNode.children.length > 1) { + moveNodes(editor, { + at: nextParagraphPath, + to: nextListItemPath.concat(1), + }); + } + + success = true; + }); + + return success; +}; + +export default insertListItem; diff --git a/core/src/widgets/markdown/plate/plugins/list/withList.ts b/core/src/widgets/markdown/plate/plugins/list/withList.ts new file mode 100644 index 00000000..1c8bfb91 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/list/withList.ts @@ -0,0 +1,60 @@ +import { + deleteBackwardList, + deleteForwardList, + deleteFragmentList, + insertFragmentList, + normalizeList, +} from '@udecode/plate-list'; + +import insertBreakList from './insertBreakList'; + +import type { PlateEditor, WithPlatePlugin } from '@udecode/plate-core'; +import type { ListPlugin } from '@udecode/plate-list'; +import type { MdValue } from '@staticcms/markdown'; + +const withList = ( + editor: PlateEditor, + { options: { validLiChildrenTypes } }: WithPlatePlugin>, +) => { + const { insertBreak, deleteBackward, deleteForward, deleteFragment } = editor; + + editor.insertBreak = () => { + if (insertBreakList(editor)) { + return; + } + + insertBreak(); + }; + + editor.deleteBackward = unit => { + if (deleteBackwardList(editor, unit)) { + return; + } + + deleteBackward(unit); + }; + + editor.deleteForward = unit => { + if (deleteForwardList(editor)) { + return; + } + + deleteForward(unit); + }; + + editor.deleteFragment = () => { + if (deleteFragmentList(editor)) { + return; + } + + deleteFragment(); + }; + + editor.insertFragment = insertFragmentList(editor); + + editor.normalizeNode = normalizeList(editor, { validLiChildrenTypes }); + + return editor; +}; + +export default withList; diff --git a/core/src/widgets/markdown/plate/plugins/reset-node/index.ts b/core/src/widgets/markdown/plate/plugins/reset-node/index.ts new file mode 100644 index 00000000..cc68abf5 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/reset-node/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as resetBlockTypePlugin } from './resetBlockTypePlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/reset-node/resetBlockTypePlugin.ts b/core/src/widgets/markdown/plate/plugins/reset-node/resetBlockTypePlugin.ts new file mode 100644 index 00000000..2b4290f6 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/reset-node/resetBlockTypePlugin.ts @@ -0,0 +1,34 @@ +import { + ELEMENT_BLOCKQUOTE, + ELEMENT_PARAGRAPH, + ELEMENT_TODO_LI, + isBlockAboveEmpty, + isSelectionAtBlockStart, +} from '@udecode/plate'; + +import type { ResetNodePlugin } from '@udecode/plate'; +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const resetBlockTypesCommonRule = { + types: [ELEMENT_BLOCKQUOTE, ELEMENT_TODO_LI], + defaultType: ELEMENT_PARAGRAPH, +}; + +const resetBlockTypePlugin: Partial> = { + options: { + rules: [ + { + ...resetBlockTypesCommonRule, + hotkey: 'Enter', + predicate: isBlockAboveEmpty, + }, + { + ...resetBlockTypesCommonRule, + hotkey: 'Backspace', + predicate: isSelectionAtBlockStart, + }, + ], + }, +}; + +export default resetBlockTypePlugin; diff --git a/core/src/widgets/markdown/plate/plugins/select-on-backspace/index.ts b/core/src/widgets/markdown/plate/plugins/select-on-backspace/index.ts new file mode 100644 index 00000000..9b2c26e8 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/select-on-backspace/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as selectOnBackspacePlugin } from './selectOnBackspacePlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/select-on-backspace/selectOnBackspacePlugin.ts b/core/src/widgets/markdown/plate/plugins/select-on-backspace/selectOnBackspacePlugin.ts new file mode 100644 index 00000000..c3ace4e3 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/select-on-backspace/selectOnBackspacePlugin.ts @@ -0,0 +1,14 @@ +import { ELEMENT_HR, ELEMENT_IMAGE } from '@udecode/plate'; + +import type { SelectOnBackspacePlugin } from '@udecode/plate'; +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const selectOnBackspacePlugin: Partial> = { + options: { + query: { + allow: [ELEMENT_IMAGE, ELEMENT_HR], + }, + }, +}; + +export default selectOnBackspacePlugin; diff --git a/core/src/widgets/markdown/plate/plugins/soft-break/index.ts b/core/src/widgets/markdown/plate/plugins/soft-break/index.ts new file mode 100644 index 00000000..8ea329ca --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/soft-break/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as softBreakPlugin } from './softBreakPlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/soft-break/softBreakPlugin.ts b/core/src/widgets/markdown/plate/plugins/soft-break/softBreakPlugin.ts new file mode 100644 index 00000000..4e57f429 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/soft-break/softBreakPlugin.ts @@ -0,0 +1,20 @@ +import { ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_TD } from '@udecode/plate'; + +import type { SoftBreakPlugin } from '@udecode/plate'; +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const softBreakPlugin: Partial> = { + options: { + rules: [ + { hotkey: 'shift+enter' }, + { + hotkey: 'enter', + query: { + allow: [ELEMENT_CODE_BLOCK, ELEMENT_BLOCKQUOTE, ELEMENT_TD], + }, + }, + ], + }, +}; + +export default softBreakPlugin; diff --git a/core/src/widgets/markdown/plate/plugins/table/createTablePlugin.ts b/core/src/widgets/markdown/plate/plugins/table/createTablePlugin.ts new file mode 100644 index 00000000..ab0b2779 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/table/createTablePlugin.ts @@ -0,0 +1,87 @@ +import { + ELEMENT_TABLE, + ELEMENT_TD, + ELEMENT_TH, + ELEMENT_TR, + insertTableColumn, + insertTableRow, + onKeyDownTable, +} from '@udecode/plate'; +import { createPluginFactory } from '@udecode/plate-core'; + +import withTable from './withTable'; + +import type { MdValue } from '@staticcms/markdown'; +import type { PlateEditor, TablePlugin } from '@udecode/plate'; + +/** + * Enables support for tables. + */ +const createTablePlugin = createPluginFactory, MdValue, PlateEditor>({ + key: ELEMENT_TABLE, + isElement: true, + handlers: { + onKeyDown: onKeyDownTable, + }, + deserializeHtml: { + rules: [{ validNodeName: 'TABLE' }], + }, + options: { + insertColumn: (e, { fromCell }) => { + insertTableColumn(e, { + fromCell, + disableSelect: true, + }); + }, + insertRow: (e, { fromRow }) => { + insertTableRow(e, { + fromRow, + disableSelect: true, + }); + }, + }, + withOverrides: withTable, + plugins: [ + { + key: ELEMENT_TR, + isElement: true, + deserializeHtml: { + rules: [{ validNodeName: 'TR' }], + }, + }, + { + key: ELEMENT_TD, + isElement: true, + deserializeHtml: { + attributeNames: ['rowspan', 'colspan'], + rules: [{ validNodeName: 'TD' }], + }, + props: ({ element }) => ({ + nodeProps: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + colSpan: (element?.attributes as any)?.colspan, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + rowSpan: (element?.attributes as any)?.rowspan, + }, + }), + }, + { + key: ELEMENT_TH, + isElement: true, + deserializeHtml: { + attributeNames: ['rowspan', 'colspan'], + rules: [{ validNodeName: 'TH' }], + }, + props: ({ element }) => ({ + nodeProps: { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + colSpan: (element?.attributes as any)?.colspan, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + rowSpan: (element?.attributes as any)?.rowspan, + }, + }), + }, + ], +}); + +export default createTablePlugin; diff --git a/core/src/widgets/markdown/plate/plugins/table/index.ts b/core/src/widgets/markdown/plate/plugins/table/index.ts new file mode 100644 index 00000000..f1063b66 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/table/index.ts @@ -0,0 +1,2 @@ +export { default as createTablePlugin } from './createTablePlugin'; +export { default as withTable } from './withTable'; diff --git a/core/src/widgets/markdown/plate/plugins/table/withTable.ts b/core/src/widgets/markdown/plate/plugins/table/withTable.ts new file mode 100644 index 00000000..f47d79ee --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/table/withTable.ts @@ -0,0 +1,26 @@ +import { + withDeleteTable, + withGetFragmentTable, + withInsertFragmentTable, + withInsertTextTable, + withSelectionTable, +} from '@udecode/plate'; + +import type { PlateEditor, WithPlatePlugin } from '@udecode/plate-core'; +import type { MdValue } from '@staticcms/markdown'; +import type { TablePlugin } from '@udecode/plate'; + +const withTable = ( + editor: PlateEditor, + plugin: WithPlatePlugin, MdValue, PlateEditor>, +) => { + editor = withDeleteTable(editor); + editor = withGetFragmentTable(editor); + editor = withInsertFragmentTable(editor, plugin); + editor = withInsertTextTable(editor, plugin); + editor = withSelectionTable(editor); + + return editor; +}; + +export default withTable; diff --git a/core/src/widgets/markdown/plate/plugins/trailing-block/index.ts b/core/src/widgets/markdown/plate/plugins/trailing-block/index.ts new file mode 100644 index 00000000..2d463492 --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/trailing-block/index.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export { default as trailingBlockPlugin } from './trailingBlockPlugin'; diff --git a/core/src/widgets/markdown/plate/plugins/trailing-block/trailingBlockPlugin.ts b/core/src/widgets/markdown/plate/plugins/trailing-block/trailingBlockPlugin.ts new file mode 100644 index 00000000..313bda1a --- /dev/null +++ b/core/src/widgets/markdown/plate/plugins/trailing-block/trailingBlockPlugin.ts @@ -0,0 +1,10 @@ +import { ELEMENT_PARAGRAPH } from '@udecode/plate'; + +import type { TrailingBlockPlugin } from '@udecode/plate'; +import type { MdPlatePlugin } from '@staticcms/markdown'; + +const trailingBlockPlugin: Partial> = { + options: { type: ELEMENT_PARAGRAPH }, +}; + +export default trailingBlockPlugin; diff --git a/core/src/widgets/markdown/plate/serialization/index.ts b/core/src/widgets/markdown/plate/serialization/index.ts new file mode 100644 index 00000000..910bce6d --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/index.ts @@ -0,0 +1,2 @@ +export * from './slate'; +export { default as serializerMarkdown } from './serializerMarkdown'; diff --git a/core/src/widgets/markdown/plate/serialization/serializerMarkdown.ts b/core/src/widgets/markdown/plate/serialization/serializerMarkdown.ts new file mode 100644 index 00000000..61ebea44 --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/serializerMarkdown.ts @@ -0,0 +1,345 @@ +/* eslint-disable no-case-declarations */ +// import { BlockType, defaultNodeTypes, LeafType, NodeTypes } from './ast-types'; +import escapeHtml from 'escape-html'; + +import { LIST_TYPES, NodeTypes } from './slate/ast-types'; + +import type { + MdCodeBlockElement, + MdImageElement, + MdLinkElement, + MdListItemElement, + MdParagraphElement, +} from '../plateTypes'; +import type { TableNode, BlockType, LeafType } from './slate/ast-types'; +import type { CSSProperties } from 'react'; + +type FontStyles = Pick; + +interface MdLeafType extends LeafType { + superscript?: boolean; + subscript?: boolean; + underline?: boolean; + color?: string; + backgroundColor?: string; +} + +interface MdBlockType extends Omit { + children: Array; +} + +interface Options { + isInTable?: boolean; + isInCode?: boolean; + listDepth?: number; + blockquoteDepth?: number; + ignoreParagraphNewline?: boolean; +} + +const isLeafNode = (node: MdBlockType | MdLeafType): node is MdLeafType => { + return typeof (node as MdLeafType).text === 'string'; +}; + +const VOID_ELEMENTS: Array = ['thematic_break', 'image', 'code_block']; + +const BREAK_TAG = '
    '; + +const CODE_ELEMENTS = [NodeTypes.code_block]; + +export default function serializerMarkdown(chunk: MdBlockType | MdLeafType, opts: Options = {}) { + const { + ignoreParagraphNewline = false, + listDepth = 0, + isInTable = false, + isInCode = false, + blockquoteDepth = 0, + } = opts; + + const text = (chunk as MdLeafType).text || ''; + let type = (chunk as MdBlockType).type || ''; + + let children = text; + + if (!isLeafNode(chunk)) { + let separator = ''; + if (type === NodeTypes.tableRow) { + separator = '|'; + } + + children = chunk.children + .map((c: MdBlockType | MdLeafType) => { + const selfIsTable = type === NodeTypes.table; + const isList = !isLeafNode(c) ? (LIST_TYPES as string[]).includes(c.type || '') : false; + const selfIsList = (LIST_TYPES as string[]).includes(chunk.type || ''); + const selfIsCode = (CODE_ELEMENTS as string[]).includes(chunk.type || ''); + const selfIsBlockquote = chunk.type === 'blockquote'; + + // Links can have the following shape + // In which case we don't want to surround + // with break tags + // { + // type: 'paragraph', + // children: [ + // { text: '' }, + // { type: 'link', children: [{ text: foo.com }]} + // { text: '' } + // ] + // } + let childrenHasLink = false; + + if (!isLeafNode(chunk) && Array.isArray(chunk.children)) { + childrenHasLink = chunk.children.some(f => !isLeafNode(f) && f.type === NodeTypes.link); + } + + return serializerMarkdown( + { ...c, parentType: type }, + { + // WOAH. + // what we're doing here is pretty tricky, it relates to the block below where + // we check for ignoreParagraphNewline and set type to paragraph. + // We want to strip out empty paragraphs sometimes, but other times we don't. + // If we're the descendant of a list, we know we don't want a bunch + // of whitespace. If we're parallel to a link we also don't want + // to respect neighboring paragraphs + ignoreParagraphNewline: + (ignoreParagraphNewline || isList || selfIsList || childrenHasLink) && + // if we have c.break, never ignore empty paragraph new line + !(c as MdBlockType).break, + + // track depth of nested lists so we can add proper spacing + listDepth: (LIST_TYPES as string[]).includes((c as MdBlockType).type || '') + ? listDepth + 1 + : listDepth, + + isInTable: selfIsTable || isInTable, + + isInCode: selfIsCode || isInCode, + + blockquoteDepth: selfIsBlockquote ? blockquoteDepth + 1 : blockquoteDepth, + }, + ); + }) + .join(separator); + } + + // This is pretty fragile code, check the long comment where we iterate over children + if ( + !ignoreParagraphNewline && + (text === '' || text === '\n') && + chunk.parentType === NodeTypes.paragraph && + type !== NodeTypes.image + ) { + type = NodeTypes.paragraph; + children = '\n'; + } + + if (children === '' && !VOID_ELEMENTS.find(k => NodeTypes[k] === type)) { + return; + } + + // Never allow decorating break tags with rich text formatting, + // this can malform generated markdown + // Also ensure we're only ever applying text formatting to leaf node + // level chunks, otherwise we can end up in a situation where + // we try applying formatting like to a node like this: + // "Text foo bar **baz**" resulting in "**Text foo bar **baz****" + // which is invalid markup and can mess everything up + if (children !== '\n' && isLeafNode(chunk)) { + children = isInCode || chunk.code ? children : escapeHtml(children); + if (chunk.strikethrough && chunk.bold && chunk.italic) { + children = retainWhitespaceAndFormat(children, '~~***'); + } else if (chunk.bold && chunk.italic) { + children = retainWhitespaceAndFormat(children, '***'); + } else { + if (chunk.bold) { + children = retainWhitespaceAndFormat(children, '**'); + } + + if (chunk.italic) { + children = retainWhitespaceAndFormat(children, '_'); + } + + if (chunk.strikethrough) { + children = retainWhitespaceAndFormat(children, '~~'); + } + + if (chunk.code) { + children = retainWhitespaceAndFormat(children, '`'); + } + + if (chunk.subscript) { + children = retainWhitespaceAndFormat(children, '', ''); + } + + if (chunk.superscript) { + children = retainWhitespaceAndFormat(children, '', ''); + } + + if (chunk.underline) { + children = retainWhitespaceAndFormat(children, '', ''); + } + + if (chunk.color || chunk.backgroundColor) { + const style: FontStyles = {}; + if (chunk.color) { + style.color = chunk.color; + } + if (chunk.backgroundColor) { + style.backgroundColor = chunk.backgroundColor; + } + + const styleString = (Object.keys(style) as (keyof FontStyles)[]) + .map(key => `${key}: '${style[key]}'`) + .join(', '); + + children = retainWhitespaceAndFormat( + children, + ``, + '', + ); + } + } + } + + if (!type) { + return children; + } + + switch (type) { + case NodeTypes.heading[1]: + return `# ${children}\n`; + case NodeTypes.heading[2]: + return `## ${children}\n`; + case NodeTypes.heading[3]: + return `### ${children}\n`; + case NodeTypes.heading[4]: + return `#### ${children}\n`; + case NodeTypes.heading[5]: + return `##### ${children}\n`; + case NodeTypes.heading[6]: + return `###### ${children}\n`; + + case NodeTypes.block_quote: + // For some reason, marked is parsing blockquotes w/ one new line + // as contiued blockquotes, so adding two new lines ensures that doesn't + // happen + return `> ${children + .replace(/^[\n]*|[\n]*$/gm, '') + .split('\n') + .join('\n> ')}\n\n`; + + case NodeTypes.code_block: + const codeBlock = chunk as MdCodeBlockElement; + return `\`\`\`${codeBlock.lang ?? ''}\n${codeBlock.code}\n\`\`\`\n`; + + case NodeTypes.link: + const linkBlock = chunk as unknown as MdLinkElement; + return `[${children}](${linkBlock.url || ''})`; + + case NodeTypes.image: + const imageBlock = chunk as unknown as MdImageElement; + const caption = imageBlock.caption ?? []; + return `![${caption.length > 0 ? caption[0].text ?? '' : ''}](${imageBlock.url || ''})`; + + case NodeTypes.ul_list: + case NodeTypes.ol_list: + return `\n${children}`; + + case NodeTypes.listItemContent: + return children; + + case NodeTypes.listItem: + const listItemBlock = chunk as unknown as MdListItemElement; + + const isOL = chunk && chunk.parentType === NodeTypes.ol_list; + + const treatAsLeaf = + (chunk as MdBlockType).children.length >= 1 && + ((chunk as MdBlockType).children.reduce((acc, child) => acc && isLeafNode(child), true) || + ((chunk as MdBlockType).children[0] as BlockType).type === 'lic'); + + let spacer = ''; + for (let k = 0; listDepth > k; k++) { + if (isOL) { + // https://github.com/remarkjs/remark-react/issues/65 + spacer += ' '; + } else { + spacer += ' '; + } + } + + let checkbox = ''; + if (typeof listItemBlock.checked === 'boolean') { + checkbox = ` [${listItemBlock.checked ? 'X' : ' '}]`; + } + + return `${spacer}${isOL ? '1.' : '-'}${checkbox} ${children}${treatAsLeaf ? '\n' : ''}`; + + case NodeTypes.paragraph: + const paragraphNode = chunk as unknown as MdParagraphElement; + if (paragraphNode.align) { + return `

    ${children}

    `; + } + return `${children}${!isInTable ? '\n' : ''}`; + + case NodeTypes.thematic_break: + return `---\n`; + + case NodeTypes.table: + const columns = getTableColumnCount(chunk as TableNode); + return `|${Array(columns).fill(' ').join('|')}| +|${Array(columns).fill('---').join('|')}| +${children}\n`; + + case NodeTypes.tableRow: + return `|${children}|\n`; + + case NodeTypes.tableCell: + return children.replace(/\|/g, '\\|').replace(/\n/g, BREAK_TAG); + + default: + console.warn('Unrecognized slate node, proceeding as text', `"${type}"`, chunk); + return children; + } +} + +const reverseStr = (string: string) => string.split('').reverse().join(''); + +// This function handles the case of a string like this: " foo " +// Where it would be invalid markdown to generate this: "** foo **" +// We instead, want to trim the whitespace out, apply formatting, and then +// bring the whitespace back. So our returned string looks like this: " **foo** " +function retainWhitespaceAndFormat(string: string, format: string, endFormat?: string) { + // we keep this for a comparison later + const frozenString = string.trim(); + + // children will be mutated + const children = frozenString; + + // We reverse the right side formatting, to properly handle bold/italic and strikethrough + // formats, so we can create ~~***FooBar***~~ + const fullFormat = `${format}${children}${endFormat ? endFormat : reverseStr(format)}`; + + // This conditions accounts for no whitespace in our string + // if we don't have any, we can return early. + if (children.length === string.length) { + return fullFormat; + } + + // if we do have whitespace, let's add our formatting around our trimmed string + // We reverse the right side formatting, to properly handle bold/italic and strikethrough + // formats, so we can create ~~***FooBar***~~ + const formattedString = `${format}${children}${endFormat ? endFormat : reverseStr(format)}`; + + // and replace the non-whitespace content of the string + return string.replace(frozenString, formattedString); +} + +function getTableColumnCount(tableNode: TableNode): number { + const rows = tableNode.children; + if (rows.length === 0) { + return 0; + } + + return rows[0].children.length; +} diff --git a/core/src/widgets/markdown/plate/serialization/slate/ast-types.ts b/core/src/widgets/markdown/plate/serialization/slate/ast-types.ts new file mode 100644 index 00000000..f9ecae9c --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/slate/ast-types.ts @@ -0,0 +1,308 @@ +import { + ELEMENT_BLOCKQUOTE, + ELEMENT_CODE_BLOCK, + ELEMENT_H1, + ELEMENT_H2, + ELEMENT_H3, + ELEMENT_H4, + ELEMENT_H5, + ELEMENT_H6, + ELEMENT_IMAGE, + ELEMENT_LI, + ELEMENT_LIC, + ELEMENT_LINK, + ELEMENT_OL, + ELEMENT_PARAGRAPH, + ELEMENT_TABLE, + ELEMENT_TD, + ELEMENT_TR, + ELEMENT_UL, +} from '@udecode/plate'; + +export const VOID_ELEMENTS = [ELEMENT_CODE_BLOCK, ELEMENT_IMAGE]; + +export const MarkNodeTypes = { + superscript_mark: 'superscript', + subscript_mark: 'subscript', + underline_mark: 'underline', +} as const; + +export const NodeTypes = { + paragraph: ELEMENT_PARAGRAPH, + block_quote: ELEMENT_BLOCKQUOTE, + code_block: ELEMENT_CODE_BLOCK, + link: ELEMENT_LINK, + ul_list: ELEMENT_UL, + ol_list: ELEMENT_OL, + listItem: ELEMENT_LI, + listItemContent: ELEMENT_LIC, + table: ELEMENT_TABLE, + tableRow: ELEMENT_TR, + tableCell: ELEMENT_TD, + heading: { + 1: ELEMENT_H1, + 2: ELEMENT_H2, + 3: ELEMENT_H3, + 4: ELEMENT_H4, + 5: ELEMENT_H5, + 6: ELEMENT_H6, + }, + emphasis_mark: 'italic', + strong_mark: 'bold', + delete_mark: 'strikethrough', + inline_code_mark: 'code', + thematic_break: 'thematic_break', + image: ELEMENT_IMAGE, + ...MarkNodeTypes, +} as const; + +export type MdastNodeType = + | 'paragraph' + | 'heading' + | 'list' + | 'listItem' + | 'link' + | 'image' + | 'blockquote' + | 'code' + | 'html' + | 'emphasis' + | 'strong' + | 'delete' + | 'inlineCode' + | 'thematicBreak' + | 'text' + | 'mdxJsxTextElement'; + +export interface LeafType { + text: string; + strikethrough?: boolean; + bold?: boolean; + italic?: boolean; + code?: boolean; + parentType?: string; +} + +export interface BlockType { + type: string; + parentType?: string; + link?: string; + caption?: string; + language?: string; + break?: boolean; + children: Array; +} + +export type MdastNode = BaseMdastNode | MdxMdastNode; + +export interface BaseMdastNode { + type?: Omit; + ordered?: boolean; + value?: string; + text?: string; + children?: Array; + depth?: 1 | 2 | 3 | 4 | 5 | 6; + url?: string; + alt?: string; + lang?: string; + // mdast metadata + // eslint-disable-next-line @typescript-eslint/no-explicit-any + position?: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + spread?: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + checked?: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + indent?: any; +} + +export interface MdxMdastNodeAttributeValue { + type: 'mdxJsxAttributeValueExpression'; + value: string; +} + +export interface StyleMdxMdastNodeAttribute { + name: 'style'; + type: 'mdxJsxAttribute'; + value: MdxMdastNodeAttributeValue; +} + +export interface ColorMdxMdastNodeAttribute { + name: 'color'; + type: 'mdxJsxAttribute'; + value: string; +} + +export interface AlignMdxMdastNodeAttribute { + name: 'align'; + type: 'mdxJsxAttribute'; + value: string; +} + +export type MdxMdastNodeAttribute = + | StyleMdxMdastNodeAttribute + | ColorMdxMdastNodeAttribute + | AlignMdxMdastNodeAttribute; + +export interface MdxMdastNode extends BaseMdastNode { + type: 'mdxJsxTextElement'; + name: string; + attributes?: MdxMdastNodeAttribute[]; +} + +export const allowedStyles: string[] = ['color', 'backgroundColor']; + +export interface TextNodeStyles { + color?: string; + backgroundColor?: string; +} + +export type TextNode = { text?: string | undefined } & TextNodeStyles; + +export type CodeBlockNode = { + type: typeof NodeTypes['code_block']; + lang: string | undefined; + code: string; +}; + +export type HeadingNode = { + type: + | typeof NodeTypes['heading'][1] + | typeof NodeTypes['heading'][2] + | typeof NodeTypes['heading'][3] + | typeof NodeTypes['heading'][4] + | typeof NodeTypes['heading'][5] + | typeof NodeTypes['heading'][6]; + children: Array; +}; + +export type ListNode = { + type: typeof NodeTypes['ol_list'] | typeof NodeTypes['ul_list']; + children: Array; +}; + +export type ListItemNode = { + type: typeof NodeTypes['listItem']; + checked: boolean; + children: Array; +}; + +export type ListItemContentNode = { + type: typeof NodeTypes['listItemContent']; + children: Array; +}; + +export type ParagraphNode = { + type: typeof NodeTypes['paragraph']; + break?: true; + children: Array; +}; + +export type LinkNode = { + type: typeof NodeTypes['link']; + children: Array; + url: string | undefined; +}; + +export type ImageNode = { + type: typeof NodeTypes['image']; + children: Array; + url: string | undefined; + caption: TextNode; +}; + +export type TableNode = { + type: typeof NodeTypes['table']; + children: Array; +}; + +export type TableRowNode = { + type: typeof NodeTypes['tableRow']; + children: Array; +}; + +export type TableCellNode = { + type: typeof NodeTypes['tableCell']; + children: Array; +}; + +export type BlockQuoteNode = { + type: typeof NodeTypes['block_quote']; + children: Array; +}; + +export type InlineCodeMarkNode = { + type: typeof NodeTypes['inline_code_mark']; + children: Array; + language: string | undefined; +}; + +export type ThematicBreakNode = { + type: typeof NodeTypes['thematic_break']; + children: Array; +}; + +export type ItalicNode = { + [K in typeof NodeTypes['emphasis_mark']]: true; +} & { + children: TextNode; +}; + +export type MarkNode = + | SuperscriptNode + | SubscriptNode + | UnderlineNode + | BoldNode + | StrikeThoughNode + | InlineCodeNode; + +export type SuperscriptNode = { + [K in typeof NodeTypes['superscript_mark']]: true; +} & { + children: TextNode; +}; + +export type SubscriptNode = { + [K in typeof NodeTypes['subscript_mark']]: true; +} & { + children: TextNode; +}; + +export type UnderlineNode = { + [K in typeof NodeTypes['underline_mark']]: true; +} & { + children: TextNode; +}; + +export type BoldNode = { + bold: true; + children: TextNode; +}; + +export type StrikeThoughNode = { + strikethrough: true; + children: TextNode; +}; + +export type InlineCodeNode = { + code: true; + text: string | undefined; +}; + +export type DeserializedNode = + | CodeBlockNode + | HeadingNode + | ListNode + | ListItemNode + | ListItemContentNode + | ParagraphNode + | LinkNode + | ImageNode + | BlockQuoteNode + | InlineCodeMarkNode + | ThematicBreakNode + | ItalicNode + | TextNode + | MarkNode; + +export const LIST_TYPES: string[] = [NodeTypes.ul_list, NodeTypes.ol_list]; diff --git a/core/src/widgets/markdown/plate/serialization/slate/deserializeMarkdown.ts b/core/src/widgets/markdown/plate/serialization/slate/deserializeMarkdown.ts new file mode 100644 index 00000000..22856fa2 --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/slate/deserializeMarkdown.ts @@ -0,0 +1,299 @@ +/* eslint-disable no-case-declarations */ +import { ELEMENT_PARAGRAPH } from '@udecode/plate'; + +import { allowedStyles, LIST_TYPES, MarkNodeTypes, NodeTypes } from './ast-types'; + +import type { MdBlockElement } from '@staticcms/markdown'; +import type { + AlignMdxMdastNodeAttribute, + BlockQuoteNode, + CodeBlockNode, + ColorMdxMdastNodeAttribute, + DeserializedNode, + HeadingNode, + ImageNode, + ItalicNode, + LinkNode, + ListItemNode, + ListNode, + MarkNode, + MdastNode, + ParagraphNode, + StyleMdxMdastNodeAttribute, + TextNode, + TextNodeStyles, + ThematicBreakNode, +} from './ast-types'; + +const forceLeafNode = (children: Array) => ({ + text: children.map(k => k?.text).join(''), +}); + +// This function is will take any unknown keys, and bring them up a level +// allowing leaf nodes to have many different formats at once +// for example, bold and italic on the same node +function persistLeafFormats( + children: Array, +): Omit { + return children.reduce((acc, node) => { + (Object.keys(node) as Array).forEach(function (key) { + if (key === 'children' || key === 'type' || key === 'text') return; + + acc[key] = node[key]; + }); + + return acc; + }, {}); +} + +function mdxToMark(mark: keyof typeof MarkNodeTypes, children: DeserializedNode[]): MarkNode { + return { + [MarkNodeTypes[mark] as string]: true, + ...forceLeafNode(children as Array), + ...persistLeafFormats(children as Array), + } as MarkNode; +} + +export interface Options { + isInTable?: boolean; +} + +export default function deserializeMarkdown(node: MdastNode, options?: Options) { + let children: Array = [{ text: '' }]; + + const { isInTable = false } = options ?? {}; + + const selfIsTable = node.type === 'table'; + + const nodeChildren = node.children; + if (nodeChildren && Array.isArray(nodeChildren) && nodeChildren.length > 0) { + children = nodeChildren.flatMap( + (c: MdastNode) => + deserializeMarkdown( + { + ...c, + ordered: node.ordered || c.ordered || false, + }, + { + isInTable: selfIsTable || isInTable, + }, + ) as DeserializedNode, + ); + } + + switch (node.type) { + case 'heading': + return { + type: NodeTypes.heading[node.depth || 1], + children, + } as HeadingNode; + + case 'list': + return { + type: node.ordered ? NodeTypes.ol_list : NodeTypes.ul_list, + children, + } as ListNode; + + case 'listItem': + const [content, childList] = children.reduce( + ([accContent, accChildList], child) => { + if ('type' in child && LIST_TYPES.includes(child.type)) { + return [accContent, child]; + } + + accContent.push(child); + return [accContent, accChildList]; + }, + [[], null] as [DeserializedNode[], DeserializedNode | null], + ); + + const listItemChildren: DeserializedNode[] = [ + { + type: NodeTypes.listItemContent, + children: content, + }, + ]; + + if (childList) { + listItemChildren.push(childList); + } + + return { + type: NodeTypes.listItem, + checked: node.checked, + children: listItemChildren, + } as ListItemNode; + + case 'paragraph': + if ('ordered' in node) { + return children; + } + + if ( + Array.isArray(children) && + children.length === 1 && + 'type' in children[0] && + (children[0] as MdBlockElement).type === ELEMENT_PARAGRAPH + ) { + return children[0]; + } + + return { type: NodeTypes.paragraph, children } as ParagraphNode; + + case 'link': + return { + type: NodeTypes.link, + url: node.url, + children, + } as LinkNode; + + case 'image': + return { + type: NodeTypes.image, + children: [{ text: '' }], + url: node.url, + caption: [{ text: node.alt ?? '' }], + } as ImageNode; + + case 'blockquote': + return { type: NodeTypes.block_quote, children } as BlockQuoteNode; + + case 'code': + return { + type: NodeTypes.code_block, + lang: node.lang, + code: node.value, + children: [{ text: '' }], + } as CodeBlockNode; + + case 'html': + if (node.value?.includes('
    ')) { + return { + break: true, + type: NodeTypes.paragraph, + children: [{ text: node.value?.replace(/
    /g, '') || '' }], + } as ParagraphNode; + } + return { type: 'p', children: [{ text: node.value || '' }] }; + + case 'emphasis': + return { + [NodeTypes.emphasis_mark]: true, + ...forceLeafNode(children as Array), + ...persistLeafFormats(children as Array), + } as unknown as ItalicNode; + case 'strong': + return { + [NodeTypes.strong_mark]: true, + ...forceLeafNode(children as Array), + ...persistLeafFormats(children as Array), + }; + case 'delete': + return { + [NodeTypes.delete_mark]: true, + ...forceLeafNode(children as Array), + ...persistLeafFormats(children as Array), + }; + case 'inlineCode': + return { + [NodeTypes.inline_code_mark]: true, + text: node.value, + ...persistLeafFormats(children as Array), + }; + case 'thematicBreak': + return { + type: NodeTypes.thematic_break, + children: [{ text: '' }], + } as ThematicBreakNode; + + case 'table': + return { type: NodeTypes.table, children }; + + case 'tableRow': + return { type: NodeTypes.tableRow, children }; + + case 'tableCell': + return { type: NodeTypes.tableCell, children: [{ type: NodeTypes.paragraph, children }] }; + + case 'mdxJsxTextElement': + if ('name' in node) { + switch (node.name) { + case 'br': + return [{ text: '\n' }]; + case 'sub': + return mdxToMark('subscript_mark', children); + case 'sup': + return mdxToMark('superscript_mark', children); + case 'u': + return mdxToMark('underline_mark', children); + case 'p': + const alignAttribute = node.attributes?.find( + a => a.name === 'align', + ) as AlignMdxMdastNodeAttribute; + const pNodeStyles: Record = {}; + if (alignAttribute) { + pNodeStyles['align'] = alignAttribute.value; + } + + return { + type: NodeTypes.paragraph, + ...pNodeStyles, + children: [ + { + ...forceLeafNode(children as Array), + ...persistLeafFormats(children as Array), + }, + ], + } as ParagraphNode; + case 'font': + const styleAttribute = node.attributes?.find( + a => a.name === 'style', + ) as StyleMdxMdastNodeAttribute; + const nodeStyles: TextNodeStyles = {}; + if (styleAttribute) { + let styles: Record = {}; + try { + styles = + JSON.parse( + styleAttribute.value.value + .replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g, '"$2": ') + .replace(/:[ ]*[']([^']+)[']/g, ': "$1"'), + ) ?? {}; + } catch (e) { + console.error(`Error parsing font styles (${styleAttribute.value.value})`, e); + } + + Object.keys(styles).map(key => { + if (allowedStyles.includes(key)) { + nodeStyles[key as keyof TextNodeStyles] = styles[key]; + } + }); + } + + const colorAttribute = node.attributes?.find( + a => a.name === 'color', + ) as ColorMdxMdastNodeAttribute; + if (colorAttribute) { + nodeStyles.color = colorAttribute.value; + } + + return { + ...nodeStyles, + ...forceLeafNode(children as Array), + ...persistLeafFormats(children as Array), + } as TextNode; + default: + console.warn('unrecognized mdx node', node); + break; + } + } + + return { text: node.value || '' }; + + case 'text': + return { text: node.value || '' }; + default: + console.warn('Unrecognized mdast node, proceeding as text', node); + return { text: node.value || '' }; + } +} diff --git a/core/src/widgets/markdown/plate/serialization/slate/flattenListItemParagraphs.ts b/core/src/widgets/markdown/plate/serialization/slate/flattenListItemParagraphs.ts new file mode 100644 index 00000000..76b67c1d --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/slate/flattenListItemParagraphs.ts @@ -0,0 +1,20 @@ +import { visit } from 'unist-util-visit'; + +import type { Plugin } from 'unified'; +import type { Parent, Node, VisitorResult } from 'unist-util-visit'; + +const flattenListItemParagraphs: Plugin = function () { + return ast => { + visit(ast, 'listItem', (listItem: Parent) => { + if ('children' in listItem && listItem.children.length > 0) { + listItem.children = listItem.children.flatMap(child => { + return child.type === 'paragraph' ? (child as Parent).children : child; + }) as Node[]; + } + return listItem as unknown as VisitorResult; + }); + return ast; + }; +}; + +export default flattenListItemParagraphs; diff --git a/core/src/widgets/markdown/plate/serialization/slate/index.ts b/core/src/widgets/markdown/plate/serialization/slate/index.ts new file mode 100644 index 00000000..91ffa874 --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/slate/index.ts @@ -0,0 +1,5 @@ +export * from './ast-types'; +export * from './deserializeMarkdown'; +export { default as deserializeMarkdown } from './deserializeMarkdown'; +export { default as flattenListItemParagraphs } from './flattenListItemParagraphs'; +export { default as toSlatePlugin } from './toSlatePlugin'; diff --git a/core/src/widgets/markdown/plate/serialization/slate/toSlatePlugin.ts b/core/src/widgets/markdown/plate/serialization/slate/toSlatePlugin.ts new file mode 100644 index 00000000..0a884301 --- /dev/null +++ b/core/src/widgets/markdown/plate/serialization/slate/toSlatePlugin.ts @@ -0,0 +1,14 @@ +import transform from './deserializeMarkdown'; + +import type { Plugin } from 'unified'; +import type { MdastNode } from './ast-types'; + +const toSlatePlugin: Plugin = function () { + const compiler = (node: { children: Array }) => { + return node.children.map(c => transform(c, {})); + }; + + this.Compiler = compiler; +}; + +export default toSlatePlugin; diff --git a/core/src/widgets/markdown/plugins/imagePlugin.ts b/core/src/widgets/markdown/plugins/imagePlugin.ts deleted file mode 100644 index 9e9bf6bd..00000000 --- a/core/src/widgets/markdown/plugins/imagePlugin.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { CustomHTMLRenderer } from '@toast-ui/editor'; -import type { LinkMdNode, MdNode } from '@toast-ui/editor/types/toastmark'; -import type { MarkdownPluginFactory, MarkdownPluginFactoryProps } from '../../../interface'; - -function isLinkNode(node: MdNode): node is LinkMdNode { - return 'destination' in node; -} - -const toHTMLRenderer: (props: MarkdownPluginFactoryProps) => CustomHTMLRenderer = ({ media }) => ({ - image: (node: MdNode, { entering, skipChildren }) => { - if (entering && isLinkNode(node)) { - skipChildren(); - - let imageUrl = node.destination ?? ''; - if (node.destination) { - imageUrl = media.getMedia(node.destination)?.toString() ?? node.destination; - } - - return { - type: 'openTag', - tagName: 'img', - outerNewLine: true, - attributes: { - src: node.destination, - onerror: `this.onerror=null; this.src='${imageUrl}'`, - }, - selfClose: true, - }; - } - - return []; - }, -}); - -const imagePlugin: MarkdownPluginFactory = props => { - return () => ({ - toHTMLRenderers: toHTMLRenderer(props), - }); -}; - -export default imagePlugin; diff --git a/core/src/widgets/markdown/regexHelper.ts b/core/src/widgets/markdown/regexHelper.ts deleted file mode 100644 index af4d30c0..00000000 --- a/core/src/widgets/markdown/regexHelper.ts +++ /dev/null @@ -1,152 +0,0 @@ -import last from 'lodash/last'; - -/** - * Joins an array of regular expressions into a single expression, without - * altering the received expressions. - */ -export function joinPatternSegments(patterns: RegExp[]) { - return patterns.map(p => p.source).join(''); -} - -/** - * Combines an array of regular expressions into a single expression, wrapping - * each in a non-capturing group and interposing alternation characters (|) so - * that each expression is executed separately. - */ -export function combinePatterns(patterns: RegExp[]) { - return patterns.map(p => `(?:${p.source})`).join('|'); -} - -interface PatternMatch { - index: number; - text: string; - match?: boolean; -} - -/** - * Modify substrings within a string if they match a (global) pattern. Can be - * inverted to only modify non-matches. - * - * params: - * matchPattern - regexp - a regular expression to check for matches - * replaceFn - function - a replacement function that receives a matched - * substring and returns a replacement substring - * text - string - the string to process - * invertMatchPattern - boolean - if true, non-matching substrings are modified - * instead of matching substrings - */ -export function replaceWhen( - matchPattern: RegExp, - replaceFn: (text: string) => string, - text: string, - invertMatchPattern: boolean, -): string { - /** - * Splits the string into an array of objects with the following shape: - * - * { - * index: number - the index of the substring within the string - * text: string - the substring - * match: boolean - true if the substring matched `matchPattern` - * } - * - * Loops through matches via recursion (`RegExp.exec` tracks the loop - * internally). - */ - function split(exp: RegExp, text: string, acc: PatternMatch[]): PatternMatch[] { - /** - * Get the next match starting from the end of the last match or start of - * string. - */ - const match = exp.exec(text); - const lastEntry = last(acc); - - /** - * `match` will be null if there are no matches. - */ - if (!match) { - return acc; - } - - /** - * If the match is at the beginning of the input string, normalize to a data - * object with the `match` flag set to `true`, and add to the accumulator. - */ - if (match.index === 0) { - addSubstring(acc, 0, match[0], true); - } else if (!lastEntry) { - /** - * If there are no entries in the accumulator, convert the substring before - * the match to a data object (without the `match` flag set to true) and - * push to the accumulator, followed by a data object for the matching - * substring. - */ - addSubstring(acc, 0, match.input.slice(0, match.index)); - addSubstring(acc, match.index, match[0], true); - } else if (match.index === lastEntry.index + lastEntry.text.length) { - /** - * If the last entry in the accumulator immediately preceded the current - * matched substring in the original string, just add the data object for - * the matching substring to the accumulator. - */ - addSubstring(acc, match.index, match[0], true); - } else { - /** - * Convert the substring before the match to a data object (without the - * `match` flag set to true), followed by a data object for the matching - * substring. - */ - const nextIndex = lastEntry.index + lastEntry.text.length; - const nextText = match.input.slice(nextIndex, match.index); - addSubstring(acc, nextIndex, nextText); - addSubstring(acc, match.index, match[0], true); - } - - /** - * Continue executing the expression. - */ - return split(exp, text, acc); - } - - /** - * Factory for converting substrings to data objects and adding to an output - * array. - */ - function addSubstring(arr: PatternMatch[], index: number, text: string, match = false) { - arr.push({ index, text, match }); - } - - /** - * Split the input string to an array of data objects, each representing a - * matching or non-matching string. - */ - const acc = split(matchPattern, text, []); - - /** - * Process the trailing substring after the final match, if one exists. - */ - const lastEntry = last(acc); - if (!lastEntry) { - return replaceFn(text); - } - - const nextIndex = lastEntry.index + lastEntry.text.length; - if (text.length > nextIndex) { - acc.push({ index: nextIndex, text: text.slice(nextIndex) }); - } - - /** - * Record the data objects in the accumulator to their string values, modifying - * matched strings with the replacement function. Modifies non-matches if - * `invertMatchPattern` is truthy. - */ - const replacedText = acc.map(entry => { - const isMatch = invertMatchPattern ? !entry.match : entry.match; - return isMatch ? replaceFn(entry.text) : entry.text; - }); - - /** - * Return the joined string. - */ - return replacedText.join(''); -} diff --git a/core/src/widgets/markdown/styles.ts b/core/src/widgets/markdown/styles.ts deleted file mode 100644 index 8245ef5b..00000000 --- a/core/src/widgets/markdown/styles.ts +++ /dev/null @@ -1,14 +0,0 @@ -import styled from '@emotion/styled'; - -import { zIndex } from '../../components/UI/styles'; - -export const editorStyleVars = { - stickyDistanceBottom: '100px', -}; - -export const EditorControlBar = styled.div` - z-index: ${zIndex.zIndex200}; - position: sticky; - top: 0; - margin-bottom: ${editorStyleVars.stickyDistanceBottom}; -`; diff --git a/core/src/widgets/markdown/toolbar/useImageToolbarButton.ts b/core/src/widgets/markdown/toolbar/useImageToolbarButton.ts deleted file mode 100644 index 6c3dd123..00000000 --- a/core/src/widgets/markdown/toolbar/useImageToolbarButton.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { useEffect, useMemo } from 'react'; - -import type { ToolbarItemOptions } from '@toast-ui/editor/types/ui'; -export interface ImagePluginProps { - openMediaLibrary: (forImages: boolean) => void; -} - -const PREFIX = 'toastui-editor-'; - -const useImageToolbarButton = ({ openMediaLibrary }: ImagePluginProps): ToolbarItemOptions => { - const toolbarButton = useMemo(() => { - const btn = document.createElement('button'); - btn.type = 'button'; - btn.className = 'image toastui-editor-toolbar-icons'; - btn.ariaLabel = 'Insert image'; - btn.setAttribute('style', 'margin: 0;'); - return btn; - }, []); - - useEffect(() => { - const handler = () => { - openMediaLibrary(true); - }; - - toolbarButton.addEventListener('click', handler); - - return () => { - toolbarButton.removeEventListener('click', handler); - }; - }, [openMediaLibrary, toolbarButton]); - - const toolbarItem: ToolbarItemOptions = useMemo( - () => ({ - name: 'cmsimage', - className: `${PREFIX}toolbar-icons color`, - el: toolbarButton, - }), - [toolbarButton], - ); - - return toolbarItem; -}; - -export default useImageToolbarButton; diff --git a/core/src/widgets/markdown/types.ts b/core/src/widgets/markdown/types.ts deleted file mode 100644 index 952a21f6..00000000 --- a/core/src/widgets/markdown/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const SLATE_DEFAULT_BLOCK_TYPE = 'paragraph' as const; -export const SLATE_BLOCK_PARENT_TYPES = ['list-item', 'quote'] as const; - -export type SlateBlockParentType = typeof SLATE_BLOCK_PARENT_TYPES[number]; diff --git a/core/src/widgets/number/NumberControl.tsx b/core/src/widgets/number/NumberControl.tsx index 0060a30d..c45c4f1b 100644 --- a/core/src/widgets/number/NumberControl.tsx +++ b/core/src/widgets/number/NumberControl.tsx @@ -1,9 +1,9 @@ import TextField from '@mui/material/TextField'; import React, { useCallback, useState } from 'react'; -import type { ChangeEvent } from 'react'; +import type { FieldError, NumberField, WidgetControlProps } from '@staticcms/core/interface'; +import type { ChangeEvent, FC } from 'react'; import type { t } from 'react-polyglot'; -import type { FieldError, NumberField, WidgetControlProps } from '../../interface'; const ValidationErrorTypes = { PRESENCE: 'PRESENCE', @@ -12,7 +12,7 @@ const ValidationErrorTypes = { CUSTOM: 'CUSTOM', }; -export function validateMinMax( +export function validateNumberMinMax( value: string | number, min: number | false, max: number | false, @@ -58,13 +58,13 @@ export function validateMinMax( return error; } -const NumberControl = ({ +const NumberControl: FC> = ({ label, field, value, onChange, hasErrors, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value ?? ''); const handleChange = useCallback( diff --git a/core/src/widgets/number/NumberPreview.tsx b/core/src/widgets/number/NumberPreview.tsx index bf73cb68..881bb862 100644 --- a/core/src/widgets/number/NumberPreview.tsx +++ b/core/src/widgets/number/NumberPreview.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { NumberField, WidgetPreviewProps } from '../../interface'; +import type { NumberField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -function NumberPreview({ value }: WidgetPreviewProps) { +const NumberPreview: FC> = ({ value }) => { return {value}; -} +}; export default NumberPreview; diff --git a/core/src/widgets/number/index.ts b/core/src/widgets/number/index.ts index c54f90b7..c4f8870f 100644 --- a/core/src/widgets/number/index.ts +++ b/core/src/widgets/number/index.ts @@ -1,8 +1,8 @@ -import controlComponent, { validateMinMax } from './NumberControl'; +import controlComponent, { validateNumberMinMax } from './NumberControl'; import previewComponent from './NumberPreview'; import schema from './schema'; -import type { NumberField, WidgetParam } from '../../interface'; +import type { NumberField, WidgetParam } from '@staticcms/core/interface'; const NumberWidget = (): WidgetParam => { return { @@ -21,7 +21,7 @@ const NumberWidget = (): WidgetParam => { const min = field.min ?? false; const max = field.max ?? false; - const error = validateMinMax(value, min, max, field, t); + const error = validateNumberMinMax(value, min, max, field, t); return error ?? false; }, schema, @@ -29,4 +29,11 @@ const NumberWidget = (): WidgetParam => { }; }; +export { + controlComponent as NumberControl, + previewComponent as NumberPreview, + schema as NumberSchema, + validateNumberMinMax, +}; + export default NumberWidget; diff --git a/core/src/widgets/object/ObjectControl.tsx b/core/src/widgets/object/ObjectControl.tsx index 72a81039..334314da 100644 --- a/core/src/widgets/object/ObjectControl.tsx +++ b/core/src/widgets/object/ObjectControl.tsx @@ -1,13 +1,14 @@ import { styled } from '@mui/material/styles'; import React, { useCallback, useMemo, useState } from 'react'; -import EditorControl from '../../components/Editor/EditorControlPane/EditorControl'; -import ObjectWidgetTopBar from '../../components/UI/ObjectWidgetTopBar'; -import Outline from '../../components/UI/Outline'; -import { transientOptions } from '../../lib'; -import { compileStringTemplate } from '../../lib/widgets/stringTemplate'; +import EditorControl from '@staticcms/core/components/Editor/EditorControlPane/EditorControl'; +import ObjectWidgetTopBar from '@staticcms/core/components/UI/ObjectWidgetTopBar'; +import Outline from '@staticcms/core/components/UI/Outline'; +import { transientOptions } from '@staticcms/core/lib'; +import { compileStringTemplate } from '@staticcms/core/lib/widgets/stringTemplate'; -import type { ObjectField, ObjectValue, WidgetControlProps } from '../../interface'; +import type { ObjectField, ObjectValue, WidgetControlProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; const StyledObjectControlWrapper = styled('div')` position: relative; @@ -46,7 +47,7 @@ const StyledNoFieldsMessage = styled('div')` width: 100%; `; -const ObjectControl = ({ +const ObjectControl: FC> = ({ field, fieldsErrors, submitted, @@ -59,7 +60,7 @@ const ObjectControl = ({ i18n, hasErrors, value = {}, -}: WidgetControlProps) => { +}) => { const [collapsed, setCollapsed] = useState(false); const handleCollapseToggle = useCallback(() => { diff --git a/core/src/widgets/object/ObjectPreview.tsx b/core/src/widgets/object/ObjectPreview.tsx index de82ea18..f4b7b2f8 100644 --- a/core/src/widgets/object/ObjectPreview.tsx +++ b/core/src/widgets/object/ObjectPreview.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { ObjectField, ObjectValue, WidgetPreviewProps } from '../../interface'; +import type { ObjectField, ObjectValue, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -function ObjectPreview({ field }: WidgetPreviewProps) { +const ObjectPreview: FC> = ({ field }) => { return {field.fields ?? null}; -} +}; export default ObjectPreview; diff --git a/core/src/widgets/object/index.ts b/core/src/widgets/object/index.ts index 59b82d20..1d239299 100644 --- a/core/src/widgets/object/index.ts +++ b/core/src/widgets/object/index.ts @@ -2,7 +2,7 @@ import controlComponent from './ObjectControl'; import previewComponent from './ObjectPreview'; import schema from './schema'; -import type { ObjectField, ObjectValue, WidgetParam } from '../../interface'; +import type { ObjectField, ObjectValue, WidgetParam } from '@staticcms/core/interface'; const ObjectWidget = (): WidgetParam => { return { @@ -15,4 +15,10 @@ const ObjectWidget = (): WidgetParam => { }; }; +export { + controlComponent as ObjectControl, + previewComponent as ObjectPreview, + schema as ObjectSchema, +}; + export default ObjectWidget; diff --git a/core/src/widgets/relation/RelationControl.tsx b/core/src/widgets/relation/RelationControl.tsx index 4a81ebc0..1ad7eeef 100644 --- a/core/src/widgets/relation/RelationControl.tsx +++ b/core/src/widgets/relation/RelationControl.tsx @@ -6,26 +6,25 @@ import get from 'lodash/get'; import uniqBy from 'lodash/uniqBy'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; -import { QUERY_SUCCESS } from '../../actions/search'; -import { isNotEmpty } from '../../lib/util/string.util'; +import { QUERY_SUCCESS } from '@staticcms/core/actions/search'; +import { isNotEmpty } from '@staticcms/core/lib/util/string.util'; import { addFileTemplateFields, compileStringTemplate, expandPath, extractTemplateVars, -} from '../../lib/widgets/stringTemplate'; +} from '@staticcms/core/lib/widgets/stringTemplate'; +import type { + Entry, + EntryData, + RelationField, + WidgetControlProps, +} from '@staticcms/core/interface'; +import type { FC, ReactNode } from 'react'; import type { ListChildComponentProps } from 'react-window'; -import type { Entry, EntryData, RelationField, WidgetControlProps } from '../../interface'; -// TODO Remove if sorting not needed -// function arrayMove(array, from, to) { -// const slicedArray = array.slice(); -// slicedArray.splice(to < 0 ? array.length + to : to, 0, slicedArray.splice(from, 1)[0]); -// return slicedArray; -// } - -function Option({ index, style, data }: ListChildComponentProps<{ options: React.ReactNode[] }>) { +function Option({ index, style, data }: ListChildComponentProps<{ options: ReactNode[] }>) { return
    {data.options[index]}
    ; } @@ -106,7 +105,7 @@ function getSelectedValue( } } -const RelationControl = ({ +const RelationControl: FC> = ({ path, value, field, @@ -115,7 +114,7 @@ const RelationControl = ({ locale, label, hasErrors, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value); const [initialOptions, setInitialOptions] = useState([]); @@ -184,7 +183,7 @@ const RelationControl = ({ ); const [options, setOptions] = useState([]); - const [open, setOpen] = React.useState(false); + const [open, setOpen] = useState(false); const valueNotEmpty = useMemo( () => (Array.isArray(internalValue) ? internalValue.length > 0 : isNotEmpty(internalValue)), [internalValue], @@ -240,10 +239,10 @@ const RelationControl = ({ InputProps={{ ...params.InputProps, endAdornment: ( - + <> {loading ? : null} {params.InputProps.endAdornment} - + ), }} /> diff --git a/core/src/widgets/relation/RelationPreview.tsx b/core/src/widgets/relation/RelationPreview.tsx index a6be1a62..dc1c5d3a 100644 --- a/core/src/widgets/relation/RelationPreview.tsx +++ b/core/src/widgets/relation/RelationPreview.tsx @@ -1,11 +1,12 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { RelationField, WidgetPreviewProps } from '../../interface'; +import type { RelationField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -function RelationPreview({ value }: WidgetPreviewProps) { +const RelationPreview: FC> = ({ value }) => { return {value}; -} +}; export default RelationPreview; diff --git a/core/src/widgets/relation/index.ts b/core/src/widgets/relation/index.ts index f3083138..7fa99ea6 100644 --- a/core/src/widgets/relation/index.ts +++ b/core/src/widgets/relation/index.ts @@ -1,9 +1,9 @@ import controlComponent from './RelationControl'; import previewComponent from './RelationPreview'; import schema from './schema'; -import { validations } from '../../lib/widgets'; +import { validations } from '@staticcms/core/lib/widgets'; -import type { RelationField, WidgetParam } from '../../interface'; +import type { RelationField, WidgetParam } from '@staticcms/core/interface'; function isMultiple(field: RelationField) { return field.multiple ?? false; @@ -32,4 +32,10 @@ function RelationWidget(): WidgetParam { }; } +export { + controlComponent as RelationControl, + previewComponent as RelationPreview, + schema as RelationSchema, +}; + export default RelationWidget; diff --git a/core/src/widgets/select/SelectControl.tsx b/core/src/widgets/select/SelectControl.tsx index 29369d86..9aa8a1e1 100644 --- a/core/src/widgets/select/SelectControl.tsx +++ b/core/src/widgets/select/SelectControl.tsx @@ -7,10 +7,11 @@ import OutlinedInput from '@mui/material/OutlinedInput'; import Select from '@mui/material/Select'; import React, { useCallback, useMemo, useState } from 'react'; -import { isNullish } from '../../lib/util/null.util'; +import { isNullish } from '@staticcms/core/lib/util/null.util'; import type { SelectChangeEvent } from '@mui/material/Select'; -import type { SelectField, WidgetControlProps } from '../../interface'; +import type { SelectField, WidgetControlProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; interface Option { label: string; @@ -25,13 +26,13 @@ function convertToOption(raw: string | number | Option | undefined): Option | un return raw; } -const SelectControl = ({ +const SelectControl: FC> = ({ label, field, value, hasErrors, onChange, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value); const fieldOptions: (string | number | Option)[] = useMemo(() => field.options, [field.options]); diff --git a/core/src/widgets/select/SelectPreview.tsx b/core/src/widgets/select/SelectPreview.tsx index 9f497f46..6cec9ae1 100644 --- a/core/src/widgets/select/SelectPreview.tsx +++ b/core/src/widgets/select/SelectPreview.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { SelectField, WidgetPreviewProps } from '../../interface'; +import type { SelectField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; interface ListPreviewProps { values: (string | number)[]; @@ -18,9 +19,9 @@ const ListPreview = ({ values }: ListPreviewProps) => { ); }; -const SelectPreview = ({ +const SelectPreview: FC> = ({ value, -}: WidgetPreviewProps) => { +}) => { if (!value) { return ; } diff --git a/core/src/widgets/select/index.ts b/core/src/widgets/select/index.ts index 5d0484b3..ce926cfa 100644 --- a/core/src/widgets/select/index.ts +++ b/core/src/widgets/select/index.ts @@ -1,9 +1,9 @@ import controlComponent from './SelectControl'; import previewComponent from './SelectPreview'; import schema from './schema'; -import { validateMinMax } from '../../lib/widgets/validations'; +import { validateMinMax } from '@staticcms/core/lib/widgets/validations'; -import type { SelectField, WidgetParam } from '../../interface'; +import type { SelectField, WidgetParam } from '@staticcms/core/interface'; const SelectWidget = (): WidgetParam => { return { @@ -28,4 +28,10 @@ const SelectWidget = (): WidgetParam> = ({ value, label, onChange, hasErrors, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value ?? ''); const handleChange = useCallback( diff --git a/core/src/widgets/string/StringPreview.tsx b/core/src/widgets/string/StringPreview.tsx index baa092ec..d76b0a86 100644 --- a/core/src/widgets/string/StringPreview.tsx +++ b/core/src/widgets/string/StringPreview.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { StringOrTextField, WidgetPreviewProps } from '../../interface'; +import type { StringOrTextField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -const StringPreview = ({ value = '' }: WidgetPreviewProps) => { +const StringPreview: FC> = ({ value = '' }) => { return {value}; }; diff --git a/core/src/widgets/string/index.ts b/core/src/widgets/string/index.ts index bdafe8f6..ac8fe335 100644 --- a/core/src/widgets/string/index.ts +++ b/core/src/widgets/string/index.ts @@ -1,7 +1,7 @@ import controlComponent from './StringControl'; import previewComponent from './StringPreview'; -import type { StringOrTextField, WidgetParam } from '../../interface'; +import type { StringOrTextField, WidgetParam } from '@staticcms/core/interface'; const StringWidget = (): WidgetParam => { return { @@ -11,4 +11,6 @@ const StringWidget = (): WidgetParam => { }; }; +export { controlComponent as StringControl, previewComponent as StringPreview }; + export default StringWidget; diff --git a/core/src/widgets/text/TextControl.tsx b/core/src/widgets/text/TextControl.tsx index 7ed07219..23334f87 100644 --- a/core/src/widgets/text/TextControl.tsx +++ b/core/src/widgets/text/TextControl.tsx @@ -1,15 +1,15 @@ import TextField from '@mui/material/TextField'; import React, { useCallback, useState } from 'react'; -import type { ChangeEvent } from 'react'; -import type { StringOrTextField, WidgetControlProps } from '../../interface'; +import type { StringOrTextField, WidgetControlProps } from '@staticcms/core/interface'; +import type { ChangeEvent, FC } from 'react'; -const TextControl = ({ +const TextControl: FC> = ({ label, value, onChange, hasErrors, -}: WidgetControlProps) => { +}) => { const [internalValue, setInternalValue] = useState(value ?? ''); const handleChange = useCallback( diff --git a/core/src/widgets/text/TextPreview.tsx b/core/src/widgets/text/TextPreview.tsx index ce510265..1da4e4c7 100644 --- a/core/src/widgets/text/TextPreview.tsx +++ b/core/src/widgets/text/TextPreview.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import WidgetPreviewContainer from '../../components/UI/WidgetPreviewContainer'; +import WidgetPreviewContainer from '@staticcms/core/components/UI/WidgetPreviewContainer'; -import type { StringOrTextField, WidgetPreviewProps } from '../../interface'; +import type { StringOrTextField, WidgetPreviewProps } from '@staticcms/core/interface'; +import type { FC } from 'react'; -const TextPreview = ({ value }: WidgetPreviewProps) => { +const TextPreview: FC> = ({ value }) => { return {value}; }; diff --git a/core/src/widgets/text/index.ts b/core/src/widgets/text/index.ts index 38b974ce..3505b6a6 100644 --- a/core/src/widgets/text/index.ts +++ b/core/src/widgets/text/index.ts @@ -1,7 +1,7 @@ import controlComponent from './TextControl'; import previewComponent from './TextPreview'; -import type { StringOrTextField, WidgetParam } from '../../interface'; +import type { StringOrTextField, WidgetParam } from '@staticcms/core/interface'; const TextWidget = (): WidgetParam => { return { @@ -11,4 +11,6 @@ const TextWidget = (): WidgetParam => { }; }; +export { controlComponent as TextControl, previewComponent as TextPreview }; + export default TextWidget; diff --git a/core/tsconfig.json b/core/tsconfig.json index 3265c190..0ee5be05 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -19,7 +19,38 @@ "baseUrl": "./", "lib": ["DOM", "es6", "ES2015"], "paths": { - "@staticcms/core": ["./src"] + "@staticcms/boolean": ["./src/widgets/boolean"], + "@staticcms/boolean/*": ["./src/widgets/boolean/*"], + "@staticcms/code": ["./src/widgets/code"], + "@staticcms/code/*": ["./src/widgets/code/*"], + "@staticcms/colorstring": ["./src/widgets/colorstring"], + "@staticcms/colorstring/*": ["./src/widgets/colorstring/*"], + "@staticcms/datetime": ["./src/widgets/datetime"], + "@staticcms/datetime/*": ["./src/widgets/datetime/*"], + "@staticcms/file": ["./src/widgets/file"], + "@staticcms/file/*": ["./src/widgets/file/*"], + "@staticcms/image": ["./src/widgets/image"], + "@staticcms/image/*": ["./src/widgets/image/*"], + "@staticcms/list": ["./src/widgets/list"], + "@staticcms/list/*": ["./src/widgets/list/*"], + "@staticcms/map": ["./src/widgets/map"], + "@staticcms/map/*": ["./src/widgets/map/*"], + "@staticcms/markdown": ["./src/widgets/markdown"], + "@staticcms/markdown/*": ["./src/widgets/markdown/*"], + "@staticcms/number": ["./src/widgets/number"], + "@staticcms/number/*": ["./src/widgets/number/*"], + "@staticcms/object": ["./src/widgets/object"], + "@staticcms/object/*": ["./src/widgets/object/*"], + "@staticcms/relation": ["./src/widgets/relation"], + "@staticcms/relation/*": ["./src/widgets/relation/*"], + "@staticcms/select": ["./src/widgets/select"], + "@staticcms/select/*": ["./src/widgets/select/*"], + "@staticcms/string": ["./src/widgets/string"], + "@staticcms/string/*": ["./src/widgets/string/*"], + "@staticcms/text": ["./src/widgets/text"], + "@staticcms/text/*": ["./src/widgets/text/*"], + "@staticcms/core": ["./src"], + "@staticcms/core/*": ["./src/*"], }, "types": ["@emotion/react/types/css-prop", "@types/jest"] }, diff --git a/core/webpack.config.js b/core/webpack.config.js index 7021207f..2f451958 100644 --- a/core/webpack.config.js +++ b/core/webpack.config.js @@ -1,6 +1,7 @@ const path = require('path'); const webpack = require('webpack'); const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); +const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const isProduction = process.env.NODE_ENV === 'production'; const devServerPort = parseInt(process.env.STATIC_CMS_DEV_SERVER_PORT || `${8080}`); @@ -18,7 +19,10 @@ module.exports = { test: /\.m?js$/, enforce: 'pre', use: ['source-map-loader'], - exclude: /(node_modules[\\/]@toast-ui[\\/]editor[\\/]dist)/, + exclude: [ + /(node_modules[\\/]@toast-ui[\\/]editor[\\/]dist)/, + /(node_modules[\\/]nth-check[\\/]lib)/, + ], }, { test: /\.m?js$/, @@ -71,6 +75,7 @@ module.exports = { ], }, resolve: { + plugins: [new TsconfigPathsPlugin({})], extensions: ['.tsx', '.ts', '.jsx', '.js'], fallback: { path: require.resolve('path-browserify'), diff --git a/core/yarn.lock b/core/yarn.lock index 1a8ec5ef..96e415e2 100644 --- a/core/yarn.lock +++ b/core/yarn.lock @@ -4,7 +4,7 @@ "@ampproject/remapping@^2.1.0": version "2.2.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" @@ -12,7 +12,7 @@ "@babel/cli@7.18.10": version "7.18.10" - resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.18.10.tgz" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.18.10.tgz#4211adfc45ffa7d4f3cee6b60bb92e9fe68fe56a" integrity sha512-dLvWH+ZDFAkd2jPBSghrsFBuXrREvFwjpDycXbmUoeochqKYe4zNSLEJYErpLg8dvxvZYe79/MkN461XCwpnGw== dependencies: "@jridgewell/trace-mapping" "^0.3.8" @@ -28,19 +28,19 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1", "@babel/compat-data@^7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz" - integrity sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.1", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" + integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== "@babel/core@7.19.1": version "7.19.1" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.1.tgz#c8fa615c5e88e272564ace3d42fbc8b17bfeb22b" integrity sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw== dependencies: "@ampproject/remapping" "^2.1.0" @@ -60,93 +60,84 @@ semver "^6.3.0" "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.4.5": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" - integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" + integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.0" - "@babel/helpers" "^7.19.0" - "@babel/parser" "^7.19.3" + "@babel/generator" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.5" + "@babel/parser" "^7.20.5" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.0", "@babel/generator@^7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz" - integrity sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ== +"@babel/generator@^7.19.0", "@babel/generator@^7.20.5", "@babel/generator@^7.7.2": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" + integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA== dependencies: - "@babel/types" "^7.19.3" + "@babel/types" "^7.20.5" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.19.4", "@babel/generator@^7.7.2": - version "7.19.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz" - integrity sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg== - dependencies: - "@babel/types" "^7.19.4" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.1", "@babel/helper-compilation-targets@^7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" - integrity sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.1", "@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: - "@babel/compat-data" "^7.19.3" + "@babel/compat-data" "^7.20.0" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.21.3" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz" - integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz#327154eedfb12e977baa4ecc72e5806720a85a06" + integrity sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" - integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" + regexpu-core "^5.2.1" "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" @@ -158,19 +149,19 @@ "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: "@babel/types" "^7.18.6" "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: "@babel/template" "^7.18.10" @@ -178,54 +169,54 @@ "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== dependencies: "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" - integrity sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -233,9 +224,9 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== dependencies: "@babel/helper-environment-visitor" "^7.18.9" @@ -244,95 +235,85 @@ "@babel/traverse" "^7.19.1" "@babel/types" "^7.19.0" -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== +"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - "@babel/helper-string-parser@^7.19.4": version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@^7.18.9": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" - integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== dependencies: "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" -"@babel/helpers@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz" - integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg== +"@babel/helpers@^7.19.0", "@babel/helpers@^7.20.5": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" + integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w== dependencies: "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1", "@babel/parser@^7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz" - integrity sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ== - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz" - integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.1", "@babel/parser@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" + integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -340,9 +321,9 @@ "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz" - integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" + integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" @@ -351,7 +332,7 @@ "@babel/plugin-proposal-class-properties@7.18.6", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -359,7 +340,7 @@ "@babel/plugin-proposal-class-static-block@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -368,7 +349,7 @@ "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -376,7 +357,7 @@ "@babel/plugin-proposal-export-default-from@7.18.10": version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -384,7 +365,7 @@ "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -392,7 +373,7 @@ "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -400,7 +381,7 @@ "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -408,7 +389,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator@7.18.6", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -416,15 +397,15 @@ "@babel/plugin-proposal-numeric-separator@7.18.6", "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@7.18.9", "@babel/plugin-proposal-object-rest-spread@^7.18.9": +"@babel/plugin-proposal-object-rest-spread@7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== dependencies: "@babel/compat-data" "^7.18.8" @@ -433,9 +414,20 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" + integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -443,7 +435,7 @@ "@babel/plugin-proposal-optional-chaining@7.18.9", "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -452,25 +444,25 @@ "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -478,154 +470,154 @@ "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import@7.8.3", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-default-from@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc" integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== +"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== dependencies: "@babel/helper-module-imports" "^7.18.6" @@ -634,50 +626,50 @@ "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz#401215f9dc13dc5262940e2e527c9536b3d7f237" + integrity sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz" - integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" + integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-compilation-targets" "^7.20.0" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-destructuring@^7.18.13": - version "7.18.13" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz" - integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" + integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -685,14 +677,14 @@ "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" @@ -700,14 +692,14 @@ "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" @@ -716,110 +708,107 @@ "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" + integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" + integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-simple-access" "^7.19.4" "@babel/plugin-transform-modules-systemjs@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz" - integrity sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" + integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.0" + "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" - integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== +"@babel/plugin-transform-parameters@^7.18.8", "@babel/plugin-transform-parameters@^7.20.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e" + integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-display-name@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-development@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx@^7.17.12", "@babel/plugin-transform-react-jsx@^7.18.6": version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -830,37 +819,37 @@ "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.19.0": version "7.19.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== dependencies: "@babel/helper-plugin-utils" "^7.19.0" @@ -868,44 +857,44 @@ "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz" - integrity sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f" + integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== dependencies: - "@babel/helper-create-class-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-typescript" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": version "7.18.10" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -913,7 +902,7 @@ "@babel/preset-env@7.19.1": version "7.19.1" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.1.tgz" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.1.tgz#9f04c916f9c0205a48ebe5cc1be7768eb1983f67" integrity sha512-c8B2c6D16Lp+Nt6HcD+nHl0VbPKVnNPTpszahuxJJnurfMtKeZ80A+qUv48Y7wqvS+dTFuLuaM9oYxyNHbCLWA== dependencies: "@babel/compat-data" "^7.19.1" @@ -994,7 +983,7 @@ "@babel/preset-modules@^0.1.5": version "0.1.5" - resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1005,7 +994,7 @@ "@babel/preset-react@7.18.6", "@babel/preset-react@^7.0.0": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1017,164 +1006,392 @@ "@babel/preset-typescript@7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-typescript" "^7.18.6" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz" - integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.8", "@babel/runtime@^7.17.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" + integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.17.0": - version "7.20.1" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" - integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== - dependencies: - regenerator-runtime "^0.13.10" - -"@babel/runtime@^7.2.0": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz" - integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== - dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz" - integrity sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ== +"@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" + integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.3" + "@babel/generator" "^7.20.5" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.3" - "@babel/types" "^7.19.3" + "@babel/parser" "^7.20.5" + "@babel/types" "^7.20.5" debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.7.2": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz" - integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.4" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.19.4" - "@babel/types" "^7.19.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.19.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz" - integrity sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" + integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.3", "@babel/types@^7.4.4": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz" - integrity sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2": + version "6.3.4" + resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.3.4.tgz#dd22f0a0220718e1f6e3b48319649859b6c929b6" + integrity sha512-irxKsTSjS0OkfMWWt9YxtNK97++/E+XIHfKnRpSVfZyHzda/amYF0BR+T8mMkrGQWidx2zApxHx08GT13egyQA== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.6.0" + "@lezer/common" "^1.0.0" + +"@codemirror/commands@6.1.2", "@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.1.2.tgz#84fb7d170047c3aeb7b0047ace59510bb19208de" + integrity sha512-sO3jdX1s0pam6lIdeSJLMN3DQ6mPEbM4yLvyKkdqtmd/UDwhXA5+AwFJ89rRXm6vTeOXBsE5cAmlos/t7MJdgg== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + +"@codemirror/lang-cpp@^6.0.0", "@codemirror/lang-cpp@~6.0.0": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz#076c98340c3beabde016d7d83e08eebe17254ef9" + integrity sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/cpp" "^1.0.0" + +"@codemirror/lang-css@^6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-css/-/lang-css-6.0.1.tgz#470fff614e4cfbbe796ec43103420d59c797dd7a" + integrity sha512-rlLq1Dt0WJl+2epLQeAsfqIsx3lGu4HStHCJu95nGGuz2P2fNugbU3dQYafr2VRjM4eMC9HviI6jvS98CNtG5w== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/css" "^1.0.0" + +"@codemirror/lang-html@^6.0.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@codemirror/lang-html/-/lang-html-6.4.0.tgz#55227541426ec4efb13d9da45d7a85cabaa45c73" + integrity sha512-HHged0d9AQ/mpjYLTYDVdtI7235dO0COFNgc5uuiGokgjWx3L/sjMSw5aS/Nk7JG++LhsohG5HMNTCuqAq3Tcg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.2.2" + "@lezer/common" "^1.0.0" + "@lezer/css" "^1.1.0" + "@lezer/html" "^1.1.0" + +"@codemirror/lang-html@~6.2.0": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@codemirror/lang-html/-/lang-html-6.2.0.tgz#f6208194c351b5b1d955206b703159bad13d8e29" + integrity sha512-0Kr+gWPu1J4mhpLbqHPqoD5+xLCwAntfzRv9L61cqRSFNpDpDbGbONSN5xzWupo6AJ9qtDOlJNBFBuL72tXPwg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.2.2" + "@lezer/common" "^1.0.0" + "@lezer/html" "^1.1.0" + +"@codemirror/lang-java@^6.0.0", "@codemirror/lang-java@~6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-java/-/lang-java-6.0.1.tgz#03bd06334da7c8feb9dff6db01ac6d85bd2e48bb" + integrity sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/java" "^1.0.0" + +"@codemirror/lang-javascript@^6.0.0", "@codemirror/lang-javascript@~6.1.0": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.1.1.tgz#f920192db30531927a02b8a1af9cf3c3d895101c" + integrity sha512-F4+kiuC5d5dUSJmff96tJQwpEXs/tX/4bapMRnZWW6bHKK1Fx6MunTzopkCUWRa9bF87GPmb9m7Qtg7Yv8f3uQ== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/javascript" "^1.0.0" + +"@codemirror/lang-json@^6.0.0", "@codemirror/lang-json@~6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz#0a0be701a5619c4b0f8991f9b5e95fe33f462330" + integrity sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/json" "^1.0.0" + +"@codemirror/lang-lezer@~6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-lezer/-/lang-lezer-6.0.1.tgz#16a5909ab8ab4a23e9b214476413dc92a3191780" + integrity sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/lezer" "^1.0.0" + +"@codemirror/lang-markdown@^6.0.0", "@codemirror/lang-markdown@~6.0.0": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@codemirror/lang-markdown/-/lang-markdown-6.0.5.tgz#61393c7e2552528daee6aa4eca63428aa00832bd" + integrity sha512-qH0THRYc2M7pIJoAp6jstXZkv8ZMVhNaBm7Bs4+0SLHhHlwX53txFy98AcPwrfq0Sh8Zi6RAuj9j/GyL8E1MKw== + dependencies: + "@codemirror/lang-html" "^6.0.0" + "@codemirror/language" "^6.3.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/markdown" "^1.0.0" + +"@codemirror/lang-php@^6.0.0", "@codemirror/lang-php@~6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-php/-/lang-php-6.0.1.tgz#fa34cc75562178325861a5731f79bd621f57ffaa" + integrity sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA== + dependencies: + "@codemirror/lang-html" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/php" "^1.0.0" + +"@codemirror/lang-python@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@codemirror/lang-python/-/lang-python-6.1.0.tgz#9e46bd79373664322eff6035ec42a9916c1616bb" + integrity sha512-a/JhyPYn5qz5T8WtAfZCuAZcfClgNVb7UZzdLr76bWUeG7Usd3Un5o8UQOkZ/5Xw+EM5YGHHG+T6ickMYkDcRQ== + dependencies: + "@codemirror/autocomplete" "^6.3.2" + "@codemirror/language" "^6.0.0" + "@lezer/python" "^1.0.0" + +"@codemirror/lang-python@~6.0.0": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@codemirror/lang-python/-/lang-python-6.0.4.tgz#81dc262e57cce6cba72302420b22a63c2d2a5892" + integrity sha512-CuC7V6MVw4HshQuFaB1SMXHOSbKLnBnBXMzm9Zjb+uvkggyY8fXp79T9eYFzMn7fuadoPJcXyTcT/q/SRT7lvQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/python" "^1.0.0" + +"@codemirror/lang-rust@^6.0.0", "@codemirror/lang-rust@~6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz#d6829fc7baa39a15bcd174a41a9e0a1bf7cf6ba8" + integrity sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/rust" "^1.0.0" + +"@codemirror/lang-sql@^6.0.0", "@codemirror/lang-sql@~6.3.0": + version "6.3.3" + resolved "https://registry.yarnpkg.com/@codemirror/lang-sql/-/lang-sql-6.3.3.tgz#3a0cad06cd5be5557850035c5f6592ea41dd21c2" + integrity sha512-VNsHju8500fkiDyDU8jZyGQ8M0iXU0SmfeCoCeAYkACcEFlX63BOT8311pICXyw43VYRbS23w54RgSEQmixGjQ== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@codemirror/lang-wast@^6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-wast/-/lang-wast-6.0.1.tgz#c15bec84548a5e9b0a43fa69fb63631d087d6047" + integrity sha512-sQLsqhRjl2MWG3rxZysX+2XAyed48KhLBHLgq9xcKxIJu3npH/G+BIXW5NM5mHeDUjG0jcGh9BcjP0NfMStuzA== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@codemirror/lang-xml@^6.0.0", "@codemirror/lang-xml@~6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@codemirror/lang-xml/-/lang-xml-6.0.1.tgz#ac2dd701d26683163543248b5abc56829ba7fcc6" + integrity sha512-0tvycUTElajCcRKgsszhKjWX+uuOogdu5+enpfqYA+j0gnP8ek7LRxujh2/XMPRdXt/hwOML4slJLE7r2eX3yQ== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/xml" "^1.0.0" + +"@codemirror/language-data@>=6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@codemirror/language-data/-/language-data-6.1.0.tgz#479eff66289a6453493f7c8213d7b2ceb95c89f6" + integrity sha512-g9V23fuLRI9AEbpM6bDy1oquqgpFlIDHTihUhL21NPmxp+x67ZJbsKk+V71W7/Bj8SCqEO1PtqQA/tDGgt1nfw== + dependencies: + "@codemirror/lang-cpp" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-html" "^6.0.0" + "@codemirror/lang-java" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/lang-json" "^6.0.0" + "@codemirror/lang-markdown" "^6.0.0" + "@codemirror/lang-php" "^6.0.0" + "@codemirror/lang-python" "^6.0.0" + "@codemirror/lang-rust" "^6.0.0" + "@codemirror/lang-sql" "^6.0.0" + "@codemirror/lang-wast" "^6.0.0" + "@codemirror/lang-xml" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/legacy-modes" "^6.1.0" + +"@codemirror/language@^6.0.0", "@codemirror/language@^6.3.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.3.1.tgz#1d61f33aa5de9aa74a713ee1f5ce600adc74df6b" + integrity sha512-MK+G1QKaGfSEUg9YEFaBkMBI6j1ge4VMBPZv9fDYotw7w695c42x5Ba1mmwBkesYnzYFBfte6Hh9TDcKa6xORQ== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + style-mod "^4.0.0" + +"@codemirror/legacy-modes@>=6.0.0", "@codemirror/legacy-modes@^6.1.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@codemirror/legacy-modes/-/legacy-modes-6.3.1.tgz#77ab3f3db1ce3e47aad7a5baac3a4b12844734a5" + integrity sha512-icXmCs4Mhst2F8mE0TNpmG6l7YTj1uxam3AbZaFaabINH5oWAdg2CfR/PVi+d/rqxJ+TuTnvkKK5GILHrNThtw== + dependencies: + "@codemirror/language" "^6.0.0" + +"@codemirror/lint@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.1.0.tgz#f006142d3a580fdb8ffc2faa3361b2232c08e079" + integrity sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + crelt "^1.0.5" + +"@codemirror/search@^6.0.0": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.2.3.tgz#fab933fef1b1de8ef40cda275c73d9ac7a1ff40f" + integrity sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + crelt "^1.0.5" + +"@codemirror/state@^6.0.0", "@codemirror/state@^6.1.1", "@codemirror/state@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.1.4.tgz#2b654ae233ac4f41ee89ce095509ea35ecdf1031" + integrity sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ== + +"@codemirror/theme-one-dark@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.0.tgz#6f8b3c7fc22e9fec59edd573f4ba9546db42e007" + integrity sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/highlight" "^1.0.0" + +"@codemirror/view@6.6.0", "@codemirror/view@^6.0.0", "@codemirror/view@^6.2.2", "@codemirror/view@^6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.6.0.tgz#d89a24912ae2f4b9d7bd430c7804c25c5e32838c" + integrity sha512-40VaFVZI3rkyjO5GHFAbNwaW+YgZexjKyx5gxLU2DvfuXAEZX0kW0apOXb0SBRLnKIQJ+U/n2nPfxgBVFHERrg== + dependencies: + "@codemirror/state" "^6.1.4" + style-mod "^4.0.0" + w3c-keyname "^2.2.4" + "@date-io/core@^2.15.0", "@date-io/core@^2.16.0": version "2.16.0" - resolved "https://registry.npmjs.org/@date-io/core/-/core-2.16.0.tgz" + resolved "https://registry.yarnpkg.com/@date-io/core/-/core-2.16.0.tgz#7871bfc1d9bca9aa35ad444a239505589d0f22f6" integrity sha512-DYmSzkr+jToahwWrsiRA2/pzMEtz9Bq1euJwoOuYwuwIYXnZFtHajY2E6a1VNVDc9jP8YUXK1BvnZH9mmT19Zg== "@date-io/date-fns@^2.15.0": version "2.16.0" - resolved "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.16.0.tgz" + resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-2.16.0.tgz#bd5e09b6ecb47ee55e593fc3a87e7b2caaa3da40" integrity sha512-bfm5FJjucqlrnQcXDVU5RD+nlGmL3iWgkHTq3uAZWVIuBu6dDmGa3m8a6zo2VQQpu8ambq9H22UyUpn7590joA== dependencies: "@date-io/core" "^2.16.0" "@date-io/dayjs@^2.15.0": version "2.16.0" - resolved "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.16.0.tgz" + resolved "https://registry.yarnpkg.com/@date-io/dayjs/-/dayjs-2.16.0.tgz#0d2c254ad8db1306fdc4b8eda197cb53c9af89dc" integrity sha512-y5qKyX2j/HG3zMvIxTobYZRGnd1FUW2olZLS0vTj7bEkBQkjd2RO7/FEwDY03Z1geVGlXKnzIATEVBVaGzV4Iw== dependencies: "@date-io/core" "^2.16.0" "@date-io/luxon@^2.15.0": - version "2.16.0" - resolved "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.16.0.tgz" - integrity sha512-L8UXHa/9VbfRqP4KB7JUZwFgOVxo22rONVod1o7GMN2Oku4PzJ0k1kXc+nLP9lRlF1UAA28oQsQqn85Y/PdBZw== + version "2.16.1" + resolved "https://registry.yarnpkg.com/@date-io/luxon/-/luxon-2.16.1.tgz#b08786614cb58831c729a15807753011e4acb966" + integrity sha512-aeYp5K9PSHV28946pC+9UKUi/xMMYoaGelrpDibZSgHu2VWHXrr7zWLEr+pMPThSs5vt8Ei365PO+84pCm37WQ== dependencies: "@date-io/core" "^2.16.0" "@date-io/moment@^2.15.0": - version "2.16.0" - resolved "https://registry.npmjs.org/@date-io/moment/-/moment-2.16.0.tgz" - integrity sha512-wvu/40k128kF6P0jPbiyZcPR14VjJAgYEs+mYtsXz/AyWpC2DEJKly7ub+dpevUywbTzzpZysyCxCdzLzxD/uw== + version "2.16.1" + resolved "https://registry.yarnpkg.com/@date-io/moment/-/moment-2.16.1.tgz#ec6e0daa486871e0e6412036c6f806842a0eeed4" + integrity sha512-JkxldQxUqZBfZtsaCcCMkm/dmytdyq5pS1RxshCQ4fHhsvP5A7gSqPD22QbVXMcJydi3d3v1Y8BQdUKEuGACZQ== dependencies: "@date-io/core" "^2.16.0" "@discoveryjs/json-ext@^0.5.0": version "0.5.7" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@emotion/babel-plugin-jsx-pragmatic@^0.2.0": version "0.2.0" - resolved "https://registry.npmjs.org/@emotion/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-0.2.0.tgz#6fdd78600417973fa2610704693158181d8505b7" integrity sha512-VPfKAtb/bVyu5y+HzCPj9bb2nHnj9yX5mMAU7N0pIDcrFZo8aqDyHXLYF8BD7tY4pNL09N87dygVLKIkQvshJw== dependencies: "@babel/plugin-syntax-jsx" "^7.17.12" "@emotion/babel-plugin@^11.10.0": - version "11.10.2" - resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz" - integrity sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA== + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" + integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/plugin-syntax-jsx" "^7.17.12" "@babel/runtime" "^7.18.3" "@emotion/hash" "^0.9.0" "@emotion/memoize" "^0.8.0" - "@emotion/serialize" "^1.1.0" + "@emotion/serialize" "^1.1.1" babel-plugin-macros "^3.1.0" convert-source-map "^1.5.0" escape-string-regexp "^4.0.0" find-root "^1.1.0" source-map "^0.5.7" - stylis "4.0.13" + stylis "4.1.3" "@emotion/babel-preset-css-prop@11.10.0": version "11.10.0" - resolved "https://registry.npmjs.org/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-11.10.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-11.10.0.tgz#23922787561d8376782b0e9006323512fe797275" integrity sha512-oN2lCP0NJTEt80IIeFM1RbmapeEVNYzKXYk2pYirAuom9WvV9Oz/aJQN5Hn3RyBMPaY+Of1OZYpTVMle2jUm4g== dependencies: "@babel/plugin-transform-react-jsx" "^7.17.12" @@ -1182,20 +1399,20 @@ "@emotion/babel-plugin" "^11.10.0" "@emotion/babel-plugin-jsx-pragmatic" "^0.2.0" -"@emotion/cache@^11.10.0", "@emotion/cache@^11.10.3": - version "11.10.3" - resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz" - integrity sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ== +"@emotion/cache@^11.10.0", "@emotion/cache@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== dependencies: "@emotion/memoize" "^0.8.0" - "@emotion/sheet" "^1.2.0" + "@emotion/sheet" "^1.2.1" "@emotion/utils" "^1.2.0" "@emotion/weak-memoize" "^0.3.0" - stylis "4.0.13" + stylis "4.1.3" "@emotion/css@11.10.0": version "11.10.0" - resolved "https://registry.npmjs.org/@emotion/css/-/css-11.10.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.10.0.tgz#270b4fdf2419e59cb07081d0e9f7940d88b8b443" integrity sha512-dH9f+kSCucc8ilMg0MUA1AemabcyzYpe5EKX24F528PJjD7HyIY/VBNJHxfUdc8l400h2ncAjR6yEDu+DBj2cg== dependencies: "@emotion/babel-plugin" "^11.10.0" @@ -1206,29 +1423,29 @@ "@emotion/eslint-plugin@11.10.0": version "11.10.0" - resolved "https://registry.npmjs.org/@emotion/eslint-plugin/-/eslint-plugin-11.10.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/eslint-plugin/-/eslint-plugin-11.10.0.tgz#e0d8544c8a568bb2dac605b87346baaa3b846e80" integrity sha512-nWpuoQQrzI9aM9fgn+Pbb0pOau4BhheXyVqHcOYKFq46uSuSR2ivZaDwwCJKI6ScA8Pm7OcoOpwdRH2iisf9cg== "@emotion/hash@^0.9.0": version "0.9.0" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== -"@emotion/is-prop-valid@^1.2.0": +"@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== dependencies: "@emotion/memoize" "^0.8.0" "@emotion/memoize@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== "@emotion/react@11.10.4": version "11.10.4" - resolved "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.4.tgz#9dc6bccbda5d70ff68fdb204746c0e8b13a79199" integrity sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA== dependencies: "@babel/runtime" "^7.18.3" @@ -1240,10 +1457,10 @@ "@emotion/weak-memoize" "^0.3.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz" - integrity sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA== +"@emotion/serialize@^1.1.0", "@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== dependencies: "@emotion/hash" "^0.9.0" "@emotion/memoize" "^0.8.0" @@ -1251,14 +1468,14 @@ "@emotion/utils" "^1.2.0" csstype "^3.0.2" -"@emotion/sheet@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz" - integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w== +"@emotion/sheet@^1.2.0", "@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== "@emotion/styled@11.10.4": version "11.10.4" - resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.4.tgz#e93f84a4d54003c2acbde178c3f97b421fce1cd4" integrity sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ== dependencies: "@babel/runtime" "^7.18.3" @@ -1268,30 +1485,40 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" "@emotion/utils" "^1.2.0" +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + "@emotion/unitless@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== "@emotion/utils@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== "@emotion/weak-memoize@^0.3.0": version "0.3.0" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== "@eslint/eslintrc@^1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz" - integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1303,9 +1530,38 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@floating-ui/core@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86" + integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg== + +"@floating-ui/dom@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-0.5.4.tgz#4eae73f78bcd4bd553ae2ade30e6f1f9c73fe3f1" + integrity sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg== + dependencies: + "@floating-ui/core" "^0.7.3" + +"@floating-ui/react-dom-interactions@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom-interactions/-/react-dom-interactions-0.6.6.tgz#8542e8c4bcbee2cd0d512de676c6a493e0a2d168" + integrity sha512-qnao6UPjSZNHnXrF+u4/n92qVroQkx0Umlhy3Avk1oIebm/5ee6yvDm4xbHob0OjY7ya8WmUnV3rQlPwX3Atwg== + dependencies: + "@floating-ui/react-dom" "^0.7.2" + aria-hidden "^1.1.3" + use-isomorphic-layout-effect "^1.1.1" + +"@floating-ui/react-dom@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-0.7.2.tgz#0bf4ceccb777a140fc535c87eb5d6241c8e89864" + integrity sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg== + dependencies: + "@floating-ui/dom" "^0.5.3" + use-isomorphic-layout-effect "^1.1.1" + "@humanwhocodes/config-array@^0.10.5": version "0.10.7" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc" integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== dependencies: "@humanwhocodes/object-schema" "^1.2.1" @@ -1314,27 +1570,27 @@ "@humanwhocodes/gitignore-to-minimatch@^1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@icons/material@^0.2.4": version "0.2.4" - resolved "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -1345,112 +1601,112 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/console/-/console-29.1.2.tgz" - integrity sha512-ujEBCcYs82BTmRxqfHMQggSlkUZP63AE5YEaTPj7eFyJOzukkTorstOUC7L6nE3w5SYadGVAnTsQ/ZjTGL0qYQ== +"@jest/console@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.3.1.tgz#3e3f876e4e47616ea3b1464b9fbda981872e9583" + integrity sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + jest-message-util "^29.3.1" + jest-util "^29.3.1" slash "^3.0.0" -"@jest/core@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/core/-/core-29.1.2.tgz" - integrity sha512-sCO2Va1gikvQU2ynDN8V4+6wB7iVrD2CvT0zaRst4rglf56yLly0NQ9nuRRAWFeimRf+tCdFsb1Vk1N9LrrMPA== +"@jest/core@^29.1.2", "@jest/core@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1" + integrity sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw== dependencies: - "@jest/console" "^29.1.2" - "@jest/reporters" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.3.1" + "@jest/reporters" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.0.0" - jest-config "^29.1.2" - jest-haste-map "^29.1.2" - jest-message-util "^29.1.2" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-resolve-dependencies "^29.1.2" - jest-runner "^29.1.2" - jest-runtime "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" - jest-watcher "^29.1.2" + jest-changed-files "^29.2.0" + jest-config "^29.3.1" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-resolve-dependencies "^29.3.1" + jest-runner "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" + jest-watcher "^29.3.1" micromatch "^4.0.4" - pretty-format "^29.1.2" + pretty-format "^29.3.1" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.1.2.tgz" - integrity sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ== +"@jest/environment@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6" + integrity sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag== dependencies: - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-mock "^29.1.2" + jest-mock "^29.3.1" -"@jest/expect-utils@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.1.2.tgz" - integrity sha512-4a48bhKfGj/KAH39u0ppzNTABXQ8QPccWAFUFobWBaEMSMp+sB31Z2fK/l47c4a/Mu1po2ffmfAIPxXbVTXdtg== +"@jest/expect-utils@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" + integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== dependencies: - jest-get-type "^29.0.0" + jest-get-type "^29.2.0" -"@jest/expect@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.1.2.tgz" - integrity sha512-FXw/UmaZsyfRyvZw3M6POgSNqwmuOXJuzdNiMWW9LCYo0GRoRDhg+R5iq5higmRTHQY7hx32+j7WHwinRmoILQ== +"@jest/expect@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd" + integrity sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg== dependencies: - expect "^29.1.2" - jest-snapshot "^29.1.2" + expect "^29.3.1" + jest-snapshot "^29.3.1" -"@jest/fake-timers@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.1.2.tgz" - integrity sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q== +"@jest/fake-timers@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67" + integrity sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^29.1.2" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-util "^29.3.1" -"@jest/globals@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.1.2.tgz" - integrity sha512-uMgfERpJYoQmykAd0ffyMq8wignN4SvLUG6orJQRe9WAlTRc9cdpCaE/29qurXixYJVZWUqIBXhSk8v5xN1V9g== +"@jest/globals@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6" + integrity sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q== dependencies: - "@jest/environment" "^29.1.2" - "@jest/expect" "^29.1.2" - "@jest/types" "^29.1.2" - jest-mock "^29.1.2" + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/types" "^29.3.1" + jest-mock "^29.3.1" -"@jest/reporters@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.1.2.tgz" - integrity sha512-X4fiwwyxy9mnfpxL0g9DD0KcTmEIqP0jUdnc2cfa9riHy+I6Gwwp5vOZiwyg0vZxfSDxrOlK9S4+340W4d+DAA== +"@jest/reporters@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310" + integrity sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" @@ -1463,76 +1719,75 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.1.2" - jest-util "^29.1.2" - jest-worker "^29.1.2" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + jest-worker "^29.3.1" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" - terminal-link "^2.0.0" v8-to-istanbul "^9.0.1" "@jest/schemas@^29.0.0": version "29.0.0" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^29.0.0": - version "29.0.0" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz" - integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ== +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== dependencies: "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.1.2.tgz" - integrity sha512-jjYYjjumCJjH9hHCoMhA8PCl1OxNeGgAoZ7yuGYILRJX9NjgzTN0pCT5qAoYR4jfOP8htIByvAlz9vfNSSBoVg== +"@jest/test-result@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50" + integrity sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw== dependencies: - "@jest/console" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.3.1" + "@jest/types" "^29.3.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.1.2.tgz" - integrity sha512-fU6dsUqqm8sA+cd85BmeF7Gu9DsXVWFdGn9taxM6xN1cKdcP/ivSgXh5QucFRFz1oZxKv3/9DYYbq0ULly3P/Q== +"@jest/test-sequencer@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d" + integrity sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA== dependencies: - "@jest/test-result" "^29.1.2" + "@jest/test-result" "^29.3.1" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" + jest-haste-map "^29.3.1" slash "^3.0.0" -"@jest/transform@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.1.2.tgz" - integrity sha512-2uaUuVHTitmkx1tHF+eBjb4p7UuzBG7SXIaA/hNIkaMP6K+gXYGxP38ZcrofzqN0HeZ7A90oqsOa97WU7WZkSw== +"@jest/transform@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d" + integrity sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" - convert-source-map "^1.4.0" + convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" - jest-regex-util "^29.0.0" - jest-util "^29.1.2" + jest-haste-map "^29.3.1" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" write-file-atomic "^4.0.1" -"@jest/types@^29.1.2": - version "29.1.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz" - integrity sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg== +"@jest/types@^29.1.2", "@jest/types@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" + integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA== dependencies: "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" @@ -1543,7 +1798,7 @@ "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" @@ -1551,26 +1806,26 @@ "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== dependencies: "@jridgewell/gen-mapping" "^0.3.0" @@ -1578,42 +1833,150 @@ "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15": - version "0.3.16" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz" - integrity sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.15" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz" - integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@kwsites/file-exists@^1.1.1": version "1.1.1" - resolved "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== dependencies: debug "^4.1.1" "@kwsites/promise-deferred@^1.1.1": version "1.1.1" - resolved "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" - resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@lezer/common@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.2.tgz#8fb9b86bdaa2ece57e7d59e5ffbcb37d71815087" + integrity sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng== + +"@lezer/cpp@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lezer/cpp/-/cpp-1.0.0.tgz#3293fd88aaf16a6d4f18188602b4d931be8f0915" + integrity sha512-Klk3/AIEKoptmm6cNm7xTulNXjdTKkD+hVOEcz/NeRg8tIestP5hsGHJeFDR/XtyDTxsjoPjKZRIGohht7zbKw== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/css@^1.0.0", "@lezer/css@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.1.0.tgz#f86f35e5808c6c4f293e7a9ce509ee109180ae56" + integrity sha512-3dc6l8ZQOOAZUhNk6ekrkaZ6iJScn0QKxsmKgmn0BsaIXePqgPPk3d1iqo/d7laICE6eYrLpxm5HrGyNyR0hfQ== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/highlight@^1.0.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.1.3.tgz#bf5a36c2ee227f526d74997ac91f7777e29bd25d" + integrity sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/html@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@lezer/html/-/html-1.2.0.tgz#1db82c8005be288eb99c568baf66c8730b01877a" + integrity sha512-T6sseEJQPTFayX3h9DINh7KyFBwCjEtrqQRD+7USmtkJh1xHDutsB6KYHKveSd+TbsedIPAcZwar+gkHl1rVSw== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/java@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lezer/java/-/java-1.0.0.tgz#fe74e062350f7a4268107e7562971bfbad994f49" + integrity sha512-z2EA0JHq2WoiKfQy5uOOd4t17PJtq8guh58gPkSzOnNcQ7DNbkrU+Axak+jL8+Noinwyz2tRNOseQFj+Tg+P0A== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/javascript@^1.0.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.3.1.tgz#de1d942adc964242d90e0ecb0fd00410f9a55512" + integrity sha512-3Z6OggGxRuqMntAuadxW0Oy7Zbs56KJSwujDc6vwhVfbi5upHOEzNIrNLvphDU/HozLoTCGQcjNmjLkb2Zr5pg== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/json@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lezer/json/-/json-1.0.0.tgz#848ad9c2c3e812518eb02897edd5a7f649e9c160" + integrity sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/lezer@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@lezer/lezer/-/lezer-1.1.0.tgz#6a42b969735e632dd7ae6a102cdc7e12e474f86c" + integrity sha512-XTomM3C2MzHNuZwjYbyYZ44IRV6rHIOvi++yAD1O4djlDoKAnikx3BFoREK2g/z8zUIc/kyWuZO9W9xN4/OR1g== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/lr@^1.0.0": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.2.5.tgz#e9088164a711690596f17378665e0554157c9b03" + integrity sha512-f9319YG1A/3ysgUE3bqCHEd7g+3ZZ71MWlwEc42mpnLVYXgfJJgtu1XAyBB4Kz8FmqmnFe9caopDqKeMMMAU6g== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/markdown@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@lezer/markdown/-/markdown-1.0.2.tgz#8c804a9f6fe1ccca4a20acd2fd9fbe0fae1ae178" + integrity sha512-8CY0OoZ6V5EzPjSPeJ4KLVbtXdLBd8V6sRCooN5kHnO28ytreEGTyrtU/zUwo/XLRzGr/e1g44KlzKi3yWGB5A== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + +"@lezer/php@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lezer/php/-/php-1.0.0.tgz#522d2d2d8a4eee6c598060e2a222526953c66adb" + integrity sha512-kFQu/mk/vmjpA+fjQU87d9eimqKJ9PFCa8CZCPFWGEwNnm7Ahpw32N+HYEU/YAQ0XcfmOAnW/YJCEa8WpUOMMw== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/python@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@lezer/python/-/python-1.1.1.tgz#6d688071ed93d063a589a7d31df3279b1eba607a" + integrity sha512-ArUGh9kvdaOVu6IkSaYUS9WFQeMAFVWKRuZo6vexnxoeCLnxf0Y9DCFEAMMa7W9SQBGYE55OarSpPqSkdOXSCA== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/rust@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lezer/rust/-/rust-1.0.0.tgz#939f3e7b0376ebe13f4ac336ed7d59ca2c8adf52" + integrity sha512-IpGAxIjNxYmX9ra6GfQTSPegdCAWNeq23WNmrsMMQI7YNSvKtYxO4TX5rgZUmbhEucWn0KTBMeDEPXg99YKtTA== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/xml@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@lezer/xml/-/xml-1.0.0.tgz#02817a3d421e7189b50fd31ed17430b2e1c8c0d8" + integrity sha512-73iI9UK8iqSvWtLlOEl/g+50ivwQn8Ge6foHVN66AXUS1RccFnAoc7BYU8b3c8/rP6dfCOGqAGaWLxBzhj60MA== + dependencies: + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + "@ltd/j-toml@1.35.3": version "1.35.3" resolved "https://registry.yarnpkg.com/@ltd/j-toml/-/j-toml-1.35.3.tgz#8307684af753f54069145baf700cb6fcc2d7d69d" @@ -1621,13 +1984,13 @@ "@mapbox/jsonlint-lines-primitives@~2.0.2": version "2.0.2" - resolved "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== "@mapbox/mapbox-gl-style-spec@^13.23.1": - version "13.26.0" - resolved "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.26.0.tgz" - integrity sha512-Ya1WiNz1qYau7xPYPQUbionrw9pjgZAIebGQdDXgwJuSAWeVCr02P7rqbYFHbXqX5TeAaq4qVpcaJb9oZtgaVQ== + version "13.27.0" + resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.27.0.tgz#90c47b449c86967c9a28f54110d98dbe3c3b2e43" + integrity sha512-wQSJCGRyf7pWknQgeGBArHEk8898UcI1BnAam7IRa3AGmHRFzlJ6DzoU24Hld9zJ0tgkNQ7OP5sJT/9hKHzavg== dependencies: "@mapbox/jsonlint-lines-primitives" "~2.0.2" "@mapbox/point-geometry" "^0.1.0" @@ -1640,17 +2003,48 @@ "@mapbox/point-geometry@^0.1.0": version "0.1.0" - resolved "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ== "@mapbox/unitbezier@^0.0.0": version "0.0.0" - resolved "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz" + resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== +"@mdx-js/mdx@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.1.5.tgz#577937349fd555154382c2f805f5f52834a64903" + integrity sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/mdx" "^2.0.0" + estree-util-build-jsx "^2.0.0" + estree-util-is-identifier-name "^2.0.0" + estree-util-to-js "^1.1.0" + estree-walker "^3.0.0" + hast-util-to-estree "^2.0.0" + markdown-extensions "^1.0.0" + periscopic "^3.0.0" + remark-mdx "^2.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + unified "^10.0.0" + unist-util-position-from-estree "^1.0.0" + unist-util-stringify-position "^3.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + +"@mdx-js/react@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.1.5.tgz#8225a867dae6f845ae5b0ec15bb454c23be3f576" + integrity sha512-3Az1I6SAWA9R38rYjz5rXBrGKeZhq96CSSyQtqY+maPj8stBsoUH5pNcmIixuGkufYsh8F5+ka2CVPo2fycWZw== + dependencies: + "@types/mdx" "^2.0.0" + "@types/react" ">=16" + "@mui/base@5.0.0-alpha.102": version "5.0.0-alpha.102" - resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.102.tgz" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.102.tgz#53b07d0b73d3afe1d2a3feb3b43c8188bb821796" integrity sha512-5e/qAIP+DlkrZxIt/cwnDw/A3ii22WkoEoWKHyu4+oeGs3/1Flh7qLaN4h5EAIBB9TvTEZEUzvmsTInmIj6ghg== dependencies: "@babel/runtime" "^7.19.0" @@ -1663,20 +2057,20 @@ react-is "^18.2.0" "@mui/core-downloads-tracker@^5.10.10": - version "5.10.10" - resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.10.tgz" - integrity sha512-aDuE2PNEh+hAndxEWlZgq7uiFPZKJtnkPDX7v6kSCrMXA32ZaQ6rZi5olmC7DUHt/BaOSxb7N/im/ss0XBkDhA== + version "5.10.16" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.16.tgz#4c2d36bcab58cb6250596b20601f499bfadc0642" + integrity sha512-eK9+olw2ZbXX+vGrtKnN01/vLP1aX0Lq0xok35bqWM1aB93Dcmky/xPNf8h31oJ/C+IzJBjZaZMEDzVZg4Qc0A== "@mui/icons-material@5.10.6": version "5.10.6" - resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.6.tgz" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.10.6.tgz#a032395cfe7fe8e9a8edde2d27b9e3bd23e5b935" integrity sha512-QwxdRmLA46S94B0hExPDx0td+A2unF+33bQ6Cs+lNpJKVsm1YeHwNdYXYcnpWeHeQQ07055OXl7IB2GKDd0MfA== dependencies: "@babel/runtime" "^7.19.0" "@mui/material@5.10.10": version "5.10.10" - resolved "https://registry.npmjs.org/@mui/material/-/material-5.10.10.tgz" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.10.10.tgz#df780d933c0aa9d4a5272f32c9cc24bf1ea72cff" integrity sha512-ioLvqY7VvcePz9dnEIRhpiVvtJmAFmvG6rtLXXzVdMmAVbSaelr5Io07mPz/mCyqE+Uv8/4EuJV276DWO7etzA== dependencies: "@babel/runtime" "^7.19.0" @@ -1692,28 +2086,28 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.10.9", "@mui/private-theming@^5.4.1": - version "5.10.9" - resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz" - integrity sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg== +"@mui/private-theming@^5.10.16", "@mui/private-theming@^5.4.1": + version "5.10.16" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.10.16.tgz#181ab7568a3cf0c6b12cc12f5a91aeb4509df1ce" + integrity sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg== dependencies: - "@babel/runtime" "^7.19.0" - "@mui/utils" "^5.10.9" + "@babel/runtime" "^7.20.1" + "@mui/utils" "^5.10.16" prop-types "^15.8.1" -"@mui/styled-engine@^5.10.8", "@mui/styled-engine@^5.4.1": - version "5.10.8" - resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz" - integrity sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw== +"@mui/styled-engine@^5.10.16", "@mui/styled-engine@^5.4.1": + version "5.10.16" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.10.16.tgz#52a2d31e4012958d21c92b42acaca4c3e79841b4" + integrity sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw== dependencies: - "@babel/runtime" "^7.19.0" - "@emotion/cache" "^11.10.3" + "@babel/runtime" "^7.20.1" + "@emotion/cache" "^11.10.5" csstype "^3.1.1" prop-types "^15.8.1" "@mui/system@5.4.1": version "5.4.1" - resolved "https://registry.npmjs.org/@mui/system/-/system-5.4.1.tgz" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.4.1.tgz#cf253369fbf1d960c792f0ec068fa28af81be3d4" integrity sha512-07JBYf9iQdxIHZU8cFOLoxBnkQDUPLb7UBhNxo4998yEqpWFJ00WKgEVYBKvPl0X+MRU/20wqFz6yGIuCx4AeA== dependencies: "@babel/runtime" "^7.17.0" @@ -1726,41 +2120,30 @@ prop-types "^15.7.2" "@mui/system@^5.10.10": - version "5.10.10" - resolved "https://registry.npmjs.org/@mui/system/-/system-5.10.10.tgz" - integrity sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA== + version "5.10.16" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.16.tgz#2b07d78eb5e337463045b81a59f718795807fdc7" + integrity sha512-OqI9B1jZ9zQ/dmoqseku4CzdEs9DbLiiMOaWxC3WeAJxM1UavlCgXz0encqm93LIlmSL7TjuHN1/rW8BJCnU8A== dependencies: - "@babel/runtime" "^7.19.0" - "@mui/private-theming" "^5.10.9" - "@mui/styled-engine" "^5.10.8" - "@mui/types" "^7.2.0" - "@mui/utils" "^5.10.9" + "@babel/runtime" "^7.20.1" + "@mui/private-theming" "^5.10.16" + "@mui/styled-engine" "^5.10.16" + "@mui/types" "^7.2.2" + "@mui/utils" "^5.10.16" clsx "^1.2.1" csstype "^3.1.1" prop-types "^15.8.1" -"@mui/types@^7.1.1", "@mui/types@^7.2.0": - version "7.2.0" - resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz" - integrity sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA== +"@mui/types@^7.1.1", "@mui/types@^7.2.0", "@mui/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.2.tgz#723f6d40c25c89c2e0352a7e51794e8eb77cdbe3" + integrity sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA== -"@mui/utils@^5.10.3": - version "5.10.6" - resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.10.6.tgz" - integrity sha512-g0Qs8xN/MW2M3fLL8197h5J2VB9U+49fLlnKKqC6zy/yus5cZwdT+Gwec+wUMxgwQoxMDn+J8oDWAn28kEOR/Q== +"@mui/utils@^5.10.16", "@mui/utils@^5.10.3", "@mui/utils@^5.10.9", "@mui/utils@^5.4.1": + version "5.10.16" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.10.16.tgz#7a981444855968ebdb1830d76e298d1ac47eaaf6" + integrity sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ== dependencies: - "@babel/runtime" "^7.19.0" - "@types/prop-types" "^15.7.5" - "@types/react-is" "^16.7.1 || ^17.0.0" - prop-types "^15.8.1" - react-is "^18.2.0" - -"@mui/utils@^5.10.9", "@mui/utils@^5.4.1": - version "5.10.9" - resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz" - integrity sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA== - dependencies: - "@babel/runtime" "^7.19.0" + "@babel/runtime" "^7.20.1" "@types/prop-types" "^15.7.5" "@types/react-is" "^16.7.1 || ^17.0.0" prop-types "^15.8.1" @@ -1786,12 +2169,12 @@ "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" - resolved "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -1799,12 +2182,12 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -1812,21 +2195,21 @@ "@octokit/auth-token@^2.4.0": version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" "@octokit/auth-token@^3.0.0": version "3.0.2" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.2.tgz#a0fc8de149fd15876e1ac78f6525c1c5ab48435f" integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== dependencies: "@octokit/types" "^8.0.0" "@octokit/core@4.1.0": version "4.1.0" - resolved "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.1.0.tgz#b6b03a478f1716de92b3f4ec4fd64d05ba5a9251" integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== dependencies: "@octokit/auth-token" "^3.0.0" @@ -1839,7 +2222,7 @@ "@octokit/endpoint@^6.0.1": version "6.0.12" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: "@octokit/types" "^6.0.3" @@ -1848,7 +2231,7 @@ "@octokit/endpoint@^7.0.0": version "7.0.3" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.3.tgz#0b96035673a9e3bedf8bab8f7335de424a2147ed" integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== dependencies: "@octokit/types" "^8.0.0" @@ -1857,7 +2240,7 @@ "@octokit/graphql@^5.0.0": version "5.0.4" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.4.tgz#519dd5c05123868276f3ae4e50ad565ed7dff8c8" integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== dependencies: "@octokit/request" "^6.0.0" @@ -1866,29 +2249,29 @@ "@octokit/openapi-types@^12.11.0": version "12.11.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== "@octokit/openapi-types@^14.0.0": version "14.0.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== "@octokit/plugin-paginate-rest@^1.1.1": version "1.1.2" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== dependencies: "@octokit/types" "^2.0.1" "@octokit/plugin-request-log@^1.0.0": version "1.0.4" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@2.4.0": version "2.4.0" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== dependencies: "@octokit/types" "^2.0.1" @@ -1896,7 +2279,7 @@ "@octokit/request-error@^1.0.2": version "1.2.1" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== dependencies: "@octokit/types" "^2.0.0" @@ -1905,7 +2288,7 @@ "@octokit/request-error@^2.1.0": version "2.1.0" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== dependencies: "@octokit/types" "^6.0.3" @@ -1914,7 +2297,7 @@ "@octokit/request-error@^3.0.0": version "3.0.2" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.2.tgz#f74c0f163d19463b87528efe877216c41d6deb0a" integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== dependencies: "@octokit/types" "^8.0.0" @@ -1923,7 +2306,7 @@ "@octokit/request@^5.2.0": version "5.6.3" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: "@octokit/endpoint" "^6.0.1" @@ -1935,7 +2318,7 @@ "@octokit/request@^6.0.0": version "6.2.2" - resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.2.tgz#a2ba5ac22bddd5dcb3f539b618faa05115c5a255" integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== dependencies: "@octokit/endpoint" "^7.0.0" @@ -1947,7 +2330,7 @@ "@octokit/rest@16.43.2": version "16.43.2" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== dependencies: "@octokit/auth-token" "^2.4.0" @@ -1969,30 +2352,42 @@ "@octokit/types@^2.0.0", "@octokit/types@^2.0.1": version "2.16.2" - resolved "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== dependencies: "@types/node" ">= 8" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": version "6.41.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: "@octokit/openapi-types" "^12.11.0" "@octokit/types@^8.0.0": version "8.0.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.0.0.tgz#93f0b865786c4153f0f6924da067fe0bb7426a9f" integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== dependencies: "@octokit/openapi-types" "^14.0.0" "@petamoriken/float16@^3.4.7": version "3.6.6" - resolved "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.6.6.tgz" + resolved "https://registry.yarnpkg.com/@petamoriken/float16/-/float16-3.6.6.tgz#641f73913a6be402b34e4bdfca98d6832ed55586" integrity sha512-3MUulwMtsdCA9lw8a/Kc0XDBJJVCkYTQ5aGd+///TbfkOMXoOGAzzoiYKwPEsLYZv7He7fKJ/mCacqKOO7REyg== +"@pkgr/utils@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" + integrity sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw== + dependencies: + cross-spawn "^7.0.3" + is-glob "^4.0.3" + open "^8.4.0" + picocolors "^1.0.0" + tiny-glob "^0.2.9" + tslib "^2.4.0" + "@pmmmwh/react-refresh-webpack-plugin@0.5.10": version "0.5.10" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" @@ -2008,90 +2403,131 @@ schema-utils "^3.0.0" source-map "^0.7.3" -"@popperjs/core@^2.11.6": +"@popperjs/core@^2.11.6", "@popperjs/core@^2.9.0": version "2.11.6" - resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@react-dnd/asap@^4.0.0": - version "4.0.1" - resolved "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz" - integrity sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg== - -"@react-dnd/invariant@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz" - integrity sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw== - -"@react-dnd/shallowequal@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz" - integrity sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg== - -"@reduxjs/toolkit@1.8.5": - version "1.8.5" - resolved "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.5.tgz" - integrity sha512-f4D5EXO7A7Xq35T0zRbWq5kJQyXzzscnHKmjnu2+37B3rwHU6mX9PYlbfXdnxcY6P/7zfmjhgan0Z+yuOfeBmA== +"@radix-ui/react-compose-refs@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" + integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== dependencies: - immer "^9.0.7" - redux "^4.1.2" - redux-thunk "^2.4.1" - reselect "^4.1.5" + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-slot@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" + integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + +"@react-dnd/asap@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@react-dnd/asap/-/asap-5.0.2.tgz#1f81f124c1cd6f39511c11a881cfb0f715343488" + integrity sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A== + +"@react-dnd/invariant@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@react-dnd/invariant/-/invariant-4.0.2.tgz#b92edffca10a26466643349fac7cdfb8799769df" + integrity sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw== + +"@react-dnd/shallowequal@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz#d1b4befa423f692fa4abf1c79209702e7d8ae4b4" + integrity sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA== + +"@react-hook/merged-ref@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@react-hook/merged-ref/-/merged-ref-1.3.2.tgz#919b387a5f79ed67f2578f2015ab7b7d337787d2" + integrity sha512-cQ9Y8m4zlrw/qotReo33E+3Sy9FVqMZb5JwUlb3wj3IJJ1cNJtxcgfWF6rS2NZQrfBJ2nAnckUdPJjMyIJTNZg== + +"@reduxjs/toolkit@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.1.tgz#4c34dc4ddcec161535288c60da5c19c3ef15180e" + integrity sha512-HikrdY+IDgRfRYlCTGUQaiCxxDDgM1mQrRbZ6S1HFZX5ZYuJ4o8EstNmhTwHdPl2rTmLxzwSu0b3AyeyTlR+RA== + dependencies: + immer "^9.0.16" + redux "^4.2.0" + redux-thunk "^2.4.2" + reselect "^4.1.7" "@remix-run/router@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.1.tgz#88d7ac31811ab0cef14aaaeae2a0474923b278bc" integrity sha512-eBV5rvW4dRFOU1eajN7FmYxjAIVz/mRHgUE9En9mBn6m3mulK3WTR5C3iQhL9MZ14rWAq+xOlEaCkDiW0/heOg== +"@simbathesailor/use-what-changed@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@simbathesailor/use-what-changed/-/use-what-changed-2.0.0.tgz#7f82d78f92c8588b5fadd702065dde93bd781403" + integrity sha512-ulBNrPSvfho9UN6zS2fii3AsdEcp2fMaKeqUZZeCNPaZbB6aXyTUhpEN9atjMAbu/eyK3AY8L4SYJUG62Ekocw== + "@sinclair/typebox@^0.24.1": - version "0.24.46" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.46.tgz" - integrity sha512-ng4ut1z2MCBhK/NwDVwIQp3pAUOCs/KNaW3cBxdFB2xTDrOuo1xuNmpr/9HHFhxqIvHrs1NTH3KJg6q+JSy1Kw== + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^9.1.2": version "9.1.2" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" -"@toast-ui/editor@^3.2.1": - version "3.2.1" - resolved "https://registry.npmjs.org/@toast-ui/editor/-/editor-3.2.1.tgz" - integrity sha512-05nKfqK2n/6Mq8WpO1E7OnOjlhiFfxr1G2i/DpG/pFjKlY3E7uOtSAyuz7rybKWHgUzXRzRGv7MqDL6lXfqnWg== +"@styled-icons/fluentui-system-regular@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@styled-icons/fluentui-system-regular/-/fluentui-system-regular-10.46.0.tgz#16c4cff965ddf96f37c133b17f59e9ca228266d8" + integrity sha512-Ojn2nGx2NY2QnELYG07k7uPXQ6jZ4MKeloby3wNgyncmcMikANPeMs0IJXWeUlW3YcOGMjnVYPq/A8v7QPJ0dQ== dependencies: - dompurify "^2.3.3" - prosemirror-commands "^1.1.9" - prosemirror-history "^1.1.3" - prosemirror-inputrules "^1.1.3" - prosemirror-keymap "^1.1.4" - prosemirror-model "^1.14.1" - prosemirror-state "^1.3.4" - prosemirror-view "^1.18.7" + "@babel/runtime" "^7.19.0" + "@styled-icons/styled-icon" "^10.7.0" -"@toast-ui/react-editor@3.2.2": - version "3.2.2" - resolved "https://registry.npmjs.org/@toast-ui/react-editor/-/react-editor-3.2.2.tgz" - integrity sha512-lbqRUcSJ9f3HO/MG7cjXmDmoBJpBQGErwKIWsNj1byC76G4yhHJ5gVKFn3zZ47hEQj7aQRFTEtbWCEMTF2bixQ== +"@styled-icons/remix-editor@10.46.0": + version "10.46.0" + resolved "https://registry.yarnpkg.com/@styled-icons/remix-editor/-/remix-editor-10.46.0.tgz#81c0d3f174ff5fb1900a019acbeb4fc1f68318a1" + integrity sha512-oOrt6wj5//4LrZkm40bXcsFpTgXbdOkixu6RHuE3O82+Hqtw1bYR/smm5MbLOJ+Kz62SEjDF3sxqFO23ITDeUQ== dependencies: - "@toast-ui/editor" "^3.2.1" + "@babel/runtime" "^7.19.0" + "@styled-icons/styled-icon" "^10.7.0" + +"@styled-icons/styled-icon@^10.7.0": + version "10.7.0" + resolved "https://registry.yarnpkg.com/@styled-icons/styled-icon/-/styled-icon-10.7.0.tgz#d6960e719b8567c8d0d3a87c40fb6f5b4952a228" + integrity sha512-SCrhCfRyoY8DY7gUkpz+B0RqUg/n1Zaqrr2+YKmK/AyeNfCcoHuP4R9N4H0p/NA1l7PTU10ZkAWSLi68phnAjw== + dependencies: + "@babel/runtime" "^7.19.0" + +"@tippyjs/react@^4.2.6": + version "4.2.6" + resolved "https://registry.yarnpkg.com/@tippyjs/react/-/react-4.2.6.tgz#971677a599bf663f20bb1c60a62b9555b749cc71" + integrity sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw== + dependencies: + tippy.js "^6.3.1" "@trysound/sax@0.2.0": version "0.2.0" - resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== +"@types/acorn@^4.0.0": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" + integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== + dependencies: + "@types/estree" "*" + "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + version "7.1.20" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" + integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2101,29 +2537,29 @@ "@types/babel__generator@*": version "7.6.4" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.1" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.18.2" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz" - integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== + version "7.18.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" @@ -2131,26 +2567,19 @@ "@types/bonjour@^3.5.9": version "3.5.10" - resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== dependencies: "@types/node" "*" -"@types/codemirror@5.60.5": - version "5.60.5" - resolved "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz" - integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== - dependencies: - "@types/tern" "*" - "@types/common-tags@1.8.0": version "1.8.0" - resolved "https://registry.npmjs.org/@types/common-tags/-/common-tags-1.8.0.tgz" + resolved "https://registry.yarnpkg.com/@types/common-tags/-/common-tags-1.8.0.tgz#79d55e748d730b997be5b7fce4b74488d8b26a6b" integrity sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg== "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" - resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== dependencies: "@types/express-serve-static-core" "*" @@ -2158,47 +2587,66 @@ "@types/connect@*": version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/create-react-class@15.6.3": version "15.6.3" - resolved "https://registry.npmjs.org/@types/create-react-class/-/create-react-class-15.6.3.tgz" + resolved "https://registry.yarnpkg.com/@types/create-react-class/-/create-react-class-15.6.3.tgz#d9a533441acd1532f2b97d55c24dfb87898d5cc2" integrity sha512-SXf68tnBChYL/XOKrXsq85X8JZ3KUYtICwlnd3Y28BS41bcIlKSxxnoXSapl0/CSofVxjqqyFmu5e7GMU7lYHg== dependencies: "@types/react" "*" +"@types/debug@^4.0.0": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + +"@types/escape-html@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/escape-html/-/escape-html-1.0.2.tgz#072b7b13784fb3cee9c2450c22f36405983f5e3c" + integrity sha512-gaBLT8pdcexFztLSPRtriHeXY/Kn4907uOCZ4Q3lncFBkheAWOuNt53ypsF8szgxbEJ513UeBzcf4utN0EzEwA== + "@types/eslint-scope@^3.7.3": version "3.7.4" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.6" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz" - integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== + version "8.4.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree-jsx@^1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.0.tgz#7bfc979ab9f692b492017df42520f7f765e98df1" + integrity sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ== + dependencies: + "@types/estree" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@^0.0.51": version "0.0.51" - resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": version "4.17.31" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== dependencies: "@types/node" "*" @@ -2207,7 +2655,7 @@ "@types/express@*", "@types/express@^4.17.13": version "4.17.14" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== dependencies: "@types/body-parser" "*" @@ -2217,26 +2665,33 @@ "@types/fs-extra@9.0.13": version "9.0.13" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.3": version "4.1.5" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + "@types/history@4.7.11": version "4.7.11" - resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== -"@types/hoist-non-react-statics@^3.3.1": +"@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.1": version "3.3.1" - resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== dependencies: "@types/react" "*" @@ -2244,38 +2699,38 @@ "@types/http-proxy@^1.17.8": version "1.17.9" - resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" -"@types/is-hotkey@0.1.7": +"@types/is-hotkey@0.1.7", "@types/is-hotkey@^0.1.1": version "0.1.7" - resolved "https://registry.npmjs.org/@types/is-hotkey/-/is-hotkey-0.1.7.tgz" + resolved "https://registry.yarnpkg.com/@types/is-hotkey/-/is-hotkey-0.1.7.tgz#30ec6d4234895230b576728ef77e70a52962f3b3" integrity sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@29.1.2": version "29.1.2" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.1.2.tgz" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.1.2.tgz#7ad8077043ab5f6c108c8111bcc1d224e5600a87" integrity sha512-y+nlX0h87U0R+wsGn6EBuoRWYyv3KFtwRNP3QWp9+k2tJ2/bqcGS3UxD7jgT+tiwJWWq3UsyV4Y+T6rsMT4XMg== dependencies: expect "^29.0.0" @@ -2283,97 +2738,124 @@ "@types/js-base64@3.3.1": version "3.3.1" - resolved "https://registry.npmjs.org/@types/js-base64/-/js-base64-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/@types/js-base64/-/js-base64-3.3.1.tgz#36c2d6dc126277ea28a4d0599d0cafbf547b51e6" integrity sha512-Zw33oQNAvDdAN9b0IE5stH0y2MylYvtU7VVTKEJPxhyM2q57CVaNJhtJW258ah24NRtaiA23tptUmVn3dmTKpw== dependencies: js-base64 "*" +"@types/js-cookie@^2.2.6": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" + integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== + "@types/js-yaml@4.0.5": version "4.0.5" - resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/jwt-decode@2.2.1": version "2.2.1" - resolved "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/@types/jwt-decode/-/jwt-decode-2.2.1.tgz#afdf5c527fcfccbd4009b5fd02d1e18241f2d2f2" integrity sha512-aWw2YTtAdT7CskFyxEX2K21/zSDStuf/ikI3yBqmwpwJF0pS+/IX5DWv+1UFffZIbruP6cnT9/LAJV1gFwAT1A== -"@types/lodash@4.14.191": +"@types/lodash@4.14.191", "@types/lodash@^4.14.149": version "4.14.191" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== + dependencies: + "@types/unist" "*" + +"@types/mdx@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" + integrity sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ== + "@types/mime@*": version "3.0.1" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/minimatch@5.1.2": version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node-fetch@2.6.2": version "2.6.2" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" form-data "^3.0.0" "@types/node@*", "@types/node@>= 8": - version "18.7.23" - resolved "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz" - integrity sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg== + version "18.11.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.10.tgz#4c64759f3c2343b7e6c4b9caf761c7a3a05cee34" + integrity sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ== + +"@types/node@16.18.4": + version "16.18.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.4.tgz#712ba61b4caf091fc6490301b1888356638c17bd" + integrity sha512-9qGjJ5GyShZjUfx2ArBIGM+xExdfLvvaCyQR0t6yRXKPcWCVYF/WemtX/uIU3r7FYECXRXkIiw2Vnhn6y8d+pw== "@types/normalize-package-data@^2.4.0": version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.1.5": version "2.7.1" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== "@types/prop-types@*", "@types/prop-types@^15.7.5": version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/q@^1.5.1": version "1.5.5" - resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/qs@*": version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react-color@3.0.6": version "3.0.6" - resolved "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.6.tgz" + resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.6.tgz#602fed023802b2424e7cd6ff3594ccd3d5055f9a" integrity sha512-OzPIO5AyRmLA7PlOyISlgabpYUa3En74LP8mTMa0veCA719SvYQov4WLMsHvCgXP+L+KI9yGhYnqZafVGG0P4w== dependencies: "@types/react" "*" @@ -2381,56 +2863,47 @@ "@types/react-dom@18.0.6": version "18.0.6" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== dependencies: "@types/react" "*" "@types/react-is@^16.7.1 || ^17.0.0": version "17.0.3" - resolved "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== dependencies: "@types/react" "*" "@types/react-scroll-sync@0.8.4": version "0.8.4" - resolved "https://registry.npmjs.org/@types/react-scroll-sync/-/react-scroll-sync-0.8.4.tgz" + resolved "https://registry.yarnpkg.com/@types/react-scroll-sync/-/react-scroll-sync-0.8.4.tgz#6caa894cb0bf87c205508474d902ce43e433dd7d" integrity sha512-88N2vgZdVqlwr5ayH/5GNAAjfdlzhted/qPTyXgT/DzQwsuIWkwFpZtoOhyGCRmxUC3w5wA+ZhkpbzagIXWNaQ== dependencies: "@types/react" "*" "@types/react-transition-group@^4.4.5": version "4.4.5" - resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== dependencies: "@types/react" "*" "@types/react-virtualized-auto-sizer@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz#b3187dae1dfc4c15880c9cfc5b45f2719ea6ebd4" integrity sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong== dependencies: "@types/react" "*" "@types/react-window@1.8.5": version "1.8.5" - resolved "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.5.tgz" + resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.5.tgz#285fcc5cea703eef78d90f499e1457e9b5c02fc1" integrity sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw== dependencies: "@types/react" "*" -"@types/react@*": - version "18.0.21" - resolved "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz" - integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/react@18.0.25": +"@types/react@*", "@types/react@18.0.25", "@types/react@>=16": version "18.0.25" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.25.tgz#8b1dcd7e56fe7315535a4af25435e0bb55c8ae44" integrity sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g== @@ -2441,31 +2914,31 @@ "@types/reactcss@*": version "1.2.6" - resolved "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.6.tgz" + resolved "https://registry.yarnpkg.com/@types/reactcss/-/reactcss-1.2.6.tgz#133c1e7e896f2726370d1d5a26bf06a30a038bcc" integrity sha512-qaIzpCuXNWomGR1Xq8SCFTtF4v8V27Y6f+b9+bzHiv087MylI/nTCqqdChNeWS7tslgROmYB7yeiruWX7WnqNg== dependencies: "@types/react" "*" "@types/retry@0.12.0": version "0.12.0" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/serve-index@^1.9.1": version "1.9.1" - resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": version "1.15.0" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: "@types/mime" "*" @@ -2473,60 +2946,67 @@ "@types/sockjs@^0.3.33": version "0.3.33" - resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": version "2.0.1" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/tern@*": - version "0.23.4" - resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== +"@types/styled-components@5.1.26": + version "5.1.26" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.26.tgz#5627e6812ee96d755028a98dae61d28e57c233af" + integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== dependencies: - "@types/estree" "*" + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/url-join@4.0.1": version "4.0.1" - resolved "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/@types/url-join/-/url-join-4.0.1.tgz#4989c97f969464647a8586c7252d97b449cdc045" integrity sha512-wDXw9LEEUHyV+7UWy7U315nrJGJ7p1BzaCxDpEoLr789Dk1WDVMMlf3iBfbG2F8NdWnYyFbtTxUn2ZNbm1Q4LQ== "@types/use-sync-external-store@^0.0.3": version "0.0.3" - resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/uuid@3.4.10": version "3.4.10" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.10.tgz" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.10.tgz#637d3c8431f112edf6728ac9bdfadfe029540f48" integrity sha512-BgeaZuElf7DEYZhWYDTc/XcLZXdVgFkVSTa13BqKvbnmUrxr3TJFKofUxCtDO9UQOdhnV+HPOESdHiHKZOJV1A== "@types/ws@^8.5.1": version "8.5.3" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^17.0.8": - version "17.0.13" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz" - integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== + version "17.0.15" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.15.tgz#5b62c89fb049e2fc8378394a2861a593055f0866" + integrity sha512-ZHc4W2dnEQPfhn06TBEdWaiUHEZAocYaiVMfwOipY5jcJt/251wVrKCBWBetGZWO5CF8tdb7L3DmdxVlZ2BOIg== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== dependencies: "@typescript-eslint/scope-manager" "5.38.0" @@ -2540,7 +3020,7 @@ "@typescript-eslint/parser@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== dependencies: "@typescript-eslint/scope-manager" "5.38.0" @@ -2550,7 +3030,7 @@ "@typescript-eslint/scope-manager@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== dependencies: "@typescript-eslint/types" "5.38.0" @@ -2558,7 +3038,7 @@ "@typescript-eslint/type-utils@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== dependencies: "@typescript-eslint/typescript-estree" "5.38.0" @@ -2568,12 +3048,12 @@ "@typescript-eslint/types@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== "@typescript-eslint/typescript-estree@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== dependencies: "@typescript-eslint/types" "5.38.0" @@ -2586,7 +3066,7 @@ "@typescript-eslint/utils@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== dependencies: "@types/json-schema" "^7.0.9" @@ -2598,15 +3078,641 @@ "@typescript-eslint/visitor-keys@5.38.0": version "5.38.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== dependencies: "@typescript-eslint/types" "5.38.0" eslint-visitor-keys "^3.3.0" +"@udecode/plate-alignment@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-alignment/-/plate-alignment-18.9.0.tgz#cd075d4e5a20d6ff7efb1d097995c95f6762ccb3" + integrity sha512-ZeKANQVJZDHjBZTH73YQtBh952p8u4R6G3cX7JnfM9TbbIdEBCeW3JfADL72JMv0m++AwXRUbGvYirMX/RQ8Eg== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-autoformat@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-autoformat/-/plate-autoformat-18.9.0.tgz#f5e7c8ee044fd234e1dbce9d0d16695ce1f6a3c3" + integrity sha512-hr/zLsdSvXoEGD8Xm8Uv45lNAcGeovQ9gOeb5eMlIIaPUPW27HvrX8MYDpstUS4RVwMV2w9kLdXpgHpbhL1nJg== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-basic-elements@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-basic-elements/-/plate-basic-elements-18.9.0.tgz#1894f811573f71a200ffe7c2e8b60773353b37c4" + integrity sha512-2CasaH7zV9YVwDLCQsoy/go/5tvm/kFw0lCtA13qWUVTeSdB02oDWo0LuEL1kHMlrKgd5A1JNan7BSH9/5OG0Q== + dependencies: + "@udecode/plate-block-quote" "18.9.0" + "@udecode/plate-code-block" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-heading" "18.9.0" + "@udecode/plate-paragraph" "18.9.0" + +"@udecode/plate-basic-marks@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-basic-marks/-/plate-basic-marks-18.9.0.tgz#1ca93e288ed8883ff111db8725789e99a728a1c1" + integrity sha512-L/n0fBGr8GsN+TTSLWLSddCP4QlDDNYOzGzReb9YAiF1AvzSTE8gTgic+T2rfk7uv04Gig/MiBcnK6uU/iekMQ== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-block-quote@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-block-quote/-/plate-block-quote-18.9.0.tgz#1a2b0e67a12996630ec7c6dbacfd5331bb188f46" + integrity sha512-MgfwBwj2fKaPvIy66ElnIZCeiBtSDJEiY640IOodslyFEJinsrKdq4YmD8iPifsYWoVAkveGYmsiOHvSgESzTQ== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-break@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-break/-/plate-break-18.9.0.tgz#404278c76e2dbe2d13e7715b7bf7ee1587634ff9" + integrity sha512-spYxIpVj+A82DDj7eE13zXT7H0PUFjXvKkHG+uUUbdvj2H8kreGFWnjuK38QP17/m2lvSwgK1EqUMbQ7qmsw1g== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-button@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-button/-/plate-button-18.9.0.tgz#3f6755c9c8fb6f7a522001baed9e58df634b0280" + integrity sha512-USgJNBUPb9dAyxK9EmlsX6xA8aCI5DcQNo7SzIFG0P2xlXWCu6dgoVCEUSr+1qkVGD5UUGGKG+2b3rEwdgwfgw== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-code-block@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-code-block/-/plate-code-block-18.9.0.tgz#13bee93b3fd8ce7cfc266b722fbe7b09ab400255" + integrity sha512-MsBM8oHKdPWzWk8KekYHfX66xO/cap/4ihwB9wUT5KGaUhyah5a45Q+J8vdXQyzg2LXdAJpwQGZh2hzgrehPiw== + dependencies: + "@udecode/plate-core" "18.9.0" + prismjs "^1.25.0" + +"@udecode/plate-combobox@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-combobox/-/plate-combobox-18.9.0.tgz#e083cb04fac30e4022154a90cf5d1cef278b2211" + integrity sha512-MHscNBBE6Mwz1uaBfiTVL/bExUIFff4dIOAH2/b5Lmpqp5jyKic3BK1GrP3r6eSflh40JoE/6XKNHGAnTngIFQ== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-floating" "18.9.0" + downshift "^6.1.7" + +"@udecode/plate-core@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-core/-/plate-core-18.9.0.tgz#32602e175a5ed0d2fd8a51605519fdb076f24a05" + integrity sha512-QYOB/+Y0OGELf426bigwloMBg8K+d+nNL7lmxdLj9ios4FiF0aVidVcP75uyHDC7Vy/9bpiF5Ti8lda4d/n4wQ== + dependencies: + "@radix-ui/react-slot" "^1.0.1" + "@udecode/zustood" "^1.1.1" + clsx "^1.1.1" + jotai "^1.7.2" + lodash "^4.17.21" + nanoid "^3.3.4" + react-hotkeys-hook "^3.4.6" + use-deep-compare "^1.1.0" + zustand "^3.7.2" + +"@udecode/plate-find-replace@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-find-replace/-/plate-find-replace-18.9.0.tgz#180e6b71d3215de41fc47283c2ec4570e6578815" + integrity sha512-HUZGDQ/A7HmioBAH5Aa+6X1zyPTxax0vkMbfaazP87isuQPIYdsR4iHtLHB2NBxImxOk1AK5ZJxBNsSEt0lb7A== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-floating@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-floating/-/plate-floating-18.9.0.tgz#c1b315f2db1f5375533773cdfcf300f687ee2048" + integrity sha512-X0Df7D+/DZxs3l6KuhvXPNcL0izHbQ5L0VD2XxJTETgPRvI036k7lWgnTM0ZtoRD2XLtMqk1OMoeiwQzhLwBpw== + dependencies: + "@floating-ui/react-dom-interactions" "^0.6.6" + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-font@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-font/-/plate-font-18.9.0.tgz#9c83073b51cf520b387696458c9a5b30284545b8" + integrity sha512-HaXJ78NYHp5bCFdZtAlOJBAf5TzkQuN5YL3OAG6ld7SIi6GDgPvnfAwzON+WrpAT1zjBGgghxHFqaLo+/9CasQ== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-heading@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-heading/-/plate-heading-18.9.0.tgz#c2731cfcea0bce7ede5c17b1c7ac24e2198f1e44" + integrity sha512-4MoGcG7IiZcSRRKM87aKj1EFo55HIwA2S8wjsX2coh3YjAJPjf64ZqlX6ArXjH4W9xtoxRk1kquxI0nFp79spg== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-headless@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-headless/-/plate-headless-18.9.0.tgz#842c7b5e7c0df69e3ed7c0721a49723804f4b5d8" + integrity sha512-D81uYwApeUly/6nsFaq4FKy52JYIdZK4FIhOkBbpN/ys/jHqVVattLEYafQht49+yFrYu/ZWlCEO3PB6w+HbKA== + dependencies: + "@udecode/plate-alignment" "18.9.0" + "@udecode/plate-autoformat" "18.9.0" + "@udecode/plate-basic-elements" "18.9.0" + "@udecode/plate-basic-marks" "18.9.0" + "@udecode/plate-block-quote" "18.9.0" + "@udecode/plate-break" "18.9.0" + "@udecode/plate-button" "18.9.0" + "@udecode/plate-code-block" "18.9.0" + "@udecode/plate-combobox" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-find-replace" "18.9.0" + "@udecode/plate-floating" "18.9.0" + "@udecode/plate-font" "18.9.0" + "@udecode/plate-heading" "18.9.0" + "@udecode/plate-highlight" "18.9.0" + "@udecode/plate-horizontal-rule" "18.9.0" + "@udecode/plate-indent" "18.9.0" + "@udecode/plate-indent-list" "18.9.0" + "@udecode/plate-kbd" "18.9.0" + "@udecode/plate-line-height" "18.9.0" + "@udecode/plate-link" "18.9.0" + "@udecode/plate-list" "18.9.0" + "@udecode/plate-media" "18.9.0" + "@udecode/plate-mention" "18.9.0" + "@udecode/plate-node-id" "18.9.0" + "@udecode/plate-normalizers" "18.9.0" + "@udecode/plate-paragraph" "18.9.0" + "@udecode/plate-reset-node" "18.9.0" + "@udecode/plate-select" "18.9.0" + "@udecode/plate-selection" "18.9.0" + "@udecode/plate-serializer-csv" "18.9.0" + "@udecode/plate-serializer-docx" "18.9.0" + "@udecode/plate-serializer-html" "18.9.0" + "@udecode/plate-serializer-md" "18.9.0" + "@udecode/plate-table" "18.9.0" + "@udecode/plate-trailing-block" "18.9.0" + +"@udecode/plate-highlight@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-highlight/-/plate-highlight-18.9.0.tgz#d5f156116128a3816f473f31af51fb8d775f52d8" + integrity sha512-3d7tU6y2ImyMoB+qda5mjp1t/qekuoSiTQTj88f8gMG+RZnDMdLaeEbfqoYHZ5J1GYLsCdd0XYf9qUAcmbNhKA== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-horizontal-rule@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-horizontal-rule/-/plate-horizontal-rule-18.9.0.tgz#02d1e51194450a26ca75557fb29ccde7a4c1cd0c" + integrity sha512-gEt50b891FelP8U9bZZs2C2bJHg6ur1Ba/qfN+2QvIkR2QSbOoXnFaoUccnAAk0ntl3NxSfQebKEwSrjzuLIVg== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-indent-list@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-indent-list/-/plate-indent-list-18.9.0.tgz#d62d26ec204f126f2223e1beab720eb6ceeeaa80" + integrity sha512-SXqwLKNRAV2EhLKky2BxbHzFktig/czPuCa3NburRIcu24b2IznMsHpX5QzMx2vwh5WOvV6D/0hkIIDaGYIyNg== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-indent" "18.9.0" + "@udecode/plate-list" "18.9.0" + +"@udecode/plate-indent@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-indent/-/plate-indent-18.9.0.tgz#8601d819b2a325cb3a41b3460003646a5bf5c380" + integrity sha512-Vah3amIkW3akFlbE3nd+7x5vog6i4wEx0YyC1TcG8BXaCjPgIEUrM7OmRBIX6C2E2xeZmI4J6UphValsBBMYvA== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-juice@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-juice/-/plate-juice-18.9.0.tgz#5f9702b7f579975baaa6707a94343789ff931d5f" + integrity sha512-kFmKj8Za61mkkCmpeNCFX44ItLkMVHqFoG/VKnpBZ/042noDphJ0UD3yGDToSPc6VLEZGTt5epRb/m2n6g6EvQ== + dependencies: + "@udecode/plate-core" "18.9.0" + juice "^8.0.0" + +"@udecode/plate-kbd@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-kbd/-/plate-kbd-18.9.0.tgz#ae0d2e3d4f1715f2bce685c6dbea3ca714c11d80" + integrity sha512-cAipn4b0UypT3Qtk7Travt578Oyh8Rkmg6rgIgSKAKsMVVr1Y+RZ9ZP5bmHOkAVsHP6dPL0k68rnKMeerv8Tdg== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-line-height@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-line-height/-/plate-line-height-18.9.0.tgz#5ef9d6c2b973dd7722d5e87f5c2fe6d04b6fd587" + integrity sha512-cQO6Pq3ysYVA6J7yTxF2JgJ4Ov/yvEK9uG7T5zgPjGoZJFxW9USdw5b0JfgN1EO3si2Iw4Q9vzAZRrgcTIP8Zw== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-link@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-link/-/plate-link-18.9.0.tgz#ca30e9c2468da0bfedc0aa2b7f8c70530aabb4c2" + integrity sha512-nfDbuuItIaG0twMzXZja1sUnu4iT7zvp0/Xsl1etbz2rld8JeuqbNN8rsTVX0E0HTgmkIBtcYlRqE4OSykJD2Q== + dependencies: + "@udecode/plate-button" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-normalizers" "18.9.0" + +"@udecode/plate-list@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-list/-/plate-list-18.9.0.tgz#a43d138267cc274b3768bb812b3f3a5bd925319c" + integrity sha512-skL040L82SrjHOwTXxu4b6dI6BlyUBq4jbptIvyblUAbjSfCqJJTnk7DuIOQzklkrgSDWoQQxlEVafFfr/ZnYw== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-reset-node" "18.9.0" + +"@udecode/plate-media@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-media/-/plate-media-18.9.0.tgz#8e253fbb18947f0ae1b9ff46d2db50e2675f0265" + integrity sha512-RIlXwPz5gcVh4e/xk5HMeN7RGAxhwPnTU/EWJqhWL2wmyJsY6m3evqX8FTZYyNhMP0CQDXCahUbU1AQ3+Vxudw== + dependencies: + "@udecode/plate-core" "18.9.0" + js-video-url-parser "^0.5.1" + re-resizable "^6.9.9" + react-textarea-autosize "^8.3.3" + scriptjs "2.5.9" + +"@udecode/plate-mention@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-mention/-/plate-mention-18.9.0.tgz#a729b632a1db60f35dda4344cfbde10c0d6f5c6f" + integrity sha512-9zMTXHn33k6cfc8IRzWJoAP/5FFvt/5q770fBclLvV8t+A/vMxXAEWj3njWySJOo8pXRa4i+Yf5wibZHOgrkVg== + dependencies: + "@udecode/plate-combobox" "18.9.0" + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-node-id@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-node-id/-/plate-node-id-18.9.0.tgz#58bd8a7319b68e97e7a3bb0a6ef831e1637f2d07" + integrity sha512-0LhstU9Cto5RQ9QqbIwApChnxT6kz/6GT1mSG6WSWTuzYLCyg/7JDr2hMo55cjKFqj7o5KdEXaGxV4/y5X/62A== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-normalizers@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-normalizers/-/plate-normalizers-18.9.0.tgz#b613e0b5957bfafd5e44cff279eff771c21cb0a0" + integrity sha512-oMnInl7UYyPiDxuVA5NS9lefMizoNDfYbbUbAb4zdDlv4DEA7wZGD7TA4HxzljtMPZqkaLVZ9fsATUbBrvcV4Q== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-paragraph@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-paragraph/-/plate-paragraph-18.9.0.tgz#4f0fa9fffae4ea035665b5accd9cfd60c678f8f4" + integrity sha512-+lXx40p8sT7+AIOzbyrnx0TNtnFcOexf7HKKvy1Sz0rrXyP+1BUfe+Lihj+krBWamY5cAuBEysEcRgJ6PohS8Q== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-reset-node@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-reset-node/-/plate-reset-node-18.9.0.tgz#5718c7dad3857505f159b0d034c3f102a445ad88" + integrity sha512-li9w3r3OsPQOh13v52Th5RVLUX3kwh/RC+VFrRwf3IjkqiMn4ctBNagujjO4fMbMYnBEBPouig2tHUw66JYy7w== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-select@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-select/-/plate-select-18.9.0.tgz#ff8deec038cacba5a48266de22faddfdd7e301ee" + integrity sha512-pjhzD/jEvSW2PKgfm8NSIERQZ7NwI4lMK8lheuCDNXdwoY7ziMBvjsL9vmtcAArh08z4a5lFdqs09Guq9BK2TA== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-selection@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-selection/-/plate-selection-18.9.0.tgz#c403000d0da678978992b79c5fea8ad2cedfd9c7" + integrity sha512-+xvi7xe0wIMjjGZa2dkhE45llnWwdczNvzcWI2rGy1kcvj+xoJ+PfDJcUD9++79MVb1wAivm6oPt0eTQ5C5smg== + dependencies: + "@udecode/plate-core" "18.9.0" + "@viselect/vanilla" "^3.1.0" + copy-to-clipboard "^3.3.2" + +"@udecode/plate-serializer-csv@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-serializer-csv/-/plate-serializer-csv-18.9.0.tgz#b1c05f59d648b2f9a42d4451df9f5b4b0631d360" + integrity sha512-zrCic8wHyhu2MpFChwAixbjdXtMxN5X+hAu24CY41HuSA6mx9UFX6oOoSwNYgSGpZ4EV7/oFYyQwiOgj2dxg0g== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-table" "18.9.0" + papaparse "^5.3.2" + +"@udecode/plate-serializer-docx@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-serializer-docx/-/plate-serializer-docx-18.9.0.tgz#75232fe0c7d70de2f1612e44db5e0307b04f162a" + integrity sha512-cqLUcPkJFiWSiPUIly3SlF7aJ4MWSLyMITeMR25gLXwdyJUBc3gJepaEjd2AAJ0l1C7JihHFp1Hl5CmYAot5rw== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-heading" "18.9.0" + "@udecode/plate-indent" "18.9.0" + "@udecode/plate-indent-list" "18.9.0" + "@udecode/plate-media" "18.9.0" + "@udecode/plate-paragraph" "18.9.0" + "@udecode/plate-table" "18.9.0" + validator "^13.7.0" + +"@udecode/plate-serializer-html@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-serializer-html/-/plate-serializer-html-18.9.0.tgz#630820b1dfcc94f43300eb3ef66652ca81adbf96" + integrity sha512-pEkIv+Gw4HcACSHT0mQk5iRFXv/hfNwLQMqhOuPBMNSdq5VgVna4ieiASNCUxNsDNcrHVB4WLZ0x/I+DY5ivTQ== + dependencies: + "@udecode/plate-core" "18.9.0" + html-entities "^2.3.3" + +"@udecode/plate-serializer-md@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-serializer-md/-/plate-serializer-md-18.9.0.tgz#ab684359124c52eba8f1a9071e670632b028203a" + integrity sha512-T2MgnkKptIpBCWWwvhbvpopXSDuwZucx5V07jU6bZH54hVZcfS+n7Ntx/QS1sdgOEFMrPFCwmCpv98hq4yqE6g== + dependencies: + "@udecode/plate-block-quote" "18.9.0" + "@udecode/plate-code-block" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-heading" "18.9.0" + "@udecode/plate-link" "18.9.0" + "@udecode/plate-list" "18.9.0" + "@udecode/plate-paragraph" "18.9.0" + remark-parse "^9.0.0" + remark-slate "^1.8.6" + unified "^9.2.1" + +"@udecode/plate-styled-components@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-styled-components/-/plate-styled-components-18.9.0.tgz#d885ce16449f2095ecac196db9a28f015dac4530" + integrity sha512-raO3+SRSak9sdho8dMMrRqHxjx4svXygho4FZ1Vceu3nm/QqpiweAX9oMYXjtzFZq0ZLnVl9bh0bm9Zj0qtX7g== + dependencies: + "@udecode/plate-core" "18.9.0" + clsx "^1.1.1" + +"@udecode/plate-table@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-table/-/plate-table-18.9.0.tgz#938951a5e1b677b9f771574b8f87f7f61d134f70" + integrity sha512-6WbHbl9fb0nMny8LS+ZhaGsShCxdxx3L6HoldKqyFVfs1tI5DI3s4qFXWC/Kv9yaZStaz9y/LokcnEGb6EFHFQ== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-trailing-block@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-trailing-block/-/plate-trailing-block-18.9.0.tgz#078973569a05bb9febf9e2fc9c6c61850c85ff0a" + integrity sha512-fDqMCl5lqC/eUZUQODQylebXm5FUjwtwuQychBu9BAoFFMJ605kDGn5mKfrAbhOxDUObiu6IzDZdA2Za5SAOEw== + dependencies: + "@udecode/plate-core" "18.9.0" + +"@udecode/plate-ui-alignment@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-alignment/-/plate-ui-alignment-18.9.0.tgz#57c5a3a4ea2be12521da6723146aa18ccfc20ff5" + integrity sha512-/6xxrfIH0G8rsjNhisz7kaCcIJudgx59nhWmc/ctcjMPaOyYFtGag4UaonoPl2CkHJKAFT8+5LlUD5q/gtQmAg== + dependencies: + "@udecode/plate-alignment" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-block-quote@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-block-quote/-/plate-ui-block-quote-18.9.0.tgz#c913786fb3083ad727b11c2dbfdfd6bab6976e3d" + integrity sha512-KNAixt/Eut2LL3BtW2UrNMR9V6CDTX6Jvsz/mnPeYJZ1017qa5RAQsQHw6GcSXd8VgAkixvphulbZDyIyBc1TA== + dependencies: + "@udecode/plate-block-quote" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + +"@udecode/plate-ui-button@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-button/-/plate-ui-button-18.9.0.tgz#bdbb6fc37cf3a1c3697858021348bc7d6a24bb1d" + integrity sha512-hCA6uDDAdsJaJDXLp78uCqDhJpca0GQv0m8UG0g+kUZXGM3LsEljYajJGnVVshunVbZP3/0vUL9u1YkZl92MwA== + dependencies: + "@udecode/plate-button" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + +"@udecode/plate-ui-code-block@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-code-block/-/plate-ui-code-block-18.9.0.tgz#6cbccc9d8d8db478d5ca5e40f95e6bc90015260b" + integrity sha512-6evahJFHIB1kbqwqWVp/Q4+5SCsScqE4TJWu4Zqq7AvitvT2pGG42ZicGXyqUTvY9vG/JGShh5DQYWKBSw+UUw== + dependencies: + "@udecode/plate-code-block" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-combobox@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-combobox/-/plate-ui-combobox-18.9.0.tgz#10451507170f60b0963cf1ad8eb7f33629391a9d" + integrity sha512-XF8+wdJ8D6PR+vL5/sohgEPVweZ15Cr3uFvRvqCE/EuHQPEe6Qty5kPtd1yZRUXRMTj2LMo/XGorsHc+755IxQ== + dependencies: + "@udecode/plate-combobox" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-floating" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + +"@udecode/plate-ui-cursor@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-cursor/-/plate-ui-cursor-18.9.0.tgz#6ab3fb63cc116b085fa284c6a2ddc07d2c52c445" + integrity sha512-V0+NiREBO+Zdyssd7mhllcXYG9jZoGLq8o76lNPokziKkHFZsFZ9hGZ3JTl9ItzJytmkWiDBq7I63BSGy3P5Aw== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + +"@udecode/plate-ui-dnd@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-dnd/-/plate-ui-dnd-18.9.0.tgz#884eda37444a9033ee3ab72909e3722dedf0270a" + integrity sha512-r/sfjSKMSlzQ4l9I8bbUE4PJ7yxK7XGG1PLnEL4RigY6l3J6lhXR9DrkWW0l96uRIo/5iVxo/QTNwK8mEalIWg== + dependencies: + "@react-hook/merged-ref" "^1.3.2" + "@tippyjs/react" "^4.2.6" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + raf "^3.4.1" + +"@udecode/plate-ui-find-replace@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-find-replace/-/plate-ui-find-replace-18.9.0.tgz#e737190090af2707196b1ca0fc7155fd0c4a5e0e" + integrity sha512-kY22kVp0k6vfLM5nwX2n1Vp3+Hu5lquhYKhgoWYFK/Xk/No5E99LRXnUCbAgstkQcvxcIM4RtcwHuCSICArvVA== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-find-replace" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-font@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-font/-/plate-ui-font-18.9.0.tgz#fce1470187dcd7ab5d43988b1af9a725a171e555" + integrity sha512-847D/lZTvn3d63cKM3bvBYzZMIxN1kldzUvgxpur/X05ekj72zAiAOj/35QmFPCdrvIVeJG1R34tDslXCBppIA== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-font" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-button" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-line-height@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-line-height/-/plate-ui-line-height-18.9.0.tgz#cb09b686a66a6f05a1b9512337a415a194ae558a" + integrity sha512-+Jno1fb8uOKhwCCC8/p3TXH4wkZqHx5gtA/IcyC3YER96zh4fEANL47/VLMNW+1xuSPHOaBGl/bCTowD+PpyAg== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-line-height" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-link@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-link/-/plate-ui-link-18.9.0.tgz#52358f3789bcbadc447553b3e2425aeffbcffc1d" + integrity sha512-oGOq/645Z0iChuRU/sNbmp8nGPmRwf2e1LxU9OaDrJxMwrjS7GFUYzD+/Wj00CtMZFoaG3ywu6/4GwAD17Yw1w== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-link" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-button" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-list@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-list/-/plate-ui-list-18.9.0.tgz#7c297c5a7f62bc1fb04395901e72a334e083d051" + integrity sha512-pmIWF1eknZLyn46Eke+qk7O9CzNiAiS4Bpq4ypXiz8gNTX2O05/9sUQfj9twRvFAYwxNDmPXuxa+DPdICTzgRA== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-list" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate-ui-media@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-media/-/plate-ui-media-18.9.0.tgz#3584ddf191a2685bfa16e29ac7c4eff932ad5dad" + integrity sha512-NpWoP+0vuzOuhaDf502hvthVYGX4KSElyZw7Y8/z4TBtkNtb/rVy+XNGRQ+i7/UTBX2X/+1iTN571rALFdiciA== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-floating" "18.9.0" + "@udecode/plate-link" "18.9.0" + "@udecode/plate-media" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-link" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + js-video-url-parser "0.5.1" + +"@udecode/plate-ui-mention@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-mention/-/plate-ui-mention-18.9.0.tgz#6252976fe7b38ed25c140efa15a1c76d909a763e" + integrity sha512-Zknjk+lUMtkkrgXy10CZgobQOhHDZLQqGHPjD3CWDteawxLUflE3a5I4+EBlA295jtUz3aTH3lIE3+MglvJKcw== + dependencies: + "@udecode/plate-combobox" "18.9.0" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-mention" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-combobox" "18.9.0" + +"@udecode/plate-ui-placeholder@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-placeholder/-/plate-ui-placeholder-18.9.0.tgz#c900a70409e69b89c51a0dda655ce8c54d514244" + integrity sha512-muT67OFdkDTNeUWB94hLWXrz49iKzrXHZXRn0ubHansv0z6IuR9STaAElis5y/YvBZSDe8O0b0qsiEHdhgtEGA== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + +"@udecode/plate-ui-table@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-table/-/plate-ui-table-18.9.0.tgz#63f35ae3433d693a2f7626561c650653ec7f966b" + integrity sha512-lCN0Mecj5+yQIS1dQw4XS5AtbdEZosDi7WRT0MxLTp4yuNp1DDUcfjl9PzKFfaqkOLs9/9iHAkznDzC24EV06A== + dependencies: + "@udecode/plate-core" "18.9.0" + "@udecode/plate-floating" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-table" "18.9.0" + "@udecode/plate-ui-button" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + re-resizable "^6.9.9" + +"@udecode/plate-ui-toolbar@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui-toolbar/-/plate-ui-toolbar-18.9.0.tgz#809d7b4bcf6c119ba91d22fba355c2ed5f9b253e" + integrity sha512-qUwHWnYddJG0Cmtw/dIi+hqe6FlXt2Y4gPd3fB1VpWEYKjBV9jqvqZdMFjpVfOm2SvCPko/upp30aXH0ArtrDQ== + dependencies: + "@tippyjs/react" "^4.2.6" + "@udecode/plate-core" "18.9.0" + "@udecode/plate-floating" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-button" "18.9.0" + react-use "^17.3.2" + +"@udecode/plate-ui@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate-ui/-/plate-ui-18.9.0.tgz#ffb383330ec47c070d855d402421c587e2e8b9a4" + integrity sha512-AEhryLWvuTNABas5lGUZQJ/NahMg6cwz3IZ2Z8fA68T6NafKzcdyrWDm8NctBmU2p3RGeiSEg0+iDMARRPF3mA== + dependencies: + "@udecode/plate-headless" "18.9.0" + "@udecode/plate-styled-components" "18.9.0" + "@udecode/plate-ui-alignment" "18.9.0" + "@udecode/plate-ui-block-quote" "18.9.0" + "@udecode/plate-ui-button" "18.9.0" + "@udecode/plate-ui-code-block" "18.9.0" + "@udecode/plate-ui-combobox" "18.9.0" + "@udecode/plate-ui-cursor" "18.9.0" + "@udecode/plate-ui-dnd" "18.9.0" + "@udecode/plate-ui-find-replace" "18.9.0" + "@udecode/plate-ui-font" "18.9.0" + "@udecode/plate-ui-line-height" "18.9.0" + "@udecode/plate-ui-link" "18.9.0" + "@udecode/plate-ui-list" "18.9.0" + "@udecode/plate-ui-media" "18.9.0" + "@udecode/plate-ui-mention" "18.9.0" + "@udecode/plate-ui-placeholder" "18.9.0" + "@udecode/plate-ui-table" "18.9.0" + "@udecode/plate-ui-toolbar" "18.9.0" + +"@udecode/plate@18.9.0": + version "18.9.0" + resolved "https://registry.yarnpkg.com/@udecode/plate/-/plate-18.9.0.tgz#e1f5849ea900269736592e11ef8dbfee5726fc79" + integrity sha512-8atV08toDZ7bUpiv/wke+vbzPzzMNS/E3kPZKBno4DDvIIg+jx1mMO8arjmxnGGbgQrW4mGaDCMjANNE0rkxfA== + dependencies: + "@udecode/plate-headless" "18.9.0" + "@udecode/plate-ui" "18.9.0" + +"@udecode/zustood@^1.1.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@udecode/zustood/-/zustood-1.1.3.tgz#0ccff0beeaf7a79510117e8946f589bafdcb8df4" + integrity sha512-f3mxHDaOF+q2XvDh/mMvLhCNs0LfCLhIBl8jGmvZT/i3WWq7YujzGXgnbK8mxIkun9irfe6wlPhg9sTIB9Gnug== + dependencies: + immer "^9.0.6" + react-tracked "^1.7.9" + +"@uiw/codemirror-extensions-basic-setup@4.14.2": + version "4.14.2" + resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.14.2.tgz#793f61de8b60b70bc3fa3cbe9b36c08f93645932" + integrity sha512-fAt5rIozkXpbJQV/OQnYnhmrF3Qb0RRU+1cq+Zhct1SEo4oEzp0dXxU9EddxbvQpHK3z2AMJsjmYpNpGTYx+yg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + +"@uiw/codemirror-extensions-langs@4.14.2": + version "4.14.2" + resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-langs/-/codemirror-extensions-langs-4.14.2.tgz#2ce3bbe39fdc8c5fb291abe6598e2a36b20ed732" + integrity sha512-L9GDKLpMn4mVDl8xs/L9LOmZ7qXb4nJlInf5S+aqLUMn0PEb53foek3SBjLiTF5s24y02o3RimCInGEfnlQ1/g== + dependencies: + "@codemirror/lang-cpp" "~6.0.0" + "@codemirror/lang-html" "~6.2.0" + "@codemirror/lang-java" "~6.0.0" + "@codemirror/lang-javascript" "~6.1.0" + "@codemirror/lang-json" "~6.0.0" + "@codemirror/lang-lezer" "~6.0.0" + "@codemirror/lang-markdown" "~6.0.0" + "@codemirror/lang-php" "~6.0.0" + "@codemirror/lang-python" "~6.0.0" + "@codemirror/lang-rust" "~6.0.0" + "@codemirror/lang-sql" "~6.3.0" + "@codemirror/lang-wast" "^6.0.0" + "@codemirror/lang-xml" "~6.0.0" + "@codemirror/language-data" ">=6.0.0" + "@codemirror/legacy-modes" ">=6.0.0" + +"@uiw/react-codemirror@4.14.2": + version "4.14.2" + resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.14.2.tgz#1d409f4174c861f4303720f80fb38841e8475e69" + integrity sha512-3SVLKU7cNZJSO5NzndWy8ZylK/A/9URbun16ed0HrnvAc1vEnA4WyosxcCuCHUOnc4dPsmHEq1l02mtfHYBAtw== + dependencies: + "@babel/runtime" "^7.18.6" + "@codemirror/commands" "^6.1.0" + "@codemirror/state" "^6.1.1" + "@codemirror/theme-one-dark" "^6.0.0" + "@uiw/codemirror-extensions-basic-setup" "4.14.2" + codemirror "^6.0.0" + +"@viselect/vanilla@^3.1.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@viselect/vanilla/-/vanilla-3.2.2.tgz#8f6d343c5a4f26429906c8446be0f809489a2cde" + integrity sha512-3HRnbDOqkaLTSmfkSMnBImd1TyNVq5esiG8HhfKYpGE3Z8bjH1HeNbMrK87MjK9YX0h1SWJGD5dGn2C4o7tttg== + "@webassemblyjs/ast@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: "@webassemblyjs/helper-numbers" "1.11.1" @@ -2614,22 +3720,22 @@ "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== "@webassemblyjs/helper-api-error@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== "@webassemblyjs/helper-buffer@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== "@webassemblyjs/helper-numbers@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.1" @@ -2638,12 +3744,12 @@ "@webassemblyjs/helper-wasm-bytecode@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== "@webassemblyjs/helper-wasm-section@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -2653,26 +3759,26 @@ "@webassemblyjs/ieee754@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -2686,7 +3792,7 @@ "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -2697,7 +3803,7 @@ "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -2707,7 +3813,7 @@ "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -2719,7 +3825,7 @@ "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: "@webassemblyjs/ast" "1.11.1" @@ -2727,46 +3833,51 @@ "@webpack-cli/configtest@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== "@webpack-cli/info@^1.5.0": version "1.5.0" - resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== dependencies: envinfo "^7.7.3" "@webpack-cli/serve@^1.7.0": version "1.7.0" - resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== +"@xobotyi/scrollbar-width@^1.9.5": + version "1.9.5" + resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" + integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== + "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -2774,44 +3885,44 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: acorn-import-assertions@^1.7.6: version "1.8.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.3.2: +acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.0.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== ajv-errors@3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-3.0.0.tgz#e54f299f3a3d30fe144161e5f0d8d51196c527bc" integrity sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ== ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@5.1.0, ajv-keywords@^5.0.0: version "5.1.0" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@8.11.2: +ajv@8.11.2, ajv@^8.0.0, ajv@^8.8.0: version "8.11.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== @@ -2823,7 +3934,7 @@ ajv@8.11.2: ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -2831,193 +3942,200 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.0: - version "8.11.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.2.1: version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-html-community@^0.0.8: version "0.0.8" - resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^2.0.0: version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" argparse@^1.0.7: version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.1.3: + version "1.2.2" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.2.tgz#8c4f7cc88d73ca42114106fdf6f47e68d31475b8" + integrity sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA== + dependencies: + tslib "^2.0.0" + array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-flatten@^2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.1.4, array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" is-string "^1.0.7" array-move@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/array-move/-/array-move-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/array-move/-/array-move-4.0.0.tgz#2c3730f056cc926f62a59769a5a8cda2fb6d8c55" integrity sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ== array-union@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-union@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" array.prototype.foreach@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/array.prototype.foreach/-/array.prototype.foreach-1.0.2.tgz" - integrity sha512-gCOgyBKIaFL5hekfQLhsNmF0TY4Y5JdtOyFKtbSpL72oiCAZ9Zi7TFvcfSsM1LnBFMog1RYVJF0PHgtnY+U5nA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.foreach/-/array.prototype.foreach-1.0.4.tgz#ea248e0bc250fef587c369cc7102908a43d9f23c" + integrity sha512-OYqqGR/56CopyheXNwdlJvFtbSvf2Z9RGvL20X6GvAuKePJ76L/D46BqZn3bITd36QA2Ti7Iy0UwVJaD/YwXZA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-array-method-boxes-properly "^1.0.0" - get-intrinsic "^1.1.1" + get-intrinsic "^1.1.3" is-string "^1.0.7" -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" asap@^2.0.0: version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +astring@^1.8.0: + version "1.8.3" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.3.tgz#1a0ae738c7cc558f8e5ddc8e3120636f5cebcb85" + integrity sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A== + async@^2.6.4: version "2.6.4" - resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== atob-lite@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" integrity sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw== axios@0.26.1: version "0.26.1" - resolved "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== dependencies: follow-redirects "^1.14.8" babel-code-frame@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: chalk "^1.1.3" @@ -3026,34 +4144,34 @@ babel-code-frame@^6.26.0: babel-core@7.0.0-bridge.0: version "7.0.0-bridge.0" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== babel-eslint@11.0.0-beta.2: version "11.0.0-beta.2" - resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-11.0.0-beta.2.tgz" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-11.0.0-beta.2.tgz#de1f06795aa0d8cedcf6ac943e63056f5b4a7048" integrity sha512-D2tunrOu04XloEdU2XVUminUu25FILlGruZmffqH5OSnLDhCheKNvUoM1ihrexdUvhizlix8bjqRnsss4V/UIQ== dependencies: eslint-scope "5.0.0" eslint-visitor-keys "^1.1.0" semver "^6.3.0" -babel-jest@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.1.2.tgz" - integrity sha512-IuG+F3HTHryJb7gacC7SQ59A9kO56BctUsT67uJHp1mMCHUOMXpDwOHWGifWqdWVknN2WNkCVQELPjXx0aLJ9Q== +babel-jest@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" + integrity sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA== dependencies: - "@jest/transform" "^29.1.2" + "@jest/transform" "^29.3.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.0.2" + babel-preset-jest "^29.2.0" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" babel-loader@8.2.5: version "8.2.5" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" @@ -3063,33 +4181,26 @@ babel-loader@8.2.5: babel-messages@^6.23.0: version "6.23.0" - resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: babel-runtime "^6.22.0" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-emotion@11.0.0: version "11.0.0" - resolved "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-11.0.0.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-11.0.0.tgz#f362c9fe05493821ab8995cd5a8e7be6504b73a9" integrity sha512-cVD32sIXlidaqQBr7vw0uD2o58uBeD8jILDJ2yAGT1fOmgYcE5iX27bTVMV6meiUZarIAh1iAyTqrEWV+V2dqQ== babel-plugin-inline-json-import@0.3.2: version "0.3.2" - resolved "https://registry.npmjs.org/babel-plugin-inline-json-import/-/babel-plugin-inline-json-import-0.3.2.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-inline-json-import/-/babel-plugin-inline-json-import-0.3.2.tgz#fdec1a59364d632895d421aec4c9435ccbbcadd3" integrity sha512-QNNJx08KjmMT25Cw7rAPQ6dlREDPiZGDyApHL8KQ9vrQHbrr4PTi7W8g1tMMZPz0jEMd39nx/eH7xjnDNxq5sA== dependencies: decache "^4.5.1" babel-plugin-inline-react-svg@2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-inline-react-svg/-/babel-plugin-inline-react-svg-2.0.1.tgz#68c9c119d643a8f2d7bf939b942534d89ae3ade9" integrity sha512-aD4gy2G3gNVDaw97LtoixzWbaOcSEnOb4KJPe8kZedSeqxY3v71KsBs8DGmButGZtEloCRhRRuU2TpW1hIPXig== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -3100,7 +4211,7 @@ babel-plugin-inline-react-svg@2.0.1: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -3109,10 +4220,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.0.2: - version "29.0.2" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.0.2.tgz" - integrity sha512-eBr2ynAEFjcebVvu8Ktx580BD1QKCrBG1XwEUTXJe285p9HA/4hOhfWCFRQhTKSyBV0VzjhG7H91Eifz9s29hg== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -3121,7 +4232,7 @@ babel-plugin-jest-hoist@^29.0.2: babel-plugin-lodash@3.3.4: version "3.3.4" - resolved "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" integrity sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg== dependencies: "@babel/helper-module-imports" "^7.0.0-beta.49" @@ -3132,7 +4243,7 @@ babel-plugin-lodash@3.3.4: babel-plugin-macros@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: "@babel/runtime" "^7.12.5" @@ -3141,7 +4252,7 @@ babel-plugin-macros@^3.1.0: babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" @@ -3150,7 +4261,7 @@ babel-plugin-polyfill-corejs2@^0.3.3: babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" @@ -3158,24 +4269,40 @@ babel-plugin-polyfill-corejs3@^0.6.0: babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-react-svg@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/babel-plugin-react-svg/-/babel-plugin-react-svg-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-react-svg/-/babel-plugin-react-svg-3.0.3.tgz#7da46a0bd8319f49ac85523d259f145ce5d78321" integrity sha512-Pst1RWjUIiV0Ykv1ODSeceCBsFOP2Y4dusjq7/XkjuzJdvS9CjpkPMUIoO4MLlvp5PiLCeMlsOC7faEUA0gm3Q== +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + babel-plugin-syntax-export-extensions@^6.8.0: version "6.13.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" integrity sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg== +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + babel-plugin-transform-builtin-extend@1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/babel-plugin-transform-builtin-extend/-/babel-plugin-transform-builtin-extend-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-builtin-extend/-/babel-plugin-transform-builtin-extend-1.1.2.tgz#5e96fecf58b8fa1ed74efcad88475b2af3c9116e" integrity sha512-foUQxHjMiLNynzJaBKrIoZfoRY22S620MLafGC5UfnBEwqcBODIFcgwqqzHE8Hj590lbUJCQ2uBo9y08+sYIkQ== dependencies: babel-runtime "^6.2.0" @@ -3183,7 +4310,7 @@ babel-plugin-transform-builtin-extend@1.1.2: babel-plugin-transform-define@2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.1.tgz#6a34fd6ea89989feb75721ee4cce817ec779be7f" integrity sha512-7lDR1nFGSJHmhq/ScQtp9LTDmNE2yKPoLtwfiu+WQZnj84XL/J/5AZWZXwYcOwbDtUPhtg+y0yxTiP/oGDU6Kw== dependencies: lodash "^4.17.11" @@ -3191,7 +4318,7 @@ babel-plugin-transform-define@2.0.1: babel-plugin-transform-export-extensions@6.22.0: version "6.22.0" - resolved "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" integrity sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg== dependencies: babel-plugin-syntax-export-extensions "^6.8.0" @@ -3199,12 +4326,12 @@ babel-plugin-transform-export-extensions@6.22.0: babel-plugin-transform-inline-environment-variables@0.4.4: version "0.4.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.4.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.4.tgz#974245008b3cbbd646bd81707af147aea3acca43" integrity sha512-bJILBtn5a11SmtR2j/3mBOjX4K3weC6cq+NNZ7hG22wCAqpc3qtj/iN7dSe9HDiS46lgp1nHsQgeYrea/RUe+g== babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -3220,17 +4347,17 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.0.2: - version "29.0.2" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.0.2.tgz" - integrity sha512-BeVXp7rH5TK96ofyEnHjznjLMQ2nAeDJ+QzxKnHAAMs0RgrQsCywjAN8m4mOm5Di0pxU//3AoEeJJrerMH5UeA== +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== dependencies: - babel-plugin-jest-hoist "^29.0.2" + babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" @@ -3238,7 +4365,7 @@ babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: babel-template@^6.3.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: babel-runtime "^6.26.0" @@ -3249,7 +4376,7 @@ babel-template@^6.3.0: babel-traverse@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: babel-code-frame "^6.26.0" @@ -3264,7 +4391,7 @@ babel-traverse@^6.26.0: babel-types@^6.26.0: version "6.26.0" - resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" @@ -3274,39 +4401,44 @@ babel-types@^6.26.0: babylon@^6.18.0: version "6.18.0" - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + 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== + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== basic-auth@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" batch@0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== -before-after-hook@^2.0.0: - version "2.2.2" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== - -before-after-hook@^2.2.0: +before-after-hook@^2.0.0, before-after-hook@^2.2.0: version "2.2.3" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== big.js@^5.2.2: @@ -3316,13 +4448,13 @@ big.js@^5.2.2: binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -3332,14 +4464,14 @@ body-parser@1.20.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" bonjour-service@^1.0.11: version "1.0.14" - resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.14.tgz#c346f5bc84e87802d08f8d5a60b93f758e514ee7" integrity sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ== dependencies: array-flatten "^2.1.2" @@ -3349,12 +4481,12 @@ bonjour-service@^1.0.11: boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -3362,26 +4494,26 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" browser-or-node@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-2.0.0.tgz#808ea90282a670931cdc0ea98166538a50dd0d89" integrity sha512-3Lrks/Okgof+/cRguUNG+qRXSeq79SO3hY4QrXJayJofwJwHiGC0qi99uDjsfTwULUFSr1OGVsBkdIkygKjTUA== browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: version "4.21.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: caniuse-lite "^1.0.30001400" @@ -3391,54 +4523,54 @@ browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: bser@2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" btoa-lite@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@6.0.3: version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" ieee754 "^1.2.1" bufferutil@^4.0.1: - version "4.0.6" - resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== dependencies: node-gyp-build "^4.3.0" builtin-modules@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== bytes@3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cache-me-outside@0.0.10: version "0.0.10" - resolved "https://registry.npmjs.org/cache-me-outside/-/cache-me-outside-0.0.10.tgz" + resolved "https://registry.yarnpkg.com/cache-me-outside/-/cache-me-outside-0.0.10.tgz#8dc3345fb36f40e268cebb74474e9814e1ff2286" integrity sha512-AN9fsDdzpH5qoQqpHs9qYV7dR6KJ2fYbrwWsq62gj0Xlo8eKUFU4Ood/WDJVns5cpfxFbqMKH6UZd+aLRsQELA== dependencies: is-invalid-path "^1.0.2" @@ -3446,7 +4578,7 @@ cache-me-outside@0.0.10: call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -3454,32 +4586,42 @@ call-bind@^1.0.0, call-bind@^1.0.2: callsite@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" integrity sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ== callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001400: - version "1.0.30001414" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz" - integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg== + version "1.0.30001435" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001435.tgz#502c93dbd2f493bee73a408fe98e98fb1dad10b2" + integrity sha512-kdCkUTjR+v4YAJelyiDTqiu82BDr4W4CP5sgTA0ZBmqn30XfS2ZghPLMowik9TPhS+psWJiUNxsqLyurDbmutA== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== chalk@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" @@ -3490,7 +4632,7 @@ chalk@^1.1.3: chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -3499,7 +4641,7 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: chalk@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" @@ -3507,7 +4649,7 @@ chalk@^3.0.0: chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -3515,12 +4657,71 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +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-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +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-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +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== + +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + +cheerio-select@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" + integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== + dependencies: + css-select "^4.3.0" + css-what "^6.0.1" + domelementtype "^2.2.0" + domhandler "^4.3.1" + domutils "^2.8.0" + +cheerio@1.0.0-rc.10: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" + chokidar@^3.4.0, chokidar@^3.5.3: version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -3535,53 +4736,48 @@ chokidar@^3.4.0, chokidar@^3.5.3: chrome-trace-event@^1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -ci-info@^3.2.0: - version "3.5.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz" - integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw== - -ci-info@^3.3.0: - version "3.4.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz" - integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug== +ci-info@^3.2.0, ci-info@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef" + integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog== cjs-module-lexer@^1.0.0: version "1.2.2" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== clean-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== dependencies: escape-string-regexp "^1.0.5" clean-stack@4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-4.2.0.tgz#c464e4cde4ac789f4e0735c5d75beb49d7b30b31" integrity sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg== dependencies: escape-string-regexp "5.0.0" cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-spinners@^2.2.0: version "2.7.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== cliui@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -3590,7 +4786,7 @@ cliui@^8.0.1: clone-deep@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== dependencies: is-plain-object "^2.0.4" @@ -3599,112 +4795,130 @@ clone-deep@^4.0.1: clone@^1.0.2: version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== clsx@^1.1.1, clsx@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== co@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== coa@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== dependencies: "@types/q" "^1.5.1" chalk "^2.4.1" q "^1.1.2" -codemirror@5.65.9: - version "5.65.9" - resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.65.9.tgz" - integrity sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw== +codemirror@6.0.1, codemirror@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29" + integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" collect-v8-coverage@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.10, colorette@^2.0.14: version "2.0.19" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + commander@^2.20.0: version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.1: version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + commander@^7.0.0, commander@^7.2.0: version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== common-path-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== common-tags@1.8.1: version "1.8.1" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.1.tgz" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.1.tgz#ebf4973edf7d476a9c19646f5f04a45f95796029" integrity sha512-uOZd85rJqrdEIE/JjhW5YAeatX8iqjjvVzIyfx7JL7G5r9Tep6YpYT9gEJWhWpVyDQEyzukWd6p2qULpJ8tmBw== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== commonmark-spec@0.30.0: version "0.30.0" - resolved "https://registry.npmjs.org/commonmark-spec/-/commonmark-spec-0.30.0.tgz" + resolved "https://registry.yarnpkg.com/commonmark-spec/-/commonmark-spec-0.30.0.tgz#f8ff08385af0a88fb8d26202cf648f475febca69" integrity sha512-f12+blWaOUf5FI+huhZXNFUr4IljCJKAEd3JhCCnzRfDYcFxK5j9K6ldQ/nH6RAEYQHiMJf0tnyYndbywQvhWA== commonmark@0.30.0: version "0.30.0" - resolved "https://registry.npmjs.org/commonmark/-/commonmark-0.30.0.tgz" + resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.30.0.tgz#38811dc7bbf0f59d277ae09054d4d73a332f2e45" integrity sha512-j1yoUo4gxPND1JWV9xj5ELih0yMv1iCWDG6eEQIPLSWLxzCXiFoyS7kvB+WwU+tZMf4snwJMMtaubV0laFpiBA== dependencies: entities "~2.0" @@ -3714,14 +4928,14 @@ commonmark@0.30.0: compressible@~2.0.16: version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" - resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" @@ -3732,91 +4946,101 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@^1.0.17, compute-scroll-into-view@^1.0.20: + version "1.0.20" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" + integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== + concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== connect-history-api-fallback@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== "consolidated-events@^1.1.0 || ^2.0.0": version "2.0.2" - resolved "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91" integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^1.4.0, convert-source-map@^1.6.0: +convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-text-to-clipboard@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c" integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q== +copy-to-clipboard@^3.3.1, copy-to-clipboard@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + core-js-compat@^3.25.1: - version "3.25.3" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.3.tgz" - integrity sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ== + version "3.26.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df" + integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== dependencies: browserslist "^4.21.4" core-js-pure@^3.23.3: - version "3.25.5" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.5.tgz" - integrity sha512-oml3M22pHM+igfWHDfdLVq2ShWmjM2V4L+dQEBs0DWVIqEm9WHCwGAlZ6BmyBQGy5sFrJmcx+856D9lVKyGWYg== + version "3.26.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33" + integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== core-js@^2.4.0: version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== corser@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -3826,22 +5050,27 @@ cosmiconfig@^7.0.0: create-react-class@15.7.0: version "15.7.0" - resolved "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== dependencies: loose-envify "^1.3.1" object-assign "^4.1.1" +crelt@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94" + integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== + cross-env@7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -3852,16 +5081,28 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-in-js-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" + integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== + dependencies: + hyphenate-style-name "^1.0.3" + css-loader@3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== dependencies: camelcase "^5.3.1" @@ -3880,12 +5121,12 @@ css-loader@3.6.0: css-select-base-adapter@^0.1.1: version "0.1.1" - resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== css-select@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: boolbase "^1.0.0" @@ -3893,9 +5134,9 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" -css-select@^4.1.3: +css-select@^4.1.3, css-select@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -3904,9 +5145,18 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: mdn-data "2.0.4" @@ -3914,7 +5164,7 @@ css-tree@1.0.0-alpha.37: css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" @@ -3922,39 +5172,39 @@ css-tree@^1.1.2, css-tree@^1.1.3: css-what@^3.2.1: version "3.4.2" - resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== css-what@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== csscolorparser@~1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== csso@^4.0.2, csso@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" -csstype@^3.0.10, csstype@^3.0.2, csstype@^3.1.1: +csstype@^3.0.10, csstype@^3.0.2, csstype@^3.0.6, csstype@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== d@1, d@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: es5-ext "^0.10.50" @@ -3962,79 +5212,86 @@ d@1, d@^1.0.1: date-fns@2.29.3: version "2.29.3" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== debug@2.6.9, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^3.2.7: version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decache@^4.5.1: version "4.6.1" - resolved "https://registry.npmjs.org/decache/-/decache-4.6.1.tgz" + resolved "https://registry.yarnpkg.com/decache/-/decache-4.6.1.tgz#5928bfab97a6fcf22a65047a3d07999af36efaf0" integrity sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q== dependencies: callsite "^1.0.0" +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== dedent@^0.7.0: version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@4.2.2, deepmerge@^4.2.2: version "4.2.2" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== default-gateway@^6.0.3: version "6.0.3" - resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: execa "^5.0.0" defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: has-property-descriptors "^1.0.0" @@ -4042,94 +5299,114 @@ define-properties@^1.1.3, define-properties@^1.1.4: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== depd@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-1.0.0.tgz#41c6065e70de738541c82cdbedea5292277a017e" + integrity sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== diacritics@1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" integrity sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA== -diff-sequences@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz" - integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== +diff-sequences@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" + integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" -dnd-core@14.0.1: - version "14.0.1" - resolved "https://registry.npmjs.org/dnd-core/-/dnd-core-14.0.1.tgz" - integrity sha512-+PVS2VPTgKFPYWo3vAFEA8WPbTf7/xo43TifH9G8S1KqnrQu0o77A3unrF5yOugy4mIz7K5wAVFHUcha7wsz6A== +direction@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" + integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ== + +dnd-core@^16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-16.0.1.tgz#a1c213ed08961f6bd1959a28bb76f1a868360d19" + integrity sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng== dependencies: - "@react-dnd/asap" "^4.0.0" - "@react-dnd/invariant" "^2.0.0" - redux "^4.1.1" + "@react-dnd/asap" "^5.0.1" + "@react-dnd/invariant" "^4.0.1" + redux "^4.2.0" dns-equal@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^5.2.2: version "5.4.0" - resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dom-helpers@^5.0.1: version "5.2.1" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" @@ -4137,15 +5414,15 @@ dom-helpers@^5.0.1: dom-serializer@0: version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@^1.0.1: +dom-serializer@^1.0.1, dom-serializer@^1.3.2: version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" @@ -4154,37 +5431,39 @@ dom-serializer@^1.0.1: domelementtype@1: version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domhandler@^4.2.0, domhandler@^4.3.1: +domhandler@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" -dompurify@^2.3.3: - version "2.4.0" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz" - integrity sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA== - domutils@^1.7.0: version "1.7.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" domelementtype "1" -domutils@^2.8.0: +domutils@^2.4.2, domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" @@ -4193,27 +5472,38 @@ domutils@^2.8.0: dotenv@10.0.0: version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +downshift@^6.1.7: + version "6.1.12" + resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.12.tgz#f14476b41a6f6fd080c340bad1ddf449f7143f6f" + integrity sha512-7XB/iaSJVS4T8wGFT3WRXmSF1UlBHAA40DshZtkrIscIN+VC+Lh363skLxFTvJwtNgHxAMDGEHT4xsyQFWL+UA== + dependencies: + "@babel/runtime" "^7.14.8" + compute-scroll-into-view "^1.0.17" + prop-types "^15.7.2" + react-is "^17.0.2" + tslib "^2.3.0" + ee-first@1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.251: - version "1.4.268" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.268.tgz" - integrity sha512-PO90Bv++vEzdln+eA9qLg1IRnh0rKETus6QkTzcFm5P3Wg3EQBZud5dcnzkpYXuIKWBjKe5CO8zjz02cicvn1g== + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emojis-list@^3.0.0: @@ -4223,57 +5513,57 @@ emojis-list@^3.0.0: encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: - version "5.10.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" - integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.7.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" entities@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== entities@~2.0: version "2.0.3" - resolved "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== envinfo@^7.7.3: version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: version "2.1.4" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: - version "1.20.3" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.3.tgz" - integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" + integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -4285,7 +5575,7 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19 has-property-descriptors "^1.0.0" has-symbols "^1.0.3" internal-slot "^1.0.3" - is-callable "^1.2.6" + is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" @@ -4302,24 +5592,24 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19 es-array-method-boxes-properly@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-module-lexer@^0.9.0: version "0.9.3" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== es-shim-unscopables@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -4328,7 +5618,7 @@ es-to-primitive@^1.2.1: es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.62" - resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: es6-iterator "^2.0.3" @@ -4337,7 +5627,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.50: es6-iterator@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: d "1" @@ -4346,7 +5636,7 @@ es6-iterator@^2.0.3: es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: d "^1.0.1" @@ -4354,71 +5644,89 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-html@^1.0.3, escape-html@~1.0.3: +escape-goat@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" + integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== + +escape-html@1.0.3, escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@5.0.0: +escape-string-regexp@5.0.0, escape-string-regexp@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-config-prettier@8.5.0: version "8.5.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== eslint-import-resolver-node@^0.3.6: version "0.3.6" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: debug "^3.2.7" resolve "^1.20.0" +eslint-import-resolver-typescript@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz#9431acded7d898fd94591a08ea9eec3514c7de91" + integrity sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ== + dependencies: + debug "^4.3.4" + enhanced-resolve "^5.10.0" + get-tsconfig "^4.2.0" + globby "^13.1.2" + is-core-module "^2.10.0" + is-glob "^4.0.3" + synckit "^0.8.4" + eslint-module-utils@^2.7.3: version "2.7.4" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: debug "^3.2.7" eslint-plugin-babel@5.3.1: version "5.3.1" - resolved "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" integrity sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g== dependencies: eslint-rule-composer "^0.3.0" eslint-plugin-cypress@2.12.1: version "2.12.1" - resolved "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz#9aeee700708ca8c058e00cdafe215199918c2632" integrity sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA== dependencies: globals "^11.12.0" eslint-plugin-import@2.26.0: version "2.26.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" @@ -4437,19 +5745,19 @@ eslint-plugin-import@2.26.0: eslint-plugin-prettier@4.2.1: version "4.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-react-hooks@4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@7.31.8: version "7.31.8" - resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== dependencies: array-includes "^3.1.5" @@ -4469,7 +5777,7 @@ eslint-plugin-react@7.31.8: eslint-plugin-unicorn@41.0.1: version "41.0.1" - resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-41.0.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-41.0.1.tgz#b49205b38e71e227d21fb5776f8d078a1dc637ca" integrity sha512-gF5vo2dIj0YdNMQ/IMegiBkQdQ22GBFFVpdkJP+0og3w7XD4ypea0xQVRv6iofkLVR2w0phAdikcnU01ybd4Ow== dependencies: "@babel/helper-validator-identifier" "^7.15.7" @@ -4489,12 +5797,12 @@ eslint-plugin-unicorn@41.0.1: eslint-rule-composer@^0.3.0: version "0.3.0" - resolved "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== eslint-scope@5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== dependencies: esrecurse "^4.1.0" @@ -4502,7 +5810,7 @@ eslint-scope@5.0.0: eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -4510,7 +5818,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.1.1: version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" @@ -4518,29 +5826,29 @@ eslint-scope@^7.1.1: eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^1.1.0: version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@8.24.0: version "8.24.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8" integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ== dependencies: "@eslint/eslintrc" "^1.3.2" @@ -4584,9 +5892,9 @@ eslint@8.24.0: text-table "^0.2.0" espree@^9.4.0: - version "9.4.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" @@ -4594,61 +5902,104 @@ espree@^9.4.0: esprima@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-util-attach-comments@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz#47d69900588bcbc6bf58c3798803ec5f1f3008de" + integrity sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw== + dependencies: + "@types/estree" "^1.0.0" + +estree-util-build-jsx@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz#d4307bbeee28c14eb4d63b75c9aad28fa61d84f5" + integrity sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ== + dependencies: + "@types/estree-jsx" "^1.0.0" + estree-util-is-identifier-name "^2.0.0" + estree-walker "^3.0.0" + +estree-util-is-identifier-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz#cf07867f42705892718d9d89eb2d85eaa8f0fcb5" + integrity sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ== + +estree-util-to-js@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz#3bd9bb86354063537cc3d81259be2f0d4c3af39f" + integrity sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A== + dependencies: + "@types/estree-jsx" "^1.0.0" + astring "^1.8.0" + source-map "^0.7.0" + +estree-util-visit@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.2.0.tgz#aa0311a9c2f2aa56e9ae5e8b9d87eac14e4ec8f8" + integrity sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/unist" "^2.0.0" + +estree-walker@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.1.tgz#c2a9fb4a30232f5039b7c030b37ead691932debd" + integrity sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g== + esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== event-target-shim@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.2.0: version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@5.1.1, execa@^5.0.0: version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -4663,7 +6014,7 @@ execa@5.1.1, execa@^5.0.0: execa@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" @@ -4676,28 +6027,28 @@ execa@^1.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.0.0, expect@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/expect/-/expect-29.1.2.tgz" - integrity sha512-AuAGn1uxva5YBbBlXb+2JPxJRuemZsmlGcapPXWNSBNsQtAULfjioREGBWuI0EOvYUKjDnrCy8PW5Zlr1md5mw== +expect@^29.0.0, expect@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" + integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== dependencies: - "@jest/expect-utils" "^29.1.2" - jest-get-type "^29.0.0" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + "@jest/expect-utils" "^29.3.1" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" express@^4.17.3: - version "4.18.1" - resolved "https://registry.npmjs.org/express/-/express-4.18.1.tgz" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -4716,7 +6067,7 @@ express@^4.17.3: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -4729,31 +6080,36 @@ express@^4.17.3: ext@^1.1.2: version "1.7.0" - resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: type "^2.7.2" extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.2.7, fast-glob@^3.2.9: +fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -4764,62 +6120,77 @@ fast-glob@^3.2.7, fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-loops@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75" + integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g== + +fast-shallow-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" + integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== + fastest-levenshtein@^1.0.12: version "1.0.16" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== +fastest-stable-stringify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" + integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== + fastq@^1.6.0: version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" faye-websocket@^0.11.3: version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" filter-obj@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -4832,7 +6203,7 @@ finalhandler@1.2.0: find-cache-dir@^3.3.1: version "3.3.2" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" @@ -4841,12 +6212,12 @@ find-cache-dir@^3.3.1: find-root@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -4854,7 +6225,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -4862,7 +6233,7 @@ find-up@^5.0.0: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -4870,17 +6241,17 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== follow-redirects@^1.0.0, follow-redirects@^1.14.8, follow-redirects@~1.15.0: version "1.15.2" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== form-data@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" @@ -4889,17 +6260,17 @@ form-data@^3.0.0: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-extra@10.1.0: version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -4908,17 +6279,17 @@ fs-extra@10.1.0: fs-monkey@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs-readdir-recursive@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: @@ -4928,12 +6299,12 @@ fsevents@^2.3.2, fsevents@~2.3.2: function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.5: version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: call-bind "^1.0.2" @@ -4943,22 +6314,22 @@ function.prototype.name@^1.1.5: functions-have-names@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== fuzzy@0.1.3: version "0.1.3" - resolved "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz" + resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== geotiff@2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/geotiff/-/geotiff-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/geotiff/-/geotiff-2.0.4.tgz#d6f231fdd76186aba21c61823ed759fcbf5d4f86" integrity sha512-aG8h9bJccGusioPsEWsEqx8qdXpZN71A20WCvRKGxcnHSOWLKmC5ZmsAmodfxb9TRQvs+89KikGuPzxchhA+Uw== dependencies: "@petamoriken/float16" "^3.4.7" @@ -4971,12 +6342,12 @@ geotiff@2.0.4: get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: function-bind "^1.1.1" @@ -4985,32 +6356,37 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@ get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stream@^4.0.0: version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.2.0.tgz#ff368dd7104dab47bf923404eb93838245c66543" + integrity sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg== + gitlab@14.2.2: version "14.2.2" - resolved "https://registry.npmjs.org/gitlab/-/gitlab-14.2.2.tgz" + resolved "https://registry.yarnpkg.com/gitlab/-/gitlab-14.2.2.tgz#48eebf49865a6744c2dd33687fc95ed449dd173a" integrity sha512-MVLGXLFk5erJCeDnDtV+srDHogadVV8y94G4mAulukCwdCwh+IUqsU4ESZksZvBis8VTJsK9Mj01lRJ1JrxVsg== dependencies: chalk "^3.0.0" @@ -5025,26 +6401,26 @@ gitlab@14.2.2: glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.1: version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -5056,7 +6432,7 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: glob@~8.0.1: version "8.0.3" - resolved "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" @@ -5067,24 +6443,29 @@ glob@~8.0.1: globals@^11.1.0, globals@^11.12.0: version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.15.0: - version "13.17.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + version "13.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc" + integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== dependencies: type-fest "^0.20.2" globals@^9.18.0: version "9.18.0" - resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + globby@12.2.0: version "12.2.0" - resolved "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== dependencies: array-union "^3.0.1" @@ -5096,7 +6477,7 @@ globby@12.2.0: globby@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -5106,38 +6487,54 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globby@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" + integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.2.11" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^4.0.0" + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + gotrue-js@0.9.29: version "0.9.29" - resolved "https://registry.npmjs.org/gotrue-js/-/gotrue-js-0.9.29.tgz" + resolved "https://registry.yarnpkg.com/gotrue-js/-/gotrue-js-0.9.29.tgz#08e62184d4eaadcd87f95cb6e49e3c4a9742a052" integrity sha512-NSFwJlFfWxHd1zHDitysbh+amFPHBAyQG1YmecZJTaSe8TlC7Wja1ewdUBikfJBblN3SqghS6aViMd+Q/pPzGQ== dependencies: micro-api-client "^3.2.1" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphql-tag@2.12.6: version "2.12.6" - resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: tslib "^2.1.0" graphql@15.8.0: version "15.8.0" - resolved "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== gray-matter@4.0.3: version "4.0.3" - resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== dependencies: js-yaml "^3.13.1" @@ -5147,65 +6544,122 @@ gray-matter@4.0.3: handle-thing@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" has@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hast-util-is-element@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz#fc0b0dc7cef3895e839b8d66979d57b0338c68f3" + integrity sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + +hast-util-sanitize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz#71a02ca2e50d04b852a5500846418070ca364f60" + integrity sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-to-estree@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz#aeac70aad0102ae309570907b3f56a08231d5323" + integrity sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g== + dependencies: + "@types/estree" "^1.0.0" + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + estree-util-attach-comments "^2.0.0" + estree-util-is-identifier-name "^2.0.0" + hast-util-whitespace "^2.0.0" + mdast-util-mdx-expression "^1.0.0" + mdast-util-mdxjs-esm "^1.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.3.0" + unist-util-position "^4.0.0" + zwitch "^2.0.0" + +hast-util-to-html@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz#4e37580872e143ea9ce0dba87918b19e4ea997e3" + integrity sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A== + dependencies: + "@types/hast" "^2.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-is-element "^2.0.0" + hast-util-whitespace "^2.0.0" + html-void-elements "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.2" + unist-util-is "^5.0.0" + +hast-util-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" + integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== + he@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== history@4.10.1: version "4.10.1" - resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" @@ -5215,21 +6669,26 @@ history@4.10.1: tiny-warning "^1.0.0" value-equal "^1.0.1" -hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" hosted-git-info@^2.1.4: version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hotkeys-js@3.9.4: + version "3.9.4" + resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.9.4.tgz#ce1aa4c3a132b6a63a9dd5644fc92b8a9b9cbfb9" + integrity sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q== + hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" @@ -5239,29 +6698,54 @@ hpack.js@^2.1.6: html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" -html-entities@^2.1.0, html-entities@^2.3.2: +html-entities@^2.1.0, html-entities@^2.3.2, html-entities@^2.3.3: version "2.3.3" - resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +html-void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" + integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== + +htmlparser2@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" + integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.3.0" + domutils "^2.4.2" + entities "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== http-errors@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -5272,7 +6756,7 @@ http-errors@2.0.0: http-errors@~1.6.2: version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: depd "~1.1.2" @@ -5282,12 +6766,12 @@ http-errors@~1.6.2: http-parser-js@>=0.5.1: version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-middleware@^2.0.3: version "2.0.6" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" @@ -5298,7 +6782,7 @@ http-proxy-middleware@^2.0.3: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -5307,7 +6791,7 @@ http-proxy@^1.18.1: http-server@14.1.1: version "14.1.1" - resolved "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== dependencies: basic-auth "^2.0.1" @@ -5326,53 +6810,58 @@ http-server@14.1.1: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@0.6.3, iconv-lite@^0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: postcss "^7.0.14" ieee754@^1.1.12, ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.1.9, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + version "5.2.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" + integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== immediate@~3.0.5: version "3.0.6" - resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -immer@9.0.15, immer@^9.0.7: - version "9.0.15" - resolved "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz" - integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== +immer@9.0.16, immer@^9.0.16, immer@^9.0.6: + version "9.0.16" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.16.tgz#8e7caab80118c2b54b37ad43e05758cdefad0198" + integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -5380,7 +6869,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: import-local@^3.0.2: version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -5388,17 +6877,17 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -5406,22 +6895,35 @@ inflight@^1.0.4: inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== +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== + +inline-style-prefixer@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44" + integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg== + dependencies: + css-in-js-utils "^3.1.0" + fast-loops "^1.1.3" + internal-slot@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: get-intrinsic "^1.1.0" @@ -5430,163 +6932,236 @@ internal-slot@^1.0.3: interpret@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +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-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + +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-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" has-tostringtag "^1.0.0" +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-builtin-module@^3.1.0: version "3.2.0" - resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== dependencies: builtin-modules "^3.3.0" -is-callable@^1.1.4, is-callable@^1.2.6: +is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.10.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== +is-core-module@^2.10.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" is-date-object@^1.0.1: version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extendable@^0.1.0: version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 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-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + is-hotkey@0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef" integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw== +is-hotkey@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.8.tgz#6b1f4b2d0e5639934e20c05ed24d623a21d36d25" + integrity sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ== + is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-invalid-path@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-1.0.2.tgz#2f84731559f4936abcf1b227632719cf45c5dc0e" integrity sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +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-obj@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-plain-object@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-reference@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.0.tgz#b1380c03d96ddf7089709781e3208fceb0c92cd6" + integrity sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q== + dependencies: + "@types/estree" "*" + is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -5594,77 +7169,77 @@ is-regex@^1.1.4: is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-typedarray@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -5675,7 +7250,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -5684,7 +7259,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -5693,289 +7268,289 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.5" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz" - integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ== +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== dependencies: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.1.2.tgz" - integrity sha512-ajQOdxY6mT9GtnfJRZBRYS7toNIJayiiyjDyoZcnvPRUPwJ58JX0ci0PKAKUo2C1RyzlHw0jabjLGKksO42JGA== +jest-circus@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a" + integrity sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg== dependencies: - "@jest/environment" "^29.1.2" - "@jest/expect" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.1.2" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-runtime "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" + jest-each "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" p-limit "^3.1.0" - pretty-format "^29.1.2" + pretty-format "^29.3.1" slash "^3.0.0" stack-utils "^2.0.3" jest-cli@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.1.2.tgz" - integrity sha512-vsvBfQ7oS2o4MJdAH+4u9z76Vw5Q8WBQF5MchDbkylNknZdrPTX1Ix7YRJyTlOWqRaS7ue/cEAn+E4V1MWyMzw== + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d" + integrity sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ== dependencies: - "@jest/core" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/core" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-config "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.1.2.tgz" - integrity sha512-EC3Zi86HJUOz+2YWQcJYQXlf0zuBhJoeyxLM6vb6qJsVmpP7KcCP1JnyF0iaqTaXdBP8Rlwsvs7hnKWQWWLwwA== +jest-config@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6" + integrity sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.1.2" - "@jest/types" "^29.1.2" - babel-jest "^29.1.2" + "@jest/test-sequencer" "^29.3.1" + "@jest/types" "^29.3.1" + babel-jest "^29.3.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.1.2" - jest-environment-node "^29.1.2" - jest-get-type "^29.0.0" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-runner "^29.1.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-circus "^29.3.1" + jest-environment-node "^29.3.1" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-runner "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.1.2" + pretty-format "^29.3.1" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.1.2.tgz" - integrity sha512-4GQts0aUopVvecIT4IwD/7xsBaMhKTYoM4/njE/aVw9wpw+pIUVp8Vab/KnSzSilr84GnLBkaP3JLDnQYCKqVQ== +jest-diff@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" + integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== dependencies: chalk "^4.0.0" - diff-sequences "^29.0.0" - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + diff-sequences "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-docblock@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz" - integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw== +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== dependencies: detect-newline "^3.0.0" -jest-each@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.1.2.tgz" - integrity sha512-AmTQp9b2etNeEwMyr4jc0Ql/LIX/dhbgP21gHAizya2X6rUspHn2gysMXaj6iwWuOJ2sYRgP8c1P4cXswgvS1A== +jest-each@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132" + integrity sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" chalk "^4.0.0" - jest-get-type "^29.0.0" - jest-util "^29.1.2" - pretty-format "^29.1.2" + jest-get-type "^29.2.0" + jest-util "^29.3.1" + pretty-format "^29.3.1" -jest-environment-node@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.1.2.tgz" - integrity sha512-C59yVbdpY8682u6k/lh8SUMDJPbOyCHOTgLVVi1USWFxtNV+J8fyIwzkg+RJIVI30EKhKiAGNxYaFr3z6eyNhQ== +jest-environment-node@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.3.1.tgz#5023b32472b3fba91db5c799a0d5624ad4803e74" + integrity sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-mock "^29.1.2" - jest-util "^29.1.2" + jest-mock "^29.3.1" + jest-util "^29.3.1" -jest-get-type@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz" - integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== -jest-haste-map@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.1.2.tgz" - integrity sha512-xSjbY8/BF11Jh3hGSPfYTa/qBFrm3TPM7WU8pU93m2gqzORVLkHFWvuZmFsTEBPRKndfewXhMOuzJNHyJIZGsw== +jest-haste-map@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843" + integrity sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^29.0.0" - jest-util "^29.1.2" - jest-worker "^29.1.2" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" + jest-worker "^29.3.1" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.1.2.tgz" - integrity sha512-TG5gAZJpgmZtjb6oWxBLf2N6CfQ73iwCe6cofu/Uqv9iiAm6g502CAnGtxQaTfpHECBdVEMRBhomSXeLnoKjiQ== +jest-leak-detector@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518" + integrity sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA== dependencies: - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-matcher-utils@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.1.2.tgz" - integrity sha512-MV5XrD3qYSW2zZSHRRceFzqJ39B2z11Qv0KPyZYxnzDHFeYZGJlgGi0SW+IXSJfOewgJp/Km/7lpcFT+cgZypw== +jest-matcher-utils@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" + integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== dependencies: chalk "^4.0.0" - jest-diff "^29.1.2" - jest-get-type "^29.0.0" - pretty-format "^29.1.2" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-message-util@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.1.2.tgz" - integrity sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ== +jest-message-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" + integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.1.2" + pretty-format "^29.3.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.1.2.tgz" - integrity sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA== +jest-mock@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" + integrity sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-util "^29.1.2" + jest-util "^29.3.1" jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^29.0.0: - version "29.0.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz" - integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug== +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.1.2.tgz" - integrity sha512-44yYi+yHqNmH3OoWZvPgmeeiwKxhKV/0CfrzaKLSkZG9gT973PX8i+m8j6pDrTYhhHoiKfF3YUFg/6AeuHw4HQ== +jest-resolve-dependencies@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf" + integrity sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA== dependencies: - jest-regex-util "^29.0.0" - jest-snapshot "^29.1.2" + jest-regex-util "^29.2.0" + jest-snapshot "^29.3.1" -jest-resolve@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.1.2.tgz" - integrity sha512-7fcOr+k7UYSVRJYhSmJHIid3AnDBcLQX3VmT9OSbPWsWz1MfT7bcoerMhADKGvKCoMpOHUQaDHtQoNp/P9JMGg== +jest-resolve@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7" + integrity sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" + jest-haste-map "^29.3.1" jest-pnp-resolver "^1.2.2" - jest-util "^29.1.2" - jest-validate "^29.1.2" + jest-util "^29.3.1" + jest-validate "^29.3.1" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.1.2.tgz" - integrity sha512-yy3LEWw8KuBCmg7sCGDIqKwJlULBuNIQa2eFSVgVASWdXbMYZ9H/X0tnXt70XFoGf92W2sOQDOIFAA6f2BG04Q== +jest-runner@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d" + integrity sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA== dependencies: - "@jest/console" "^29.1.2" - "@jest/environment" "^29.1.2" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/console" "^29.3.1" + "@jest/environment" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.10.2" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.0.0" - jest-environment-node "^29.1.2" - jest-haste-map "^29.1.2" - jest-leak-detector "^29.1.2" - jest-message-util "^29.1.2" - jest-resolve "^29.1.2" - jest-runtime "^29.1.2" - jest-util "^29.1.2" - jest-watcher "^29.1.2" - jest-worker "^29.1.2" + jest-docblock "^29.2.0" + jest-environment-node "^29.3.1" + jest-haste-map "^29.3.1" + jest-leak-detector "^29.3.1" + jest-message-util "^29.3.1" + jest-resolve "^29.3.1" + jest-runtime "^29.3.1" + jest-util "^29.3.1" + jest-watcher "^29.3.1" + jest-worker "^29.3.1" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.1.2.tgz" - integrity sha512-jr8VJLIf+cYc+8hbrpt412n5jX3tiXmpPSYTGnwcvNemY+EOuLNiYnHJ3Kp25rkaAcTWOEI4ZdOIQcwYcXIAZw== +jest-runtime@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a" + integrity sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A== dependencies: - "@jest/environment" "^29.1.2" - "@jest/fake-timers" "^29.1.2" - "@jest/globals" "^29.1.2" - "@jest/source-map" "^29.0.0" - "@jest/test-result" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/globals" "^29.3.1" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.1.2" - jest-message-util "^29.1.2" - jest-mock "^29.1.2" - jest-regex-util "^29.0.0" - jest-resolve "^29.1.2" - jest-snapshot "^29.1.2" - jest-util "^29.1.2" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.1.2.tgz" - integrity sha512-rYFomGpVMdBlfwTYxkUp3sjD6usptvZcONFYNqVlaz4EpHPnDvlWjvmOQ9OCSNKqYZqLM2aS3wq01tWujLg7gg== +jest-snapshot@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e" + integrity sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -5983,85 +7558,85 @@ jest-snapshot@^29.1.2: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.1.2" - "@jest/transform" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/expect-utils" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.1.2" + expect "^29.3.1" graceful-fs "^4.2.9" - jest-diff "^29.1.2" - jest-get-type "^29.0.0" - jest-haste-map "^29.1.2" - jest-matcher-utils "^29.1.2" - jest-message-util "^29.1.2" - jest-util "^29.1.2" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" natural-compare "^1.4.0" - pretty-format "^29.1.2" + pretty-format "^29.3.1" semver "^7.3.5" -jest-util@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz" - integrity sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ== +jest-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" + integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.1.2.tgz" - integrity sha512-k71pOslNlV8fVyI+mEySy2pq9KdXdgZtm7NHrBX8LghJayc3wWZH0Yr0mtYNGaCU4F1OLPXRkwZR0dBm/ClshA== +jest-validate@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a" + integrity sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g== dependencies: - "@jest/types" "^29.1.2" + "@jest/types" "^29.3.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.0.0" + jest-get-type "^29.2.0" leven "^3.1.0" - pretty-format "^29.1.2" + pretty-format "^29.3.1" -jest-watcher@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.1.2.tgz" - integrity sha512-6JUIUKVdAvcxC6bM8/dMgqY2N4lbT+jZVsxh0hCJRbwkIEnbr/aPjMQ28fNDI5lB51Klh00MWZZeVf27KBUj5w== +jest-watcher@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a" + integrity sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg== dependencies: - "@jest/test-result" "^29.1.2" - "@jest/types" "^29.1.2" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^29.1.2" + emittery "^0.13.1" + jest-util "^29.3.1" string-length "^4.0.1" jest-worker@^27.4.5: version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.1.2.tgz" - integrity sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA== +jest-worker@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b" + integrity sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw== dependencies: "@types/node" "*" - jest-util "^29.1.2" + jest-util "^29.3.1" merge-stream "^2.0.0" supports-color "^8.0.0" jest@29.1.2: version "29.1.2" - resolved "https://registry.npmjs.org/jest/-/jest-29.1.2.tgz" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.1.2.tgz#f821a1695ffd6cd0efc3b59d2dfcc70a98582499" integrity sha512-5wEIPpCezgORnqf+rCaYD1SK+mNN7NsstWzIsuvsnrhR/hSxXWd82oI7DkrbJ+XTD28/eG8SmxdGvukrGGK6Tw== dependencies: "@jest/core" "^29.1.2" @@ -6069,46 +7644,66 @@ jest@29.1.2: import-local "^3.0.2" jest-cli "^29.1.2" +jotai@^1.7.2: + version "1.11.0" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.11.0.tgz#d2a666f16935797743eb41a3b75583ea4e17fefb" + integrity sha512-8OzJmRxcTZoAOJSz6uTnmofmjAOgNOdAOy26rvyw3OBxt6XIoklNnfUTCm8wgp84SSLJbPZA01VS5O/SUz+QYg== + jquery@^3.6.0: version "3.6.1" - resolved "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16" integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== -js-base64@*, js-base64@3.7.2: +js-base64@*: + version "3.7.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.3.tgz#2e784bb0851636bf1e99ef12e4f3a8a8c9b7639f" + integrity sha512-PAr6Xg2jvd7MCR6Ld9Jg3BmTcjYsHEBx1VlwEwULb/qowPf5VD9kEMagj23Gm7JRnSvE/Da/57nChZjnvL8v6A== + +js-base64@3.7.2: version "3.7.2" - resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745" integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ== +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + js-sdsl@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz" - integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== js-sha256@0.9.0: version "0.9.0" - resolved "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-tokens@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== +js-video-url-parser@0.5.1, js-video-url-parser@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/js-video-url-parser/-/js-video-url-parser-0.5.1.tgz#78fea9bf6944b538276af9658833e48a83054909" + integrity sha512-/vwqT67k0AyIGMHAvSOt+n4JfrZWF7cPKgKswDO35yr27GfW4HtjpQVlTx6JLF45QuPm8mkzFHkZgFVnFm4x/w== + js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -6116,47 +7711,47 @@ js-yaml@^3.13.1: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-parse-better-errors@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-pretty-compact@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ== json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.1: @@ -6168,12 +7763,12 @@ json5@^1.0.1: json5@^2.1.2, json5@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -6182,30 +7777,46 @@ jsonfile@^6.0.1: "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.3" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: array-includes "^3.1.5" object.assign "^4.1.3" +juice@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/juice/-/juice-8.1.0.tgz#4ea23362522fe06418229943237ee3751a4fca70" + integrity sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA== + dependencies: + cheerio "1.0.0-rc.10" + commander "^6.1.0" + mensch "^0.3.4" + slick "^1.12.2" + web-resource-inliner "^6.0.1" + jwt-decode@3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + ky-universal@^0.3.0: version "0.3.0" - resolved "https://registry.npmjs.org/ky-universal/-/ky-universal-0.3.0.tgz" + resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.3.0.tgz#3fcbb0dd03da39b5f05100d9362a630d5e1d402e" integrity sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A== dependencies: abort-controller "^3.0.0" @@ -6213,22 +7824,22 @@ ky-universal@^0.3.0: ky@^0.16.0: version "0.16.2" - resolved "https://registry.npmjs.org/ky/-/ky-0.16.2.tgz" + resolved "https://registry.yarnpkg.com/ky/-/ky-0.16.2.tgz#e3652262ab659b27780dd025d1524e40572034a8" integrity sha512-4/Xcb0hqeueNX9sa+G2jREiam9yb+I2Y3p3J42lIeitAenHXUZwpyejEgeQcQsaGl+hbuA0s7c3u+nlcIYFtog== lerc@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/lerc/-/lerc-3.0.0.tgz#36f36fbd4ba46f0abf4833799fff2e7d6865f5cb" integrity sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww== leven@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -6236,24 +7847,24 @@ levn@^0.4.1: li@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/li/-/li-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b" integrity sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw== lie@3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== dependencies: immediate "~3.0.5" lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== load-json-file@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" @@ -6263,7 +7874,7 @@ load-json-file@^4.0.0: loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^1.0.0, loader-utils@^1.2.3: @@ -6275,16 +7886,7 @@ loader-utils@^1.0.0, loader-utils@^1.2.3: emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^2.0.4: +loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -6295,99 +7897,104 @@ loader-utils@^2.0.4: localforage@1.10.0: version "1.10.0" - resolved "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== dependencies: lie "3.1.1" locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash-es@^4.17.15: version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== lodash.clonedeep@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.get@^4.4.2: version "4.4.2" - resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.set@^4.3.2: version "4.3.2" - resolved "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== lodash.uniq@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@4.17.21, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== dependencies: chalk "^2.4.2" +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" macos-release@^2.2.0: version "2.5.0" - resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== make-dir@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" @@ -6395,93 +8002,671 @@ make-dir@^2.1.0: make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" makeerror@1.0.12: version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" mapbox-to-css-font@^2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz" + resolved "https://registry.yarnpkg.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz#41bf38faed36b7dab069828aa3654e4bd91a1eda" integrity sha512-QQ/iKiM43DM9+aujTL45Iz5o7gDeSFmy4LPl3HZmNcwCE++NxGazf+yFpY+wCb+YS23sDa1ghpo3zrNFOcHlow== +markdown-extensions@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" + integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== + +markdown-table@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" + integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== + material-colors@^1.2.1: version "1.2.6" - resolved "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== +mdast-util-definitions@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db" + integrity sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +mdast-util-find-and-replace@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz#249901ef43c5f41d6e8a8d446b3b63b17e592d7c" + integrity sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw== + dependencies: + escape-string-regexp "^5.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" + integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-gfm-autolink-literal@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz#4032dcbaddaef7d4f2f3768ed830475bb22d3970" + integrity sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg== + dependencies: + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-find-and-replace "^2.0.0" + micromark-util-character "^1.0.0" + +mdast-util-gfm-footnote@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" + integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + micromark-util-normalize-identifier "^1.0.0" + +mdast-util-gfm-strikethrough@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.2.tgz#6b4fa4ae37d449ccb988192ac0afbb2710ffcefd" + integrity sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-table@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz#184e900979fe790745fc3dabf77a4114595fcd7f" + integrity sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag== + dependencies: + "@types/mdast" "^3.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-task-list-item@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" + integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz#16fcf70110ae689a06d77e8f4e346223b64a0ea6" + integrity sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ== + dependencies: + mdast-util-from-markdown "^1.0.0" + mdast-util-gfm-autolink-literal "^1.0.0" + mdast-util-gfm-footnote "^1.0.0" + mdast-util-gfm-strikethrough "^1.0.0" + mdast-util-gfm-table "^1.0.0" + mdast-util-gfm-task-list-item "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-mdx-expression@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz#2224cf0b5b150093704a3c225bd529d2de21f50f" + integrity sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-mdx-jsx@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz#029f5a9c38485dbb5cf482059557ee7d788f1947" + integrity sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-to-markdown "^1.3.0" + parse-entities "^4.0.0" + stringify-entities "^4.0.0" + unist-util-remove-position "^4.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + +mdast-util-mdx@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz#dd4f6c993cf27da32725e50a04874f595b7b63fb" + integrity sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw== + dependencies: + mdast-util-mdx-expression "^1.0.0" + mdast-util-mdx-jsx "^2.0.0" + mdast-util-mdxjs-esm "^1.0.0" + +mdast-util-mdxjs-esm@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz#137345ef827169aeeeb6069277cd3e090830ce9a" + integrity sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g== + dependencies: + "@types/estree-jsx" "^1.0.0" + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-to-hast@^12.0.0, mdast-util-to-hast@^12.1.0: + version "12.2.4" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz#34c1ef2b6cf01c27b3e3504e2c977c76f722e7e1" + integrity sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-definitions "^5.0.0" + micromark-util-sanitize-uri "^1.1.0" + trim-lines "^3.0.0" + unist-builder "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" + integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + longest-streak "^3.0.0" + mdast-util-to-string "^3.0.0" + micromark-util-decode-string "^1.0.0" + unist-util-visit "^4.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" + integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== + mdn-data@2.0.14: version "2.0.14" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== mdn-data@2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== mdurl@~1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.4.3: - version "3.4.7" - resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz" - integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw== + version "3.4.12" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.12.tgz#d00f8ad8dab132dc277c659dc85bfd14b07d03bd" + integrity sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw== dependencies: fs-monkey "^1.0.3" "memoize-one@>=3.1.1 <6": version "5.2.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== +mensch@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" + integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== + merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micro-api-client@^3.2.1: version "3.3.0" - resolved "https://registry.npmjs.org/micro-api-client/-/micro-api-client-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/micro-api-client/-/micro-api-client-3.3.0.tgz#52dd567d322f10faffe63d19d4feeac4e4ffd215" integrity sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg== +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-extension-gfm-autolink-literal@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" + integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-footnote@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" + integrity sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-strikethrough@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" + integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-table@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" + integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-tagfilter@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" + integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-gfm-task-list-item@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" + integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2" + integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA== + dependencies: + micromark-extension-gfm-autolink-literal "^1.0.0" + micromark-extension-gfm-footnote "^1.0.0" + micromark-extension-gfm-strikethrough "^1.0.0" + micromark-extension-gfm-table "^1.0.0" + micromark-extension-gfm-tagfilter "^1.0.0" + micromark-extension-gfm-task-list-item "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-extension-mdx-expression@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa" + integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA== + dependencies: + micromark-factory-mdx-expression "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-events-to-acorn "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-mdx-jsx@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#9f196be5f65eb09d2a49b237a7b3398bba2999be" + integrity sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA== + dependencies: + "@types/acorn" "^4.0.0" + estree-util-is-identifier-name "^2.0.0" + micromark-factory-mdx-expression "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + vfile-message "^3.0.0" + +micromark-extension-mdx-md@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz#382f5df9ee3706dd120b51782a211f31f4760d22" + integrity sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-mdxjs-esm@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz#630d9dc9db2c2fd470cac8c1e7a824851267404d" + integrity sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-events-to-acorn "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-position-from-estree "^1.1.0" + uvu "^0.5.0" + vfile-message "^3.0.0" + +micromark-extension-mdxjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz#772644e12fc8299a33e50f59c5aa15727f6689dd" + integrity sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ== + dependencies: + acorn "^8.0.0" + acorn-jsx "^5.0.0" + micromark-extension-mdx-expression "^1.0.0" + micromark-extension-mdx-jsx "^1.0.0" + micromark-extension-mdx-md "^1.0.0" + micromark-extension-mdxjs-esm "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-mdx-expression@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz#917e17d16e6e9c2551f3a862e6a9ebdd22056476" + integrity sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-events-to-acorn "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-position-from-estree "^1.0.0" + uvu "^0.5.0" + vfile-message "^3.0.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-events-to-acorn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz#65785cb77299d791bfefdc6a5213ab57ceead115" + integrity sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw== + dependencies: + "@types/acorn" "^4.0.0" + "@types/estree" "^1.0.0" + estree-util-visit "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + vfile-location "^4.0.0" + vfile-message "^3.0.0" + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz#f12e07a85106b902645e0364feb07cf253a85aee" + integrity sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.1.0.tgz#eeba0fe0ac1c9aaef675157b52c166f125e89f62" + integrity sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -6489,34 +8674,39 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0, mime@^1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.4.6: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== minimalistic-assert@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimatch@3.0.5: @@ -6528,38 +8718,33 @@ minimatch@3.0.5: minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" + integrity sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g== dependencies: brace-expansion "^2.0.1" -minimist@>=1.2.2, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.2.0: +minimist@>=1.2.2, minimist@^1.2.0, minimist@^1.2.6: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== mkdirp@^0.5.6, mkdirp@~0.5.1: version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" mockserver-client@5.14.0: version "5.14.0" - resolved "https://registry.npmjs.org/mockserver-client/-/mockserver-client-5.14.0.tgz" + resolved "https://registry.yarnpkg.com/mockserver-client/-/mockserver-client-5.14.0.tgz#5c868585d9b96a1c13fcb6f9f2a6d3e78de5d314" integrity sha512-LE8Eyw4S96tYtpmhUswN4L1e7kluPymHUqcN29TPTuLPMqeKiNGKyUIV7rWZMvqtPK5kxz0vohygswCXN8F6SQ== dependencies: browser-or-node "~2.0.0" @@ -6568,7 +8753,7 @@ mockserver-client@5.14.0: mockserver-node@5.14.0: version "5.14.0" - resolved "https://registry.npmjs.org/mockserver-node/-/mockserver-node-5.14.0.tgz" + resolved "https://registry.yarnpkg.com/mockserver-node/-/mockserver-node-5.14.0.tgz#d121d92177d6ab63bb162ccee712aa5063ac9ad6" integrity sha512-cwpryIjHJ9+xgRDaEiMDZW41prmGz3E+HRCOUCXL2qI9ZK+mHmM5hHdzKIldFlj2l0yXc45GeyI/FmD0gMK9zg== dependencies: follow-redirects "~1.15.0" @@ -6577,27 +8762,32 @@ mockserver-node@5.14.0: moment@2.29.4: version "2.29.4" - resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3, ms@^2.1.1: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multicast-dns@^7.2.5: version "7.2.5" - resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" @@ -6605,47 +8795,61 @@ multicast-dns@^7.2.5: mute-stream@0.0.8: version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +nano-css@^5.3.1: + version "5.3.5" + resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.5.tgz#3075ea29ffdeb0c7cb6d25edb21d8f7fa8e8fe8e" + integrity sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg== + dependencies: + css-tree "^1.1.2" + csstype "^3.0.6" + fastest-stable-stringify "^2.0.2" + inline-style-prefixer "^6.0.0" + rtl-css-js "^1.14.0" + sourcemap-codec "^1.4.8" + stacktrace-js "^2.0.2" + stylis "^4.0.6" + nanoid@^3.3.4: version "3.3.4" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== ncp@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== negotiator@0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== next-tick@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nock@13.2.9: version "13.2.9" - resolved "https://registry.npmjs.org/nock/-/nock-13.2.9.tgz" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.9.tgz#4faf6c28175d36044da4cfa68e33e5a15086ad4c" integrity sha512-1+XfJNYF1cjGB+TKMWi29eZ0b82QOvQs2YoLNzbpWGqFMtRQHTa57osqdGj4FrFPgkO4D4AZinzUJR9VvW3QUA== dependencies: debug "^4.1.0" @@ -6655,29 +8859,29 @@ nock@13.2.9: node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.7: version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" node-forge@^1: version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-gyp-build@^4.3.0: version "4.5.0" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-polyglot@2.4.2: version "2.4.2" - resolved "https://registry.npmjs.org/node-polyglot/-/node-polyglot-2.4.2.tgz" + resolved "https://registry.yarnpkg.com/node-polyglot/-/node-polyglot-2.4.2.tgz#e4876e6710b70dc00b1351a9a68de4af47a5d61d" integrity sha512-AgTVpQ32BQ5XPI+tFHJ9bCYxWwSLvtmEodX8ooftFhEuyCgBG6ijWulIVb7pH3THigtgvc9uLiPn0IO51KHpkg== dependencies: array.prototype.foreach "^1.0.0" @@ -6688,12 +8892,12 @@ node-polyglot@2.4.2: node-releases@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -6703,12 +8907,12 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-all@4.1.5: version "4.1.5" - resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz" + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== dependencies: ansi-styles "^3.2.1" @@ -6723,50 +8927,50 @@ npm-run-all@4.1.5: npm-run-path@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" nth-check@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.12.2, object-inspect@^1.9.0: version "1.12.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: call-bind "^1.0.2" @@ -6775,63 +8979,63 @@ object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: object-keys "^1.1.1" object.entries@^1.1.4, object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" object.getownpropertydescriptors@^2.1.0: - version "2.1.4" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== + version "2.1.5" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== dependencies: - array.prototype.reduce "^1.0.4" + array.prototype.reduce "^1.0.5" call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.20.1" + es-abstract "^1.20.4" object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" object.values@^1.1.0, object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== octokit-pagination-methods@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== ol-mapbox-style@^8.0.5: version "8.2.1" - resolved "https://registry.npmjs.org/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz" + resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-8.2.1.tgz#0f0c252b6495853a137d7e4dd3f915fab664b356" integrity sha512-3kBBuZC627vDL8vnUdfVbCbfkhkcZj2kXPHQcuLhC4JJEA+XkEVEtEde8x8+AZctRbHwBkSiubTPaRukgLxIRw== dependencies: "@mapbox/mapbox-gl-style-spec" "^13.23.1" @@ -6839,7 +9043,7 @@ ol-mapbox-style@^8.0.5: ol@6.15.1: version "6.15.1" - resolved "https://registry.npmjs.org/ol/-/ol-6.15.1.tgz" + resolved "https://registry.yarnpkg.com/ol/-/ol-6.15.1.tgz#364f459939ef71f970b2376a821a896529f65e3a" integrity sha512-ZG2CKTpJ8Q+tPywYysVwPk+yevwJzlbwjRKhoCvd7kLVWMbfBl1O/+Kg/yrZZrhG9FNXbFH4GeOZ5yVRqo3P4w== dependencies: geotiff "2.0.4" @@ -6849,33 +9053,33 @@ ol@6.15.1: on-finished@2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -open@^8.0.9: +open@^8.0.9, open@^8.4.0: version "8.4.0" - resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" @@ -6884,12 +9088,12 @@ open@^8.0.9: opener@^1.5.1: version "1.5.2" - resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== optionator@^0.9.1: version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -6901,7 +9105,7 @@ optionator@^0.9.1: ora@^4.0.3: version "4.1.1" - resolved "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== dependencies: chalk "^3.0.0" @@ -6913,14 +9117,9 @@ ora@^4.0.3: strip-ansi "^6.0.0" wcwidth "^1.0.1" -orderedmap@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.0.tgz" - integrity sha512-/pIFexOm6S70EPdznemIz3BQZoJ4VTFrhqzu0ACBqBgeLsLxq8e6Jim63ImIfwW/zAD1AlXpRMlOv3aghmo4dA== - os-name@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== dependencies: macos-release "^2.2.0" @@ -6928,40 +9127,40 @@ os-name@^3.1.0: p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-retry@^4.5.0: version "4.6.2" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" @@ -6969,29 +9168,60 @@ p-retry@^4.5.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/pako/-/pako-2.0.4.tgz" - integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +papaparse@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.2.tgz#d1abed498a0ee299f103130a6109720404fbd467" + integrity sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + 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-entities@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb" + integrity sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ== + dependencies: + "@types/unist" "^2.0.0" + character-entities "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + parse-headers@^2.0.2: version "2.0.5" - resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" @@ -6999,7 +9229,7 @@ parse-json@^4.0.0: parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -7007,121 +9237,146 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== path-browserify@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbf@3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz" + resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== dependencies: ieee754 "^1.1.12" resolve-protobuf-schema "^2.1.0" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +periscopic@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1" + integrity sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg== + dependencies: + estree-walker "^3.0.0" + is-reference "^3.0.0" + picocolors@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.3.0: version "0.3.1" - resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== pify@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pirates@^4.0.4: version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pluralize@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== pop-iterate@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/pop-iterate/-/pop-iterate-1.0.1.tgz#ceacfdab4abf353d7a0f2aaa2c1fc7b3f9413ba3" integrity sha512-HRCx4+KJE30JhX84wBN4+vja9bNfysxg1y28l0DuJmkoaICiv2ZSilKddbS48pq50P8d2erAhqDLbp47yv3MbQ== portfinder@^1.0.28: version "1.0.32" - resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== dependencies: async "^2.6.4" @@ -7130,14 +9385,14 @@ portfinder@^1.0.28: postcss-modules-extract-imports@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: postcss "^7.0.5" postcss-modules-local-by-default@^3.0.2: version "3.0.3" - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== dependencies: icss-utils "^4.1.1" @@ -7147,7 +9402,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-modules-scope@^2.2.0: version "2.2.0" - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" @@ -7155,7 +9410,7 @@ postcss-modules-scope@^2.2.0: postcss-modules-values@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: icss-utils "^4.0.0" @@ -7163,25 +9418,25 @@ postcss-modules-values@^3.0.0: postcss-scss@4.0.5: version "4.0.5" - resolved "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.5.tgz#8ee33c1dda8d9d4753b565ec79014803dc6edabf" integrity sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA== postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.10" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.1.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@8.4.16: version "8.4.16" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== dependencies: nanoid "^3.3.4" @@ -7190,7 +9445,7 @@ postcss@8.4.16: postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: picocolors "^0.2.1" @@ -7198,43 +9453,48 @@ postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" prettier@2.7.1: version "2.7.1" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -pretty-format@^29.0.0, pretty-format@^29.1.2: - version "29.1.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz" - integrity sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg== +pretty-format@^29.0.0, pretty-format@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" + integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== dependencies: "@jest/schemas" "^29.0.0" ansi-styles "^5.0.0" react-is "^18.0.0" +prismjs@^1.25.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@0.11.10: version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prompts@^2.0.1: version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -7242,7 +9502,7 @@ prompts@^2.0.1: prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -7251,90 +9511,35 @@ prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, propagate@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== -prosemirror-commands@^1.1.9: - version "1.3.1" - resolved "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.3.1.tgz" - integrity sha512-XTporPgoECkOQACVw0JTe3RZGi+fls3/byqt+tXwGTkD7qLuB4KdVrJamDMJf4kfKga3uB8hZ+kUUyZ5oWpnfg== - dependencies: - prosemirror-model "^1.0.0" - prosemirror-state "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-history@^1.1.3: - version "1.3.0" - resolved "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.3.0.tgz" - integrity sha512-qo/9Wn4B/Bq89/YD+eNWFbAytu6dmIM85EhID+fz9Jcl9+DfGEo8TTSrRhP15+fFEoaPqpHSxlvSzSEbmlxlUA== - dependencies: - prosemirror-state "^1.2.2" - prosemirror-transform "^1.0.0" - rope-sequence "^1.3.0" - -prosemirror-inputrules@^1.1.3: - version "1.2.0" - resolved "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.2.0.tgz" - integrity sha512-eAW/M/NTSSzpCOxfR8Abw6OagdG0MiDAiWHQMQveIsZtoKVYzm0AflSPq/ymqJd56/Su1YPbwy9lM13wgHOFmQ== - dependencies: - prosemirror-state "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-keymap@^1.1.4: - version "1.2.0" - resolved "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.0.tgz" - integrity sha512-TdSfu+YyLDd54ufN/ZeD1VtBRYpgZnTPnnbY+4R08DDgs84KrIPEPbJL8t1Lm2dkljFx6xeBE26YWH3aIzkPKg== - dependencies: - prosemirror-state "^1.0.0" - w3c-keyname "^2.2.0" - -prosemirror-model@^1.0.0, prosemirror-model@^1.14.1, prosemirror-model@^1.16.0: - version "1.18.1" - resolved "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.18.1.tgz" - integrity sha512-IxSVBKAEMjD7s3n8cgtwMlxAXZrC7Mlag7zYsAKDndAqnDScvSmp/UdnRTV/B33lTCVU3CCm7dyAn/rVVD0mcw== - dependencies: - orderedmap "^2.0.0" - -prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.4: - version "1.4.1" - resolved "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.1.tgz" - integrity sha512-U/LBDW2gNmVa07sz/D229XigSdDQ5CLFwVB1Vb32MJbAHHhWe/6pOc721faI17tqw4pZ49i1xfY/jEZ9tbIhPg== - dependencies: - prosemirror-model "^1.0.0" - prosemirror-transform "^1.0.0" - -prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0: - version "1.7.0" - resolved "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.7.0.tgz" - integrity sha512-O4T697Cqilw06Zvc3Wm+e237R6eZtJL/xGMliCi+Uo8VL6qHk6afz1qq0zNjT3eZMuYwnP8ZS0+YxX/tfcE9TQ== - dependencies: - prosemirror-model "^1.0.0" - -prosemirror-view@^1.18.7: - version "1.28.3" - resolved "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.28.3.tgz" - integrity sha512-YnJxLRzIaCNEt3VKiy+PBxtpwsCbjrfiBKIgHJeqbKhdeP8bU2qL4ngdGmxp9K4+06cZG5bE9vipuhP+KUl+BQ== - dependencies: - prosemirror-model "^1.16.0" - prosemirror-state "^1.0.0" - prosemirror-transform "^1.1.0" +property-information@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.2.0.tgz#b74f522c31c097b5149e3c3cb8d7f3defd986a1d" + integrity sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg== protocol-buffers-schema@^3.3.1: version "3.6.0" - resolved "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-compare@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.3.0.tgz#ac9633ae52918ff9c9fcc54dfe6316c7a02d20ee" + integrity sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ== + pump@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -7342,45 +9547,38 @@ pump@^3.0.0: punycode@1.3.2: version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@^2.1.0: version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== q@^1.1.2: version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== q@~2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/q/-/q-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/q/-/q-2.0.3.tgz#75b8db0255a1a5af82f58c3f3aaa1efec7d0d134" integrity sha512-gv6vLGcmAOg96/fgo3d9tvA4dJNZL3fMyBqVRrGxQ+Q/o4k9QzbJ3NQF9cOO/71wRodoXhaPgphvMFU68qVAJQ== dependencies: asap "^2.0.0" pop-iterate "^1.0.1" weak-map "^1.0.5" -qs@6.10.3: - version "6.10.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@^6.4.0: +qs@6.11.0, qs@^6.4.0: version "6.11.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" query-string@^6.9.0: version "6.14.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== dependencies: decode-uri-component "^0.2.0" @@ -7390,34 +9588,41 @@ query-string@^6.9.0: querystring@0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quickselect@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -7427,19 +9632,19 @@ raw-body@2.5.1: rbush@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== dependencies: quickselect "^2.0.0" -react-codemirror2@7.2.1: - version "7.2.1" - resolved "https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-7.2.1.tgz" - integrity sha512-t7YFmz1AXdlImgHXA9Ja0T6AWuopilub24jRaQdPVbzUJVNKIYuy3uCFZYa7CE5S3UW6SrSa5nAqVQvtzRF9gw== +re-resizable@^6.9.9: + version "6.9.9" + resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.9.tgz#99e8b31c67a62115dc9c5394b7e55892265be216" + integrity sha512-l+MBlKZffv/SicxDySKEEh42hR6m5bAHfNu3Tvxks2c4Ah+ldnWjfnVRwxo/nxF27SsUsxDS0raAzFuJNKABXA== react-color@2.19.3: version "2.19.3" - resolved "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== dependencies: "@icons/material" "^0.2.4" @@ -7450,27 +9655,27 @@ react-color@2.19.3: reactcss "^1.2.0" tinycolor2 "^1.4.1" -react-dnd-html5-backend@14.1.0: - version "14.1.0" - resolved "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-14.1.0.tgz" - integrity sha512-6ONeqEC3XKVf4eVmMTe0oPds+c5B9Foyj8p/ZKLb7kL2qh9COYxiBHv3szd6gztqi/efkmriywLUVlPotqoJyw== +react-dnd-html5-backend@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz#87faef15845d512a23b3c08d29ecfd34871688b6" + integrity sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw== dependencies: - dnd-core "14.0.1" + dnd-core "^16.0.1" -react-dnd@14.0.5: - version "14.0.5" - resolved "https://registry.npmjs.org/react-dnd/-/react-dnd-14.0.5.tgz" - integrity sha512-9i1jSgbyVw0ELlEVt/NkCUkxy1hmhJOkePoCH713u75vzHGyXhPDm28oLfc2NMSBjZRM1Y+wRjHXJT3sPrTy+A== +react-dnd@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-16.0.1.tgz#2442a3ec67892c60d40a1559eef45498ba26fa37" + integrity sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q== dependencies: - "@react-dnd/invariant" "^2.0.0" - "@react-dnd/shallowequal" "^2.0.0" - dnd-core "14.0.1" + "@react-dnd/invariant" "^4.0.1" + "@react-dnd/shallowequal" "^4.0.1" + dnd-core "^16.0.1" fast-deep-equal "^3.1.3" hoist-non-react-statics "^3.3.2" react-dom@18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" @@ -7478,31 +9683,43 @@ react-dom@18.2.0: react-frame-component@5.2.3: version "5.2.3" - resolved "https://registry.npmjs.org/react-frame-component/-/react-frame-component-5.2.3.tgz" + resolved "https://registry.yarnpkg.com/react-frame-component/-/react-frame-component-5.2.3.tgz#2d5d1e29b23d5b915c839b44980d03bb9cafc453" integrity sha512-r+h0o3r/uqOLNT724z4CRVkxQouKJvoi3OPfjqWACD30Y87rtEmeJrNZf1WYPGknn1Y8200HAjx7hY/dPUGgmA== +react-hotkeys-hook@^3.4.6: + version "3.4.7" + resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz#e16a0a85f59feed9f48d12cfaf166d7df4c96b7a" + integrity sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ== + dependencies: + hotkeys-js "3.9.4" + react-is@18.2.0, "react-is@^17.0.1 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-polyglot@0.7.2: version "0.7.2" - resolved "https://registry.npmjs.org/react-polyglot/-/react-polyglot-0.7.2.tgz" + resolved "https://registry.yarnpkg.com/react-polyglot/-/react-polyglot-0.7.2.tgz#b0277688c6d26eaff3312774738859cac53a227c" integrity sha512-d/075aofJ4of9wOSBewl+ViFkkM0L1DgE3RVDOXrHZ92w4o2643sTQJ6lSPw8wsJWFmlB/3Pvwm0UbGNvLfPBw== dependencies: hoist-non-react-statics "^3.3.0" prop-types "^15.5.8" -react-redux@8.0.4: - version "8.0.4" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-8.0.4.tgz" - integrity sha512-yMfQ7mX6bWuicz2fids6cR1YT59VTuT8MKyyE310wJQlINKENCeT1UcPdEiX6znI5tF8zXyJ/VYvDgeGuaaNwQ== +react-redux@8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.5.tgz#e5fb8331993a019b8aaf2e167a93d10af469c7bd" + integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw== dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -7513,12 +9730,12 @@ react-redux@8.0.4: react-refresh@0.14.0: version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react-router-dom@6.4.1: version "6.4.1" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.1.tgz" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.4.1.tgz#99c9b7c4967890701c888517475aa5d54d25760e" integrity sha512-MY7NJCrGNVJtGp8ODMOBHu20UaIkmwD2V3YsAOUQoCXFk7Ppdwf55RdcGyrSj+ycSL9Uiwrb3gTLYSnzcRoXww== dependencies: "@remix-run/router" "1.0.1" @@ -7526,21 +9743,21 @@ react-router-dom@6.4.1: react-router@6.4.1: version "6.4.1" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.4.1.tgz" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.4.1.tgz#dd9cc4dfa264751d143a4b6c9d4faa60ab3ce26c" integrity sha512-OJASKp5AykDWFewgWUim1vlLr7yfD4vO/h+bSgcP/ix8Md+LMHuAjovA74MQfsfhQJGGN1nHRhwS5qQQbbBt3A== dependencies: "@remix-run/router" "1.0.1" react-scroll-sync@0.9.0: version "0.9.0" - resolved "https://registry.npmjs.org/react-scroll-sync/-/react-scroll-sync-0.9.0.tgz" + resolved "https://registry.yarnpkg.com/react-scroll-sync/-/react-scroll-sync-0.9.0.tgz#81ddea7a667092807c0150924a201eceed5979fe" integrity sha512-IaMUSTbarj9mhjVtBl9I45Er8gQqV8rdb9A0eK77JJ8MvnLcFIlnoiXVx1NS9ACy9QELq7xCTxdIVEdhDV9R0Q== dependencies: prop-types "^15.5.7" react-sortable-hoc@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/react-sortable-hoc/-/react-sortable-hoc-2.0.0.tgz#f6780d8aa4b922a21f3e754af542f032677078b7" integrity sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg== dependencies: "@babel/runtime" "^7.2.0" @@ -7549,7 +9766,7 @@ react-sortable-hoc@2.0.0: react-svg-core@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/react-svg-core/-/react-svg-core-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/react-svg-core/-/react-svg-core-3.0.3.tgz#5d856efeaa4d089b0afeebe885b20b8c9500d162" integrity sha512-Ws3eM3xCAwcaYeqm4Ajcz3zxBYNI6BeTWWhFR0cpOT+pWuVtozgHYK9xUM0S/ilapZgYMQDe49XgOxpvooFq4w== dependencies: "@babel/core" "^7.4.5" @@ -7562,7 +9779,7 @@ react-svg-core@^3.0.3: react-svg-loader@3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/react-svg-loader/-/react-svg-loader-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/react-svg-loader/-/react-svg-loader-3.0.3.tgz#8baa2d5daa32523dfd0745425ac65e0a90edae15" integrity sha512-V1KnIUtvWVvc4xCig34n+f+/74ylMMugB2FbuAF/yq+QRi+WLi2hUYp9Ze3VylhA1D7ZgRygBh3Ojj8S3TPhJA== dependencies: loader-utils "^1.2.3" @@ -7570,23 +9787,40 @@ react-svg-loader@3.0.3: react-textarea-autosize@8.3.4: version "8.3.4" - resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.3.0" use-latest "^1.2.1" +react-textarea-autosize@^8.3.3: + version "8.4.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz#4d0244d6a50caa897806b8c44abc0540a69bfc8c" + integrity sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ== + dependencies: + "@babel/runtime" "^7.10.2" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + react-topbar-progress-indicator@4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/react-topbar-progress-indicator/-/react-topbar-progress-indicator-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/react-topbar-progress-indicator/-/react-topbar-progress-indicator-4.1.1.tgz#58d89114b8ddc2ec6e6235495bff7ab39900d100" integrity sha512-Oy3ENNKfymt16zoz5SYy/WOepMurB0oeZEyvuHm8JZ3jrTCe1oAUD7fG6HhYt5sg8Wcg5gdkzSWItaFF6c6VhA== dependencies: topbar "^0.1.3" +react-tracked@^1.7.9: + version "1.7.10" + resolved "https://registry.yarnpkg.com/react-tracked/-/react-tracked-1.7.10.tgz#1a907a0dfa3fcdc29247ba0f5cfad0145b8ef0c8" + integrity sha512-+zOm+Pr+zFrrEOwtLUtHwoxf9Kg7Ur7OMjD9kNFw5JA9lAs+mInXVEOvwpReEoR2FQMS4KUFxLv5VYoR5ADBiQ== + dependencies: + proxy-compare "2.3.0" + use-context-selector "1.4.1" + react-transition-group@^4.4.5: version "4.4.5" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" @@ -7594,14 +9828,39 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" +react-universal-interface@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" + integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== + +react-use@^17.3.2: + version "17.4.0" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d" + integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q== + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.3.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + react-virtualized-auto-sizer@1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.7.tgz" + resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.7.tgz#bfb8414698ad1597912473de3e2e5f82180c1195" integrity sha512-Mxi6lwOmjwIjC1X4gABXMJcKHsOo0xWl3E3ugOgufB8GJU+MqrtY35aBuvCYv/razQ1Vbp7h1gWJjGjoNN5pmA== react-waypoint@10.3.0: version "10.3.0" - resolved "https://registry.npmjs.org/react-waypoint/-/react-waypoint-10.3.0.tgz" + resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-10.3.0.tgz#fcc60e86c6c9ad2174fa58d066dc6ae54e3df71d" integrity sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ== dependencies: "@babel/runtime" "^7.12.5" @@ -7611,7 +9870,7 @@ react-waypoint@10.3.0: react-window@1.8.7: version "1.8.7" - resolved "https://registry.npmjs.org/react-window/-/react-window-1.8.7.tgz" + resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.7.tgz#5e9fd0d23f48f432d7022cdb327219353a15f0d4" integrity sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA== dependencies: "@babel/runtime" "^7.0.0" @@ -7619,21 +9878,21 @@ react-window@1.8.7: react@18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" reactcss@^1.2.0: version "1.2.3" - resolved "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== dependencies: lodash "^4.0.1" read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -7642,7 +9901,7 @@ read-pkg-up@^7.0.1: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" @@ -7651,7 +9910,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -7661,7 +9920,7 @@ read-pkg@^5.2.0: readable-stream@^2.0.1: version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -7674,7 +9933,7 @@ readable-stream@^2.0.1: readable-stream@^3.0.6, readable-stream@^3.5.0: version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" @@ -7683,72 +9942,67 @@ readable-stream@^3.0.6, readable-stream@^3.5.0: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" rechoir@^0.7.0: version "0.7.1" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== dependencies: resolve "^1.9.0" -redux-thunk@^2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz" - integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== +redux-thunk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" + integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4.1.1, redux@^4.1.2: +redux@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" regenerate-unicode-properties@^10.1.0: version "10.1.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.10: - version "0.13.10" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" regexp-tree@^0.1.24, regexp-tree@~0.1.1: version "0.1.24" - resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.4.3: version "1.4.3" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" @@ -7757,95 +10011,163 @@ regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: regexpp@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz" - integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ== +regexpu-core@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== dependencies: regenerate "^1.4.2" regenerate-unicode-properties "^10.1.0" regjsgen "^0.7.1" regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" regjsgen@^0.7.1: version "0.7.1" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== regjsparser@^0.9.1: version "0.9.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" +remark-gfm@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" + integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-gfm "^2.0.0" + micromark-extension-gfm "^2.0.0" + unified "^10.0.0" + +remark-html@15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-15.0.1.tgz#199cc78656d857834de0304c4b54a773f3272078" + integrity sha512-7ta5UPRqj8nP0GhGMYUAghZ/DRno7dgq7alcW90A7+9pgJsXzGJlFgwF8HOP1b1tMgT3WwbeANN+CaTimMfyNQ== + dependencies: + "@types/mdast" "^3.0.0" + hast-util-sanitize "^4.0.0" + hast-util-to-html "^8.0.0" + mdast-util-to-hast "^12.0.0" + unified "^10.0.0" + +remark-mdx@2.1.5, remark-mdx@^2.0.0: + version "2.1.5" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.1.5.tgz#69b19ec42d30a289e0663c3fc7656ebdca0a8d8e" + integrity sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ== + dependencies: + mdast-util-mdx "^2.0.0" + micromark-extension-mdxjs "^1.0.0" + +remark-parse@10.0.1, remark-parse@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + +remark-rehype@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + +remark-slate@^1.8.6: + version "1.8.6" + resolved "https://registry.yarnpkg.com/remark-slate/-/remark-slate-1.8.6.tgz#a5b4dc1c83ab6cf59a064d425976fc26bdb43b6e" + integrity sha512-1Gmt5MGw25MRVP+0xTXqw9JQDWfRNWujD4YFCPg036a9DZYhn7mLFjM6jreHB+9hKa6RCMOm5thiXznAmdn8Ug== + dependencies: + "@types/escape-html" "^1.0.0" + escape-html "^1.0.3" + require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-package-name@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^4.1.5: - version "4.1.6" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz" - integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== +reselect@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42" + integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A== + +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== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-pathname@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== resolve-protobuf-schema@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== dependencies: protocol-buffers-schema "^3.3.1" resolve.exports@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.9.0: version "1.22.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: is-core-module "^2.9.0" @@ -7854,7 +10176,7 @@ resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.2 resolve@^2.0.0-next.3: version "2.0.0-next.4" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: is-core-module "^2.9.0" @@ -7863,7 +10185,7 @@ resolve@^2.0.0-next.3: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -7871,63 +10193,72 @@ restore-cursor@^3.1.0: retry@^0.13.1: version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rifm@^0.12.1: version "0.12.1" - resolved "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz" + resolved "https://registry.yarnpkg.com/rifm/-/rifm-0.12.1.tgz#8fa77f45b7f1cda2a0068787ac821f0593967ac4" integrity sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg== rimraf@3.0.2, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rimraf@^2.6.2: version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rope-sequence@^1.3.0: - version "1.3.3" - resolved "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.3.tgz" - integrity sha512-85aZYCxweiD5J8yTEbw+E6A27zSnLPNDL0WfPdw3YYodq7WjnTKo0q4dtyQ2gz23iPT8Q9CUyJtAaUNcTxRf5Q== +rtl-css-js@^1.14.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.0.tgz#e8d682982441aadb63cabcb2f7385f3fb78ff26e" + integrity sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ== + dependencies: + "@babel/runtime" "^7.1.2" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" rw@^1.3.3: version "1.3.3" - resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex-test@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: call-bind "^1.0.2" @@ -7936,38 +10267,38 @@ safe-regex-test@^1.0.0: safe-regex@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== dependencies: regexp-tree "~0.1.1" "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sanitize-filename@1.6.3: version "1.6.3" - resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== dependencies: truncate-utf8-bytes "^1.0.0" sax@~1.2.4: version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scheduler@^0.23.0: version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" @@ -7976,7 +10307,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: "@types/json-schema" "^7.0.8" @@ -7985,7 +10316,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: schema-utils@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== dependencies: "@types/json-schema" "^7.0.9" @@ -7993,9 +10324,26 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" +screenfull@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + +scriptjs@2.5.9: + version "2.5.9" + resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f" + integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg== + +scroll-into-view-if-needed@^2.2.20: + version "2.2.31" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587" + integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== + dependencies: + compute-scroll-into-view "^1.0.20" + section-matter@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== dependencies: extend-shallow "^2.0.1" @@ -8003,46 +10351,46 @@ section-matter@^1.0.0: secure-compare@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: node-forge "^1" semaphore@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" send@0.18.0: version "0.18.0" - resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -8061,14 +10409,14 @@ send@0.18.0: serialize-javascript@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" serve-index@^1.9.1: version "1.9.1" - resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" @@ -8081,7 +10429,7 @@ serve-index@^1.9.1: serve-static@1.15.0: version "1.15.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -8089,55 +10437,65 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-harmonic-interval@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" + integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== + setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== shallow-clone@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: kind-of "^6.0.2" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + version "1.7.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -8146,12 +10504,12 @@ side-channel@^1.0.4: signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-git@3.14.1: version "3.14.1" - resolved "https://registry.npmjs.org/simple-git/-/simple-git-3.14.1.tgz" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.14.1.tgz#68018a5f168f8a568862e30b692004b37c3b5ced" integrity sha512-1ThF4PamK9wBORVGMK9HK5si4zoGS2GpRO7tkAFObA4FZv6dKaCVHLQT+8zlgiBm6K2h+wEU9yOaFCu/SR3OyA== dependencies: "@kwsites/file-exists" "^1.1.1" @@ -8160,27 +10518,69 @@ simple-git@3.14.1: sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== slash@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slash@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slate-history@0.85.0: + version "0.85.0" + resolved "https://registry.yarnpkg.com/slate-history/-/slate-history-0.85.0.tgz#fdbaa8f91b0513bbc269a08523cade7e9732ac62" + integrity sha512-4rPx+Y7ubROlc85mYzK9iXRMgjmor6v87AMx5Oh6eOuW4elCz+uAiBWT6ates7JjCNiDXBHxtMvBEa37UG5dWg== + dependencies: + is-plain-object "^5.0.0" + +slate-hyperscript@0.77.0: + version "0.77.0" + resolved "https://registry.yarnpkg.com/slate-hyperscript/-/slate-hyperscript-0.77.0.tgz#72c1c0fbd54dc6b6210ecd81d020c8d3d0ab8eae" + integrity sha512-M6uRpttwKnosniQORNPYQABHQ9XWC7qaSr/127LWWPjTOR5MSSwrHGrghN81BhZVqpICHrI7jkPA2813cWdHNA== + dependencies: + is-plain-object "^5.0.0" + +slate-react@0.83.2: + version "0.83.2" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.83.2.tgz#7099db1607b79c95cc2a41e2df1e04982b7e26a5" + integrity sha512-V5qtPsCOiDVCMU3ovj/CWndxx9/as5/wGJxnbJDRVzuazSh+NVw/YuGTlus1fCt+Nlt6UHOhFvM7C9pXYaftPA== + dependencies: + "@types/is-hotkey" "^0.1.1" + "@types/lodash" "^4.14.149" + direction "^1.0.3" + is-hotkey "^0.1.6" + is-plain-object "^5.0.0" + lodash "^4.17.4" + scroll-into-view-if-needed "^2.2.20" + tiny-invariant "1.0.6" + +slate@0.85.0: + version "0.85.0" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.85.0.tgz#1e922dce13a7b37816670312f5caac70aa2a8d1c" + integrity sha512-SHlgOI7fDG50sL+lfAI+nXF9FQpoqf7KNRofggyyE4ngsj1nINOEpFSYKGPkZgVUUkPflWK6PuBJMR6nEuUiKg== + dependencies: + immer "^9.0.6" + is-plain-object "^5.0.0" + tiny-warning "^1.0.3" + +slick@^1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" + integrity sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A== + sockjs@^0.3.24: version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" @@ -8189,17 +10589,17 @@ sockjs@^0.3.24: sort-asc@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.1.0.tgz#ab799df61fc73ea0956c79c4b531ed1e9e7727e9" integrity sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw== sort-desc@^0.1.1: version "0.1.1" - resolved "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz" + resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.1.1.tgz#198b8c0cdeb095c463341861e3925d4ee359a9ee" integrity sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw== sort-object@^0.3.2: version "0.3.2" - resolved "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz" + resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-0.3.2.tgz#98e0d199ede40e07c61a84403c61d6c3b290f9e2" integrity sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA== dependencies: sort-asc "^0.1.0" @@ -8207,12 +10607,12 @@ sort-object@^0.3.2: source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map-loader@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.0.tgz#bdc6b118bc6c87ee4d8d851f2d4efcc5abdb2ef5" integrity sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw== dependencies: abab "^2.0.6" @@ -8221,7 +10621,7 @@ source-map-loader@4.0.0: source-map-support@0.5.13: version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" @@ -8229,30 +10629,45 @@ source-map-support@0.5.13: source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== + source-map@^0.5.7: version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.0, source-map@^0.7.3: version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + spdx-correct@^3.0.0: version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" @@ -8260,12 +10675,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -8273,12 +10688,12 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.12" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== spdy-transport@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -8290,7 +10705,7 @@ spdy-transport@^3.0.0: spdy@^4.0.2: version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -8301,44 +10716,68 @@ spdy@^4.0.2: split-on-first@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== stable@^0.1.8: version "0.1.8" - resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-generator@^2.0.5: + version "2.0.10" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" + integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== + dependencies: + stackframe "^1.3.4" + stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" stackframe@^1.3.4: version "1.3.4" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +stacktrace-gps@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" + integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== + dependencies: + source-map "0.5.6" + stackframe "^1.3.4" + +stacktrace-js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== + dependencies: + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" + statuses@2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2": version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== stream-browserify@3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== dependencies: inherits "~2.0.4" @@ -8346,12 +10785,12 @@ stream-browserify@3.0.0: strict-uri-encode@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== string-length@^4.0.1: version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" @@ -8359,7 +10798,7 @@ string-length@^4.0.1: string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -8367,177 +10806,205 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: strip-ansi "^6.0.1" string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" string.prototype.repeat@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" integrity sha512-1BH+X+1hSthZFW+X+JaUkjkkUPwIlLEMJBLANN3hOob3RhEk5snLWNECDnYbgn/m5c5JV7Ersu1Yubaf+05cIA== string.prototype.trim@^1.2.4: - version "1.2.6" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz" - integrity sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ== + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" - es-abstract "^1.19.5" + es-abstract "^1.20.4" string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" +stringify-entities@^4.0.0, stringify-entities@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" + integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + strip-ansi@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-bom-string@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== style-loader@3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== +style-mod@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01" + integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw== + +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" + +styled-components@5.3.6: + version "5.3.6" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1" + integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +stylis@4.1.3, stylis@^4.0.6: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== -supports-color@^5.3.0: +supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svgo@^1.2.2: version "1.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: chalk "^2.4.1" @@ -8556,7 +11023,7 @@ svgo@^1.2.2: svgo@^2.0.3: version "2.8.0" - resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" @@ -8569,30 +11036,30 @@ svgo@^2.0.3: symbol-observable@4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== +synckit@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.4.tgz#0e6b392b73fafdafcde56692e3352500261d64ec" + integrity sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw== + dependencies: + "@pkgr/utils" "^2.3.1" + tslib "^2.4.0" + sywac@^1.2.2: version "1.3.0" - resolved "https://registry.npmjs.org/sywac/-/sywac-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/sywac/-/sywac-1.3.0.tgz#324789bdb8bd7d0d66625c9144fce81ab5ba6f99" integrity sha512-LDt2stNTp4bVPMgd70Jj9PWrSa4batl+bv+Ea5NLNGT7ufc4oQPtRfQ73wbddNV6RilaPqnEt6y1Wkm5FVTNEg== tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - terser-webpack-plugin@^5.1.3: version "5.3.6" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== dependencies: "@jridgewell/trace-mapping" "^0.3.14" @@ -8602,9 +11069,9 @@ terser-webpack-plugin@^5.1.3: terser "^5.14.1" terser@^5.14.1: - version "5.15.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz" - integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== + version "5.16.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.0.tgz#29362c6f5506e71545c73b069ccd199bb28f7f54" + integrity sha512-KjTV81QKStSfwbNiwlBXfcgMcOloyuRdb62/iLFPGBcVNF4EXjhdYBhYHmbJpiBrVxZhDvltE11j+LBQUxEEJg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -8613,7 +11080,7 @@ terser@^5.14.1: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -8622,88 +11089,138 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" + integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== + thunky@^1.0.2: version "1.1.0" - resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +tiny-glob@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + +tiny-invariant@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" + integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== + tiny-invariant@^1.0.2: version "1.3.1" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -tiny-warning@^1.0.0: +tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== tinycolor2@^1.4.1: version "1.4.2" - resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== +tippy.js@^6.3.1: + version "6.3.7" + resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" + integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== + dependencies: + "@popperjs/core" "^2.9.0" + tmpl@1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-string-loader@1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/to-string-loader/-/to-string-loader-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/to-string-loader/-/to-string-loader-1.2.0.tgz#4364aa044b9aa876473f4d7a36ef7d216a276e9c" integrity sha512-KsWUL8FccgBW9FPFm4vYoQbOOcO5m6hKOGYoXjbseD9/4Ft+ravXN5jolQ9kTKYcK4zPt1j+khx97GPGnVoi6A== dependencies: loader-utils "^1.0.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== topbar@^0.1.3: version "0.1.4" - resolved "https://registry.npmjs.org/topbar/-/topbar-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/topbar/-/topbar-0.1.4.tgz#d050e536ef5053d9629499ed71008b88cb2398fb" integrity sha512-P3n4WnN4GFd2mQXDo30rQmsAGe4V1bVkggtTreSbNyL50Fyc+eVkW5oatSLeGQmJoan2TLIgoXUZypN+6nw4MQ== tr46@~0.0.3: version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== traverse@0.6.6: version "0.6.6" - resolved "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw== +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +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== + +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + truncate-utf8-bytes@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== dependencies: utf8-byte-length "^1.0.1" +ts-easing@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" + integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== + ts-loader@9.4.1: version "9.4.1" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.1.tgz#b6f3d82db0eac5a8295994f8cb5e4940ff6b1060" integrity sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw== dependencies: chalk "^4.1.0" @@ -8711,9 +11228,18 @@ ts-loader@9.4.1: micromatch "^4.0.0" semver "^7.3.4" +tsconfig-paths-webpack-plugin@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz#84008fc3e3e0658fdb0262758b07b4da6265ff1a" + integrity sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tsconfig-paths "^4.0.0" + tsconfig-paths@^3.14.1: version "3.14.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" @@ -8721,58 +11247,67 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.1.tgz#7f23094ce897fcf4a93f67c4776e813003e48b75" + integrity sha512-VgPrtLKpRgEAJsMj5Q/I/mXouC6A/7eJ/X4Nuk6o0cRPwBtznYxTCU4FodbexbzH9somBPEXYi0ZkUViUpJ21Q== + dependencies: + json5 "^2.2.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1: version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-detect@4.0.8: version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -8780,29 +11315,29 @@ type-is@~1.6.18: type@^1.0.1: version "1.2.0" - resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.7.2: version "2.7.2" - resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typescript@4.8.4: version "4.8.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -8812,77 +11347,172 @@ unbox-primitive@^1.0.2: unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unified@10.1.2, unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + +unified@^9.2.1: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + union@~0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/union/-/union-0.5.0.tgz" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== dependencies: qs "^6.4.0" +unist-builder@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04" + integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-generated@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" + integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== + +unist-util-is@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" + integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ== + +unist-util-position-from-estree@^1.0.0, unist-util-position-from-estree@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c" + integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-position@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07" + integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-remove-position@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8" + integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.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-stringify-position@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447" + integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz#868f353e6fce6bf8fa875b251b0f4fec3be709bb" + integrity sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@4.1.1, unist-util-visit@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz#1c4842d70bd3df6cc545276f5164f933390a9aad" + integrity sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" + universal-user-agent@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== dependencies: os-name "^3.1.0" universal-user-agent@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unquote@~1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: escalade "^3.1.1" picocolors "^1.0.0" uploadcare-widget-tab-effects@1.5.0: version "1.5.0" - resolved "https://registry.npmjs.org/uploadcare-widget-tab-effects/-/uploadcare-widget-tab-effects-1.5.0.tgz" + resolved "https://registry.yarnpkg.com/uploadcare-widget-tab-effects/-/uploadcare-widget-tab-effects-1.5.0.tgz#b320fbf22c583bb3566da65549dcb6ace7caf6ac" integrity sha512-HSqtidqATXC/LjkvBmIFp1Nn69r0rmJ1fGmKYHZN5WX3jqaTi2XgofrXPX7GMY6PX7z3sk8y4Edv2UoA5uuJJw== uploadcare-widget@3.19.0: version "3.19.0" - resolved "https://registry.npmjs.org/uploadcare-widget/-/uploadcare-widget-3.19.0.tgz" + resolved "https://registry.yarnpkg.com/uploadcare-widget/-/uploadcare-widget-3.19.0.tgz#ae2e884519075713f96e567a713e0713412f11b5" integrity sha512-b79XWXMWJBD16zEZotxZgZJcG7cuPukvaYd2x5FxQXjJc+24jLRXGphpjzCSadRpyQ7ugTqw7fUTbKXpsJxztg== dependencies: escape-html "^1.0.3" @@ -8890,19 +11520,19 @@ uploadcare-widget@3.19.0: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-join@4.0.1, url-join@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== url@0.11.0: version "0.11.0" - resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: punycode "1.3.2" @@ -8910,46 +11540,58 @@ url@0.11.0: use-composed-ref@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== +use-context-selector@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/use-context-selector/-/use-context-selector-1.4.1.tgz#eb96279965846b72915d7f899b8e6ef1d768b0ae" + integrity sha512-Io2ArvcRO+6MWIhkdfMFt+WKQX+Vb++W8DS2l03z/Vw/rz3BclKpM0ynr4LYGyU85Eke+Yx5oIhTY++QR0ZDoA== + +use-deep-compare@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-deep-compare/-/use-deep-compare-1.1.0.tgz#85580dde751f68400bf6ef7e043c7f986595cef8" + integrity sha512-6yY3zmKNCJ1jjIivfZMZMReZjr8e6iC6Uqtp701jvWJ6ejC/usXD+JjmslZDPJQgX8P4B1Oi5XSLHkOLeYSJsA== + dependencies: + dequal "1.0.0" + use-isomorphic-layout-effect@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: use-isomorphic-layout-effect "^1.1.1" use-sync-external-store@^1.0.0: version "1.2.0" - resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== utf-8-validate@^5.0.2: - version "5.0.9" - resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" utf8-byte-length@^1.0.1: version "1.0.4" - resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@~1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== dependencies: define-properties "^1.1.3" @@ -8959,73 +11601,144 @@ util.promisify@~1.0.0: utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@3.4.0: version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + v8-to-istanbul@^9.0.1: version "9.0.1" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" +valid-data-url@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" + integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA== + validate-color@2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/validate-color/-/validate-color-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/validate-color/-/validate-color-2.2.1.tgz#f97214883304f87eaa9dc1eb8e9d8cd8b606a5d1" integrity sha512-1eDb1zqP6W6bbfKKl6dRXObelNoQpW7aF3BUTh2AivWuhcD0pa3ejwURWqrVsyKJMLBMlHLFcM3sj5J+dSFhbg== validate-npm-package-license@^3.0.1: version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== + value-equal@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== vary@~1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -w3c-keyname@^2.2.0: +vfile-location@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.0.1.tgz#06f2b9244a3565bef91f099359486a08b10d3a95" + integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw== + dependencies: + "@types/unist" "^2.0.0" + vfile "^5.0.0" + +vfile-message@3.1.3, vfile-message@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.3.tgz#1360c27a99234bebf7bddbbbca67807115e6b0dd" + integrity sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +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-statistics@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-2.0.0.tgz#f04ee3e3c666809a3c10c06021becd41ea9c8037" + integrity sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA== + dependencies: + vfile-message "^3.0.0" + +vfile@5.3.6, vfile@^5.0.0: + version "5.3.6" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.6.tgz#61b2e70690cc835a5d0d0fd135beae74e5a39546" + integrity sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + +vfile@^4.0.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" + +w3c-keyname@^2.2.4: version "2.2.6" - resolved "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz" + resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f" integrity sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg== walker@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" warning@^4.0.3: version "4.0.3" - resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== dependencies: loose-envify "^1.0.0" watchpack@^2.4.0: version "2.4.0" - resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" @@ -9033,36 +11746,48 @@ watchpack@^2.4.0: wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" weak-map@^1.0.5: version "1.0.8" - resolved "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.8.tgz#394c18a9e8262e790544ed8b55c6a4ddad1cb1a3" integrity sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw== +web-resource-inliner@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz#df0822f0a12028805fe80719ed52ab6526886e02" + integrity sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A== + dependencies: + ansi-colors "^4.1.1" + escape-goat "^3.0.0" + htmlparser2 "^5.0.0" + mime "^2.4.6" + node-fetch "^2.6.0" + valid-data-url "^3.0.0" + web-worker@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webpack-cli@4.10.0: version "4.10.0" - resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== dependencies: "@discoveryjs/json-ext" "^0.5.0" @@ -9080,7 +11805,7 @@ webpack-cli@4.10.0: webpack-dev-middleware@^5.3.1: version "5.3.3" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" @@ -9091,7 +11816,7 @@ webpack-dev-middleware@^5.3.1: webpack-dev-server@4.11.1: version "4.11.1" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz#ae07f0d71ca0438cf88446f09029b92ce81380b5" integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== dependencies: "@types/bonjour" "^3.5.9" @@ -9126,7 +11851,7 @@ webpack-dev-server@4.11.1: webpack-merge@^5.7.3: version "5.8.0" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== dependencies: clone-deep "^4.0.1" @@ -9134,12 +11859,12 @@ webpack-merge@^5.7.3: webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@5.74.0: version "5.74.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== dependencies: "@types/eslint-scope" "^3.7.3" @@ -9169,7 +11894,7 @@ webpack@5.74.0: websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -9178,12 +11903,12 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== websocket@~1.0.34: version "1.0.34" - resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== dependencies: bufferutil "^4.0.1" @@ -9195,24 +11920,24 @@ websocket@~1.0.34: what-input@5.2.12: version "5.2.12" - resolved "https://registry.npmjs.org/what-input/-/what-input-5.2.12.tgz" + resolved "https://registry.yarnpkg.com/what-input/-/what-input-5.2.12.tgz#6eb5b5d39ebff4e2273df8bf69d8d2fc9a6e060a" integrity sha512-3yrSa7nGSXGJS6wZeSkO6VNm95pB1mZ9i3wFzC1hhY7mn4/afue/MvXz04OXNdBC8bfo4AB4RRd3Dem9jXM58Q== what-the-diff@0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/what-the-diff/-/what-the-diff-0.6.0.tgz" + resolved "https://registry.yarnpkg.com/what-the-diff/-/what-the-diff-0.6.0.tgz#445cc56a9d8ee9aea0ee1ed943f4957ae009291e" integrity sha512-8BgQ4uo4cxojRXvCIcqDpH4QHaq0Ksn2P3LYfztylC5LDSwZKuGHf0Wf7sAStjPLTcB8eCB8pJJcPQSWfhZlkg== whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -9220,7 +11945,7 @@ whatwg-url@^5.0.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -9231,38 +11956,38 @@ which-boxed-primitive@^1.0.2: which@^1.2.9: version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wildcard@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== windows-release@^3.1.0: version "3.3.3" - resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== dependencies: execa "^1.0.0" word-wrap@^1.2.3: version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -9271,61 +11996,61 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^4.0.1: version "4.0.2" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" ws@^8.4.2: - version "8.9.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.9.0.tgz" - integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== xcase@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9" integrity sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw== xml-utils@^1.0.2: version "1.3.0" - resolved "https://registry.npmjs.org/xml-utils/-/xml-utils-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/xml-utils/-/xml-utils-1.3.0.tgz#f1043534e3ac3deda12ddab39f8442e16da98ebb" integrity sha512-i4PIrX33Wd66dvwo4syicwlwmnr6wuvvn4f2ku9hA67C2Uk62Xubczuhct+Evnd12/DV71qKNeDdJwES8HX1RA== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yaeti@^0.0.6: version "0.0.6" - resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@1.10.2, yaml@^1.10.0: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^21.0.0: +yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.3.1: - version "17.6.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz" - integrity sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g== + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: cliui "^8.0.1" escalade "^3.1.1" @@ -9333,9 +12058,19 @@ yargs@^17.3.1: require-directory "^2.1.1" string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^21.0.0" + yargs-parser "^21.1.1" yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zustand@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.7.2.tgz#7b44c4f4a5bfd7a8296a3957b13e1c346f42514d" + integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA== + +zwitch@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 00000000..6b671344 --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,10 @@ +{ + "systemParams": "win32-x64-93", + "modulesFolders": [], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/website/package.json b/website/package.json index 3d5dd9dc..f41309ff 100644 --- a/website/package.json +++ b/website/package.json @@ -33,7 +33,7 @@ "@next/bundle-analyzer": "12.3.1", "@next/eslint-plugin-next": "12.3.1", "@types/js-yaml": "4.0.5", - "@types/node": "18.11.3", + "@types/node": "16.18.4", "@types/prettier": "2.7.1", "@types/prismjs": "1.26.0", "@types/react": "18.0.25", diff --git a/website/yarn.lock b/website/yarn.lock index 58ec8588..d5a9a59c 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -1526,10 +1526,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.5.tgz#1bc94cf2f9ab5fe33353bc7c79c797dcc5325bef" integrity sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ== -"@types/node@18.11.3": - version "18.11.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.3.tgz#78a6d7ec962b596fc2d2ec102c4dd3ef073fea6a" - integrity sha512-fNjDQzzOsZeKZu5NATgXUPsaFaTxeRgFXoosrHivTl8RGeV733OLawXsGfEk9a8/tySyZUyiZ6E8LcjPFZ2y1A== +"@types/node@16.18.4": + version "16.18.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.4.tgz#712ba61b4caf091fc6490301b1888356638c17bd" + integrity sha512-9qGjJ5GyShZjUfx2ArBIGM+xExdfLvvaCyQR0t6yRXKPcWCVYF/WemtX/uIU3r7FYECXRXkIiw2Vnhn6y8d+pw== "@types/normalize-package-data@^2.4.0": version "2.4.1"