diff --git a/package.json b/package.json index e243cb83..93075dae 100644 --- a/package.json +++ b/package.json @@ -66,51 +66,51 @@ "@types/marked": "^4.0.1", "@types/mime-types": "^2.1.1", "@types/minimatch": "^3.0.5", - "@types/node": "^16.11.9", + "@types/node": "^16.11.12", "@types/nunjucks": "^3.2.0", "@types/prosemirror-commands": "^1.0.4", "@types/prosemirror-model": "^1.13.2", "@types/prosemirror-state": "^1.2.8", "@types/quill": "^2.0.9", - "@typescript-eslint/eslint-plugin": "^5.4.0", - "@typescript-eslint/parser": "^5.4.0", + "@typescript-eslint/eslint-plugin": "^5.6.0", + "@typescript-eslint/parser": "^5.6.0", "ava": "^3.14.0", "codecov": "^3.8.3", "concurrently": "^6.4.0", - "eslint": "^8.2.0", + "eslint": "^8.4.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-sort-class-members": "^1.14.0", + "eslint-plugin-sort-class-members": "^1.14.1", "express": "^4.17.1", "gts": "^3.1.0", "nodemon": "^2.0.15", "nunjucks": "^3.2.3", "nyc": "^15.1.0", - "prettier": "^2.4.1", - "puppeteer": "^11.0.0", + "prettier": "^2.5.1", + "puppeteer": "^12.0.1", "ts-loader": "^9.2.6", "ts-node": "^10.4.0", - "typedoc": "^0.22.9", + "typedoc": "^0.22.10", "typescript": "^4.5.2", - "webpack": "^5.64.1", + "webpack": "^5.65.0", "webpack-cli": "^4.9.1", - "webpack-dev-server": "^4.5.0", + "webpack-dev-server": "^4.6.0", "webpack-merge": "^5.8.0" }, "dependencies": { - "@blinkk/selective-edit": "^3.2.4", + "@blinkk/selective-edit": "^3.3.0", "@toast-ui/editor": "^3.1.1", "bent": "^7.3.12", - "codemirror": "^5.63.3", + "codemirror": "^5.64.0", "javascript-time-ago": "^2.3.10", "js-yaml": "^4.1.0", "lodash.clonedeep": "^4.5.0", "lodash.merge": "^4.6.2", - "marked": "^4.0.4", + "marked": "^4.0.6", "minimatch": "^3.0.4", "path-browserify": "^1.0.1", "quill": "^1.3.7", - "sass": "^1.43.4", + "sass": "^1.44.0", "stackdriver-errors-js": "^0.12.0" } } diff --git a/src/sass/_scheme.sass b/src/sass/_scheme.sass index d1cef497..3d04d23d 100644 --- a/src/sass/_scheme.sass +++ b/src/sass/_scheme.sass @@ -80,7 +80,7 @@ --color-primary-light: #48a999 --color-on-primary-light: #ffffff - --color-secondary: ##9e9e9e + --color-secondary: #9e9e9e --color-on-secondary: #000000 --color-tertiary: #2C2C2C diff --git a/src/sass/example/preview.sass b/src/sass/example/preview.sass new file mode 100644 index 00000000..fd4bab5a --- /dev/null +++ b/src/sass/example/preview.sass @@ -0,0 +1,90 @@ +@import '../config' +@import '../scheme' + +body + background-color: rgba(200, 200, 200, .3) + background-image: linear-gradient(rgba(255, 255, 255, .35) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .35) 1px, transparent 1px) + background-position: 0 0 + background-size: 10px 10px, 10px 10px + padding: 0 + margin: 0 + +h1, h2, h3, h4, h5, h6 + margin: .5rem 0 + +.container + display: flex + flex-flow: column + height: 100vh + +.description + margin: $le-space-medium + +.details + font-size: .8em + margin: $le-space-medium + +.partials + display: flex + flex-flow: column + margin: $le-space-medium 0 + +.partial + // background-color: var(--color-primary) + // background-size: 10px 10px + // background-image: repeating-linear-gradient(45deg, #e4e3e4 0, #e4e3e4 1px, #fff 0, #fff 50%) + border: $le-border-size-medium solid var(--color-primary) + // color: var(--color-on-primary) + height: 45vh + margin: .5em 0 + padding: .5em + + &:hover + border-color: rgba(0, 0, 0, .5) + + &--hovered + outline: $le-border-size-xlarge dotted var(--color-secondary) + +.partial__edit + font-size: $le-font-size-small + +.connection + flex-grow: 1 + display: flex + flex-flow: column + +.preview + flex-grow: 1 + flex-shrink: 1 + height: 0 + overflow-x: auto + +.communication__log + background: var(--color-secondary) + bottom: 0 + color: var(--color-on-secondary) + left: 0 + max-height: 20vh + min-height: 20px + padding: 1em + right: 0 + +.communication__log__items + column-gap: $le-space-small + display: grid + font-family: var(--font-family-mono) + font-size: $le-font-size-small + grid-template-columns: minmax(40px, 1fr) 1fr minmax(50px, 2fr) + max-height: 10vh + overflow-y: auto + row-gap: $le-space-small + +.communication__log__item__source + font-weight: 700 + flex-basis: 10% + +.communication__log__item__event + grid-column-start: 2 + +.communication__log__item__details + grid-column-start: 3 diff --git a/src/sass/selective/field/_generic_partials.sass b/src/sass/selective/field/_generic_partials.sass index 1985dff9..c753a480 100644 --- a/src/sass/selective/field/_generic_partials.sass +++ b/src/sass/selective/field/_generic_partials.sass @@ -14,6 +14,39 @@ &:focus-within border-color: var(--color-tertiary-dark) + > .selective__list__fields__header > .selective__field__actions, + > .selective__field__actions + .selective__list__item__index + aspect-ratio: 1 + border: $le-border-size-medium solid var(--color-tertiary) + border-radius: 50% + display: inline-block + text-align: center + width: $le-space-large + + .selective__list__item:focus-within & + border-color: var(--color-tertiary-dark) + + > .selective__list__fields__header > .selective__field__actions + .selective__list__item__index + border-color: var(--color-on-tertiary) + + .selective__list__item--visible & + border-color: var(--color-secondary) + + .selective__list__item:focus-within & + border-color: var(--color-tertiary-dark) + + + &--visible + > .selective__list__fields__header > .selective__field__actions, + > .selective__field__actions + .selective__list__item__index + border-color: var(--color-secondary) + + &--hovered + outline: $le-border-size-large solid var(--color-secondary) + > .selective__list__fields__header > .selective__list__item__preview, > .selective__list__item__preview .selective__field__partials__preview diff --git a/src/sass/selective/field/_list.sass b/src/sass/selective/field/_list.sass index 1ef6020f..b2573832 100644 --- a/src/sass/selective/field/_list.sass +++ b/src/sass/selective/field/_list.sass @@ -24,16 +24,40 @@ display: flex flex-flow: row + > .selective__list__fields__header .selective__field__actions, > .selective__field__actions + column-gap: $le-space-small + + &--pre + margin-left: $le-space-small + margin-right: $le-space-small + + &--post + margin-left: $le-space-small + margin-right: $le-space-small + .selective__list__item__drag cursor: grab + .material-icons + padding-left: 0 + padding-right: 0 + .selective__field__action +clickable .material-icons padding: $le-space-small + > .selective__list__item__index + aspect-ratio: 1 + border: $le-border-size-medium solid var(--color-tertiary) + border-radius: 50% + display: inline-block + padding: $le-space-small + text-align: center + width: $le-space-large + > .selective__field flex-grow: 1 margin: $le-space-small 0 @@ -42,7 +66,7 @@ > .selective__list__item__preview flex-grow: 1 overflow: hidden - padding: $le-space-small 0 + padding: $le-space-medium 0 text-overflow: ellipsis white-space: nowrap @@ -67,6 +91,7 @@ &--pre .material-icons padding-left: 0 + padding-right: 0 &--empty padding: $le-space-medium 0 @@ -88,7 +113,6 @@ display: flex flex-flow: row font-weight: var(--font-weight-bold) - padding: $le-space-small position: sticky top: 0 z-index: 1 @@ -100,9 +124,6 @@ > .selective__list__fields padding: $le-space-medium - &--no-drag - padding-left: $le-space-medium - &.selective__sortable--hover * pointer-events: none diff --git a/src/ts/editor/editor.ts b/src/ts/editor/editor.ts index 60cfd3c7..c43f1e07 100644 --- a/src/ts/editor/editor.ts +++ b/src/ts/editor/editor.ts @@ -8,6 +8,7 @@ import {AppUi} from './ui/app'; import {EVENT_SAVE} from './events'; import {GrowProjectType} from '../projectType/grow/growProjectType'; import {LiveEditorLabels} from './template'; +import {PreviewCommunicator} from './preview'; import {ProjectTypeComponent} from '../projectType/projectType'; import cloneDeep from 'lodash.clonedeep'; @@ -65,6 +66,10 @@ export class LiveEditor { config: LiveEditorConfig; isPendingRender?: boolean; isRendering?: boolean; + /** + * Used to handle communiction between the editor and the preview iframe. + */ + preview: PreviewCommunicator; state: EditorState; storage: DataStorage; @@ -72,6 +77,7 @@ export class LiveEditor { this.config = config; this.storage = new LocalDataStorage(); this.state = this.config.state; + this.preview = new PreviewCommunicator(); // Bind the editor to the global selective config. if (this.config.selectiveConfig.global) { diff --git a/src/ts/editor/preview.ts b/src/ts/editor/preview.ts index 623dc714..26980d58 100644 --- a/src/ts/editor/preview.ts +++ b/src/ts/editor/preview.ts @@ -1,4 +1,7 @@ import {EditorPreviewSettings, WorkspaceData} from './api'; + +import {Base} from '@blinkk/selective-edit/dist/mixins'; +import {ListenersMixin} from '../mixin/listeners'; import {interpolate} from '../utility/stringLiteral'; import {shortenWorkspaceName} from './workspace'; @@ -60,3 +63,67 @@ export function interpolatePreviewConfigUrl( // Default to the `preview.json` file. return `${params.baseUrl}preview.json`; } + +export interface PreviewEvent { + event: string; + details?: any; +} + +export interface PreviewConnectEvent extends PreviewEvent { + event: 'connect'; +} + +export type PreviewCommunication = PreviewConnectEvent | PreviewEvent; + +/** + * Enable communication between the preview iframe and the editor. + */ +export class PreviewCommunicator extends ListenersMixin(Base) { + iframe?: HTMLIFrameElement; + queue: PreviewCommunication[] = []; + + constructor() { + super(); + + window.addEventListener('message', event => { + if (!event.data.event) { + return; + } + + // Check for a connect event, link the iframe to the communicator. + if (event.data.event === 'connect') { + const iframe = document.querySelector( + '.le__part__preview__frame iframe' + ); + if (iframe) { + this.connect(iframe as HTMLIFrameElement); + } + } + + this.triggerListener(event.data.event, event.data.details || {}); + }); + } + + connect(iframe: HTMLIFrameElement) { + this.iframe = iframe; + + // Send connect message back to iframe as a confirmation. + this.send({event: 'connect'}); + + // Send queued events. + for (const event of this.queue) { + this.send(event); + } + this.queue = []; + } + + send(event: PreviewCommunication) { + if (!this.iframe) { + this.queue.push(event); + return; + } + + // Currently ignores when no iframe. Change to queue messages? + this.iframe?.contentWindow?.postMessage(event, '*'); + } +} diff --git a/src/ts/example/exampleApi.ts b/src/ts/example/exampleApi.ts index 84ae01a8..34121fd3 100644 --- a/src/ts/example/exampleApi.ts +++ b/src/ts/example/exampleApi.ts @@ -1009,7 +1009,27 @@ const fullFiles: Record = { partials: [ { partial: 'example', - title: 'Partial example', + title: 'Partial example 1', + }, + { + partial: 'example', + title: 'Partial example 2', + }, + { + partial: 'example', + title: 'Partial example 3', + }, + { + partial: 'example', + title: 'Partial example 4', + }, + { + partial: 'example', + title: 'Partial example 5', + }, + { + partial: 'example', + title: 'Partial example 6', }, ], }, @@ -1740,6 +1760,16 @@ export class ExampleApi implements LiveEditorApiComponent { path: '/preview.html', }, }, + '/example/amagaki/partials.yaml': { + en: { + path: '/preview.html', + }, + }, + '/example/grow/partials.yaml': { + en: { + path: '/preview.html', + }, + }, '/static/img/landscape.png': { path: '/image-landscape.png', }, diff --git a/src/ts/example/preview.ts b/src/ts/example/preview.ts new file mode 100644 index 00000000..db27d461 --- /dev/null +++ b/src/ts/example/preview.ts @@ -0,0 +1,252 @@ +import { + TemplateResult, + classMap, + html, + render, + repeat, +} from '@blinkk/selective-edit'; + +import {EVENT_RENDER_COMPLETE} from '../editor/events'; +import cloneDeep from 'lodash.clonedeep'; + +const SOURCE_EDITOR = 'editor'; +const SOURCE_PREVIEW = 'preview'; + +interface LogData { + source: string; + details?: any[]; +} + +class PreviewConnector { + container: HTMLElement; + editorWindow: Window; + hasBoundPartials: boolean = false; + hasPartials: boolean = false; + hoveredPartial?: number; + logs: Array = []; + observer: IntersectionObserver; + visiblePartials: Array = []; + + constructor(container: HTMLElement) { + this.container = container; + this.editorWindow = window.parent; + + // Listen for communication from the editor. + window.addEventListener('message', event => { + // All communication from the editor should is done using an 'event'. + if (!event.data?.event) { + return; + } + + // If the editor indicates it has partials, then we can show them. + if (event.data.event === 'partial') { + this.hasPartials = true; + } + + // If the editor indicates it has partials, then we can show them. + if (event.data.event === 'partialHoverOn') { + this.hoveredPartial = event.data.details.index; + } + + // If the editor indicates it has partials, then we can show them. + if (event.data.event === 'partialHoverOff') { + this.hoveredPartial = undefined; + } + + this.log(SOURCE_EDITOR, event.data); + }); + + // Send connction message to let editor know that the preview is ready. + this.send({event: 'connect'}); + + // Create intersection observer for partial inview events. + const options = { + root: null, + rootMargin: '0px', + threshold: [0, 0.1], + }; + + // Update the visible partials when the observer detects a change. + this.observer = new IntersectionObserver(entries => { + const originalVisiblePartials = JSON.stringify(this.visiblePartials); + + for (const entry of entries) { + const index = parseInt( + (entry.target as HTMLElement).dataset.partial || '-1' + ); + if (entry.isIntersecting) { + // If the partial is already visible, do nothing. + if (this.visiblePartials.includes(index)) { + continue; + } + this.visiblePartials.push(index); + } else { + this.visiblePartials = this.visiblePartials.filter( + value => + value !== + parseInt((entry.target as HTMLElement).dataset.partial || '-1') + ); + } + } + + this.visiblePartials.sort(); + + const currentVisiblePartials = JSON.stringify(this.visiblePartials); + + // No changes to the visible partials, do nothing. + if (originalVisiblePartials === currentVisiblePartials) { + return; + } + + this.send({ + event: 'partialVisible', + details: { + indexes: this.visiblePartials, + }, + }); + }, options); + } + + /** + * Utility for logging from the preview to be able to easily distinguish + * from the normal app logging. + * + * @param args Pass arguments to the console log. + */ + log(source: string, ...args: any[]) { + console.log(`[from:${source}]`, ...args); + this.logs.unshift({ + source: source, + details: cloneDeep(args), + }); + this.render(); + } + + render() { + render(this.template, this.container); + document.dispatchEvent(new CustomEvent(EVENT_RENDER_COMPLETE)); + } + + send(message: any) { + this.editorWindow.postMessage(message, '*'); + this.log(SOURCE_PREVIEW, message); + } + + get template(): TemplateResult { + if (!this.hasPartials) { + return html``; + } + + return html`
+

+ The editor and preview can communicate via + postMessage + and allows for advanced integration. The example shows some of the + possibile usage that the communication can enable. + + +

+ + ${this.templatePartials()} +
+ ${this.templateLog()}`; + } + + templatePartials(): TemplateResult { + if (!this.hasBoundPartials) { + this.hasBoundPartials = true; + + // Add partial inview observing. + document.addEventListener( + EVENT_RENDER_COMPLETE, + () => { + const partials = document.querySelectorAll('.partial'); + partials.forEach(partial => { + this.observer.observe(partial); + }); + }, + { + once: true, + } + ); + } + + return html`
+
+ ${repeat( + [0, 1, 2, 3, 4, 5], + partial => html`
{ + this.send({ + event: 'partialHoverOn', + details: {index: partial}, + }); + }} + @mouseleave=${() => { + this.send({ + event: 'partialHoverOff', + details: {index: partial}, + }); + }} + > + Example partial ${partial + 1} + { + this.send({ + event: 'partialEdit', + details: {index: partial}, + }); + }} + > + (Edit) + +
` + )} +
+
`; + } + + templateLog(): TemplateResult { + return html`
+

Communication log: (newest shown first)

+
+ ${repeat( + this.logs, + log => html`
+ ${log.source} +
+ ${repeat( + log.details || [], + detail => + html`
+ ${detail.event ?? ''} +
+
+ ${detail.details ? JSON.stringify(detail.details) : ''} +
` + )}` + )} +
+
`; + } +} + +const connectionContainer = document.querySelector('.connection'); + +if (!connectionContainer) { + throw new Error('connection container not found for preview logs'); +} + +const connector = new PreviewConnector(connectionContainer as HTMLElement); + +connector.render(); diff --git a/src/ts/projectType/generic/field/partials.ts b/src/ts/projectType/generic/field/partials.ts index 047c0bf3..e8ef2efb 100644 --- a/src/ts/projectType/generic/field/partials.ts +++ b/src/ts/projectType/generic/field/partials.ts @@ -25,12 +25,34 @@ import { import {EVENT_RENDER_COMPLETE} from '../../../editor/events'; import {EVENT_UNLOCK} from '@blinkk/selective-edit/dist/selective/events'; import {PartialData} from '../../../editor/api'; +import {PreviewEvent} from '../../../editor/preview'; import cloneDeep from 'lodash.clonedeep'; import merge from 'lodash.merge'; import {templateLoading} from '../../../editor/template'; const MODAL_KEY_NEW = 'partials_new'; +export interface PartialHoverOnEvent extends PreviewEvent { + event: 'partialHoverOn'; + details: { + index: number; + }; +} + +export interface PartialHoverOffEvent extends PreviewEvent { + event: 'partialHoverOff'; + details: { + index: number; + }; +} + +export interface PartialVisibleEvent extends PreviewEvent { + event: 'partialVisible'; + details: { + indexes: number; + }; +} + export interface GenericPartialsFieldConfig extends FieldConfig { /** * Label for adding more list items. @@ -55,7 +77,10 @@ export interface GenericPartialsFieldConfig extends FieldConfig { } export interface GenericPartialsFieldComponent { + globalConfig?: LiveEditorGlobalConfig; partials?: Record | undefined | null; + hoveredPartial?: number; + visiblePartials?: Array; } export class GenericPartialsField @@ -65,6 +90,8 @@ export class GenericPartialsField config: GenericPartialsFieldConfig; globalConfig: LiveEditorGlobalConfig; selective?: SelectiveEditor; + hoveredPartial?: number; + visiblePartials?: Array; constructor( types: Types, @@ -76,6 +103,48 @@ export class GenericPartialsField this.config = config; this.globalConfig = globalConfig; this.ListItemCls = GenericPartialListFieldItem; + + this.globalConfig?.editor?.preview.addListener( + 'partialVisible', + details => { + this.visiblePartials = details.indexes; + this.render(); + } + ); + + this.globalConfig?.editor?.preview.addListener( + 'partialHoverOn', + details => { + this.hoveredPartial = details.index; + this.render(); + } + ); + + this.globalConfig?.editor?.preview.addListener('partialHoverOff', () => { + this.hoveredPartial = undefined; + this.render(); + }); + + this.globalConfig?.editor?.preview.addListener('partialEdit', details => { + if (!this.items) { + return; + } + + for (const item of this.items) { + item.isExpanded = false; + } + + this.items[details.index].isExpanded = true; + + this.render(); + }); + + // Notify the preview that there are partials. + // This is used for the example preview and can be used to trigger + // additional features in the preview. + this.globalConfig.editor?.preview.send({ + event: 'partial', + }); } /** @@ -342,6 +411,8 @@ class GenericPartialListFieldItem extends ListFieldItem { ListFieldComponent & SortableFieldComponent; + isHovered: boolean = false; + constructor( listField: GenericPartialsFieldComponent & ListFieldComponent & @@ -353,6 +424,79 @@ class GenericPartialListFieldItem extends ListFieldItem { this.fields = fields; } + classesCollpased( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + editor: SelectiveEditor, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data: DeepObject, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + index: number + ): Record { + const classes = super.classesCollpased(editor, data, index); + + classes['selective__list__item--visible'] = + this.listField.visiblePartials?.includes(index) ?? false; + + classes['selective__list__item--hovered'] = + this.listField.hoveredPartial === index; + + return classes; + } + + classesExpanded( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + editor: SelectiveEditor, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data: DeepObject, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + index: number + ): Record { + const classes = super.classesExpanded(editor, data, index); + + classes['selective__list__item--visible'] = + this.listField.visiblePartials?.includes(index) ?? false; + + classes['selective__list__item--hovered'] = + this.listField.hoveredPartial === index; + + return classes; + } + + classesSimple( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + editor: SelectiveEditor, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + data: DeepObject, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + index: number + ): Record { + const classes = super.classesSimple(editor, data, index); + + classes['selective__list__item--visible'] = + this.listField.visiblePartials?.includes(index) ?? false; + + classes['selective__list__item--hovered'] = + this.listField.hoveredPartial === index; + + return classes; + } + + handleHoverOffItem(evt: MouseEvent, index: number) { + const editor = this.listField.globalConfig?.editor as LiveEditor; + editor.preview.send({ + event: 'partialHoverOff', + details: {index: index}, + }); + } + + handleHoverOnItem(evt: MouseEvent, index: number) { + const editor = this.listField.globalConfig?.editor as LiveEditor; + editor.preview.send({ + event: 'partialHoverOn', + details: {index: index}, + }); + } + /** * Template for how to render a preview. * @@ -364,9 +508,6 @@ class GenericPartialListFieldItem extends ListFieldItem { data: DeepObject, index?: number ): TemplateResult { - const indexLabel = html`${index !== undefined - ? html`${index + 1}` - : ''}`; const partialValue = this.fields.value; const partialKey = partialValue?.partial; if (partialKey && this.listField.partials) { @@ -381,14 +522,14 @@ class GenericPartialListFieldItem extends ListFieldItem { ); if (partial.editor?.label) { - return html`${indexLabel}${partial.editor?.label} + return html`${partial.editor?.label} ${previewValue ? html`${previewValue}` : ''}`; } - return html`${indexLabel}${partialKey}`; + return html`${partialKey}`; } return super.templatePreviewValue(editor, data, index); diff --git a/static/example/preview.html b/static/example/preview.html index d81137a6..75967e04 100644 --- a/static/example/preview.html +++ b/static/example/preview.html @@ -6,17 +6,15 @@ - + -
Previews are served by a preview server.
+
+
+ In the live environment, previews are served by a separate preview server. +
+
+
+ diff --git a/webpack.common.js b/webpack.common.js index 89f23401..7815838a 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -3,6 +3,7 @@ const path = require('path'); module.exports = { entry: { example: './src/ts/example/example.ts', + preview: './src/ts/example/preview.ts', 'server/app': './src/ts/server/app.ts', 'server/gh.callback': './src/ts/server/gh/githubCallback.ts', }, diff --git a/yarn.lock b/yarn.lock index e0dc41c5..924dee99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -208,10 +208,10 @@ "@babel/helper-validator-identifier" "^7.15.7" to-fast-properties "^2.0.0" -"@blinkk/selective-edit@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@blinkk/selective-edit/-/selective-edit-3.2.4.tgz#fd8c75fba08a3bf4e57414f5bab5253631f4dda2" - integrity sha512-wqO194WnQySU6F8jOe/Ik72/SqMzNM2ZIOf1wry12kCDx3U7vLcHzwBc1nPe8kItI/cjDmzyojxY4+BE0AVvMg== +"@blinkk/selective-edit@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@blinkk/selective-edit/-/selective-edit-3.3.0.tgz#61885655ddb430ba5a756a0c71af551974910b52" + integrity sha512-WqDYAoU3CKL4o9eQUtiq5w7Q06ThOFc4zDzL9aVrn/6gOGT00YnldZ5mAEHWs33g8WhPgD/ME9b567mzQzyJNA== dependencies: eslint-plugin-node "^11.1.0" json-stable-stringify "^1.0.1" @@ -239,9 +239,9 @@ "@cspotcode/source-map-consumer" "0.8.0" "@discoveryjs/json-ext@^0.5.0": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" - integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -258,14 +258,14 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.4.tgz#dfe0ff7ba270848d10c5add0715e04964c034b31" - integrity sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q== +"@eslint/eslintrc@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" + integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.0.0" + espree "^9.2.0" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" @@ -282,16 +282,16 @@ debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/config-array@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.6.0.tgz#b5621fdb3b32309d2d16575456cbc277fa8f021a" - integrity sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A== +"@humanwhocodes/config-array@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" + integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.0": +"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== @@ -420,9 +420,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.0.tgz#afd0519223c29c347087542cbaee2fedc0873b16" - integrity sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ== + version "8.2.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.1.tgz#13f3d69bac93c2ae008019c28783868d0a1d6605" + integrity sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -433,9 +433,9 @@ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== "@types/express-serve-static-core@^4.17.18": - version "4.17.25" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz#e42f7046adc65ece2eb6059b77aecfbe9e9f82e0" - integrity sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ== + version "4.17.26" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.26.tgz#5d9a8eeecb9d5f9d7fc1d85f541512a84638ae88" + integrity sha512-zeu3tpouA043RHxW0gzRxwCHchMgftE8GArRsvYT0ByDMbn19olQHx5jLue0LxWY6iYtXb7rXmuVtSkhy9YZvQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -517,10 +517,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/node@*", "@types/node@^16.11.9": - version "16.11.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.9.tgz#879be3ad7af29f4c1a5c433421bf99fab7047185" - integrity sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A== +"@types/node@*", "@types/node@^16.11.12": + version "16.11.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10" + integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -570,9 +570,9 @@ "@types/prosemirror-model" "*" "@types/prosemirror-view@*": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.19.1.tgz#f12309ef07dfb701d20c2e4d0292d42ba34a081b" - integrity sha512-fyQ4NVxAdfISWrE2qT8cpZdosXoH/1JuVYMBs9CdaXPbvi/8R2L2tkkcMRM314piKrO8nfYH5OBZKzP2Ax3jtA== + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/prosemirror-view/-/prosemirror-view-1.19.2.tgz#1bab4daf0f1f14313fe0d3f6b57f0a3b4ef6c50d" + integrity sha512-pmh2DuMJzva4D7SxspRKIzkV6FK2o52uAqGjq2dPYcQFPwu4+5RcS1TMjFVCh1R+Ia1Rx8wsCNIId/5+6DB0Bg== dependencies: "@types/prosemirror-model" "*" "@types/prosemirror-state" "*" @@ -635,13 +635,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/eslint-plugin@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz#05e711a2e7b68342661fde61bccbd1531c19521a" - integrity sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg== +"@typescript-eslint/eslint-plugin@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.6.0.tgz#efd8668b3d6627c46ce722c2afe813928fe120a0" + integrity sha512-MIbeMy5qfLqtgs1hWd088k1hOuRsN9JrHUPwVVKCD99EOUqScd7SrwoZl4Gso05EAP9w1kvLWUVGJOVpRPkDPA== dependencies: - "@typescript-eslint/experimental-utils" "5.4.0" - "@typescript-eslint/scope-manager" "5.4.0" + "@typescript-eslint/experimental-utils" "5.6.0" + "@typescript-eslint/scope-manager" "5.6.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -661,15 +661,15 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/experimental-utils@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz#238a7418d2da3b24874ba35385eb21cc61d2a65e" - integrity sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg== +"@typescript-eslint/experimental-utils@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.6.0.tgz#f3a5960f2004abdcac7bb81412bafc1560841c23" + integrity sha512-VDoRf3Qj7+W3sS/ZBXZh3LBzp0snDLEgvp6qj0vOAIiAPM07bd5ojQ3CTzF/QFl5AKh7Bh1ycgj6lFBJHUt/DA== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.4.0" - "@typescript-eslint/types" "5.4.0" - "@typescript-eslint/typescript-estree" "5.4.0" + "@typescript-eslint/scope-manager" "5.6.0" + "@typescript-eslint/types" "5.6.0" + "@typescript-eslint/typescript-estree" "5.6.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -683,14 +683,14 @@ "@typescript-eslint/typescript-estree" "4.33.0" debug "^4.3.1" -"@typescript-eslint/parser@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.4.0.tgz#3aa83ce349d66e39b84151f6d5464928044ca9e3" - integrity sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw== +"@typescript-eslint/parser@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.6.0.tgz#11677324659641400d653253c03dcfbed468d199" + integrity sha512-YVK49NgdUPQ8SpCZaOpiq1kLkYRPMv9U5gcMrywzI8brtwZjr/tG3sZpuHyODt76W/A0SufNjYt9ZOgrC4tLIQ== dependencies: - "@typescript-eslint/scope-manager" "5.4.0" - "@typescript-eslint/types" "5.4.0" - "@typescript-eslint/typescript-estree" "5.4.0" + "@typescript-eslint/scope-manager" "5.6.0" + "@typescript-eslint/types" "5.6.0" + "@typescript-eslint/typescript-estree" "5.6.0" debug "^4.3.2" "@typescript-eslint/scope-manager@4.33.0": @@ -701,23 +701,23 @@ "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" -"@typescript-eslint/scope-manager@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz#aaab08415f4a9cf32b870c7750ae8ba4607126a1" - integrity sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA== +"@typescript-eslint/scope-manager@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.6.0.tgz#9dd7f007dc8f3a34cdff6f79f5eaab27ae05157e" + integrity sha512-1U1G77Hw2jsGWVsO2w6eVCbOg0HZ5WxL/cozVSTfqnL/eB9muhb8THsP0G3w+BB5xAHv9KptwdfYFAUfzcIh4A== dependencies: - "@typescript-eslint/types" "5.4.0" - "@typescript-eslint/visitor-keys" "5.4.0" + "@typescript-eslint/types" "5.6.0" + "@typescript-eslint/visitor-keys" "5.6.0" "@typescript-eslint/types@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/types@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.4.0.tgz#b1c130f4b381b77bec19696c6e3366f9781ce8f2" - integrity sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA== +"@typescript-eslint/types@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.6.0.tgz#745cb1b59daadcc1f32f7be95f0f68accf38afdd" + integrity sha512-OIZffked7mXv4mXzWU5MgAEbCf9ecNJBKi+Si6/I9PpTaj+cf2x58h2oHW5/P/yTnPkKaayfjhLvx+crnl5ubA== "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" @@ -732,13 +732,13 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz#fe524fb308973c68ebeb7428f3b64499a6ba5fc0" - integrity sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA== +"@typescript-eslint/typescript-estree@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.6.0.tgz#dfbb19c9307fdd81bd9c650c67e8397821d7faf0" + integrity sha512-92vK5tQaE81rK7fOmuWMrSQtK1IMonESR+RJR2Tlc7w4o0MeEdjgidY/uO2Gobh7z4Q1hhS94Cr7r021fMVEeA== dependencies: - "@typescript-eslint/types" "5.4.0" - "@typescript-eslint/visitor-keys" "5.4.0" + "@typescript-eslint/types" "5.6.0" + "@typescript-eslint/visitor-keys" "5.6.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" @@ -753,12 +753,12 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz#09bc28efd3621f292fe88c86eef3bf4893364c8c" - integrity sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg== +"@typescript-eslint/visitor-keys@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.6.0.tgz#3e36509e103fe9713d8f035ac977235fd63cb6e6" + integrity sha512-1p7hDp5cpRFUyE3+lvA74egs+RWSgumrBpzBCDzfTFv0aQ7lIeay80yU0hIxgAhwQ6PcasW35kaOCyDOv6O/Ng== dependencies: - "@typescript-eslint/types" "5.4.0" + "@typescript-eslint/types" "5.6.0" eslint-visitor-keys "^3.0.0" "@webassemblyjs/ast@1.11.1": @@ -947,7 +947,7 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0: +acorn@^8.0.4, acorn@^8.4.1, acorn@^8.6.0: version "8.6.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== @@ -980,9 +980,9 @@ ajv-keywords@^3.5.2: integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv-keywords@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.0.0.tgz#d01b3b21715b2f63d02aa511b82fc6eb3b30083c" - integrity sha512-ULd1QMjRoH6JDNUQIfDLrlE+OgZlFaxyYCjzt58uNuUQtKXt8/U+vK/8Ql0gyn/C5mqZzUWtKMqr/4YquvTrWA== + version "5.1.0" + 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" @@ -997,9 +997,9 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.1.tgz#e73dd88eeb4b10bbcd82bee136e6fbe801664d18" - integrity sha512-6CiMNDrzv0ZR916u2T+iRunnD60uWmNn8SkdB44/6stVORUg0aAkWO7PkOhpCmjmW8f2I/G/xnowD66fxGyQJg== + version "8.8.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -1420,9 +1420,9 @@ camelcase@^6.2.0: integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== caniuse-lite@^1.0.30001280: - version "1.0.30001282" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" - integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== + version "1.0.30001285" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz#fe1e52229187e11d6670590790d669b9e03315b7" + integrity sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q== caseless@~0.12.0: version "0.12.0" @@ -1593,10 +1593,10 @@ codecov@^3.8.3: teeny-request "7.1.1" urlgrey "1.0.0" -codemirror@^5.63.3: - version "5.63.3" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.63.3.tgz#97042a242027fe0c87c09b36bc01931d37b76527" - integrity sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw== +codemirror@^5.64.0: + version "5.64.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.64.0.tgz#182eec65b62178e3cd1de8f9d88ab819cfe5f625" + integrity sha512-fqr6CtDQdJ6iNMbD8NX2gH2G876nNDk+TO1rrYkgWnqQdO3O1Xa9tK6q+psqhJJgE5SpbaDcgdfLmukoUVE8pg== color-convert@^1.9.0: version "1.9.3" @@ -1788,9 +1788,9 @@ currently-unhandled@^0.4.1: array-find-index "^1.0.1" date-fns@^2.16.1: - version "2.26.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.26.0.tgz#fa45305543c392c4f914e50775fd2a4461e60fbd" - integrity sha512-VQI812dRi3cusdY/fhoBKvc6l2W8BPWU1FNVnFH9Nttjx4AFBRzfSVb/Eyc7jBT6e9sg1XtAGsYpBQ6c/jygbg== + version "2.27.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" + integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== date-time@^3.1.0: version "3.1.0" @@ -1806,7 +1806,14 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -1862,7 +1869,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -default-gateway@^6.0.0: +default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== @@ -1929,10 +1936,10 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -devtools-protocol@0.0.901419: - version "0.0.901419" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.901419.tgz#79b5459c48fe7e1c5563c02bd72f8fec3e0cebcd" - integrity sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ== +devtools-protocol@0.0.937139: + version "0.0.937139" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.937139.tgz#bdee3751fdfdb81cb701fd3afa94b1065dafafcf" + integrity sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ== diff@^4.0.1: version "4.0.2" @@ -1974,9 +1981,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dompurify@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.3.tgz#c1af3eb88be47324432964d8abc75cf4b98d634c" - integrity sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg== + version "2.3.4" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.4.tgz#1cf5cf0105ccb4debdf6db162525bd41e6ddacc6" + integrity sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ== dot-prop@^5.2.0: version "5.3.0" @@ -1996,9 +2003,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.896: - version "1.3.903" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.903.tgz#e2d3c3809f4ef05fdbe5cc88969dfc94b1bd15b9" - integrity sha512-+PnYAyniRRTkNq56cqYDLq9LyklZYk0hqoDy9GpcU11H5QjRmFZVDbxtgHUMK/YzdNTcn1XWP5gb+hFlSCr20g== + version "1.4.13" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.13.tgz#6b8a21a71c6f30b4a4def54d3afe94e0ddbc58b3" + integrity sha512-ih5tIhzEuf78pBY70FXLo+Pw73R5MPPPcXb4CGBMJaCQt/qo/IGIesKXmswpemVCKSE2Bulr5FslUv7gAWJoOw== emittery@^0.8.0: version "0.8.1" @@ -2140,10 +2147,10 @@ eslint-plugin-prettier@^4.0.0: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-sort-class-members@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-sort-class-members/-/eslint-plugin-sort-class-members-1.14.0.tgz#dcbad3b6352c6c44ba2c59d4f90c57dc99b6c2c1" - integrity sha512-Bp/mML9epXy+ozZlKQPUTQhAkfuOc4v1UcIoMVvmRL3sprI4b1GG3DcW8jjadSrGWBzDVG/O3aGTLB2yF6DiFQ== +eslint-plugin-sort-class-members@^1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-sort-class-members/-/eslint-plugin-sort-class-members-1.14.1.tgz#e701d6341e267ed0d0bf44c8293ff1e15b324e3c" + integrity sha512-/Q/cm3h4N9DBNYvJMQMhluucSmr3Yydr9U0BgGcXUQe/rgWdXKSymZ5Ewcf4vmAG0bbTmAYmekuMnYYrqlu9Rg== eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" @@ -2153,10 +2160,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-6.0.0.tgz#9cf45b13c5ac8f3d4c50f46a5121f61b3e318978" - integrity sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA== +eslint-scope@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" + integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2185,7 +2192,7 @@ eslint-visitor-keys@^2.0.0: 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.0.0: +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== @@ -2236,13 +2243,13 @@ eslint@^7.10.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -eslint@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.2.0.tgz#44d3fb506d0f866a506d97a0fc0e90ee6d06a815" - integrity sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw== +eslint@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.4.1.tgz#d6531bbf3e598dffd7c0c7d35ec52a0b30fdfa2d" + integrity sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg== dependencies: - "@eslint/eslintrc" "^1.0.4" - "@humanwhocodes/config-array" "^0.6.0" + "@eslint/eslintrc" "^1.0.5" + "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -2250,10 +2257,10 @@ eslint@^8.2.0: doctrine "^3.0.0" enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^6.0.0" + eslint-scope "^7.1.0" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.0.0" - espree "^9.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.2.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -2289,14 +2296,14 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -espree@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.0.0.tgz#e90a2965698228502e771c7a58489b1a9d107090" - integrity sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ== +espree@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" + integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== dependencies: - acorn "^8.5.0" + acorn "^8.6.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.0.0" + eslint-visitor-keys "^3.1.0" esprima@^4.0.0: version "4.0.1" @@ -2902,9 +2909,9 @@ http-errors@~1.7.2: toidentifier "1.0.0" http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== http-proxy-agent@^4.0.0: version "4.0.1" @@ -2987,6 +2994,11 @@ ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -3065,32 +3077,17 @@ inquirer@^7.3.3: strip-ansi "^6.0.0" through "^2.3.6" -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== - dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" - interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - ip@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -3186,13 +3183,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-npm@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" @@ -3354,9 +3344,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.5.tgz#a2580107e71279ea6d661ddede929ffc6d693384" - integrity sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.1.tgz#7085857f17d2441053c6ce5c3b8fdf6882289397" + integrity sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -3369,9 +3359,9 @@ javascript-time-ago@^2.3.10: relative-time-format "^1.0.6" jest-worker@^27.0.6: - version "27.3.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.3.1.tgz#0def7feae5b8042be38479799aeb7b5facac24b2" - integrity sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g== + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.2.tgz#0fb123d50955af1a450267787f340a1bf7e12bc4" + integrity sha512-0QMy/zPovLfUPyHuOuuU4E+kGACXXE84nRnq6lBVI9GJg5DCBiA97SATi+ZP8CpiJwEQy1oCPjRBf8AnLjN+Ag== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -3489,9 +3479,9 @@ levn@^0.4.1: type-check "~0.4.0" lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lit-html@^2.0.2: version "2.0.2" @@ -3579,13 +3569,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3632,10 +3615,10 @@ marked@^3.0.8: resolved "https://registry.yarnpkg.com/marked/-/marked-3.0.8.tgz#2785f0dc79cbdc6034be4bb4f0f0a396bd3f8aeb" integrity sha512-0gVrAjo5m0VZSJb4rpL59K1unJAMb/hm8HRXqasD8VeC8m91ytDPMritgFSlKonfdt+rRYYpP/JfLxgIX8yoSw== -marked@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.4.tgz#d7cb16adaa474291307c521824c5716d32b95c36" - integrity sha512-d8v7SensuOj+gxi0TGbqb2WtS60ycZfZuqtmAB9yz0JLotKerTob/47Qk9oLCDmn5G1dcdn3d5ydR+ih9dvS0A== +marked@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.6.tgz#cd199503102b6807354f00574348d41ad4fd25d2" + integrity sha512-+H0bTf8DM8zLuFBUm/2VklxaCrwlBFgoJzHJcMZCnZ9cPgsllHwKpL6TPLdDeA38yPluMuVKOL1hO5w6HmG5Mg== matcher@^3.0.0: version "3.0.0" @@ -3665,9 +3648,9 @@ mem@^8.0.0: mimic-fn "^3.1.0" memfs@^3.2.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2" - integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg== + version "3.4.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.0.tgz#8bc12062b973be6b295d4340595736a656f0a257" + integrity sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA== dependencies: fs-monkey "1.0.3" @@ -4027,13 +4010,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -onigasm@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/onigasm/-/onigasm-2.2.5.tgz#cc4d2a79a0fa0b64caec1f4c7ea367585a676892" - integrity sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA== - dependencies: - lru-cache "^5.1.1" - open@^8.0.9: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" @@ -4325,10 +4301,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.1.2, prettier@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== +prettier@^2.1.2, prettier@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== pretty-ms@^7.0.1: version "7.0.1" @@ -4411,9 +4387,9 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0: prosemirror-model "^1.0.0" prosemirror-view@^1.18.7: - version "1.23.2" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.23.2.tgz#20606ab3faad8a6a5320182256e92a2b96a87d31" - integrity sha512-iPgRw6tpcN+KH1yKmSnRmDKsJBVkWLFP6laHcz9rh/n0Ndz7YKKCDldtw6FhHBYoWmZeubbhV/rrQW0VCDG9iw== + version "1.23.3" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.23.3.tgz#9ba85fefaf45e813c46562b694fc5f6f9a5cba9c" + integrity sha512-89icyMdXXwxmTxYj0TIuG5M/d0iKeu79tr+PVtC/4qtCOoHrPSPrblJcFOuOWcxGlA/Ei8PqJB4g5HkKR8jWvQ== dependencies: prosemirror-model "^1.14.3" prosemirror-state "^1.0.0" @@ -4467,13 +4443,13 @@ pupa@^2.1.1: dependencies: escape-goat "^2.0.0" -puppeteer@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-11.0.0.tgz#0808719c38e15315ecc1b1c28911f1c9054d201f" - integrity sha512-6rPFqN1ABjn4shgOICGDBITTRV09EjXVqhDERBDKwCLz0UyBxeeBH6Ay0vQUJ84VACmlxwzOIzVEJXThcF3aNg== +puppeteer@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-12.0.1.tgz#ae79d0e174a07563e0bf2e05c94ccafce3e70033" + integrity sha512-YQ3GRiyZW0ddxTW+iiQcv2/8TT5c3+FcRUCg7F8q2gHqxd5akZN400VRXr9cHQKLWGukmJLDiE72MrcLK9tFHQ== dependencies: debug "4.3.2" - devtools-protocol "0.0.901419" + devtools-protocol "0.0.937139" extract-zip "2.0.1" https-proxy-agent "5.0.0" node-fetch "2.6.5" @@ -4785,12 +4761,13 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.43.4: - version "1.43.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.43.4.tgz#68c7d6a1b004bef49af0d9caf750e9b252105d1f" - integrity sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg== +sass@^1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb" + integrity sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw== dependencies: chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" @@ -4938,12 +4915,12 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shiki@^0.9.12: - version "0.9.12" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.9.12.tgz#70cbc8c1bb78ff7b356f84a7eecdb040efddd247" - integrity sha512-VXcROdldv0/Qu0w2XvzU4IrvTeBNs/Kj/FCmtcEXGz7Tic/veQzliJj6tEiAgoKianhQstpYmbPDStHU5Opqcw== + version "0.9.14" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.9.14.tgz#6b3e369edf76049ae7ad7c2b0498c35c200b8dd7" + integrity sha512-uLHjjyJdNsMzF9GOF8vlOuZ8BwigiYPraMN5yjC826k8K7Xu90JQcC5GUNrzRibLgT2EOk9597I1IX+jRdA8nw== dependencies: jsonc-parser "^3.0.0" - onigasm "^2.2.5" + vscode-oniguruma "^1.6.1" vscode-textmate "5.2.0" signal-exit@^3.0.2, signal-exit@^3.0.3: @@ -4975,12 +4952,12 @@ slice-ansi@^4.0.0: is-fullwidth-code-point "^3.0.0" sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" - uuid "^3.4.0" + uuid "^8.3.2" websocket-driver "^0.7.4" source-map-support@^0.5.19, source-map-support@~0.5.20: @@ -5244,9 +5221,9 @@ supports-color@^8.0.0, supports-color@^8.1.0: has-flag "^4.0.0" table@^6.0.9: - version "6.7.3" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.3.tgz#255388439715a738391bd2ee4cbca89a4d05a9b7" - integrity sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw== + version "6.7.5" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" + integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -5498,10 +5475,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedoc@^0.22.9: - version "0.22.9" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.9.tgz#7e3f4f72586bbef4c2382f0afcea8e0f9270b712" - integrity sha512-84PjudoXVcap6bwdZFbYIUWlgdz/iLV09ZHwrCzhtHWXaDQG6mlosJ8te6DSThuRkRvQjp46HO+qY/P7Gpm78g== +typedoc@^0.22.10: + version "0.22.10" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.10.tgz#221e1a2b17bcb71817ef027dc4c4969d572e7620" + integrity sha512-hQYZ4WtoMZ61wDC6w10kxA42+jclWngdmztNZsDvIz7BMJg7F2xnT+uYsUa7OluyKossdFj9E9Ye4QOZKTy8SA== dependencies: glob "^7.2.0" lunr "^2.3.9" @@ -5598,12 +5575,12 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.3, uuid@^3.4.0: +uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.0.0: +uuid@^8.0.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -5626,6 +5603,11 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vscode-oniguruma@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz#2bf4dfcfe3dd2e56eb549a3068c8ee39e6c30ce5" + integrity sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ== + vscode-textmate@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" @@ -5636,10 +5618,10 @@ w3c-keyname@^2.2.0: resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b" integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw== -watchpack@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" - integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -5692,10 +5674,10 @@ webpack-dev-middleware@^5.2.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.5.0.tgz#614b5112cfa4730a4801bb4ddebb3be5b0d70497" - integrity sha512-Ss4WptsUjYa+3hPI4iYZYEc8FrtnfkaPrm5WTjk9ux5kiCS718836srs0ppKMHRaCHP5mQ6g4JZGcfDdGbCjpQ== +webpack-dev-server@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a" + integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg== dependencies: ansi-html-community "^0.0.8" bonjour "^3.5.0" @@ -5703,17 +5685,17 @@ webpack-dev-server@^4.5.0: colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" + default-gateway "^6.0.3" del "^6.0.0" express "^4.17.1" graceful-fs "^4.2.6" html-entities "^2.3.2" http-proxy-middleware "^2.0.0" - internal-ip "^6.2.0" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" portfinder "^1.0.28" - schema-utils "^3.1.0" + schema-utils "^4.0.0" selfsigned "^1.10.11" serve-index "^1.9.1" sockjs "^0.3.21" @@ -5736,10 +5718,10 @@ webpack-sources@^3.2.2: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw== -webpack@^5.64.1: - version "5.64.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.64.1.tgz#fd59840c16f04fe315f2b2598a85026f12dfa1bb" - integrity sha512-b4FHmRgaaAjP+aVOVz41a9Qa5SmkUPQ+u8FntTQ1roPHahSComB6rXnLwc976VhUY4CqTaLu5mCswuHiNhOfVw== +webpack@^5.65.0: + version "5.65.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" + integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" @@ -5763,7 +5745,7 @@ webpack@^5.64.1: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" + watchpack "^2.3.1" webpack-sources "^3.2.2" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: @@ -5855,11 +5837,16 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@8.2.3, ws@^8.1.0: +ws@8.2.3: version "8.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== +ws@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.3.0.tgz#7185e252c8973a60d57170175ff55fdbd116070d" + integrity sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw== + xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" @@ -5875,11 +5862,6 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"