diff --git a/package.json b/package.json index 70dc27c1..63997b9b 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "theme": "light" }, "activationEvents": [ + "onLanguage:markdown", "onCommand:markdown.marp.export", "onCommand:markdown.marp.showQuickPick", "onCommand:markdown.marp.toggleMarpPreview" @@ -209,18 +210,24 @@ "@marp-team/marpit-svg-polyfill": "^1.1.1", "@types/cheerio": "^0.22.13", "@types/jest": "^24.0.18", + "@types/lodash.debounce": "^4.0.6", "@types/markdown-it": "^0.0.8", "@types/semver": "^6.0.1", "@types/vscode": "~1.31.0", + "@types/yaml": "^1.0.2", "cheerio": "^1.0.0-rc.3", "codecov": "^3.5.0", "dedent": "^0.7.0", "jest": "^24.9.0", "jest-junit": "^7.0.0", - "markdown-it": "^9.1.0", + "lodash.debounce": "^4.0.8", + "markdown-it": "^10.0.0", "nanoid": "^2.0.3", "npm-run-all": "^4.1.5", "prettier": "^1.18.2", + "rehype-parse": "^6.0.1", + "remark": "^11.0.1", + "remark-parse": "^7.0.1", "rimraf": "^3.0.0", "rollup": "^1.20.1", "rollup-plugin-commonjs": "^10.0.2", @@ -236,11 +243,14 @@ "tslint": "^5.19.0", "tslint-config-airbnb": "^5.11.1", "tslint-config-prettier": "^1.18.0", - "typescript": "^3.5.3" + "typescript": "^3.5.3", + "unified": "^8.3.2", + "unist-util-visit": "^2.0.0", + "yaml": "^1.6.0" }, "dependencies": { - "@marp-team/marp-cli": "^0.13.0", - "@marp-team/marp-core": "^0.12.1", + "@marp-team/marp-cli": "^0.14.1", + "@marp-team/marp-core": "^0.13.1", "axios": "^0.19.0" } } diff --git a/src/__mocks__/lodash.debounce.ts b/src/__mocks__/lodash.debounce.ts new file mode 100644 index 00000000..8dfe3167 --- /dev/null +++ b/src/__mocks__/lodash.debounce.ts @@ -0,0 +1 @@ +module.exports = f => (...args) => f(...args) diff --git a/src/__mocks__/vscode.ts b/src/__mocks__/vscode.ts index 1cddddbe..b00dd65d 100644 --- a/src/__mocks__/vscode.ts +++ b/src/__mocks__/vscode.ts @@ -20,7 +20,44 @@ const uriInstance = (path: string) => return uri })() +export class CodeAction { + // command?: Command + diagnostics?: Diagnostic[] + edit?: WorkspaceEdit + isPreferred?: boolean + + constructor(public title: string, public kind?: CodeActionKind) {} +} + +export class CodeActionKind { + static readonly QuickFix = new CodeActionKind('QuickFix') + + constructor(readonly value: string) {} +} + +export class Diagnostic { + code?: string + source?: string + + constructor( + public range: Range, + public message: string, + public severity?: DiagnosticSeverity + ) {} +} + +export enum DiagnosticSeverity { + Error, + Warning, + Information, + Hint, +} + export class Position { + translate(lineDelta: number = 0, characterDelta: number = 0) { + return new Position(this.line + lineDelta, this.character + characterDelta) + } + constructor(readonly line: number, readonly character: number) {} } @@ -49,6 +86,12 @@ export const env = { } export const languages = { + createDiagnosticCollection: jest.fn(name => ({ + name, + delete: jest.fn(), + set: jest.fn(), + })), + registerCodeActionsProvider: jest.fn(), setTextDocumentLanguage: jest.fn(), } @@ -59,6 +102,7 @@ export const _setVSCodeVersion = (value: string) => { export const window = { activeTextEditor: undefined, + onDidChangeActiveTextEditor: jest.fn(), showErrorMessage: jest.fn(), showQuickPick: jest.fn(), showSaveDialog: jest.fn(), @@ -79,12 +123,18 @@ export const workspace = { })), getWorkspaceFolder: jest.fn(), onDidChangeConfiguration: jest.fn(), + onDidChangeTextDocument: jest.fn(), + onDidCloseTextDocument: jest.fn(), _setConfiguration: (conf: MockedConf = {}) => { currentConf = { ...defaultConf, ...conf } }, } +export class WorkspaceEdit { + readonly delete = jest.fn() +} + beforeEach(() => { currentConf = {} window.activeTextEditor = undefined diff --git a/src/diagnostics/deprecated-dollar-prefix.test.ts b/src/diagnostics/deprecated-dollar-prefix.test.ts new file mode 100644 index 00000000..c1b0225b --- /dev/null +++ b/src/diagnostics/deprecated-dollar-prefix.test.ts @@ -0,0 +1,199 @@ +import dedent from 'dedent' +import { + CancellationToken, + CodeAction, + CodeActionKind, + Diagnostic, + DiagnosticSeverity, + languages, + Position, + Range, + TextDocument, + WorkspaceEdit, +} from 'vscode' +import * as rule from './deprecated-dollar-prefix' + +jest.mock('vscode') + +const doc = (text: string): TextDocument => + ({ + getText: () => text, + positionAt: (offset: number) => { + const lines = text.slice(0, offset).split('\n') + return new Position(lines.length - 1, lines.pop()!.length) + }, + uri: '/test/document', + } as any) + +describe('[Diagnostics rule] Deprecated dollar prefix', () => { + const register = (doc: TextDocument): Diagnostic[] => { + const diagnostics: Diagnostic[] = [] + rule.register(doc, diagnostics) + + return diagnostics + } + + describe('#register', () => { + it('does not add diagnostics when passed pure markdown', () => + expect(register(doc('# Hello'))).toHaveLength(0)) + + it('does not add diagnostics when passed only marp directive', () => + expect(register(doc('---\nmarp: true\n---\n\n# Hello'))).toHaveLength(0)) + + it('does not add diagnostics when passed valid directives', () => + expect( + register(doc('---\nmarp: true\ntheme: default\n---')) + ).toHaveLength(0)) + + it('adds diagnostics to warn deprecated directives when passed outdated directives', () => { + const [$theme] = register(doc('---\nmarp: true\n$theme: default\n---')) + + expect($theme).toBeInstanceOf(Diagnostic) + expect($theme.code).toBe(rule.code) + expect($theme.source).toBe('marp-vscode') + expect($theme.severity).toBe(DiagnosticSeverity.Warning) + expect($theme.range).toStrictEqual( + new Range(new Position(2, 0), new Position(2, 6)) + ) + + // Multiple deprecated directives + const document = doc(dedent` + --- + $size: 4:3 + theme: default + + $headingDivider: 2 + $style: | + section { background: #eee; } + + marp: true + --- + `) + + const diagnostics = register(document) + expect(diagnostics).toHaveLength(3) + expect(diagnostics.every(d => d instanceof Diagnostic)).toBe(true) + expect(diagnostics.every(d => d.source === 'marp-vscode')).toBe(true) + expect(diagnostics.every(d => d.code === rule.code)).toBe(true) + + const [$size, $headingDivider, $style] = diagnostics + expect($size.range).toStrictEqual( + new Range(new Position(1, 0), new Position(1, 5)) + ) + expect($headingDivider.range).toStrictEqual( + new Range(new Position(4, 0), new Position(4, 15)) + ) + expect($style.range).toStrictEqual( + new Range(new Position(5, 0), new Position(5, 6)) + ) + }) + + it('adds diagnostics when passed outdated directives as HTML comment', () => { + const document = doc(dedent` + --- + marp: true + --- + + + + + + \`\`\` + + \`\`\` + + + + + + # Hello! + + xxxxx xxxxx + `) + + const diagnostics = register(document) + expect(diagnostics).toHaveLength(4) + expect(diagnostics.every(d => d instanceof Diagnostic)).toBe(true) + expect(diagnostics.every(d => d.source === 'marp-vscode')).toBe(true) + expect(diagnostics.every(d => d.code === rule.code)).toBe(true) + + const [$theme, $size, $style, $headingDivider] = diagnostics + expect($theme.range).toStrictEqual( + new Range(new Position(4, 5), new Position(4, 11)) + ) + expect($size.range).toStrictEqual( + new Range(new Position(8, 0), new Position(8, 5)) + ) + expect($style.range).toStrictEqual( + new Range(new Position(17, 7), new Position(17, 13)) + ) + expect($headingDivider.range).toStrictEqual( + new Range(new Position(21, 11), new Position(21, 26)) + ) + }) + }) + + describe('#subscribe', () => { + it('subscribes registered RemoveDollarPrefix code action provider', () => { + const subscriptions: any[] = [] + rule.subscribe(subscriptions) + + expect(languages.registerCodeActionsProvider).toBeCalledWith( + 'markdown', + expect.any(rule.RemoveDollarPrefix), + { providedCodeActionKinds: [CodeActionKind.QuickFix] } + ) + }) + }) + + describe('RemoveDollarPrefix code action', () => { + describe('#provideCodeActions', () => { + const dummyRange = new Range(new Position(0, 0), new Position(0, 0)) + const dummyToken = {} as CancellationToken + + it('returns created code actions for corresponding diagnostics', () => { + const document = doc('---\nmarp: true\n$theme: default\n---') + const diagnostics = register(document) + const codeActions = new rule.RemoveDollarPrefix().provideCodeActions( + document, + dummyRange, + { diagnostics }, + dummyToken + ) + + expect(codeActions).toHaveLength(1) + expect(codeActions![0]).toBeInstanceOf(CodeAction) + + // Quick fix action + const action: CodeAction = codeActions![0] + expect(action.kind).toBe(CodeActionKind.QuickFix) + expect(action.diagnostics).toStrictEqual(diagnostics) + expect(action.edit).toBeInstanceOf(WorkspaceEdit) + + // Edit + const edit: WorkspaceEdit = action.edit! + expect(edit.delete).toBeCalledTimes(1) + expect(edit.delete).toBeCalledWith( + document.uri, + new Range(new Position(2, 0), new Position(2, 1)) // "$" + ) + }) + + it('does not create code actions when dorresponding diagnostics have not passed', () => { + const document = doc('---\nmarp: true\n---') + const diagnostics = register(document) + const codeActions = new rule.RemoveDollarPrefix().provideCodeActions( + document, + dummyRange, + { diagnostics }, + dummyToken + ) + + expect(codeActions).toHaveLength(0) + }) + }) + }) +}) diff --git a/src/diagnostics/deprecated-dollar-prefix.ts b/src/diagnostics/deprecated-dollar-prefix.ts new file mode 100644 index 00000000..bb9a90fb --- /dev/null +++ b/src/diagnostics/deprecated-dollar-prefix.ts @@ -0,0 +1,128 @@ +import visit from 'unist-util-visit' // tslint:disable-line: import-name +import { + CodeAction, + CodeActionKind, + CodeActionProvider, + Diagnostic, + DiagnosticSeverity, + Disposable, + Range, + TextDocument, + WorkspaceEdit, + languages, +} from 'vscode' +import { parseHtml, parseMd, parseYaml } from './parser' +import { frontMatterRegex } from '../utils' + +const warnDirectives = [ + // Marpit + '$headingDivider', + '$style', + '$theme', + + // Marp Core + '$size', +] + +export const code = 'deprecated-dollar-prefix' + +export function register(doc: TextDocument, diagnostics: Diagnostic[]) { + let markdown = doc.getText() + let index = 0 + + const detectDirectives = (text: string, offset: number = 0) => { + const { contents, errors } = parseYaml(text) + + if (errors.length === 0 && contents && contents['items']) { + for (const item of contents['items']) { + if (item.type === 'PAIR' && warnDirectives.includes(item.key.value)) { + const name = item.key.value.slice(1) + const [start, end] = item.key.range + + const diagnostic = new Diagnostic( + new Range( + doc.positionAt(start + offset), + doc.positionAt(end + offset) + ), + `Dollar prefix support for ${name} global directive is deprecated. Remove "$" to fix.`, + DiagnosticSeverity.Warning + ) + + diagnostic.source = 'marp-vscode' + diagnostic.code = code + + diagnostics.push(diagnostic) + } + } + } + } + + // Front-matter + const fmMatched = markdown.match(frontMatterRegex) + + if (fmMatched && fmMatched.index === 0) { + const [, open, body, close] = fmMatched + detectDirectives(body, open.length) + + index = open.length + body.length + close.length + markdown = markdown.slice(index) + } + + // HTML comments + visit(parseMd(markdown), 'html', (n: any) => + visit(parseHtml(n.value), 'comment', (c: any) => { + const trimmedLeft = c.value.replace(/^-*\s*/, '') + + detectDirectives( + trimmedLeft.replace(/\s*-*$/, ''), + index + + n.position.start.offset + + c.position.start.offset + + 4 + + (c.value.length - trimmedLeft.length) + ) + }) + ) +} + +export class RemoveDollarPrefix implements CodeActionProvider { + static readonly providedCodeActionKinds = [CodeActionKind.QuickFix] + + readonly provideCodeActions: CodeActionProvider['provideCodeActions'] = ( + doc, + _, + context + ) => + context.diagnostics + .filter(d => d.source === 'marp-vscode' && d.code === code) + .map(d => this.createCodeAction(d, doc)) + + private createCodeAction(diag: Diagnostic, doc: TextDocument): CodeAction { + const act = new CodeAction( + 'Remove dollar prefix from global directive', + CodeActionKind.QuickFix + ) + + act.diagnostics = [diag] + act.edit = new WorkspaceEdit() + act.edit.delete( + doc.uri, + new Range(diag.range.start, diag.range.start.translate(0, 1)) + ) + // act.isPreferred = true // TODO: Require VS Code >= v1.32 + + return act + } +} + +export function subscribe(subscriptions: Disposable[]) { + subscriptions.push( + languages.registerCodeActionsProvider( + 'markdown', + new RemoveDollarPrefix(), + { + providedCodeActionKinds: RemoveDollarPrefix.providedCodeActionKinds, + } + ) + ) +} diff --git a/src/diagnostics/index.test.ts b/src/diagnostics/index.test.ts new file mode 100644 index 00000000..514545f0 --- /dev/null +++ b/src/diagnostics/index.test.ts @@ -0,0 +1,71 @@ +import { window, TextDocument } from 'vscode' +import * as deprecatedDollarPrefix from './deprecated-dollar-prefix' +import * as diagnostics from './index' // tslint:disable-line: import-name + +jest.mock('lodash.debounce') +jest.mock('vscode') +jest.mock('./deprecated-dollar-prefix') + +const plainTextDocMock: TextDocument = { + languageId: 'plaintext', + uri: '/plaintext', +} as any + +const mdDocMock = (text: string): TextDocument => + ({ + getText: () => text, + languageId: 'markdown', + uri: '/markdown', + } as any) + +describe('Diagnostics', () => { + describe('#subscribe', () => { + it('adds diagnostic collection and rules to subscriptions', () => { + const subscriptions: any[] = [] + diagnostics.subscribe(subscriptions) + + // Collection + expect(subscriptions).toContain(diagnostics.collection) + + // Rules for code action + expect(deprecatedDollarPrefix.subscribe).toBeCalledWith(subscriptions) + }) + + it('runs initial detection when text editor is active', () => { + window.activeTextEditor = { document: plainTextDocMock } as any + diagnostics.subscribe([]) + + expect(diagnostics.collection.delete).toBeCalledWith('/plaintext') + }) + + describe('Observer events', () => { + it.todo('window.onDidChangeActiveTextEditor') + it.todo('workspace.onDidChangeTextDocument') + it.todo('workspace.onDidCloseTextDocument') + }) + }) + + describe('#refresh', () => { + it('resets diagnostics when passed plain text document', () => { + diagnostics.refresh(plainTextDocMock) + expect(diagnostics.collection.delete).toBeCalledWith('/plaintext') + }) + + it('resets diagnostics when passed markdown document without marp frontmatter', () => { + diagnostics.refresh(mdDocMock('---\nfoo: bar\n---\n\n# Hello')) + expect(diagnostics.collection.delete).toBeCalledWith('/markdown') + }) + + it('sets diagnostics when passed markdown document with marp frontmatter', () => { + const arr = expect.any(Array) + const doc = mdDocMock('---\nmarp: true\n---\n\n# Hello') + diagnostics.refresh(doc) + + expect(diagnostics.collection.delete).not.toBeCalled() + expect(diagnostics.collection.set).toBeCalledWith('/markdown', arr) + + // Rules + expect(deprecatedDollarPrefix.register).toBeCalledWith(doc, arr) + }) + }) +}) diff --git a/src/diagnostics/index.ts b/src/diagnostics/index.ts new file mode 100644 index 00000000..dd98219a --- /dev/null +++ b/src/diagnostics/index.ts @@ -0,0 +1,48 @@ +import lodashDebounce from 'lodash.debounce' +import { + Diagnostic, + Disposable, + TextDocument, + languages, + window, + workspace, +} from 'vscode' +import * as deprecatedDollarPrefix from './deprecated-dollar-prefix' +import { detectMarpDocument } from '../utils' + +export const collection = languages.createDiagnosticCollection('marp-vscode') + +const setDiagnostics = lodashDebounce((doc: TextDocument) => { + const diagnostics: Diagnostic[] = [] + + deprecatedDollarPrefix.register(doc, diagnostics) + + collection.set(doc.uri, diagnostics) +}, 500) + +export function refresh(doc: TextDocument) { + if (detectMarpDocument(doc)) { + setDiagnostics(doc) + } else { + collection.delete(doc.uri) + } +} + +export function subscribe(subscriptions: Disposable[]) { + // Diagnostics + subscriptions.push(collection) + + // Quick fix + deprecatedDollarPrefix.subscribe(subscriptions) + + // Initialize observers + if (window.activeTextEditor) refresh(window.activeTextEditor.document) + + subscriptions.push( + window.onDidChangeActiveTextEditor(e => e && refresh(e.document)), + workspace.onDidChangeTextDocument(e => refresh(e.document)), + workspace.onDidCloseTextDocument(d => collection.delete(d.uri)) + ) +} + +export default subscribe diff --git a/src/diagnostics/parser.ts b/src/diagnostics/parser.ts new file mode 100644 index 00000000..294e38f0 --- /dev/null +++ b/src/diagnostics/parser.ts @@ -0,0 +1,9 @@ +import rehypeParse from 'rehype-parse' +import remarkParse from 'remark-parse' +import unified from 'unified' +import yaml from 'yaml' + +export const parseHtml = unified().use(rehypeParse).parse +export const parseMd = unified().use(remarkParse, { commonmark: true }).parse +export const parseYaml = (yamlBody: string) => + yaml.parseDocument(yamlBody, { schema: 'failsafe' }) diff --git a/src/extension.ts b/src/extension.ts index 410b35ea..3b47d122 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -6,6 +6,7 @@ import toggleMarpPreview from './commands/toggle-marp-preview' import customTheme from './plugins/custom-theme' import lineNumber from './plugins/line-number' import outline from './plugins/outline' +import diagnostics from './diagnostics/' // tslint:disable-line: import-name import { marpCoreOptionForPreview, clearMarpCoreOptionCache } from './option' import themes from './themes' import { detectMarpFromMarkdown } from './utils' @@ -96,6 +97,8 @@ export function extendMarkdownIt(md: any) { } export const activate = ({ subscriptions }: ExtensionContext) => { + diagnostics(subscriptions) + subscriptions.push( commands.registerCommand('markdown.marp.export', exportCommand), commands.registerCommand('markdown.marp.showQuickPick', showQuickPick), diff --git a/src/option.ts b/src/option.ts index 1b30dd50..4fe5341b 100644 --- a/src/option.ts +++ b/src/option.ts @@ -54,6 +54,7 @@ export const marpCoreOptionForPreview = ( cachedPreviewOption = { container: { ...containerBaseArgs, tag: 'div', id: 'marp-vscode' }, + dollarPrefixForGlobalDirectives: true, html: marpConfiguration().get('enableHtml') || undefined, markdown: { breaks: breaks(!!baseOption.breaks) }, } @@ -66,6 +67,7 @@ export const marpCoreOptionForCLI = async ({ uri }: TextDocument) => { allowLocalFiles: true, html: marpConfiguration().get('enableHtml') || undefined, options: { + dollarPrefixForGlobalDirectives: true, markdown: { breaks: breaks( !!workspace diff --git a/src/utils.ts b/src/utils.ts index 2dcaa5dd..c40a3f31 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,14 +1,17 @@ -import { workspace } from 'vscode' +import { TextDocument, workspace } from 'vscode' -const frontMatterRegex = /^-{3,}\s*$\n([\s\S]*?)^\s*-{3}/m +export const frontMatterRegex = /^(-{3,}\s*$\n)([\s\S]*?)^(\s*-{3})/m export const marpDirectiveRegex = /^(marp\s*: +)(.*)\s*$/m export const detectFrontMatter = (markdown: string): string | undefined => { const m = markdown.match(frontMatterRegex) - return m && m.index === 0 ? m[1] : undefined + return m && m.index === 0 ? m[2] : undefined } +export const detectMarpDocument = (doc: TextDocument): boolean => + doc.languageId === 'markdown' && detectMarpFromMarkdown(doc.getText()) + export const detectMarpFromMarkdown = (markdown: string): boolean => { const frontmatter = detectFrontMatter(markdown) if (!frontmatter) return false diff --git a/yarn.lock b/yarn.lock index 0a525e96..e3e33495 100644 --- a/yarn.lock +++ b/yarn.lock @@ -98,6 +98,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/runtime@^7.4.5": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" + integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -306,13 +313,13 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@marp-team/marp-cli@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@marp-team/marp-cli/-/marp-cli-0.13.0.tgz#644c04831196800261d43e7b09e1416dec451da1" - integrity sha512-qJbm052LsOlPgh9ffuq+/J2Ck/m3+ia+QwcjcKlmeT8e+WKtUv0aW/ncoGZps8tqyudJGbLNUCEPh/d4YoU9ZQ== +"@marp-team/marp-cli@^0.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@marp-team/marp-cli/-/marp-cli-0.14.1.tgz#a0fb70852d2864dcfeca6a3c5c4683be7a5973f5" + integrity sha512-nd2jg4FzXmY7Plb09jPAFtbhGZs0NiArqF+/+vTDCAsOeOVOdgl+oj1IXVj2vrefu+MeJTIUTRvl6/KKP9eyew== dependencies: - "@marp-team/marp-core" "^0.12.1" - "@marp-team/marpit" "^1.3.2" + "@marp-team/marp-core" "^0.13.1" + "@marp-team/marpit" "^1.4.0" "@marp-team/pptx" "^0.1.0" carlo "^0.9.46" chalk "^2.4.2" @@ -328,26 +335,31 @@ mkdirp "^0.5.1" os-locale "^4.0.0" pkg-up "^3.1.0" - portfinder "^1.0.23" + portfinder "^1.0.24" puppeteer-core "~1.17.0" serve-index "^1.9.1" strip-ansi "^5.2.0" tmp "^0.1.0" + v8-compile-cache "^2.1.0" wrap-ansi "^6.0.0" ws "^7.1.2" yargs "^14.0.0" -"@marp-team/marp-core@^0.12.1": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@marp-team/marp-core/-/marp-core-0.12.1.tgz#6be8c9da326c0fc4131d4ceadb283628c83bcac7" - integrity sha512-o70E0IL6fiiZ/61wFNOmoLoxOnG4+RgnabRrvIYTSgw84MWlWWTGnqGSJmZbiq/oPWJ8yJFUVgoqGbOvRFa82w== +"@marp-team/marp-core@^0.13.1": + version "0.13.1" + resolved "https://registry.yarnpkg.com/@marp-team/marp-core/-/marp-core-0.13.1.tgz#7dc90dd2fadec2d0fca21bcb7551ea7dd34a4aa6" + integrity sha512-1bttJqrs35mDzcLENMij8/Y77dee6dd3E+Rv3xdKRkJQH/aRh9BqH0mPLCmeysSprPDihtxzRqFsr11eQs+qvQ== dependencies: - "@marp-team/marpit" "^1.3.2" + "@marp-team/marpit" "^1.4.0" "@marp-team/marpit-svg-polyfill" "^1.1.1" emoji-regex "^8.0.0" highlight.js "^9.15.10" katex "^0.11.0" markdown-it-emoji "^1.4.0" + postcss "^7.0.18" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-whitespace "^4.0.2" twemoji "^12.1.2" xss "^1.0.6" @@ -356,17 +368,17 @@ resolved "https://registry.yarnpkg.com/@marp-team/marpit-svg-polyfill/-/marpit-svg-polyfill-1.1.1.tgz#b0b999243b9fd4d09ab3160260c1748683eef4ab" integrity sha512-OC9ORNDHvnp2mTOSsB7ZnrD1Seuzz1j9lznWxoxoFu+V+8RkGhxjLxHXlPrcBqF2wbId99aSEaYuKZthPWsE0g== -"@marp-team/marpit@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@marp-team/marpit/-/marpit-1.3.2.tgz#ba348137ec65db914c715534ecba0b01cbf85ebb" - integrity sha512-XsOkOY5zC2Oy5hlY3Tl1nvvIGGgSDuff3PRwfPrFNYEtEvI1DqL/d+bhn7lbFEKSXfBZF0tOu9cQN3lFwmvFVA== +"@marp-team/marpit@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@marp-team/marpit/-/marpit-1.4.0.tgz#b04fe157f79f33e71aa712a5cb137230ef8c9f01" + integrity sha512-BelutbvwSpLM7meRRZWokEosUx2cxBoivHZ+2u9H5+FZ+M3f3TNY1bdK+O7ZH8/iEEwFxUDyIMAnLxnxjn7Eew== dependencies: color-string "^1.5.3" js-yaml "^3.13.0" lodash.kebabcase "^4.1.1" - markdown-it "^9.1.0" + markdown-it "^10.0.0" markdown-it-front-matter "^0.1.2" - postcss "^7.0.17" + postcss "^7.0.18" "@marp-team/pptx@^0.1.0": version "0.1.0" @@ -508,6 +520,18 @@ resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806" integrity sha512-Q7DYAOi9O/+cLLhdaSvKdaumWyHbm7HAk/bFwwyTuU0arR5yyCeW5GOoqt4tJTpDRxhpx9Q8kQL6vMpuw9hDSw== +"@types/lodash.debounce@^4.0.6": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.6.tgz#c5a2326cd3efc46566c47e4c0aa248dc0ee57d60" + integrity sha512-4WTmnnhCfDvvuLMaF3KV4Qfki93KebocUF45msxhYyjMttZDQYzHkO639ohhk8+oco2cluAFL3t5+Jn4mleylQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.138" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.138.tgz#34f52640d7358230308344e579c15b378d91989e" + integrity sha512-A4uJgHz4hakwNBdHNPdxOTkYmXNgmUAKLbXZ7PKGslgeV0Mb8P3BlbYfPovExek1qnod4pDfRbxuzcVs3dlFLg== + "@types/markdown-it@^0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.8.tgz#9af8704acde87fec70475369ba0413d50717bd8d" @@ -542,7 +566,7 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== -"@types/unist@*", "@types/unist@^2.0.0": +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== @@ -569,6 +593,11 @@ resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.31.0.tgz#6238228482f8cae4973e50091153e3125f067044" integrity sha512-uUpjvtrQ14ZEqqRE/EGuBvGbm9GuxDp76mtsnw3goMogsWmEEYS/y4eL2Zwf0rbFMh/hg3hEs+E3CvuuNEs+GA== +"@types/yaml@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/yaml/-/yaml-1.0.2.tgz#bba080d64714c6ef3eaa023e235dacd2cfa3c938" + integrity sha512-rS1VJFjyGKNHk8H97COnPIK+oeLnc0J9G0ES63o/Ky+WlJCeaFGiGCTGhV/GEVKua7ZWIV1JIDopYUwrfvTo7A== + "@types/yargs-parser@*": version "13.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.0.0.tgz#453743c5bbf9f1bed61d959baab5b06be029b2d0" @@ -644,6 +673,11 @@ ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -991,6 +1025,15 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" +browserslist@^4.0.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" + integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== + dependencies: + caniuse-lite "^1.0.30000989" + electron-to-chromium "^1.3.247" + node-releases "^1.1.29" + browserslist@^4.6.3: version "4.6.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" @@ -1097,7 +1140,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000984: +caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000984, caniuse-lite@^1.0.30000989: version "1.0.30000989" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== @@ -1122,7 +1165,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -ccount@^1.0.0: +ccount@^1.0.0, ccount@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.4.tgz#9cf2de494ca84060a2a8d2854edd6dfb0445f386" integrity sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w== @@ -1303,6 +1346,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.7.tgz#419cd7fb3258b1ed838dc0953167a25e152f5b59" + integrity sha512-Jrx3xsP4pPv4AwJUDWY9wOXGtwPXARej6Xd99h4TUGotmf8APuquKMpK+dnD3UgyxK7OEWaisjZz+3b5jtL6xQ== + commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@^2.9.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -1413,6 +1461,11 @@ cssfilter@0.0.10: resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" @@ -1681,6 +1734,11 @@ electron-to-chromium@^1.3.191: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.237.tgz#39c5d1da59d6fd16ff705b97e772bb3b5dfda7e4" integrity sha512-SPAFjDr/7iiVK2kgTluwxela6eaWjjFkS9rO/iYpB/KGXgccUom5YC7OIf19c8m8GGptWxLU0Em8xM64A/N7Fg== +electron-to-chromium@^1.3.247: + version "1.3.257" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.257.tgz#35da0ad5833b27184c8298804c498a4d2f4ed27d" + integrity sha512-EcKVmUeHCZelPA0wnIaSmpAN8karKhKBwFb+xLUjSVZ8sGRE1l3fst1zQZ7KJUkyJ7H5edPd4RP94pzC9sG00A== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -1708,7 +1766,7 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== -entities@^2.0.0: +entities@^2.0.0, entities@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== @@ -2383,13 +2441,39 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hast-util-from-parse5@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.1.tgz#7da8841d707dcf7be73715f7f3b14e021c4e469a" + integrity sha512-UfPzdl6fbxGAxqGYNThRUhRlDYY7sXu6XU9nQeX4fFZtV+IHbyEJtd+DUuwOqNV4z3K05E/1rIkoVr/JHmeWWA== + dependencies: + ccount "^1.0.3" + hastscript "^5.0.0" + property-information "^5.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" + +hast-util-parse-selector@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.2.tgz#66aabccb252c47d94975f50a281446955160380b" + integrity sha512-jIMtnzrLTjzqgVEQqPEmwEZV+ea4zHRFTP8Z2Utw0I5HuBOXHzUPPQWr6ouJdJqDKLbFU/OEiYwZ79LalZkmmw== + +hastscript@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.0.tgz#a19b3cca6a26a2bcd0f1b1eac574af9427c1c7df" + integrity sha512-7mOQX5VfVs/gmrOGlN8/EDfp1GqV6P3gTNVt+KnX4gbYhpASTM8bklFdFQCbFRAadURXAmw0R1QQdBdqp7jswQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.2.0" + property-information "^5.0.1" + space-separated-tokens "^1.0.0" + highlight.js@^9.15.10: version "9.15.10" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" @@ -2690,7 +2774,7 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= -is-decimal@^1.0.0: +is-decimal@^1.0.0, is-decimal@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7" integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ== @@ -2803,6 +2887,11 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.0.0.tgz#7fd1a7f1b69e160cde9181d2313f445c68aa2679" + integrity sha512-EYisGhpgSCwspmIuRHGjROWTon2Xp8Z7U03Wubk/bTL5TTRC5R1rGVgyjzBrk9+ULdH6cRD06KRcw/xfqhVYKQ== + 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" @@ -3581,6 +3670,11 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" @@ -3701,13 +3795,13 @@ markdown-it-front-matter@^0.1.2: resolved "https://registry.yarnpkg.com/markdown-it-front-matter/-/markdown-it-front-matter-0.1.2.tgz#e50bf56e77e6a4f5ac4ffa894d4d45ccd9896b20" integrity sha1-5Qv1bnfmpPWsT/qJTU1FzNmJayA= -markdown-it@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-9.1.0.tgz#df9601c168568704d554b1fff9af0c5b561168d9" - integrity sha512-xHKG4C8iPriyfu/jc2hsCC045fKrMQ0VexX2F1FGYiRxDxqMB2aAhF8WauJ3fltn2kb90moGBkiiEdooGIg55w== +markdown-it@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" + integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== dependencies: argparse "^1.0.7" - entities "~1.1.1" + entities "~2.0.0" linkify-it "^2.0.0" mdurl "^1.0.1" uc.micro "^1.0.5" @@ -4032,6 +4126,13 @@ node-releases@^1.1.25: dependencies: semver "^5.3.0" +node-releases@^1.1.29: + version "1.1.30" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.30.tgz#35eebf129c63baeb6d8ddeda3c35b05abfd37f7f" + integrity sha512-BHcr1g6NeUH12IL+X3Flvs4IOnl1TL0JczUhEZjDE+FXXPQcVCNr8NEPb01zqGxzhTpdyJL5GXemaCW7aw6Khw== + dependencies: + semver "^5.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -4341,7 +4442,7 @@ parse5@4.0.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== -parse5@5.1.0: +parse5@5.1.0, parse5@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== @@ -4461,10 +4562,10 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -portfinder@^1.0.23: - version "1.0.23" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.23.tgz#894db4bcc5daf02b6614517ce89cd21a38226b82" - integrity sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ== +portfinder@^1.0.24: + version "1.0.24" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" + integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== dependencies: async "^1.5.2" debug "^2.2.0" @@ -4509,6 +4610,36 @@ postcss-media-query-parser@^0.2.3: resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + postcss-reporter@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" @@ -4546,7 +4677,7 @@ postcss-scss@^2.0.0: dependencies: postcss "^7.0.0" -postcss-selector-parser@^3.1.0: +postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= @@ -4560,7 +4691,7 @@ postcss-syntax@^0.36.2: resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== -postcss-value-parser@^3.3.1: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -4579,6 +4710,15 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2 source-map "^0.6.1" supports-color "^6.1.0" +postcss@^7.0.18: + version "7.0.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" + integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4617,6 +4757,13 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" +property-information@^5.0.0, property-information@^5.0.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.2.2.tgz#20555eafd2296278a682e5a51d5123e7878ecc30" + integrity sha512-N2moasZmjn2mjVGIWpaqz5qnz6QyeQSGgGvMtl81gA9cPTWa6wpesRSe/quNnOjUHpvSH1oZx0pdz0EEckLFnA== + dependencies: + xtend "^4.0.1" + proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -4800,6 +4947,11 @@ reflect-metadata@^0.1.12: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + 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" @@ -4808,6 +4960,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +rehype-parse@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-6.0.1.tgz#a5401d7f4144d5e17cbb69be11f05a2a7ba87e27" + integrity sha512-FrGSbOzcGxIvWty1qHjKTvHT4WBTt7C6JLs65EkvFPa7ZKraSmsoDDj6al1eBxaXS1t/kiGdPYazUe58Mgflgw== + dependencies: + hast-util-from-parse5 "^5.0.0" + parse5 "^5.0.0" + xtend "^4.0.1" + remark-parse@^6.0.0: version "6.0.3" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" @@ -4829,6 +4990,27 @@ remark-parse@^6.0.0: vfile-location "^2.0.0" xtend "^4.0.1" +remark-parse@^7.0.0, remark-parse@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.1.tgz#0c13d67e0d7b82c2ad2d8b6604ec5fae6c333c2b" + integrity sha512-WOZLa545jYXtSy+txza6ACudKWByQac4S2DmGk+tAGO/3XnVTOxwyCIxB7nTcLlk8Aayhcuf3cV1WV6U6L7/DQ== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + remark-stringify@^6.0.0: version "6.0.4" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" @@ -4849,6 +5031,26 @@ remark-stringify@^6.0.0: unherit "^1.0.4" xtend "^4.0.1" +remark-stringify@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-7.0.3.tgz#9221e9770b0b395af83a0d5881a44b6fcb9d0a2a" + integrity sha512-+jgmjNjm2kR7y2Ns1BATXRlFr+iQ7sDcpSgytfU77nkw7UCd5yJNArSxB3MU3Uul7HuyYNTCjetoGfy8xLia1A== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^1.1.0" + mdast-util-compact "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^2.0.0" + unherit "^1.0.4" + xtend "^4.0.1" + remark@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" @@ -4858,6 +5060,15 @@ remark@^10.0.1: remark-stringify "^6.0.0" unified "^7.0.0" +remark@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/remark/-/remark-11.0.1.tgz#3c16e1ed84c78a661299991bb8d5fa7ee5d18e3c" + integrity sha512-Fl2AvN+yU6sOBAjUz3xNC5iEvLkXV8PZicLOOLifjU8uKGusNvhHfGRCfETsqyvRHZ24JXqEyDY4hRLhoUd30A== + dependencies: + remark-parse "^7.0.0" + remark-stringify "^7.0.0" + unified "^8.2.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -5332,6 +5543,11 @@ sourcemap-codec@^1.4.4: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== +space-separated-tokens@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.4.tgz#27910835ae00d0adfcdbd0ad7e611fb9544351fa" + integrity sha512-UyhMSmeIqZrQn2UdjYpxEkwY9JUrn8pP+7L4f91zRzOQuI8MF1FGLfYU9DKCYeLdo7LXMxwrX5zKFy7eeeVHuA== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -5494,6 +5710,17 @@ stringify-entities@^1.0.1: is-alphanumerical "^1.0.0" is-hexadecimal "^1.0.0" +stringify-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-2.0.0.tgz#fa7ca6614b355fb6c28448140a20c4ede7462827" + integrity sha512-fqqhZzXyAM6pGD9lky/GOPq6V4X0SeTAFBl0iXb/BzOegl40gpf/bV3QQP7zULNYvjr6+Dx8SCaDULjVoOru0A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.2" + is-hexadecimal "^1.0.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -5961,9 +6188,9 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" - integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== + version "3.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.3.tgz#fea942fabb20f7e1ca7164ff626f1a9f3f70b4da" + integrity sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -6000,6 +6227,17 @@ unified@^7.0.0: vfile "^3.0.0" x-is-string "^0.1.0" +unified@^8.2.0, unified@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-8.3.2.tgz#aed69d0e577d6ef27268431c63a10faef60e63ab" + integrity sha512-NDtUAXcd4c+mKppCbsZHzmhkKEQuhveZNBrFYmNgMIMk2K9bc8hmG3mLEGVtRmSNodobwyMePAnvIGVWZfPdzQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -6015,6 +6253,11 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unist-util-find-all-after@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz#2eeaba818fd98492d69c44f9bee52c6a25282eef" @@ -6027,6 +6270,11 @@ unist-util-is@^3.0.0: resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== +unist-util-is@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.0.tgz#85672993f0d88a8bffb45137aba003ee8da11a38" + integrity sha512-E5JLUKRQlAYiJmN2PVBdSz01R3rUKRSM00X+0DB/yLqxdLu6wZZkRdTIsxDp9X+bkxh8Eq+O2YYRbZvLZtQT1A== + unist-util-remove-position@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz#d91aa8b89b30cb38bad2924da11072faa64fd972" @@ -6039,6 +6287,13 @@ unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== +unist-util-stringify-position@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.1.tgz#de2a2bc8d3febfa606652673a91455b6a36fb9f3" + integrity sha512-Zqlf6+FRI39Bah8Q6ZnNGrEHUhwJOkHde2MHVk96lLyftfJJckaPslKgzhVcviXj8KcE9UJM9F+a4JEiBUTYgA== + dependencies: + "@types/unist" "^2.0.2" + unist-util-visit-parents@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" @@ -6046,6 +6301,14 @@ unist-util-visit-parents@^2.0.0: dependencies: unist-util-is "^3.0.0" +unist-util-visit-parents@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.0.0.tgz#dd4cdcd86d505ec7a81bdc01bc790f9def742bee" + integrity sha512-H3K8d81S4V3XVXVwLvrLGk+R5VILryfUotD06/R/rLsTsPLGjkn6gIP8qEEVITcuIySNYj0ocJLsePjm9F/Vcg== + dependencies: + "@types/unist" "^2.0.3" + unist-util-is "^4.0.0" + unist-util-visit@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" @@ -6053,6 +6316,15 @@ unist-util-visit@^1.1.0: dependencies: unist-util-visit-parents "^2.0.0" +unist-util-visit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.0.tgz#1fdae5ea88251651bfe49b7e84390d664fc227c5" + integrity sha512-kiTpWKsF54u/78L/UU/i7lxrnqGiEWBgqCpaIZBYP0gwUC+Akq0Ajm4U8JiNIoQNfAioBdsyarnOcTEAb9mLeQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -6116,6 +6388,11 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +v8-compile-cache@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + 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" @@ -6150,6 +6427,14 @@ vfile-message@^1.0.0: dependencies: unist-util-stringify-position "^1.1.1" +vfile-message@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.1.tgz#951881861c22fc1eb39f873c0b93e336a64e8f6d" + integrity sha512-KtasSV+uVU7RWhUn4Lw+wW1Zl/nW8JWx7JCPps10Y9JRRIDeDXf8wfBLoOSsJLyo27DqMyAi54C6Jf/d6Kr2Bw== + dependencies: + "@types/unist" "^2.0.2" + unist-util-stringify-position "^2.0.0" + vfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" @@ -6160,6 +6445,17 @@ vfile@^3.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" +vfile@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.1.tgz#fc3d43a1c71916034216bf65926d5ee3c64ed60c" + integrity sha512-lRHFCuC4SQBFr7Uq91oJDJxlnftoTLQ7eKIpMdubhYcVMho4781a8MWXLy3qZrZ0/STD1kRiKc0cQOHm4OkPeA== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" @@ -6183,6 +6479,11 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" +web-namespaces@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.3.tgz#9bbf5c99ff0908d2da031f1d732492a96571a83f" + integrity sha512-r8sAtNmgR0WKOKOxzuSgk09JsHlpKlB+uHi937qypOu3PZ17UxPrierFKDye/uNHjNTTEshu5PId8rojIPj/tA== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -6350,6 +6651,13 @@ yallist@^3.0.0, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yaml@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.6.0.tgz#d8a985cfb26086dd73f91c637f6e6bc909fddd3c" + integrity sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw== + dependencies: + "@babel/runtime" "^7.4.5" + yargs-parser@10.x, yargs-parser@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"