From d1b9e4407597759f974f78d074f5a9daa099fe0f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 25 Apr 2023 10:23:58 +0530 Subject: [PATCH] Remove simple-markdown --- cSpell.json | 1 + docs/config/setup/modules/mermaidAPI.md | 16 +- packages/mermaid/package.json | 3 +- packages/mermaid/src/mermaidAPI.ts | 8 +- .../mermaid/src/rendering-util/createText.js | 14 - .../rendering-util/handle-markdown-text.js | 94 ----- .../handle-markdown-text.spec.js | 253 ------------ .../handle-markdown-text.spec.ts | 388 ++++++++++++++++++ .../rendering-util/handle-markdown-text.ts | 53 +++ pnpm-lock.yaml | 272 +++++------- 10 files changed, 546 insertions(+), 556 deletions(-) delete mode 100644 packages/mermaid/src/rendering-util/handle-markdown-text.js delete mode 100644 packages/mermaid/src/rendering-util/handle-markdown-text.spec.js create mode 100644 packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts create mode 100644 packages/mermaid/src/rendering-util/handle-markdown-text.ts diff --git a/cSpell.json b/cSpell.json index 94276b683..d2a298a94 100644 --- a/cSpell.json +++ b/cSpell.json @@ -65,6 +65,7 @@ "mdast", "mdbook", "mermerd", + "micromark", "mindaugas", "mindmap", "mindmaps", diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index 683850fd3..ef04c10c3 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -96,7 +96,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:673](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L673) +[mermaidAPI.ts:667](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L667) ## Functions @@ -127,7 +127,7 @@ Return the last node appended #### Defined in -[mermaidAPI.ts:312](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L312) +[mermaidAPI.ts:306](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L306) --- @@ -153,7 +153,7 @@ the cleaned up svgCode #### Defined in -[mermaidAPI.ts:263](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L263) +[mermaidAPI.ts:257](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L257) --- @@ -179,7 +179,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:192](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L192) +[mermaidAPI.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L186) --- @@ -202,7 +202,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:240](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L240) +[mermaidAPI.ts:234](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L234) --- @@ -229,7 +229,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:176](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L176) +[mermaidAPI.ts:170](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L170) --- @@ -295,7 +295,7 @@ Put the svgCode into an iFrame. Return the iFrame code #### Defined in -[mermaidAPI.ts:291](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L291) +[mermaidAPI.ts:285](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L285) --- @@ -320,4 +320,4 @@ Remove any existing elements from the given document #### Defined in -[mermaidAPI.ts:362](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L362) +[mermaidAPI.ts:356](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L356) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 244ebe453..ae68f23b5 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -53,7 +53,6 @@ }, "dependencies": { "@braintree/sanitize-url": "^6.0.2", - "@khanacademy/simple-markdown": "^0.9.0", "cytoscape": "^3.23.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.1.0", @@ -64,6 +63,8 @@ "elkjs": "^0.8.2", "khroma": "^2.0.0", "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "micromark": "^3.1.0", "non-layered-tidy-tree-layout": "^2.0.2", "stylis": "^4.1.3", "ts-dedent": "^2.2.0", diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index 5e9d0ead6..e96407638 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -154,13 +154,7 @@ export const encodeEntities = function (text: string): string { * @returns */ export const decodeEntities = function (text: string): string { - let txt = text; - - txt = txt.replace(/fl°°/g, '&#'); - txt = txt.replace(/fl°/g, '&'); - txt = txt.replace(/¶ß/g, ';'); - - return txt; + return text.replace(/fl°°/g, '&#').replace(/fl°/g, '&').replace(/¶ß/g, ';'); }; // append !important; to each cssClass followed by a final !important, all enclosed in { } diff --git a/packages/mermaid/src/rendering-util/createText.js b/packages/mermaid/src/rendering-util/createText.js index a5438b562..d9ba1b9cd 100644 --- a/packages/mermaid/src/rendering-util/createText.js +++ b/packages/mermaid/src/rendering-util/createText.js @@ -1,7 +1,4 @@ -import { select } from 'd3'; import { log } from '../logger.js'; -import { getConfig } from '../config.js'; -import { evaluate } from '../diagrams/common/common.js'; import { decodeEntities } from '../mermaidAPI.js'; import { markdownToHTML, markdownToLines } from '../rendering-util/handle-markdown-text.js'; /** @@ -207,17 +204,6 @@ export const createText = ( return vertexNode; } else { const structuredText = markdownToLines(text); - const special = ['"', "'", '.', ',', ':', ';', '!', '?', '(', ')', '[', ']', '{', '}']; - let lastWord; - structuredText.forEach((line) => { - line.forEach((word) => { - if (special.includes(word.content) && lastWord) { - lastWord.content += word.content; - word.content = ''; - } - lastWord = word; - }); - }); const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground); return svgLabel; } diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.js b/packages/mermaid/src/rendering-util/handle-markdown-text.js deleted file mode 100644 index 93704b2fe..000000000 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.js +++ /dev/null @@ -1,94 +0,0 @@ -import SimpleMarkdown from '@khanacademy/simple-markdown'; - -/** - * - * @param markdown - */ -function preprocessMarkdown(markdown) { - // Replace multiple newlines with a single newline - const withoutMultipleNewlines = markdown.replace(/\n{2,}/g, '\n'); - // Remove extra spaces at the beginning of each line - const withoutExtraSpaces = withoutMultipleNewlines.replace(/^\s+/gm, ''); - return withoutExtraSpaces; -} - -/** - * - * @param markdown - */ -export function markdownToLines(markdown) { - const preprocessedMarkdown = preprocessMarkdown(markdown); - const mdParse = SimpleMarkdown.defaultBlockParse; - const syntaxTree = mdParse(preprocessedMarkdown); - - let lines = [[]]; - let currentLine = 0; - - /** - * - * @param node - * @param parentType - */ - function processNode(node, parentType) { - if (node.type === 'text') { - const textLines = node.content.split('\n'); - - textLines.forEach((textLine, index) => { - if (index !== 0) { - currentLine++; - lines.push([]); - } - - // textLine.split(/ (?=[^!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]+)/).forEach((word) => { - textLine.split(' ').forEach((word) => { - if (word) { - lines[currentLine].push({ content: word, type: parentType || 'normal' }); - } - }); - }); - } else if (node.type === 'strong' || node.type === 'em') { - node.content.forEach((contentNode) => { - processNode(contentNode, node.type); - }); - } - } - - syntaxTree.forEach((treeNode) => { - if (treeNode.type === 'paragraph') { - treeNode.content.forEach((contentNode) => { - processNode(contentNode); - }); - } - }); - - return lines; -} - -/** - * - * @param markdown - */ -export function markdownToHTML(markdown) { - const mdParse = SimpleMarkdown.defaultBlockParse; - const syntaxTree = mdParse(markdown); - - /** - * - * @param node - */ - function output(node) { - if (node.type === 'text') { - return node.content.replace(/\n/g, '
'); - } else if (node.type === 'strong') { - return `${node.content.map(output).join('')}`; - } else if (node.type === 'em') { - return `${node.content.map(output).join('')}`; - } else if (node.type === 'paragraph') { - return `

${node.content.map(output).join('')}

`; - } else { - return ''; - } - } - - return syntaxTree.map(output).join(''); -} diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.js b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.js deleted file mode 100644 index 5e74a9956..000000000 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.js +++ /dev/null @@ -1,253 +0,0 @@ -// import { test } from 'vitest'; -import { markdownToLines, markdownToHTML } from './handle-markdown-text'; -import { test } from 'vitest'; - -test('markdownToLines - Basic test', () => { - const input = `This is regular text -Here is a new line -There is some words **with a bold** section -Here is a line *with an italic* section`; - - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'regular', type: 'normal' }, - { content: 'text', type: 'normal' }, - ], - [ - { content: 'Here', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'new', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - [ - { content: 'There', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'some', type: 'normal' }, - { content: 'words', type: 'normal' }, - { content: 'with', type: 'strong' }, - { content: 'a', type: 'strong' }, - { content: 'bold', type: 'strong' }, - { content: 'section', type: 'normal' }, - ], - [ - { content: 'Here', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'line', type: 'normal' }, - { content: 'with', type: 'em' }, - { content: 'an', type: 'em' }, - { content: 'italic', type: 'em' }, - { content: 'section', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - Empty input', () => { - const input = ''; - const expectedOutput = [[]]; - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - No formatting', () => { - const input = `This is a simple test -with no formatting`; - - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'simple', type: 'normal' }, - { content: 'test', type: 'normal' }, - ], - [ - { content: 'with', type: 'normal' }, - { content: 'no', type: 'normal' }, - { content: 'formatting', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - Only bold formatting', () => { - const input = `This is a **bold** test`; - - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'bold', type: 'strong' }, - { content: 'test', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - paragraph 1', () => { - const input = `**Start** with - a second line`; - - const expectedOutput = [ - [ - { content: 'Start', type: 'strong' }, - { content: 'with', type: 'normal' }, - ], - [ - { content: 'a', type: 'normal' }, - { content: 'second', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - paragraph', () => { - const input = `**Start** with - - a second line`; - - const expectedOutput = [ - [ - { content: 'Start', type: 'strong' }, - { content: 'with', type: 'normal' }, - ], - [ - { content: 'a', type: 'normal' }, - { content: 'second', type: 'normal' }, - { content: 'line', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToLines - Only italic formatting', () => { - const input = `This is an *italic* test`; - - const expectedOutput = [ - [ - { content: 'This', type: 'normal' }, - { content: 'is', type: 'normal' }, - { content: 'an', type: 'normal' }, - { content: 'italic', type: 'em' }, - { content: 'test', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -it('markdownToLines - Mixed formatting', () => { - const input = `*Italic* and **bold** formatting`; - - const expectedOutput = [ - [ - { content: 'Italic', type: 'em' }, - { content: 'and', type: 'normal' }, - { content: 'bold', type: 'strong' }, - { content: 'formatting', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -it('markdownToLines - Mixed formatting', () => { - const input = `The dog in **the** hog... a *very long text* about it -Word!`; - - const expectedOutput = [ - [ - { content: 'The', type: 'normal' }, - { content: 'dog', type: 'normal' }, - { content: 'in', type: 'normal' }, - { content: 'the', type: 'strong' }, - { content: 'hog', type: 'normal' }, - { content: '.', type: 'normal' }, - { content: '.', type: 'normal' }, - { content: '.', type: 'normal' }, - { content: 'a', type: 'normal' }, - { content: 'very', type: 'em' }, - { content: 'long', type: 'em' }, - { content: 'text', type: 'em' }, - { content: 'about', type: 'normal' }, - { content: 'it', type: 'normal' }, - ], - [ - { content: 'Word', type: 'normal' }, - { content: '!', type: 'normal' }, - ], - ]; - - const output = markdownToLines(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Basic test', () => { - const input = `This is regular text -Here is a new line -There is some words **with a bold** section -Here is a line *with an italic* section`; - - const expectedOutput = `

This is regular text
Here is a new line
There is some words with a bold section
Here is a line with an italic section

`; - - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Empty input', () => { - const input = ''; - const expectedOutput = ''; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - No formatting', () => { - const input = `This is a simple test -with no formatting`; - - const expectedOutput = `

This is a simple test
with no formatting

`; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Only bold formatting', () => { - const input = `This is a **bold** test`; - - const expectedOutput = `

This is a bold test

`; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Only italic formatting', () => { - const input = `This is an *italic* test`; - - const expectedOutput = `

This is an italic test

`; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); - -test('markdownToHTML - Mixed formatting', () => { - const input = `*Italic* and **bold** formatting`; - - const expectedOutput = `

Italic and bold formatting

`; - const output = markdownToHTML(input); - expect(output).toEqual(expectedOutput); -}); diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts new file mode 100644 index 000000000..2dfd518d9 --- /dev/null +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts @@ -0,0 +1,388 @@ +import { markdownToLines, markdownToHTML } from './handle-markdown-text.js'; +import { test, expect } from 'vitest'; + +describe('markdownToLines', () => { + test('Basic test', () => { + const input = `This is regular text +Here is a new line +There is some words **with a bold** section +Here is a line *with an italic* section`; + + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` + [ + [ + { + "content": "This", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "regular", + "type": "normal", + }, + { + "content": "text", + "type": "normal", + }, + ], + [ + { + "content": "Here", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "a", + "type": "normal", + }, + { + "content": "new", + "type": "normal", + }, + { + "content": "line", + "type": "normal", + }, + ], + [ + { + "content": "There", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "some", + "type": "normal", + }, + { + "content": "words", + "type": "normal", + }, + { + "content": "with", + "type": "strong", + }, + { + "content": "a", + "type": "strong", + }, + { + "content": "bold", + "type": "strong", + }, + { + "content": "section", + "type": "normal", + }, + ], + [ + { + "content": "Here", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "a", + "type": "normal", + }, + { + "content": "line", + "type": "normal", + }, + { + "content": "with", + "type": "emphasis", + }, + { + "content": "an", + "type": "emphasis", + }, + { + "content": "italic", + "type": "emphasis", + }, + { + "content": "section", + "type": "normal", + }, + ], + ] + `); + }); + + test('Empty input', () => { + const input = ''; + const expectedOutput = [[]]; + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); + + test('No formatting', () => { + const input = `This is a simple test +with no formatting`; + + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'simple', type: 'normal' }, + { content: 'test', type: 'normal' }, + ], + [ + { content: 'with', type: 'normal' }, + { content: 'no', type: 'normal' }, + { content: 'formatting', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only bold formatting', () => { + const input = `This is a **bold** test`; + + const expectedOutput = [ + [ + { content: 'This', type: 'normal' }, + { content: 'is', type: 'normal' }, + { content: 'a', type: 'normal' }, + { content: 'bold', type: 'strong' }, + { content: 'test', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); + + test('paragraph 1', () => { + const input = `**Start** with + a second line`; + + const expectedOutput = [ + [ + { content: 'Start', type: 'strong' }, + { content: 'with', type: 'normal' }, + ], + [ + { content: 'a', type: 'normal' }, + { content: 'second', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); + + test('paragraph', () => { + const input = `**Start** with + + a second line`; + + const expectedOutput = [ + [ + { content: 'Start', type: 'strong' }, + { content: 'with', type: 'normal' }, + ], + [ + { content: 'a', type: 'normal' }, + { content: 'second', type: 'normal' }, + { content: 'line', type: 'normal' }, + ], + ]; + + const output = markdownToLines(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only italic formatting', () => { + const input = `This is an *italic* test`; + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` + [ + [ + { + "content": "This", + "type": "normal", + }, + { + "content": "is", + "type": "normal", + }, + { + "content": "an", + "type": "normal", + }, + { + "content": "italic", + "type": "emphasis", + }, + { + "content": "test", + "type": "normal", + }, + ], + ] + `); + }); + + test('Mixed formatting', () => { + const input = `*Italic* and **bold** formatting`; + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` + [ + [ + { + "content": "Italic", + "type": "emphasis", + }, + { + "content": "and", + "type": "normal", + }, + { + "content": "bold", + "type": "strong", + }, + { + "content": "formatting", + "type": "normal", + }, + ], + ] + `); + }); + + test('Mixed formatting with newline', () => { + const input = `The dog in **the** hog... a *very long text* about it +Word!`; + + const output = markdownToLines(input); + expect(output).toMatchInlineSnapshot(` + [ + [ + { + "content": "The", + "type": "normal", + }, + { + "content": "dog", + "type": "normal", + }, + { + "content": "in", + "type": "normal", + }, + { + "content": "the", + "type": "strong", + }, + { + "content": "hog...", + "type": "normal", + }, + { + "content": "a", + "type": "normal", + }, + { + "content": "very", + "type": "emphasis", + }, + { + "content": "long", + "type": "emphasis", + }, + { + "content": "text", + "type": "emphasis", + }, + { + "content": "about", + "type": "normal", + }, + { + "content": "it", + "type": "normal", + }, + ], + [ + { + "content": "Word!", + "type": "normal", + }, + ], + ] + `); + }); +}); + +describe('markdownToHTML', () => { + test('Basic test', () => { + const input = `This is regular text +Here is a new line +There is some words **with a bold** section +Here is a line *with an italic* section`; + + const output = markdownToHTML(input); + expect(output).toMatchInlineSnapshot( + '"

This is regular text
Here is a new line
There is some words with a bold section
Here is a line with an italic section

"' + ); + }); + + test('Empty input', () => { + const input = ''; + const expectedOutput = ''; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('No formatting', () => { + const input = `This is a simple test +with no formatting`; + + const expectedOutput = `

This is a simple test
with no formatting

`; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only bold formatting', () => { + const input = `This is a **bold** test`; + + const expectedOutput = `

This is a bold test

`; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('Only italic formatting', () => { + const input = `This is an *italic* test`; + + const expectedOutput = `

This is an italic test

`; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); + + test('Mixed formatting', () => { + const input = `*Italic* and **bold** formatting`; + + const expectedOutput = `

Italic and bold formatting

`; + const output = markdownToHTML(input); + expect(output).toEqual(expectedOutput); + }); +}); diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.ts new file mode 100644 index 000000000..4fcbaa0b8 --- /dev/null +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.ts @@ -0,0 +1,53 @@ +import { micromark } from 'micromark'; +import { fromMarkdown } from 'mdast-util-from-markdown'; +import type { Content } from 'mdast'; + +function preprocessMarkdown(markdown: string): string { + // Replace multiple newlines with a single newline + const withoutMultipleNewlines = markdown.replace(/\n{2,}/g, '\n'); + // Remove extra spaces at the beginning of each line + const withoutExtraSpaces = withoutMultipleNewlines.replace(/^\s+/gm, ''); + return withoutExtraSpaces; +} + +export function markdownToLines(markdown: string) { + const preprocessedMarkdown = preprocessMarkdown(markdown); + const { children } = fromMarkdown(preprocessedMarkdown); + const lines: { content: string; type: string }[][] = [[]]; + let currentLine = 0; + + function processNode(node: Content, parentType?: string) { + if (node.type === 'text') { + const textLines = node.value.split('\n'); + textLines.forEach((textLine, index) => { + if (index !== 0) { + currentLine++; + lines.push([]); + } + textLine.split(' ').forEach((word) => { + if (word) { + lines[currentLine].push({ content: word, type: parentType || 'normal' }); + } + }); + }); + } else if (node.type === 'strong' || node.type === 'emphasis') { + node.children.forEach((contentNode) => { + processNode(contentNode, node.type); + }); + } + } + + children.forEach((treeNode) => { + if (treeNode.type === 'paragraph') { + treeNode.children.forEach((contentNode) => { + processNode(contentNode); + }); + } + }); + + return lines; +} + +export function markdownToHTML(markdown: string): string { + return micromark(preprocessMarkdown(markdown)).replaceAll('\n', '
'); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51762eb2d..596a4ae8f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -181,9 +181,6 @@ importers: '@braintree/sanitize-url': specifier: ^6.0.2 version: 6.0.2 - '@khanacademy/simple-markdown': - specifier: ^0.9.0 - version: 0.9.2(react-dom@16.14.0)(react@16.14.0) cytoscape: specifier: ^3.23.0 version: 3.23.0 @@ -214,6 +211,12 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 + mdast-util-from-markdown: + specifier: ^1.3.0 + version: 1.3.0 + micromark: + specifier: ^3.1.0 + version: 3.1.0 non-layered-tidy-tree-layout: specifier: ^2.0.2 version: 2.0.2 @@ -331,7 +334,7 @@ importers: version: 1.0.0 vitepress: specifier: ^1.0.0-alpha.72 - version: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) + version: 1.0.0-alpha.72(@algolia/client-search@4.14.2) vitepress-plugin-search: specifier: ^1.0.4-alpha.20 version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-alpha.72)(vue@3.2.47) @@ -384,7 +387,7 @@ importers: devDependencies: webpack: specifier: ^5.74.0 - version: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + version: 5.75.0(webpack-cli@4.10.0) webpack-cli: specifier: ^4.10.0 version: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) @@ -733,6 +736,7 @@ packages: dependencies: '@applitools/eg-frpc': 1.0.2 '@applitools/eg-socks5-proxy-server': 0.5.4 + '@applitools/execution-grid-tunnel': 1.0.24 '@applitools/logger': 1.1.48 dotenv: 16.0.3 encoding: 0.1.13 @@ -1097,7 +1101,7 @@ packages: '@babel/traverse': 7.19.1 '@babel/types': 7.19.0 convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.1 lodash: 4.17.21 @@ -1374,7 +1378,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.19.1 '@babel/types': 7.19.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -1899,10 +1903,10 @@ packages: resolution: {integrity: sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==} dev: true - /@docsearch/js@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): + /@docsearch/js@3.3.3(@algolia/client-search@4.14.2): resolution: {integrity: sha512-2xAv2GFuHzzmG0SSZgf8wHX0qZX8n9Y1ZirKUk5Wrdc+vH9CL837x2hZIUdwcPZI9caBA+/CzxsS68O4waYjUQ==} dependencies: - '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@docsearch/react': 3.3.3(@algolia/client-search@4.14.2) preact: 10.11.0 transitivePeerDependencies: - '@algolia/client-search' @@ -1911,7 +1915,7 @@ packages: - react-dom dev: true - /@docsearch/react@3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0): + /@docsearch/react@3.3.3(@algolia/client-search@4.14.2): resolution: {integrity: sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' @@ -1929,8 +1933,6 @@ packages: '@algolia/autocomplete-preset-algolia': 1.7.4(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@docsearch/css': 3.3.3 algoliasearch: 4.14.2 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) transitivePeerDependencies: - '@algolia/client-search' dev: true @@ -2162,7 +2164,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.5.1 globals: 13.19.0 ignore: 5.2.0 @@ -2204,7 +2206,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2492,17 +2494,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@khanacademy/simple-markdown@0.9.2(react-dom@16.14.0)(react@16.14.0): - resolution: {integrity: sha512-iRkSaVuUT+ho8B0aY0uLGgfS1YU84l/mSwjJTh0N0k0WzjdJUJY4+Eh56kn8whwD8QX6uNblAT0lT5ICATLtZg==} - peerDependencies: - react: 16.14.0 - react-dom: 16.14.0 - dependencies: - '@types/react': 18.0.33 - react: 16.14.0 - react-dom: 16.14.0(react@16.14.0) - dev: false - /@leichtgewicht/ip-codec@2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true @@ -2935,7 +2926,6 @@ packages: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 - dev: true /@types/dompurify@3.0.2: resolution: {integrity: sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==} @@ -3088,7 +3078,6 @@ packages: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 2.0.6 - dev: true /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} @@ -3110,7 +3099,6 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true /@types/node-fetch@2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} @@ -3135,10 +3123,6 @@ packages: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: false - /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true @@ -3147,14 +3131,6 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react@18.0.33: - resolution: {integrity: sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.3 - csstype: 3.1.2 - dev: false - /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: @@ -3172,10 +3148,6 @@ packages: rollup: 2.79.1 dev: true - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - dev: false - /@types/semver@7.3.12: resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} dev: true @@ -3225,7 +3197,6 @@ packages: /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - dev: true /@types/uuid@9.0.1: resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} @@ -3281,7 +3252,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/type-utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.0 @@ -3306,7 +3277,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.0 '@typescript-eslint/types': 5.59.0 '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: @@ -3333,7 +3304,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.59.0(typescript@5.0.4) '@typescript-eslint/utils': 5.59.0(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 @@ -3357,7 +3328,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.0 '@typescript-eslint/visitor-keys': 5.59.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -3402,7 +3373,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.2.2(@types/node@18.16.0) + vite: 4.2.2 vue: 3.2.47 dev: true @@ -3745,7 +3716,7 @@ packages: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) dev: true @@ -3881,7 +3852,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -4171,7 +4142,7 @@ packages: resolution: {integrity: sha512-AOhBxyLVdpOad3TujtC9kL/9r3HnTkxwQ5ggOsYrvvZP1cCFvzHWJd5XxZDFuTn+IN8vkKSG5SEJrd27vCSbeA==} dependencies: archy: 1.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 fastq: 1.13.0 queue-microtask: 1.2.3 transitivePeerDependencies: @@ -4189,7 +4160,7 @@ packages: /axios@0.27.2(debug@4.3.4): resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.2 form-data: 4.0.0 transitivePeerDependencies: - debug @@ -4619,7 +4590,6 @@ packages: /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: true /character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} @@ -5182,7 +5152,7 @@ packages: engines: {node: '>=14'} dependencies: '@cspell/cspell-service-bus': 6.31.1 - node-fetch: 2.6.9(encoding@0.1.13) + node-fetch: 2.6.9 transitivePeerDependencies: - encoding dev: true @@ -5294,10 +5264,6 @@ packages: resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} dev: true - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: false - /cypress-image-snapshot@4.0.1(cypress@12.10.0)(jest@29.5.0): resolution: {integrity: sha512-PBpnhX/XItlx3/DAk5ozsXQHUi72exybBNH5Mpqj1DVmjq+S5Jd9WE5CRa4q5q0zuMZb2V2VpXHth6MjFpgj9Q==} engines: {node: '>=8'} @@ -5731,6 +5697,17 @@ packages: ms: 2.1.2 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -5770,7 +5747,6 @@ packages: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 - dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -5850,7 +5826,6 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - dev: true /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -5879,7 +5854,6 @@ packages: /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} - dev: true /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -6210,7 +6184,7 @@ packages: '@es-joy/jsdoccomment': 0.37.1 are-docs-informative: 0.0.2 comment-parser: 1.3.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 escape-string-regexp: 4.0.0 eslint: 8.39.0 esquery: 1.5.0 @@ -6328,7 +6302,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -6792,7 +6766,7 @@ packages: dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -6840,7 +6814,7 @@ packages: resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} dev: true - /follow-redirects@1.15.2(debug@4.3.4): + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -6848,8 +6822,6 @@ packages: peerDependenciesMeta: debug: optional: true - dependencies: - debug: 4.3.4(supports-color@8.1.1) dev: true /foreground-child@2.0.0: @@ -7050,7 +7022,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 data-uri-to-buffer: 3.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 file-uri-to-path: 2.0.0 fs-extra: 8.1.0 ftp: 0.3.10 @@ -7378,7 +7350,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -7389,7 +7361,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -7418,7 +7390,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.2 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -7455,7 +7427,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -7828,7 +7800,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -8354,6 +8326,7 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -8551,7 +8524,6 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - dev: true /ky@0.30.0: resolution: {integrity: sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==} @@ -8633,7 +8605,7 @@ packages: chalk: 5.2.0 cli-truncate: 3.1.0 commander: 10.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 7.1.1 lilconfig: 2.1.0 listr2: 5.0.8 @@ -8806,12 +8778,6 @@ packages: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: true - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: @@ -8941,14 +8907,14 @@ packages: - supports-color dev: true - /mdast-util-from-markdown@1.2.0: - resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + /mdast-util-from-markdown@1.3.0: + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} dependencies: '@types/mdast': 3.0.11 '@types/unist': 2.0.6 decode-named-character-reference: 1.0.2 mdast-util-to-string: 3.1.0 - micromark: 3.0.10 + micromark: 3.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-decode-string: 1.0.2 micromark-util-normalize-identifier: 1.0.0 @@ -8958,7 +8924,6 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true /mdast-util-frontmatter@1.0.0: resolution: {integrity: sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==} @@ -8995,7 +8960,7 @@ packages: dependencies: '@types/mdast': 3.0.11 markdown-table: 3.0.3 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 mdast-util-to-markdown: 1.3.0 transitivePeerDependencies: - supports-color @@ -9011,7 +8976,7 @@ packages: /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} dependencies: - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 mdast-util-gfm-autolink-literal: 1.0.2 mdast-util-gfm-footnote: 1.0.1 mdast-util-gfm-strikethrough: 1.0.2 @@ -9040,7 +9005,6 @@ packages: /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} - dev: true /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -9134,7 +9098,6 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-extension-frontmatter@1.0.0: resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} @@ -9223,7 +9186,6 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} @@ -9232,14 +9194,12 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 - dev: true /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} @@ -9249,7 +9209,6 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} @@ -9258,20 +9217,17 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} @@ -9279,20 +9235,17 @@ packages: micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - dev: true /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 - dev: true /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} @@ -9301,27 +9254,22 @@ packages: micromark-util-character: 1.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-symbol: 1.0.1 - dev: true /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} - dev: true /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} - dev: true /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 - dev: true /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 - dev: true /micromark-util-sanitize-uri@1.0.0: resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} @@ -9329,7 +9277,6 @@ packages: micromark-util-character: 1.1.0 micromark-util-encode: 1.0.1 micromark-util-symbol: 1.0.1 - dev: true /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} @@ -9338,30 +9285,27 @@ packages: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - dev: true /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} - dev: true /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} - dev: true /micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 parse-entities: 2.0.0 transitivePeerDependencies: - supports-color dev: true - /micromark@3.0.10: - resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} + /micromark@3.1.0: + resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} dependencies: '@types/debug': 4.1.7 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -9379,7 +9323,6 @@ packages: uvu: 0.5.6 transitivePeerDependencies: - supports-color - dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -9501,7 +9444,6 @@ packages: /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - dev: true /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} @@ -9514,7 +9456,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -9580,6 +9521,18 @@ packages: whatwg-url: 5.0.0 dev: true + /node-fetch@2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + /node-fetch@2.6.9(encoding@0.1.13): resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} @@ -9679,6 +9632,7 @@ packages: /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + dev: true /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} @@ -9872,7 +9826,7 @@ packages: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 get-uri: 3.0.2 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 @@ -10168,7 +10122,7 @@ packages: dependencies: binary-searching: 2.0.5 comment-parser: 1.3.1 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 prettier: 2.8.8 transitivePeerDependencies: - supports-color @@ -10219,13 +10173,6 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -10239,7 +10186,7 @@ packages: engines: {node: '>= 8'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 lru-cache: 5.1.1 @@ -10351,20 +10298,6 @@ packages: unpipe: 1.0.0 dev: true - /react-dom@16.14.0(react@16.14.0): - resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} - peerDependencies: - react: ^16.14.0 - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - react: 16.14.0 - scheduler: 0.19.1 - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true @@ -10373,14 +10306,6 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react@16.14.0: - resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - prop-types: 15.8.1 - /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -10519,7 +10444,7 @@ packages: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.2.0 + mdast-util-from-markdown: 1.3.0 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -10761,7 +10686,6 @@ packages: engines: {node: '>=6'} dependencies: mri: 1.2.0 - dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -10800,12 +10724,6 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler@0.19.1: - resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - /schema-utils@3.1.1: resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} engines: {node: '>= 10.13.0'} @@ -11076,7 +10994,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 socks: 2.7.0 transitivePeerDependencies: - supports-color @@ -11174,7 +11092,7 @@ packages: /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -11188,7 +11106,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -11252,7 +11170,7 @@ packages: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 @@ -11470,7 +11388,7 @@ packages: iterm2-version: 4.2.0 dev: true - /terser-webpack-plugin@5.3.6(esbuild@0.17.18)(webpack@5.75.0): + /terser-webpack-plugin@5.3.6(webpack@5.75.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11487,12 +11405,11 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.15 - esbuild: 0.17.18 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.15.1 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) dev: true /terser@5.15.1: @@ -11899,7 +11816,6 @@ packages: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 - dev: true /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} @@ -11999,7 +11915,6 @@ packages: diff: 5.1.0 kleur: 4.1.5 sade: 1.8.1 - dev: true /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -12057,7 +11972,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 mlly: 1.2.0 pathe: 1.1.0 picocolors: 1.0.0 @@ -12072,7 +11987,7 @@ packages: - terser dev: true - /vite@4.2.2(@types/node@18.16.0): + /vite@4.2.2: resolution: {integrity: sha512-PcNtT5HeDxb3QaSqFYkEum8f5sCVe0R3WK20qxgIvNBZPXU/Obxs/+ubBMeE7nLWeCo2LDzv+8hRYSlcaSehig==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -12097,7 +12012,6 @@ packages: terser: optional: true dependencies: - '@types/node': 18.16.0 esbuild: 0.17.18 postcss: 8.4.21 resolve: 1.22.1 @@ -12152,16 +12066,16 @@ packages: flexsearch: 0.7.31 glob-to-regexp: 0.4.1 markdown-it: 13.0.1 - vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0) + vitepress: 1.0.0-alpha.72(@algolia/client-search@4.14.2) vue: 3.2.47 dev: true - /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2)(@types/node@18.16.0)(react-dom@16.14.0)(react@16.14.0): + /vitepress@1.0.0-alpha.72(@algolia/client-search@4.14.2): resolution: {integrity: sha512-Ou7fNE/OVYLrKGQMHSTVG6AcNsdv7tm4ACrdhx93SPMzEDj8UgIb4RFa5CTTowaYf3jeDGi2EAJlzXVC+IE3dg==} hasBin: true dependencies: '@docsearch/css': 3.3.3 - '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2)(react-dom@16.14.0)(react@16.14.0) + '@docsearch/js': 3.3.3(@algolia/client-search@4.14.2) '@vitejs/plugin-vue': 4.1.0(vite@4.2.2)(vue@3.2.47) '@vue/devtools-api': 6.5.0 '@vueuse/core': 10.0.2(vue@3.2.47) @@ -12169,7 +12083,7 @@ packages: mark.js: 8.11.1 minisearch: 6.0.1 shiki: 0.14.1 - vite: 4.2.2(@types/node@18.16.0) + vite: 4.2.2 vue: 3.2.47 transitivePeerDependencies: - '@algolia/client-search' @@ -12230,7 +12144,7 @@ packages: cac: 6.7.14 chai: 4.3.7 concordance: 5.0.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 jsdom: 21.1.1 local-pkg: 0.4.3 magic-string: 0.30.0 @@ -12445,7 +12359,7 @@ packages: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) webpack-dev-server: 4.11.1(webpack-cli@4.10.0)(webpack@5.75.0) webpack-merge: 5.8.0 dev: true @@ -12461,7 +12375,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) dev: true /webpack-dev-server@4.11.1(webpack-cli@4.10.0)(webpack@5.75.0): @@ -12502,7 +12416,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0) + webpack: 5.75.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-dev-middleware: 5.3.3(webpack@5.75.0) ws: 8.9.0 @@ -12526,7 +12440,7 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.75.0(esbuild@0.17.18)(webpack-cli@4.10.0): + /webpack@5.75.0(webpack-cli@4.10.0): resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -12557,7 +12471,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(esbuild@0.17.18)(webpack@5.75.0) + terser-webpack-plugin: 5.3.6(webpack@5.75.0) watchpack: 2.4.0 webpack-cli: 4.10.0(webpack-dev-server@4.11.1)(webpack@5.75.0) webpack-sources: 3.2.3