diff --git a/package.json b/package.json
index edb54da86da..924bec951c3 100644
--- a/package.json
+++ b/package.json
@@ -86,6 +86,7 @@
"postcss-modules": "^0.8.0",
"posthtml-include": "^1.1.0",
"prettier": "^1.9.1",
+ "pug": "^2.0.3",
"rimraf": "^2.6.1",
"sinon": "^4.2.2",
"sourcemap-validator": "^1.0.6",
diff --git a/src/Parser.js b/src/Parser.js
index 759e0e55c7c..c5c82725fbb 100644
--- a/src/Parser.js
+++ b/src/Parser.js
@@ -42,6 +42,9 @@ class Parser {
this.registerExtension('vert', './assets/GLSLAsset');
this.registerExtension('frag', './assets/GLSLAsset');
+ this.registerExtension('jade', './assets/PugAsset');
+ this.registerExtension('pug', './assets/PugAsset');
+
let extensions = options.extensions || {};
for (let ext in extensions) {
this.registerExtension(ext, extensions[ext]);
diff --git a/src/assets/PugAsset.js b/src/assets/PugAsset.js
new file mode 100644
index 00000000000..33af2b2f05e
--- /dev/null
+++ b/src/assets/PugAsset.js
@@ -0,0 +1,39 @@
+const path = require('path');
+const Asset = require('../Asset');
+const localRequire = require('../utils/localRequire');
+
+class PugAsset extends Asset {
+ constructor(name, pkg, options) {
+ super(name, pkg, options);
+ this.type = 'html';
+ }
+
+ async generate() {
+ const pug = await localRequire('pug', this.name);
+ const config =
+ (await this.getConfig(['.pugrc', '.pugrc.js', 'pug.config.js'])) || {};
+
+ const compiled = pug.compile(this.contents, {
+ compileDebug: false,
+ filename: this.name,
+ basedir: path.dirname(this.name),
+ pretty: !this.options.minify,
+ templateName: path.basename(this.basename, path.extname(this.basename)),
+ filters: config.filters,
+ filterOptions: config.filterOptions,
+ filterAliases: config.filterAliases
+ });
+
+ if (compiled.dependencies) {
+ for (let item of compiled.dependencies) {
+ this.addDependency(item, {
+ includedInParent: true
+ });
+ }
+ }
+
+ return compiled();
+ }
+}
+
+module.exports = PugAsset;
diff --git a/test/integration/pug-filters/.pugrc.js b/test/integration/pug-filters/.pugrc.js
new file mode 100644
index 00000000000..7bdd70b075e
--- /dev/null
+++ b/test/integration/pug-filters/.pugrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ filters: {
+ 'custom-filter': function (text, options) {
+ return 'FILTERED: ' + text;
+ }
+ }
+}
diff --git a/test/integration/pug-filters/index.pug b/test/integration/pug-filters/index.pug
new file mode 100644
index 00000000000..62cf6580ff1
--- /dev/null
+++ b/test/integration/pug-filters/index.pug
@@ -0,0 +1,2 @@
+:custom-filter()
+ Hello!
diff --git a/test/integration/pug-include-extends/base.pug b/test/integration/pug-include-extends/base.pug
new file mode 100644
index 00000000000..dc4484b080b
--- /dev/null
+++ b/test/integration/pug-include-extends/base.pug
@@ -0,0 +1,4 @@
+doctype html
+html
+ body
+ block content
diff --git a/test/integration/pug-include-extends/expect.html b/test/integration/pug-include-extends/expect.html
new file mode 100644
index 00000000000..2297dc6f052
--- /dev/null
+++ b/test/integration/pug-include-extends/expect.html
@@ -0,0 +1,6 @@
+
+
+
+ Yep, it's working!
+
+
\ No newline at end of file
diff --git a/test/integration/pug-include-extends/index.pug b/test/integration/pug-include-extends/index.pug
new file mode 100644
index 00000000000..bf78263f1a7
--- /dev/null
+++ b/test/integration/pug-include-extends/index.pug
@@ -0,0 +1,4 @@
+extends ./base.pug
+
+block content
+ include other.pug
diff --git a/test/integration/pug-include-extends/other.pug b/test/integration/pug-include-extends/other.pug
new file mode 100644
index 00000000000..9c9550484a3
--- /dev/null
+++ b/test/integration/pug-include-extends/other.pug
@@ -0,0 +1 @@
+h1 Yep, it's working!
diff --git a/test/integration/pug-minify/index.pug b/test/integration/pug-minify/index.pug
new file mode 100644
index 00000000000..362dbd62064
--- /dev/null
+++ b/test/integration/pug-minify/index.pug
@@ -0,0 +1,6 @@
+doctype html
+html
+ head
+ title Minify
+ body
+ h1 Minified
diff --git a/test/integration/pug-mixins/index.pug b/test/integration/pug-mixins/index.pug
new file mode 100644
index 00000000000..4653a52fd13
--- /dev/null
+++ b/test/integration/pug-mixins/index.pug
@@ -0,0 +1,8 @@
+include ./mixins.pug
+
+doctype html
+html
+ head
+ title Pug variables
+ body
+ +greetings('Parcel')
diff --git a/test/integration/pug-mixins/mixins.pug b/test/integration/pug-mixins/mixins.pug
new file mode 100644
index 00000000000..21118568355
--- /dev/null
+++ b/test/integration/pug-mixins/mixins.pug
@@ -0,0 +1,2 @@
+mixin greetings(name)
+ h1 Greetings, #{name}
diff --git a/test/integration/pug-var/100x100.png b/test/integration/pug-var/100x100.png
new file mode 100644
index 00000000000..8a1daa0121d
Binary files /dev/null and b/test/integration/pug-var/100x100.png differ
diff --git a/test/integration/pug-var/index.pug b/test/integration/pug-var/index.pug
new file mode 100644
index 00000000000..f93efa9e041
--- /dev/null
+++ b/test/integration/pug-var/index.pug
@@ -0,0 +1,7 @@
+doctype html
+html
+ head
+ title Pug variables
+ body
+ - var image = './100x100.png'
+ img(src=image, alt='100x100')
diff --git a/test/integration/pug/100x100.png b/test/integration/pug/100x100.png
new file mode 100644
index 00000000000..8a1daa0121d
Binary files /dev/null and b/test/integration/pug/100x100.png differ
diff --git a/test/integration/pug/icons.svg b/test/integration/pug/icons.svg
new file mode 100644
index 00000000000..21f0a75277c
--- /dev/null
+++ b/test/integration/pug/icons.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/test/integration/pug/index.css b/test/integration/pug/index.css
new file mode 100644
index 00000000000..67ce83e4d09
--- /dev/null
+++ b/test/integration/pug/index.css
@@ -0,0 +1,3 @@
+body {
+ background: red;
+}
diff --git a/test/integration/pug/index.js b/test/integration/pug/index.js
new file mode 100644
index 00000000000..f096229a664
--- /dev/null
+++ b/test/integration/pug/index.js
@@ -0,0 +1 @@
+alert('Hi');
diff --git a/test/integration/pug/index.pug b/test/integration/pug/index.pug
new file mode 100644
index 00000000000..a3111fd7fb0
--- /dev/null
+++ b/test/integration/pug/index.pug
@@ -0,0 +1,16 @@
+doctype html
+html
+ head
+ link(rel='stylesheet', href='index.css')
+ meta(property='og:image', content='100x100.png')
+ body
+ h1 Hello world
+ a(href='#hash_link') Hash link
+ a(href='mailto:someone@acme.com') Mailto link
+ a(href='tel:+33636757575') Tel link
+ script(src='index.js')
+ script(src='https://unpkg.com/parcel-bundler')
+ i hello
+ i world
+ svg
+ use(href='icons.svg#icon-repo-pull')
diff --git a/test/pug.js b/test/pug.js
new file mode 100644
index 00000000000..c9a578ad014
--- /dev/null
+++ b/test/pug.js
@@ -0,0 +1,120 @@
+const assert = require('assert');
+const fs = require('fs');
+const {bundle, assertBundleTree} = require('./utils');
+
+describe('pug', function() {
+ it('should support bundling HTML', async function() {
+ const b = await bundle(__dirname + '/integration/pug/index.pug');
+
+ assertBundleTree(b, {
+ name: 'index.html',
+ assets: ['index.pug'],
+ childBundles: [
+ {
+ type: 'png',
+ assets: ['100x100.png'],
+ childBundles: []
+ },
+ {
+ type: 'svg',
+ assets: ['icons.svg'],
+ childBundles: []
+ },
+ {
+ type: 'css',
+ assets: ['index.css'],
+ childBundles: []
+ },
+ {
+ type: 'js',
+ assets: ['index.js'],
+ childBundles: [
+ {
+ type: 'map'
+ }
+ ]
+ }
+ ]
+ });
+
+ const files = fs.readdirSync(__dirname + '/dist');
+ const html = fs.readFileSync(__dirname + '/dist/index.html');
+ for (const file of files) {
+ const ext = file.match(/\.([0-9a-z]+)(?:[?#]|$)/i)[0];
+ if (file !== 'index.html' && ext !== '.map') {
+ assert(html.includes(file));
+ }
+ }
+ });
+
+ it('should support include and extends files', async function() {
+ const b = await bundle(
+ __dirname + '/integration/pug-include-extends/index.pug'
+ );
+
+ assertBundleTree(b, {
+ name: 'index.html',
+ assets: ['index.pug']
+ });
+
+ const html = fs.readFileSync(__dirname + '/dist/index.html', 'utf-8');
+ const expect = fs.readFileSync(
+ __dirname + '/integration/pug-include-extends/expect.html',
+ 'utf-8'
+ );
+
+ assert.equal(html, expect, 'Content mismatch');
+ });
+
+ it('should support variables', async function() {
+ const b = await bundle(__dirname + '/integration/pug-var/index.pug');
+
+ assertBundleTree(b, {
+ name: 'index.html',
+ assets: ['index.pug']
+ });
+
+ const html = fs.readFileSync(__dirname + '/dist/index.html', 'utf-8');
+
+ assert(/src="\/?100x100.*.png"/.test(html));
+ });
+
+ it('should support mixins', async function() {
+ const b = await bundle(__dirname + '/integration/pug-mixins/index.pug');
+
+ assertBundleTree(b, {
+ name: 'index.html',
+ assets: ['index.pug']
+ });
+
+ const html = fs.readFileSync(__dirname + '/dist/index.html', 'utf-8');
+ assert(html.includes('Greetings, Parcel'));
+ });
+
+ it('should support filters', async function() {
+ const b = await bundle(__dirname + '/integration/pug-filters/index.pug');
+
+ assertBundleTree(b, {
+ name: 'index.html',
+ assets: ['index.pug']
+ });
+
+ const html = fs.readFileSync(__dirname + '/dist/index.html', 'utf-8');
+ assert(html.includes('FILTERED: Hello!'));
+ });
+
+ it('should minify HTML in production mode', async function() {
+ const b = await bundle(__dirname + '/integration/pug-minify/index.pug', {
+ production: true
+ });
+
+ assertBundleTree(b, {
+ name: 'index.html',
+ assets: ['index.pug']
+ });
+
+ const html = fs.readFileSync(__dirname + '/dist/index.html', 'utf-8');
+
+ assert(html.includes('Minified'));
+ });
+});
diff --git a/yarn.lock b/yarn.lock
index 479a0ecc052..0d54350d53a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8,20 +8,40 @@
dependencies:
samsam "1.3.0"
+"@types/babel-types@*", "@types/babel-types@^7.0.0":
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.1.tgz#1405e5396968c4302994b0161ce405b72b874257"
+
+"@types/babylon@^6.16.2":
+ version "6.16.2"
+ resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.2.tgz#062ce63b693d9af1c246f5aedf928bc9c30589c8"
+ dependencies:
+ "@types/babel-types" "*"
+
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+acorn-globals@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
+ dependencies:
+ acorn "^4.0.4"
+
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
dependencies:
acorn "^3.0.4"
-acorn@^3.0.4:
+acorn@^3.0.4, acorn@^3.1.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+acorn@^4.0.4, acorn@~4.0.2:
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+
acorn@^5.0.0, acorn@^5.5.0:
version "5.5.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
@@ -1113,6 +1133,12 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
+character-parser@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0"
+ dependencies:
+ is-regex "^1.0.3"
+
chardet@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
@@ -1180,6 +1206,12 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
+clean-css@^4.1.11:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a"
+ dependencies:
+ source-map "0.5.x"
+
cli-cursor@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
@@ -1383,6 +1415,15 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+constantinople@^3.0.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647"
+ dependencies:
+ "@types/babel-types" "^7.0.0"
+ "@types/babylon" "^6.16.2"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+
constants-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
@@ -1798,6 +1839,10 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
+doctypes@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9"
+
dom-serializer@0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -3053,6 +3098,13 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
+is-expression@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f"
+ dependencies:
+ acorn "~4.0.2"
+ object-assign "^4.0.1"
+
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -3185,7 +3237,7 @@ is-primitive@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-is-promise@^2.1.0:
+is-promise@^2.0.0, is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
@@ -3193,7 +3245,7 @@ is-property@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
-is-regex@^1.0.4:
+is-regex@^1.0.3, is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
dependencies:
@@ -3344,6 +3396,10 @@ js-beautify@^1.7.5:
mkdirp "~0.5.0"
nopt "~3.0.1"
+js-stringify@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
+
js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
@@ -3436,6 +3492,13 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
+jstransformer@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"
+ dependencies:
+ is-promise "^2.0.0"
+ promise "^7.0.1"
+
just-extend@^1.1.27:
version "1.1.27"
resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905"
@@ -5072,7 +5135,7 @@ progress@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
-promise@^7.1.1:
+promise@^7.0.1, promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
dependencies:
@@ -5100,6 +5163,99 @@ public-encrypt@^4.0.0:
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
+pug-attrs@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.3.tgz#a3095f970e64151f7bdad957eef55fb5d7905d15"
+ dependencies:
+ constantinople "^3.0.1"
+ js-stringify "^1.0.1"
+ pug-runtime "^2.0.4"
+
+pug-code-gen@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.1.tgz#0951ec83225d74d8cfc476a7f99a259b5f7d050c"
+ dependencies:
+ constantinople "^3.0.1"
+ doctypes "^1.1.0"
+ js-stringify "^1.0.1"
+ pug-attrs "^2.0.3"
+ pug-error "^1.3.2"
+ pug-runtime "^2.0.4"
+ void-elements "^2.0.1"
+ with "^5.0.0"
+
+pug-error@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.2.tgz#53ae7d9d29bb03cf564493a026109f54c47f5f26"
+
+pug-filters@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.0.tgz#27165555bc04c236e4aa2b0366246dfa021b626e"
+ dependencies:
+ clean-css "^4.1.11"
+ constantinople "^3.0.1"
+ jstransformer "1.0.0"
+ pug-error "^1.3.2"
+ pug-walk "^1.1.7"
+ resolve "^1.1.6"
+ uglify-js "^2.6.1"
+
+pug-lexer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.0.0.tgz#210c18457ef2e1760242740c5e647bd794cec278"
+ dependencies:
+ character-parser "^2.1.1"
+ is-expression "^3.0.0"
+ pug-error "^1.3.2"
+
+pug-linker@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.5.tgz#9e9a7ae4005682d027deeb96b000f88eeb83a02f"
+ dependencies:
+ pug-error "^1.3.2"
+ pug-walk "^1.1.7"
+
+pug-load@^2.0.11:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.11.tgz#e648e57ed113fe2c1f45d57858ea2bad6bc01527"
+ dependencies:
+ object-assign "^4.1.0"
+ pug-walk "^1.1.7"
+
+pug-parser@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.0.tgz#e394ad9b3fca93123940aff885c06e44ab7e68e4"
+ dependencies:
+ pug-error "^1.3.2"
+ token-stream "0.0.1"
+
+pug-runtime@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.4.tgz#e178e1bda68ab2e8c0acfc9bced2c54fd88ceb58"
+
+pug-strip-comments@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.3.tgz#f1559592206edc6f85310dacf4afb48a025af59f"
+ dependencies:
+ pug-error "^1.3.2"
+
+pug-walk@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.7.tgz#c00d5c5128bac5806bec15d2b7e7cdabe42531f3"
+
+pug@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.3.tgz#71cba82537c95a5eab7ed04696e4221f53aa878e"
+ dependencies:
+ pug-code-gen "^2.0.1"
+ pug-filters "^3.1.0"
+ pug-lexer "^4.0.0"
+ pug-linker "^3.0.5"
+ pug-load "^2.0.11"
+ pug-parser "^5.0.0"
+ pug-runtime "^2.0.4"
+ pug-strip-comments "^1.0.3"
+
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
@@ -5449,7 +5605,7 @@ resolve@^0.6.1:
version "0.6.3"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46"
-resolve@^1.0.0:
+resolve@^1.0.0, resolve@^1.1.6:
version "1.6.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c"
dependencies:
@@ -5770,6 +5926,10 @@ source-map@0.1.x, source-map@~0.1.x:
dependencies:
amdefine ">=0.0.4"
+source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+
source-map@0.6.1, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@@ -5780,10 +5940,6 @@ source-map@^0.4.2, source-map@^0.4.4:
dependencies:
amdefine ">=0.0.4"
-source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
sourcemap-validator@^1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/sourcemap-validator/-/sourcemap-validator-1.0.7.tgz#d76aaadbe2c6ec269293b5f212100fad91eef260"
@@ -6190,6 +6346,10 @@ to-regex@^3.0.1:
regex-not "^1.0.2"
safe-regex "^1.1.0"
+token-stream@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"
+
toml@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb"
@@ -6261,7 +6421,7 @@ uglify-es@^3.2.1:
commander "~2.13.0"
source-map "~0.6.1"
-uglify-js@^2.6:
+uglify-js@^2.6, uglify-js@^2.6.1:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
dependencies:
@@ -6415,6 +6575,10 @@ vm-browserify@0.0.4:
dependencies:
indexof "0.0.1"
+void-elements@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+
whet.extend@~0.9.9:
version "0.9.9"
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
@@ -6443,6 +6607,13 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+with@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe"
+ dependencies:
+ acorn "^3.1.0"
+ acorn-globals "^3.0.0"
+
wordwrap@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"