From dc8a098ce9c946e10dd4d1ed85694d498ee682ee Mon Sep 17 00:00:00 2001 From: Yiyi Wang Date: Tue, 5 Sep 2023 20:42:52 +0800 Subject: [PATCH] Crossnote integration (#1739) * feat: Started migrating to crossnote * feat: Basically finished the integration * feat: Added commands to open local crossnote config files * fix: Fixed some webview bugs * fix: Fixed less in vscode web extension * refactor: Removed all unnecessary console.log * feat: Updated to crossnote 0.8.3 * fix: Removed some commands * feat: Updated crossnote to 0.8.6 * ci: Fixed check:all --- .eslintignore | 3 +- .gitignore | 3 +- .prettierignore | 6 +- README.md | 8 +- build.js | 83 +- copy-files.js | 39 - gulpfile.js | 31 + package.json | 59 +- package.nls.json | 11 +- package.nls.zh.json | 11 +- src/config.ts | 229 +- src/extension-common.ts | 1017 +++++ src/extension-web.ts | 9 + src/extension.ts | 894 +---- src/image-helper.ts | 27 +- ...ontent-provider.ts => preview-provider.ts} | 636 ++-- src/utils.ts | 126 + src/utils/path-resolver.ts | 85 - src/vscode-fs.ts | 60 + test/markdown/README.md | 9 + test/markdown/basics.md | 70 + test/markdown/code-chunks.md | 184 + test/markdown/data/sp500.csv | 124 + test/markdown/diagrams.md | 371 ++ test/markdown/file-imports.md | 24 + test/markdown/interactive-diagrams.md | 372 ++ test/markdown/math.md | 41 + tsconfig.json | 22 +- yarn.lock | 3318 ++++++++++++++++- 29 files changed, 6207 insertions(+), 1665 deletions(-) delete mode 100644 copy-files.js create mode 100644 gulpfile.js create mode 100644 src/extension-common.ts create mode 100644 src/extension-web.ts rename src/{preview-content-provider.ts => preview-provider.ts} (58%) create mode 100644 src/utils.ts delete mode 100644 src/utils/path-resolver.ts create mode 100644 src/vscode-fs.ts create mode 100644 test/markdown/README.md create mode 100644 test/markdown/basics.md create mode 100644 test/markdown/code-chunks.md create mode 100644 test/markdown/data/sp500.csv create mode 100644 test/markdown/diagrams.md create mode 100644 test/markdown/file-imports.md create mode 100644 test/markdown/interactive-diagrams.md create mode 100644 test/markdown/math.md diff --git a/.eslintignore b/.eslintignore index 80b5bdf..18cc19b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -13,4 +13,5 @@ out ## special cases -mume \ No newline at end of file +mume +crossnote \ No newline at end of file diff --git a/.gitignore b/.gitignore index ce4f23b..50883f1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ node_modules out .direnv mume -crossnote \ No newline at end of file +crossnote +.vscode-test-web diff --git a/.prettierignore b/.prettierignore index 148bc4f..dd68428 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,13 +5,13 @@ !*.md !*.ts - ## same as in .gitignore .vscode-test *.vsix node_modules out - +tsconfig.json ## special cases -mume \ No newline at end of file +mume +crossnote diff --git a/README.md b/README.md index a636cf6..82f9999 100644 --- a/README.md +++ b/README.md @@ -10,16 +10,16 @@

-atom +Atom & -vscode +VSCode +& +VSCode for the Web

Become VSCode Power User

-If you are interested, please try out our new prototype web app: [0xGG/crossnote](https://github.com/0xGG/crossnote) - ## Supporting this project Markdown Preview Enhanced is an open source project released under the [University of Illinois/NCSA Open Source License](LICENSE.md). Its ongoing development is made possible thanks to the support by these awesome [backers](https://shd101wyy.github.io/markdown-preview-enhanced/#/backers). You can help make this project better by [supporting us on GitHub Sponsors](https://github.com/sponsors/shd101wyy), [PayPal](https://shd101wyy.github.io/markdown-preview-enhanced/#/paypal), or [微信支付 Wechat Pay](https://shd101wyy.github.io/markdown-preview-enhanced/#/wechat). Thank you! diff --git a/build.js b/build.js index 01a4b87..91a1785 100644 --- a/build.js +++ b/build.js @@ -1,43 +1,102 @@ const { context, build } = require('esbuild'); +const { polyfillNode } = require('esbuild-plugin-polyfill-node'); /** * @type {import('esbuild').BuildOptions} */ -const sharedConfig = { +const nativeConfig = { entryPoints: ['./src/extension.ts'], bundle: true, minify: true, + platform: 'node', // For CJS + outfile: './out/native/extension.js', + target: 'node16', + format: 'cjs', + external: ['vscode'], +}; + +// FIX: +const defaultDocument = { + readyState: 'ready', +}; +const defaultWindow = { + document: { + currentScript: { + dataset: {}, + }, + }, + location: { + protocol: 'https:', + }, + less: { + onReady: false, + async: false, + }, }; /** * @type {import('esbuild').BuildOptions} */ -const cjsConfig = { - ...sharedConfig, - platform: 'node', // For CJS - outfile: './out/native/extension.js', - target: 'node16', +const webConfig = { + entryPoints: ['./src/extension-web.ts'], + bundle: true, + minify: true, + platform: 'browser', // For ESM + outfile: './out/web/extension.js', + target: 'es2020', format: 'cjs', external: ['vscode'], + plugins: [ + polyfillNode({ + polyfills: { + fs: true, + }, + globals: { + // global: true, + }, + }), + ], + define: { + // eslint-disable-next-line @typescript-eslint/naming-convention + // window: 'globalThis', + // global: 'globalThis', + // window: "globalThis", + window: JSON.stringify(defaultWindow), + // document: JSON.stringify(defaultDocument), + 'process.env.IS_VSCODE_WEB_EXTENSION': '"true"', + }, }; async function main() { try { // Watch mode if (process.argv.includes('--watch')) { - // CommonJS - const cjsContext = await context({ - ...cjsConfig, + // Native + const nativeContext = await context({ + ...nativeConfig, sourcemap: true, minify: false, // bundle: false, // external: undefined, }); - await cjsContext.watch(); + + // Web + const webContext = await context({ + ...webConfig, + sourcemap: true, + minify: false, + define: { + ...(webConfig.define ?? {}), + ...{ + 'process.env.IS_VSCODE_WEB_EXTENSION_DEV_MODE': '"true"', + }, + }, + }); + + await Promise.all([nativeContext.watch(), webContext.watch()]); } else { // Build mode - // CommonJS - await build(cjsConfig); + await Promise.all([build(nativeConfig), build(webConfig)]); } } catch (error) { console.error(error); diff --git a/copy-files.js b/copy-files.js deleted file mode 100644 index a37c797..0000000 --- a/copy-files.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copy files from - * - ./node_modules/@shd101wyy/mume/out/dependencies/. to ./mume/dependencies/ - * - ./node_modules/@shd101wyy/mume/out/styles/. to ./mume/styles/ - * - ./node_modules/@shd101wyy/mume/out/webview/. to ./mume/webview/ - */ -const fs = require('fs'); - -const copyData = [ - { - source: './node_modules/@shd101wyy/mume/out/dependencies/', - target: './mume/dependencies/', - }, - { - source: './node_modules/@shd101wyy/mume/out/styles/', - target: './mume/styles/', - }, - { - source: './node_modules/@shd101wyy/mume/out/webview/', - target: './mume/webview/', - }, -]; - -// Delete ./mume directory -if (fs.existsSync('./mume')) { - fs.rmdirSync('./mume', { recursive: true }); -} - -// Make source directories -copyData.forEach(data => { - fs.mkdirSync(data.target, { recursive: true }); -}); - -// Copy directories -copyData.forEach(data => { - fs.cpSync(data.source, data.target, { recursive: true }); -}); - -console.log('Copy files done.'); diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..a9995a7 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,31 @@ +/** + * Delete ./crossnote directory + * Then copy files from + * - ./node_modules/crossnote/out/dependencies/. to ./crossnote/dependencies/ + * - ./node_modules/crossnote/out/styles/. to ./crossnote/styles/ + * - ./node_modules/crossnote/out/webview/. to ./crossnote/webview/ + */ +const gulp = require('gulp'); +const fs = require('fs'); + +gulp.task('copy-files', cb => { + // Delete ./crossnote directory + if (fs.existsSync('./crossnote')) { + fs.rmSync('./crossnote', { recursive: true }); + } + + // Copy files + gulp + .src('./node_modules/crossnote/out/dependencies/**/*') + .pipe(gulp.dest('./crossnote/dependencies/')); + gulp + .src('./node_modules/crossnote/out/styles/**/*') + .pipe(gulp.dest('./crossnote/styles/')); + gulp + .src('./node_modules/crossnote/out/webview/**/*') + .pipe(gulp.dest('./crossnote/webview/')); + + console.log('Copy files done.'); + + cb(); +}); diff --git a/package.json b/package.json index 950ee4c..0ec7dcc 100644 --- a/package.json +++ b/package.json @@ -21,18 +21,20 @@ ], "publisher": "shd101wyy", "main": "./out/native/extension.js", + "browser": "./out/web/extension.js", "scripts": { "build": "yarn copy:files && rm -rf ./out && node build.js", - "check:all": "yarn check:eslint && yarn check:prettier && yarn check:tsc", + "check:all": "yarn check:eslint && yarn check:prettier", "check:eslint": "eslint \"**/*\"", "check:prettier": "prettier --check \"**/*.*\"", - "check:tsc": "tsc --project . --noEmit", - "copy:files": "node copy-files.js", + "copy:files": "gulp copy-files", "fix:all": "yarn fix:eslint && yarn fix:eslint && yarn fix:prettier", "fix:eslint": "eslint --fix \"**/*\"", "fix:prettier": "prettier --write \"**/*.*\"", + "run-in-browser": "concurrently \"vscode-test-web --browserType=chromium --extensionDevelopmentPath=. .\" \"npx http-server ./crossnote -p 6789 --cors\"", + "run-in-vscode-dev": "npx serve --cors -l 5000 --ssl-cert $HOME/certs/localhost.pem --ssl-key $HOME/certs/localhost-key.pem", "test": "yarn build && node ./node_modules/vscode/bin/test", - "vscode:prepublish": "yarn build", + "vscode:prepublish": "yarn install && yarn build", "watch": "yarn copy:files && rm -rf ./out && node build.js --watch" }, "contributes": { @@ -85,7 +87,12 @@ }, { "command": "markdown-preview-enhanced.customizeCss", - "title": "%markdown-preview-enhanced.customizeCss.title%" + "title": "%markdown-preview-enhanced.customizeCss.title%", + "enablement": "!isWeb" + }, + { + "command": "markdown-preview-enhanced.customizeCssInWorkspace", + "title": "%markdown-preview-enhanced.customizeCssInWorkspace.title%" }, { "command": "markdown-preview-enhanced.insertNewSlide", @@ -101,27 +108,31 @@ }, { "command": "markdown-preview-enhanced.createTOC", - "title": "%markdown-preview-enhanced.createTOC.title%" + "title": "%markdown-preview-enhanced.createTOC.title%", + "enablement": "!isWeb" }, { - "command": "markdown-preview-enhanced.openMermaidConfig", - "title": "%markdown-preview-enhanced.openMermaidConfig.title%" + "command": "markdown-preview-enhanced.openConfigScript", + "title": "%markdown-preview-enhanced.openConfigScript.title%", + "enablement": "!isWeb" }, { - "command": "markdown-preview-enhanced.openMathJaxConfig", - "title": "%markdown-preview-enhanced.openMathJaxConfig.title%" + "command": "markdown-preview-enhanced.extendParser", + "title": "%markdown-preview-enhanced.extendParser.title%", + "enablement": "!isWeb" }, { - "command": "markdown-preview-enhanced.openKaTeXConfig", - "title": "%markdown-preview-enhanced.openKaTeXConfig.title%" + "command": "markdown-preview-enhanced.openConfigScriptInWorkspace", + "title": "%markdown-preview-enhanced.openConfigScriptInWorkspace.title%" }, { - "command": "markdown-preview-enhanced.extendParser", - "title": "%markdown-preview-enhanced.extendParser.title%" + "command": "markdown-preview-enhanced.extendParserInWorkspace", + "title": "%markdown-preview-enhanced.extendParserInWorkspace.title%" }, { "command": "markdown-preview-enhanced.showUploadedImages", - "title": "%markdown-preview-enhanced.showUploadedImages.title%" + "title": "%markdown-preview-enhanced.showUploadedImages.title%", + "enablement": "!isWeb" } ], "configuration": { @@ -129,7 +140,7 @@ "title": "Markdown Preview Enhanced", "properties": { "markdown-preview-enhanced.configPath": { - "description": "The configuration directory path. Leave it empty to use '~/.mume' as the config path. Please reload vscode to take effect.", + "markdownDescription": "Restart is required after changes. The configuration directory path. Leave it empty to use `$HOME/.crossnote` for Windows or `$XDG_CONFIG_HOME/.crossnote` or `$HOME/.local/state/crossnote` as the config path.", "default": "", "type": "string" }, @@ -247,14 +258,9 @@ }, "markdown-preview-enhanced.useGitHubStylePipedLink": { "description": "If checked, we use GitHub style piped wiki links, i.e. [[linkText|wikiLink]]. Otherwise, we use [[wikiLink|linkText]] as the original Wikipedia style.", - "default": true, + "default": false, "type": "boolean" }, - "markdown-preview-enhanced.wikiLinkFileExtension": { - "description": "By default, the extension for wikilink is `.md`. For example: [[test]] will direct to file path `test.md`.", - "default": ".md", - "type": "string" - }, "markdown-preview-enhanced.enableEmojiSyntax": { "description": "Enable emoji & font-awesome plugin. This only works for markdown-it parser, but not pandoc parser.", "default": true, @@ -591,8 +597,8 @@ ] }, "dependencies": { - "@shd101wyy/mume": "0.7.9", - "@types/vfile": "^3.0.2" + "@types/vfile": "^3.0.2", + "crossnote": "^0.8.6" }, "devDependencies": { "@types/cheerio": "0.22.11", @@ -601,8 +607,13 @@ "@types/vscode": "1.80.0", "@typescript-eslint/eslint-plugin": "^6.5.0", "@typescript-eslint/parser": "^6.5.0", + "@vscode/test-web": "^0.0.45", + "concurrently": "^8.2.1", "esbuild": "^0.19.2", + "esbuild-plugin-polyfill-node": "^0.3.0", "eslint": "^8.48.0", + "gulp": "^4.0.2", + "http-server": "^14.1.1", "husky": "^3.0.9", "lint-staged": "^9.4.2", "mocha": "^6.1.4", diff --git a/package.nls.json b/package.nls.json index 706d0c8..66cc0e1 100644 --- a/package.nls.json +++ b/package.nls.json @@ -10,14 +10,15 @@ "markdown-preview-enhanced.runAllCodeChunks.title": "Markdown Preview Enhanced: Run All Code Chunks", "markdown-preview-enhanced.runCodeChunk.title": "Markdown Preview Enhanced: Run Code Chunk", "markdown-preview-enhanced.syncPreview.title": "Markdown Preview Enhanced: Sync Preview", - "markdown-preview-enhanced.customizeCss.title": "Markdown Preview Enhanced: Customize CSS", + "markdown-preview-enhanced.customizeCss.title": "Markdown Preview Enhanced: Customize CSS (Global)", + "markdown-preview-enhanced.customizeCssInWorkspace.title": "Markdown Preview Enhanced: Customize CSS (Workspace)", "markdown-preview-enhanced.insertNewSlide.title": "Markdown Preview Enhanced: Insert New Slide", "markdown-preview-enhanced.insertTable.title": "Markdown Preview Enhanced: Insert Table", "markdown-preview-enhanced.insertPagebreak.title": "Markdown Preview Enhanced: Insert Page Break", "markdown-preview-enhanced.createTOC.title": "Markdown Preview Enhanced: Create TOC", - "markdown-preview-enhanced.openMermaidConfig.title": "Markdown Preview Enhanced: Open Mermaid Config", - "markdown-preview-enhanced.openMathJaxConfig.title": "Markdown Preview Enhanced: Open MathJax Config", - "markdown-preview-enhanced.openKaTeXConfig.title": "Markdown Preview Enhanced: Open KaTeX Config", - "markdown-preview-enhanced.extendParser.title": "Markdown Preview Enhanced: Extend Parser", + "markdown-preview-enhanced.openConfigScript.title": "Markdown Preview Enhanced: Open Config Script (Global)", + "markdown-preview-enhanced.openConfigScriptInWorkspace.title": "Markdown Preview Enhanced: Open Config Script (Workspace)", + "markdown-preview-enhanced.extendParser.title": "Markdown Preview Enhanced: Extend Parser (Global)", + "markdown-preview-enhanced.extendParserInWorkspace.title": "Markdown Preview Enhanced: Extend Parser (Workspace)", "markdown-preview-enhanced.showUploadedImages.title": "Markdown Preview Enhanced: Show Uploaded Images" } diff --git a/package.nls.zh.json b/package.nls.zh.json index 1e648aa..20db3ac 100644 --- a/package.nls.zh.json +++ b/package.nls.zh.json @@ -10,14 +10,15 @@ "markdown-preview-enhanced.runAllCodeChunks.title": "MPE:运行所有代码块", "markdown-preview-enhanced.runCodeChunk.title": "MPE:运行代码块", "markdown-preview-enhanced.syncPreview.title": "MPE:同步预览", - "markdown-preview-enhanced.customizeCss.title": "MPE:自定义样式", + "markdown-preview-enhanced.customizeCss.title": "MPE:自定义样式(全局)", + "markdown-preview-enhanced.customizeCssInWorkspace.title": "MPE:自定义样式(工作区)", "markdown-preview-enhanced.insertNewSlide.title": "MPE:插入新的幻灯片", "markdown-preview-enhanced.insertTable.title": "MPE:插入表格", "markdown-preview-enhanced.insertPagebreak.title": "MPE:插入断页符", "markdown-preview-enhanced.createTOC.title": "MPE:创建目录列表", - "markdown-preview-enhanced.openMermaidConfig.title": "MPE:打开 mermaid 设置文件", - "markdown-preview-enhanced.openMathJaxConfig.title": "MPE:打开 MathJax 设置文件", - "markdown-preview-enhanced.openKaTeXConfig.title": "MPE:打开 KaTeX 设置文件", - "markdown-preview-enhanced.extendParser.title": "MPE:扩展 Parser", + "markdown-preview-enhanced.openConfigScript.title": "MPE:打开配置脚本(全局)", + "markdown-preview-enhanced.openConfigScriptInWorkspace.title": "MPE:打开配置脚本(工作区)", + "markdown-preview-enhanced.extendParser.title": "MPE:扩展 Parser(全局)", + "markdown-preview-enhanced.extendParserInWorkspace.title": "MPE:扩展 Parser(工作区)", "markdown-preview-enhanced.showUploadedImages.title": "MPE:显示图片上传历史" } diff --git a/src/config.ts b/src/config.ts index 4dedf25..79a1bc6 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,14 +1,16 @@ import { CodeBlockTheme, - MarkdownEngineConfig, + FrontMatterRenderingOption, MathRenderingOption, MermaidTheme, + NotebookConfig, + ParserConfig, PreviewTheme, RevealJsTheme, - utility, -} from '@shd101wyy/mume'; + getDefaultNotebookConfig, +} from 'crossnote'; import * as vscode from 'vscode'; -import { PathResolver } from './utils/path-resolver.js'; +import { isVSCodeWebExtension } from './utils'; export enum PreviewColorScheme { selectedPreviewTheme = 'selectedPreviewTheme', @@ -16,7 +18,7 @@ export enum PreviewColorScheme { editorColorScheme = 'editorColorScheme', } -export class MarkdownPreviewEnhancedConfig implements MarkdownEngineConfig { +export class MarkdownPreviewEnhancedConfig implements NotebookConfig { public static getCurrentConfig() { return new MarkdownPreviewEnhancedConfig(); } @@ -28,11 +30,10 @@ export class MarkdownPreviewEnhancedConfig implements MarkdownEngineConfig { public readonly enableWikiLinkSyntax: boolean; public readonly enableLinkify: boolean; public readonly useGitHubStylePipedLink: boolean; - public readonly wikiLinkFileExtension: string; public readonly enableEmojiSyntax: boolean; public readonly enableExtendedTableSyntax: boolean; public readonly enableCriticMarkupSyntax: boolean; - public readonly frontMatterRenderingOption: string; + public readonly frontMatterRenderingOption: FrontMatterRenderingOption; public readonly mathRenderingOption: MathRenderingOption; public readonly mathInlineDelimiters: string[][]; public readonly mathBlockDelimiters: string[][]; @@ -78,94 +79,138 @@ export class MarkdownPreviewEnhancedConfig implements MarkdownEngineConfig { const config = vscode.workspace.getConfiguration( 'markdown-preview-enhanced', ); + const defaultConfig = getDefaultNotebookConfig(); - this.configPath = ( - config.get('configPath') || utility.getConfigPath() - ).trim(); - this.configPath = PathResolver.resolvePath(this.configPath); + this.configPath = config.get('configPath') ?? ''; + this.usePandocParser = isVSCodeWebExtension() + ? false // pandoc is not supported in web extension + : config.get('usePandocParser') ?? defaultConfig.usePandocParser; + this.breakOnSingleNewLine = + config.get('breakOnSingleNewLine') ?? + defaultConfig.breakOnSingleNewLine; + this.enableTypographer = + config.get('enableTypographer') ?? + defaultConfig.enableTypographer; + this.enableWikiLinkSyntax = + config.get('enableWikiLinkSyntax') ?? + defaultConfig.enableWikiLinkSyntax; + this.enableLinkify = + config.get('enableLinkify') ?? defaultConfig.enableLinkify; + this.useGitHubStylePipedLink = + config.get('useGitHubStylePipedLink') ?? + defaultConfig.useGitHubStylePipedLink; + this.enableEmojiSyntax = + config.get('enableEmojiSyntax') ?? + defaultConfig.enableEmojiSyntax; + this.enableExtendedTableSyntax = + config.get('enableExtendedTableSyntax') ?? + defaultConfig.enableExtendedTableSyntax; + this.enableCriticMarkupSyntax = + config.get('enableCriticMarkupSyntax') ?? + defaultConfig.enableCriticMarkupSyntax; + this.frontMatterRenderingOption = + config.get('frontMatterRenderingOption') ?? + defaultConfig.frontMatterRenderingOption; + this.mermaidTheme = + config.get('mermaidTheme') ?? defaultConfig.mermaidTheme; + this.mathRenderingOption = + (config.get('mathRenderingOption') as MathRenderingOption) ?? + defaultConfig.mathRenderingOption; + this.mathInlineDelimiters = + config.get('mathInlineDelimiters') ?? + defaultConfig.mathInlineDelimiters; + this.mathBlockDelimiters = + config.get('mathBlockDelimiters') ?? + defaultConfig.mathBlockDelimiters; + this.mathRenderingOnlineService = + config.get('mathRenderingOnlineService') ?? + defaultConfig.mathRenderingOnlineService; + this.mathjaxV3ScriptSrc = + config.get('mathjaxV3ScriptSrc') ?? + defaultConfig.mathjaxV3ScriptSrc; + this.codeBlockTheme = + config.get('codeBlockTheme') ?? + defaultConfig.codeBlockTheme; + this.previewTheme = + config.get('previewTheme') ?? defaultConfig.previewTheme; + this.revealjsTheme = + config.get('revealjsTheme') ?? defaultConfig.revealjsTheme; + this.protocolsWhiteList = + config.get('protocolsWhiteList') ?? + defaultConfig.protocolsWhiteList; + this.imageFolderPath = + config.get('imageFolderPath') ?? defaultConfig.imageFolderPath; + this.imageUploader = config.get('imageUploader') ?? 'imgur'; + this.printBackground = + config.get('printBackground') ?? defaultConfig.printBackground; + this.chromePath = + config.get('chromePath') ?? defaultConfig.chromePath; + this.imageMagickPath = + config.get('imageMagickPath') ?? defaultConfig.imageMagickPath; + this.pandocPath = + config.get('pandocPath') ?? defaultConfig.pandocPath; + this.pandocMarkdownFlavor = + config.get('pandocMarkdownFlavor') ?? + defaultConfig.pandocMarkdownFlavor; + this.pandocArguments = + config.get('pandocArguments') ?? defaultConfig.pandocArguments; + this.latexEngine = + config.get('latexEngine') ?? defaultConfig.latexEngine; + this.enableScriptExecution = + config.get('enableScriptExecution') ?? + defaultConfig.enableScriptExecution; - this.usePandocParser = config.get('usePandocParser'); - this.breakOnSingleNewLine = config.get('breakOnSingleNewLine'); - this.enableTypographer = config.get('enableTypographer'); - this.enableWikiLinkSyntax = config.get('enableWikiLinkSyntax'); - this.enableLinkify = config.get('enableLinkify'); - this.useGitHubStylePipedLink = config.get( - 'useGitHubStylePipedLink', - ); - this.wikiLinkFileExtension = config.get('wikiLinkFileExtension'); - this.enableEmojiSyntax = config.get('enableEmojiSyntax'); - this.enableExtendedTableSyntax = config.get( - 'enableExtendedTableSyntax', - ); - this.enableCriticMarkupSyntax = config.get( - 'enableCriticMarkupSyntax', - ); - this.frontMatterRenderingOption = config.get( - 'frontMatterRenderingOption', - ); - this.mermaidTheme = config.get('mermaidTheme'); - this.mathRenderingOption = config.get( - 'mathRenderingOption', - ) as MathRenderingOption; - this.mathInlineDelimiters = config.get('mathInlineDelimiters'); - this.mathBlockDelimiters = config.get('mathBlockDelimiters'); - this.mathRenderingOnlineService = config.get( - 'mathRenderingOnlineService', - ); - this.mathjaxV3ScriptSrc = config.get('mathjaxV3ScriptSrc'); - this.codeBlockTheme = config.get('codeBlockTheme'); - this.previewTheme = config.get('previewTheme'); - this.revealjsTheme = config.get('revealjsTheme'); - this.protocolsWhiteList = config.get('protocolsWhiteList'); - this.imageFolderPath = config.get('imageFolderPath'); - this.imageUploader = config.get('imageUploader'); - this.printBackground = config.get('printBackground'); - this.chromePath = config.get('chromePath'); - this.imageMagickPath = config.get('imageMagickPath'); - this.pandocPath = config.get('pandocPath'); - this.pandocMarkdownFlavor = config.get('pandocMarkdownFlavor'); - this.pandocArguments = config.get('pandocArguments'); - this.latexEngine = config.get('latexEngine'); - this.enableScriptExecution = config.get('enableScriptExecution'); - - this.scrollSync = config.get('scrollSync'); - this.liveUpdate = config.get('liveUpdate'); - this.singlePreview = config.get('singlePreview'); - this.automaticallyShowPreviewOfMarkdownBeingEdited = config.get( - 'automaticallyShowPreviewOfMarkdownBeingEdited', - ); - this.previewColorScheme = config.get( - 'previewColorScheme', - ); - - this.enableHTML5Embed = config.get('enableHTML5Embed'); - this.HTML5EmbedUseImageSyntax = config.get( - 'HTML5EmbedUseImageSyntax', - ); - this.HTML5EmbedUseLinkSyntax = config.get( - 'HTML5EmbedUseLinkSyntax', - ); - this.HTML5EmbedIsAllowedHttp = config.get( - 'HTML5EmbedIsAllowedHttp', - ); - this.HTML5EmbedAudioAttributes = config.get( - 'HTML5EmbedAudioAttributes', - ); - this.HTML5EmbedVideoAttributes = config.get( - 'HTML5EmbedVideoAttributes', - ); - this.puppeteerWaitForTimeout = config.get( - 'puppeteerWaitForTimeout', - ); - this.puppeteerArgs = config.get('puppeteerArgs'); - this.plantumlJarPath = config.get('plantumlJarPath'); - this.plantumlServer = config.get('plantumlServer'); - this.hideDefaultVSCodeMarkdownPreviewButtons = config.get( - 'hideDefaultVSCodeMarkdownPreviewButtons', - ); - this.jsdelivrCdnHost = config.get('jsdelivrCdnHost'); - this.krokiServer = config.get('krokiServer'); + this.scrollSync = config.get('scrollSync') ?? true; + this.liveUpdate = config.get('liveUpdate') ?? true; + this.singlePreview = config.get('singlePreview') ?? true; + this.automaticallyShowPreviewOfMarkdownBeingEdited = + config.get('automaticallyShowPreviewOfMarkdownBeingEdited') ?? + false; + this.previewColorScheme = + config.get('previewColorScheme') ?? + PreviewColorScheme.selectedPreviewTheme; + this.enableHTML5Embed = + config.get('enableHTML5Embed') ?? defaultConfig.enableHTML5Embed; + this.HTML5EmbedUseImageSyntax = + config.get('HTML5EmbedUseImageSyntax') ?? + defaultConfig.HTML5EmbedUseImageSyntax; + this.HTML5EmbedUseLinkSyntax = + config.get('HTML5EmbedUseLinkSyntax') ?? + defaultConfig.HTML5EmbedUseLinkSyntax; + this.HTML5EmbedIsAllowedHttp = + config.get('HTML5EmbedIsAllowedHttp') ?? + defaultConfig.HTML5EmbedIsAllowedHttp; + this.HTML5EmbedAudioAttributes = + config.get('HTML5EmbedAudioAttributes') ?? + defaultConfig.HTML5EmbedAudioAttributes; + this.HTML5EmbedVideoAttributes = + config.get('HTML5EmbedVideoAttributes') ?? + defaultConfig.HTML5EmbedVideoAttributes; + this.puppeteerWaitForTimeout = + config.get('puppeteerWaitForTimeout') ?? + defaultConfig.puppeteerWaitForTimeout; + this.puppeteerArgs = + config.get('puppeteerArgs') ?? defaultConfig.puppeteerArgs; + this.plantumlJarPath = + config.get('plantumlJarPath') ?? defaultConfig.plantumlJarPath; + this.plantumlServer = + config.get('plantumlServer') ?? defaultConfig.plantumlServer; + if (!this.plantumlServer && isVSCodeWebExtension()) { + this.plantumlServer = 'https://kroki.io/plantuml/svg/'; + } + this.hideDefaultVSCodeMarkdownPreviewButtons = + config.get('hideDefaultVSCodeMarkdownPreviewButtons') ?? true; + this.jsdelivrCdnHost = + config.get('jsdelivrCdnHost') ?? defaultConfig.jsdelivrCdnHost; + this.krokiServer = + config.get('krokiServer') ?? defaultConfig.krokiServer; } + globalCss: string; + mermaidConfig; + mathjaxConfig; + katexConfig; + parserConfig: ParserConfig; + isVSCode: boolean; public isEqualTo(otherConfig: MarkdownPreviewEnhancedConfig) { const json1 = JSON.stringify(this); diff --git a/src/extension-common.ts b/src/extension-common.ts new file mode 100644 index 0000000..5f68117 --- /dev/null +++ b/src/extension-common.ts @@ -0,0 +1,1017 @@ +// For both node.js and browser environments +import { utility } from 'crossnote'; +import * as vscode from 'vscode'; +import { PreviewColorScheme } from './config'; +import { pasteImageFile, uploadImageFile } from './image-helper'; +import { + PreviewProvider, + getAllPreviewProviders, + getPreviewUri, +} from './preview-provider'; +import { + getBottomVisibleLine, + getTopVisibleLine, + getWorkspaceFolderUri, + isMarkdownFile, +} from './utils'; +import path = require('path'); + +let editorScrollDelay = Date.now(); + +// hide default vscode markdown preview buttons if necessary +const hideDefaultVSCodeMarkdownPreviewButtons = vscode.workspace + .getConfiguration('markdown-preview-enhanced') + .get('hideDefaultVSCodeMarkdownPreviewButtons'); +if (hideDefaultVSCodeMarkdownPreviewButtons) { + vscode.commands.executeCommand( + 'setContext', + 'hasCustomMarkdownPreview', + true, + ); +} + +export function initExtensionCommon(context: vscode.ExtensionContext) { + function getCurrentWorkingDirectory() { + const activeEditor = vscode.window.activeTextEditor; + if (activeEditor) { + return getWorkspaceFolderUri(activeEditor.document.uri); + } else { + const workspaceFolders = vscode.workspace.workspaceFolders ?? []; + const workspaceFolderUri = workspaceFolders[0]?.uri; + return workspaceFolderUri; + } + } + + async function getPreviewContentProvider(uri: vscode.Uri) { + return await PreviewProvider.getPreviewContentProvider(uri, context); + } + + async function openPreviewToTheSide(uri?: vscode.Uri) { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + if (!uri) { + uri = editor.document.uri; + } + + const previewProvider = await getPreviewContentProvider(uri); + previewProvider.initPreview(uri, editor, { + viewColumn: vscode.ViewColumn.Two, + preserveFocus: true, + }); + } + + async function openPreview(uri?: vscode.Uri) { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + if (!uri) { + uri = editor.document.uri; + } + + const previewProvider = await getPreviewContentProvider(uri); + previewProvider.initPreview(uri, editor, { + viewColumn: vscode.ViewColumn.One, + preserveFocus: false, + }); + } + + function toggleScrollSync() { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + const scrollSync = !config.get('scrollSync'); + config.update('scrollSync', scrollSync, true).then(() => { + const providers = getAllPreviewProviders(); + providers.forEach(provider => { + provider.updateConfiguration(); + }); + if (scrollSync) { + vscode.window.showInformationMessage('Scroll Sync is enabled'); + } else { + vscode.window.showInformationMessage('Scroll Sync is disabled'); + } + }); + } + + function toggleLiveUpdate() { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + const liveUpdate = !config.get('liveUpdate'); + config.update('liveUpdate', liveUpdate, true).then(() => { + const providers = getAllPreviewProviders(); + providers.forEach(provider => { + provider.updateConfiguration(); + }); + if (liveUpdate) { + vscode.window.showInformationMessage('Live Update is enabled'); + } else { + vscode.window.showInformationMessage('Live Update is disabled'); + } + }); + } + + function toggleBreakOnSingleNewLine() { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + const breakOnSingleNewLine = !config.get('breakOnSingleNewLine'); + config + .update('breakOnSingleNewLine', breakOnSingleNewLine, true) + .then(() => { + const providers = getAllPreviewProviders(); + providers.forEach(provider => { + provider.updateConfiguration(); + }); + if (breakOnSingleNewLine) { + vscode.window.showInformationMessage( + 'Break On Single New Line is enabled', + ); + } else { + vscode.window.showInformationMessage( + 'Break On Single New Line is disabled', + ); + } + }); + } + + function insertNewSlide() { + const editor = vscode.window.activeTextEditor; + if (editor && editor.document && editor.edit) { + editor.edit(textEdit => { + textEdit.insert(editor.selection.active, '\n'); + }); + } + } + + function insertPagebreak() { + const editor = vscode.window.activeTextEditor; + if (editor && editor.document && editor.edit) { + editor.edit(textEdit => { + textEdit.insert(editor.selection.active, '\n'); + }); + } + } + + function createTOC() { + const editor = vscode.window.activeTextEditor; + if (editor && editor.document && editor.edit) { + editor.edit(textEdit => { + textEdit.insert( + editor.selection.active, + '\n\n', + ); + }); + } + } + + function insertTable() { + const editor = vscode.window.activeTextEditor; + if (editor && editor.document && editor.edit) { + editor.edit(textEdit => { + textEdit.insert( + editor.selection.active, + `| | | +|---|---| +| | | +`, + ); + }); + } + } + + async function openImageHelper() { + const editor = vscode.window.activeTextEditor; + if (!editor) { + return; + } + const uri = editor.document.uri; + const previewProvider = await getPreviewContentProvider(uri); + previewProvider.openImageHelper(uri); + } + + async function webviewFinishLoading({ + uri, + systemColorScheme, + }: { + uri: string; + systemColorScheme: 'light' | 'dark'; + }) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.setSystemColorScheme(systemColorScheme); + previewProvider.updateMarkdown(sourceUri); + } + + /** + * Insert imageUrl to markdown file + * @param uri: markdown source uri + * @param imageUrl: url of image to be inserted + */ + function insertImageUrl(uri: string, imageUrl: string) { + const sourceUri = vscode.Uri.parse(uri); + vscode.window.visibleTextEditors + .filter( + editor => + isMarkdownFile(editor.document) && + editor.document.uri.fsPath === sourceUri.fsPath, + ) + .forEach(editor => { + // const line = editor.selection.active.line + editor.edit(textEditorEdit => { + textEditorEdit.insert( + editor.selection.active, + `![enter image description here](${imageUrl})`, + ); + }); + }); + } + + async function refreshPreview(uri: string) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.refreshPreview(sourceUri); + } + + async function openInBrowser(uri) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.openInBrowser(sourceUri); + } + + async function htmlExport(uri, offline) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.htmlExport(sourceUri, offline); + } + + async function chromeExport(uri, type) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.chromeExport(sourceUri, type); + } + + async function princeExport(uri) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.princeExport(sourceUri); + } + + async function eBookExport(uri, fileType) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.eBookExport(sourceUri, fileType); + } + + async function pandocExport(uri) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.pandocExport(sourceUri); + } + + async function markdownExport(uri) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.markdownExport(sourceUri); + } + + /* + function cacheSVG(uri, code, svg) { + const sourceUri = vscode.Uri.parse(uri); + contentProvider.cacheSVG(sourceUri, code, svg) + } + */ + + async function cacheCodeChunkResult(uri, id, result) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.cacheCodeChunkResult(sourceUri, id, result); + } + + async function runCodeChunk(uri, codeChunkId) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.runCodeChunk(sourceUri, codeChunkId); + } + + async function runAllCodeChunks(uri) { + const sourceUri = vscode.Uri.parse(uri); + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.runAllCodeChunks(sourceUri); + } + + async function runAllCodeChunksCommand() { + const textEditor = vscode.window.activeTextEditor; + if (!textEditor?.document) { + return; + } + if (!isMarkdownFile(textEditor.document)) { + return; + } + + const sourceUri = textEditor.document.uri; + const previewUri = getPreviewUri(sourceUri); + if (!previewUri) { + return; + } + + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.previewPostMessage(sourceUri, { + command: 'runAllCodeChunks', + }); + } + + async function runCodeChunkCommand() { + const textEditor = vscode.window.activeTextEditor; + if (!textEditor?.document) { + return; + } + if (!isMarkdownFile(textEditor.document)) { + return; + } + + const sourceUri = textEditor.document.uri; + const previewUri = getPreviewUri(sourceUri); + if (!previewUri) { + return; + } + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.previewPostMessage(sourceUri, { + command: 'runCodeChunk', + }); + } + + async function syncPreview() { + const textEditor = vscode.window.activeTextEditor; + if (!textEditor?.document) { + return; + } + if (!isMarkdownFile(textEditor.document)) { + return; + } + + const sourceUri = textEditor.document.uri; + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.previewPostMessage(sourceUri, { + command: 'changeTextEditorSelection', + line: textEditor.selections[0].active.line, + forced: true, + }); + } + + function clickTaskListCheckbox(uri, dataLine) { + const sourceUri = vscode.Uri.parse(uri); + const visibleTextEditors = vscode.window.visibleTextEditors; + for (let i = 0; i < visibleTextEditors.length; i++) { + const editor = visibleTextEditors[i]; + if (editor.document.uri.fsPath === sourceUri.fsPath) { + dataLine = parseInt(dataLine, 10); + editor.edit(edit => { + let line = editor.document.lineAt(dataLine).text; + if (line.match(/\[ \]/)) { + line = line.replace('[ ]', '[x]'); + } else { + line = line.replace(/\[[xX]\]/, '[ ]'); + } + edit.replace( + new vscode.Range( + new vscode.Position(dataLine, 0), + new vscode.Position(dataLine, line.length), + ), + line, + ); + }); + break; + } + } + } + + function setPreviewTheme(uri, theme) { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + config.update('previewTheme', theme, true); + } + + function openConfigFileInWorkspace( + workspaceUri: vscode.Uri, + filePath: vscode.Uri, + ) { + vscode.workspace.fs.stat(filePath).then( + () => { + vscode.commands.executeCommand('vscode.open', filePath); + }, + async () => { + const provider = await getPreviewContentProvider(workspaceUri); + await provider.updateCrossnoteConfig( + path.join(workspaceUri.fsPath, '.crossnote'), + true, + ); + vscode.commands.executeCommand('vscode.open', filePath); + }, + ); + } + + function customizeCSSInWorkspace() { + const currentWorkingDirectory = getCurrentWorkingDirectory(); + if (!currentWorkingDirectory) { + return vscode.window.showErrorMessage( + 'Please open a folder before customizing CSS', + ); + } + const styleLessFile = vscode.Uri.joinPath( + currentWorkingDirectory, + './.crossnote/style.less', + ); + + openConfigFileInWorkspace(currentWorkingDirectory, styleLessFile); + } + + function openConfigScriptInWorkspace() { + const currentWorkingDirectory = getCurrentWorkingDirectory(); + if (!currentWorkingDirectory) { + return vscode.window.showErrorMessage( + 'Please open a folder before customizing config script', + ); + } + + const configScriptPath = vscode.Uri.joinPath( + currentWorkingDirectory, + './.crossnote/config.js', + ); + + openConfigFileInWorkspace(currentWorkingDirectory, configScriptPath); + } + + function extendParserInWorkspace() { + const currentWorkingDirectory = getCurrentWorkingDirectory(); + if (!currentWorkingDirectory) { + return vscode.window.showErrorMessage( + 'Please open a folder before extending parser', + ); + } + + const parserConfigPath = vscode.Uri.joinPath( + currentWorkingDirectory, + './.crossnote/parser.js', + ); + + openConfigFileInWorkspace(currentWorkingDirectory, parserConfigPath); + } + + async function clickTagA({ + uri, + href, + scheme, + }: { + uri: string; + href: string; + scheme: string; + }) { + href = decodeURIComponent(href); + href = href + .replace(/^vscode\-resource:\/\//, '') + .replace(/^vscode\-webview\-resource:\/\/(.+?)\//, '') + .replace(/^file\/\/\//, '${scheme}:///') + .replace( + /^https:\/\/file\+\.vscode-resource.vscode-cdn.net\//, + `${scheme}:///`, + ) + .replace( + /^https?:\/\/(.+?)\.vscode-webview-test.com\/vscode-resource\/file\/+/, + `${scheme}:///`, + ) + .replace( + /^https?:\/\/file(.+?)\.vscode-webview\.net\/+/, + `${scheme}:///`, + ); + if ( + ['.pdf', '.xls', '.xlsx', '.doc', '.ppt', '.docx', '.pptx'].indexOf( + path.extname(href), + ) >= 0 + ) { + try { + utility.openFile(href); + } catch (error) { + vscode.window.showErrorMessage(error); + } + } else if (href.startsWith(`${scheme}:///`)) { + // openFilePath = href.slice(8) # remove protocol + const openFilePath = decodeURI(href); + const fileUri = vscode.Uri.parse(openFilePath); + + // determine from link fragment to which line to jump + let line = -1; + const found = fileUri.fragment.match(/^L(\d+)/); + if (found) { + line = parseInt(found[1], 10); + if (line > 0) { + line = line - 1; + } + } + + // find if there is already opened such file + // and remember in which view column it is + let col = vscode.ViewColumn.One; + tgrLoop: for (const tabGroup of vscode.window.tabGroups.all) { + for (const tab of tabGroup.tabs) { + if (tab.input instanceof vscode.TabInputText) { + if (tab.input.uri.path === fileUri.path) { + col = tabGroup.viewColumn; + break tgrLoop; + } + } + } + } + + // open file if needed, if not we will use already opened editor + // (by specifying view column in which it is already shown) + + let fileExists = false; + try { + fileExists = !!(await vscode.workspace.fs.stat(fileUri)); + } catch (error) { + fileExists = false; + } + + if (fileExists) { + // Open fileUri + /* + vscode.workspace.openTextDocument(fileUri.path).then(doc => { + vscode.window.showTextDocument(doc, col).then(editor => { + // if there was line fragment, jump to line + if (line >= 0) { + let viewPos = vscode.TextEditorRevealType.InCenter; + if (editor.selection.active.line === line) { + viewPos = vscode.TextEditorRevealType.InCenterIfOutsideViewport; + } + const sel = new vscode.Selection(line, 0, line, 0); + editor.selection = sel; + editor.revealRange(sel, viewPos); + } + }); + }); + */ + vscode.commands.executeCommand( + 'vscode.open', + fileUri, + col, + line >= 0 ? new vscode.Position(line, 0) : undefined, + ); + } else { + vscode.commands.executeCommand( + 'vscode.open', + fileUri, + vscode.ViewColumn.One, + ); + } + } else { + utility.openFile(href); + } + } + + context.subscriptions.push( + vscode.workspace.onDidSaveTextDocument(async document => { + if (isMarkdownFile(document)) { + const previewProvider = await getPreviewContentProvider(document.uri); + previewProvider.updateMarkdown(document.uri, true); + } else { + // Check if there is change under `${workspaceDir}/.crossnote` directory + // and the filename is in one of below + // - style.less + // - config.js + // - parser.js + // If so, refresh the preview of the workspace. + const workspaceUri = getWorkspaceFolderUri(document.uri); + const workspaceDir = workspaceUri.fsPath; + const relativePath = path.relative(workspaceDir, document.uri.fsPath); + if ( + relativePath.startsWith('.crossnote') && + ['style.less', 'config.js', 'parser.js'].includes( + path.basename(relativePath), + ) + ) { + const provider = await getPreviewContentProvider(document.uri); + await provider.updateCrossnoteConfig( + path.join(workspaceDir, '.crossnote'), + ); + provider.refreshAllPreviews(); + } + } + }), + ); + + context.subscriptions.push( + vscode.workspace.onDidChangeTextDocument(async event => { + if (isMarkdownFile(event.document)) { + const previewProvider = await getPreviewContentProvider( + event.document.uri, + ); + previewProvider.update(event.document.uri); + } + }), + ); + + context.subscriptions.push( + vscode.workspace.onDidChangeConfiguration(() => { + const providers = getAllPreviewProviders(); + providers.forEach(provider => { + provider.updateConfiguration(); + }); + }), + ); + + context.subscriptions.push( + vscode.window.onDidChangeTextEditorSelection(async event => { + if (isMarkdownFile(event.textEditor.document)) { + const firstVisibleScreenRow = getTopVisibleLine(event.textEditor); + const lastVisibleScreenRow = getBottomVisibleLine(event.textEditor); + + if ( + typeof firstVisibleScreenRow === 'undefined' || + typeof lastVisibleScreenRow === 'undefined' + ) { + return; + } + + const topRatio = + (event.selections[0].active.line - firstVisibleScreenRow) / + (lastVisibleScreenRow - firstVisibleScreenRow); + + const previewProvider = await getPreviewContentProvider( + event.textEditor.document.uri, + ); + previewProvider.previewPostMessage(event.textEditor.document.uri, { + command: 'changeTextEditorSelection', + line: event.selections[0].active.line, + topRatio, + }); + } + }), + ); + + context.subscriptions.push( + vscode.window.onDidChangeTextEditorVisibleRanges(async event => { + const textEditor = event.textEditor as vscode.TextEditor; + if (Date.now() < editorScrollDelay) { + return; + } + if (isMarkdownFile(textEditor.document)) { + const sourceUri = textEditor.document.uri; + if (!event.textEditor.visibleRanges.length) { + return undefined; + } else { + const topLine = getTopVisibleLine(textEditor); + const bottomLine = getBottomVisibleLine(textEditor); + + if ( + typeof topLine === 'undefined' || + typeof bottomLine === 'undefined' + ) { + return; + } + + let midLine; + if (topLine === 0) { + midLine = 0; + } else if ( + Math.floor(bottomLine) === + textEditor.document.lineCount - 1 + ) { + midLine = bottomLine; + } else { + midLine = Math.floor((topLine + bottomLine) / 2); + } + const previewProvider = await getPreviewContentProvider(sourceUri); + previewProvider.previewPostMessage(sourceUri, { + command: 'changeTextEditorSelection', + line: midLine, + }); + } + } + }), + ); + + /** + * Open preview automatically if the `automaticallyShowPreviewOfMarkdownBeingEdited` is on. + * @param textEditor + */ + context.subscriptions.push( + vscode.window.onDidChangeActiveTextEditor(async textEditor => { + if (textEditor && textEditor.document && textEditor.document.uri) { + if (isMarkdownFile(textEditor.document)) { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + const sourceUri = textEditor.document.uri; + const automaticallyShowPreviewOfMarkdownBeingEdited = config.get< + boolean + >('automaticallyShowPreviewOfMarkdownBeingEdited'); + const isUsingSinglePreview = config.get('singlePreview'); + /** + * Is using single preview and the preview is on. + * When we switched text ed()tor, update preview to that text editor. + */ + const previewProvider = await getPreviewContentProvider(sourceUri); + if (previewProvider.isPreviewOn(sourceUri)) { + if ( + isUsingSinglePreview && + !previewProvider.previewHasTheSameSingleSourceUri(sourceUri) + ) { + previewProvider.initPreview(sourceUri, textEditor, { + viewColumn: + previewProvider.getPreview(sourceUri)?.viewColumn ?? + vscode.ViewColumn.One, + preserveFocus: true, + }); + } else if (!isUsingSinglePreview) { + const previewPanel = previewProvider.getPreview(sourceUri); + if (previewPanel) { + previewPanel.reveal(vscode.ViewColumn.Two, true); + } + } + } else if (automaticallyShowPreviewOfMarkdownBeingEdited) { + openPreviewToTheSide(sourceUri); + } + } + } + }), + ); + + // Changed editor color theme + context.subscriptions.push( + vscode.window.onDidChangeActiveColorTheme(theme => { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + if ( + config.get('previewColorScheme') === + PreviewColorScheme.editorColorScheme + ) { + const providers = getAllPreviewProviders(); + providers.forEach(provider => { + provider.updateConfiguration(true); + }); + } + }), + ); + + /* + context.subscriptions.push(vscode.workspace.onDidOpenTextDocument((textDocument)=> { + // console.log('onDidOpenTextDocument', textDocument.uri) + })) + */ + + /* + context.subscriptions.push(vscode.window.onDidChangeVisibleTextEditors(textEditors=> { + // console.log('onDidChangeonDidChangeVisibleTextEditors ', textEditors) + })) + */ + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.openPreviewToTheSide', + openPreviewToTheSide, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.openPreview', + openPreview, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.toggleScrollSync', + toggleScrollSync, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.toggleLiveUpdate', + toggleLiveUpdate, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.toggleBreakOnSingleNewLine', + toggleBreakOnSingleNewLine, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.openImageHelper', + openImageHelper, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.runAllCodeChunks', + runAllCodeChunksCommand, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.runCodeChunk', + runCodeChunkCommand, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.syncPreview', + syncPreview, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.insertNewSlide', + insertNewSlide, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.insertTable', + insertTable, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.insertPagebreak', + insertPagebreak, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.createTOC', + createTOC, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.revealLine', revealLine), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.insertImageUrl', + insertImageUrl, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.pasteImageFile', + pasteImageFile, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.uploadImageFile', + uploadImageFile, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.refreshPreview', + refreshPreview, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.openInBrowser', openInBrowser), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.htmlExport', htmlExport), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.chromeExport', chromeExport), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.princeExport', princeExport), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.eBookExport', eBookExport), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.pandocExport', pandocExport), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.markdownExport', + markdownExport, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.webviewFinishLoading', + webviewFinishLoading, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.cacheCodeChunkResult', + cacheCodeChunkResult, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.runCodeChunk', runCodeChunk), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.runAllCodeChunks', + runAllCodeChunks, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.clickTaskListCheckbox', + clickTaskListCheckbox, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + '_crossnote.setPreviewTheme', + setPreviewTheme, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.customizeCssInWorkspace', + customizeCSSInWorkspace, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.openConfigScriptInWorkspace', + openConfigScriptInWorkspace, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'markdown-preview-enhanced.extendParserInWorkspace', + extendParserInWorkspace, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('_crossnote.clickTagA', clickTagA), + ); +} + +function revealLine(uri, line) { + const sourceUri = vscode.Uri.parse(uri); + + vscode.window.visibleTextEditors + .filter( + editor => + isMarkdownFile(editor.document) && + editor.document.uri.fsPath === sourceUri.fsPath, + ) + .forEach(editor => { + const sourceLine = Math.min( + Math.floor(line), + editor.document.lineCount - 1, + ); + const fraction = line - sourceLine; + const text = editor.document.lineAt(sourceLine).text; + const start = Math.floor(fraction * text.length); + editorScrollDelay = Date.now() + 500; + editor.revealRange( + new vscode.Range(sourceLine, start, sourceLine + 1, 0), + vscode.TextEditorRevealType.InCenter, + ); + editorScrollDelay = Date.now() + 500; + }); +} diff --git a/src/extension-web.ts b/src/extension-web.ts new file mode 100644 index 0000000..8b5c5e8 --- /dev/null +++ b/src/extension-web.ts @@ -0,0 +1,9 @@ +import * as vscode from 'vscode'; +import { initExtensionCommon } from './extension-common'; + +export function activate(context: vscode.ExtensionContext) { + // Init the extension-common module + initExtensionCommon(context); +} +// This method is called when your extension is deactivated +export function deactivate() {} diff --git a/src/extension.ts b/src/extension.ts index c1a91a5..837b183 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,119 +1,43 @@ // The module 'vscode' contains the VS Code extensibility API // Import the module and reference it with the alias vscode in your code below -import { getExtensionConfigPath, utility } from '@shd101wyy/mume'; +import { utility } from 'crossnote'; import * as fs from 'fs'; import * as path from 'path'; import * as vscode from 'vscode'; -import { PreviewColorScheme } from './config'; -import { pasteImageFile, uploadImageFile } from './image-helper'; -import { - MarkdownPreviewEnhancedView, - getPreviewUri, - isMarkdownFile, -} from './preview-content-provider'; - -let editorScrollDelay = Date.now(); - -// hide default vscode markdown preview buttons if necessary -const hideDefaultVSCodeMarkdownPreviewButtons = vscode.workspace - .getConfiguration('markdown-preview-enhanced') - .get('hideDefaultVSCodeMarkdownPreviewButtons'); -if (hideDefaultVSCodeMarkdownPreviewButtons) { - vscode.commands.executeCommand( - 'setContext', - 'hasCustomMarkdownPreview', - true, - ); -} +import { initExtensionCommon } from './extension-common'; +import { getAllPreviewProviders } from './preview-provider'; +import { globalConfigPath } from './utils'; // this method is called when your extension iopenTextDocuments activated // your extension is activated the very first time the command is executed export function activate(context: vscode.ExtensionContext) { - // assume only one preview supported. - const contentProvider = new MarkdownPreviewEnhancedView(context); - - function openPreviewToTheSide(uri?: vscode.Uri) { - let resource = uri; - if (!(resource instanceof vscode.Uri)) { - if (vscode.window.activeTextEditor) { - // we are relaxed and don't check for markdown files - resource = vscode.window.activeTextEditor.document.uri; - } - } - contentProvider.initPreview(resource, vscode.window.activeTextEditor, { - viewColumn: vscode.ViewColumn.Two, - preserveFocus: true, - }); - } - - function openPreview(uri?: vscode.Uri) { - let resource = uri; - if (!(resource instanceof vscode.Uri)) { - if (vscode.window.activeTextEditor) { - // we are relaxed and don't check for markdown files - resource = vscode.window.activeTextEditor.document.uri; - } + try { + if (!fs.existsSync(globalConfigPath)) { + fs.mkdirSync(globalConfigPath, { recursive: true }); } - contentProvider.initPreview(resource, vscode.window.activeTextEditor, { - viewColumn: vscode.ViewColumn.One, - preserveFocus: false, - }); - } - - function toggleScrollSync() { - const config = vscode.workspace.getConfiguration( - 'markdown-preview-enhanced', - ); - const scrollSync = !config.get('scrollSync'); - config.update('scrollSync', scrollSync, true).then(() => { - contentProvider.updateConfiguration(); - if (scrollSync) { - vscode.window.showInformationMessage('Scroll Sync is enabled'); - } else { - vscode.window.showInformationMessage('Scroll Sync is disabled'); - } - }); - } - - function toggleLiveUpdate() { - const config = vscode.workspace.getConfiguration( - 'markdown-preview-enhanced', - ); - const liveUpdate = !config.get('liveUpdate'); - config.update('liveUpdate', liveUpdate, true).then(() => { - contentProvider.updateConfiguration(); - if (liveUpdate) { - vscode.window.showInformationMessage('Live Update is enabled'); - } else { - vscode.window.showInformationMessage('Live Update is disabled'); + // Watch the file changes in global config directory. + fs.watch(globalConfigPath, async (eventType, fileName) => { + if ( + eventType === 'change' && + ['style.less', 'config.js', 'parser.js'].includes(fileName ?? '') + ) { + const providers = getAllPreviewProviders(); + providers.forEach(async provider => { + await provider.updateCrossnoteConfig(globalConfigPath); + provider.refreshAllPreviews(); + }); } }); + } catch (error) { + console.error(error); } - function toggleBreakOnSingleNewLine() { - const config = vscode.workspace.getConfiguration( - 'markdown-preview-enhanced', - ); - const breakOnSingleNewLine = !config.get('breakOnSingleNewLine'); - config - .update('breakOnSingleNewLine', breakOnSingleNewLine, true) - .then(() => { - contentProvider.updateConfiguration(); - if (breakOnSingleNewLine) { - vscode.window.showInformationMessage( - 'Break On Single New Line is enabled', - ); - } else { - vscode.window.showInformationMessage( - 'Break On Single New Line is disabled', - ); - } - }); - } + // Init the extension-common module + initExtensionCommon(context); function customizeCSS() { const globalStyleLessFile = utility.addFileProtocol( - path.resolve(getExtensionConfigPath(), './style.less'), + path.resolve(globalConfigPath, './style.less'), ); vscode.commands.executeCommand( 'vscode.open', @@ -121,39 +45,19 @@ export function activate(context: vscode.ExtensionContext) { ); } - function openMermaidConfig() { - const mermaidConfigFilePath = utility.addFileProtocol( - path.resolve(getExtensionConfigPath(), './mermaid_config.js'), + function openConfigScript() { + const configScriptPath = utility.addFileProtocol( + path.resolve(globalConfigPath, './config.js'), ); vscode.commands.executeCommand( 'vscode.open', - vscode.Uri.parse(mermaidConfigFilePath), - ); - } - - function openMathJaxConfig() { - const mathjaxConfigFilePath = utility.addFileProtocol( - path.resolve(getExtensionConfigPath(), './mathjax_config_v3.js'), - ); - vscode.commands.executeCommand( - 'vscode.open', - vscode.Uri.parse(mathjaxConfigFilePath), - ); - } - - function openKaTeXConfig() { - const katexConfigFilePath = utility.addFileProtocol( - path.resolve(getExtensionConfigPath(), './katex_config.js'), - ); - vscode.commands.executeCommand( - 'vscode.open', - vscode.Uri.parse(katexConfigFilePath), + vscode.Uri.parse(configScriptPath), ); } function extendParser() { const parserConfigPath = utility.addFileProtocol( - path.resolve(getExtensionConfigPath(), './parser.js'), + path.resolve(globalConfigPath, './parser.js'), ); vscode.commands.executeCommand( 'vscode.open', @@ -163,7 +67,7 @@ export function activate(context: vscode.ExtensionContext) { function showUploadedImages() { const imageHistoryFilePath = utility.addFileProtocol( - path.resolve(getExtensionConfigPath(), './image_history.md'), + path.resolve(globalConfigPath, './image_history.md'), ); vscode.commands.executeCommand( 'vscode.open', @@ -171,537 +75,6 @@ export function activate(context: vscode.ExtensionContext) { ); } - function insertNewSlide() { - const editor = vscode.window.activeTextEditor; - if (editor && editor.document && editor.edit) { - editor.edit(textEdit => { - textEdit.insert(editor.selection.active, '\n'); - }); - } - } - - function insertPagebreak() { - const editor = vscode.window.activeTextEditor; - if (editor && editor.document && editor.edit) { - editor.edit(textEdit => { - textEdit.insert(editor.selection.active, '\n'); - }); - } - } - - function createTOC() { - const editor = vscode.window.activeTextEditor; - if (editor && editor.document && editor.edit) { - editor.edit(textEdit => { - textEdit.insert( - editor.selection.active, - '\n\n', - ); - }); - } - } - - function insertTable() { - const editor = vscode.window.activeTextEditor; - if (editor && editor.document && editor.edit) { - editor.edit(textEdit => { - textEdit.insert( - editor.selection.active, - `| | | -|---|---| -| | | -`, - ); - }); - } - } - - function openImageHelper() { - contentProvider.openImageHelper( - vscode.window.activeTextEditor.document.uri, - ); - } - - function webviewFinishLoading( - uri: string, - { - systemColorScheme, - }: { - systemColorScheme: 'light' | 'dark'; - }, - ) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.setSystemColorScheme(systemColorScheme); - contentProvider.updateMarkdown(sourceUri); - } - - /** - * Insert imageUrl to markdown file - * @param uri: markdown source uri - * @param imageUrl: url of image to be inserted - */ - function insertImageUrl(uri, imageUrl) { - const sourceUri = vscode.Uri.parse(uri); - - vscode.window.visibleTextEditors - .filter( - editor => - isMarkdownFile(editor.document) && - editor.document.uri.fsPath === sourceUri.fsPath, - ) - .forEach(editor => { - // const line = editor.selection.active.line - editor.edit(textEditorEdit => { - textEditorEdit.insert( - editor.selection.active, - `![enter image description here](${imageUrl})`, - ); - }); - }); - } - - function refreshPreview(uri) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.refreshPreview(sourceUri); - } - - function openInBrowser(uri) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.openInBrowser(sourceUri); - } - - function htmlExport(uri, offline) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.htmlExport(sourceUri, offline); - } - - function chromeExport(uri, type) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.chromeExport(sourceUri, type); - } - - function princeExport(uri) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.princeExport(sourceUri); - } - - function eBookExport(uri, fileType) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.eBookExport(sourceUri, fileType); - } - - function pandocExport(uri) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.pandocExport(sourceUri); - } - - function markdownExport(uri) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.markdownExport(sourceUri); - } - - /* - function cacheSVG(uri, code, svg) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.cacheSVG(sourceUri, code, svg) - } - */ - - function cacheCodeChunkResult(uri, id, result) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.cacheCodeChunkResult(sourceUri, id, result); - } - - function runCodeChunk(uri, codeChunkId) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.runCodeChunk(sourceUri, codeChunkId); - } - - function runAllCodeChunks(uri) { - const sourceUri = vscode.Uri.parse(uri); - contentProvider.runAllCodeChunks(sourceUri); - } - - function runAllCodeChunksCommand() { - const textEditor = vscode.window.activeTextEditor; - if (!textEditor.document) { - return; - } - if (!isMarkdownFile(textEditor.document)) { - return; - } - - const sourceUri = textEditor.document.uri; - const previewUri = getPreviewUri(sourceUri); - if (!previewUri) { - return; - } - - contentProvider.previewPostMessage(sourceUri, { - command: 'runAllCodeChunks', - }); - } - - function runCodeChunkCommand() { - const textEditor = vscode.window.activeTextEditor; - if (!textEditor.document) { - return; - } - if (!isMarkdownFile(textEditor.document)) { - return; - } - - const sourceUri = textEditor.document.uri; - const previewUri = getPreviewUri(sourceUri); - if (!previewUri) { - return; - } - contentProvider.previewPostMessage(sourceUri, { - command: 'runCodeChunk', - }); - } - - function syncPreview() { - const textEditor = vscode.window.activeTextEditor; - if (!textEditor.document) { - return; - } - if (!isMarkdownFile(textEditor.document)) { - return; - } - - const sourceUri = textEditor.document.uri; - contentProvider.previewPostMessage(sourceUri, { - command: 'changeTextEditorSelection', - line: textEditor.selections[0].active.line, - forced: true, - }); - } - - function clickTagA(uri, href) { - href = decodeURIComponent(href); - href = href - .replace(/^vscode\-resource:\/\//, '') - .replace(/^vscode\-webview\-resource:\/\/(.+?)\//, '') - .replace(/^file\/\/\//, 'file:///') - .replace( - /^https:\/\/file\+\.vscode-resource.vscode-cdn.net\//, - 'file:///', - ) - .replace( - /^https?:\/\/(.+?)\.vscode-webview-test.com\/vscode-resource\/file\/+/, - 'file:///', - ) - .replace(/^https?:\/\/file(.+?)\.vscode-webview\.net\/+/, 'file:///'); - if ( - ['.pdf', '.xls', '.xlsx', '.doc', '.ppt', '.docx', '.pptx'].indexOf( - path.extname(href), - ) >= 0 - ) { - utility.openFile(href); - } else if (href.match(/^file:\/\/\//)) { - // openFilePath = href.slice(8) # remove protocol - let openFilePath = utility.addFileProtocol( - href, // .replace(/(\s*)[\#\?](.+)$/, ""), - ); - openFilePath = decodeURI(openFilePath); - const fileUri = vscode.Uri.parse(openFilePath); - - // determine from link fragment to which line to jump - let line = -1; - const found = fileUri.fragment.match(/^L(\d+)/); - if (found) { - line = parseInt(found[1], 10); - if (line > 0) { - line = line - 1; - } - } - - // find if there is already opened such file - // and remember in which view column it is - let col = vscode.ViewColumn.One; - tgrLoop: for (const tabGroup of vscode.window.tabGroups.all) { - for (const tab of tabGroup.tabs) { - if (tab.input instanceof vscode.TabInputText) { - if (tab.input.uri.path === fileUri.path) { - col = tabGroup.viewColumn; - break tgrLoop; - } - } - } - } - - // open file if needed, if not we will use already opened editor - // (by specifying view column in which it is already shown) - - if (fs.existsSync(fileUri.fsPath)) { - vscode.workspace.openTextDocument(fileUri.path).then(doc => { - vscode.window.showTextDocument(doc, col).then(editor => { - // if there was line fragment, jump to line - if (line >= 0) { - let viewPos = vscode.TextEditorRevealType.InCenter; - if (editor.selection.active.line === line) { - viewPos = vscode.TextEditorRevealType.InCenterIfOutsideViewport; - } - const sel = new vscode.Selection(line, 0, line, 0); - editor.selection = sel; - editor.revealRange(sel, viewPos); - } - }); - }); - } else { - vscode.commands.executeCommand( - 'vscode.open', - fileUri, - vscode.ViewColumn.One, - ); - } - } else { - utility.openFile(href); - } - } - - function clickTaskListCheckbox(uri, dataLine) { - const sourceUri = vscode.Uri.parse(uri); - const visibleTextEditors = vscode.window.visibleTextEditors; - for (let i = 0; i < visibleTextEditors.length; i++) { - const editor = visibleTextEditors[i]; - if (editor.document.uri.fsPath === sourceUri.fsPath) { - dataLine = parseInt(dataLine, 10); - editor.edit(edit => { - let line = editor.document.lineAt(dataLine).text; - if (line.match(/\[ \]/)) { - line = line.replace('[ ]', '[x]'); - } else { - line = line.replace(/\[[xX]\]/, '[ ]'); - } - edit.replace( - new vscode.Range( - new vscode.Position(dataLine, 0), - new vscode.Position(dataLine, line.length), - ), - line, - ); - }); - break; - } - } - } - - function setPreviewTheme(uri, theme) { - const config = vscode.workspace.getConfiguration( - 'markdown-preview-enhanced', - ); - config.update('previewTheme', theme, true); - } - - context.subscriptions.push( - vscode.workspace.onDidSaveTextDocument(document => { - if (isMarkdownFile(document)) { - contentProvider.updateMarkdown(document.uri, true); - } - }), - ); - - context.subscriptions.push( - vscode.workspace.onDidChangeTextDocument(event => { - if (isMarkdownFile(event.document)) { - contentProvider.update(event.document.uri); - } - }), - ); - - context.subscriptions.push( - vscode.workspace.onDidChangeConfiguration(() => { - contentProvider.updateConfiguration(); - }), - ); - - context.subscriptions.push( - vscode.window.onDidChangeTextEditorSelection(event => { - if (isMarkdownFile(event.textEditor.document)) { - const firstVisibleScreenRow = getTopVisibleLine(event.textEditor); - const lastVisibleScreenRow = getBottomVisibleLine(event.textEditor); - const topRatio = - (event.selections[0].active.line - firstVisibleScreenRow) / - (lastVisibleScreenRow - firstVisibleScreenRow); - - contentProvider.previewPostMessage(event.textEditor.document.uri, { - command: 'changeTextEditorSelection', - line: event.selections[0].active.line, - topRatio, - }); - } - }), - ); - - context.subscriptions.push( - vscode.window.onDidChangeTextEditorVisibleRanges(event => { - const textEditor = event.textEditor as vscode.TextEditor; - if (Date.now() < editorScrollDelay) { - return; - } - if (isMarkdownFile(textEditor.document)) { - const sourceUri = textEditor.document.uri; - if (!event.textEditor.visibleRanges.length) { - return undefined; - } else { - const topLine = getTopVisibleLine(textEditor); - const bottomLine = getBottomVisibleLine(textEditor); - let midLine; - if (topLine === 0) { - midLine = 0; - } else if ( - Math.floor(bottomLine) === - textEditor.document.lineCount - 1 - ) { - midLine = bottomLine; - } else { - midLine = Math.floor((topLine + bottomLine) / 2); - } - contentProvider.previewPostMessage(sourceUri, { - command: 'changeTextEditorSelection', - line: midLine, - }); - } - } - }), - ); - - /** - * Open preview automatically if the `automaticallyShowPreviewOfMarkdownBeingEdited` is on. - * @param textEditor - */ - context.subscriptions.push( - vscode.window.onDidChangeActiveTextEditor(textEditor => { - if (textEditor && textEditor.document && textEditor.document.uri) { - if (isMarkdownFile(textEditor.document)) { - const config = vscode.workspace.getConfiguration( - 'markdown-preview-enhanced', - ); - const sourceUri = textEditor.document.uri; - const automaticallyShowPreviewOfMarkdownBeingEdited = config.get< - boolean - >('automaticallyShowPreviewOfMarkdownBeingEdited'); - const isUsingSinglePreview = config.get('singlePreview'); - /** - * Is using single preview and the preview is on. - * When we switched text ed()tor, update preview to that text editor. - */ - - if (contentProvider.isPreviewOn(sourceUri)) { - if ( - isUsingSinglePreview && - !contentProvider.previewHasTheSameSingleSourceUri(sourceUri) - ) { - contentProvider.initPreview(sourceUri, textEditor, { - viewColumn: contentProvider.getPreview(sourceUri).viewColumn, - preserveFocus: true, - }); - } else if (!isUsingSinglePreview) { - const previewPanel = contentProvider.getPreview(sourceUri); - if (previewPanel) { - previewPanel.reveal(vscode.ViewColumn.Two, true); - } - } - } else if (automaticallyShowPreviewOfMarkdownBeingEdited) { - openPreviewToTheSide(sourceUri); - } - } - } - }), - ); - - // Changed editor color theme - context.subscriptions.push( - vscode.window.onDidChangeActiveColorTheme(theme => { - const config = vscode.workspace.getConfiguration( - 'markdown-preview-enhanced', - ); - if ( - config.get('previewColorScheme') === - PreviewColorScheme.editorColorScheme - ) { - contentProvider.updateConfiguration(true); - } - }), - ); - - /* - context.subscriptions.push(vscode.workspace.onDidOpenTextDocument((textDocument)=> { - // console.log('onDidOpenTextDocument', textDocument.uri) - })) - */ - - /* - context.subscriptions.push(vscode.window.onDidChangeVisibleTextEditors(textEditors=> { - // console.log('onDidChangeonDidChangeVisibleTextEditors ', textEditors) - })) - */ - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.openPreviewToTheSide', - openPreviewToTheSide, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.openPreview', - openPreview, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.toggleScrollSync', - toggleScrollSync, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.toggleLiveUpdate', - toggleLiveUpdate, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.toggleBreakOnSingleNewLine', - toggleBreakOnSingleNewLine, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.openImageHelper', - openImageHelper, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.runAllCodeChunks', - runAllCodeChunksCommand, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.runCodeChunk', - runCodeChunkCommand, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.syncPreview', - syncPreview, - ), - ); - context.subscriptions.push( vscode.commands.registerCommand( 'markdown-preview-enhanced.customizeCss', @@ -711,22 +84,8 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.commands.registerCommand( - 'markdown-preview-enhanced.openMermaidConfig', - openMermaidConfig, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.openMathJaxConfig', - openMathJaxConfig, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.openKaTeXConfig', - openKaTeXConfig, + 'markdown-preview-enhanced.openConfigScript', + openConfigScript, ), ); @@ -744,199 +103,12 @@ export function activate(context: vscode.ExtensionContext) { ), ); - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.insertNewSlide', - insertNewSlide, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.insertTable', - insertTable, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.insertPagebreak', - insertPagebreak, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - 'markdown-preview-enhanced.createTOC', - createTOC, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.revealLine', revealLine), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.insertImageUrl', insertImageUrl), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.pasteImageFile', pasteImageFile), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.uploadImageFile', uploadImageFile), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.refreshPreview', refreshPreview), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.openInBrowser', openInBrowser), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.htmlExport', htmlExport), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.chromeExport', chromeExport), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.princeExport', princeExport), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.eBookExport', eBookExport), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.pandocExport', pandocExport), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.markdownExport', markdownExport), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - '_mume.webviewFinishLoading', - webviewFinishLoading, - ), - ); - - // context.subscriptions.push(vscode.commands.registerCommand('_mume.cacheSVG', cacheSVG)) - - context.subscriptions.push( - vscode.commands.registerCommand( - '_mume.cacheCodeChunkResult', - cacheCodeChunkResult, - ), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.runCodeChunk', runCodeChunk), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.runAllCodeChunks', runAllCodeChunks), - ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.clickTagA', clickTagA), - ); - - context.subscriptions.push( - vscode.commands.registerCommand( - '_mume.clickTaskListCheckbox', - clickTaskListCheckbox, - ), - ); + // context.subscriptions.push(vscode.commands.registerCommand('_crossnote.cacheSVG', cacheSVG)) context.subscriptions.push( vscode.commands.registerCommand( - '_mume.showUploadedImageHistory', + '_crossnote.showUploadedImageHistory', showUploadedImages, ), ); - - context.subscriptions.push( - vscode.commands.registerCommand('_mume.setPreviewTheme', setPreviewTheme), - ); -} - -function revealLine(uri, line) { - const sourceUri = vscode.Uri.parse(uri); - - vscode.window.visibleTextEditors - .filter( - editor => - isMarkdownFile(editor.document) && - editor.document.uri.fsPath === sourceUri.fsPath, - ) - .forEach(editor => { - const sourceLine = Math.min( - Math.floor(line), - editor.document.lineCount - 1, - ); - const fraction = line - sourceLine; - const text = editor.document.lineAt(sourceLine).text; - const start = Math.floor(fraction * text.length); - editorScrollDelay = Date.now() + 500; - editor.revealRange( - new vscode.Range(sourceLine, start, sourceLine + 1, 0), - vscode.TextEditorRevealType.InCenter, - ); - editorScrollDelay = Date.now() + 500; - }); -} - -/** - * Get the top-most visible range of `editor`. - * - * Returns a fractional line number based the visible character within the line. - * Floor to get real line number - */ -export function getTopVisibleLine( - editor: vscode.TextEditor, -): number | undefined { - if (!editor['visibleRanges'].length) { - return undefined; - } - - const firstVisiblePosition = editor['visibleRanges'][0].start; - const lineNumber = firstVisiblePosition.line; - const line = editor.document.lineAt(lineNumber); - const progress = firstVisiblePosition.character / (line.text.length + 2); - return lineNumber + progress; -} - -/** - * Get the bottom-most visible range of `editor`. - * - * Returns a fractional line number based the visible character within the line. - * Floor to get real line number - */ -export function getBottomVisibleLine( - editor: vscode.TextEditor, -): number | undefined { - if (!editor['visibleRanges'].length) { - return undefined; - } - - const firstVisiblePosition = editor['visibleRanges'][0].end; - const lineNumber = firstVisiblePosition.line; - let text = ''; - if (lineNumber < editor.document.lineCount) { - text = editor.document.lineAt(lineNumber).text; - } - const progress = firstVisiblePosition.character / (text.length + 2); - return lineNumber + progress; -} - -// this method is called when your extension is deactivated -export function deactivate() { - // } diff --git a/src/image-helper.ts b/src/image-helper.ts index 3675f6b..68ffef7 100644 --- a/src/image-helper.ts +++ b/src/image-helper.ts @@ -1,8 +1,8 @@ -import { utility } from '@shd101wyy/mume'; +import { utility } from 'crossnote'; import * as fs from 'fs'; import * as path from 'path'; import * as vscode from 'vscode'; -import { isMarkdownFile } from './preview-content-provider'; +import { getWorkspaceFolderUri, isMarkdownFile } from './utils'; /** * Copy ans paste image at imageFilePath to config.imageForlderPath. @@ -10,16 +10,19 @@ import { isMarkdownFile } from './preview-content-provider'; * @param uri * @param imageFilePath */ -export function pasteImageFile(sourceUri: any, imageFilePath: string) { - if (typeof sourceUri === 'string') { - sourceUri = vscode.Uri.parse(sourceUri); - } +export function pasteImageFile(sourceUri: string, imageFilePath: string) { + const uri = vscode.Uri.parse(sourceUri); - const imageFolderPath = vscode.workspace - .getConfiguration('markdown-preview-enhanced') - .get('imageFolderPath'); + const imageFolderPath = + vscode.workspace + .getConfiguration('markdown-preview-enhanced') + .get('imageFolderPath') ?? ''; let imageFileName = path.basename(imageFilePath); - const projectDirectoryPath = vscode.workspace.rootPath; + const projectDirectoryPath = getWorkspaceFolderUri(uri).fsPath; + if (!projectDirectoryPath) { + return vscode.window.showErrorMessage('Cannot find workspace'); + } + let assetDirectoryPath; let description; if (imageFolderPath[0] === '/') { @@ -29,7 +32,7 @@ export function pasteImageFile(sourceUri: any, imageFilePath: string) { ); } else { assetDirectoryPath = path.resolve( - path.dirname(sourceUri.fsPath), + path.dirname(uri.fsPath), imageFolderPath, ); } @@ -43,7 +46,7 @@ export function pasteImageFile(sourceUri: any, imageFilePath: string) { .filter( editor => isMarkdownFile(editor.document) && - editor.document.uri.fsPath === sourceUri.fsPath, + editor.document.uri.fsPath === uri.fsPath, ) .forEach(editor => { fs.mkdir(assetDirectoryPath, error => { diff --git a/src/preview-content-provider.ts b/src/preview-provider.ts similarity index 58% rename from src/preview-content-provider.ts rename to src/preview-provider.ts index a952da2..c23fa93 100644 --- a/src/preview-content-provider.ts +++ b/src/preview-provider.ts @@ -1,30 +1,102 @@ -import * as mume from '@shd101wyy/mume'; -import { CodeChunkData, MarkdownEngine, PreviewTheme } from '@shd101wyy/mume'; -import * as fs from 'fs'; +import { + Notebook, + PreviewTheme, + loadConfigsInDirectory, + utility, +} from 'crossnote'; import { tmpdir } from 'os'; import * as path from 'path'; import * as vscode from 'vscode'; -import { TextEditor, Uri } from 'vscode'; +import { Uri } from 'vscode'; import { MarkdownPreviewEnhancedConfig, PreviewColorScheme } from './config'; +import { + getCrossnoteVersion, + getWorkspaceFolderUri, + globalConfigPath, + isMarkdownFile, + isVSCodeWebExtension, + isVSCodewebExtensionDevMode, +} from './utils'; +import { wrapVSCodeFSAsApi } from './vscode-fs'; + +if (isVSCodeWebExtension()) { + console.debug('* Using crossnote version: ', getCrossnoteVersion()); + if (isVSCodewebExtensionDevMode()) { + console.debug('* Now under the dev mode'); + console.debug('* Loading /crossnote directory at http://localhost:6789/'); + utility.setCrossnoteBuildDirectory('http://localhost:6789/'); + } else { + const config = vscode.workspace.getConfiguration( + 'markdown-preview-enhanced', + ); + const jsdelivrCdnHost = + config.get('jsdelivrCdnHost') ?? 'cdn.jsdelivr.net'; + utility.setCrossnoteBuildDirectory( + `https://${jsdelivrCdnHost}/npm/crossnote@${getCrossnoteVersion()}/out/`, + ); + } +} else { + // NOTE: The __dirname is actually the out/native folder + utility.setCrossnoteBuildDirectory( + path.resolve(__dirname, '../../crossnote/'), + ); +} -// NOTE: The __dirname is actually the out/native folder -mume.utility.setExtentensionDirectoryPath( - path.resolve(__dirname, '../../mume/'), -); +utility.useExternalAddFileProtocolFunction((filePath, preview) => { + if (preview) { + if (filePath.startsWith('/http:/localhost:6789/')) { + return filePath.replace( + '/http:/localhost:6789/', + 'http://localhost:6789/', + ); + } else if (filePath.startsWith('/https:/')) { + return filePath.replace('/https:/', 'https://'); + } else { + return preview.webview + .asWebviewUri(vscode.Uri.file(filePath)) + .toString(true) + .replace(/%3F/gi, '?') + .replace(/%23/g, '#'); + } + } else { + if (!filePath.startsWith('file://')) { + filePath = 'file:///' + filePath; + } + filePath = filePath.replace(/^file\:\/+/, 'file:///'); + return filePath; + } +}); + +/** + * key is `workspaceDir` + * value is the `PreviewProvider` + */ +const WORKSPACE_PREVIEW_PROVIDER_MAP: Map< + string, // workspaceDir fsPath + PreviewProvider +> = new Map(); + +export function getAllPreviewProviders(): PreviewProvider[] { + return Array.from(WORKSPACE_PREVIEW_PROVIDER_MAP.values()); +} // http://www.typescriptlang.org/play/ // https://github.com/Microsoft/vscode/blob/master/extensions/markdown/media/main.js // https://github.com/Microsoft/vscode/tree/master/extensions/markdown/src // https://github.com/tomoki1207/gfm-preview/blob/master/src/gfmProvider.ts // https://github.com/cbreeden/vscode-markdownit -export class MarkdownPreviewEnhancedView { +export class PreviewProvider { private waiting: boolean = false; /** - * The key is markdown file fsPath - * value is MarkdownEngine + * Each PreviewProvider has a one notebook. + */ + private notebook: Notebook; + + /** + * VSCode extension context */ - private engineMaps: { [key: string]: MarkdownEngine } = {}; + private context: vscode.ExtensionContext; /** * The key is markdown file fspath @@ -37,8 +109,8 @@ export class MarkdownPreviewEnhancedView { vscode.TextEditor > = new Map(); - private singlePreviewPanel: vscode.WebviewPanel; - private singlePreviewPanelSourceUriTarget: Uri; + private singlePreviewPanel: vscode.WebviewPanel | null; + private singlePreviewPanelSourceUriTarget: Uri | null; /** * The key is markdown file fsPath @@ -50,64 +122,88 @@ export class MarkdownPreviewEnhancedView { private systemColorScheme: 'light' | 'dark' = 'light'; - public constructor(private context: vscode.ExtensionContext) { + public constructor() { + // Please use `init` method to initialize this class. + } + + private async init( + context: vscode.ExtensionContext, + workspaceDir: vscode.Uri, + ) { + this.context = context; this.config = MarkdownPreviewEnhancedConfig.getCurrentConfig(); + this.notebook = await Notebook.init({ + notebookPath: workspaceDir.fsPath, + config: { ...this.config }, + fs: wrapVSCodeFSAsApi(workspaceDir.scheme), + }); - mume - .init(this.config.configPath) // init markdown-preview-enhanced - .then(() => { - mume.onDidChangeConfigFile(this.refreshAllPreviews.bind(this)); - MarkdownEngine.onModifySource(this.modifySource.bind(this)); - mume.utility.useExternalAddFileProtocolFunction( - (filePath: string, preview: vscode.WebviewPanel) => { - if (preview) { - return preview.webview - .asWebviewUri(vscode.Uri.file(filePath)) - .toString(true) - .replace(/%3F/gi, '?') - .replace(/%23/g, '#'); - } else { - if (!filePath.startsWith('file://')) { - filePath = 'file:///' + filePath; - } - filePath = filePath.replace(/^file\:\/+/, 'file:///'); - return filePath; - } - }, + // Check if ${workspaceDir}/.crossnote directory exists + // If not, then use the global config. + const crossnoteDir = vscode.Uri.joinPath(workspaceDir, './.crossnote'); + if ( + !(await this.notebook.fs.exists(crossnoteDir.fsPath)) && + !isVSCodeWebExtension() + ) { + try { + const globalConfig = await loadConfigsInDirectory( + globalConfigPath, + this.notebook.fs, + true, ); + this.notebook.updateConfig(globalConfig); + } catch (error) { + console.error(error); + } + } - const extensionVersion = require(path.resolve( - this.context.extensionPath, - './package.json', - ))['version']; - if (extensionVersion !== mume.configs.config['vscode_mpe_version']) { - const config = Object.assign({}, mume.configs.config, { - vscode_mpe_version: extensionVersion, - }); - fs.writeFileSync( - path.resolve(mume.getExtensionConfigPath(), 'config.json'), - JSON.stringify(config), - ); - } - }) - .catch(error => { - vscode.window.showErrorMessage(error.toString()); - }); + return this; } - private refreshAllPreviews() { - // clear caches - for (const key in this.engineMaps) { - if (this.engineMaps.hasOwnProperty(key)) { - const engine = this.engineMaps[key]; - if (engine) { - // No need to resetConfig. - // Otherwiser when user change settings like `previewTheme`, the preview won't change immediately. - // engine.resetConfig(); - engine.clearCaches(); - } + public async updateCrossnoteConfig(directory: string, forceUpdate = false) { + // If directory is globalConfigDirectory && ${workspaceDir}/.crossnote directory exists + // then return without updating. + if ( + directory === globalConfigPath && + (await this.notebook.fs.exists( + path.join(this.notebook.notebookPath, '.crossnote'), + )) + ) { + return; + } + + if ((await this.notebook.fs.exists(directory)) || forceUpdate) { + const configs = await loadConfigsInDirectory( + directory, + this.notebook.fs, + true, + ); + this.notebook.updateConfig(configs); + } + } + + public static async getPreviewContentProvider( + uri: vscode.Uri, + context: vscode.ExtensionContext, + ) { + const workspaceUri = getWorkspaceFolderUri(uri); + if (WORKSPACE_PREVIEW_PROVIDER_MAP.has(workspaceUri.fsPath)) { + const provider = WORKSPACE_PREVIEW_PROVIDER_MAP.get(workspaceUri.fsPath); + if (!provider) { + throw new Error('Cannot find preview provider'); } + return provider; + } else { + const provider = new PreviewProvider(); + await provider.init(context, workspaceUri); + WORKSPACE_PREVIEW_PROVIDER_MAP.set(workspaceUri.fsPath, provider); + return provider; } + } + + public refreshAllPreviews() { + // clear caches + this.notebook.clearAllNoteMarkdownEngineCaches(); // refresh iframes if (useSinglePreview()) { @@ -121,127 +217,11 @@ export class MarkdownPreviewEnhancedView { } } - /** - * modify markdown source, append `result` after corresponding code chunk. - * @param codeChunkData - * @param result - * @param filePath - */ - private async modifySource( - codeChunkData: CodeChunkData, - result: string, - filePath: string, - ): Promise { - function insertResult(i: number, editor: TextEditor) { - const lineCount = editor.document.lineCount; - let start = 0; - // find - for (let j = i + 1; j < i + 6 && j < lineCount; j++) { - if ( - editor.document - .lineAt(j) - .text.startsWith('') - ) { - start = j; - break; - } - } - if (start) { - // found - // TODO: modify exited output - let end = start + 1; - while (end < lineCount) { - if ( - editor.document - .lineAt(end) - .text.startsWith('') - ) { - break; - } - end += 1; - } - - // if output not changed, then no need to modify editor buffer - let r = ''; - for (let i2 = start + 2; i2 < end - 1; i2++) { - r += editor.document.lineAt(i2).text + '\n'; - } - if (r === result + '\n') { - return ''; - } // no need to modify output - - editor.edit(edit => { - edit.replace( - new vscode.Range( - new vscode.Position(start + 2, 0), - new vscode.Position(end - 1, 0), - ), - result + '\n', - ); - }); - return ''; - } else { - editor.edit(edit => { - edit.insert( - new vscode.Position(i + 1, 0), - `\n\n\n${result}\n\n\n`, - ); - }); - return ''; - } - } - - const visibleTextEditors = vscode.window.visibleTextEditors; - for (let i = 0; i < visibleTextEditors.length; i++) { - const editor = visibleTextEditors[i]; - if (this.formatPathIfNecessary(editor.document.uri.fsPath) === filePath) { - let codeChunkOffset = 0; - const targetCodeChunkOffset = - codeChunkData.normalizedInfo.attributes['code_chunk_offset']; - - const lineCount = editor.document.lineCount; - for (let i2 = 0; i2 < lineCount; i2++) { - const line = editor.document.lineAt(i2); - if (line.text.match(/^```(.+)\"?cmd\"?\s*[=\s}]/)) { - if (codeChunkOffset === targetCodeChunkOffset) { - i2 = i2 + 1; - while (i2 < lineCount) { - if (editor.document.lineAt(i2).text.match(/^\`\`\`\s*/)) { - break; - } - i2 += 1; - } - return insertResult(i2, editor); - } else { - codeChunkOffset++; - } - } else if (line.text.match(/\@import\s+(.+)\"?cmd\"?\s*[=\s}]/)) { - if (codeChunkOffset === targetCodeChunkOffset) { - return insertResult(i2, editor); - } else { - codeChunkOffset++; - } - } - } - break; - } - } - return ''; - } - - /** - * return markdown engine of sourceUri - * @param sourceUri - */ - public getEngine(sourceUri: Uri): MarkdownEngine { - return this.engineMaps[sourceUri.fsPath]; - } - /** * return markdown preview of sourceUri * @param sourceUri */ - public getPreview(sourceUri: Uri): vscode.WebviewPanel { + public getPreview(sourceUri: Uri): vscode.WebviewPanel | null { if (useSinglePreview()) { return this.singlePreviewPanel; } else { @@ -277,87 +257,12 @@ export class MarkdownPreviewEnhancedView { } /** - * remove engine from this.engineMaps - * @param sourceUri - */ - public destroyEngine(sourceUri: Uri) { - if (useSinglePreview()) { - return (this.engineMaps = {}); - } - const engine = this.getEngine(sourceUri); - if (engine) { - delete this.engineMaps[sourceUri.fsPath]; // destroy engine - } - } - - /** - * Format pathString if it is on Windows. Convert `c:\` like string to `C:\` - * @param pathString + * TODO: Free memory */ - private formatPathIfNecessary(pathString: string) { - if (process.platform === 'win32') { - pathString = pathString.replace( - /^([a-zA-Z])\:\\/, - (_, $1) => `${$1.toUpperCase()}:\\`, - ); - } - return pathString; - } + public destroyEngine(sourceUri: vscode.Uri) {} - private getProjectDirectoryPath( - sourceUri: Uri, - workspaceFolders: readonly vscode.WorkspaceFolder[] = [], - ) { - const possibleWorkspaceFolders = workspaceFolders.filter( - workspaceFolder => { - return ( - path - .dirname(sourceUri.path.toUpperCase()) - .indexOf(workspaceFolder.uri.path.toUpperCase()) >= 0 - ); - }, - ); - - let projectDirectoryPath; - if (possibleWorkspaceFolders.length) { - // We pick the workspaceUri that has the longest path - const workspaceFolder = possibleWorkspaceFolders.sort( - (x, y) => y.uri.fsPath.length - x.uri.fsPath.length, - )[0]; - projectDirectoryPath = workspaceFolder.uri.fsPath; - } else { - projectDirectoryPath = ''; - } - - return this.formatPathIfNecessary(projectDirectoryPath); - } - - private getFilePath(sourceUri: Uri) { - return this.formatPathIfNecessary(sourceUri.fsPath); - } - - /** - * Initialize MarkdownEngine for this markdown file - */ - public initMarkdownEngine(sourceUri: Uri): MarkdownEngine { - let engine = this.getEngine(sourceUri); - if (!engine) { - const previewTheme = this.getPreviewTheme( - this.config.previewTheme, - this.config.previewColorScheme, - ); - engine = new MarkdownEngine({ - filePath: this.getFilePath(sourceUri), - projectDirectoryPath: this.getProjectDirectoryPath( - sourceUri, - vscode.workspace.workspaceFolders, - ), - config: { ...this.config, previewTheme }, - }); - this.engineMaps[sourceUri.fsPath] = engine; - this.jsAndCssFilesMaps[sourceUri.fsPath] = []; - } - return engine; + private getEngine(sourceUri: Uri) { + return this.notebook.getNoteMarkdownEngine(sourceUri.fsPath); } public async initPreview( @@ -368,17 +273,11 @@ export class MarkdownPreviewEnhancedView { const isUsingSinglePreview = useSinglePreview(); let previewPanel: vscode.WebviewPanel; if (isUsingSinglePreview && this.singlePreviewPanel) { - const oldResourceRoot = - this.getProjectDirectoryPath( - this.singlePreviewPanelSourceUriTarget, - vscode.workspace.workspaceFolders, - ) || path.dirname(this.singlePreviewPanelSourceUriTarget.fsPath); - const newResourceRoot = - this.getProjectDirectoryPath( - sourceUri, - vscode.workspace.workspaceFolders, - ) || path.dirname(sourceUri.fsPath); - if (oldResourceRoot !== newResourceRoot) { + const oldResourceRoot = this.singlePreviewPanelSourceUriTarget + ? getWorkspaceFolderUri(this.singlePreviewPanelSourceUriTarget) + : undefined; + const newResourceRoot = getWorkspaceFolderUri(sourceUri); + if (oldResourceRoot?.fsPath !== newResourceRoot.fsPath) { this.singlePreviewPanel.dispose(); return this.initPreview(sourceUri, editor, viewOptions); } else { @@ -390,16 +289,14 @@ export class MarkdownPreviewEnhancedView { } else { const localResourceRoots = [ vscode.Uri.file(this.context.extensionPath), - vscode.Uri.file(mume.utility.getExtensionDirectoryPath()), - vscode.Uri.file(mume.getExtensionConfigPath()), + vscode.Uri.file(utility.getCrossnoteBuildDirectory()), + vscode.Uri.file(globalConfigPath), vscode.Uri.file(tmpdir()), - vscode.Uri.file( - this.getProjectDirectoryPath( - sourceUri, - vscode.workspace.workspaceFolders, - ) || path.dirname(sourceUri.fsPath), - ), ]; + const workspaceUri = getWorkspaceFolderUri(sourceUri); + if (workspaceUri) { + localResourceRoots.push(workspaceUri); + } previewPanel = vscode.window.createWebviewPanel( 'markdown-preview-enhanced', @@ -419,7 +316,7 @@ export class MarkdownPreviewEnhancedView { previewPanel.webview.onDidReceiveMessage( message => { vscode.commands.executeCommand( - `_mume.${message.command}`, + `_crossnote.${message.command}`, ...message.args, ); }, @@ -454,7 +351,7 @@ export class MarkdownPreviewEnhancedView { let initialLine: number | undefined; if (editor && editor.document.uri.fsPath === sourceUri.fsPath) { initialLine = await new Promise((resolve, reject) => { - // Hack: sometimes we only get 0. I couldn't find API to wait for editor getting loaded. + // HACK: sometimes we only get 0. I couldn't find API to wait for editor getting loaded. setTimeout(() => { return resolve(editor.selections[0].active.line || 0); }, 100); @@ -462,21 +359,18 @@ export class MarkdownPreviewEnhancedView { } const text = editor.document.getText(); - let engine = this.getEngine(sourceUri); - if (!engine) { - engine = this.initMarkdownEngine(sourceUri); - } - + const engine = this.getEngine(sourceUri); engine .generateHTMLTemplateForPreview({ inputString: text, config: { sourceUri: sourceUri.toString(), - initialLine, + initialLine: initialLine as number, vscode: true, }, contentSecurityPolicy: '', vscodePreviewPanel: previewPanel, + isVSCodeWebExtension: isVSCodeWebExtension(), }) .then(html => { previewPanel.webview.html = html; @@ -492,7 +386,7 @@ export class MarkdownPreviewEnhancedView { this.singlePreviewPanel.dispose(); } } else { - const previewPanels = []; + const previewPanels: vscode.WebviewPanel[] = []; for (const key in this.previewMaps) { if (this.previewMaps.hasOwnProperty(key)) { const previewPanel = this.previewMaps[key]; @@ -507,7 +401,7 @@ export class MarkdownPreviewEnhancedView { this.previewMaps = {}; this.preview2EditorMap = new Map(); - this.engineMaps = {}; + // this.engineMaps = {}; this.singlePreviewPanel = null; this.singlePreviewPanelSourceUriTarget = null; } @@ -529,10 +423,6 @@ export class MarkdownPreviewEnhancedView { public updateMarkdown(sourceUri: Uri, triggeredBySave?: boolean) { const engine = this.getEngine(sourceUri); - if (!engine) { - return; - } - const previewPanel = this.getPreview(sourceUri); if (!previewPanel) { return; @@ -577,6 +467,7 @@ export class MarkdownPreviewEnhancedView { tocHTML, totalLineCount: document.lineCount, sourceUri: sourceUri.toString(), + sourceScheme: sourceUri.scheme, id: yamlConfig.id || '', class: (yamlConfig.class || '') + @@ -588,14 +479,18 @@ export class MarkdownPreviewEnhancedView { this.getEditorColorScheme() === 'dark' ? 'editor-dark' : 'editor-light' - }`, + } ${isVSCodeWebExtension() ? 'vscode-web-extension' : ''}`, }); } }); }); } - public refreshPreviewPanel(sourceUri: Uri) { + public refreshPreviewPanel(sourceUri: Uri | null) { + if (!sourceUri) { + return; + } + this.preview2EditorMap.forEach((editor, previewPanel) => { if ( previewPanel && @@ -606,7 +501,7 @@ export class MarkdownPreviewEnhancedView { editor.document.uri.fsPath === sourceUri.fsPath ) { this.initPreview(sourceUri, editor, { - viewColumn: previewPanel.viewColumn, + viewColumn: previewPanel.viewColumn ?? vscode.ViewColumn.One, preserveFocus: true, }); } @@ -625,9 +520,13 @@ export class MarkdownPreviewEnhancedView { public openInBrowser(sourceUri: Uri) { const engine = this.getEngine(sourceUri); if (engine) { - engine.openInBrowser({}).catch(error => { - vscode.window.showErrorMessage(error.toString()); - }); + if (isVSCodeWebExtension()) { + vscode.window.showErrorMessage(`Not supported in MPE web extension.`); + } else { + engine.openInBrowser({}).catch(error => { + vscode.window.showErrorMessage(error.toString()); + }); + } } } @@ -650,74 +549,90 @@ export class MarkdownPreviewEnhancedView { public chromeExport(sourceUri: Uri, type: string) { const engine = this.getEngine(sourceUri); if (engine) { - engine - .chromeExport({ fileType: type, openFileAfterGeneration: true }) - .then(dest => { - vscode.window.showInformationMessage( - `File ${path.basename(dest)} was created at path: ${dest}`, - ); - }) - .catch(error => { - vscode.window.showErrorMessage(error.toString()); - }); + if (isVSCodeWebExtension()) { + vscode.window.showErrorMessage(`Not supported in MPE web extension.`); + } else { + engine + .chromeExport({ fileType: type, openFileAfterGeneration: true }) + .then(dest => { + vscode.window.showInformationMessage( + `File ${path.basename(dest)} was created at path: ${dest}`, + ); + }) + .catch(error => { + vscode.window.showErrorMessage(error.toString()); + }); + } } } public princeExport(sourceUri: Uri) { const engine = this.getEngine(sourceUri); if (engine) { - engine - .princeExport({ openFileAfterGeneration: true }) - .then(dest => { - if (dest.endsWith('?print-pdf')) { - // presentation pdf - vscode.window.showInformationMessage( - `Please copy and open the link: { ${dest.replace( - /\_/g, - '\\_', - )} } in Chrome then Print as Pdf.`, - ); - } else { - vscode.window.showInformationMessage( - `File ${path.basename(dest)} was created at path: ${dest}`, - ); - } - }) - .catch(error => { - vscode.window.showErrorMessage(error.toString()); - }); + if (isVSCodeWebExtension()) { + vscode.window.showErrorMessage(`Not supported in MPE web extension.`); + } else { + engine + .princeExport({ openFileAfterGeneration: true }) + .then(dest => { + if (dest.endsWith('?print-pdf')) { + // presentation pdf + vscode.window.showInformationMessage( + `Please copy and open the link: { ${dest.replace( + /\_/g, + '\\_', + )} } in Chrome then Print as Pdf.`, + ); + } else { + vscode.window.showInformationMessage( + `File ${path.basename(dest)} was created at path: ${dest}`, + ); + } + }) + .catch(error => { + vscode.window.showErrorMessage(error.toString()); + }); + } } } public eBookExport(sourceUri: Uri, fileType: string) { const engine = this.getEngine(sourceUri); if (engine) { - engine - .eBookExport({ fileType, runAllCodeChunks: false }) - .then(dest => { - vscode.window.showInformationMessage( - `eBook ${path.basename(dest)} was created as path: ${dest}`, - ); - }) - .catch(error => { - vscode.window.showErrorMessage(error.toString()); - }); + if (isVSCodeWebExtension()) { + vscode.window.showErrorMessage(`Not supported in MPE web extension.`); + } else { + engine + .eBookExport({ fileType, runAllCodeChunks: false }) + .then(dest => { + vscode.window.showInformationMessage( + `eBook ${path.basename(dest)} was created as path: ${dest}`, + ); + }) + .catch(error => { + vscode.window.showErrorMessage(error.toString()); + }); + } } } public pandocExport(sourceUri) { const engine = this.getEngine(sourceUri); if (engine) { - engine - .pandocExport({ openFileAfterGeneration: true }) - .then(dest => { - vscode.window.showInformationMessage( - `Document ${path.basename(dest)} was created as path: ${dest}`, - ); - }) - .catch(error => { - vscode.window.showErrorMessage(error.toString()); - }); + if (isVSCodeWebExtension()) { + vscode.window.showErrorMessage(`Not supported in MPE web extension.`); + } else { + engine + .pandocExport({ openFileAfterGeneration: true }) + .then(dest => { + vscode.window.showInformationMessage( + `Document ${path.basename(dest)} was created as path: ${dest}`, + ); + }) + .catch(error => { + vscode.window.showErrorMessage(error.toString()); + }); + } } } @@ -821,18 +736,12 @@ export class MarkdownPreviewEnhancedView { this.config = newConfig; } else { this.config = newConfig; - for (const fsPath in this.engineMaps) { - if (this.engineMaps.hasOwnProperty(fsPath)) { - const engine = this.engineMaps[fsPath]; - const previewTheme = this.getPreviewTheme( - newConfig.previewTheme, - newConfig.previewColorScheme, - ); - // Update markdown engine configuration - engine.updateConfiguration({ ...newConfig, previewTheme }); - } - } + const previewTheme = this.getPreviewTheme( + newConfig.previewTheme, + newConfig.previewColorScheme, + ); + this.notebook.updateConfig({ ...newConfig, previewTheme }); // update all generated md documents this.refreshAllPreviews(); } @@ -923,10 +832,3 @@ export function getPreviewUri(uri: vscode.Uri) { } return previewUri; } - -export function isMarkdownFile(document: vscode.TextDocument) { - return ( - document.languageId === 'markdown' && - document.uri.scheme !== 'markdown-preview-enhanced' - ); // prevent processing of own documents -} diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..fe22ff0 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,126 @@ +import path = require('path'); +import * as os from 'os'; +import * as vscode from 'vscode'; +import * as packageJSON from '../package.json'; + +/** + * Format pathString if it is on Windows. Convert `c:\` like string to `C:\` + * @param pathString + */ +function formatPathIfNecessary(pathString: string) { + if (process.platform === 'win32') { + pathString = pathString.replace( + /^([a-zA-Z])\:\\/, + (_, $1) => `${$1.toUpperCase()}:\\`, + ); + } + return pathString; +} + +/** + * Get the workspace folder uri of the given uri + * @param uri + */ +export function getWorkspaceFolderUri(uri: vscode.Uri) { + const workspace = vscode.workspace.getWorkspaceFolder(uri); + if (workspace) { + return workspace.uri; + } + + const workspaces = vscode.workspace.workspaceFolders; + if (workspaces) { + for (let i = 0; i < workspaces.length; i++) { + const workspace = workspaces[i]; + if (uri.fsPath.startsWith(workspace.uri.fsPath)) { + return workspace.uri; + } + } + } + + // Return the folder of uri + return vscode.Uri.file(path.dirname(uri.fsPath)); +} + +function getGlobalConfigPath(): string { + const config = vscode.workspace.getConfiguration('markdown-preview-enhanced'); + const configPath = config.get('configPath'); + if (configPath && configPath !== '') { + return configPath.replace(/^~/, os.homedir()); + } + + if (process.platform === 'win32') { + return path.join(os.homedir(), './.crossnote'); + } else { + if ( + typeof process.env.XDG_CONFIG_HOME === 'string' && + process.env.XDG_CONFIG_HOME !== '' + ) { + return path.resolve(process.env.XDG_CONFIG_HOME, './crossnote'); + } else { + return path.resolve(os.homedir(), './.local/state/crossnote'); + } + } +} +export const globalConfigPath = getGlobalConfigPath(); + +export function isMarkdownFile(document: vscode.TextDocument) { + return ( + document.languageId === 'markdown' && + document.uri.scheme !== 'markdown-preview-enhanced' + ); // prevent processing of own documents +} + +/** + * Get the top-most visible range of `editor`. + * + * Returns a fractional line number based the visible character within the line. + * Floor to get real line number + */ +export function getTopVisibleLine( + editor: vscode.TextEditor, +): number | undefined { + if (!editor['visibleRanges'].length) { + return undefined; + } + + const firstVisiblePosition = editor['visibleRanges'][0].start; + const lineNumber = firstVisiblePosition.line; + const line = editor.document.lineAt(lineNumber); + const progress = firstVisiblePosition.character / (line.text.length + 2); + return lineNumber + progress; +} + +/** + * Get the bottom-most visible range of `editor`. + * + * Returns a fractional line number based the visible character within the line. + * Floor to get real line number + */ +export function getBottomVisibleLine( + editor: vscode.TextEditor, +): number | undefined { + if (!editor['visibleRanges'].length) { + return undefined; + } + + const firstVisiblePosition = editor['visibleRanges'][0].end; + const lineNumber = firstVisiblePosition.line; + let text = ''; + if (lineNumber < editor.document.lineCount) { + text = editor.document.lineAt(lineNumber).text; + } + const progress = firstVisiblePosition.character / (text.length + 2); + return lineNumber + progress; +} + +export function isVSCodeWebExtension() { + return process.env.IS_VSCODE_WEB_EXTENSION === 'true'; +} + +export function isVSCodewebExtensionDevMode() { + return process.env.IS_VSCODE_WEB_EXTENSION_DEV_MODE === 'true'; +} + +export function getCrossnoteVersion() { + return packageJSON.dependencies['crossnote']; +} diff --git a/src/utils/path-resolver.ts b/src/utils/path-resolver.ts deleted file mode 100644 index 45d8bb2..0000000 --- a/src/utils/path-resolver.ts +++ /dev/null @@ -1,85 +0,0 @@ -import * as vscode from 'vscode'; - -export class PathResolver { - /** - * resolve placeholder in string - */ - public static resolvePath(path: string) { - let result = path; - - // guard: empty - if (result.trim() === '') { - return path; - } - - // resolve VS Code predefined variables - result = this.resolveVscodePredefinedVariables(result); - - // resolve environment variables - result = this.resolveEnvironmentVariable(result); - - // done - return result; - } - - /** - * resolve vscode predefined variables in string - */ - public static resolveVscodePredefinedVariables(path: string) { - let result = path; - - // ... workspaceFolder - result = this.resolveVscodePredefinedVariableWorkspaceFolder(result); - - // done - return result; - } - - /** - * resolve vscode predefined variables in string - */ - public static resolveVscodePredefinedVariableWorkspaceFolder(path: string) { - let result = path; - - // guard: nothing to do - if (!path.includes('${workspaceFolder}')) { - return path; - } - - // guard: error - if (vscode.workspace.workspaceFolders === undefined) { - vscode.window.showErrorMessage( - 'Working folder not found, open a folder an try again', - ); - - return path; - } - - // determine workspace folder - // let workspaceFolder = vscode.workspace.workspaceFolders[0].uri.path ; - const workspaceFolder = vscode.workspace.workspaceFolders[0].uri.fsPath; - - // replace in configPath - result = path.replace('${workspaceFolder}', workspaceFolder); - - // log - // vscode.window.showInformationMessage( - // `Resolved '${this}' to '${result}'` - // ); - - // done - return result; - } - - /** - * resolve environment variables in string - */ - public static resolveEnvironmentVariable(path: string) { - // try to replace environment variables for windows (%ENV_VAR%) and bash (${ENV_VAR} as well as $ENV_VAR) - // line as suggested in https://stackoverflow.com/questions/21363912/how-to-resolve-a-path-that-includes-an-environment-variable-in-nodejs - return path.replace( - /%([A-Z_]+[A-Z0-9_]*)%|\$([A-Z_]+[A-Z0-9_]*)|\${([A-Z0-9_]*)}/gi, - (_, windows, bash1, bash2) => process.env[windows || bash1 || bash2], - ); - } -} diff --git a/src/vscode-fs.ts b/src/vscode-fs.ts new file mode 100644 index 0000000..df705ac --- /dev/null +++ b/src/vscode-fs.ts @@ -0,0 +1,60 @@ +import { FileSystemApi, FileSystemStats } from 'crossnote'; +import * as vscode from 'vscode'; + +function getUri(path: string, scheme: string): vscode.Uri { + const uri = vscode.Uri.file(path); + return vscode.Uri.from({ + ...uri, + scheme, + }); +} + +export function wrapVSCodeFSAsApi(scheme: string): FileSystemApi { + return { + exists: async (path: string): Promise => { + const uri = getUri(path, scheme); + // Check if the uri exists + try { + await vscode.workspace.fs.stat(uri); + return true; + } catch (error) { + return false; + } + }, + readFile: async (path: string): Promise => { + path = path.replace(/^\//, ''); + const uri = getUri(path, scheme); + const data = await vscode.workspace.fs.readFile(uri); + return new TextDecoder('utf-8').decode(data); + }, + writeFile: async (path: string, data: string): Promise => { + const uri = getUri(path, scheme); + await vscode.workspace.fs.writeFile(uri, new TextEncoder().encode(data)); + }, + mkdir: async (path: string): Promise => { + await vscode.workspace.fs.createDirectory(getUri(path, scheme)); + }, + readdir: async (path: string): Promise => { + const uri = getUri(path, scheme); + const files = await vscode.workspace.fs.readDirectory(uri); + return files.map(file => file[0]); + }, + stat: async (path: string): Promise => { + const uri = getUri(path, scheme); + const stat = await vscode.workspace.fs.stat(uri); + return { + isDirectory: () => stat.type === vscode.FileType.Directory, + isFile: () => stat.type === vscode.FileType.File, + isSymbolicLink: () => stat.type === vscode.FileType.SymbolicLink, + size: stat.size, + mtimeMs: stat.mtime, + ctimeMs: stat.ctime, + }; + }, + unlink: async (path: string): Promise => { + await vscode.workspace.fs.delete(getUri(path, scheme), { + recursive: true, + }); + }, + }; +} diff --git a/test/markdown/README.md b/test/markdown/README.md new file mode 100644 index 0000000..3c148d4 --- /dev/null +++ b/test/markdown/README.md @@ -0,0 +1,9 @@ +# Test Markdown + +- [basics](/test/markdown/basics.md) +- [[ code-chunks ]] +- [[ diagrams ]] +- [[ file-imports ]] +- [[ interactive-diagrams ]] +- [math](./math.md) +- [google](https://google.com) diff --git a/test/markdown/basics.md b/test/markdown/basics.md new file mode 100644 index 0000000..0858a9c --- /dev/null +++ b/test/markdown/basics.md @@ -0,0 +1,70 @@ +Here is some `inline` code! + +--- + +spaced code block + + var greeting = 'Hello world!'; + console.log(greeting); + +--- + +fenced code block + +``` +var greeting = 'Hello world!'; +console.log(greeting); +``` + +--- + +fenced plus language `js` + +```js +var greeting = 'Hello world!'; +console.log(greeting); +``` + +--- + +`js .line-numbers` + +```js .line-numbers +var greeting = 'Hello world!'; +console.log(greeting); + +var greeting2 = 'Hello world2!'; +console.log(greeting2); + +var greeting3 = 'Hello world3!'; +console.log(greeting3); + +var greeting4 = 'Hello world4!'; +console.log(greeting4); +``` + +--- + +`js {hide=true}` + +```js {hide=true} +this should not be seen +``` + +--- + +`js {cmd=false}` + +```js {cmd=false} +var greeting = 'Hello world!'; +console.log(greeting); +``` + +--- + +`js {literate=false}` + +```js {literate=false} +var greeting = 'Hello world!'; +console.log(greeting); +``` diff --git a/test/markdown/code-chunks.md b/test/markdown/code-chunks.md new file mode 100644 index 0000000..6881e86 --- /dev/null +++ b/test/markdown/code-chunks.md @@ -0,0 +1,184 @@ +## Table of contents with TOC {ignore=true} + +The above header should not appear in TOC + +[TOC] + +## Table of contents with code chunk {ignore=true} + +The above header should not appear in TOC + + + + + + + +## Bash + +`bash {cmd=true}` + +```bash {cmd=true} +ls . +``` + +--- + +## JavaScript + +`js {cmd=node output=html}` + +```js {cmd=node output=html} +const date = Date.now(); +console.log(date.toString()); +``` + +--- + +`js {cmd=node output=markdown}` + +```js {cmd=node output=markdown} +var greeting = 'Hello _world_'; +console.log(greeting); +``` + +--- + +`js {cmd=node output=markdown output_first}` + +```js {cmd=node output=markdown output_first} +var greeting = 'Hello _world_'; +console.log(greeting); +``` + +--- + +`js {cmd=node output=none}` + +```js {cmd=node output=none} +var greeting = 'Hello world!'; +console.log(greeting); +``` + +--- + +`js {cmd=node output=txt modify_source}` + +```js {cmd=node output=txt modify_source} +var greeting = 'Hello world!'; +console.log(greeting); +``` + +--- + +`js {cmd=node output=txt modify_source run_on_save}` + +```js {cmd=node output=txt modify_source run_on_save} +var greeting = 'Hello world!!!'; +console.log(greeting); +``` + +--- + +## Python + +`gnuplot {cmd=true output="html"}` + +```gnuplot {cmd=true output="html"} +set terminal svg +set title "Simple Plots" font ",20" +set key left box +set samples 50 +set style data points + +plot [-10:10] sin(x),atan(x),cos(atan(x)) +``` + +--- + +`python {cmd=true args=["-v"]}` + +```python {cmd=true args=["-v"]} +print("Verbose will be printed first") +``` + +--- + +`python {hide=true}` + +```python {hide=true} +print('you can see this output message, but not this code') +``` + +--- + +`python {cmd=true id="izdlk700"}` + +```python {cmd=true id="izdlk700"} +x = 1 +``` + +`python {cmd=true id="izdlkdim"}` + +```python {cmd=true id="izdlkdim"} +x = 2 +``` + +`python {cmd=true continue="izdlk700" id="izdlkhso"}` + +```python {cmd=true continue="izdlk700" id="izdlkhso"} +print(x) # will print 1 +``` + +--- + +`js {cmd=node output=text .line-numbers}` + +```js {cmd=node output=text .line-numbers} +const date = Date.now(); +console.log(date.toString()); +``` + +--- + +## LaTeX + +`latex {cmd=true}` + +```latex {cmd=true} +\documentclass{standalone} +\begin{document} + Hello world! +\end{document} +``` + +--- + +`latex {cmd latex_zoom=2}` + +```latex {cmd latex_zoom=2} +\documentclass{standalone} +\begin{document} + Hello world! +\end{document} +``` + +--- + +`erd {cmd=true output="html" args=["-i", "$input_file" "-f", "svg"]}` + +```erd {cmd=true output="html" args=["-i", "$input_file" "-f", "svg"]} +[Person] +*name +height +weight ++birth_location_id + +[Location] +*id +city +state +country + +Person *--1 Location +``` diff --git a/test/markdown/data/sp500.csv b/test/markdown/data/sp500.csv new file mode 100644 index 0000000..0eb287f --- /dev/null +++ b/test/markdown/data/sp500.csv @@ -0,0 +1,124 @@ +date,price +Jan 1 2000,1394.46 +Feb 1 2000,1366.42 +Mar 1 2000,1498.58 +Apr 1 2000,1452.43 +May 1 2000,1420.6 +Jun 1 2000,1454.6 +Jul 1 2000,1430.83 +Aug 1 2000,1517.68 +Sep 1 2000,1436.51 +Oct 1 2000,1429.4 +Nov 1 2000,1314.95 +Dec 1 2000,1320.28 +Jan 1 2001,1366.01 +Feb 1 2001,1239.94 +Mar 1 2001,1160.33 +Apr 1 2001,1249.46 +May 1 2001,1255.82 +Jun 1 2001,1224.38 +Jul 1 2001,1211.23 +Aug 1 2001,1133.58 +Sep 1 2001,1040.94 +Oct 1 2001,1059.78 +Nov 1 2001,1139.45 +Dec 1 2001,1148.08 +Jan 1 2002,1130.2 +Feb 1 2002,1106.73 +Mar 1 2002,1147.39 +Apr 1 2002,1076.92 +May 1 2002,1067.14 +Jun 1 2002,989.82 +Jul 1 2002,911.62 +Aug 1 2002,916.07 +Sep 1 2002,815.28 +Oct 1 2002,885.76 +Nov 1 2002,936.31 +Dec 1 2002,879.82 +Jan 1 2003,855.7 +Feb 1 2003,841.15 +Mar 1 2003,848.18 +Apr 1 2003,916.92 +May 1 2003,963.59 +Jun 1 2003,974.5 +Jul 1 2003,990.31 +Aug 1 2003,1008.01 +Sep 1 2003,995.97 +Oct 1 2003,1050.71 +Nov 1 2003,1058.2 +Dec 1 2003,1111.92 +Jan 1 2004,1131.13 +Feb 1 2004,1144.94 +Mar 1 2004,1126.21 +Apr 1 2004,1107.3 +May 1 2004,1120.68 +Jun 1 2004,1140.84 +Jul 1 2004,1101.72 +Aug 1 2004,1104.24 +Sep 1 2004,1114.58 +Oct 1 2004,1130.2 +Nov 1 2004,1173.82 +Dec 1 2004,1211.92 +Jan 1 2005,1181.27 +Feb 1 2005,1203.6 +Mar 1 2005,1180.59 +Apr 1 2005,1156.85 +May 1 2005,1191.5 +Jun 1 2005,1191.33 +Jul 1 2005,1234.18 +Aug 1 2005,1220.33 +Sep 1 2005,1228.81 +Oct 1 2005,1207.01 +Nov 1 2005,1249.48 +Dec 1 2005,1248.29 +Jan 1 2006,1280.08 +Feb 1 2006,1280.66 +Mar 1 2006,1294.87 +Apr 1 2006,1310.61 +May 1 2006,1270.09 +Jun 1 2006,1270.2 +Jul 1 2006,1276.66 +Aug 1 2006,1303.82 +Sep 1 2006,1335.85 +Oct 1 2006,1377.94 +Nov 1 2006,1400.63 +Dec 1 2006,1418.3 +Jan 1 2007,1438.24 +Feb 1 2007,1406.82 +Mar 1 2007,1420.86 +Apr 1 2007,1482.37 +May 1 2007,1530.62 +Jun 1 2007,1503.35 +Jul 1 2007,1455.27 +Aug 1 2007,1473.99 +Sep 1 2007,1526.75 +Oct 1 2007,1549.38 +Nov 1 2007,1481.14 +Dec 1 2007,1468.36 +Jan 1 2008,1378.55 +Feb 1 2008,1330.63 +Mar 1 2008,1322.7 +Apr 1 2008,1385.59 +May 1 2008,1400.38 +Jun 1 2008,1280 +Jul 1 2008,1267.38 +Aug 1 2008,1282.83 +Sep 1 2008,1166.36 +Oct 1 2008,968.75 +Nov 1 2008,896.24 +Dec 1 2008,903.25 +Jan 1 2009,825.88 +Feb 1 2009,735.09 +Mar 1 2009,797.87 +Apr 1 2009,872.81 +May 1 2009,919.14 +Jun 1 2009,919.32 +Jul 1 2009,987.48 +Aug 1 2009,1020.62 +Sep 1 2009,1057.08 +Oct 1 2009,1036.19 +Nov 1 2009,1095.63 +Dec 1 2009,1115.1 +Jan 1 2010,1073.87 +Feb 1 2010,1104.49 +Mar 1 2010,1140.45 diff --git a/test/markdown/diagrams.md b/test/markdown/diagrams.md new file mode 100644 index 0000000..9a3659c --- /dev/null +++ b/test/markdown/diagrams.md @@ -0,0 +1,371 @@ +# Diagrams + +## [Mermaid](https://shd101wyy.github.io/markdown-preview-enhanced/#/diagrams?id=mermaid) + +`mermaid` + +```mermaid +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +``` + +--- + +`mermaid {code_block=true}` + +```mermaid {code_block=true} +graph TD; + A-->B; + A-->C; + B-->D; + C-->D; +``` + +## [PlantUML](https://shd101wyy.github.io/markdown-preview-enhanced/#/diagrams?id=plantuml) + +`puml` + +```puml +@startuml +Alice -> Bob: Authentication Request +Bob --> Alice: Authentication Response + +Alice -> Bob: Another authentication Request +Alice <-- Bob: another authentication Response +@enduml +``` + +--- + +`puml {align="center"}` + +```puml {align="center"} +a->b +``` + +--- + +`plantuml` + +```plantuml +@startuml +Alice -> Bob: Authentication Request +Bob --> Alice: Authentication Response + +Alice -> Bob: Another authentication Request +Alice <-- Bob: another authentication Response +@enduml +``` + +## [WaveDrom](https://shd101wyy.github.io/markdown-preview-enhanced/#/diagrams?id=sequence-diagrams) + +`wavedrom` + +```wavedrom +{ signal : [ + { name: "clk", wave: "p......" }, + { name: "bus", wave: "x.34.5x", data: "head body tail" }, + { name: "wire", wave: "0.1..0." }, +]} +``` + +## [GraphViz](https://shd101wyy.github.io/markdown-preview-enhanced/#/diagrams?id=graphviz) + +`viz` + +```viz +digraph G { + A -> B + B -> C + B -> D +} +``` + +--- + +`dot {engine=circo}` + +```dot {engine=circo} +digraph G { + A -> B + B -> C + B -> D +} +``` + +## Vega + +`vega` + json + +```vega +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "width": 400, + "height": 200, + "padding": 5, + + "data": [ + { + "name": "table", + "values": [ + {"category": "A", "amount": 28}, + {"category": "B", "amount": 55}, + {"category": "C", "amount": 43}, + {"category": "D", "amount": 91}, + {"category": "E", "amount": 81}, + {"category": "F", "amount": 53}, + {"category": "G", "amount": 19}, + {"category": "H", "amount": 87} + ] + } + ], + + "signals": [ + { + "name": "tooltip", + "value": {}, + "on": [ + {"events": "rect:mouseover", "update": "datum"}, + {"events": "rect:mouseout", "update": "{}"} + ] + } + ], + + "scales": [ + { + "name": "xscale", + "type": "band", + "domain": {"data": "table", "field": "category"}, + "range": "width", + "padding": 0.05, + "round": true + }, + { + "name": "yscale", + "domain": {"data": "table", "field": "amount"}, + "nice": true, + "range": "height" + } + ], + + "axes": [ + { "orient": "bottom", "scale": "xscale" }, + { "orient": "left", "scale": "yscale" } + ], + + "marks": [ + { + "type": "rect", + "from": {"data":"table"}, + "encode": { + "enter": { + "x": {"scale": "xscale", "field": "category"}, + "width": {"scale": "xscale", "band": 1}, + "y": {"scale": "yscale", "field": "amount"}, + "y2": {"scale": "yscale", "value": 0} + }, + "update": { + "fill": {"value": "steelblue"} + }, + "hover": { + "fill": {"value": "red"} + } + } + }, + { + "type": "text", + "encode": { + "enter": { + "align": {"value": "center"}, + "baseline": {"value": "bottom"}, + "fill": {"value": "#333"} + }, + "update": { + "x": {"scale": "xscale", "signal": "tooltip.category", "band": 0.5}, + "y": {"scale": "yscale", "signal": "tooltip.amount", "offset": -2}, + "text": {"signal": "tooltip.amount"}, + "fillOpacity": [ + {"test": "datum === tooltip", "value": 0}, + {"value": 1} + ] + } + } + } + ] +} +``` + +## Vega lite + +`vega-lite` + json + +```vega-lite +{ + "$schema": "https://vega.github.io/schema/vega-lite/v3.json", + "description": "A simple bar chart with embedded data.", + "data": { + "values": [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] + }, + "mark": "bar", + "encoding": { + "x": {"field": "a", "type": "ordinal"}, + "y": {"field": "b", "type": "quantitative"} + } +} +``` + +--- + +`vega-lite` + yaml + +```vega-lite +"$schema": https://vega.github.io/schema/vega-lite/v3.json +description: A simple bar chart with embedded data. +data: + values: [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] +mark: bar +encoding: + x: + field: a + type: ordinal + y: + field: b + type: quantitative +``` + +--- + +`vega-lite {hide=false}` + json + +```vega-lite {hide=false} +"$schema": https://vega.github.io/schema/vega-lite/v3.json +description: A simple bar chart with embedded data. +data: + values: [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] +mark: bar +encoding: + x: + field: a + type: ordinal + y: + field: b + type: quantitative +``` + +--- + +`vega-lite {cmd=false}` + +```vega-lite {cmd=false} +"$schema": https://vega.github.io/schema/vega-lite/v3.json +description: A simple bar chart with embedded data. +data: + values: [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] +mark: bar +encoding: + x: + field: a + type: ordinal + y: + field: b + type: quantitative +``` + +--- + +`vega-lite` + json (geo) + +```vega-lite +{ + "$schema": "https://vega.github.io/schema/vega-lite/v2.1.json", + "width": 500, + "height": 300, + "data": { + "url": "data/us-10m.json", + "format": { + "type": "topojson", + "feature": "counties" + } + }, + "transform": [{ + "lookup": "id", + "from": { + "data": { + "url": "data/unemployment.tsv" + }, + "key": "id", + "fields": ["rate"] + } + }], + "projection": { + "type": "albersUsa" + }, + "mark": "geoshape", + "encoding": { + "color": { + "field": "rate", + "type": "quantitative" + } + } +} +``` + +--- + +`vega-embed` + +```vega-lite +{ + "$schema": "https://vega.github.io/schema/vega-lite/v4.json", + "description": "A simple bar chart with embedded data.", + "width": 360, + "data": { + "values": [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] + }, + "mark": "bar", + "encoding": { + "x": {"field": "a", "type": "ordinal"}, + "y": {"field": "b", "type": "quantitative"}, + "tooltip": {"field": "b", "type": "quantitative"} + } +} +``` + +## Kroki + +`ditaa {kroki=true}` + +```ditaa {kroki=true} ++--------+ +-------+ +-------+ +| | --+ ditaa +--> | | +| Text | +-------+ |diagram| +|Document| |!magic!| | | +| {d}| | | | | ++---+----+ +-------+ +-------+ + : ^ + | Lots of work | + +-------------------------+ +``` diff --git a/test/markdown/file-imports.md b/test/markdown/file-imports.md new file mode 100644 index 0000000..5e23469 --- /dev/null +++ b/test/markdown/file-imports.md @@ -0,0 +1,24 @@ +# [File imports](https://shd101wyy.github.io/markdown-preview-enhanced/#/file-imports) + +`@import "file-imports/markdown-logo.jpg"` +@import "file-imports/markdown-logo.jpg" + +--- + +`@import "file-imports/markdown-logo.png"` +@import "file-imports/markdown-logo.png" + +--- + +`@import "file-imports/markdown-logo.png" {width="100px" height="62px" title="my title" alt="my alt"}` +@import "file-imports/markdown-logo.png" {width="100px" height="62px" title="my title" alt="my alt"} + +--- + +`@import "file-imports/diagram.mermaid"` +@import "file-imports/diagram.mermaid" + +--- + +`@import "file-imports/diagram.mermaid" {hide=false}` +@import "file-imports/diagram.mermaid" {hide=false} diff --git a/test/markdown/interactive-diagrams.md b/test/markdown/interactive-diagrams.md new file mode 100644 index 0000000..c0b79a0 --- /dev/null +++ b/test/markdown/interactive-diagrams.md @@ -0,0 +1,372 @@ +## Interactive Vega + +--- + +`vega-lite {interactive}` simple + +```vega-lite {interactive} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v3.json", + "description": "A simple bar chart with embedded data.", + "data": { + "values": [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] + }, + "selection": { + "bars": {"type": "single"} + }, + "mark": "bar", + "encoding": { + "x": {"field": "a", "type": "ordinal"}, + "y": {"field": "b", "type": "quantitative"}, + "color": { + "condition": { + "selection": "bars", + "value": "rgb(76, 120, 168)" + }, + "value": "black" + } + } +} +``` + +`vega-lite {interactive}` yaml + +```vega-lite {interactive} +$schema: https://vega.github.io/schema/vega-lite/v3.json +description: A simple bar chart with embedded data. +data: + values: [ + {"a": "A","b": 28}, {"a": "B","b": 55}, {"a": "C","b": 43}, + {"a": "D","b": 91}, {"a": "E","b": 81}, {"a": "F","b": 53}, + {"a": "G","b": 19}, {"a": "H","b": 87}, {"a": "I","b": 52} + ] +selection: + bars: + type: single +mark: bar +encoding: + x: + field: a + type: ordinal + y: + field: b + type: quantitative + color: + condition: + selection: bars + value: rgb(76, 120, 168) + value: black +``` + +`vega-lite {interactive}` with local data file (`data/sp500.csv`) + +```vega-lite {interactive} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v3.json", + "data": {"url": "data/sp500.csv"}, + "vconcat": [{ + "width": 480, + "mark": "area", + "encoding": { + "x": { + "field": "date", + "type": "temporal", + "scale": {"domain": {"selection": "brush"}}, + "axis": {"title": ""} + }, + "y": {"field": "price","type": "quantitative"} + } + }, { + "width": 480, + "height": 60, + "mark": "area", + "selection": { + "brush": {"type": "interval", "encodings": ["x"]} + }, + "encoding": { + "x": { + "field": "date", + "type": "temporal", + "axis": {"format": "%Y"} + }, + "y": { + "field": "price", + "type": "quantitative", + "axis": {"tickCount": 3, "grid": false} + } + } + }] +} +``` + +--- + +`vega-lite {interactive hide=false}` with remote data file (`https://vega.github.io/vega-lite/data/sp500.csv`) + don't hide source + +```vega-lite {interactive hide=false} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v3.json", + "data": {"url": "https://vega.github.io/vega-lite/data/sp500.csv"}, + "vconcat": [{ + "width": 480, + "mark": "area", + "encoding": { + "x": { + "field": "date", + "type": "temporal", + "scale": {"domain": {"selection": "brush"}}, + "axis": {"title": ""} + }, + "y": {"field": "price","type": "quantitative"} + } + }, { + "width": 480, + "height": 60, + "mark": "area", + "selection": { + "brush": {"type": "interval", "encodings": ["x"]} + }, + "encoding": { + "x": { + "field": "date", + "type": "temporal", + "axis": {"format": "%Y"} + }, + "y": { + "field": "price", + "type": "quantitative", + "axis": {"tickCount": 3, "grid": false} + } + } + }] +} +``` + +--- + +`vega {interactive}` with remote data file + +```vega {interactive} +{ + "$schema": "https://vega.github.io/schema/vega/v5.json", + "width": 720, + "height": 480, + "padding": 5, + + "data": [ + { + "name": "sp500", + "url": "https://vega.github.io/vega-lite/data/sp500.csv", + "format": {"type": "csv", "parse": {"price": "number", "date": "date"}} + } + ], + + "signals": [ + { + "name": "detailDomain" + } + ], + + "marks": [ + { + "type": "group", + "name": "detail", + "encode": { + "enter": { + "height": {"value": 390}, + "width": {"value": 720} + } + }, + "scales": [ + { + "name": "xDetail", + "type": "time", + "range": "width", + "domain": {"data": "sp500", "field": "date"}, + "domainRaw": {"signal": "detailDomain"} + }, + { + "name": "yDetail", + "type": "linear", + "range": [390, 0], + "domain": {"data": "sp500", "field": "price"}, + "nice": true, "zero": true + } + ], + "axes": [ + {"orient": "bottom", "scale": "xDetail"}, + {"orient": "left", "scale": "yDetail"} + ], + "marks": [ + { + "type": "group", + "encode": { + "enter": { + "height": {"field": {"group": "height"}}, + "width": {"field": {"group": "width"}}, + "clip": {"value": true} + } + }, + "marks": [ + { + "type": "area", + "from": {"data": "sp500"}, + "encode": { + "update": { + "x": {"scale": "xDetail", "field": "date"}, + "y": {"scale": "yDetail", "field": "price"}, + "y2": {"scale": "yDetail", "value": 0}, + "fill": {"value": "steelblue"} + } + } + } + ] + } + ] + }, + + { + "type": "group", + "name": "overview", + "encode": { + "enter": { + "x": {"value": 0}, + "y": {"value": 430}, + "height": {"value": 70}, + "width": {"value": 720}, + "fill": {"value": "transparent"} + } + }, + "signals": [ + { + "name": "brush", "value": 0, + "on": [ + { + "events": "@overview:mousedown", + "update": "[x(), x()]" + }, + { + "events": "[@overview:mousedown, window:mouseup] > window:mousemove!", + "update": "[brush[0], clamp(x(), 0, width)]" + }, + { + "events": {"signal": "delta"}, + "update": "clampRange([anchor[0] + delta, anchor[1] + delta], 0, width)" + } + ] + }, + { + "name": "anchor", "value": null, + "on": [{"events": "@brush:mousedown", "update": "slice(brush)"}] + }, + { + "name": "xdown", "value": 0, + "on": [{"events": "@brush:mousedown", "update": "x()"}] + }, + { + "name": "delta", "value": 0, + "on": [ + { + "events": "[@brush:mousedown, window:mouseup] > window:mousemove!", + "update": "x() - xdown" + } + ] + }, + { + "name": "detailDomain", + "push": "outer", + "on": [ + { + "events": {"signal": "brush"}, + "update": "span(brush) ? invert('xOverview', brush) : null" + } + ] + } + ], + "scales": [ + { + "name": "xOverview", + "type": "time", + "range": "width", + "domain": {"data": "sp500", "field": "date"} + }, + { + "name": "yOverview", + "type": "linear", + "range": [70, 0], + "domain": {"data": "sp500", "field": "price"}, + "nice": true, "zero": true + } + ], + "axes": [ + {"orient": "bottom", "scale": "xOverview"} + ], + "marks": [ + { + "type": "area", + "interactive": false, + "from": {"data": "sp500"}, + "encode": { + "update": { + "x": {"scale": "xOverview", "field": "date"}, + "y": {"scale": "yOverview", "field": "price"}, + "y2": {"scale": "yOverview", "value": 0}, + "fill": {"value": "steelblue"} + } + } + }, + { + "type": "rect", + "name": "brush", + "encode": { + "enter": { + "y": {"value": 0}, + "height": {"value": 70}, + "fill": {"value": "#333"}, + "fillOpacity": {"value": 0.2} + }, + "update": { + "x": {"signal": "brush[0]"}, + "x2": {"signal": "brush[1]"} + } + } + }, + { + "type": "rect", + "interactive": false, + "encode": { + "enter": { + "y": {"value": 0}, + "height": {"value": 70}, + "width": {"value": 1}, + "fill": {"value": "firebrick"} + }, + "update": { + "x": {"signal": "brush[0]"} + } + } + }, + { + "type": "rect", + "interactive": false, + "encode": { + "enter": { + "y": {"value": 0}, + "height": {"value": 70}, + "width": {"value": 1}, + "fill": {"value": "firebrick"} + }, + "update": { + "x": {"signal": "brush[1]"} + } + } + } + ] + } + ] +} +``` diff --git a/test/markdown/math.md b/test/markdown/math.md new file mode 100644 index 0000000..097a46a --- /dev/null +++ b/test/markdown/math.md @@ -0,0 +1,41 @@ +## [Math](https://shd101wyy.github.io/markdown-preview-enhanced/#/math) + +`hello $inline$ math` +hello $inline$ math + +--- + +`$$ E = mc^22 $$` +$$ E = mc^22 $$ + +--- + +`math` + +```math +E = mc^2 +``` + +--- + +`math hide=false` + +```math hide=false +E = mc^2 +``` + +--- + +`math hide=false output_first` + +```math hide=false output_first +E = mc^2 +``` + +--- + +`math literate=false` + +```math literate=false +E = mc^2 +``` diff --git a/tsconfig.json b/tsconfig.json index fbb8dc6..1da9451 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,9 +5,21 @@ "noUnusedLocals": true, "sourceMap": true, "outDir": "out", - "lib": ["ES2020", "WebWorker"], - "rootDir": "src" + "lib": [ + "ES2020", + "WebWorker" + ], + "rootDir": ".", + "strictNullChecks": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true }, - "include": ["src/**/*", "test/**/*"], - "exclude": ["node_modules", "out"] -} + "include": [ + "src/**/*", + "test/**/*" + ], + "exclude": [ + "node_modules", + "out" + ] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ade622f..f401a66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,6 +29,18 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/runtime@^7.21.0": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4" + integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA== + dependencies: + regenerator-runtime "^0.14.0" + +"@braintree/sanitize-url@^6.0.1": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" + integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== + "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -235,6 +247,28 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jspm/core@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@jspm/core/-/core-2.0.1.tgz#3f08c59c60a5f5e994523ed6b0b665ec80adc94e" + integrity sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw== + +"@koa/cors@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@koa/cors/-/cors-4.0.0.tgz#b2d300d7368d2e0ad6faa1d918eff6d0cde0859a" + integrity sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ== + dependencies: + vary "^1.1.2" + +"@koa/router@^12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@koa/router/-/router-12.0.0.tgz#2ae7937093fd392761c0e5833c368379d4a35737" + integrity sha512-cnnxeKHXlt7XARJptflGURdJaO+ITpNkOHmQu7NHmCoRinPbyvFzce/EG/E8Zy81yQ1W9MoSdtklc3nyaDReUw== + dependencies: + http-errors "^2.0.0" + koa-compose "^4.1.0" + methods "^1.1.2" + path-to-regexp "^6.2.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -288,50 +322,6 @@ dependencies: any-observable "^0.3.0" -"@shd101wyy/mume@0.7.9": - version "0.7.9" - resolved "https://registry.yarnpkg.com/@shd101wyy/mume/-/mume-0.7.9.tgz#7beb58d5b5ba4c0cebd6da0ac49739b35a2efd13" - integrity sha512-3zS4y5ljXyWglo0gH7l3b9P6jJpPS9dt0GpWnoQQo015GkvbFJwsuYlXFrTDqbP+yNE2oZ+w8+FlMyR1stisow== - dependencies: - "@viz-js/viz" "^3.1.0" - async-mutex "^0.4.0" - cheerio "^1.0.0-rc.12" - chrome-paths "^1.0.1" - crypto-js "^4.1.1" - html-escaper "^3.0.3" - imagemagick-cli "^0.5.0" - katex "^0.16.8" - less "^4.2.0" - markdown-it "^13.0.1" - markdown-it-abbr "^1.0.4" - markdown-it-deflist "^2.1.0" - markdown-it-emoji "^2.0.2" - markdown-it-footnote "^3.0.3" - markdown-it-html5-embed "^1.0.0" - markdown-it-mark "^3.0.1" - markdown-it-sub "^1.0.0" - markdown-it-sup "^1.0.0" - md5 "^2.3.0" - minisearch "^6.1.0" - mkdirp "^3.0.1" - node-fetch "^2.6.1" - object-hash "^3.0.0" - pako "^2.1.0" - papaparse "^5.4.1" - puppeteer-core "^21.1.0" - qiniu "^7.9.0" - request "^2.88.0" - slash "^5.1.0" - snake-case "^3.0.4" - temp "^0.9.0" - twemoji "^13.1.0" - type-fest "^4.3.1" - uslug "^1.0.4" - vega "^5.25.0" - vega-lite "^5.14.1" - vega-loader "^4.5.1" - yaml "^2.3.2" - "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" @@ -349,6 +339,30 @@ resolved "https://registry.yarnpkg.com/@types/clone/-/clone-2.1.1.tgz#9b880d0ce9b1f209b5e0bd6d9caa38209db34024" integrity sha512-BZIU34bSYye0j/BFcPraiDZ5ka6MJADjcDVELGf7glr9K+iE8NYVjFslJFVWzskSxkLLyCrSPScE82/UUoBSvg== +"@types/d3-scale-chromatic@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#103124777e8cdec85b20b51fd3397c682ee1e954" + integrity sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw== + +"@types/d3-scale@^4.0.3": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.4.tgz#3c5e2263eea5a3670cd91043b9f4d150a94c43f1" + integrity sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-time@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819" + integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg== + +"@types/debug@^4.0.0": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317" + integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ== + dependencies: + "@types/ms" "*" + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -388,6 +402,13 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== +"@types/mdast@^3.0.0": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.12.tgz#beeb511b977c875a5b0cc92eab6fcac2f0895514" + integrity sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg== + dependencies: + "@types/unist" "^2" + "@types/minimatch@*": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" @@ -398,6 +419,11 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node@*": version "20.5.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.7.tgz#4b8ecac87fbefbc92f431d09c30e176fc0a7c377" @@ -423,6 +449,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.0.tgz#988ae8af1e5239e89f9fbb1ade4c935f4eeedf9a" integrity sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w== +"@types/unist@^2", "@types/unist@^2.0.0": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.8.tgz#bb197b9639aa1a04cf464a617fe800cccd92ad5c" + integrity sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw== + "@types/vfile-message@*": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" @@ -541,6 +572,25 @@ resolved "https://registry.yarnpkg.com/@viz-js/viz/-/viz-3.1.0.tgz#f192a4f98f1fa187b959f2f54d169531677a0d99" integrity sha512-rQi2PL9HoqTpE5DVodGgSLRdRVkDVgTG36AdcUR8EWxHL45KoUw7PAzZLm70vgK+QbUN6nCraTtqgxyqeJzxBA== +"@vscode/test-web@^0.0.45": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@vscode/test-web/-/test-web-0.0.45.tgz#e0b23a67ec0081f69173565db93847ab3aec0a8e" + integrity sha512-yPJgxEbbxDlKGGpLzNQ8PDPOOUKUVo7Epg/3o+y7mKtjbg3nktIReJ/pPtOHrZxsNC8FkzTNBoTh5DMBHX/LGg== + dependencies: + "@koa/cors" "^4.0.0" + "@koa/router" "^12.0.0" + gunzip-maybe "^1.4.2" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + koa "^2.14.2" + koa-morgan "^1.0.1" + koa-mount "^4.0.0" + koa-static "^5.0.0" + minimist "^1.2.8" + playwright "^1.37.1" + tar-fs "^3.0.4" + vscode-uri "^3.0.7" + "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -687,6 +737,14 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +accepts@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + acorn-import-assertions@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" @@ -697,6 +755,11 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" @@ -744,11 +807,25 @@ ansi-colors@3.2.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw== + dependencies: + ansi-wrap "0.1.0" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -788,6 +865,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw== + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -798,6 +880,26 @@ any-promise@^1.0.0, any-promise@^1.3.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA== + dependencies: + buffer-equal "^1.0.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -810,6 +912,35 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA== + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw== + dependencies: + make-iterator "^1.0.0" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -818,11 +949,50 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA== + +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw== + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + array.prototype.reduce@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" @@ -858,6 +1028,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -865,6 +1040,21 @@ ast-types@^0.13.4: dependencies: tslib "^2.0.1" +async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + +async-each@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== + async-mutex@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.0.tgz#ae8048cd4d04ace94347507504b3cf15e631c25f" @@ -872,11 +1062,30 @@ async-mutex@^0.4.0: dependencies: tslib "^2.4.0" +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw== + dependencies: + async-done "^1.2.2" + +async@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -897,6 +1106,21 @@ b4a@^1.6.4: resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg== + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -907,6 +1131,26 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +basic-auth@^2.0.1, basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + basic-ftp@^5.0.2: version "5.0.3" resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228" @@ -929,6 +1173,18 @@ big-integer@^1.6.44: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + block-stream2@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/block-stream2/-/block-stream2-2.1.0.tgz#ac0c5ef4298b3857796e05be8ebed72196fa054b" @@ -956,6 +1212,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -968,6 +1240,13 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== + dependencies: + pako "~0.2.0" + browserslist@^4.14.5: version "4.21.10" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" @@ -983,6 +1262,11 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== +buffer-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -1003,6 +1287,29 @@ bundle-name@^3.0.0: dependencies: run-applescript "^5.0.0" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -1035,6 +1342,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -1070,7 +1382,7 @@ chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1078,6 +1390,11 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -1108,6 +1425,25 @@ cheerio@^1.0.0-rc.12: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" +chokidar@^2.0.0: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + chrome-paths@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chrome-paths/-/chrome-paths-1.0.1.tgz#9a5f5e158cc7a6a620ddad56968a9cf226018cb7" @@ -1132,6 +1468,16 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -1152,6 +1498,15 @@ cli-truncate@^0.2.1: slice-ansi "0.0.4" string-width "^1.0.1" +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -1170,6 +1525,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -1179,16 +1539,52 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone@~2.1.2: +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag== + +clone@^2.1.1, clone@~2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA== + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1213,6 +1609,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + colorette@^2.0.14: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" @@ -1245,16 +1646,66 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -content-type@^1.0.2: +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concurrently@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.1.tgz#bcab9cacc38c23c503839583151e0fa96fd5b584" + integrity sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ== + dependencies: + chalk "^4.1.2" + date-fns "^2.30.0" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + +content-disposition@~0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.2, content-type@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +cookies@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" + integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + copy-anything@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" @@ -1262,6 +1713,26 @@ copy-anything@^2.0.1: dependencies: is-what "^3.14.1" +copy-anything@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" + integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w== + dependencies: + is-what "^4.1.8" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +copy-props@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2" + integrity sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw== + dependencies: + each-props "^1.3.2" + is-plain-object "^5.0.0" + copy-to@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" @@ -1272,6 +1743,30 @@ core-util-is@1.0.2: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +corser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== + +cose-base@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" + integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== + dependencies: + layout-base "^1.0.0" + +cose-base@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01" + integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g== + dependencies: + layout-base "^2.0.0" + cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -1287,7 +1782,7 @@ crc32@^0.2.2: resolved "https://registry.yarnpkg.com/crc32/-/crc32-0.2.2.tgz#7ad220d6ffdcd119f9fc127a7772cacea390a4ba" integrity sha512-PFZEGbDUeoNbL2GHIEpJRQGheXReDody/9axKTxhXtQqIL443wnNigtVZO9iuCIMPApKZRv7k2xr8euXHqNxQQ== -cross-fetch@4.0.0: +cross-fetch@4.0.0, cross-fetch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== @@ -1314,64 +1809,179 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypt@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== - dependencies: - internmap "1 - 2" - -d3-array@3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.2.tgz#f8ac4705c5b06914a7e0025bbf8d5f1513f6a86e" - integrity sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ== +crossnote@^0.8.6: + version "0.8.6" + resolved "https://registry.yarnpkg.com/crossnote/-/crossnote-0.8.6.tgz#b2bd05c7cc223044c5faddf9c5a6b81a1f2c3e72" + integrity sha512-Vl8bFmuqAq3kkfeJT46MMA3uc7Qb9tlG+9dg//sEMq2mWdF3tZVcLTma9ZaFClCRL7rN+o3/pCBSRuVr0VlMrg== + dependencies: + "@viz-js/viz" "^3.1.0" + async-mutex "^0.4.0" + cheerio "^1.0.0-rc.12" + chrome-paths "^1.0.1" + copy-anything "^3.0.5" + cross-fetch "^4.0.0" + crypto-js "^4.1.1" + html-escaper "^3.0.3" + imagemagick-cli "^0.5.0" + katex "^0.16.8" + less "^4.2.0" + markdown-it "^13.0.1" + markdown-it-abbr "^1.0.4" + markdown-it-deflist "^2.1.0" + markdown-it-emoji "^2.0.2" + markdown-it-footnote "^3.0.3" + markdown-it-html5-embed "^1.0.0" + markdown-it-mark "^3.0.1" + markdown-it-sub "^1.0.0" + markdown-it-sup "^1.0.0" + md5 "^2.3.0" + mermaid "^10.4.0" + minisearch "^6.1.0" + mkdirp "^3.0.1" + object-hash "^3.0.0" + pako "^2.1.0" + papaparse "^5.4.1" + plantuml-encoder "^1.4.0" + puppeteer-core "^21.1.0" + qiniu "^7.9.0" + request "^2.88.0" + slash "^5.1.0" + snake-case "^3.0.4" + sval "^0.4.8" + temp "^0.9.0" + twemoji "^13.1.0" + type-fest "^4.3.1" + uslug "^1.0.4" + vega "^5.25.0" + vega-lite "^5.14.1" + vega-loader "^4.5.1" + yaml "^2.3.2" + +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-js@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cytoscape-cose-bilkent@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" + integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== + dependencies: + cose-base "^1.0.0" + +cytoscape-fcose@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471" + integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== + dependencies: + cose-base "^2.2.0" + +cytoscape@^3.23.0: + version "3.26.0" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.26.0.tgz#b4c6961445fd51e1fd3cca83c3ffe924d9a8abc9" + integrity sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w== + dependencies: + heap "^0.2.6" + lodash "^4.17.21" + +"d3-array@1 - 2": + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + dependencies: + internmap "^1.0.0" + +"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0, d3-array@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +d3-array@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.2.tgz#f8ac4705c5b06914a7e0025bbf8d5f1513f6a86e" + integrity sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ== dependencies: internmap "1 - 2" -"d3-color@1 - 3", d3-color@^3.1.0: +d3-axis@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +"d3-color@1 - 3", d3-color@3, d3-color@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== -d3-delaunay@^6.0.2: +d3-contour@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" + integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== + dependencies: + d3-array "^3.2.0" + +d3-delaunay@6, d3-delaunay@^6.0.2: version "6.0.4" resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== dependencies: delaunator "5" -"d3-dispatch@1 - 3": +"d3-dispatch@1 - 3", d3-dispatch@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== -d3-dsv@^3.0.1: +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +"d3-dsv@1 - 3", d3-dsv@3, d3-dsv@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== @@ -1380,7 +1990,19 @@ d3-dsv@^3.0.1: iconv-lite "0.6" rw "1" -d3-force@^3.0.0: +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@3, d3-force@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== @@ -1389,7 +2011,7 @@ d3-force@^3.0.0: d3-quadtree "1 - 3" d3-timer "1 - 3" -"d3-format@1 - 3", d3-format@^3.1.0: +"d3-format@1 - 3", d3-format@3, d3-format@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== @@ -1403,36 +2025,67 @@ d3-geo-projection@^4.0.0: d3-array "1 - 3" d3-geo "1.12.0 - 3" -"d3-geo@1.12.0 - 3", d3-geo@^3.1.0: +"d3-geo@1.12.0 - 3", d3-geo@3, d3-geo@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.0.tgz#74fd54e1f4cebd5185ac2039217a98d39b0a4c0e" integrity sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA== dependencies: d3-array "2.5.0 - 3" -d3-hierarchy@^3.1.2: +d3-hierarchy@3, d3-hierarchy@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== -"d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3, d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== dependencies: d3-color "1 - 3" -d3-path@^3.1.0: +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== -"d3-quadtree@1 - 3": +d3-polygon@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== -d3-scale@^4.0.2: +d3-random@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-sankey@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" + integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== + dependencies: + d3-array "1 - 2" + d3-shape "^1.2.0" + +d3-scale-chromatic@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a" + integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@4, d3-scale@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -1443,32 +2096,118 @@ d3-scale@^4.0.2: d3-time "2.1.1 - 3" d3-time-format "2 - 4" -d3-shape@^3.2.0: +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + +d3-shape@3, d3-shape@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== dependencies: d3-path "^3.1.0" -"d3-time-format@2 - 4", d3-time-format@^4.1.0: +d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +"d3-time-format@2 - 4", d3-time-format@4, d3-time-format@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== dependencies: d3-time "1 - 3" -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.1.0: +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3, d3-time@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== dependencies: d3-array "2 - 3" -"d3-timer@1 - 3", d3-timer@^3.0.1: +"d3-timer@1 - 3", d3-timer@3, d3-timer@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== +"d3-transition@2 - 3", d3-transition@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-zoom@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^7.4.0, d3@^7.8.2: + version "7.8.5" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.5.tgz#fde4b760d4486cdb6f0cc8e2cbff318af844635c" + integrity sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "4" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dagre-d3-es@7.0.10: + version "7.0.10" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" + integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== + dependencies: + d3 "^7.8.2" + lodash-es "^4.17.21" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1486,6 +2225,25 @@ date-fns@^1.27.2: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +dayjs@^1.11.7: + version "1.11.9" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" + integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -1493,37 +2251,47 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.6: +debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -1547,6 +2315,18 @@ default-browser@^4.0.0: execa "^7.1.1" titleize "^3.0.0" +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ== + default-user-agent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6" @@ -1567,6 +2347,28 @@ define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + degenerator@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" @@ -1602,11 +2404,36 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== + detect-indent@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25" @@ -1627,6 +2454,11 @@ diff@3.5.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + digest-header@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/digest-header/-/digest-header-1.1.0.tgz#e16ab6cf4545bc4eea878c8c35acd1b89664d800" @@ -1667,6 +2499,11 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +dompurify@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.5.tgz#eb3d9cfa10037b6e73f32c586682c4b2ab01fbed" + integrity sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A== + domutils@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" @@ -1684,6 +2521,24 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" +duplexify@^3.5.0, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-props@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1692,7 +2547,7 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ee-first@~1.1.1: +ee-first@1.1.1, ee-first@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== @@ -1707,6 +2562,11 @@ elegant-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== +elkjs@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e" + integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1717,12 +2577,12 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encodeurl@^1.0.1: +encodeurl@^1.0.1, encodeurl@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -1764,7 +2624,7 @@ errno@^0.1.1: dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -1844,6 +2704,50 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +esbuild-plugin-polyfill-node@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/esbuild-plugin-polyfill-node/-/esbuild-plugin-polyfill-node-0.3.0.tgz#e7e3804b8272df51ae4f8ebfb7445a03712504cb" + integrity sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ== + dependencies: + "@jspm/core" "^2.0.1" + import-meta-resolve "^3.0.0" + esbuild@^0.19.2: version "0.19.2" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.2.tgz#b1541828a89dfb6f840d38538767c6130dca2aac" @@ -2010,6 +2914,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -2073,6 +2982,33 @@ execa@^7.1.1: signal-exit "^3.0.7" strip-final-newline "^3.0.0" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== + dependencies: + homedir-polyfill "^1.0.1" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2080,11 +3016,33 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend@~3.0.2: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + extract-zip@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -2106,6 +3064,16 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3, fast-deep-equal@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2132,6 +3100,11 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@~2.1.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-levenshtein@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" + integrity sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw== + fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -2178,6 +3151,21 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2192,6 +3180,14 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -2208,6 +3204,42 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g== + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + flat-cache@^3.0.4: version "3.1.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" @@ -2229,6 +3261,19 @@ flatted@^3.2.7: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flush-write-stream@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -2236,6 +3281,18 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg== + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2259,6 +3316,18 @@ formstream@^1.1.0: mime "^2.5.2" pause-stream "~0.0.11" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + fs-access@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" @@ -2275,11 +3344,27 @@ fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ== + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2300,6 +3385,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -2367,6 +3457,11 @@ get-uri@^6.0.1: debug "^4.3.4" fs-extra "^8.1.0" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -2379,6 +3474,14 @@ git-hooks-list@^3.0.0: resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-3.1.0.tgz#386dc531dcc17474cf094743ff30987a3d3e70fc" integrity sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA== +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2393,11 +3496,40 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw== + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob-watcher@^5.0.3: + version "5.0.5" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" + integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + normalize-path "^3.0.0" + object.defaults "^1.1.0" + glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -2410,7 +3542,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: +glob@^7.1.1, glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -2422,6 +3554,26 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + globals@^13.19.0: version "13.21.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" @@ -2473,6 +3625,13 @@ globby@^13.1.2: merge2 "^1.4.1" slash "^4.0.0" +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -2480,7 +3639,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2495,6 +3654,59 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +gulp-cli@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" + integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.4.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.2.0" + yargs "^7.1.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw== + dependencies: + glogg "^1.0.0" + +gunzip-maybe@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" + integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== + dependencies: + browserify-zlib "^0.1.4" + is-deflate "^1.0.0" + is-gzip "^1.0.0" + peek-stream "^1.1.0" + pumpify "^1.3.3" + through2 "^2.0.3" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2554,6 +3766,37 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -2561,16 +3804,35 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.2.0: +he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +heap@^0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + html-escaper@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-3.0.3.tgz#4d336674652beb1dcbc29ef6b6ba7f6be6fdfed6" @@ -2586,6 +3848,46 @@ htmlparser2@^8.0.1: domutils "^3.0.1" entities "^4.4.0" +http-assert@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== + dependencies: + deep-equal "~1.0.1" + http-errors "~1.8.0" + +http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" @@ -2594,6 +3896,34 @@ http-proxy-agent@^7.0.0: agent-base "^7.1.0" debug "^4.3.4" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-server@^14.1.1: + version "14.1.1" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" + integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== + dependencies: + basic-auth "^2.0.1" + chalk "^4.1.2" + corser "^2.0.1" + he "^1.2.0" + html-encoding-sniffer "^3.0.0" + http-proxy "^1.18.1" + mime "^1.6.0" + minimist "^1.2.6" + opener "^1.5.1" + portfinder "^1.0.28" + secure-compare "3.0.1" + union "~0.5.0" + url-join "^4.0.1" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -2603,7 +3933,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^7.0.0: +https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz#0277e28f13a07d45c663633841e20a40aaafe0ab" integrity sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ== @@ -2645,7 +3975,7 @@ husky@^3.0.9: run-node "^1.0.0" slash "^3.0.0" -iconv-lite@0.6, iconv-lite@^0.6.3: +iconv-lite@0.6, iconv-lite@0.6.3, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -2705,6 +4035,11 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" +import-meta-resolve@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz#94a6aabc623874fbc2f3525ec1300db71c6cbc11" + integrity sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2728,11 +4063,21 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -2747,11 +4092,26 @@ internal-slot@^1.0.5: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + interpret@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + ip@^1.1.5, ip@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" @@ -2762,6 +4122,28 @@ ip@^2.0.0: resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -2783,6 +4165,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -2791,7 +4180,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@~1.1.6: +is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -2813,6 +4202,20 @@ is-core-module@^2.13.0: dependencies: has "^1.0.3" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -2820,6 +4223,29 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-deflate@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" + integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" @@ -2835,12 +4261,19 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== -is-extendable@^0.1.0: +is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== -is-extglob@^2.1.1: +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== @@ -2862,6 +4295,20 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== + dependencies: + is-extglob "^2.1.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -2869,6 +4316,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" +is-gzip@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" + integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== + is-inside-container@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" @@ -2876,6 +4328,11 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug== + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -2888,6 +4345,18 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -2920,13 +4389,18 @@ is-plain-obj@^4.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== -is-plain-object@^2.0.4: +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-promise@^2.1.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -2945,6 +4419,13 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -2993,6 +4474,23 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -3005,6 +4503,16 @@ is-what@^3.14.1: resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== +is-what@^4.1.8: + version "4.1.15" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.15.tgz#de43a81090417a425942d67b1ae86e7fae2eee0e" + integrity sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA== + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -3012,6 +4520,11 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -3022,7 +4535,14 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== @@ -3140,6 +4660,11 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" +just-debounce@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" + integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== + karma-chrome-launcher@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" @@ -3155,6 +4680,13 @@ katex@^0.16.8: dependencies: commander "^8.3.0" +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + keyv@^4.5.3: version "4.5.3" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" @@ -3162,11 +4694,153 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^6.0.2: +khroma@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.0.0.tgz#7577de98aed9f36c7a474c4d453d94c0d6c6588b" + integrity sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== + dependencies: + co "^4.6.0" + koa-compose "^4.1.0" + +koa-morgan@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/koa-morgan/-/koa-morgan-1.0.1.tgz#08052e0ce0d839d3c43178b90a5bb3424bef1f99" + integrity sha512-JOUdCNlc21G50afBXfErUrr1RKymbgzlrO5KURY+wmDG1Uvd2jmxUJcHgylb/mYXy2SjiNZyYim/ptUBGsIi3A== + dependencies: + morgan "^1.6.1" + +koa-mount@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/koa-mount/-/koa-mount-4.0.0.tgz#e0265e58198e1a14ef889514c607254ff386329c" + integrity sha512-rm71jaA/P+6HeCpoRhmCv8KVBIi0tfGuO/dMKicbQnQW/YJntJ6MnnspkodoA4QstMVEZArsCphmd0bJEtoMjQ== + dependencies: + debug "^4.0.1" + koa-compose "^4.1.0" + +koa-send@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" + integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== + dependencies: + debug "^4.1.1" + http-errors "^1.7.3" + resolve-path "^1.4.0" + +koa-static@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" + integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== + dependencies: + debug "^3.1.0" + koa-send "^5.0.0" + +koa@^2.14.2: + version "2.14.2" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.14.2.tgz#a57f925c03931c2b4d94b19d2ebf76d3244863fc" + integrity sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.8.0" + debug "^4.3.2" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^2.0.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ== + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +layout-base@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" + integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== + +layout-base@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285" + integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg== + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow== + dependencies: + flush-write-stream "^1.0.2" + less@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" @@ -3192,6 +4866,20 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -3275,6 +4963,17 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" @@ -3302,12 +5001,17 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.15: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3369,6 +5073,25 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + markdown-it-abbr@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-it-abbr/-/markdown-it-abbr-1.0.4.tgz#d66b5364521cbb3dd8aa59dadfba2fb6865c8fd8" @@ -3434,6 +5157,16 @@ markdown-it@^8.4.0: mdurl "^1.0.1" uc.micro "^1.0.5" +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA== + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -3443,11 +5176,41 @@ md5@^2.3.0: crypt "0.0.2" is-buffer "~1.1.6" +mdast-util-from-markdown@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" + integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-to-string@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + dependencies: + "@types/mdast" "^3.0.0" + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -3458,6 +5221,250 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +mermaid@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.4.0.tgz#f89bf0ada161cbbe4dba2776e805119f7245a102" + integrity sha512-4QCQLp79lvz7UZxow5HUX7uWTPJOaQBVExduo91tliXC7v78i6kssZOPHxLL+Xs30KU72cpPn3g3imw/xm/gaw== + dependencies: + "@braintree/sanitize-url" "^6.0.1" + "@types/d3-scale" "^4.0.3" + "@types/d3-scale-chromatic" "^3.0.0" + cytoscape "^3.23.0" + cytoscape-cose-bilkent "^4.1.0" + cytoscape-fcose "^2.1.0" + d3 "^7.4.0" + d3-sankey "^0.12.3" + dagre-d3-es "7.0.10" + dayjs "^1.11.7" + dompurify "^3.0.5" + elkjs "^0.8.2" + khroma "^2.0.0" + lodash-es "^4.17.21" + mdast-util-from-markdown "^1.3.0" + non-layered-tidy-tree-layout "^2.0.2" + stylis "^4.1.3" + ts-dedent "^2.2.0" + uuid "^9.0.0" + web-worker "^1.2.0" + +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromark-core-commonmark@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" + integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-factory-destination@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" + integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" + integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" + integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-whitespace@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" + integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" + integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" + integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" + integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" + integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" + integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" + integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== + +micromark-util-html-tag-name@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" + integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== + +micromark-util-normalize-identifier@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" + integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" + integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" + integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" + integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + +micromark@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" + integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -3471,14 +5478,14 @@ mime-db@1.52.0, mime-db@^1.6.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -mime@^1.4.1: +mime@^1.4.1, mime@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -3524,7 +5531,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -3539,6 +5546,14 @@ mitt@3.0.1: resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" @@ -3551,7 +5566,7 @@ mkdirp@0.5.4: dependencies: minimist "^1.2.5" -mkdirp@^0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -3597,6 +5612,22 @@ mockdate@^3.0.5: resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-3.0.5.tgz#789be686deb3149e7df2b663d2bc4392bc3284fb" integrity sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ== +morgan@^1.6.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== + dependencies: + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3617,6 +5648,11 @@ ms@^2.0.0, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -3626,6 +5662,28 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nan@^2.12.1: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -3640,6 +5698,11 @@ needle@^3.1.0: iconv-lite "^0.6.3" sax "^1.2.4" +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -3650,6 +5713,11 @@ netmask@^2.0.2: resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -3671,7 +5739,7 @@ node-environment-flags@1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -3683,7 +5751,12 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -normalize-package-data@^2.5.0: +non-layered-tidy-tree-layout@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" + integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -3693,11 +5766,25 @@ normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -3753,6 +5840,15 @@ object-assign@^4.0.1, object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" @@ -3768,6 +5864,13 @@ object-keys@^1.0.11, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -3778,7 +5881,7 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.assign@^4.1.4: +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -3788,6 +5891,16 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA== + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + object.getownpropertydescriptors@^2.0.3: version "2.1.7" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" @@ -3799,7 +5912,49 @@ object.getownpropertydescriptors@^2.0.3: es-abstract "^1.22.1" safe-array-concat "^1.0.0" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w== + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw== + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +on-finished@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -3827,6 +5982,11 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== + open@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" @@ -3842,6 +6002,11 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== +opener@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -3854,6 +6019,20 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw== + dependencies: + readable-stream "^2.0.1" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + os-name@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" @@ -3959,6 +6138,11 @@ pako@^2.1.0: resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + papaparse@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.4.1.tgz#f45c0f871853578bd3a30f92d96fdcfb6ebea127" @@ -3971,6 +6155,22 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -3989,11 +6189,16 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-node-version@^1.0.1: +parse-node-version@^1.0.0, parse-node-version@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== + parse5-htmlparser2-tree-adapter@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" @@ -4009,6 +6214,28 @@ parse5@^7.0.0: dependencies: entities "^4.4.0" +parseurl@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -4019,7 +6246,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0: +path-is-absolute@1.0.1, path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== @@ -4044,6 +6271,32 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" + integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -4056,6 +6309,15 @@ pause-stream@~0.0.11: dependencies: through "~2.3" +peek-stream@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" + integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== + dependencies: + buffer-from "^1.0.0" + duplexify "^3.5.0" + through2 "^2.0.3" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -4076,11 +6338,28 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -4088,6 +6367,23 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +plantuml-encoder@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz#7899302cf785de956bf1a167e15420feee5975f7" + integrity sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g== + +playwright-core@1.37.1: + version "1.37.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.37.1.tgz#cb517d52e2e8cb4fa71957639f1cd105d1683126" + integrity sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA== + +playwright@^1.37.1: + version "1.37.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.37.1.tgz#6e488d82d7d98b9127c5db9c701f9c956ab47e76" + integrity sha512-bgUXRrQKhT48zHdxDYQTpf//0xDfDd5hLeEhjuSw8rXEGoT9YeElpfvs/izonTNY21IQZ7d3s22jLxYaAnubbQ== + dependencies: + playwright-core "1.37.1" + please-upgrade-node@^3.1.1, please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -4095,6 +6391,20 @@ please-upgrade-node@^3.1.1, please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" +portfinder@^1.0.28: + version "1.0.32" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" + integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg== + dependencies: + async "^2.6.4" + debug "^3.2.7" + mkdirp "^0.5.6" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4113,6 +6423,16 @@ prettier@^1.18.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + progress@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -4147,6 +6467,14 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -4155,6 +6483,15 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.3, pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" @@ -4218,6 +6555,23 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -4228,6 +6582,19 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -4237,6 +6604,22 @@ readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + rechoir@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" @@ -4244,6 +6627,19 @@ rechoir@^0.8.0: dependencies: resolve "^1.20.0" +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexp.prototype.flags@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -4253,6 +6649,52 @@ regexp.prototype.flags@^1.5.0: define-properties "^1.2.0" functions-have-names "^1.2.3" +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA== + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg== + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -4284,11 +6726,21 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -4296,6 +6748,14 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -4311,7 +6771,27 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.10.0, resolve@^1.20.0: +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A== + dependencies: + value-or-function "^3.0.0" + +resolve-path@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" + integrity sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w== + dependencies: + http-errors "~1.6.2" + path-is-absolute "1.0.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.4.0: version "1.22.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== @@ -4328,6 +6808,11 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -4383,6 +6868,20 @@ rxjs@^6.3.3: dependencies: tslib "^1.9.0" +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-array-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" @@ -4393,7 +6892,12 @@ safe-array-concat@^1.0.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4407,6 +6911,13 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -4426,11 +6937,23 @@ schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +secure-compare@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ== + dependencies: + sver-compat "^1.5.0" + "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -4455,6 +6978,26 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -4486,6 +7029,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -4533,6 +7081,36 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + socks-proxy-agent@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz#ffc5859a66dac89b0c4dab90253b96705f3e7120" @@ -4568,6 +7146,17 @@ sort-package-json@2.5.1: is-plain-obj "^4.1.0" sort-object-keys "^1.1.3" +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -4576,11 +7165,31 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== + spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -4607,6 +7216,13 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4627,11 +7243,39 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -statuses@^1.3.1: +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.3.1, statuses@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + streamx@^2.15.0: version "2.15.1" resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.1.tgz#396ad286d8bc3eeef8f5cea3f029e81237c024c6" @@ -4645,7 +7289,7 @@ string-argv@^0.3.0: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-width@^1.0.1: +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== @@ -4714,6 +7358,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -4751,6 +7402,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -4776,6 +7434,11 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +stylis@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" + integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== + supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -4802,7 +7465,7 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -4814,6 +7477,21 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +sval@^0.4.8: + version "0.4.8" + resolved "https://registry.yarnpkg.com/sval/-/sval-0.4.8.tgz#e7de37bed520f5537fe9e368b871880266c99a12" + integrity sha512-YoJztDXNW5tho3xlR4vHVq3Caqk5aqC6Z862ICoFX1bVbWxQ6OPxD7SE1mjfj13oaek5l4whykWNUO1TX0oIhg== + dependencies: + acorn "^6.4.1" + +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg== + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -4832,7 +7510,7 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-fs@3.0.4: +tar-fs@3.0.4, tar-fs@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf" integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w== @@ -4898,16 +7576,60 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + through@^2.3.8, through@~2.3: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== + titleize@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA== + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -4915,6 +7637,28 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q== + dependencies: + through2 "^2.0.3" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + topojson-client@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-3.1.0.tgz#22e8b1ed08a2b922feeb4af6f53b6ef09a467b99" @@ -4935,11 +7679,21 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + ts-api-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.2.tgz#7c094f753b6705ee4faee25c3c684ade52d66d99" integrity sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ== +ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + ts-loader@^9.4.4: version "9.4.4" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4" @@ -4955,7 +7709,7 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0: +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -4965,6 +7719,11 @@ tslib@~2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -5014,6 +7773,24 @@ type-fest@^4.3.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.3.1.tgz#5cb58cdab5120f7ab0b40cfdc35073fb9adb651d" integrity sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw== +type-is@^1.6.16: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -5053,6 +7830,11 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + typescript@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" @@ -5081,6 +7863,32 @@ unbzip2-stream@1.4.3: buffer "^5.2.1" through "^2.3.8" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw== + +undertaker@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.3.0.tgz#363a6e541f27954d5791d6fa3c1d321666f86d18" + integrity sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + fast-levenshtein "^1.0.0" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + unescape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" @@ -5088,6 +7896,38 @@ unescape@^1.0.1: dependencies: extend-shallow "^2.0.1" +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +union@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== + dependencies: + qs "^6.4.0" + +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" @@ -5105,11 +7945,24 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + update-browserslist-db@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" @@ -5125,6 +7978,16 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + urllib@^2.34.1: version "2.41.0" resolved "https://registry.yarnpkg.com/urllib/-/urllib-2.41.0.tgz#be15705e62af4eadcafcfeadda1014b526ae2d0d" @@ -5145,6 +8008,11 @@ urllib@^2.34.1: statuses "^1.3.1" utility "^1.16.1" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + uslug@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/uslug/-/uslug-1.0.4.tgz#b9a22f0914e0a86140633dacc302e5f4fa450677" @@ -5152,7 +8020,7 @@ uslug@^1.0.4: dependencies: unorm ">= 1.0.0" -util-deprecate@^1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -5173,6 +8041,28 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + +v8flags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" + integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== + dependencies: + homedir-polyfill "^1.0.1" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -5181,6 +8071,16 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg== + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + vega-canvas@^1.2.6, vega-canvas@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/vega-canvas/-/vega-canvas-1.2.7.tgz#cf62169518f5dcd91d24ad352998c2248f8974fb" @@ -5530,6 +8430,59 @@ vfile-message@*: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA== + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vscode-uri@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.7.tgz#6d19fef387ee6b46c479e5fb00870e15e58c1eb8" + integrity sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA== + watchpack@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -5538,6 +8491,11 @@ watchpack@^2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +web-worker@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" + integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -5605,6 +8563,13 @@ webpack@^5.88.2: watchpack "^2.4.0" webpack-sources "^3.2.3" +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -5624,6 +8589,11 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" @@ -5640,7 +8610,7 @@ which-typed-array@^1.1.10, which-typed-array@^1.1.11: gopd "^1.0.1" has-tostringtag "^1.0.0" -which@1.3.1, which@^1.2.1, which@^1.2.9: +which@1.3.1, which@^1.2.1, which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -5673,6 +8643,14 @@ win-release@^1.0.0: dependencies: semver "^5.0.1" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -5709,6 +8687,16 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -5742,6 +8730,14 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.1.tgz#7ede329c1d8cdbbe209bd25cdb990e9b1ebbb394" + integrity sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA== + dependencies: + camelcase "^3.0.0" + object.assign "^4.1.0" + yargs-unparser@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" @@ -5780,7 +8776,7 @@ yargs@17.7.1: y18n "^5.0.5" yargs-parser "^21.1.1" -yargs@~17.7.2: +yargs@^17.7.2, yargs@~17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -5793,6 +8789,25 @@ yargs@~17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yargs@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" + integrity sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA== + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.1" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -5801,6 +8816,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +ylru@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785" + integrity sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"