diff --git a/.gitignore b/.gitignore index dcd8530..05d0300 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ out node_modules +documentation/* +!documentation/build.ts +!documentation/tsconfig.json *.vsix \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore index b3f14f2..cf47569 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -6,6 +6,10 @@ src/** **/*.map .gitignore images/**/*.gif +documentation/** +!documentation/examples/* +!documentation/images/* +!documentation/documentation.html tsconfig.json vsc-extension-quickstart.md tslint.json \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 52cc1d0..c83dbc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ All notable changes to the "mjml" extension will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +### [1.5.0] (2018-09-28) +* [new] Configuration property `mjml.previewBackgroundColor`: preview background color ([#39](https://github.com/attilabuti/vscode-mjml/issues/39)). +* [new] Configuration property `mjml.showSaveDialog`: show the save as dialog instead of input box. +* [new] Configuration property `mjml.autoClosePreview`: automatically close preview when all open MJML documents have been closed. +* [new] `MJML: Documentation`: open the MJML documentation. +* [new] `MJML: Search in MJML documentation`: search for the selected mj-element in the MJML documentation. +* [#38](https://github.com/attilabuti/vscode-mjml/issues/38): added support for beautify mj-style. +* [#35](https://github.com/attilabuti/vscode-mjml/issues/35): show more useful information on error in sending the email. +* [#29](https://github.com/attilabuti/vscode-mjml/pull/29): merged pull request. +* MJML syntax highlight with CSS support. +* The `PreviewManager` has been completely rewritten. +* Built-in MJML documentation with `Try it live` support. +* `Search in MJML documentation` from context menu. +* MJML 4.1.2 +* Some other improvements. + ### [1.4.0] (2018-07-14) * [#30](https://github.com/attilabuti/vscode-mjml/issues/30): fixed PhantomJS rebuild issue. * [#27](https://github.com/attilabuti/vscode-mjml/issues/27) [#31](https://github.com/attilabuti/vscode-mjml/issues/31): fixed rendering issue. diff --git a/README.md b/README.md index af45d6b..dda77df 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ MJML preview, lint, compile for Visual Studio Code. * Fetch official templates. Based on [mjml-app](https://github.com/mjmlio/mjml-app). * Beautify MJML code. * Migrate a template from MJML 3 to MJML 4. +* MJML syntax highlight. Based on [mjml-syntax](https://github.com/mjmlio/mjml-syntax). +* Built-in MJML documentation with `Try it live` support. ## It looks like this @@ -45,6 +47,8 @@ The following command is available: * **MJML: Screenshot** Take a screenshot of the rendered MJML document, and save it as a file. * **MJML: Send Email** Send email with Nodemailer or Mailjet. * **MJML: Template** Fetch official templates. +* **MJML: Documentation** open the MJML documentation. +* **MJML: Search in MJML documentation** search for the selected mj-element in the MJML documentation. ## Settings @@ -71,6 +75,9 @@ The following command is available: | `mjml.screenshotWidth` | `650` | Screenshot width. | | `mjml.screenshotWidths` | `640,750` | Screenshot widths. | | `mjml.updateWhenTyping` | `true` | Update preview when typing. | +| `mjml.previewBackgroundColor` | ` ` | Preview background color. | +| `mjml.autoClosePreview` | `true` | Automatically close preview when all open MJML documents have been closed. | +| `mjml.showSaveDialog` | `false` | Show the save as dialog instead of input box. | ## Snippets @@ -152,6 +159,22 @@ Please see the [Nodemailer](https://nodemailer.com) documentation for more infor ## Change Log +### [1.5.0] (2018-09-28) +* [new] Configuration property `mjml.previewBackgroundColor`: preview background color ([#39](https://github.com/attilabuti/vscode-mjml/issues/39)). +* [new] Configuration property `mjml.showSaveDialog`: show the save as dialog instead of input box. +* [new] Configuration property `mjml.autoClosePreview`: automatically close preview when all open MJML documents have been closed. +* [new] `MJML: Documentation`: open the MJML documentation. +* [new] `MJML: Search in MJML documentation`: search for the selected mj-element in the MJML documentation. +* [#38](https://github.com/attilabuti/vscode-mjml/issues/38): added support for beautify mj-style. +* [#35](https://github.com/attilabuti/vscode-mjml/issues/35): show more useful information on error in sending the email. +* [#29](https://github.com/attilabuti/vscode-mjml/pull/29): merged pull request. +* MJML syntax highlight with CSS support. +* The `PreviewManager` has been completely rewritten. +* Built-in MJML documentation with `Try it live` support. +* `Search in MJML documentation` from context menu. +* MJML 4.1.2 +* Some other improvements. + ### [1.4.0] (2018-07-14) * [#30](https://github.com/attilabuti/vscode-mjml/issues/30): fixed PhantomJS rebuild issue. * [#27](https://github.com/attilabuti/vscode-mjml/issues/27) [#31](https://github.com/attilabuti/vscode-mjml/issues/31): fixed rendering issue. @@ -259,14 +282,15 @@ A big thanks to the people that have contributed to this project: - Christian Brevik ([@cbrevik](https://github.com/cbrevik)) - [contributions](https://github.com/attilabuti/vscode-mjml/commits?author=cbrevik)) - Kevin Oliveira ([@kvnol](https://github.com/kvnol)) - [contributions](https://github.com/attilabuti/vscode-mjml/commits?author=kvnol)) +- Joshua Skrzypek ([@jskrzypek](https://github.com/jskrzypek)) - [contributions](https://github.com/attilabuti/vscode-mjml/commits?author=jskrzypek)) ## License This extension is licensed under the [MIT License][license-url]. -[license-img]: https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square +[license-img]: https://img.shields.io/github/license/attilabuti/vscode-mjml.svg?style=flat-square [license-url]: https://raw.githubusercontent.com/attilabuti/vscode-mjml/master/LICENSE -[vs-market-version]: https://vsmarketplacebadge.apphb.com/version-short/attilabuti.vscode-mjml.svg?style=flat-square -[vs-market-installs]: https://vsmarketplacebadge.apphb.com/installs/attilabuti.vscode-mjml.svg?style=flat-square +[vs-market-version]: https://img.shields.io/vscode-marketplace/v/attilabuti.vscode-mjml.svg?style=flat-square +[vs-market-installs]: https://img.shields.io/vscode-marketplace/d/attilabuti.vscode-mjml.svg?style=flat-square [vs-market-url]: https://marketplace.visualstudio.com/items?itemName=attilabuti.vscode-mjml [dependencies-status]: https://david-dm.org/attilabuti/vscode-mjml/status.svg?style=flat-square \ No newline at end of file diff --git a/documentation/build.ts b/documentation/build.ts new file mode 100644 index 0000000..8f632c8 --- /dev/null +++ b/documentation/build.ts @@ -0,0 +1,250 @@ +"use strict"; + +import * as fs from "fs"; +import * as path from "path"; + +import * as fetch from "node-fetch"; +import * as hljs from "highlight.js"; + +const md = require("markdown-it")({ + html: true, + highlight: (str: string, lang: string) => { + if (lang && hljs.getLanguage(lang)) { + if (lang && hljs.getLanguage(lang)) { + try { + return `
${hljs.highlight(lang, str, true).value}
`; + } catch (err) {} + } + } + + return ""; + } +}).use(require("markdown-it-anchor")); + + +let githubAccessToken: string = ""; + +let exampleFolder: string = "./examples"; +let imagesFolder: string = "./images"; +let documentationHTML: string = "./documentation.html"; + +async function run(): Promise { + clean(); + + let documentation: string = ` + + + + + + + + ${md.render(await getContent()).replace(/([\n\t\s]*){2,}/gi, "
")} + + `; + + if (documentation) { + fs.writeFile(documentationHTML, documentation, (err) => { + if (err) { + return console.log(err); + } + + console.log("The file was saved!"); + }); + } +} + +function clean(): void { + let deleteFolderRecursive = (path: string) => { + if (fs.existsSync(path)) { + fs.readdirSync(path).forEach((file: string) => { + let currentPath: string = `${path}/${file}`; + + if (fs.lstatSync(currentPath).isDirectory()) { + deleteFolderRecursive(currentPath); + } + else { + fs.unlinkSync(currentPath); + } + }); + + fs.rmdirSync(path); + } + }; + + if (fs.existsSync(exampleFolder) && fs.statSync(exampleFolder).isDirectory()) { + deleteFolderRecursive(exampleFolder); + } + + if (fs.existsSync(imagesFolder) && fs.statSync(imagesFolder).isDirectory()) { + deleteFolderRecursive(imagesFolder); + } + + if (fs.existsSync(documentationHTML) && fs.statSync(documentationHTML).isFile()) { + fs.unlinkSync(documentationHTML); + } + + fs.mkdirSync(exampleFolder); + fs.mkdirSync(imagesFolder); +} + +async function getContent(): Promise { + let docs: string[] = [ + "https://api.github.com/repos/mjmlio/mjml/contents/doc/guide.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/getting_started.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/basic.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/components.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/head_components.md", + "mjml-head-attributes/README.md", + "mjml-head-breakpoint/README.md", + "mjml-head-font/README.md", + "mjml-head-preview/README.md", + "mjml-head-style/README.md", + "mjml-head-title/README.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/body_components.md", + "mjml-accordion/README.md", + "mjml-body/README.md", + "mjml-button/README.md", + "mjml-carousel/README.md", + "mjml-column/README.md", + "mjml-divider/README.md", + "mjml-group/README.md", + "mjml-hero/README.md", + "mjml-image/README.md", + "mjml-navbar/README.md", + "mjml-raw/README.md", + "mjml-section/README.md", + "mjml-social/README.md", + "mjml-spacer/README.md", + "mjml-table/README.md", + "mjml-text/README.md", + "mjml-wrapper/README.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/community-components.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/mjml-chart.md", + "https://api.github.com/repos/mjmlio/mjml/contents/doc/create.md" + ]; + + let content: string = ""; + + for (let i in docs) { + if (docs[i].indexOf("api.github.com") !== -1) { + content += await fetchFromGithub(docs[i]); + } + else { + let mdFile: string = path.join("../", "node_modules", docs[i]); + + if (mdFile && fs.existsSync(mdFile) && fs.statSync(mdFile).isFile()) { + content += fs.readFileSync(mdFile, "utf8"); + } + } + + content += "\n\n"; + } + + return await tryItLive( + await getImages( + content.replace(/---[\s\S]*?---/, "").replace(/^\s+|\s+$/g, "") + ) + ); +} + +async function getImages(content: string): Promise { + let imagePath: string[] = []; + let pattern: RegExp = /]*?src=("|')([^"']+)\1/g; + + let match: RegExpMatchArray; + while (match = pattern.exec(content)) { + if (imagePath.indexOf(match[2]) == -1) { + imagePath.push(match[2]); + + let res = await fetch(match[2]); + + await new Promise((resolve, reject) => { + const fileStream = fs.createWriteStream(`./images/${path.basename(match[2])}`); + + res.body.pipe(fileStream); + + res.body.on("error", (err) => { + reject(err); + }); + + fileStream.on("finish", () => { + resolve(); + }); + }); + } + } + + return content.replace(/src=['"]((?:[^"'\/]*\/)*([^'"]+))['"]/gi, "src=\"{{root}}/images/$2\""); +} + +async function getStyle(): Promise { + let css: string = ""; + let previewStyles: string[] = [ + "https://api.github.com/repos/Microsoft/vscode/contents/extensions/markdown-language-features/media/markdown.css", + "https://api.github.com/repos/Microsoft/vscode/contents/extensions/markdown-language-features/media/highlight.css" + ]; + + for (let i in previewStyles) { + css += await fetchFromGithub(previewStyles[i]); + } + + return css.replace(/\/\*(?:(?!\*\/)[\s\S])*\*\/|[\r\n\t]+/g, "").replace(/ {2,}/g, " ").replace(/ ([{:}]) /g, "$1").replace(/([;,]) /g, "$1").replace(/ !/g, "!"); +} + +async function fetchFromGithub(url: string): Promise { + let response = await fetch(`${url}?access_token=${githubAccessToken}`); + let json = await response.json(); + + if (json.content && json.encoding == "base64") { + return new Buffer(json.content, "base64").toString(); + } + + return ""; +} + +async function tryItLive(html: string): Promise { + let tryItLive: string[] = []; + + html = html.replace(/href=\"\/try-it-live\//gi, "href=\"https:\/\/mjml.io/try-it-live/"); + + let match; + while (match = /]*?href\s*=\s*['"](https?:\/\/mjml\.io\/try-it-live\/([^"']*?))['"][^>]*?>/gi.exec(html)) { + let fileName: string = match[2].replace(/\//g, "-"); + + if (tryItLive.indexOf(match[2]) == -1) { + let response = await fetch(match[1]); + + let mjmlMatch = /"value":*?["']([\s\S]*?)["']*?}/gi.exec(await response.text()); + + mjmlMatch[1].replace(/\\"/g, "\"").replace(/src="\/(assets\/img)\/(.*?)"/gi, "src=\"https://mjml.io/assets/img/$2\"").split("\\n").forEach((line) => { + fs.appendFileSync(`./examples/${fileName}.mjml`, line.replace(/\\/g, "").toString() + "\n"); + }); + + tryItLive.push(match[2]); + } + + html = html.replace(`href="${match[1]}"`, `href="javascript:void(0)" onclick="openExample('${fileName}')" title="${fileName.replace(/components-/gi, "")}"`); + } + + return html; +} + +run(); \ No newline at end of file diff --git a/documentation/tsconfig.json b/documentation/tsconfig.json new file mode 100644 index 0000000..40d390c --- /dev/null +++ b/documentation/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "lib": [ + "es6" + ], + "sourceMap": true + }, + "exclude": [ + "node_modules", + "src" + ] +} \ No newline at end of file diff --git a/language-configuration.json b/language-configuration.json new file mode 100644 index 0000000..aa25710 --- /dev/null +++ b/language-configuration.json @@ -0,0 +1,30 @@ +{ + "comments": { + // symbol used for single line comment. Remove this entry if your language does not support line comments + "lineComment": "//", + // symbols used for start and end a block comment. Remove this entry if your language does not support block comments + "blockComment": [ "/*", "*/" ] + }, + // symbols used as brackets + "brackets": [ + ["{", "}"], + ["[", "]"], + ["(", ")"] + ], + // symbols that are auto closed when typing + "autoClosingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ], + // symbols that that can be used to surround a selection + "surroundingPairs": [ + ["{", "}"], + ["[", "]"], + ["(", ")"], + ["\"", "\""], + ["'", "'"] + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f73c399..909b067 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,17 @@ { "name": "vscode-mjml", - "version": "1.4.0", + "version": "1.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@types/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-0QEFiR8ljcHp9bAbWxecjVRuAMr16ivPiGOw6KFQBVrVd0RQIcM3xKdRisH2EDWgVWujiYtHwhSkSUoAAGzH7Q==", + "requires": { + "commander": "2.18.0" + } + }, "@types/copy-paste": { "version": "1.1.30", "resolved": "https://registry.npmjs.org/@types/copy-paste/-/copy-paste-1.1.30.tgz", @@ -35,19 +43,19 @@ "dev": true }, "@types/node": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", - "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==", + "version": "10.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.10.3.tgz", + "integrity": "sha512-dWk7F3b0m6uDLHero7tsnpAi9r2RGPQHGbb0/VCv7DPJRMFtk3RonY1/29vfJKnheRMBa7+uF+vunlg/mBGlxg==", "dev": true }, "@types/nodemailer": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.2.tgz", - "integrity": "sha512-FZfU5OewHnzPU1YC2XrpIhKDl3A4Aw6BvaOo6d/XeVk43JJ6qzptdo6BZAdMRCtmTqKlUSVmLTMYFgvsU99sug==", + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-4.6.5.tgz", + "integrity": "sha512-cbs2HFLj33TBqzcCqTrs+6/mgTX3xl0odbApv3vTdF2+JERLxh5rDZCasXhvy+YqaiUNBr2I1RjNCdbKGs1Bnw==", "dev": true, "requires": { "@types/events": "1.2.0", - "@types/node": "10.5.2" + "@types/node": "10.10.3" } }, "@types/npm": { @@ -56,9 +64,14 @@ "integrity": "sha512-McqGDdeT1tSMu8sPaL0ya7xBwojQYKGVwCrlPNBcaF+o+H4wLNH03nYRTfycU11Xdu8eziEb4cgdGmu4VF/NWA==", "dev": true, "requires": { - "@types/node": "10.5.2" + "@types/node": "10.10.3" } }, + "@types/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, "ab-webshot": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ab-webshot/-/ab-webshot-1.0.0.tgz", @@ -137,6 +150,15 @@ "normalize-path": "2.1.1" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -151,10 +173,9 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-differ": { "version": "1.0.0", @@ -195,15 +216,23 @@ "dev": true }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "2.1.2" + } }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, "ast-types": { "version": "0.11.5", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", @@ -214,7 +243,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "lodash": "4.17.10" + "lodash": "4.17.11" } }, "async-each": { @@ -227,15 +256,20 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "babel-runtime": { "version": "6.26.0", @@ -251,6 +285,66 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -266,9 +360,9 @@ "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==" }, "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" }, "block-stream": { "version": "0.0.9", @@ -280,9 +374,9 @@ } }, "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==" }, "boolbase": { "version": "1.0.0", @@ -305,7 +399,7 @@ "requires": { "expand-range": "1.8.2", "preserve": "0.2.0", - "repeat-element": "1.1.2" + "repeat-element": "1.1.3" } }, "browser-stdout": { @@ -321,9 +415,9 @@ "dev": true }, "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "builtin-modules": { "version": "1.1.1", @@ -335,6 +429,29 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "camel-case": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", @@ -356,7 +473,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "2.2.1", @@ -401,15 +518,41 @@ "is-binary-path": "1.0.1", "is-glob": "2.0.1", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "readdirp": "2.2.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } } }, "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", "requires": { - "source-map": "0.5.7" + "source-map": "0.6.1" } }, "cliui": { @@ -473,18 +616,27 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { "delayed-stream": "1.0.0" } }, "commander": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", - "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==" + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz", + "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==" }, "component-emitter": { "version": "1.2.1", @@ -502,38 +654,46 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "optional": true, "requires": { - "buffer-from": "1.1.0", + "buffer-from": "1.1.1", "inherits": "2.0.3", "readable-stream": "2.3.6", "typedarray": "0.0.6" } }, "config-chain": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", - "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "requires": { "ini": "1.3.5", "proto-list": "1.2.4" } }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, "copy-paste": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", "integrity": "sha1-p+bEocKP3t8rCB5yuX3y75X0ce0=", "requires": { - "iconv-lite": "0.4.23", + "iconv-lite": "0.4.24", "sync-exec": "0.6.2" } }, @@ -561,9 +721,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.4", + "nice-try": "1.0.5", "path-key": "2.0.1", - "semver": "5.5.0", + "semver": "5.5.1", "shebang-command": "1.2.0", "which": "1.3.1" } @@ -604,7 +764,7 @@ "requires": { "image-size": "0.6.3", "mimer": "0.3.2", - "semver": "5.5.0" + "semver": "5.5.1" } }, "debug": { @@ -620,6 +780,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, "deep-assign": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", @@ -639,13 +804,60 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "degenerator": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "requires": { "ast-types": "0.11.5", - "escodegen": "1.10.0", + "escodegen": "1.11.0", "esprima": "3.1.3" } }, @@ -705,7 +917,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -722,23 +934,25 @@ } }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "editorconfig": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", - "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.0.tgz", + "integrity": "sha512-j7JBoj/bpNzvoTQylfRZSc85MlLNKWQiq5y6gwKhmqD2h1eZ+tH4AXbkhEJD468gjDna/XMx2YtSkCxBRX9OGg==", "requires": { - "bluebird": "3.5.1", - "commander": "2.16.0", - "lru-cache": "3.2.0", - "semver": "5.5.0", + "@types/commander": "2.12.2", + "@types/semver": "5.5.0", + "commander": "2.18.0", + "lru-cache": "4.1.3", + "semver": "5.5.1", "sigmund": "1.0.1" } }, @@ -765,16 +979,16 @@ } }, "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.4" + "es6-promise": "4.2.5" } }, "escape-string-regexp": { @@ -783,23 +997,15 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz", - "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", "requires": { "esprima": "3.1.3", "estraverse": "4.2.0", "esutils": "2.0.2", "optionator": "0.8.2", "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - } } }, "esprima": { @@ -818,17 +1024,18 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "event-stream": { - "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", + "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", "dev": true, "requires": { "duplexer": "0.1.1", + "flatmap-stream": "0.1.0", "from": "0.1.7", - "map-stream": "0.1.0", + "map-stream": "0.0.7", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", + "split": "1.0.1", + "stream-combiner": "0.2.2", "through": "2.3.8" } }, @@ -855,15 +1062,6 @@ "shebang-command": "1.2.0", "which": "1.3.1" } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } } } }, @@ -884,24 +1082,26 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "kind-of": "1.1.0" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } } } }, @@ -975,8 +1175,8 @@ "requires": { "is-number": "2.1.0", "isobject": "2.1.0", - "randomatic": "3.0.0", - "repeat-element": "1.1.2", + "randomatic": "3.1.0", + "repeat-element": "1.1.3", "repeat-string": "1.6.1" } }, @@ -994,6 +1194,12 @@ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", "dev": true }, + "flatmap-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", + "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1019,7 +1225,17 @@ "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "2.1.20" + }, + "dependencies": { + "combined-stream": { + "version": "1.0.6", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + } } }, "formidable": { @@ -1027,6 +1243,14 @@ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "0.2.2" + } + }, "from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -1077,7 +1301,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { "core-util-is": "1.0.2", @@ -1110,12 +1334,17 @@ "requires": { "data-uri-to-buffer": "1.2.0", "debug": "2.6.9", - "extend": "3.0.1", + "extend": "3.0.2", "file-uri-to-path": "1.0.0", "ftp": "0.3.10", "readable-stream": "2.3.6" } }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -1125,9 +1354,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -1160,7 +1389,7 @@ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "dev": true, "requires": { - "extend": "3.0.1", + "extend": "3.0.2", "glob": "5.0.15", "glob-parent": "3.1.0", "micromatch": "2.3.11", @@ -1216,7 +1445,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -1295,7 +1524,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -1329,17 +1558,17 @@ "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==", "dev": true, "requires": { - "event-stream": "3.3.4", + "event-stream": "3.3.6", "node.extend": "1.1.6", - "request": "2.87.0", + "request": "2.88.0", "through2": "2.0.3", "vinyl": "2.2.0" }, "dependencies": { "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-stats": { @@ -1354,7 +1583,7 @@ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "2.1.1", + "clone": "2.1.2", "clone-buffer": "1.0.0", "clone-stats": "1.0.0", "cloneable-readable": "1.1.2", @@ -1370,7 +1599,7 @@ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "dev": true, "requires": { - "convert-source-map": "1.5.1", + "convert-source-map": "1.6.0", "graceful-fs": "4.1.11", "strip-bom": "2.0.0", "through2": "2.0.3", @@ -1417,7 +1646,7 @@ "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=", "dev": true, "requires": { - "event-stream": "3.3.4", + "event-stream": "3.3.6", "mkdirp": "0.5.1", "queue": "3.1.0", "vinyl-fs": "2.4.4" @@ -1429,7 +1658,7 @@ "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", "dev": true, "requires": { - "event-stream": "3.3.4", + "event-stream": "3.3.6", "streamifier": "0.1.1", "tar": "2.2.1", "through2": "2.0.3", @@ -1467,8 +1696,8 @@ "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=", "dev": true, "requires": { - "event-stream": "3.3.4", - "queue": "4.4.2", + "event-stream": "3.3.6", + "queue": "4.5.0", "through2": "2.0.3", "vinyl": "2.2.0", "vinyl-fs": "2.4.4", @@ -1477,9 +1706,9 @@ }, "dependencies": { "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-stats": { @@ -1489,9 +1718,9 @@ "dev": true }, "queue": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", - "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.0.tgz", + "integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==", "dev": true, "requires": { "inherits": "2.0.3" @@ -1503,7 +1732,7 @@ "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "2.1.1", + "clone": "2.1.2", "clone-buffer": "1.0.0", "clone-stats": "1.0.0", "cloneable-readable": "1.1.2", @@ -1519,9 +1748,9 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "requires": { "ajv": "5.5.2", "har-schema": "2.0.0" @@ -1541,6 +1770,60 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "hasha": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", @@ -1556,23 +1839,36 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "dev": true + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, "html-minifier": { - "version": "3.5.19", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.19.tgz", - "integrity": "sha512-Qr2JC9nsjK8oCrEmuB430ZIA8YWbF3D5LSjywD75FTuXmeqacwHgIM8wp3vHYzzPbklSjp53RdmDuzR4ub2HzA==", + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz", + "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==", "requires": { "camel-case": "3.0.0", - "clean-css": "4.1.11", - "commander": "2.16.0", + "clean-css": "4.2.1", + "commander": "2.17.1", "he": "1.1.1", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.4.4" + "uglify-js": "3.4.9" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + } } }, "htmlparser2": { @@ -1590,7 +1886,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { "depd": "1.1.2", @@ -1634,23 +1930,28 @@ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "requires": { "agent-base": "4.2.1", - "debug": "3.1.0" + "debug": "3.2.5" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.0.0" + "ms": "2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { "safer-buffer": "2.1.2" } @@ -1695,6 +1996,14 @@ "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=", "dev": true }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -1705,7 +2014,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "1.12.0" } }, "is-buffer": { @@ -1715,12 +2024,37 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { "builtin-modules": "1.1.1" } }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -1770,10 +2104,25 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -1840,14 +2189,14 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-beautify": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz", - "integrity": "sha512-9OhfAqGOrD7hoQBLJMTA+BKuKmoEtTJXzZ7WDF/9gvjtey1koVLuZqIY6c51aPDjbNdNtIXAkiWKVhziawE9Og==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.8.6.tgz", + "integrity": "sha512-TYDZa+lg8vEC5U0OmGQEEwiZ0XFBfvZAUeNOtqflLe+woKuIqF4JzlsBx/C1KVYW5lUewZy2ODL4Obq6sH7a4Q==", "requires": { - "config-chain": "1.1.11", - "editorconfig": "0.13.3", + "config-chain": "1.1.12", + "editorconfig": "0.15.0", "mkdirp": "0.5.1", - "nopt": "3.0.6" + "nopt": "4.0.1" } }, "js-tokens": { @@ -1895,7 +2244,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "optional": true, "requires": { @@ -1920,12 +2269,12 @@ } }, "juice": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/juice/-/juice-4.3.1.tgz", - "integrity": "sha512-UO2AOpOu3faWOCd8uylBsGDxwTsl5i0VMG4WMua90pxVJW4/zFdlIDDgnPvE0FHgRw4fkUW5RtcWJ3dbjDcINw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/juice/-/juice-4.3.2.tgz", + "integrity": "sha512-3Qym/RnFoCGa9qrDz6xn4zRnohgI6G87xKWZV+/seF3dYpaVqNS1HijsDef+elGhytRY79RIboOzk0hucLtx6g==", "requires": { "cheerio": "0.22.0", - "commander": "2.16.0", + "commander": "2.18.0", "cross-spawn": "5.1.0", "deep-extend": "0.5.1", "mensch": "0.3.3", @@ -1942,15 +2291,6 @@ "shebang-command": "1.2.0", "which": "1.3.1" } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } } } }, @@ -2003,9 +2343,18 @@ "type-check": "0.3.2" } }, + "linkify-it": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", + "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "dev": true, + "requires": { + "uc.micro": "1.0.5" + } + }, "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "4.1.11", @@ -2024,9 +2373,9 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "lodash.assignin": { "version": "4.2.0", @@ -2113,17 +2462,50 @@ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" }, "lru-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "requires": { - "pseudomap": "1.0.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "1.0.1" + } + }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "entities": "1.1.1", + "linkify-it": "2.0.3", + "mdurl": "1.0.1", + "uc.micro": "1.0.5" + } + }, + "markdown-it-anchor": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.0.2.tgz", + "integrity": "sha512-AFM/woBI8QDJMS/9+MmsBMT5/AR+ImfOsunQZTZhzcTmna3rIzAzbOh5E0l6mlFM/i9666BpUtkqQ9bS7WApCg==", "dev": true }, "math-random": { @@ -2131,6 +2513,12 @@ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -2184,16 +2572,16 @@ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "requires": { - "mime-db": "1.33.0" + "mime-db": "1.36.0" } }, "mimer": { @@ -2216,355 +2604,374 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mjml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml/-/mjml-4.1.0.tgz", - "integrity": "sha512-dxp5kwBfP5xocBeX62E4LIUHpCv4FfhGLXORgqf+89uLCZz+C5g2kiqZfkVG16TWsEXQ5YQSEGQwWEIJ6fnn3w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml/-/mjml-4.1.2.tgz", + "integrity": "sha512-GgDa7fIG2JLsvvRX5DjtpkYOYfai+3f3b8LImjAhFHz8aRtaUR4VH6zWgzIozILeEfbZ1kBj2Gl6uBIbA/itqg==", "requires": { "cross-env": "5.2.0", - "mjml-accordion": "4.1.0", - "mjml-body": "4.1.0", - "mjml-button": "4.1.0", - "mjml-carousel": "4.1.0", - "mjml-cli": "4.1.0", - "mjml-column": "4.1.0", - "mjml-core": "4.1.0", - "mjml-divider": "4.1.0", - "mjml-group": "4.1.0", - "mjml-head": "4.1.0", - "mjml-head-attributes": "4.1.0", - "mjml-head-breakpoint": "4.1.0", - "mjml-head-font": "4.1.0", - "mjml-head-preview": "4.1.0", - "mjml-head-style": "4.1.0", - "mjml-head-title": "4.1.0", - "mjml-hero": "4.1.0", - "mjml-image": "4.1.0", - "mjml-migrate": "4.1.0", - "mjml-navbar": "4.1.0", - "mjml-raw": "4.1.0", - "mjml-section": "4.1.0", - "mjml-social": "4.1.0", - "mjml-spacer": "4.1.0", - "mjml-table": "4.1.0", - "mjml-text": "4.1.0", - "mjml-validator": "4.1.0", - "mjml-wrapper": "4.1.0" + "mjml-accordion": "4.1.2", + "mjml-body": "4.1.2", + "mjml-button": "4.1.2", + "mjml-carousel": "4.1.2", + "mjml-cli": "4.1.2", + "mjml-column": "4.1.2", + "mjml-core": "4.1.2", + "mjml-divider": "4.1.2", + "mjml-group": "4.1.2", + "mjml-head": "4.1.2", + "mjml-head-attributes": "4.1.2", + "mjml-head-breakpoint": "4.1.2", + "mjml-head-font": "4.1.2", + "mjml-head-preview": "4.1.2", + "mjml-head-style": "4.1.2", + "mjml-head-title": "4.1.2", + "mjml-hero": "4.1.2", + "mjml-image": "4.1.2", + "mjml-migrate": "4.1.2", + "mjml-navbar": "4.1.2", + "mjml-raw": "4.1.2", + "mjml-section": "4.1.2", + "mjml-social": "4.1.2", + "mjml-spacer": "4.1.2", + "mjml-table": "4.1.2", + "mjml-text": "4.1.2", + "mjml-validator": "4.1.2", + "mjml-wrapper": "4.1.2" } }, "mjml-accordion": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-accordion/-/mjml-accordion-4.1.0.tgz", - "integrity": "sha512-oA0q6824/6iBlgd0jADg/z6DbNeHD1NsMIoOM9g9EwXUKOSGdQ3IjFGgXZe5FCVhBajnkuEHqUs4WkMXdHpyWQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-accordion/-/mjml-accordion-4.1.2.tgz", + "integrity": "sha512-0KKqftPALfJVLS3e4+3GVYg6r0KuY+h3oHbQ/uzh4by8pQ9yPOeYfSukeLwFv/IwdAOJon6jfNe13CdCB+3UeA==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-body": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-body/-/mjml-body-4.1.0.tgz", - "integrity": "sha512-LtVzMSuybStJBXCopAarRDTRSp0E4libsuVLV8lGvz6e/3g+fniIrQxfQIYbH0MnBYVtQ9IASCMOFZFtkmDY6w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-body/-/mjml-body-4.1.2.tgz", + "integrity": "sha512-tfo39payfK1nMeUzdNoH76QponI52Aqsniq4skqIHSgpjtcGt9Q4PJCpaH/xIZmHJbH/lbootqgoNwCS1MmDyA==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-button": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-button/-/mjml-button-4.1.0.tgz", - "integrity": "sha512-RKQtbXXm2c6CAeVgmc+sKj3WGMlw0wZvRpyJUzfjulS2njH8Or1re8QO+BKoIGx98fRpiT83nZzFbQKw62wRVQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-button/-/mjml-button-4.1.2.tgz", + "integrity": "sha512-UvF08l3eWpL6nf4ywpFtLpu0N2QRMKfAampn/W1LPa3ezolDrLBfr5g86SDoCfyZiPJPv31FF9wDv9PwB32hHw==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-carousel": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-carousel/-/mjml-carousel-4.1.0.tgz", - "integrity": "sha512-iAbs2ueb8DOf+IEL4uQM3bgczh91ccY3CAbRRxxvAgyXKESlBAB8sjz0oDwIMMrSmXgWmIkNXoA1Td+e9beK+w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-carousel/-/mjml-carousel-4.1.2.tgz", + "integrity": "sha512-/m5CGcWYLh0u6q/fafOCn6xiISBt3N5Y+wle14jxGTZCB8M3+6wW4jpaMJQLHxqd16FFV1T6mRCbrJvcg1XaJg==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-cli": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-cli/-/mjml-cli-4.1.0.tgz", - "integrity": "sha512-qV3aczK+vVE/ap0VChYyiFGFl0Ktd9E1Q3Y7xyZHRgpyvTjdjU38sj7Bm24KikujCb1714SxErYtClbQd1bbSw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-cli/-/mjml-cli-4.1.2.tgz", + "integrity": "sha512-wlUBKW+CdKEHuGdMv3cbhBnvStESxyQJWJcyD0r/Ql6r9gueus5EdMwMqKxYJz+hQuxBtRUB7MPwYM6fW3tERQ==", "requires": { "babel-runtime": "6.26.0", "chokidar": "1.7.0", "cross-env": "5.2.0", - "glob": "7.1.2", - "js-beautify": "1.7.5", - "lodash": "4.17.10", - "mjml-core": "4.1.0", - "mjml-migrate": "4.1.0", - "mjml-parser-xml": "4.1.0", - "mjml-validator": "4.1.0", + "glob": "7.1.3", + "js-beautify": "1.8.6", + "lodash": "4.17.11", + "mjml-core": "4.1.2", + "mjml-migrate": "4.1.2", + "mjml-parser-xml": "4.1.2", + "mjml-validator": "4.1.2", "yargs": "8.0.2" } }, "mjml-column": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-column/-/mjml-column-4.1.0.tgz", - "integrity": "sha512-FTN9jNsywgXocmAqoCmlCKjnFfwQM/z61iq8DslYZ3CfCfgzanoM0hSQTIQZDlDRGwej1a7CdUpws++YO6AToQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-column/-/mjml-column-4.1.2.tgz", + "integrity": "sha512-KD++3EP9TNT78HHVPYOFnMak/tq0phzNTfqvEiDV5YWd2A7COao9AqroI4v9D5obOaSLhT/Tag6+YoK7iIrg+g==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-core/-/mjml-core-4.1.0.tgz", - "integrity": "sha512-YCzqMPKAYdW497M1QC7LOPRdoYhEJ246jC1urICVxB/PYtVj1NuDcvYHuWRozcMYohGlBX6ViPSvbUaz5amOjw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-core/-/mjml-core-4.1.2.tgz", + "integrity": "sha512-AQLUeKxY6HT7jnC6CXxkSypiTll4d3Ya2R6yd1snWZJAIbBWf1ONMItIxxzXnvfJZKnuibmQBKCCwfpQG4UE2A==", "requires": { "cross-env": "5.2.0", - "html-minifier": "3.5.19", - "js-beautify": "1.7.5", - "juice": "4.3.1", - "lodash": "4.17.10", - "mjml-migrate": "4.1.0", - "mjml-parser-xml": "4.1.0", - "mjml-validator": "4.1.0" + "html-minifier": "3.5.20", + "js-beautify": "1.8.6", + "juice": "4.3.2", + "lodash": "4.17.11", + "mjml-migrate": "4.1.2", + "mjml-parser-xml": "4.1.2", + "mjml-validator": "4.1.2" } }, "mjml-divider": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-divider/-/mjml-divider-4.1.0.tgz", - "integrity": "sha512-dP0ifY7j9ZX+VF48kBGX4JC1Y/YFChCjFbKlfQCTB0zjPzIk2mO27EiE/s99GamaqO7qcT+SE/X5DcA2JMbGnw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-divider/-/mjml-divider-4.1.2.tgz", + "integrity": "sha512-kxBMftHNfqzHZvq7ElISsPK4w2TMdZsAvfEFWdSNlwWfHByNpw7ojDivbOlMdKkZ3w21UYVI23CH6nczf16GCw==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-group": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-group/-/mjml-group-4.1.0.tgz", - "integrity": "sha512-PjxySJ16Qs0sjOkTNLNgIWW/GD9JhGvnls/7+PQRJIvXrC6acV4tFH2zjothI9oHvpvlU1H6BAbL910axqdaSA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-group/-/mjml-group-4.1.2.tgz", + "integrity": "sha512-Oupu9CTECxyFPjf2JLuKWKZHVLUNst4Er3PHFf/fqaGvXsLUptg8WFIzQhZhwJ2Dp14D5ERg4m5tImzoC2D9OA==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head/-/mjml-head-4.1.0.tgz", - "integrity": "sha512-OUp117MizIrPjzptkX0/476VF0HzaY7IKrV/cDDtPAg5CIOATyfHjPbXBpRdrXTw+Zy8f78JMKjuPXLwDsztaA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head/-/mjml-head-4.1.2.tgz", + "integrity": "sha512-SMv6LUXLESY1KqRz0HgWyr3hHAHdE+qDOxDo1YLJQFZRxLJTBE9j/OFVJRsb1kDGj2ijz63NuSsgT+gusj1Uig==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head-attributes": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head-attributes/-/mjml-head-attributes-4.1.0.tgz", - "integrity": "sha512-LnY4XDUX7X9mKgiV2CLWALj+IfSxG9gkHxyLhpFS1GoAWwNItIl9AlBYvICZ1eM5UyqEvmEnrOuIyiy6wQHt3w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head-attributes/-/mjml-head-attributes-4.1.2.tgz", + "integrity": "sha512-WnVlfXzboq+RK/aP8c9wVGbewMkoehT5G2TYXrWTNwn5bQmgWxVsTQ5/hSr11VO99DdOv2N+gvqkktxC8pv2qA==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head-breakpoint": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head-breakpoint/-/mjml-head-breakpoint-4.1.0.tgz", - "integrity": "sha512-l/YI9RAuEdApm8/Gdd93mj0abaHB+9qf4OQsiz0Oi9360Iu6Wi5cNPn1rx1iKkbEUuIfsBY9ZmqsN0CNmYhybg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head-breakpoint/-/mjml-head-breakpoint-4.1.2.tgz", + "integrity": "sha512-PdR4L3mn8bSYg20vi5QP/Wv3VahltQJmzsvfohf3XQ7Sl+evsEgVMdSKSXpWUzatHG/j1o8Q8I9WhM8y5IWsGQ==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head-font": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head-font/-/mjml-head-font-4.1.0.tgz", - "integrity": "sha512-44qRcA7IDLkC4WvN5q7UfKiq1PCyHqa0pTLG8SYJdJjh19coKRspqg2nKFrcojCg+g4vT93C2K7+q7egb5mtLw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head-font/-/mjml-head-font-4.1.2.tgz", + "integrity": "sha512-JH8DPkAiI5C3jOus/xAWHkY40JUJqghuU3CDLeyNvtvjSEgqtp9UshUNacPXmd1ghLhgbK2e6g8ZyDdtuJ29jQ==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head-preview": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head-preview/-/mjml-head-preview-4.1.0.tgz", - "integrity": "sha512-peanYXKzC8u7Yy01nJPFLkOrtasLYo9H+8DrzoeYDXPUN6+LCH5VGDWn88Dve2g6vhCAjeEsLEeToWUbUZBpLQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head-preview/-/mjml-head-preview-4.1.2.tgz", + "integrity": "sha512-IwHJm9rgRothRoi2BJ0Sa+LiYVrVoYutJnrNg7OHqousjAlqj2HRMQ8NBuI7WvUmV8z4TWrbznB5jfhiIIdDHw==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head-style": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head-style/-/mjml-head-style-4.1.0.tgz", - "integrity": "sha512-OMRXT9fkZVqu79bbZvw1fi5swP+kJtbWjXIqIfUoOQO5+jp9RFRbMvjkPOeFFZZHlFghcM0xm3l4xXs26KN6zg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head-style/-/mjml-head-style-4.1.2.tgz", + "integrity": "sha512-+bFcJ/PlrPbzlLkwJgXtFchFfhbqIxAYQVSauaYOFLaWpDJbr48zm/RGpij9sDZxHl6OvZawcex0FWHDxDb7Vw==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-head-title": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-head-title/-/mjml-head-title-4.1.0.tgz", - "integrity": "sha512-jSO0l3mDKN6rpruFKaYMEWPFRG3ygbivmUOV+vBRQVN3e1w4nopXNNzC0hrk1Z7ttqSPi4B3j+TfaVTJQ+pf/g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-head-title/-/mjml-head-title-4.1.2.tgz", + "integrity": "sha512-wB2Lw9BbgoRBftYdzXbt9xqJi0xN7V3nxZ0+UG0TZsF7JxfWPyCN6RsPoNxK/bH47lwQ2DqWiMUEstZRmP9v3Q==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-hero": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-hero/-/mjml-hero-4.1.0.tgz", - "integrity": "sha512-EeTBeQBsAmMAFuhO/mDdcVVuPWWK9mTzzPa6YKrzreIkDSQ8g1jLiqJxoD8A36K/C27lpCRDkAAtFjDvpeVipQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-hero/-/mjml-hero-4.1.2.tgz", + "integrity": "sha512-xWm0nz7wBUfsyhQVrj+9dL51RrCFS4Xj13Y3xH6EMl0QLDfBE2PXpA8cuBfHNwtGhkE7cO6rhww6HMmEHLrEMg==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-image": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-image/-/mjml-image-4.1.0.tgz", - "integrity": "sha512-V3GpYFWoaPqmyJrNRIdaqR0uHRe6U/dpASth/cG8pPZsYQJivhCOrujc84OLJeHQUqrtsmL78CYE6TmHYtOaCA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-image/-/mjml-image-4.1.2.tgz", + "integrity": "sha512-ocPeH553cyBgvViKz6raxRMZedhEmC67SQE+AVI7RGtZh35eJwZfnRm/8NhQiJBQLHnQC9+yxKIs46YtZYU2rg==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-migrate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-migrate/-/mjml-migrate-4.1.0.tgz", - "integrity": "sha512-92w9S7z2GwLa7zHvllQTAzRX6RN5vziXt5o/xC1rJnMEV++wWtlhifjS5maiLpzZdHdgvA1aTa/ejETWmQxjSQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-migrate/-/mjml-migrate-4.1.2.tgz", + "integrity": "sha512-GiGXXm1hnbOAEqCdjM1ckhF8wSRyVoQiSIni4/K474lKjopBKg7wP5sg79gjKvcWSRJQn1MmWHq4YFG1aQFboQ==", "requires": { - "commander": "2.16.0", + "commander": "2.18.0", "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0", - "mjml-parser-xml": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2", + "mjml-parser-xml": "4.1.2" } }, "mjml-navbar": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-navbar/-/mjml-navbar-4.1.0.tgz", - "integrity": "sha512-mB+ZgHfufaUGn1vx9rPmeHho3P4UDQPKWj47PLffFATEoKowZwlcezkU81wcrS5DPXym6pqa4eBewYe16nQirg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-navbar/-/mjml-navbar-4.1.2.tgz", + "integrity": "sha512-oCpg9xiXJmtWyducIZNJNHqfnV6A/0glcL6Icw5llwmwu0/4+FA3gPQbqmBYDZ1oAT98ihN+5Y8NSt7NVWBWfg==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-parser-xml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-parser-xml/-/mjml-parser-xml-4.1.0.tgz", - "integrity": "sha512-tIrx5SsYD/Xlld2P+8XeiPIbUrhp5COIRXCzERVmTpIiOzWsCylq9JNgWuEtCKdyJpjmmVwWYLJbRXBfC6mtyw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-parser-xml/-/mjml-parser-xml-4.1.2.tgz", + "integrity": "sha512-rFbchrnHEFzaiuLXx/4x3heaDk047rhhgm7SVcjir3BxwXGd5QcclLhV8MOvZRXR2WMw/BJgf/pmBqZAm448zA==", "requires": { "cross-env": "5.2.0", "htmlparser2": "3.9.2", - "lodash": "4.17.10" + "lodash": "4.17.11" } }, "mjml-raw": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-raw/-/mjml-raw-4.1.0.tgz", - "integrity": "sha512-5OiH/7Mm5LDtIvzDJbn/4DK9WMzVl4SiEvy68/zHBHDyWQESnoLuSrQbl98iO2LcG7pTSZbtFWh1M6FXuANEzg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-raw/-/mjml-raw-4.1.2.tgz", + "integrity": "sha512-qXJq1hbCnFU/gOyk//WIuoGi6fAvAmfDbAoYuY1/AMEJ9mAKPw1CcTiHJDkxVWh2VXLqp9aEWEQavIvFx+wQyQ==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-section": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-section/-/mjml-section-4.1.0.tgz", - "integrity": "sha512-+OhCU6uEtJSJrqn5AfEDq5gH5ryk5S1gmbPy9OkWQLz1IyuTyeK6xkd4reNFNCb26z4Y+Sq81tC+6JILLYH/SQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-section/-/mjml-section-4.1.2.tgz", + "integrity": "sha512-kFtt8loDYIlLJV0onXr2vvIDDGhOlfDSzoWkgPTJ2RXs2l0rLQydVHYL2Y/g0OqZNGQb8JSROwRpgk/iyAPXOQ==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-social": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-social/-/mjml-social-4.1.0.tgz", - "integrity": "sha512-hUdoJRtIbFZ7zYjdWlm6PQiwlCS3QhLdQ5uCKw7WD+VIsiZnmVSUe5jz+HbKfrkXwkgAv+boyGGom1YR60WIvQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-social/-/mjml-social-4.1.2.tgz", + "integrity": "sha512-vhu7CdC6k+JFhtKJ90kN7tnCwcqA+0zyZuG+AQ6xzDGoOgUaIL0yDCzRILXjbI1S0e+QqY/BOdupodLhi7dotQ==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-spacer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-spacer/-/mjml-spacer-4.1.0.tgz", - "integrity": "sha512-5qq2qTd8lp8kewaXr54sV1wxRgAKOzCWvcbSewZySAuUBBg3sgMDmwiBXA7fnY7b/X1I4HuEgmSXwZYJWpjLpg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-spacer/-/mjml-spacer-4.1.2.tgz", + "integrity": "sha512-Ib9Di34WKkaoi3y8vVvj7u5/cOr9KBAW9r+JpurXy3wWkSVJM3W++c/PaBekPuQLLKXtDoDNTDyKxadn6DnlwA==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-table": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-table/-/mjml-table-4.1.0.tgz", - "integrity": "sha512-CdqwuNUll2h5/d5UWmibK+co/6Rbc5mTdTMbQYG3bkQZzYn9wJsBSsOvzxDupGNqp9UXNN0O+YkQxIL7buSoqQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-table/-/mjml-table-4.1.2.tgz", + "integrity": "sha512-B63SZQSMSZIiae9mFggynMTZ72GC6VAFsJ92KaVqH635jp/NPXbAiro5rMMulhWgOfGEG+1/EW0AVKzLXA+zlQ==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-text": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-text/-/mjml-text-4.1.0.tgz", - "integrity": "sha512-7IEnL2xczRJifecxuiwYM+I0ZcRlywLvjepyzjMfwhezurnUUufWeL1Lm+7t+6/huru1emqfcIzofUTB/qGV1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-text/-/mjml-text-4.1.2.tgz", + "integrity": "sha512-4WafRLrVbeOILiBSuil5cHdthiDZZhOBREY9fvFRJzr3XFYMAxuaMsqjoodpmDUMbGKZ7VSzdreV5ypNp2FbCA==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2" } }, "mjml-validator": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-validator/-/mjml-validator-4.1.0.tgz", - "integrity": "sha512-Qtsx0ko69OdfOpUiYnUnWCH3w3yU5uC456oda0TuR+kF0G3EkTUgyNtg3n/JdEdLrKWLyYM5hDeh8Q1CE+2Cig==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-validator/-/mjml-validator-4.1.2.tgz", + "integrity": "sha512-i5vu3v+nHgd7m5fccQTTO2w4hHdBe5x1MQQUML0GJgO4W46x8DJ6sDjXrO7q3QITmp/18LqEd0tHQoXqATL7Ow==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0", + "lodash": "4.17.11", + "mjml-core": "4.1.2", "warning": "3.0.0" } }, "mjml-wrapper": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mjml-wrapper/-/mjml-wrapper-4.1.0.tgz", - "integrity": "sha512-iZ0XXjYMcpALuHz6RRh9ulmumvzcnkRAfxhICZOtIYDaCut90/QhXQNHcsArlr5vTB8zyTBMEL5DWy2y7BZxfw==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mjml-wrapper/-/mjml-wrapper-4.1.2.tgz", + "integrity": "sha512-BzCCmm/EGGlisWHy3nb13giJ2GZtw5dqUQjuV0HYWIITdDlTbZbmjHDbsRjHPHfgkTkKQIXw4y+ULfZyM7/buw==", "requires": { "cross-env": "5.2.0", - "lodash": "4.17.10", - "mjml-core": "4.1.0", - "mjml-section": "4.1.0" + "lodash": "4.17.11", + "mjml-core": "4.1.2", + "mjml-section": "4.1.2" } }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -2603,6 +3010,20 @@ "ms": "2.0.0" } }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, "supports-color": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", @@ -2631,15 +3052,50 @@ "minimatch": "3.0.4" } }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, "netmask": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" }, "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "no-case": { "version": "2.3.2", @@ -2650,16 +3106,16 @@ } }, "node-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", - "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz", + "integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA==" }, "node-mailjet": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-3.2.1.tgz", "integrity": "sha512-n8fO6NFdrttg2Ct6s266Jw7gFazqkC7e0FESHbvRfvTqam0nAF2yVkKKu1eRTXrVsBjTYmdCZ++ykyVYEO/Sxg==", "requires": { - "bluebird": "3.5.1", + "bluebird": "3.5.2", "json-bigint": "0.2.3", "qs": "6.5.2", "superagent": "3.8.3", @@ -2676,16 +3132,17 @@ } }, "nodemailer": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.6.7.tgz", - "integrity": "sha512-GIAAYvs9XIP1fBa8wR89ukUh3yjL44pom5LKY5nTZcL+Zp9sRkqL8wgskyBQECQg9CPsDX/fjTZx8MNz20t0jA==" + "version": "4.6.8", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.6.8.tgz", + "integrity": "sha512-A3s7EM/426OBIZbLHXq2KkgvmKbn2Xga4m4G+ZUA4IaZvG8PcZXrFh+2E4VaS2o+emhuUVRnzKN2YmpkXQ9qwA==" }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "normalize-package-data": { @@ -2695,8 +3152,8 @@ "requires": { "hosted-git-info": "2.7.1", "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "semver": "5.5.1", + "validate-npm-package-license": "3.0.4" } }, "normalize-path": { @@ -2708,11 +3165,11 @@ } }, "npm": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.2.0.tgz", - "integrity": "sha512-GnlNsOnxwVJX4WSfyQY0gY3LnUX2cc46XU0eu1g+WSuZgDRUGmw8tuptitJu6byp0RWGT8ZEAKajblwdhQHN8A==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.4.1.tgz", + "integrity": "sha512-mXJL1NTVU136PtuopXCUQaNWuHlXCTp4McwlSW8S9/Aj8OEPAlSBgo8og7kJ01MjCDrkmqFQTvN5tTEhBMhXQg==", "requires": { - "JSONStream": "1.3.3", + "JSONStream": "1.3.4", "abbrev": "1.1.1", "ansicolors": "0.3.2", "ansistyles": "0.1.3", @@ -2721,9 +3178,10 @@ "bin-links": "1.1.2", "bluebird": "3.5.1", "byte-size": "4.0.3", - "cacache": "11.0.2", + "cacache": "11.2.0", "call-limit": "1.1.0", "chownr": "1.0.1", + "ci-info": "1.4.0", "cli-columns": "3.1.2", "cli-table3": "0.5.0", "cmd-shim": "2.0.2", @@ -2734,7 +3192,7 @@ "detect-newline": "2.1.0", "dezalgo": "1.0.3", "editor": "1.0.0", - "figgy-pudding": "3.1.0", + "figgy-pudding": "3.4.1", "find-npm-prefix": "1.0.2", "fs-vacuum": "1.2.10", "fs-write-stream-atomic": "1.0.10", @@ -2742,8 +3200,8 @@ "glob": "7.1.2", "graceful-fs": "4.1.11", "has-unicode": "2.0.1", - "hosted-git-info": "2.6.0", - "iferr": "1.0.0", + "hosted-git-info": "2.7.1", + "iferr": "1.0.2", "imurmurhash": "0.1.4", "inflight": "1.0.6", "inherits": "2.0.3", @@ -2752,7 +3210,7 @@ "is-cidr": "2.0.6", "json-parse-better-errors": "1.0.2", "lazy-property": "1.0.0", - "libcipm": "2.0.0", + "libcipm": "2.0.2", "libnpmhook": "4.0.1", "libnpx": "10.2.0", "lock-verify": "2.0.2", @@ -2773,23 +3231,23 @@ "mississippi": "3.0.0", "mkdirp": "0.5.1", "move-concurrently": "1.0.1", - "node-gyp": "3.7.0", + "node-gyp": "3.8.0", "nopt": "4.0.1", "normalize-package-data": "2.4.0", "npm-audit-report": "1.3.1", "npm-cache-filename": "1.0.2", "npm-install-checks": "3.0.0", - "npm-lifecycle": "2.0.3", + "npm-lifecycle": "2.1.0", "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", + "npm-packlist": "1.1.11", "npm-pick-manifest": "2.1.0", "npm-profile": "3.0.2", - "npm-registry-client": "8.5.1", + "npm-registry-client": "8.6.0", "npm-registry-fetch": "1.1.0", "npm-user-validate": "1.0.0", "npmlog": "4.1.2", "once": "1.4.0", - "opener": "1.4.3", + "opener": "1.5.0", "osenv": "0.1.5", "pacote": "8.1.6", "path-is-inside": "1.0.2", @@ -2804,7 +3262,7 @@ "read-package-tree": "5.2.1", "readable-stream": "2.3.6", "readdir-scoped-modules": "1.0.2", - "request": "2.81.0", + "request": "2.88.0", "retry": "0.12.0", "rimraf": "2.6.2", "safe-buffer": "5.1.2", @@ -2814,7 +3272,8 @@ "sorted-object": "2.0.1", "sorted-union-stream": "2.1.3", "ssri": "6.0.0", - "tar": "4.4.4", + "stringify-package": "1.0.0", + "tar": "4.4.6", "text-table": "0.2.0", "tiny-relative-date": "1.3.0", "uid-number": "0.0.6", @@ -2823,16 +3282,15 @@ "unpipe": "1.0.0", "update-notifier": "2.5.0", "uuid": "3.3.2", - "validate-npm-package-license": "3.0.3", + "validate-npm-package-license": "3.0.4", "validate-npm-package-name": "3.0.0", "which": "1.3.1", "worker-farm": "1.6.0", - "wrappy": "1.0.2", "write-file-atomic": "2.3.0" }, "dependencies": { "JSONStream": { - "version": "1.3.3", + "version": "1.3.4", "bundled": true, "requires": { "jsonparse": "1.3.1", @@ -2857,6 +3315,16 @@ "humanize-ms": "1.2.1" } }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, "ansi-align": { "version": "2.0.0", "bundled": true, @@ -2904,11 +3372,14 @@ "bundled": true }, "asn1": { - "version": "0.2.3", - "bundled": true + "version": "0.2.4", + "bundled": true, + "requires": { + "safer-buffer": "2.1.2" + } }, "assert-plus": { - "version": "0.2.0", + "version": "1.0.0", "bundled": true }, "asynckit": { @@ -2916,11 +3387,11 @@ "bundled": true }, "aws-sign2": { - "version": "0.6.0", + "version": "0.7.0", "bundled": true }, "aws4": { - "version": "1.7.0", + "version": "1.8.0", "bundled": true }, "balanced-match": { @@ -2957,13 +3428,6 @@ "version": "3.5.1", "bundled": true }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, "boxen": { "version": "1.3.0", "bundled": true, @@ -3006,12 +3470,12 @@ "bundled": true }, "cacache": { - "version": "11.0.2", + "version": "11.2.0", "bundled": true, "requires": { "bluebird": "3.5.1", "chownr": "1.0.1", - "figgy-pudding": "3.1.0", + "figgy-pudding": "3.4.1", "glob": "7.1.2", "graceful-fs": "4.1.11", "lru-cache": "4.1.3", @@ -3055,7 +3519,7 @@ "bundled": true }, "ci-info": { - "version": "1.1.3", + "version": "1.4.0", "bundled": true }, "cidr-regex": { @@ -3081,7 +3545,7 @@ "version": "0.5.0", "bundled": true, "requires": { - "colors": "1.3.0", + "colors": "1.1.2", "object-assign": "4.1.1", "string-width": "2.1.1" } @@ -3140,7 +3604,7 @@ "bundled": true }, "colors": { - "version": "1.3.0", + "version": "1.1.2", "bundled": true, "optional": true }, @@ -3235,13 +3699,6 @@ "which": "1.3.1" } }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, "crypto-random-string": { "version": "1.0.0", "bundled": true @@ -3255,12 +3712,6 @@ "bundled": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "debug": { @@ -3349,11 +3800,12 @@ } }, "ecc-jsbn": { - "version": "0.1.1", + "version": "0.1.2", "bundled": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "editor": { @@ -3414,15 +3866,23 @@ } }, "extend": { - "version": "3.0.1", + "version": "3.0.2", "bundled": true }, "extsprintf": { "version": "1.3.0", "bundled": true }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, "figgy-pudding": { - "version": "3.1.0", + "version": "3.4.1", "bundled": true }, "find-npm-prefix": { @@ -3449,12 +3909,12 @@ "bundled": true }, "form-data": { - "version": "2.1.4", + "version": "2.3.2", "bundled": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "2.1.19" } }, "from2": { @@ -3573,12 +4033,6 @@ "bundled": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "glob": { @@ -3622,25 +4076,15 @@ "bundled": true }, "har-schema": { - "version": "1.0.5", + "version": "2.0.0", "bundled": true }, "har-validator": { - "version": "4.2.1", + "version": "5.1.0", "bundled": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "bundled": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } + "ajv": "5.5.2", + "har-schema": "2.0.0" } }, "has-flag": { @@ -3651,22 +4095,8 @@ "version": "2.0.1", "bundled": true }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, "hosted-git-info": { - "version": "2.6.0", + "version": "2.7.1", "bundled": true }, "http-cache-semantics": { @@ -3682,10 +4112,10 @@ } }, "http-signature": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "requires": { - "assert-plus": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", "sshpk": "1.14.2" } @@ -3713,7 +4143,7 @@ } }, "iferr": { - "version": "1.0.0", + "version": "1.0.2", "bundled": true }, "ignore-walk": { @@ -3757,7 +4187,7 @@ "read": "1.0.7", "read-package-json": "2.0.13", "semver": "5.5.0", - "validate-npm-package-license": "3.0.3", + "validate-npm-package-license": "3.0.4", "validate-npm-package-name": "3.0.0" } }, @@ -3784,7 +4214,7 @@ "version": "1.1.0", "bundled": true, "requires": { - "ci-info": "1.1.3" + "ci-info": "1.4.0" } }, "is-cidr": { @@ -3865,21 +4295,14 @@ "version": "0.2.3", "bundled": true }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true }, "json-stringify-safe": { "version": "5.0.1", "bundled": true }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, "jsonparse": { "version": "1.3.1", "bundled": true @@ -3892,12 +4315,6 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "latest-version": { @@ -3919,7 +4336,7 @@ } }, "libcipm": { - "version": "2.0.0", + "version": "2.0.2", "bundled": true, "requires": { "bin-links": "1.1.2", @@ -3927,7 +4344,8 @@ "find-npm-prefix": "1.0.2", "graceful-fs": "4.1.11", "lock-verify": "2.0.2", - "npm-lifecycle": "2.0.3", + "mkdirp": "0.5.1", + "npm-lifecycle": "2.1.0", "npm-logical-tree": "1.2.1", "npm-package-arg": "6.1.0", "pacote": "8.1.6", @@ -3941,7 +4359,7 @@ "version": "4.0.1", "bundled": true, "requires": { - "figgy-pudding": "3.1.0", + "figgy-pudding": "3.4.1", "npm-registry-fetch": "3.1.1" }, "dependencies": { @@ -3950,7 +4368,7 @@ "bundled": true, "requires": { "bluebird": "3.5.1", - "figgy-pudding": "3.1.0", + "figgy-pudding": "3.4.1", "lru-cache": "4.1.3", "make-fetch-happen": "4.0.1", "npm-package-arg": "6.1.0" @@ -4078,7 +4496,7 @@ "bundled": true, "requires": { "agentkeepalive": "3.4.1", - "cacache": "11.0.2", + "cacache": "11.2.0", "http-cache-semantics": "3.8.1", "http-proxy-agent": "2.1.0", "https-proxy-agent": "2.2.1", @@ -4102,14 +4520,14 @@ } }, "mime-db": { - "version": "1.33.0", + "version": "1.35.0", "bundled": true }, "mime-types": { - "version": "2.1.18", + "version": "2.1.19", "bundled": true, "requires": { - "mime-db": "1.33.0" + "mime-db": "1.35.0" } }, "mimic-fn": { @@ -4201,7 +4619,7 @@ } }, "node-gyp": { - "version": "3.7.0", + "version": "3.8.0", "bundled": true, "requires": { "fstream": "1.0.11", @@ -4211,7 +4629,7 @@ "nopt": "3.0.6", "npmlog": "4.1.2", "osenv": "0.1.5", - "request": "2.81.0", + "request": "2.88.0", "rimraf": "2.6.2", "semver": "5.3.0", "tar": "2.2.1", @@ -4252,10 +4670,10 @@ "version": "2.4.0", "bundled": true, "requires": { - "hosted-git-info": "2.6.0", + "hosted-git-info": "2.7.1", "is-builtin-module": "1.0.0", "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "validate-npm-package-license": "3.0.4" } }, "npm-audit-report": { @@ -4267,7 +4685,7 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.5", "bundled": true }, "npm-cache-filename": { @@ -4282,12 +4700,12 @@ } }, "npm-lifecycle": { - "version": "2.0.3", + "version": "2.1.0", "bundled": true, "requires": { "byline": "5.0.0", "graceful-fs": "4.1.11", - "node-gyp": "3.7.0", + "node-gyp": "3.8.0", "resolve-from": "4.0.0", "slide": "1.1.6", "uid-number": "0.0.6", @@ -4303,18 +4721,18 @@ "version": "6.1.0", "bundled": true, "requires": { - "hosted-git-info": "2.6.0", + "hosted-git-info": "2.7.1", "osenv": "0.1.5", "semver": "5.5.0", "validate-npm-package-name": "3.0.0" } }, "npm-packlist": { - "version": "1.1.10", + "version": "1.1.11", "bundled": true, "requires": { "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" + "npm-bundled": "1.0.5" } }, "npm-pick-manifest": { @@ -4334,7 +4752,7 @@ } }, "npm-registry-client": { - "version": "8.5.1", + "version": "8.6.0", "bundled": true, "requires": { "concat-stream": "1.6.2", @@ -4343,7 +4761,7 @@ "npm-package-arg": "6.1.0", "npmlog": "4.1.2", "once": "1.4.0", - "request": "2.81.0", + "request": "2.88.0", "retry": "0.10.1", "safe-buffer": "5.1.2", "semver": "5.5.0", @@ -4497,7 +4915,7 @@ "bundled": true }, "oauth-sign": { - "version": "0.8.2", + "version": "0.9.0", "bundled": true }, "object-assign": { @@ -4512,7 +4930,7 @@ } }, "opener": { - "version": "1.4.3", + "version": "1.5.0", "bundled": true }, "os-homedir": { @@ -4577,7 +4995,7 @@ "bundled": true, "requires": { "bluebird": "3.5.1", - "cacache": "11.0.2", + "cacache": "11.2.0", "get-stream": "3.0.0", "glob": "7.1.2", "lru-cache": "4.1.3", @@ -4588,7 +5006,7 @@ "mkdirp": "0.5.1", "normalize-package-data": "2.4.0", "npm-package-arg": "6.1.0", - "npm-packlist": "1.1.10", + "npm-packlist": "1.1.11", "npm-pick-manifest": "2.1.0", "osenv": "0.1.5", "promise-inflight": "1.0.1", @@ -4598,7 +5016,7 @@ "safe-buffer": "5.1.2", "semver": "5.5.0", "ssri": "6.0.0", - "tar": "4.4.4", + "tar": "4.4.6", "unique-filename": "1.1.0", "which": "1.3.1" } @@ -4629,7 +5047,7 @@ "bundled": true }, "performance-now": { - "version": "0.2.0", + "version": "2.1.0", "bundled": true }, "pify": { @@ -4688,6 +5106,10 @@ "version": "1.0.2", "bundled": true }, + "psl": { + "version": "1.1.29", + "bundled": true + }, "pump": { "version": "3.0.0", "bundled": true, @@ -4724,7 +5146,7 @@ "bundled": true }, "qs": { - "version": "6.4.0", + "version": "6.5.2", "bundled": true }, "query-string": { @@ -4843,29 +5265,27 @@ } }, "request": { - "version": "2.81.0", + "version": "2.88.0", "bundled": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.7.0", + "aws-sign2": "0.7.0", + "aws4": "1.8.0", "caseless": "0.12.0", "combined-stream": "1.0.6", - "extend": "3.0.1", + "extend": "3.0.2", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.2", + "har-validator": "5.1.0", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", + "mime-types": "2.1.19", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", "safe-buffer": "5.1.2", - "stringstream": "0.0.6", - "tough-cookie": "2.3.4", + "tough-cookie": "2.4.3", "tunnel-agent": "0.6.0", "uuid": "3.3.2" } @@ -4958,13 +5378,6 @@ "version": "4.0.1", "bundled": true }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, "socks": { "version": "2.2.0", "bundled": true, @@ -5049,21 +5462,15 @@ "version": "1.14.2", "bundled": true, "requires": { - "asn1": "0.2.3", + "asn1": "0.2.4", "assert-plus": "1.0.0", "bcrypt-pbkdf": "1.0.2", "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", + "ecc-jsbn": "0.1.2", "getpass": "0.1.7", "jsbn": "0.1.1", "safer-buffer": "2.1.2", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "ssri": { @@ -5126,8 +5533,8 @@ "safe-buffer": "5.1.2" } }, - "stringstream": { - "version": "0.0.6", + "stringify-package": { + "version": "1.0.0", "bundled": true }, "strip-ansi": { @@ -5153,7 +5560,7 @@ } }, "tar": { - "version": "4.4.4", + "version": "4.4.6", "bundled": true, "requires": { "chownr": "1.0.1", @@ -5203,9 +5610,10 @@ "bundled": true }, "tough-cookie": { - "version": "2.3.4", + "version": "2.4.3", "bundled": true, "requires": { + "psl": "1.1.29", "punycode": "1.4.1" } }, @@ -5298,7 +5706,7 @@ "bundled": true }, "validate-npm-package-license": { - "version": "3.0.3", + "version": "3.0.4", "bundled": true, "requires": { "spdx-correct": "3.0.0", @@ -5319,12 +5727,6 @@ "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true - } } }, "wcwidth": { @@ -5480,9 +5882,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", @@ -5490,6 +5892,41 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -5499,6 +5936,21 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5530,6 +5982,11 @@ "readable-stream": "2.3.6" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -5545,6 +6002,15 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -5577,7 +6043,7 @@ "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", "requires": { "agent-base": "4.2.1", - "debug": "3.1.0", + "debug": "3.2.5", "get-uri": "2.0.2", "http-proxy-agent": "2.1.0", "https-proxy-agent": "2.2.1", @@ -5587,14 +6053,19 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.0.0" + "ms": "2.1.1" } - } - } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } }, "pac-resolver": { "version": "3.0.0", @@ -5635,6 +6106,11 @@ "error-ex": "1.3.2" } }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -5666,7 +6142,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -5689,13 +6165,13 @@ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", "optional": true, "requires": { - "es6-promise": "4.2.4", + "es6-promise": "4.2.5", "extract-zip": "1.6.7", "fs-extra": "1.0.0", "hasha": "2.2.0", "kew": "0.7.0", "progress": "1.1.8", - "request": "2.87.0", + "request": "2.88.0", "request-progress": "2.0.1", "which": "1.3.1" } @@ -5742,9 +6218,35 @@ "arr-flatten": "1.1.0", "array-slice": "0.2.3" } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true } } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -5773,11 +6275,11 @@ }, "proxy-agent": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", + "resolved": "http://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", "requires": { "agent-base": "4.2.1", - "debug": "3.1.0", + "debug": "3.2.5", "http-proxy-agent": "2.1.0", "https-proxy-agent": "2.2.1", "lru-cache": "4.1.3", @@ -5787,21 +6289,17 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.0.0" + "ms": "2.1.1" } }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -5815,6 +6313,11 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -5841,9 +6344,9 @@ } }, "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "requires": { "is-number": "4.0.0", "kind-of": "6.0.2", @@ -5871,6 +6374,16 @@ "http-errors": "1.6.3", "iconv-lite": "0.4.23", "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": "2.1.2" + } + } } }, "read-pkg": { @@ -5894,7 +6407,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "1.0.2", @@ -5907,14 +6420,263 @@ } }, "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "micromatch": "3.1.10", + "readable-stream": "2.3.6" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "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.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } } }, "regenerator-runtime": { @@ -5930,6 +6692,15 @@ "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -5941,9 +6712,9 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" }, "repeat-string": { "version": "1.6.1", @@ -5957,28 +6728,28 @@ "dev": true }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { "aws-sign2": "0.7.0", - "aws4": "1.7.0", + "aws4": "1.8.0", "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", + "combined-stream": "1.0.7", + "extend": "3.0.2", "forever-agent": "0.6.1", "form-data": "2.3.2", - "har-validator": "5.0.3", + "har-validator": "5.1.0", "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", - "oauth-sign": "0.8.2", + "mime-types": "2.1.20", + "oauth-sign": "0.9.0", "performance-now": "2.1.0", "qs": "6.5.2", "safe-buffer": "5.1.2", - "tough-cookie": "2.3.4", + "tough-cookie": "2.4.3", "tunnel-agent": "0.6.0", "uuid": "3.3.2" } @@ -6008,13 +6779,23 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "7.1.3" } }, "safe-buffer": { @@ -6022,25 +6803,49 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "0.1.15" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + } + } }, "setprototypeof": { "version": "1.1.0", @@ -6080,6 +6885,108 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=" }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "3.2.2" + } + }, "socks": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", @@ -6099,35 +7006,44 @@ } }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "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": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", - "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { - "buffer-from": "1.1.0", + "buffer-from": "1.1.1", "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "requires": { "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-license-ids": "3.0.1" } }, "spdx-exceptions": { @@ -6141,33 +7057,47 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "requires": { "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-license-ids": "3.0.1" } }, "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" }, "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2.3.8" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "0.2.3", + "asn1": "0.2.4", "assert-plus": "1.0.0", "bcrypt-pbkdf": "1.0.2", "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", + "ecc-jsbn": "0.1.2", "getpass": "0.1.7", "jsbn": "0.1.1", "safer-buffer": "2.1.2", @@ -6180,18 +7110,38 @@ "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", "dev": true }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "version": "0.2.2", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "0.1.1", + "through": "2.3.8" } }, "stream-shift": { @@ -6298,8 +7248,8 @@ "requires": { "component-emitter": "1.2.1", "cookiejar": "2.1.2", - "debug": "3.1.0", - "extend": "3.0.1", + "debug": "3.2.5", + "extend": "3.0.2", "form-data": "2.3.2", "formidable": "1.2.1", "methods": "1.1.2", @@ -6309,36 +7259,46 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.0.0" + "ms": "2.1.1" } }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "superagent-proxy": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superagent-proxy/-/superagent-proxy-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/superagent-proxy/-/superagent-proxy-1.0.3.tgz", "integrity": "sha512-79Ujg1lRL2ICfuHUdX+H2MjIw73kB7bXsIkxLwHURz3j0XUmEEEoJ+u/wq+mKwna21Uejsm2cGR3OESA00TIjA==", "requires": { - "debug": "3.1.0", + "debug": "3.2.5", "proxy-agent": "2.3.1" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", "requires": { - "ms": "2.0.0" + "ms": "2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -6372,7 +7332,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -6429,11 +7389,50 @@ } } }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { + "psl": "1.1.29", "punycode": "1.4.1" } }, @@ -6466,24 +7465,62 @@ "optional": true }, "typescript": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", - "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", + "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", + "dev": true + }, + "uc.micro": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", + "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==", "dev": true }, "uglify-js": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.4.tgz", - "integrity": "sha512-RiB1kNcC9RMyqwRrjXC+EjgLoXULoDnCaOnEDzUCHkBN0bHwmtF5rzDMiDWU29gu0kXCRRWwtcTAVFWRECmU2Q==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "requires": { - "commander": "2.16.0", + "commander": "2.17.1", "source-map": "0.6.1" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } } } }, @@ -6502,21 +7539,72 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, "url-parse": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.1.tgz", - "integrity": "sha512-x95Td74QcvICAA0+qERaVkRpTGKyBHHYdwL2LXZm5t/gBtCB9KQSO/0zQgSTYEV1p0WcvSg79TLNPSvd5IDJMQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", + "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", "dev": true, "requires": { "querystringify": "2.0.0", "requires-port": "1.0.0" } }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6535,13 +7623,13 @@ }, "valid-data-url": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz", + "resolved": "http://registry.npmjs.org/valid-data-url/-/valid-data-url-0.1.6.tgz", "integrity": "sha512-FXg2qXMzfAhZc0y2HzELNfUeiOjPr+52hU1DNBWiJJ2luXD+dD1R9NA48Ug5aj0ibbxroeGDc/RJv6ThiGgkDw==" }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { "spdx-correct": "3.0.0", "spdx-expression-parse": "3.0.0" @@ -6637,12 +7725,12 @@ } }, "vscode": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.18.tgz", - "integrity": "sha512-SyDw4qFwZ+WthZX7RWp71PNiWLF7VhpM65j2oryY/6jtSORd8qH6J8vclwWZJ6Jvu0EH7JamO2RWNfBfsMR9Zw==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.21.tgz", + "integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==", "dev": true, "requires": { - "glob": "7.1.2", + "glob": "7.1.3", "gulp-chmod": "2.0.0", "gulp-filter": "5.1.0", "gulp-gunzip": "1.0.0", @@ -6651,10 +7739,10 @@ "gulp-untar": "0.0.7", "gulp-vinyl-zip": "2.1.0", "mocha": "4.1.0", - "request": "2.87.0", - "semver": "5.5.0", - "source-map-support": "0.5.6", - "url-parse": "1.4.1", + "request": "2.88.0", + "semver": "5.5.1", + "source-map-support": "0.5.9", + "url-parse": "1.4.3", "vinyl-source-stream": "1.1.2" } }, @@ -6676,7 +7764,7 @@ "datauri": "1.1.0", "htmlparser2": "3.9.2", "lodash.unescape": "4.0.1", - "request": "2.87.0", + "request": "2.88.0", "valid-data-url": "0.1.6", "xtend": "4.0.1" } @@ -6701,7 +7789,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "1.0.2", diff --git a/package.json b/package.json index fb79f26..61fc3ca 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-mjml", "displayName": "MJML", "description": "MJML preview, lint, compile for Visual Studio Code.", - "version": "1.4.0", + "version": "1.5.0", "publisher": "attilabuti", "license": "MIT", "readme": "README.md", @@ -28,21 +28,23 @@ "Other", "Linters", "Snippets", - "Formatters" + "Formatters", + "Programming Languages" ], "keywords": [ "vscode", "mjml", "preview", "lint", - "mail" + "syntax" ], "engines": { - "vscode": "^1.6.0" + "vscode": "^1.23.0" }, "activationEvents": [ "onCommand:mjml.beautify", "onCommand:mjml.copyHTML", + "onCommand:mjml.documentation", "onCommand:mjml.exportHTML", "onCommand:mjml.migrate", "onCommand:mjml.multipleScreenshots", @@ -50,6 +52,7 @@ "onCommand:mjml.screenshot", "onCommand:mjml.sendEmail", "onCommand:mjml.template", + "onCommand:mjml.searchInDocumentation", "onLanguage:mjml" ], "main": "./out/extension", @@ -141,6 +144,16 @@ "description": "Automatically update preview when switching between MJML documents.", "type": "boolean" }, + "mjml.previewBackgroundColor": { + "default": "", + "description": "Preview background color.", + "type": "string" + }, + "mjml.autoClosePreview": { + "default": true, + "description": "Automatically close preview when all open MJML documents have been closed.", + "type": "boolean" + }, "mjml.screenshotQuality": { "default": 75, "description": "Screenshot quality.", @@ -168,11 +181,15 @@ "default": true, "description": "Update preview when typing.", "type": "boolean" + }, + "mjml.showSaveDialog": { + "default": false, + "description": "Show the save as dialog instead of input box.", + "type": "boolean" } } }, - "commands": [ - { + "commands": [{ "command": "mjml.previewToSide", "title": "Open Preview to the Side", "category": "MJML", @@ -191,6 +208,11 @@ "title": "Copy HTML", "category": "MJML" }, + { + "command": "mjml.documentation", + "title": "Documentation", + "category": "MJML" + }, { "command": "mjml.screenshot", "title": "Screenshot", @@ -220,33 +242,44 @@ "command": "mjml.beautify", "title": "Beautify", "category": "MJML" - } - ], - "languages": [ - { - "id": "mjml", - "extensions": [ - ".mjml" - ], - "aliases": [ - "mjml" - ] - } - ], - "snippets": [ + }, { - "language": "mjml", - "path": "./snippets/mjml.json" + "command": "mjml.searchInDocumentation", + "title": "Search in MJML documentation", + "category": "MJML" } ], + "languages": [{ + "id": "mjml", + "extensions": [ + ".mjml" + ], + "aliases": [ + "MJML", + "mjml" + ], + "configuration": "./language-configuration.json" + }], + "grammars": [{ + "language": "mjml", + "scopeName": "text.mjml.basic", + "path": "./syntaxes/MJML.tmLanguage" + }], + "snippets": [{ + "language": "mjml", + "path": "./snippets/mjml.json" + }], "menus": { - "editor/title": [ - { - "when": "editorLangId == mjml", - "command": "mjml.previewToSide", - "group": "navigation" - } - ] + "editor/title": [{ + "when": "editorLangId == mjml", + "command": "mjml.previewToSide", + "group": "navigation" + }], + "editor/context": [{ + "when": "editorLangId == mjml", + "command": "mjml.searchInDocumentation", + "group": "mjml" + }] } }, "scripts": { @@ -261,22 +294,25 @@ "@types/is-url": "^1.2.28", "@types/mime": "^2.0.0", "@types/node": "*", - "@types/nodemailer": "^4.6.2", - "typescript": "^2.7.2", - "vscode": "^1.0.3", - "@types/npm": "^2.0.29" + "@types/nodemailer": "^4.6.5", + "typescript": "^3.0.3", + "vscode": "^1.1.18", + "@types/npm": "^2.0.29", + "markdown-it": "^8.4.2", + "markdown-it-anchor": "^5.0.2", + "highlight.js": "^9.12.0" }, "dependencies": { "ab-webshot": "^1.0.0", "copy-paste": "^1.3.0", "file-url": "^2.0.2", "is-url": "^1.2.4", - "js-beautify": "^1.7.5", + "js-beautify": "^1.8.6", "mime": "^2.3.1", - "mjml": "^4.1.0", - "node-fetch": "2.1.2", + "mjml": "^4.1.2", + "node-fetch": "2.2.0", "node-mailjet": "^3.2.1", - "nodemailer": "^4.6.7", + "nodemailer": "^4.6.8", "npm": "^6.2.0" } -} +} \ No newline at end of file diff --git a/src/documentation.ts b/src/documentation.ts new file mode 100644 index 0000000..1ac9892 --- /dev/null +++ b/src/documentation.ts @@ -0,0 +1,112 @@ +"use strict"; + +import * as vscode from "vscode"; +import * as path from "path"; +import * as fs from "fs"; + +export interface WebviewMessage { + command: string; + data: string; +} + +export default class Documentation { + + protected context: vscode.ExtensionContext; + protected webview: vscode.WebviewPanel | undefined; + protected content: string; + + constructor(context: vscode.ExtensionContext) { + this.context = context; + let documentationPath: string = path.join(__dirname, "../documentation/documentation.html"); + + context.subscriptions.push( + vscode.commands.registerCommand("mjml.documentation", () => { + if (documentationPath && fs.existsSync(documentationPath) && fs.statSync(documentationPath).isFile()) { + this.displayWebView(this.getWebviewContent(documentationPath)); + this.handleEvents(); + } + }), + + vscode.commands.registerCommand("mjml.searchInDocumentation", () => { + let text: string = vscode.window.activeTextEditor.document.getText(vscode.window.activeTextEditor.selection); + let anchor: string = text.replace(/((\/|\<|\>)|^\s+|(\r?\n|\r)|\s.*)/gi, "").replace("mj-", "#mjml-"); + if (!anchor.startsWith("#mjml-")) { + anchor = `#mjml-${anchor}`; + } + + this.displayWebView(this.getWebviewContent(documentationPath)); + this.webview.webview.postMessage({ + command: "scrollTo", + anchor: anchor + }); + + this.handleEvents(); + }) + ); + } + + private handleEvents(): void { + // Handle messages from the webview + this.webview.webview.onDidReceiveMessage((message: WebviewMessage) => { + if (message.command == "openExample") { + this.openExample(message.data); + } + }, undefined, this.context.subscriptions); + } + + private async openExample(fileName: string): Promise { + let file: string = path.join(__dirname, "../documentation/examples/", `${fileName}.mjml`); + + if (file && fs.existsSync(file) && fs.statSync(file).isFile()) { + let document: vscode.TextDocument = await vscode.workspace.openTextDocument({ + content: fs.readFileSync(file, "utf8"), + language: "mjml" + }); + + await vscode.window.showTextDocument(document, { + viewColumn: vscode.ViewColumn.One + }); + + await vscode.commands.executeCommand("mjml.previewToSide"); + } + } + + private displayWebView(content: string): void { + if (!this.webview) { + this.webview = vscode.window.createWebviewPanel("mjml-documentation", "MJML Documentation", vscode.ViewColumn.Two, { + retainContextWhenHidden: true, + enableFindWidget: true, + enableScripts: true, + localResourceRoots: [ + vscode.Uri.parse(this.context.extensionPath) + ] + }); + + this.webview.webview.html = content; + + this.webview.onDidDispose(() => { + this.webview = undefined; + }); + } + } + + private getWebviewContent(filePath: string): string { + if (!this.content) { + let rootPath: string = vscode.Uri.parse(path.join(this.context.extensionPath, "documentation")).with({ scheme: "vscode-resource" }).toString(); + this.content = fs.readFileSync(filePath).toString().replace(/{{root}}/gi, rootPath); + } + + return this.content; + } + + public dispose(): void { + if (this.webview !== undefined) { + this.webview.dispose(); + } + + for (let s of this.context.subscriptions) { + s.dispose(); + } + } + +} diff --git a/src/email.ts b/src/email.ts index 6945fd8..553624e 100644 --- a/src/email.ts +++ b/src/email.ts @@ -73,7 +73,7 @@ export default class SendEmail { attachments: attachments }, (err: Error, info: any) => { if (err) { - vscode.window.showErrorMessage("Something went wrong."); + vscode.window.showErrorMessage(err.message); return; } @@ -83,7 +83,7 @@ export default class SendEmail { let url: (string | boolean) = nodemailer.getTestMessageUrl(info); if (url) { - vscode.window.showInformationMessage("Preview URL: " + url); + vscode.window.showInformationMessage(`Preview URL: ${url}`); } } }); @@ -107,7 +107,7 @@ export default class SendEmail { }).then((result: object) => { vscode.window.showInformationMessage("Mail has been sent successfully."); }).catch((err: any) => { - vscode.window.showErrorMessage("Something went wrong."); + vscode.window.showErrorMessage(err.message); }); } diff --git a/src/export.ts b/src/export.ts index e7f64b2..e7ea043 100644 --- a/src/export.ts +++ b/src/export.ts @@ -25,35 +25,55 @@ export default class ExportHTML { exportType = "." + exportType; } - vscode.window.showInputBox({ - prompt: "Filename", - placeHolder: `Enter a filename (${defaultFileName}${exportType} or .xyz).`, - value: defaultFileName + exportType - }).then((fileName: string) => { - if (!fileName) { - return; - } - - let fileExtension: any = (/[.]/.exec(fileName)) ? /[^.]+$/.exec(fileName) : undefined; - if (!fileExtension) { - fileName += exportType; - } - - if (fileName.startsWith(".")) { - fileName = defaultFileName + fileName; - } - - let file: string = path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${fileName}`); - - fs.writeFile(file, content, (err: NodeJS.ErrnoException) => { - if (err) { - vscode.window.showErrorMessage("Something went wrong."); + if (vscode.workspace.getConfiguration("mjml").showSaveDialog) { + vscode.window.showSaveDialog({ + defaultUri: vscode.Uri.file(path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${defaultFileName}${exportType}`)), + filters: { + "HTML": ["html"], + "All files": ["*"] } - else { - vscode.window.showInformationMessage(`File saved as ${fileName}`); + }).then((fileUri: vscode.Uri) => { + if (fileUri) { + this.writeFile(fileUri.fsPath, content); } }); - }); + } + else { + vscode.window.showInputBox({ + prompt: "Filename", + placeHolder: `Enter a filename (${defaultFileName}${exportType} or .xyz).`, + value: defaultFileName + exportType + }).then((fileName: string) => { + if (!fileName) { + return; + } + + let fileExtension: any = (/[.]/.exec(fileName)) ? /[^.]+$/.exec(fileName) : undefined; + if (!fileExtension) { + fileName += exportType; + } + + if (fileName.startsWith(".")) { + fileName = defaultFileName + fileName; + } + + let file: string = path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${fileName}`); + + this.writeFile(file, content); + }); + } + }); + } + + private writeFile(file: string, content: string): void + { + fs.writeFile(file, content, (err: NodeJS.ErrnoException) => { + if (err) { + vscode.window.showErrorMessage(`Could not save the file: ${err}`); + } + else { + vscode.window.showInformationMessage(`File saved as ${path.basename(file)}`); + } }); } diff --git a/src/extension.ts b/src/extension.ts index 3ac3c85..5018426 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -8,6 +8,7 @@ import * as phantomJS from "phantomjs-prebuilt"; import Beautify from "./beautify"; import CopyHTML from "./copy"; +import Documentation from "./documentation"; import SendEmail from "./email"; import ExportHTML from "./export"; import LintingProvider from "./linter"; @@ -20,6 +21,7 @@ import helper from "./helper"; let beautify: Beautify; let copyHTML: CopyHTML; +let documentation: Documentation; let sendEmail: SendEmail; let exportHTML: ExportHTML; let linter: LintingProvider; @@ -72,7 +74,7 @@ export function activate(context: vscode.ExtensionContext) { if (document) { if (helper.isMJMLFile(document)) { if (document.getText().indexOf("mj-container") > -1) { - vscode.window.showInformationMessage("MJML v3 syntax detected. Use \"MJML: Migrate\" to get the migrated MJML."); + vscode.window.showInformationMessage(`MJML v3 syntax detected. Use "MJML: Migrate" to get the migrated MJML.`); } } } @@ -93,6 +95,7 @@ export function activate(context: vscode.ExtensionContext) { }); copyHTML = new CopyHTML(context.subscriptions); + documentation = new Documentation(context); sendEmail = new SendEmail(context.subscriptions); exportHTML = new ExportHTML(context.subscriptions); migrate = new Migrate(context.subscriptions); diff --git a/src/helper.ts b/src/helper.ts index 7b0135f..f7034ea 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -37,7 +37,7 @@ export default class Helper { return document.languageId === "mjml" && document.uri.scheme !== "mjml-preview"; } - static mjml2html(mjml: string, minify: boolean, beautify: boolean, mjmlPath?: string, level: 'skip' | 'strict' | 'ignore' = 'skip' ): { html: string, errors: any[] } { + static mjml2html(mjml: string, minify: boolean, beautify: boolean, mjmlPath?: string, level: "skip" | "strict" | "ignore" = "skip" ): { html: string, errors: any[] } { try { if (!mjmlPath) { mjmlPath = this.getPath(); @@ -48,12 +48,11 @@ export default class Helper { minify: minify, beautify: beautify, filePath: mjmlPath, - configPath: this.getCWD(mjmlPath) + mjmlConfigPath: this.getCWD(mjmlPath) }); - } catch (err) { - return { html: '', errors: [err] }; + return { html: "", errors: [err] }; } } @@ -77,13 +76,28 @@ export default class Helper { static beautifyHTML(mjml: string): any { try { - return beautifyJS.html(mjml, vscode.workspace.getConfiguration("mjml").beautify); + mjml = beautifyJS.html(mjml.replace(/mj-style/g, "style"), vscode.workspace.getConfiguration("mjml").beautify); + let tmp: RegExpExecArray = /<.*mj-head.*>[\s\S]+<.*\/.*mj-head.*>/gim.exec(mjml); + + return mjml.replace(tmp[0], tmp[0].replace(/style/gi, "mj-style")); } catch (err) { vscode.window.showErrorMessage(err); return; } } + static setBackgroundColor(html: string): string { + if (vscode.workspace.getConfiguration("mjml").previewBackgroundColor) { + let tmp: RegExpExecArray = /<.*head.*>/i.exec(html); + + if (tmp && tmp[0]) { + html = html.replace(tmp[0], `${tmp[0]}\n`); + } + } + + return html; + } + static getPath(): string { if (vscode.window.activeTextEditor.document) { return vscode.window.activeTextEditor.document.uri.fsPath; diff --git a/src/linter.ts b/src/linter.ts index 649eb52..997b31d 100644 --- a/src/linter.ts +++ b/src/linter.ts @@ -51,7 +51,7 @@ export default class MJMLLintingProvider { let diagnostics: vscode.Diagnostic[] = []; try { - let filePath = helper.getPath(); + let filePath: string = helper.getPath(); let { html, errors } = helper.mjml2html(vscode.window.activeTextEditor.document.getText(), false, false, filePath, "strict"); errors.forEach((err: any) => { diff --git a/src/migrate.ts b/src/migrate.ts index 8ab2935..f8037d7 100644 --- a/src/migrate.ts +++ b/src/migrate.ts @@ -37,7 +37,7 @@ export default class Migrate { if (content) { fs.writeFile(file, content, (err: NodeJS.ErrnoException) => { if (err) { - vscode.window.showErrorMessage("Something went wrong."); + vscode.window.showErrorMessage(err.message); } else { vscode.window.showInformationMessage(`${inputFileName} was converted to the MJML 4 syntax in ${fileName}_v4.mjml`); diff --git a/src/preview.ts b/src/preview.ts index 6c3477e..cf70918 100644 --- a/src/preview.ts +++ b/src/preview.ts @@ -7,11 +7,10 @@ import helper from "./helper"; export default class PreviewManager { - private IDMap: IDMap = new IDMap(); - private fileMap: Map = new Map(); + private webview: vscode.WebviewPanel | undefined; private subscriptions: vscode.Disposable[]; private previewOpen: boolean = false; - private activeDocument: string; + private openedDocuments: string[] = []; constructor(context: vscode.ExtensionContext) { this.subscriptions = context.subscriptions; @@ -19,218 +18,105 @@ export default class PreviewManager { this.subscriptions.push( vscode.commands.registerCommand("mjml.previewToSide", () => { this.previewOpen = true; - this.previewCommand(); + this.displayWebView(this.getWebviewContent()); }), vscode.workspace.onDidOpenTextDocument((document?: vscode.TextDocument) => { - if (vscode.workspace.getConfiguration("mjml").autoPreview) { + if (this.previewOpen && vscode.workspace.getConfiguration("mjml").autoPreview) { if (document) { - if (this.previewOpen && document.languageId == "mjml") { - if (this.activeDocument != document.uri.fsPath) { - this.activeDocument = document.uri.fsPath; - this.previewCommand(document); - } - } - else if (document.fileName.replace(/\\/g, "/") == "/mjml-preview/sidebyside/") { - this.previewOpen = true; + if (document.languageId == "mjml") { + this.displayWebView(this.getWebviewContent(document)); } } } }), vscode.window.onDidChangeActiveTextEditor((editor?: vscode.TextEditor) => { - if (vscode.workspace.getConfiguration("mjml").autoPreview) { + if (this.previewOpen && vscode.workspace.getConfiguration("mjml").autoPreview) { if (editor) { - if (this.previewOpen && editor.document.languageId == "mjml") { - if (this.activeDocument != editor.document.uri.fsPath) { - this.activeDocument = editor.document.uri.fsPath; - this.previewCommand(editor.document); - } + if (editor.document.languageId == "mjml") { + this.displayWebView(this.getWebviewContent(editor.document)); } } } }), vscode.workspace.onDidCloseTextDocument((document?: vscode.TextDocument) => { - if (document) { - if (document.fileName.replace(/\\/g, "/") == "/mjml-preview/sidebyside/") { - this.previewOpen = false; - this.activeDocument = ""; - } - else { - this.removePreview(document); - } - } - }) - ); - } - - private previewCommand(document?: vscode.TextDocument): void { - let documentURI: string = this.IDMap.createDocumentUri(((document) ? document.uri : vscode.window.activeTextEditor.document.uri)); - - let mjmlPreview: MJMLView; - if (!this.IDMap.hasUri(documentURI)) { - mjmlPreview = new MJMLView(((document) ? document : vscode.window.activeTextEditor.document)); - - this.fileMap.set(this.IDMap.add(documentURI, mjmlPreview.uri), mjmlPreview); - } - else { - mjmlPreview = this.fileMap.get(this.IDMap.getByUri(documentURI)); - } - - mjmlPreview.execute(); - } - - private removePreview(document: vscode.TextDocument): void { - if (/mjml-preview/.test(document.fileName) && /sidebyside/.test(document.fileName)) { - this.dispose(); - this.fileMap.clear(); - this.IDMap.clear(); - } - else { - let documentURI: string = this.IDMap.createDocumentUri(document.uri); - - if (this.IDMap.hasUri(documentURI)) { - let mjmlPreview: MJMLView = this.fileMap.get(this.IDMap.getByUri(documentURI)); - - let id: string = this.IDMap.delete(documentURI, mjmlPreview.uri); - this.dispose(id); - this.fileMap.delete(id); - } - } - } - - public dispose(id?: string): void { - let values: IterableIterator = this.fileMap.values(); - let value: IteratorResult = values.next(); - - if (id && this.fileMap.has(id)) { - this.fileMap.get(id).dispose(); - } - else { - while (!value.done) { - value.value.dispose(); - value = values.next(); - } - } - } - -} - -class MJMLView { - - private subscriptions: vscode.Disposable[] = []; - private document: vscode.TextDocument; - private provider: PreviewContentProvider; - private previewUri: vscode.Uri; - private viewColumn: vscode.ViewColumn; - private label: string; - - constructor(document: vscode.TextDocument) { - this.document = document; - this.provider = new PreviewContentProvider(this.document); - - this.previewUri = this.createUri(document.uri); - this.viewColumn = vscode.ViewColumn.Two; - - this.label = "MJML Preview - " + path.basename(document.fileName); - - this.registerEvents(); - } - - private registerEvents(): void { - this.subscriptions.push( - vscode.workspace.registerTextDocumentContentProvider("mjml-preview", this.provider), + if (this.previewOpen) { + if (document) { + this.removeDocument(document.fileName); - vscode.workspace.onDidSaveTextDocument((document: vscode.TextDocument) => { - if (helper.isMJMLFile(document)) { - this.provider.update(this.previewUri); + if (this.openedDocuments.length == 0 && vscode.workspace.getConfiguration("mjml").autoClosePreview) { + this.webview.dispose(); + } + } } }), - vscode.workspace.onDidChangeTextDocument((event: vscode.TextDocumentChangeEvent) => { - if (vscode.workspace.getConfiguration("mjml").updateWhenTyping) { - if (helper.isMJMLFile(event.document)) { - this.provider.update(this.previewUri); + vscode.workspace.onDidChangeTextDocument((event?: vscode.TextDocumentChangeEvent) => { + if (this.previewOpen && vscode.workspace.getConfiguration("mjml").updateWhenTyping) { + if (event) { + if (event.document.languageId == "mjml") { + this.displayWebView(this.getWebviewContent(event.document)); + } } } }), - vscode.window.onDidChangeActiveTextEditor((editor?: vscode.TextEditor) => { - if (editor) { - if (this.document.uri === editor.document.uri) { - if (helper.isMJMLFile(editor.document)) { - this.provider.update(this.previewUri); - } + vscode.workspace.onDidSaveTextDocument((document?: vscode.TextDocument) => { + if (this.previewOpen && document) { + if (document.languageId == "mjml") { + this.displayWebView(this.getWebviewContent(document)); } } }) ); } - public dispose(): void { - for (let i = 0; i < this.subscriptions.length; i++) { - this.subscriptions[i].dispose(); + private displayWebView(content: string): void { + let label: string = "MJML Preview"; + if (vscode.window.activeTextEditor.document) { + label = `MJML Preview - ${path.basename(vscode.window.activeTextEditor.document.fileName)}`; } - } - - public execute(): void { - vscode.commands.executeCommand("vscode.previewHtml", this.previewUri, this.viewColumn, this.label).then((success: boolean) => { - if (this.viewColumn === 2) { - if (vscode.workspace.getConfiguration("mjml").preserveFocus) { - // Preserve focus of Text Editor after preview open - vscode.window.showTextDocument(this.document, vscode.ViewColumn.One); - } - } - }, (reason: string) => { - vscode.window.showErrorMessage(reason); - }); - } - - public get uri(): vscode.Uri { - return this.previewUri; - } - private createUri(uri: vscode.Uri): vscode.Uri { - return vscode.Uri.parse("mjml-preview://authority/mjml-preview/sidebyside/"); - } - -} + if (!this.webview) { + this.webview = vscode.window.createWebviewPanel("mjml-preview", label, vscode.ViewColumn.Two, { + retainContextWhenHidden: true + }); -class PreviewContentProvider implements vscode.TextDocumentContentProvider { + this.webview.webview.html = content; - private _onDidChange: vscode.EventEmitter = new vscode.EventEmitter(); - private document: vscode.TextDocument; + this.webview.onDidDispose(() => { + this.webview = undefined; + this.previewOpen = false; + }, null, this.subscriptions); - constructor(document: vscode.TextDocument) { - this.document = document; - } - - get onDidChange(): vscode.Event { - return this._onDidChange.event; - } - - public update(uri: vscode.Uri): void { - if (/mjml-preview/.test(uri.fsPath) && /sidebyside/.test(uri.fsPath)) { - if (vscode.window.activeTextEditor.document.fileName == this.document.fileName) { - this._onDidChange.fire(uri); + if (vscode.workspace.getConfiguration("mjml").preserveFocus) { + // Preserve focus of Text Editor after preview open + vscode.window.showTextDocument(vscode.window.activeTextEditor.document, vscode.ViewColumn.One); } } + else { + this.webview.title = label; + this.webview.webview.html = content; + } } - public provideTextDocumentContent(uri: vscode.Uri): string { - if (this.document.languageId !== "mjml") { - return this.error("Active editor doesn't show a MJML document."); + private getWebviewContent(document?: vscode.TextDocument): string { + let previewDocument: vscode.TextDocument; + if (document) { + previewDocument = document; + } + else { + previewDocument = vscode.window.activeTextEditor.document; } - return this.renderMJML(); - } - - private renderMJML(): string { - let html: string = helper.mjml2html(this.document.getText(), false, false, this.document.uri.fsPath).html; + let html: string = helper.mjml2html(previewDocument.getText(), false, false, previewDocument.uri.fsPath, "skip").html; if (html) { - return helper.fixLinks(html, this.document.uri.fsPath); + this.addDocument(previewDocument.fileName); + + return helper.setBackgroundColor(helper.fixLinks(html, previewDocument.uri.fsPath)); } return this.error("Active editor doesn't show a MJML document."); @@ -240,63 +126,24 @@ class PreviewContentProvider implements vscode.TextDocumentContentProvider { return `${error}`; } -} - -class IDMap { - - private map: Map<[string, vscode.Uri], string> = new Map<[string, vscode.Uri], string>(); - - public clear(): void { - this.map.clear(); - } - - private UUIDv4(): string { - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c: string) => { - let r: number = Math.random() * 16 | 0, v: number = c == "x" ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); - } - - public createDocumentUri(uri: vscode.Uri): string { - return JSON.stringify({ uri: uri }); - } - - public getByUri(uri: string, remove?: boolean): any { - let keys: IterableIterator<[string, vscode.Uri]> = this.map.keys(); - let key: IteratorResult<[string, vscode.Uri]> = keys.next(); - - while (!key.done) { - if (key.value.indexOf(uri) > -1) { - if (remove) { - return key.value; - } - else { - return this.map.get(key.value); - } - } - - key = keys.next(); + private addDocument(fileName: string): void { + if (this.openedDocuments.indexOf(fileName) == -1) { + this.openedDocuments.push(fileName); } - - return undefined; } - public hasUri(uri: string): boolean { - return this.getByUri(uri) != undefined; + private removeDocument(fileName: string): void { + this.openedDocuments = this.openedDocuments.filter(e => e !== fileName); } - public add(documentUri: string, previewUri: vscode.Uri): string { - let id: string = this.UUIDv4(); - this.map.set([documentUri, previewUri], id); - - return id; - } - - public delete(uri: string, previewUri: vscode.Uri): string { - let id: string = this.getByUri(uri); - this.map.delete(this.getByUri(uri, true)); + public dispose(): void { + if (this.webview !== undefined) { + this.webview.dispose(); + } - return id; + for (let s of this.subscriptions) { + s.dispose(); + } } } diff --git a/src/screenshot.ts b/src/screenshot.ts index 5b5eb12..d33b83e 100644 --- a/src/screenshot.ts +++ b/src/screenshot.ts @@ -20,16 +20,16 @@ export default class Screenshot { context.subscriptions.push( vscode.commands.registerCommand("mjml.screenshot", () => { - this.platform(false); + this.renderMJML(false); }), vscode.commands.registerCommand("mjml.multipleScreenshots", () => { - this.platform(true); + this.renderMJML(true); }) ); } - private platform(multiple: boolean): void { + private renderMJML(multiple: boolean): void { if (this.phantomJsPlatform != this.processPlatform || this.phantomJSBuilt != undefined) { if (this.phantomJSBuilt) { vscode.window.showInformationMessage("MJML's been updated. Please restart VSCode in order to continue using MJML."); @@ -39,20 +39,55 @@ export default class Screenshot { } } else { - this.takeScreenshot(multiple); + helper.renderMJML((content: string) => { + let defaultWidth: number = vscode.workspace.getConfiguration("mjml").screenshotWidth; + + if (!multiple) { + vscode.window.showInputBox({ + prompt: "Width", + placeHolder: `Enter image width (${defaultWidth}px).`, + value: defaultWidth.toString() + }).then((width: any) => { + if (!width) { + return; + } + + width = parseInt(width.replace(/[^0-9\.]+/g, "")); + if (!width || Number.isNaN(parseInt(width))) { + width = defaultWidth; + } + + this.showSaveDialog(multiple, content, width); + }); + } + else { + this.showSaveDialog(multiple, content, defaultWidth); + } + }, true); } } - private takeScreenshot(multiple: boolean): void { - helper.renderMJML((content: string) => { - let defaultWidth: number = vscode.workspace.getConfiguration("mjml").screenshotWidth; - let defaultFileName: string = path.basename(vscode.window.activeTextEditor.document.uri.fsPath).replace(/\.[^\.]+$/, ""); + private showSaveDialog(multiple: boolean, content: string, width: number): void { + let defaultFileName: string = path.basename(vscode.window.activeTextEditor.document.uri.fsPath).replace(/\.[^\.]+$/, ""); - let screenshotType: string = "png"; - if (["png", "jpg", "jpeg"].indexOf(vscode.workspace.getConfiguration("mjml").screenshotType)) { - screenshotType = vscode.workspace.getConfiguration("mjml").screenshotType; - } + let screenshotType: string = "png"; + if (["png", "jpg", "jpeg"].indexOf(vscode.workspace.getConfiguration("mjml").screenshotType)) { + screenshotType = vscode.workspace.getConfiguration("mjml").screenshotType; + } + if (vscode.workspace.getConfiguration("mjml").showSaveDialog) { + vscode.window.showSaveDialog({ + defaultUri: vscode.Uri.file(path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${defaultFileName}.${screenshotType}`)), + filters: { + Images: ["png", "jpg", "jpeg"] + } + }).then((fileUri: vscode.Uri) => { + if (fileUri) { + this.takeScreenshot(multiple, fileUri.fsPath, content, width, screenshotType); + } + }); + } + else { vscode.window.showInputBox({ prompt: "Filename", placeHolder: "Enter a filename.", @@ -65,41 +100,31 @@ export default class Screenshot { fileName = fileName ? fileName.replace(/\.[^\.]+$/, "") : defaultFileName; let file: string = path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${fileName}.${screenshotType}`); - if (multiple) { - let width: (string | number)[] = vscode.workspace.getConfiguration("mjml").screenshotWidths; - - if (width) { - width.forEach((width: string | number) => { - let tmpFileName: string = fileName + "_" + width; - let file: string = path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${tmpFileName}.${screenshotType}`); + this.takeScreenshot(multiple, file, content, width, screenshotType); + }); + } + } - this.webshot(content, width, file, tmpFileName, screenshotType); - }); - } - else { - this.webshot(content, defaultWidth, file, fileName, screenshotType); - } - } - else { - vscode.window.showInputBox({ - prompt: "Width", - placeHolder: `Enter image width (${defaultWidth}px).`, - value: defaultWidth.toString() - }).then((width: any) => { - if (!width) { - return; - } + private takeScreenshot(multiple: boolean, file: string, content: string, width: any, screenshotType: string): void { + if (multiple) { + let width: (string | number)[] = vscode.workspace.getConfiguration("mjml").screenshotWidths; + let fileName: string = path.basename(file).split(".").slice(0, -1).join("."); - width = parseInt(width.replace(/[^0-9\.]+/g, "")); - if (!width || Number.isNaN(parseInt(width))) { - width = defaultWidth; - } + if (width) { + width.forEach((width: string | number) => { + let tmpFileName: string = fileName + "_" + width; + let file: string = path.resolve(vscode.window.activeTextEditor.document.uri.fsPath, `../${tmpFileName}.${screenshotType}`); - this.webshot(content, width, file, fileName, screenshotType); - }); - } - }); - }, true); + this.webshot(content, width, file, tmpFileName, screenshotType); + }); + } + else { + this.webshot(content, width, file, fileName, screenshotType); + } + } + else { + this.webshot(content, width, file, file, screenshotType); + } } private webshot(htmlDocument: string, width: any, file: string, fileName: string, screenshotType: string): void { @@ -116,7 +141,12 @@ export default class Screenshot { siteType: "html", streamType: screenshotType }, (err: any) => { - vscode.window.showInformationMessage("Successfully saved screenshot " + fileName + "." + screenshotType); + if (err) { + vscode.window.showErrorMessage(err.message); + } + else { + vscode.window.showInformationMessage(`Successfully saved screenshot ${fileName}.${screenshotType}`); + } }); } diff --git a/syntaxes/MJML.tmLanguage b/syntaxes/MJML.tmLanguage new file mode 100644 index 0000000..5370382 --- /dev/null +++ b/syntaxes/MJML.tmLanguage @@ -0,0 +1,1074 @@ + + + + + fileTypes + + mjml + + firstLineMatch + <!(?i:DOCTYPE)|<(?i:mjml)|<\?(?i:php) + foldingStartMarker + (?x) + (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)\b.*?> + |<!--(?!.*--\s*>) + |^<!--\ \#tminclude\ (?>.*?-->)$ + |<\?(?:php)?.*\b(if|for(each)?|while)\b.+: + |\{\{?(if|foreach|capture|literal|foreach|php|section|strip) + |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/))) + ) + foldingStopMarker + (?x) + (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|li|form|dl)> + |^(?!.*?<!--).*?--\s*> + |^<!--\ end\ tminclude\ -->$ + |<\?(?:php)?.*\bend(if|for(each)?|while)\b + |\{\{?/(if|foreach|capture|literal|foreach|php|section|strip) + |^[^{]*\} + ) + keyEquivalent + ^~H + name + MJML + patterns + + + begin + (<)([a-zA-Z0-9\-:]++)(?=[^>]*></\2>) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.mjml + + + end + (>)(<)(/)(\2)(>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + 2 + + name + punctuation.definition.tag.begin.mjml meta.scope.between-tag-pair.mjml + + 3 + + name + punctuation.definition.tag.begin.mjml + + 4 + + name + entity.name.tag.mjml + + 5 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.any.mjml + patterns + + + include + #tag-stuff + + + + + begin + (<\?)(xml) + captures + + 1 + + name + punctuation.definition.tag.mjml + + 2 + + name + entity.name.tag.xml.mjml + + + end + (\?>) + name + meta.tag.preprocessor.xml.mjml + patterns + + + include + #tag-generic-attribute + + + include + #string-double-quoted + + + include + #string-single-quoted + + + + + begin + <!-- + captures + + 0 + + name + punctuation.definition.comment.mjml + + + end + --\s*> + name + comment.block.mjml + patterns + + + match + -- + name + invalid.illegal.bad-comments-or-CDATA.mjml + + + include + #embedded-code + + + + + begin + <! + captures + + 0 + + name + punctuation.definition.tag.mjml + + + end + > + name + meta.tag.sgml.mjml + patterns + + + begin + (?i:DOCTYPE) + captures + + 1 + + name + entity.name.tag.doctype.mjml + + + end + (?=>) + name + meta.tag.sgml.doctype.mjml + patterns + + + match + "[^">]*" + name + string.quoted.double.doctype.identifiers-and-DTDs.mjml + + + + + begin + \[CDATA\[ + end + ]](?=>) + name + constant.other.inline-data.mjml + + + match + (\s*)(?!--|>)\S(\s*) + name + invalid.illegal.bad-comments-or-CDATA.mjml + + + + + include + #embedded-code + + + begin + (?:^\s+)?(<)((?i:mj-style))\b(?![^>]*/>) + captures + + 1 + + name + punctuation.definition.tag.html + + 2 + + name + entity.name.tag.style.html + + 3 + + name + punctuation.definition.tag.html + + + end + (</)((?i:mj-style))(>)(?:\s*\n)? + name + source.css.embedded.html + patterns + + + include + #tag-stuff + + + begin + (>) + beginCaptures + + 1 + + name + punctuation.definition.tag.html + + + end + (?=</(?i:mj-style)) + patterns + + + include + #embedded-code + + + include + source.css + + + + + + + begin + (?:^\s+)?(<)((?i:style))\b(?![^>]*/>) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.style.mjml + + + end + (?<=</(?:[sS][tT][yY][lL][eE]))(>)(?:\s*\n)? + endCaptures + + 2 + + name + punctuation.definition.tag.mjml + + + name + meta.tag.style.mjml + patterns + + + include + #tag-stuff + + + begin + (?<!</(?:[sS][tT][yY][lL][eE]))(>) + captures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.style.mjml + + + end + (</)((?i:style)) + contentName + source.css.embedded.mjml + patterns + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.css + + + end + \*/|(?=</[sS][tT][yY][lL][eE]) + name + comment.block.css + + + include + source.css + + + + + + + begin + (?:^\s+)?(<)((?i:script))\b(?![^>]*/>)(?!.*type=["']text/(?:temp‌​late|mjml)['"]) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.script.mjml + + + end + (?<=</([sS][cC][rR][iI][pP][tT]))(>)(?:\s*\n)? + endCaptures + + 2 + + name + punctuation.definition.tag.mjml + + + name + meta.tag.script.mjml + patterns + + + include + #tag-stuff + + + begin + (?<!</(?:[sS][cC][rR][iI][pP][tT]))(>) + captures + + 1 + + name + punctuation.definition.tag.end.mjml + + 2 + + name + entity.name.tag.script.mjml + + + end + (</)((?i:script)) + contentName + source.js.embedded.mjml + patterns + + + captures + + 1 + + name + punctuation.definition.comment.js + + + match + (//).*?((?=</[sS][cC][rR][iI][pP][tT])|$\n?) + name + comment.line.double-slash.js + + + begin + /\* + captures + + 0 + + name + punctuation.definition.comment.js + + + end + \*/|(?=</[sS][cC][rR][iI][pP][tT]) + name + comment.block.js + + + include + #php + + + include + source.js + + + + + + + begin + (</?)((?i:body|head|mjml)\b) + captures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.structure.any.mjml + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.structure.any.mjml + patterns + + + include + #tag-stuff + + + + + begin + (</?)(((:*[a-z-])+|([a-z_])+)\b) + captures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.structure.any.mjml + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.structure.any.mjml + patterns + + + include + #tag-stuff + + + + + begin + (</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.block.any.mjml + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.block.any.mjml + patterns + + + include + #tag-stuff + + + + + begin + (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|mjml|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.inline.any.mjml + + + end + ((?: ?/)?>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.inline.any.mjml + patterns + + + include + #tag-stuff + + + + + begin + (</?)([a-zA-Z0-9:]+) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.other.mjml + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.other.mjml + patterns + + + include + #tag-stuff + + + + + include + #entities + + + match + <> + name + invalid.illegal.incomplete.mjml + + + match + < + name + invalid.illegal.bad-angle-bracket.mjml + + + begin + (</?)((?i:[a-z-]+)\b) + beginCaptures + + 1 + + name + punctuation.definition.tag.begin.mjml + + 2 + + name + entity.name.tag.block.any.mjml + + + end + (>) + endCaptures + + 1 + + name + punctuation.definition.tag.end.mjml + + + name + meta.tag.block.any.mjml + patterns + + + include + #tag-stuff + + + + + repository + + embedded-code + + patterns + + + include + #ruby + + + include + #php + + + include + #python + + + + entities + + patterns + + + captures + + 1 + + name + punctuation.definition.entity.mjml + + 3 + + name + punctuation.definition.entity.mjml + + + match + (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) + name + constant.character.entity.mjml + + + match + & + name + invalid.illegal.bad-ampersand.mjml + + + + php + + begin + (?=(^\s*)?<\?) + end + (?!(^\s*)?<\?) + patterns + + + include + source.php + + + + python + + begin + (?:^\s*)<\?python(?!.*\?>) + end + \?>(?:\s*$\n)? + contentName + source.python.embedded.mjml + patterns + + + include + source.python + + + + ruby + + patterns + + + begin + <%+# + captures + + 0 + + name + punctuation.definition.comment.erb + + + end + %> + name + comment.block.erb + + + begin + <%+(?!>)=? + captures + + 0 + + name + punctuation.section.embedded.ruby + + + end + -?%> + contentName + source.ruby.embedded.mjml + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby + + + match + (#).*?(?=-?%>) + name + comment.line.number-sign.ruby + + + include + source.ruby + + + + + begin + <\?r(?!>)=? + captures + + 0 + + name + punctuation.section.embedded.ruby.nitro + + + end + -?\?> + contentName + source.ruby.nitro.embedded.mjml + patterns + + + captures + + 1 + + name + punctuation.definition.comment.ruby.nitro + + + match + (#).*?(?=-?\?>) + name + comment.line.number-sign.ruby.nitro + + + include + source.ruby + + + + + + string-double-quoted + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.mjml + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.mjml + + + name + string.quoted.double.mjml + patterns + + + include + #embedded-code + + + include + #entities + + + + string-single-quoted + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.mjml + + + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.mjml + + + name + string.quoted.single.mjml + patterns + + + include + #embedded-code + + + include + #entities + + + + tag-generic-attribute + + match + \b([a-zA-Z\-:]+) + name + entity.other.attribute-name.mjml + + tag-id-attribute + + begin + \b(id)\b\s*(=) + captures + + 1 + + name + entity.other.attribute-name.id.mjml + + 2 + + name + punctuation.separator.key-value.mjml + + + end + (?<='|") + name + meta.attribute-with-value.id.mjml + patterns + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.mjml + + + contentName + meta.toc-list.id.mjml + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.mjml + + + name + string.quoted.double.mjml + patterns + + + include + #embedded-code + + + include + #entities + + + + + begin + ' + beginCaptures + + 0 + + name + punctuation.definition.string.begin.mjml + + + contentName + meta.toc-list.id.mjml + end + ' + endCaptures + + 0 + + name + punctuation.definition.string.end.mjml + + + name + string.quoted.single.mjml + patterns + + + include + #embedded-code + + + include + #entities + + + + + + tag-stuff + + patterns + + + include + #tag-id-attribute + + + include + #tag-generic-attribute + + + include + #string-double-quoted + + + include + #string-single-quoted + + + include + #embedded-code + + + + + scopeName + text.mjml.basic + uuid + 17994EC8-6B1D-11D9-AC3A-000D93589AF6 + + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 39999ca..fcc21d2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "rootDir": "src" }, "exclude": [ - "node_modules" + "node_modules", + "documentation" ] } \ No newline at end of file