From 3903194ceef241e2a952dd414921a30a9b95e594 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sun, 7 Oct 2018 10:04:18 -0400 Subject: [PATCH 01/60] Trivial: fix spacing in History.md. --- History.md | 1 + 1 file changed, 1 insertion(+) diff --git a/History.md b/History.md index 9ab4345399..53e80785fc 100644 --- a/History.md +++ b/History.md @@ -8,6 +8,7 @@ N/A ### Migration Steps * Update the `@babel/runtime` npm package to version 7.0.0 or later: + ```sh meteor npm install @babel/runtime@latest ``` From 2df1930bb08f7fae004f41373d3e2c23f8eec9b3 Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Tue, 9 Oct 2018 20:02:46 +0200 Subject: [PATCH 02/60] Update Roadmap.md (#10254) For even more details about upcoming work, see the 1.8 release blog post: https://blog.meteor.com/meteor-1-8-erases-the-debts-of-1-7-77af4c931fe3 --- Roadmap.md | 66 ++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/Roadmap.md b/Roadmap.md index 75cff6657e..09dd9b01dd 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -2,7 +2,7 @@ # Meteor Roadmap -**Up to date as of April 19, 2018** +**Up to date as of October 9, 2018** This document describes the high level features the Meteor project maintainers have decided to prioritize in the near- to medium-term future. A large fraction of the maintainers’ time will be dedicated to working on the features described here. As with any roadmap, this is a living document that will evolve as priorities and dependencies shift; we aim to update the roadmap with any changes or status updates on a monthly basis. @@ -10,18 +10,6 @@ Contributors are encouraged to focus their efforts on work that aligns with the Items can be added to this roadmap by first getting design approval for a solution to an open issue, as outlined by our [contributing guidelines](https://github.com/meteor/meteor/blob/devel/CONTRIBUTING.md). Then, when a contributor has committed to solving the issue in the short to medium term, they can submit a PR to add that work to the roadmap. All other PRs to the roadmap will be rejected. -## Different JS bundles for modern versus legacy browsers - -*Pull request: https://github.com/meteor/meteor/pull/9439* - -Despite amazing progress in the latest versions of popular web browsers to support the vast majority of the ECMAScript specification, most web applications are still forced to compile their JavaScript for the oldest browsers they want to support, which means native support for the latest features is usually off-limits. - -Starting in Meteor 1.6.2, Meteor will build two different client JS bundles, one for modern browsers (`web.browser`) and another for legacy browsers (`web.browser.legacy` and `web.cordova`), in addition to the server bundle which targets Node 8. Package authors can use these architectures to include files only in legacy browsers, or only in modern browsers, while also setting minimum browser versions for the native features they require. As of this writing, modern browsers are loosely defined as any browsers with native support for `async` functions and `await` expressions, which represents [more than 80% of web usage today](https://caniuse.com/#feat=async-functions). - -While it was tempting to compile even more bundles for different categories of browser support, the reality of the web today is that most users have access to self-updating "evergreen" browsers, with nearly complete ECMAScript support, and the market share of evergreen browsers is only going to increase with time. For everyone else, Meteor will automatically provide the same level of compilation provided to everyone by Meteor 1.6.1 and before. It's also a lot easier to test two different bundles in representative browsers than it is to test a whole matrix of possibilities. - -As a result of these changes, a typical new Meteor app will have a modern client JS bundle that is one quarter to one third the size of the legacy JS bundle. A new app created with `meteor create --release 1.6.2-beta.12 --minimal new-app` will have a modern JS bundle just 15KB in size (minified + gzip), for example. - ## Out of the box support for advanced React features React is the most popular way to build UIs in JavaScript today, and a great companion to the rest of the features provided by Meteor. Meteor's zero-configuration environment provides a great opportunity to make features React apps depend on work out of the box. This includes features like: @@ -35,25 +23,6 @@ We think Meteor has a clear set of benefits when compared to other popular React ## Remove blockers to Meteor adoption -### Support the latest stable version of Node - -*Tracking pull request: https://github.com/meteor/meteor/pull/8728* - -See [above](https://github.com/meteor/meteor/blob/devel/Roadmap.md#upgrade-to-node-8). Developers deserve to use the latest underlying technologies, and Meteor is uniquely able to smooth over any rough edges in early/experimental versions of technologies like Node. A number of developers are already using beta versions of Meteor 1.6 to deploy their apps, because the benefits outweigh the risks for them. Just as Meteor 1.5 climbed to more than 50% usage in less than two months, we expect Meteor 1.6 to become the most widely used version of Meteor soon after its release. - -### Eliminate the need for an `imports` directory - -*Status: possible using `meteor.mainModule` in `package.json` in `1.6.2-beta.12`.* -*Pull requests: https://github.com/meteor/meteor/pull/9690, https://github.com/meteor/meteor/pull/9714, https://github.com/meteor/meteor/pull/9715* - -When Meteor 1.3 first introduced a module system based on [CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1) and [ECMAScript module syntax](2ality.com/2014/09/es6-modules-final.html), we had to provide a way for developers to migrate their apps from the old ways of loading code, whereby all files were evaluated eagerly during application startup. - -The best solution at the time was to introduce a special `imports` directory to contain modules that should be loaded lazily (rather than eagerly), when first imported. - -Most other Node applications work this way by default: every module is lazy, and therefore must be imported by another module, and evaluation starts with one "entry point" module (typically specified by the `"main"` field in `package.json`). - -It should be possible for Meteor apps to opt into this behavior, and optionally get rid of their special `imports` directories. The mechanism for opting in will very likely involve putting something in your `package.json` file that specifies entry point modules for both client and server. - ### Make the `meteor` command-line tool installable from npm Installing `meteor` from npm would enable developers to use it as build tool for npm-based projects, and would simplify the Meteor release process by getting rid of the "dev bundle" (essentially the npm dependencies of the command-line tool). @@ -103,10 +72,33 @@ Apollo is our approach to giving Meteor developers SQL and other database suppor Even though Apollo could eventually be a complete replacement for Meteor’s included Mongo/DDP data stack, you should feel good about Meteor’s existing data system. We are currently open to ideas around performance and stability improvements. - - # **Recently completed** +## Different JS bundles for modern versus legacy browsers + +*Pull request: https://github.com/meteor/meteor/pull/9439* + +Despite amazing progress in the latest versions of popular web browsers to support the vast majority of the ECMAScript specification, most web applications are still forced to compile their JavaScript for the oldest browsers they want to support, which means native support for the latest features is usually off-limits. + +Starting in Meteor 1.6.2, Meteor will build two different client JS bundles, one for modern browsers (`web.browser`) and another for legacy browsers (`web.browser.legacy` and `web.cordova`), in addition to the server bundle which targets Node 8. Package authors can use these architectures to include files only in legacy browsers, or only in modern browsers, while also setting minimum browser versions for the native features they require. As of this writing, modern browsers are loosely defined as any browsers with native support for `async` functions and `await` expressions, which represents [more than 80% of web usage today](https://caniuse.com/#feat=async-functions). + +While it was tempting to compile even more bundles for different categories of browser support, the reality of the web today is that most users have access to self-updating "evergreen" browsers, with nearly complete ECMAScript support, and the market share of evergreen browsers is only going to increase with time. For everyone else, Meteor will automatically provide the same level of compilation provided to everyone by Meteor 1.6.1 and before. It's also a lot easier to test two different bundles in representative browsers than it is to test a whole matrix of possibilities. + +As a result of these changes, a typical new Meteor app will have a modern client JS bundle that is one quarter to one third the size of the legacy JS bundle. A new app created with `meteor create --release 1.6.2-beta.12 --minimal new-app` will have a modern JS bundle just 15KB in size (minified + gzip), for example. + +### Eliminate the need for an `imports` directory + +*Status: possible using `meteor.mainModule` in `package.json` in `1.6.2-beta.12`.* +*Pull requests: https://github.com/meteor/meteor/pull/9690, https://github.com/meteor/meteor/pull/9714, https://github.com/meteor/meteor/pull/9715* + +When Meteor 1.3 first introduced a module system based on [CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1) and [ECMAScript module syntax](2ality.com/2014/09/es6-modules-final.html), we had to provide a way for developers to migrate their apps from the old ways of loading code, whereby all files were evaluated eagerly during application startup. + +The best solution at the time was to introduce a special `imports` directory to contain modules that should be loaded lazily (rather than eagerly), when first imported. + +Most other Node applications work this way by default: every module is lazy, and therefore must be imported by another module, and evaluation starts with one "entry point" module (typically specified by the `"main"` field in `package.json`). + +It should be possible for Meteor apps to opt into this behavior, and optionally get rid of their special `imports` directories. The mechanism for opting in will very likely involve putting something in your `package.json` file that specifies entry point modules for both client and server. + ## Make Mongo more optional *Pull request: https://github.com/meteor/meteor/pull/8999* @@ -115,6 +107,12 @@ Meteor has depended on Mongo for as long as the Meteor project has existed. Howe Since Meteor 1.6.2-beta.9, `meteor create --minimal minimal-app` will create an app with very few packages, without any dependency on Mongo. +### Support the latest stable version of Node + +*Tracking pull request: https://github.com/meteor/meteor/pull/8728* + +See [above](https://github.com/meteor/meteor/blob/devel/Roadmap.md#upgrade-to-node-8). Developers deserve to use the latest underlying technologies, and Meteor is uniquely able to smooth over any rough edges in early/experimental versions of technologies like Node. A number of developers are already using beta versions of Meteor 1.6 to deploy their apps, because the benefits outweigh the risks for them. Just as Meteor 1.5 climbed to more than 50% usage in less than two months, we expect Meteor 1.6 to become the most widely used version of Meteor soon after its release. + ## Upgrade to Node 8 *Status: shipped in Meteor 1.6.* From 9290ea7a06b3662abd0a3126a5c2e7bf29d12f1c Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 10 Oct 2018 14:13:23 -0400 Subject: [PATCH 03/60] Ignore inline source maps when minifying CSS files. https://github.com/meteor/meteor/issues/10112#issuecomment-428646872 Further down in the mergeCss function, when we call CssTools.stringifyCss, we pass the following option: // don't try to read the referenced sourcemaps from the input inputSourcemaps: false Apparently this isn't enough to avoid reading inline source maps from the input file, so we should be a bit more aggressive about preventing postcss from picking up inline source maps. This change mostly affects .css files imported from node_modules, and possibly raw .css files in the application that happen to have inline sourceMappingURL= comments. For CSS output from compiler plugins like LESS and SCSS, we have a totally different mechanism of handling source maps, namely file.getSourceMap(). Should fix #10112. --- packages/standard-minifier-css/plugin/minify-css.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/standard-minifier-css/plugin/minify-css.js b/packages/standard-minifier-css/plugin/minify-css.js index bef5274b94..5a1b962b73 100644 --- a/packages/standard-minifier-css/plugin/minify-css.js +++ b/packages/standard-minifier-css/plugin/minify-css.js @@ -51,6 +51,11 @@ var hashFiles = Profile("hashFiles", function (files) { return hash.digest("hex"); }); +function disableSourceMappingURLs(css) { + return css.replace(/# sourceMappingURL=/g, + "# sourceMappingURL_DISABLED="); +} + // Lints CSS files and merges them into one file, fixing up source maps and // pulling any @import directives up to the top since the CSS spec does not // allow them to appear in the middle of a file. @@ -69,7 +74,8 @@ var mergeCss = Profile("mergeCss", function (css) { originals[filename] = file; try { var parseOptions = { source: filename, position: true }; - var ast = CssTools.parseCss(file.getContentsAsString(), parseOptions); + var css = disableSourceMappingURLs(file.getContentsAsString()); + var ast = CssTools.parseCss(css, parseOptions); ast.filename = filename; } catch (e) { if (e.reason) { From b7267b76a199ba651c3029b5ae7e30fba2f52d4f Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 10 Oct 2018 16:39:38 -0400 Subject: [PATCH 04/60] Use null for sourcesContent[i] if sources[i] unrecognized. Should help with #10112. --- packages/standard-minifier-css/plugin/minify-css.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/standard-minifier-css/plugin/minify-css.js b/packages/standard-minifier-css/plugin/minify-css.js index 5a1b962b73..da99c0cc1c 100644 --- a/packages/standard-minifier-css/plugin/minify-css.js +++ b/packages/standard-minifier-css/plugin/minify-css.js @@ -120,7 +120,8 @@ var mergeCss = Profile("mergeCss", function (css) { // Add the contents of the input files to the source map of the new file stringifiedCss.map.sourcesContent = stringifiedCss.map.sources.map(function (filename) { - return originals[filename].getContentsAsString(); + const file = originals[filename] || null; + return file && file.getContentsAsString(); }); // Compose the concatenated file's source map with source maps from the From 3f30d2208fe0dacfde9563d4dac1e37a45cba1bc Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 10 Oct 2018 16:40:22 -0400 Subject: [PATCH 05/60] Bump standard-minifier-css patch version to 1.5.1. --- packages/standard-minifier-css/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/standard-minifier-css/package.js b/packages/standard-minifier-css/package.js index 5dde075548..d9ea6588f0 100644 --- a/packages/standard-minifier-css/package.js +++ b/packages/standard-minifier-css/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'standard-minifier-css', - version: '1.5.0', + version: '1.5.1', summary: 'Standard css minifier used with Meteor apps by default.', documentation: 'README.md' }); From 65064f40df4cf76215b497edb2a99eb0535dd824 Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Thu, 11 Oct 2018 15:46:26 +0200 Subject: [PATCH 06/60] Fix duplicate WebApp.connectHandlers.use - fix #10265 (#10268) --- packages/oauth/oauth_server.js | 10 +--------- packages/oauth/package.js | 2 +- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/packages/oauth/oauth_server.js b/packages/oauth/oauth_server.js index c84f109c72..2be4dcad89 100644 --- a/packages/oauth/oauth_server.js +++ b/packages/oauth/oauth_server.js @@ -1,4 +1,3 @@ -import Fiber from 'fibers'; import url from 'url'; OAuth = {}; @@ -136,14 +135,6 @@ OAuth._checkRedirectUrlOrigin = redirectUrl => { ); }; - -// Listen to incoming OAuth http requests -WebApp.connectHandlers.use((req, res, next) => { - // Need to create a Fiber since we're using synchronous http calls and nothing - // else is wrapping this in a fiber automatically - Fiber(() => middleware(req, res, next)).run(); -}); - const middleware = (req, res, next) => { // Make sure to catch any exceptions because otherwise we'd crash // the runner @@ -204,6 +195,7 @@ const middleware = (req, res, next) => { } }; +// Listen to incoming OAuth http requests WebApp.connectHandlers.use(middleware); OAuthTest.middleware = middleware; diff --git a/packages/oauth/package.js b/packages/oauth/package.js index e40ea935c6..d740e13a21 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: "1.2.3" + version: "1.2.4" }); Package.onUse(api => { From ed41dcd4a69baa9bbe6ed7402dfec92bbf15dbd4 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 11 Oct 2018 09:47:17 -0400 Subject: [PATCH 07/60] Flatten buildmessage.{enterJob,capture} stacks by not using withValue. (#10266) Whenever you're looking at a stack trace generated by the command-line tool, you see tons and tons of useless stack frames for withValue, enterJob, and/or capture. Each of these function calls has its own try-finally block, which is probably the real reason this pattern is slow, though the excess of unnecessary stack frames is subjectively gross as well. Initial build times for the `meteor create --full` app on my machine are about 4.4 seconds with Meteor 1.8, and just 2.8 seconds after this change, which is a nice 36% improvement. Rebuild times are not noticeably different, however. Looking to the future, flattening this function call pyramid should make it easier to introduce non-Fiber-based async/await into the buildmessage system, so that we can start properly propagating promises up the stack. --- tools/utils/buildmessage.js | 191 +++++++++++++++++++++-------------- tools/utils/fiber-helpers.js | 30 ++++-- 2 files changed, 133 insertions(+), 88 deletions(-) diff --git a/tools/utils/buildmessage.js b/tools/utils/buildmessage.js index e3b0353f74..4e20200704 100644 --- a/tools/utils/buildmessage.js +++ b/tools/utils/buildmessage.js @@ -239,7 +239,7 @@ var addChildTracker = function (title) { // begin capturing errors. Alternately you may pass `options` // (otherwise optional) and a job will be created for you based on // `options`. -var capture = function (options, f) { +function capture(options, f) { var messageSet = new MessageSet; var parentMessageSet = currentMessageSet.get(); @@ -249,40 +249,57 @@ var capture = function (options, f) { } var progress = addChildTracker(title); - currentProgress.withValue(progress, function () { - currentMessageSet.withValue(messageSet, function () { - var job = null; - if (typeof options === "object") { - job = new Job(options); - messageSet.jobs.push(job); - } else { - f = options; // options not actually provided - } + const resetFns = [ + currentProgress.set(progress), + currentMessageSet.set(messageSet), + ]; - currentJob.withValue(job, function () { - var nestingLevel = currentNestingLevel.get(); - currentNestingLevel.withValue(nestingLevel + 1, function () { - var start; - if (debugBuild) { - start = Date.now(); - console.log(spaces(nestingLevel * 2), "START CAPTURE", nestingLevel, options.title, "took " + (end - start)); - } - try { - f(); - } finally { - progress.reportProgressDone(); + let job = null; + if (typeof options === "object") { + job = new Job(options); + messageSet.jobs.push(job); + } else { + f = options; // options not actually provided + } + + resetFns.push(currentJob.set(job)); + + const nestingLevel = currentNestingLevel.get(); + resetFns.push(currentNestingLevel.set(nestingLevel + 1)); + + var start; + if (debugBuild) { + start = Date.now(); + console.log( + spaces(nestingLevel * 2), + "START CAPTURE", + nestingLevel, + options.title, + "took " + (end - start), + ); + } + + try { + f(); + } finally { + progress.reportProgressDone(); + + resetFns.forEach(fn => fn()); + + if (debugBuild) { + var end = Date.now(); + console.log( + spaces(nestingLevel * 2), + "END CAPTURE", + nestingLevel, + options.title, + "took " + (end - start), + ); + } + } - if (debugBuild) { - var end = Date.now(); - console.log(spaces(nestingLevel * 2), "END CAPTURE", nestingLevel, options.title, "took " + (end - start)); - } - } - }); - }); - }); - }); return messageSet; -}; +} // Called from inside capture(), creates a new Job inside the current // MessageSet and run `f` inside of it, so that any messages emitted @@ -296,7 +313,7 @@ var capture = function (options, f) { // - rootPath: the absolute path relative to which paths in messages // in this job should be interpreted (omit if there is no way to map // files that this job talks about back to files on disk) -var enterJob = function (options, f) { +function enterJob(options, f) { if (typeof options === "function") { f = options; options = {}; @@ -321,53 +338,73 @@ var enterJob = function (options, f) { progress = getCurrentProgressTracker().addChildTask(progressOptions); } - return currentProgress.withValue(progress, function () { - if (!currentMessageSet.get()) { - var nestingLevel = currentNestingLevel.get(); - var start; - if (debugBuild) { - start = Date.now(); - console.log(spaces(nestingLevel * 2), "START", nestingLevel, options.title); - } - try { - return currentNestingLevel.withValue(nestingLevel + 1, function () { - return f(); - }); - } finally { - progress.reportProgressDone(); - if (debugBuild) { - var end = Date.now(); - console.log(spaces(nestingLevel * 2), "DONE", nestingLevel, options.title, "took " + (end - start)); - } - } + const resetFns = [ + currentProgress.set(progress), + ]; + + if (!currentMessageSet.get()) { + var nestingLevel = currentNestingLevel.get(); + var start; + if (debugBuild) { + start = Date.now(); + console.log(spaces(nestingLevel * 2), "START", nestingLevel, options.title); } - var job = new Job(options); - var originalJob = currentJob.get(); - originalJob && originalJob.children.push(job); - currentMessageSet.get().jobs.push(job); + resetFns.push(currentNestingLevel.set(nestingLevel + 1)); - return currentJob.withValue(job, function () { - var nestingLevel = currentNestingLevel.get(); - return currentNestingLevel.withValue(nestingLevel + 1, function () { - var start; - if (debugBuild) { - start = Date.now(); - console.log(spaces(nestingLevel * 2), "START", nestingLevel, options.title); - } - try { - return f(); - } finally { - progress.reportProgressDone(); - if (debugBuild) { - var end = Date.now(); - console.log(spaces(nestingLevel * 2), "DONE", nestingLevel, options.title, "took " + (end - start)); - } - } - }); - }); - }); -}; + try { + return f(); + } finally { + progress.reportProgressDone(); + + while (resetFns.length) { + resetFns.pop()(); + } + + if (debugBuild) { + var end = Date.now(); + console.log(spaces(nestingLevel * 2), "DONE", nestingLevel, options.title, "took " + (end - start)); + } + } + } + + var job = new Job(options); + var originalJob = currentJob.get(); + originalJob && originalJob.children.push(job); + currentMessageSet.get().jobs.push(job); + + resetFns.push(currentJob.set(job)); + + var nestingLevel = currentNestingLevel.get(); + resetFns.push(currentNestingLevel.set(nestingLevel + 1)); + + var start; + if (debugBuild) { + start = Date.now(); + console.log(spaces(nestingLevel * 2), "START", nestingLevel, options.title); + } + + try { + return f(); + } finally { + progress.reportProgressDone(); + + while (resetFns.length) { + resetFns.pop()(); + } + + if (debugBuild) { + var end = Date.now(); + console.log( + spaces(nestingLevel * 2), + "DONE", + nestingLevel, + options.title, + "took " + (end - start), + ); + } + } +} // If not inside a job, return false. Otherwise, return true if any // messages (presumably errors) have been recorded for this job diff --git a/tools/utils/fiber-helpers.js b/tools/utils/fiber-helpers.js index c67471d659..e2534d93ba 100644 --- a/tools/utils/fiber-helpers.js +++ b/tools/utils/fiber-helpers.js @@ -59,7 +59,7 @@ exports.EnvironmentVariable = function (defaultValue) { }; _.extend(exports.EnvironmentVariable.prototype, { - get: function () { + get() { var self = this; exports.nodeCodeMustBeInFiber(); @@ -72,23 +72,31 @@ _.extend(exports.EnvironmentVariable.prototype, { return Fiber.current._meteorDynamics[self.slot]; }, - withValue: function (value, func) { - var self = this; + set(value) { exports.nodeCodeMustBeInFiber(); - if (!Fiber.current._meteorDynamics) { - Fiber.current._meteorDynamics = {}; - } - var currentValues = Fiber.current._meteorDynamics; + const fiber = Fiber.current; + const currentValues = fiber._meteorDynamics || ( + fiber._meteorDynamics = {} + ); - var saved = _.has(currentValues, self.slot) - ? currentValues[self.slot] : self.defaultValue; - currentValues[self.slot] = value; + const saved = _.has(currentValues, this.slot) + ? currentValues[this.slot] + : this.defaultValue; + currentValues[this.slot] = value; + + return () => { + currentValues[this.slot] = saved; + }; + }, + + withValue(value, func) { + const reset = this.set(value); try { return func(); } finally { - currentValues[self.slot] = saved; + reset(); } } }); From e2e215d7026eb06addeff33d1721ac58e05448c9 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 11 Oct 2018 11:56:10 -0400 Subject: [PATCH 08/60] Update meteor-babel npm package to version 7.1.3. (#10272) This update should help with #10262, per @sebakerckhof's comment https://github.com/meteor/meteor/issues/10262#issuecomment-428968441, thanks to these commits: https://github.com/meteor/babel/commit/a38835d3e261c27c66138a6c466345203e27474d https://github.com/meteor/babel/commit/a1778d8d7115c274b7e354b49b089385e0e562ea Also updated the json5 dependency of babel-compiler to its latest version, while I was at it. --- .../.npm/package/npm-shrinkwrap.json | 153 +++++++++--------- packages/babel-compiler/package.js | 6 +- scripts/dev-bundle-tool-package.js | 4 +- 3 files changed, 85 insertions(+), 78 deletions(-) diff --git a/packages/babel-compiler/.npm/package/npm-shrinkwrap.json b/packages/babel-compiler/.npm/package/npm-shrinkwrap.json index 90e3902e40..4607d8579d 100644 --- a/packages/babel-compiler/.npm/package/npm-shrinkwrap.json +++ b/packages/babel-compiler/.npm/package/npm-shrinkwrap.json @@ -7,21 +7,28 @@ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==" }, "@babel/core": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.0.tgz", - "integrity": "sha512-9EWmD0cQAbcXSc+31RIoYgEHx3KQ2CCSMDBhnXrShWvo45TMw+3/55KVxlhkG53kw9tl87DqINgHDgFVhZJV/Q==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.2.tgz", + "integrity": "sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==", "dependencies": { "json5": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" } } }, "@babel/generator": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", - "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==" + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.3.tgz", + "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==", + "dependencies": { + "@babel/types": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz", + "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==" + } + } }, "@babel/helper-annotate-as-pure": { "version": "7.0.0", @@ -124,9 +131,9 @@ "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==" }, "@babel/helpers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.0.tgz", - "integrity": "sha512-V1jXUTNdTpBn37wqqN73U+eBpzlLHmxA4aDaghJBggmzly/FpIJMHXse9lgdzQQT4gs5jZ5NmYxOL8G3ROc29g==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.2.tgz", + "integrity": "sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==" }, "@babel/highlight": { "version": "7.0.0", @@ -134,9 +141,9 @@ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==" }, "@babel/parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.0.tgz", - "integrity": "sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.2.tgz", + "integrity": "sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.1.0", @@ -219,9 +226,9 @@ "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==" }, "@babel/plugin-transform-destructuring": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz", - "integrity": "sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg==" + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz", + "integrity": "sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw==" }, "@babel/plugin-transform-exponentiation-operator": { "version": "7.1.0", @@ -334,14 +341,14 @@ "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==" }, "@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==" }, "@babel/template": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.0.tgz", - "integrity": "sha512-yZ948B/pJrwWGY6VxG6XRFsVTee3IQ7bihq9zFpM00Vydu6z5Xwg0C3J644kxI9WOTzd+62xcIsQ+AT1MGhqhA==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==" }, "@babel/traverse": { "version": "7.1.0", @@ -349,9 +356,9 @@ "integrity": "sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw==" }, "@babel/types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", - "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==" }, "acorn": { "version": "5.7.3", @@ -364,9 +371,9 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" }, "babel-helper-evaluate-path": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.4.3.tgz", - "integrity": "sha1-ComvcCwGshcCf6NxkI3UmJ0+Yz8=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", + "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==" }, "babel-helper-flip-expressions": { "version": "0.4.3", @@ -394,24 +401,24 @@ "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=" }, "babel-helper-to-multiple-sequence-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.4.3.tgz", - "integrity": "sha1-W1GLESf0ezA4dzOGoVYaK0jmMrY=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", + "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==" }, "babel-plugin-minify-builtins": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.4.3.tgz", - "integrity": "sha1-nqPVn0rEp7uVjXEtKVVqH4b3+B4=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", + "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==" }, "babel-plugin-minify-constant-folding": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.4.3.tgz", - "integrity": "sha1-MA+d6N2ghEoXaxk2U5YOJK0z4ZE=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", + "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==" }, "babel-plugin-minify-dead-code-elimination": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.4.3.tgz", - "integrity": "sha1-c2KCZYZPkAjQAnUG9Yq+s8HQLZg=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.0.tgz", + "integrity": "sha512-XQteBGXlgEoAKc/BhO6oafUdT4LBa7ARi55mxoyhLHNuA+RlzRmeMAfc31pb/UqU01wBzRc36YqHQzopnkd/6Q==" }, "babel-plugin-minify-flip-comparisons": { "version": "0.4.3", @@ -429,9 +436,9 @@ "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=" }, "babel-plugin-minify-mangle-names": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.4.3.tgz", - "integrity": "sha1-FvG/90t6fJPfwkHngx3V+0sCPvc=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", + "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==" }, "babel-plugin-minify-numeric-literals": { "version": "0.4.3", @@ -439,14 +446,14 @@ "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=" }, "babel-plugin-minify-replace": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.4.3.tgz", - "integrity": "sha1-nSifS6FdTmAR6HmfpfG6d+yBIZ0=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", + "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==" }, "babel-plugin-minify-simplify": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.4.3.tgz", - "integrity": "sha1-N3VthcYURktLCSfytOQXGR1Vc4o=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.0.tgz", + "integrity": "sha512-TM01J/YcKZ8XIQd1Z3nF2AdWHoDsarjtZ5fWPDksYZNsoOjQ2UO2EWm824Ym6sp127m44gPlLFiO5KFxU8pA5Q==" }, "babel-plugin-minify-type-constructors": { "version": "0.4.3", @@ -499,9 +506,9 @@ "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=" }, "babel-plugin-transform-remove-undefined": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.4.3.tgz", - "integrity": "sha1-1AsNp/kcCMBsxyt2dHTAHEiU3gI=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", + "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==" }, "babel-plugin-transform-simplify-comparison-operators": { "version": "6.9.4", @@ -514,14 +521,14 @@ "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=" }, "babel-preset-meteor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.1.0.tgz", - "integrity": "sha512-xfeEL1wtwW2GAUlKCzzpxcl9WQRbVEWmOxUx4SPzuEuRg86sjU6OAPOpgdBLGXJVohMKJtEtHZhMw5jVp6LSPQ==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.1.2.tgz", + "integrity": "sha512-V0rhi9J8hPoKsyeNAQM4OnL3hHwEhHqgSvEmsqD2bzzeHJLmQiAX0PrPEcmY3rV+61GlI2tEE21nAkrPgPDC5Q==" }, "babel-preset-minify": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.4.3.tgz", - "integrity": "sha1-spw91pGJBThFmPCSuVUVLiah/g8=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz", + "integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA==" }, "chalk": { "version": "2.4.1", @@ -544,9 +551,9 @@ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==" }, "debug": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", - "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==" }, "escape-string-regexp": { "version": "1.0.5", @@ -559,9 +566,9 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==" + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" }, "has-flag": { "version": "3.0.0", @@ -579,9 +586,9 @@ "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" }, "json5": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.0.1.tgz", - "integrity": "sha512-t6N/86QDIRYvOL259jR5c5TbtMnekl2Ib314mGeMh37zAwjgbWHieqijPH7pWaogmJq1F2I4Sphg19U1s+ZnXQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==" }, "lodash": { "version": "4.17.11", @@ -599,9 +606,9 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, "meteor-babel": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.1.0.tgz", - "integrity": "sha512-C7FzaODa+ysQ7XGkJrafwvb1oPneDrG/LIR4C7bYDEnuq6Ofo6BaPx+QMDJ5ODHXz5o/WrB5+SAhOVvlMnCvpA==" + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.1.3.tgz", + "integrity": "sha512-5pLtk2SW7HXW97u0Ke9vRJw0KrAsgGUDdWGAn4WrgD1l4XIyK0sGMV0QLvirSgXRfff3UkAUik9hrXS1h1mDUw==" }, "meteor-babel-helpers": { "version": "0.0.3", @@ -686,9 +693,9 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, "source-map": { "version": "0.5.7", diff --git a/packages/babel-compiler/package.js b/packages/babel-compiler/package.js index 5279b0dfc6..feb7187df9 100644 --- a/packages/babel-compiler/package.js +++ b/packages/babel-compiler/package.js @@ -6,12 +6,12 @@ Package.describe({ // isn't possible because you can't publish a non-recommended // release with package versions that don't have a pre-release // identifier at the end (eg, -dev) - version: '7.2.0' + version: '7.2.1' }); Npm.depends({ - 'meteor-babel': '7.1.0', - 'json5': '2.0.1' + 'meteor-babel': '7.1.3', + 'json5': '2.1.0' }); Package.onUse(function (api) { diff --git a/scripts/dev-bundle-tool-package.js b/scripts/dev-bundle-tool-package.js index 6ed2ba7312..3e6863f990 100644 --- a/scripts/dev-bundle-tool-package.js +++ b/scripts/dev-bundle-tool-package.js @@ -14,13 +14,13 @@ var packageJson = { pacote: "https://github.com/meteor/pacote/tarball/a3285854a68e4969d6c8abaa74407f7d113b178f", "node-gyp": "3.7.0", "node-pre-gyp": "0.10.3", - "meteor-babel": "7.1.0", + "meteor-babel": "7.1.3", "meteor-promise": "0.8.6", promise: "8.0.1", reify: "0.17.3", fibers: "2.0.0", // So that Babel can emit require("@babel/runtime/helpers/...") calls. - "@babel/runtime": "7.0.0", + "@babel/runtime": "7.1.2", // For backwards compatibility with isopackets that still depend on // babel-runtime rather than @babel/runtime. "babel-runtime": "7.0.0-beta.3", From 308b4f1306521c986d0df9feac8334dc7dcd5936 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 11 Oct 2018 12:29:00 -0400 Subject: [PATCH 09/60] Bump ecmascript package version to 0.12.1. This is necessary whenever we bump the babel-compiler version. --- packages/ecmascript/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ecmascript/package.js b/packages/ecmascript/package.js index 43106e6d9f..ba763a251e 100644 --- a/packages/ecmascript/package.js +++ b/packages/ecmascript/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'ecmascript', - version: '0.12.0', + version: '0.12.1', summary: 'Compiler plugin that supports ES2015+ in all .js files', documentation: 'README.md' }); From cc3d5e08ae8baff54a4a00f42be55ad27bd92c05 Mon Sep 17 00:00:00 2001 From: Frederick Stark Date: Sun, 14 Oct 2018 09:06:10 +1000 Subject: [PATCH 10/60] Add jsdoc comments to reactive-dict to fix meteor/docs#52 (#10273) --- packages/reactive-dict/reactive-dict.js | 77 +++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/packages/reactive-dict/reactive-dict.js b/packages/reactive-dict/reactive-dict.js index a980dced9d..1e31964315 100644 --- a/packages/reactive-dict/reactive-dict.js +++ b/packages/reactive-dict/reactive-dict.js @@ -21,6 +21,14 @@ function changed(v) { } // XXX COMPAT WITH 0.9.1 : accept migrationData instead of dictName +/** + * @class + * @instanceName ReactiveDict + * @summary Constructor for a ReactiveDict, which represents a reactive dictionary of key/value pairs. + * @locus Client + * @param {String} [name] Optional. When a name is passed, preserves contents across Hot Code Pushes + * @param {Object} [initialValue] Optional. The default values for the dictionary + */ export class ReactiveDict { constructor(dictName, dictData) { // this.keys: key -> value @@ -64,6 +72,15 @@ export class ReactiveDict { // set() began as a key/value method, but we are now overloading it // to take an object of key/value pairs, similar to backbone // http://backbonejs.org/#Model-set + /** + * @summary Set a value for a key in the ReactiveDict. Notify any listeners + * that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + * @param {String} key The key to set, eg, `selectedItem` + * @param {EJSONable | undefined} value The new value for `key` + */ set(keyOrObject, value) { if ((typeof keyOrObject === 'object') && (value === undefined)) { // Called as `dict.set({...})` @@ -99,6 +116,13 @@ export class ReactiveDict { } } + /** + * @summary Set a value for a key if it hasn't been set before. + * Otherwise works exactly the same as [`ReactiveDict.set`](#ReactiveDict-set). + * @locus Client + * @param {String} key The key to set, eg, `selectedItem` + * @param {EJSONable | undefined} value The new value for `key` + */ setDefault(keyOrObject, value) { if ((typeof keyOrObject === 'object') && (value === undefined)) { // Called as `dict.setDefault({...})` @@ -114,12 +138,32 @@ export class ReactiveDict { } } + /** + * @summary Get the value assiciated with a key. If inside a [reactive + * computation](#reactivity), invalidate the computation the next time the + * value associated with this key is changed by + * [`ReactiveDict.set`](#ReactiveDict-set). + * This returns a clone of the value, so if it's an object or an array, + * mutating the returned value has no effect on the value stored in the + * ReactiveDict. + * @locus Client + * @param {String} key The key of the element to return + */ get(key) { this._ensureKey(key); this.keyDeps[key].depend(); return parse(this.keys[key]); } + /** + * @summary Test if the stored entry for a key is equal to a value. If inside a + * [reactive computation](#reactivity), invalidate the computation the next + * time the variable changes to or from the value. + * @locus Client + * @param {String} key The name of the session variable to test + * @param {String | Number | Boolean | null | undefined} value The value to + * test against + */ equals(key, value) { // Mongo.ObjectID is in the 'mongo' package let ObjectID = null; @@ -172,6 +216,16 @@ export class ReactiveDict { return EJSON.equals(oldValue, value); } + /** + * @summary Get all key-value pairs as a plain object. If inside a [reactive + * computation](#reactivity), invalidate the computation the next time the + * value associated with any key is changed by + * [`ReactiveDict.set`](#ReactiveDict-set). + * This returns a clone of each value, so if it's an object or an array, + * mutating the returned value has no effect on the value stored in the + * ReactiveDict. + * @locus Client + */ all() { this.allDeps.depend(); let ret = {}; @@ -181,6 +235,13 @@ export class ReactiveDict { return ret; } + /** + * @summary remove all key-value pairs from the ReactiveDict. Notify any + * listeners that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + */ clear() { const oldKeys = this.keys; this.keys = {}; @@ -196,6 +257,14 @@ export class ReactiveDict { }); } + /** + * @summary remove a key-value pair from the ReactiveDict. Notify any listeners + * that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + * @param {String} key The key to delete, eg, `selectedItem` + */ delete(key) { let didRemove = false; @@ -213,6 +282,14 @@ export class ReactiveDict { return didRemove; } + /** + * @summary Clear all values from the reactiveDict and prevent it from being + * migrated on a Hot Code Pushes. Notify any listeners + * that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + */ destroy() { this.clear(); if (this.name && hasOwn.call(ReactiveDict._dictsToMigrate, this.name)) { From 8e302da10df45d52184ae5011687d4e426720e49 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 13 Oct 2018 19:20:09 -0400 Subject: [PATCH 11/60] Update `install` npm package to v0.12.2 to fix #10182. Thanks to PR https://github.com/benjamn/install/pull/50 by @Gariest. --- packages/modules-runtime/.npm/package/npm-shrinkwrap.json | 6 +++--- packages/modules-runtime/package.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/modules-runtime/.npm/package/npm-shrinkwrap.json b/packages/modules-runtime/.npm/package/npm-shrinkwrap.json index ed8734d530..bbc79174ba 100644 --- a/packages/modules-runtime/.npm/package/npm-shrinkwrap.json +++ b/packages/modules-runtime/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "install": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.12.0.tgz", - "integrity": "sha512-KOKFSWPANzP4XIbBnaRqIiMaCZmPxJEE0HbRrZ8MEt5Z9g4TdXA3LRAHBhb6UH7d8Ig9aSWwrD0Dy2Y3rPKs9w==" + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/install/-/install-0.12.2.tgz", + "integrity": "sha512-+7thTb4Rpvs9mnlhHKGZFJbGOO6kyMgy+gg0sgM5vFzIFK0wrCYXqdlaM71Bi289DTuPHf61puMFsaZBcwDIrg==" } } } diff --git a/packages/modules-runtime/package.js b/packages/modules-runtime/package.js index 25d89e72f2..519249240a 100644 --- a/packages/modules-runtime/package.js +++ b/packages/modules-runtime/package.js @@ -1,13 +1,13 @@ Package.describe({ name: "modules-runtime", - version: "0.10.2", + version: "0.10.3", summary: "CommonJS module system", git: "https://github.com/benjamn/install", documentation: "README.md" }); Npm.depends({ - install: "0.12.0" + install: "0.12.2" }); Package.onUse(function(api) { From 94771d233e45581aa292da0cd85a07df6a647dd9 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 13 Oct 2018 19:27:27 -0400 Subject: [PATCH 12/60] Update dynamic-import test app to Meteor 1.8. --- .../apps/dynamic-import/.meteor/packages | 12 ++-- .../tests/apps/dynamic-import/.meteor/release | 2 +- .../apps/dynamic-import/.meteor/versions | 67 +++++++++---------- .../apps/dynamic-import/package-lock.json | 6 +- tools/tests/apps/dynamic-import/package.json | 2 +- 5 files changed, 44 insertions(+), 45 deletions(-) diff --git a/tools/tests/apps/dynamic-import/.meteor/packages b/tools/tests/apps/dynamic-import/.meteor/packages index 78f569cadd..d913ee4980 100644 --- a/tools/tests/apps/dynamic-import/.meteor/packages +++ b/tools/tests/apps/dynamic-import/.meteor/packages @@ -6,21 +6,21 @@ meteor-base@1.4.0 # Packages every Meteor app needs to have mobile-experience@1.0.5 # Packages for a great mobile UX -mongo@1.5.0 # The database Meteor supports right now +mongo@1.6.0 # The database Meteor supports right now blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views reactive-var@1.0.11 # Reactive variable for tracker jquery@1.11.10 # Helpful client-side library tracker@1.2.0 # Meteor's client-side reactive programming library -standard-minifier-css@1.4.1 # CSS minifier run for production mode -standard-minifier-js@2.3.4 # JS minifier run for production mode +standard-minifier-css@1.5.0 # CSS minifier run for production mode +standard-minifier-js@2.4.0 # JS minifier run for production mode es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers. -ecmascript@0.11.1 # Enable ECMAScript2015+ syntax in app code -shell-server@0.3.1 # Server-side component of the `meteor shell` command +ecmascript@0.12.0 # Enable ECMAScript2015+ syntax in app code +shell-server@0.4.0 # Server-side component of the `meteor shell` command autopublish@1.0.7 # Publish all data to the clients (for prototyping) insecure@1.0.7 # Allow all DB writes from clients (for prototyping) -dynamic-import@0.4.0 +dynamic-import@0.5.0 lazy-test-package helper-package user:colon-name diff --git a/tools/tests/apps/dynamic-import/.meteor/release b/tools/tests/apps/dynamic-import/.meteor/release index f866f52c62..e76dedee10 100644 --- a/tools/tests/apps/dynamic-import/.meteor/release +++ b/tools/tests/apps/dynamic-import/.meteor/release @@ -1 +1 @@ -METEOR@1.7.0.4 +METEOR@1.8 diff --git a/tools/tests/apps/dynamic-import/.meteor/versions b/tools/tests/apps/dynamic-import/.meteor/versions index fd95ea07ad..c34f9857dc 100644 --- a/tools/tests/apps/dynamic-import/.meteor/versions +++ b/tools/tests/apps/dynamic-import/.meteor/versions @@ -1,76 +1,76 @@ allow-deny@1.1.0 autopublish@1.0.7 -autoupdate@1.4.0 -babel-compiler@7.1.1 -babel-runtime@1.2.4 +autoupdate@1.5.0 +babel-compiler@7.2.1 +babel-runtime@1.3.0 base64@1.0.11 -binary-heap@1.0.10 -blaze@2.3.2 +binary-heap@1.0.11 +blaze@2.3.3 blaze-html-templates@1.1.2 blaze-tools@1.0.10 -boilerplate-generator@1.5.0 -caching-compiler@1.1.12 -caching-html-compiler@1.1.2 +boilerplate-generator@1.6.0 +caching-compiler@1.2.0 +caching-html-compiler@1.1.3 callback-hook@1.1.0 check@1.3.1 -coffeescript@2.2.1_1 -coffeescript-compiler@2.2.1_1 +coffeescript@2.3.1_2 +coffeescript-compiler@2.3.1_2 ddp@1.4.0 -ddp-client@2.3.2 +ddp-client@2.3.3 ddp-common@1.4.0 ddp-server@2.2.0 deps@1.0.12 diff-sequence@1.1.0 -dispatch:mocha-browser@0.0.4 -dynamic-import@0.4.0 -ecmascript@0.11.1 +dynamic-import@0.5.0 +ecmascript@0.12.1 ecmascript-runtime@0.7.0 -ecmascript-runtime-client@0.7.1 -ecmascript-runtime-server@0.7.0 +ecmascript-runtime-client@0.8.0 +ecmascript-runtime-server@0.7.1 ejson@1.1.0 es5-shim@4.8.0 +fetch@0.1.0 geojson-utils@1.0.10 helper-package@0.0.1 hot-code-push@1.0.4 html-tools@1.0.11 htmljs@1.0.11 -http@1.4.1 id-map@1.1.0 insecure@1.0.7 +inter-process-messaging@0.1.0 jquery@1.11.11 launch-screen@1.1.1 lazy-test-package@0.0.1 livedata@1.0.18 logging@1.1.20 -meteor@1.9.0 +meteor@1.9.2 meteor-base@1.4.0 -minifier-css@1.3.1 -minifier-js@2.3.5 -minimongo@1.4.4 +minifier-css@1.4.0 +minifier-js@2.4.0 +minimongo@1.4.5 mobile-experience@1.0.5 mobile-status-bar@1.0.14 -modern-browsers@0.1.1 -modules@0.12.2 -modules-runtime@0.10.0 -mongo@1.5.0 +modern-browsers@0.1.2 +modules@0.13.0 +modules-runtime@0.10.2 +mongo@1.6.0 +mongo-decimal@0.1.0 mongo-dev-server@1.1.0 mongo-id@1.0.7 -npm-mongo@3.0.7 +npm-mongo@3.1.1 observe-sequence@1.0.16 ordered-dict@1.1.0 -practicalmeteor:mocha-core@1.0.1 promise@0.11.1 random@1.1.0 reactive-var@1.0.11 reload@1.2.0 retry@1.1.0 -routepolicy@1.0.13 -shell-server@0.3.1 -socket-stream-client@0.2.1 +routepolicy@1.1.0 +shell-server@0.4.0 +socket-stream-client@0.2.2 spacebars@1.0.15 spacebars-compiler@1.1.3 -standard-minifier-css@1.4.1 -standard-minifier-js@2.3.4 +standard-minifier-css@1.5.1 +standard-minifier-js@2.4.0 templating@1.3.2 templating-compiler@1.3.3 templating-runtime@1.3.2 @@ -78,7 +78,6 @@ templating-tools@1.1.2 tracker@1.2.0 ui@1.0.13 underscore@1.0.10 -url@1.2.0 user:colon-name@0.0.1 -webapp@1.6.0 +webapp@1.7.0 webapp-hashing@1.0.9 diff --git a/tools/tests/apps/dynamic-import/package-lock.json b/tools/tests/apps/dynamic-import/package-lock.json index af7e7423a0..bce0f7b9a9 100644 --- a/tools/tests/apps/dynamic-import/package-lock.json +++ b/tools/tests/apps/dynamic-import/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@babel/runtime": { - "version": "7.0.0-beta.56", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.56.tgz", - "integrity": "sha512-vP9XV2VP013UEyZdU9eWClCsm6rQPUYHVNCfmpcv5uKviW7mKmUZq71Y5cr5dYsFKfnGDxSo8h6plUGR60lwHg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==", "requires": { "regenerator-runtime": "^0.12.0" }, diff --git a/tools/tests/apps/dynamic-import/package.json b/tools/tests/apps/dynamic-import/package.json index 5899aa6f77..e9dcc58101 100644 --- a/tools/tests/apps/dynamic-import/package.json +++ b/tools/tests/apps/dynamic-import/package.json @@ -6,7 +6,7 @@ "test": "TEST_BROWSER_DRIVER=puppeteer meteor test --full-app --driver-package meteortesting:mocha" }, "dependencies": { - "@babel/runtime": "^7.0.0-beta.56", + "@babel/runtime": "^7.1.2", "acorn": "^4.0.11", "arson": "^0.2.3", "meteor-node-stubs": "^0.4.1", From 18762f97a285f05f868442a09a806699049e885b Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 13 Oct 2018 19:32:10 -0400 Subject: [PATCH 13/60] Update modules test app to Meteor 1.8. --- tools/tests/apps/modules/.meteor/packages | 14 +++++++------- tools/tests/apps/modules/.meteor/release | 2 +- tools/tests/apps/modules/package-lock.json | 6 +++--- tools/tests/apps/modules/package.json | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/tests/apps/modules/.meteor/packages b/tools/tests/apps/modules/.meteor/packages index 2212c460f2..896ae88aa3 100644 --- a/tools/tests/apps/modules/.meteor/packages +++ b/tools/tests/apps/modules/.meteor/packages @@ -6,23 +6,23 @@ meteor-base@1.4.0 # Packages every Meteor app needs to have mobile-experience@1.0.5 # Packages for a great mobile UX -mongo@1.5.1 # The database Meteor supports right now +mongo@1.6.0 # The database Meteor supports right now blaze-html-templates # Compile .html files into Meteor Blaze views -session@1.1.7 # Client-side reactive dictionary for your app +session@1.1.8 # Client-side reactive dictionary for your app jquery@1.11.10 # Helpful client-side library tracker@1.2.0 # Meteor's client-side reactive programming library es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers. -ecmascript@0.12.0-beta171.28 # Enable ECMAScript2015+ syntax in app code +ecmascript@0.12.0 # Enable ECMAScript2015+ syntax in app code coffeescript modules-test-package -standard-minifier-css@1.4.1 -standard-minifier-js@2.4.0-beta171.28 +standard-minifier-css@1.5.0 +standard-minifier-js@2.4.0 client-only-ecmascript modules-test-plugin -shell-server@0.3.1 -dynamic-import@0.5.0-beta171.28 +shell-server@0.4.0 +dynamic-import@0.5.0 underscore@1.0.10 import-local-json-module akryum:vue-component diff --git a/tools/tests/apps/modules/.meteor/release b/tools/tests/apps/modules/.meteor/release index c1c46bc003..e76dedee10 100644 --- a/tools/tests/apps/modules/.meteor/release +++ b/tools/tests/apps/modules/.meteor/release @@ -1 +1 @@ -METEOR@1.7.1-beta.28 +METEOR@1.8 diff --git a/tools/tests/apps/modules/package-lock.json b/tools/tests/apps/modules/package-lock.json index d0bd213923..465c19b2ab 100644 --- a/tools/tests/apps/modules/package-lock.json +++ b/tools/tests/apps/modules/package-lock.json @@ -135,9 +135,9 @@ } }, "@babel/runtime": { - "version": "7.0.0-beta.56", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.56.tgz", - "integrity": "sha512-vP9XV2VP013UEyZdU9eWClCsm6rQPUYHVNCfmpcv5uKviW7mKmUZq71Y5cr5dYsFKfnGDxSo8h6plUGR60lwHg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==", "requires": { "regenerator-runtime": "^0.12.0" }, diff --git a/tools/tests/apps/modules/package.json b/tools/tests/apps/modules/package.json index 0517145d2b..82172b7b2e 100644 --- a/tools/tests/apps/modules/package.json +++ b/tools/tests/apps/modules/package.json @@ -7,7 +7,7 @@ "@babel/core": "^7.0.0-beta.56", "@babel/plugin-proposal-do-expressions": "^7.0.0-beta.56", "@babel/plugin-proposal-optional-chaining": "^7.0.0-beta.56", - "@babel/runtime": "^7.0.0-beta.56", + "@babel/runtime": "^7.1.2", "acorn": "file:imports/links/acorn", "aws-sdk": "^2.2.41", "cli-color": "^0.2.3", From 2cc8db1dd8779590a79d794b7dff81034bd805fd Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Tue, 23 Oct 2018 16:32:28 +0200 Subject: [PATCH 14/60] Fix #10290 (#10295) --- packages/oauth/oauth_common.js | 5 ++--- packages/oauth/oauth_server.js | 2 +- packages/oauth/package.js | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/oauth/oauth_common.js b/packages/oauth/oauth_common.js index 68fe3319fe..5cd09c462c 100644 --- a/packages/oauth/oauth_common.js +++ b/packages/oauth/oauth_common.js @@ -1,5 +1,3 @@ -import url from 'url'; - OAuth._storageTokenPrefix = "Meteor.oauth.credentialSecret-"; OAuth._redirectUri = (serviceName, config, params, absoluteUrlOptions) => { @@ -29,6 +27,7 @@ OAuth._redirectUri = (serviceName, config, params, absoluteUrlOptions) => { } if (Meteor.isServer && isCordova) { + const url = Npm.require('url'); let rootUrl = process.env.MOBILE_ROOT_URL || __meteor_runtime_config__.ROOT_URL; @@ -46,7 +45,7 @@ OAuth._redirectUri = (serviceName, config, params, absoluteUrlOptions) => { rootUrl = url.format(parsedRootUrl); } - absoluteUrlOptions = { + absoluteUrlOptions = { ...absoluteUrlOptions, // For Cordova clients, redirect to the special Cordova root url // (likely a local IP in development mode). diff --git a/packages/oauth/oauth_server.js b/packages/oauth/oauth_server.js index 2be4dcad89..bf76687247 100644 --- a/packages/oauth/oauth_server.js +++ b/packages/oauth/oauth_server.js @@ -435,7 +435,7 @@ OAuth.sealSecret = plaintext => { return OAuthEncryption.seal(plaintext); else return plaintext; -} +}; // Unencrypt a service data field, if the "oauth-encryption" // package is loaded and the field is encrypted. diff --git a/packages/oauth/package.js b/packages/oauth/package.js index d740e13a21..48b572b135 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: "1.2.4" + version: "1.2.5" }); Package.onUse(api => { From 8f86f19cd0de6cbe82395a8e402e6d9406670b59 Mon Sep 17 00:00:00 2001 From: Nathan Muir Date: Wed, 24 Oct 2018 00:38:08 +1000 Subject: [PATCH 15/60] ddp-client: fix usage of reload package (#10286) - Return type of onMigrate callback should be an array. - onMigrate callback can be invoked many times until all components are ready to migrate. - DDP negotiation failures should always migrate immediately. --- packages/ddp-client/client/client_convenience.js | 2 +- packages/ddp-client/common/livedata_connection.js | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/ddp-client/client/client_convenience.js b/packages/ddp-client/client/client_convenience.js index f243fadec0..e4a7b8319c 100644 --- a/packages/ddp-client/client/client_convenience.js +++ b/packages/ddp-client/client/client_convenience.js @@ -40,7 +40,7 @@ function onDDPVersionNegotiationFailure(description) { return [true, { DDPVersionNegotiationFailures: failures }]; }); retry.retryLater(failures, () => { - Package.reload.Reload._reload(); + Package.reload.Reload._reload({ immediateMigration: true }); }); } } diff --git a/packages/ddp-client/common/livedata_connection.js b/packages/ddp-client/common/livedata_connection.js index e10b2a01d9..9ec5eee42e 100644 --- a/packages/ddp-client/common/livedata_connection.js +++ b/packages/ddp-client/common/livedata_connection.js @@ -246,10 +246,8 @@ export class Connection { ! options.reloadWithOutstanding) { Package.reload.Reload._onMigrate(retry => { if (! self._readyToMigrate()) { - if (self._retryMigrate) - throw new Error('Two migrations in progress?'); self._retryMigrate = retry; - return false; + return [false]; } else { return [true]; } From ea173640f289fd0f75e52842264cd6eaf57786c3 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 30 Oct 2018 14:24:18 -0400 Subject: [PATCH 16/60] Bump CoffeeScript to version 2.3.2 and enable lazy compilation. The introduction of lazy compilation should help with #10298. --- .../.npm/package/npm-shrinkwrap.json | 6 +++--- packages/non-core/coffeescript-compiler/package.js | 4 ++-- .../compile-coffeescript/npm-shrinkwrap.json | 6 +++--- .../non-core/coffeescript/compile-coffeescript.js | 14 ++++++++++++++ packages/non-core/coffeescript/package.js | 4 ++-- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json b/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json index 87857d7090..1d8d07771c 100644 --- a/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json +++ b/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "coffeescript": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.3.1.tgz", - "integrity": "sha512-DNJmSPMyiz+OjWYyuDXNBcFutDjP2TS2owsZ8YvT65hA8c5IdHWIBqdA3Yf/XHoK23d/f1HqLjQbEJJZJoeV1w==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.3.2.tgz", + "integrity": "sha512-YObiFDoukx7qPBi/K0kUKyntEZDfBQiqs/DbrR1xzASKOBjGT7auD85/DiPeRr9k++lRj7l3uA9TNMLfyfcD/Q==" }, "source-map": { "version": "0.5.7", diff --git a/packages/non-core/coffeescript-compiler/package.js b/packages/non-core/coffeescript-compiler/package.js index f05cb8e6f1..0850dd130b 100644 --- a/packages/non-core/coffeescript-compiler/package.js +++ b/packages/non-core/coffeescript-compiler/package.js @@ -13,11 +13,11 @@ Package.describe({ summary: 'Compiler for CoffeeScript code, supporting the coffeescript package', // This version of NPM `coffeescript` module, with _1, _2 etc. // If you change this, make sure to also update ../coffeescript/package.js to match. - version: '2.3.1_2' + version: '2.3.2_1' }); Npm.depends({ - 'coffeescript': '2.3.1', + 'coffeescript': '2.3.2', 'source-map': '0.5.7' }); diff --git a/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json b/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json index 1f1254a557..a59317fc81 100644 --- a/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json +++ b/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==" }, "regenerator-runtime": { "version": "0.12.1", diff --git a/packages/non-core/coffeescript/compile-coffeescript.js b/packages/non-core/coffeescript/compile-coffeescript.js index 7f91bb552d..3792d61d71 100644 --- a/packages/non-core/coffeescript/compile-coffeescript.js +++ b/packages/non-core/coffeescript/compile-coffeescript.js @@ -28,6 +28,20 @@ class CachedCoffeeScriptCompiler extends CachingCompiler { return super.setDiskCacheDirectory(cacheDir); } + compileOneFileLater(inputFile, getResult) { + inputFile.addJavaScript({ + path: this.coffeeScriptCompiler.outputFilePath(inputFile), + sourcePath: inputFile.getPathInPackage(), + bare: inputFile.getFileOptions().bare + }, async () => { + const result = await getResult(); + return result && { + data: result.source, + sourceMap: result.sourceMap, + }; + }); + } + compileOneFile(inputFile) { return this.coffeeScriptCompiler.compileOneFile(inputFile); } diff --git a/packages/non-core/coffeescript/package.js b/packages/non-core/coffeescript/package.js index c873977ee7..d549a3c25b 100644 --- a/packages/non-core/coffeescript/package.js +++ b/packages/non-core/coffeescript/package.js @@ -6,7 +6,7 @@ Package.describe({ // so bumping the version of this package will be how they get newer versions // of `coffeescript-compiler`. If you change this, make sure to also update // ../coffeescript-compiler/package.js to match. - version: '2.3.1_2' + version: '2.3.2_1' }); Package.registerBuildPlugin({ @@ -22,7 +22,7 @@ Package.registerBuildPlugin({ // rather than delegating to the one installed in the application's // node_modules directory, so the coffeescript package can work in // Meteor 1.7.1 apps as well as 1.7.0.x and earlier. - '@babel/runtime': '7.0.0' + '@babel/runtime': '7.1.2' } }); From c96278700de8fd6ffb9e0b1d374c3518f3ab10c8 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 31 Oct 2018 10:40:16 -0400 Subject: [PATCH 17/60] Fix compiler plugins self-tests by waiting for lazy compilation to finish. --- packages/caching-compiler/caching-compiler.js | 34 +++++++++++++------ .../multi-file-caching-compiler.js | 22 ++++++------ tools/isobuild/bundler.js | 13 +++++++ tools/project-context.js | 7 +++- tools/tests/compiler-plugins.js | 14 ++++++++ 5 files changed, 69 insertions(+), 21 deletions(-) diff --git a/packages/caching-compiler/caching-compiler.js b/packages/caching-compiler/caching-compiler.js index ab1cea5cae..e29e1362e5 100644 --- a/packages/caching-compiler/caching-compiler.js +++ b/packages/caching-compiler/caching-compiler.js @@ -25,6 +25,10 @@ CachingCompilerBase = class CachingCompilerBase { // For testing. this._callCount = 0; + + // Callbacks that will be called after the linker is done processing + // files, after all lazy compilation has finished. + this._afterLinkCallbacks = []; } // Your subclass must override this method to define the key used to identify @@ -113,6 +117,14 @@ CachingCompilerBase = class CachingCompilerBase { }, 0); } + // Called by the compiler plugins system after all linking and lazy + // compilation has finished. + afterLink() { + this._afterLinkCallbacks.splice(0).forEach(callback => { + callback(); + }); + } + // Borrowed from another MIT-licensed project that benjamn wrote: // https://github.com/reactjs/commoner/blob/235d54a12c/lib/util.js#L136-L168 _deepHash(val) { @@ -327,17 +339,19 @@ CachingCompiler = class CachingCompiler extends CachingCompilerBase { }); if (this._cacheDebugEnabled) { - cacheMisses.sort(); + this._afterLinkCallbacks.push(() => { + cacheMisses.sort(); - this._cacheDebug( - `Ran (#${ - ++this._callCount - }) on: ${ - JSON.stringify(cacheMisses) - } ${ - JSON.stringify(Object.keys(arches).sort()) - }` - ); + this._cacheDebug( + `Ran (#${ + ++this._callCount + }) on: ${ + JSON.stringify(cacheMisses) + } ${ + JSON.stringify(Object.keys(arches).sort()) + }` + ); + }); } } diff --git a/packages/caching-compiler/multi-file-caching-compiler.js b/packages/caching-compiler/multi-file-caching-compiler.js index 4add6b81a3..dcd75ac2e7 100644 --- a/packages/caching-compiler/multi-file-caching-compiler.js +++ b/packages/caching-compiler/multi-file-caching-compiler.js @@ -172,17 +172,19 @@ extends CachingCompilerBase { }); if (this._cacheDebugEnabled) { - cacheMisses.sort(); + this._afterLinkCallbacks.push(() => { + cacheMisses.sort(); - this._cacheDebug( - `Ran (#${ - ++this._callCount - }) on: ${ - JSON.stringify(cacheMisses) - } ${ - JSON.stringify(Object.keys(arches).sort()) - }` - ); + this._cacheDebug( + `Ran (#${ + ++this._callCount + }) on: ${ + JSON.stringify(cacheMisses) + } ${ + JSON.stringify(Object.keys(arches).sort()) + }` + ); + }); } } diff --git a/tools/isobuild/bundler.js b/tools/isobuild/bundler.js index a473bd5c9d..b6eb36b360 100644 --- a/tools/isobuild/bundler.js +++ b/tools/isobuild/bundler.js @@ -1286,6 +1286,19 @@ class Target { ), "utf8") ); }); + + // Call any plugin.afterLink callbacks defined by compiler plugins, + // now that all compilation (including lazy compilation) is finished. + sourceBatches.forEach(batch => { + batch.resourceSlots.forEach(slot => { + const plugin = + slot.sourceProcessor && + slot.sourceProcessor.userPlugin; + if (plugin && typeof plugin.afterLink === "function") { + plugin.afterLink(); + } + }); + }); } // Minify the JS in this target diff --git a/tools/project-context.js b/tools/project-context.js index c3a1195055..7806436baf 100644 --- a/tools/project-context.js +++ b/tools/project-context.js @@ -28,6 +28,10 @@ import { import Resolver from "./isobuild/resolver.js"; +const CAN_DELAY_LEGACY_BUILD = ! JSON.parse( + process.env.METEOR_DISALLOW_DELAYED_LEGACY_BUILD || "false" +); + // The ProjectContext represents all the context associated with an app: // metadata files in the `.meteor` directory, the choice of package versions // used by it, etc. Any time you want to work with an app, create a @@ -1310,7 +1314,8 @@ _.extend(exports.PlatformList.prototype, { }, canDelayBuildingArch(arch) { - return arch === "web.browser.legacy"; + return CAN_DELAY_LEGACY_BUILD && + arch === "web.browser.legacy"; } }); diff --git a/tools/tests/compiler-plugins.js b/tools/tests/compiler-plugins.js index 2222cd0fab..8e8abb8381 100644 --- a/tools/tests/compiler-plugins.js +++ b/tools/tests/compiler-plugins.js @@ -30,6 +30,11 @@ selftest.define("compiler plugin caching - coffee", () => { // Ask them to print out when they build a file (instead of using it from the // cache) as well as when they load cache from disk. s.set('METEOR_COFFEESCRIPT_CACHE_DEBUG', 't'); + + // Enforcing the order of builds is just too tricky if we let the legacy + // build race with the os.* build. + s.set("METEOR_DISALLOW_DELAYED_LEGACY_BUILD", "true"); + var run = startRun(s); let nextRunOrdinal = 1; @@ -69,6 +74,7 @@ selftest.define("compiler plugin caching - coffee", () => { // App prints this: run.match("Coffeescript X is 2 Y is 1 FromPackage is 4"); + run.match("App running at"); s.write("f2.coffee", "share.Y = 'Y is 3'\n"); @@ -79,6 +85,7 @@ selftest.define("compiler plugin caching - coffee", () => { // Program prints this: run.match("Coffeescript X is 2 Y is 3 FromPackage is 4"); + run.match("Meteor server restarted"); // Force a rebuild of the local package without actually changing the // coffeescript file in it. This should not require us to coffee.compile @@ -90,6 +97,7 @@ selftest.define("compiler plugin caching - coffee", () => { matchRun([], osArch); run.match("Coffeescript X is 2 Y is 3 FromPackage is 4"); + run.match("Meteor server restarted"); // But writing to the actual source file in the local package should // recompile. @@ -100,6 +108,7 @@ selftest.define("compiler plugin caching - coffee", () => { matchRun(["/packages/local-pack/p.coffee"], osArch); run.match("Coffeescript X is 2 Y is 3 FromPackage is 5"); + run.match("Meteor server restarted"); // We never should have loaded cache from disk, since we only made // each compiler once and there were no cache files at this point. @@ -140,6 +149,11 @@ selftest.define("compiler plugin caching - coffee", () => { // Ask them to print out when they build a file (instead of using it from // the cache) as well as when they load cache from disk. s.set(`METEOR_${ packageName.toUpperCase() }_CACHE_DEBUG`, "t"); + + // Enforcing the order of builds is just too tricky if we let the legacy + // build race with the "Client modified - refreshing" messages. + s.set("METEOR_DISALLOW_DELAYED_LEGACY_BUILD", "true"); + var run = startRun(s); const cacheMatch = selftest.markStack((message, arch) => { From eb4ae8b8faa3e1ae5acc738f20bbeb214a5292e0 Mon Sep 17 00:00:00 2001 From: Thomas Spiesser Date: Wed, 31 Oct 2018 16:03:53 +0100 Subject: [PATCH 18/60] [oauth1] Add default value for whitelistedQueryParams. (#10301) --- packages/oauth1/oauth1_server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oauth1/oauth1_server.js b/packages/oauth1/oauth1_server.js index 5b92dfd954..eb54458825 100644 --- a/packages/oauth1/oauth1_server.js +++ b/packages/oauth1/oauth1_server.js @@ -1,7 +1,7 @@ import url from 'url'; import { OAuth1Binding } from './oauth1_binding'; -OAuth._queryParamsWithAuthTokenUrl = (authUrl, oauthBinding, params = {}, whitelistedQueryParams) => { +OAuth._queryParamsWithAuthTokenUrl = (authUrl, oauthBinding, params = {}, whitelistedQueryParams = []) => { const redirectUrlObj = url.parse(authUrl, true); Object.assign( From d7339dd3db7053c2a06c0f2c7f8d0d19df126842 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 31 Oct 2018 11:12:39 -0400 Subject: [PATCH 19/60] Bump oauth1 patch version to 1.2.2. --- packages/oauth1/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/oauth1/package.js b/packages/oauth1/package.js index 37f8ddc6f8..11dc87fc7d 100644 --- a/packages/oauth1/package.js +++ b/packages/oauth1/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth1-based login services", - version: "1.2.1", + version: "1.2.2", }); Package.onUse(api => { From 0e983deb69dff0fc7b9e2ae389221c60ff43b8bd Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 31 Oct 2018 11:14:59 -0400 Subject: [PATCH 20/60] Update coffeescript-compiler constraint in coffeescript/package.js. --- packages/non-core/coffeescript/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/non-core/coffeescript/package.js b/packages/non-core/coffeescript/package.js index d549a3c25b..1fe5e6d492 100644 --- a/packages/non-core/coffeescript/package.js +++ b/packages/non-core/coffeescript/package.js @@ -11,7 +11,7 @@ Package.describe({ Package.registerBuildPlugin({ name: 'compile-coffeescript', - use: ['caching-compiler@1.1.12', 'ecmascript@0.11.1', 'coffeescript-compiler@2.3.1_2'], + use: ['caching-compiler@1.1.12', 'ecmascript@0.11.1', 'coffeescript-compiler@2.3.2_1'], sources: ['compile-coffeescript.js'], npmDependencies: { // A breaking change was introduced in @babel/runtime@7.0.0-beta.56 From c622e51cd829383818df78aa276ea67d732c6878 Mon Sep 17 00:00:00 2001 From: Jan Dvorak Date: Wed, 31 Oct 2018 16:33:49 +0100 Subject: [PATCH 21/60] Fix #10305 (#10310) --- packages/oauth/end_of_popup_response.js | 12 +++++++----- packages/oauth/end_of_redirect_response.js | 5 +++-- packages/oauth/package.js | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/oauth/end_of_popup_response.js b/packages/oauth/end_of_popup_response.js index e142f9c30d..fd6a1ae20b 100644 --- a/packages/oauth/end_of_popup_response.js +++ b/packages/oauth/end_of_popup_response.js @@ -1,12 +1,14 @@ -(() => { +// NOTE: This file is added to the client as asset and hence ecmascript package has no effect here. +(function() { - const config = JSON.parse(document.getElementById("config").innerHTML); + var config = JSON.parse(document.getElementById("config").innerHTML); if (config.setCredentialToken) { - const { credentialToken, credentialSecret } = config; + var credentialToken = config.credentialToken; + var credentialSecret = config.credentialSecret; if (config.isCordova) { - const credentialString = JSON.stringify({ + var credentialString = JSON.stringify({ credentialToken, credentialSecret, }); @@ -30,7 +32,7 @@ if (! config.isCordova) { document.getElementById("completedText").style.display = "block"; - document.getElementById("loginCompleted").onclick = () => window.close(); + document.getElementById("loginCompleted").onclick = function() { window.close() }; window.close(); } })(); diff --git a/packages/oauth/end_of_redirect_response.js b/packages/oauth/end_of_redirect_response.js index 4c88aa356f..051159e0a2 100644 --- a/packages/oauth/end_of_redirect_response.js +++ b/packages/oauth/end_of_redirect_response.js @@ -1,6 +1,7 @@ -(() => { +// NOTE: This file is added to the client as asset and hence ecmascript package has no effect here. +(function() { - const config = JSON.parse(document.getElementById("config").innerHTML); + var config = JSON.parse(document.getElementById("config").innerHTML); if (config.setCredentialToken) { sessionStorage[config.storagePrefix + config.credentialToken] = diff --git a/packages/oauth/package.js b/packages/oauth/package.js index 48b572b135..524b0aeed9 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: "1.2.5" + version: "1.2.6" }); Package.onUse(api => { From a54c9261add912e075ff5156b1ccc6c21f1c6722 Mon Sep 17 00:00:00 2001 From: Lars Gleim Date: Sat, 3 Nov 2018 20:45:47 +0100 Subject: [PATCH 22/60] Fix uncaught TypeError in autoupdate_client.js (#10281) This fixes an issue (c.f. https://github.com/Urigo/meteor-client-bundler/issues/87) where when the __meteor_runtime_config__ does not contain a proper autoupdate configuration object, the client would fail to load properly. --- packages/autoupdate/autoupdate_client.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/autoupdate/autoupdate_client.js b/packages/autoupdate/autoupdate_client.js index a3ce4d2449..92748f22a0 100644 --- a/packages/autoupdate/autoupdate_client.js +++ b/packages/autoupdate/autoupdate_client.js @@ -28,8 +28,8 @@ const clientArch = Meteor.isCordova ? "web.cordova" : Meteor.isModern ? "web.browser" : "web.browser.legacy"; -const autoupdateVersions = - __meteor_runtime_config__.autoupdate.versions[clientArch] || { +const autoupdateVersions = + ((__meteor_runtime_config__.autoupdate || {}).versions || {})[clientArch] || { version: "unknown", versionRefreshable: "unknown", versionNonRefreshable: "unknown", From c5b51b0fc2a8cef498b9390ebcb4925e02de83e8 Mon Sep 17 00:00:00 2001 From: Geoffrey Challen Date: Sat, 3 Nov 2018 14:48:29 -0500 Subject: [PATCH 23/60] user.services is not an array. (#10299) --- packages/accounts-base/accounts_server.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/accounts-base/accounts_server.js b/packages/accounts-base/accounts_server.js index 37da4975af..fc2a89dd2f 100644 --- a/packages/accounts-base/accounts_server.js +++ b/packages/accounts-base/accounts_server.js @@ -1515,9 +1515,9 @@ function defaultValidateNewUserHook(user) { emailIsGood = user.emails.reduce( (prev, email) => prev || this._testEmailDomain(email.address), false ); - } else if (user.services && user.services.length > 0) { + } else if (user.services && Object.values(user.services).length > 0) { // Find any email of any service and check it - emailIsGood = user.services.reduce( + emailIsGood = Object.values(user.services).reduce( (prev, service) => service.email && this._testEmailDomain(service.email), false, ); From 689ae3dfa776d3761205f41a841eba6e96c737e3 Mon Sep 17 00:00:00 2001 From: lukas strassel Date: Sun, 21 Oct 2018 13:37:37 +0200 Subject: [PATCH 24/60] Update postcss and cssnano to latest non breaking versions (#10260) --- .../.npm/package/npm-shrinkwrap.json | 1770 +++++------------ packages/minifier-css/minifier-tests.js | 10 +- packages/minifier-css/minifier.js | 21 +- packages/minifier-css/package.js | 4 +- 4 files changed, 466 insertions(+), 1339 deletions(-) diff --git a/packages/minifier-css/.npm/package/npm-shrinkwrap.json b/packages/minifier-css/.npm/package/npm-shrinkwrap.json index 2b1a1401bf..4c196d165f 100644 --- a/packages/minifier-css/.npm/package/npm-shrinkwrap.json +++ b/packages/minifier-css/.npm/package/npm-shrinkwrap.json @@ -6,11 +6,6 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -21,118 +16,40 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=" + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.4.tgz", + "integrity": "sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA==" }, "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" }, - "caniuse-db": { - "version": "1.0.30000885", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000885.tgz", - "integrity": "sha512-Hy1a+UIXooG+tRlt3WnT9avMf+l999bR9J1MqlQdYKgbsYjKxV4a4rgcmiyMmdCLPBFsiRoDxdl9tnNyaq2RXw==" + "caniuse-lite": { + "version": "1.0.30000904", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000904.tgz", + "integrity": "sha512-M4sXvogCoY5Fp6fuXIaQG/MIexlEFQ3Lgwban+KlqiQUbUIkSmjAB8ZJIP79aj2cdqz2F1Lb+Z+5GwHvCrbLtg==" }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - } - } - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==" }, "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz", + "integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==" }, "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", + "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==" }, "color-convert": { "version": "1.9.3", @@ -145,74 +62,112 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=" - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==" }, "colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==" + }, "css-color-names": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==" + }, + "css-select": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", + "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==" + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" + }, + "css-tree": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", + "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" } } }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=" + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=" + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" + }, + "cssnano": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.7.tgz", + "integrity": "sha512-AiXL90l+MDuQmRNyypG2P7ux7K4XklxYzNNUd5HXZCNcH8/N9bHPcpN97v8tXgRVeFL/Ed8iP8mVmAAu0ZpT7A==" + }, + "cssnano-preset-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.5.tgz", + "integrity": "sha512-f1uhya0ZAjPYtDD58QkBB0R+uYdzHPei7cDxJyQQIHt5acdhyGXaSXl2nDLzWHLwGFbZcHxQtkJS8mmNwnxTvw==" + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==" + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" + }, "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==" + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -220,20 +175,62 @@ } } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", + "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==" + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==" + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==" }, "electron-to-chromium": { - "version": "1.3.63", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.63.tgz", - "integrity": "sha512-Ec35NNY040HKuSxMAzBMgz/uUI78amSWpBUD9x2gN7R7gkb/wgAcClngWklcLP0/lm/g0UUYHnC/tUIlZj8UvQ==" + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz", + "integrity": "sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA==" + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==" + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==" }, "escape-string-regexp": { "version": "1.0.5", @@ -241,14 +238,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "function-bind": { "version": "1.1.1", @@ -260,20 +252,35 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" }, "indexes-of": { "version": "1.0.1", @@ -285,25 +292,65 @@ "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" }, - "is-plain-obj": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-color-stop": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=" + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=" + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" }, "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==" }, - "js-base64": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", - "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==" + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==" }, "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=" + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "lodash.memoize": { "version": "4.1.2", @@ -315,10 +362,10 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" }, "minimist": { "version": "0.0.8", @@ -330,1180 +377,241 @@ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" + "node-releases": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.3.tgz", + "integrity": "sha512-ZaZWMsbuDcetpHmYeKWPO6e63pSXLb50M7lJgCbcM2nC/nQC3daNifmtp5a2kp7EWwYfhuvH6zLPWkrF8IiDdw==" }, "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==" }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=" + }, + "object.values": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", + "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=" }, "postcss": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", - "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==" + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", + "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==" }, "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==" }, "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz", + "integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==" }, "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==" }, "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz", + "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==" }, "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==" }, "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==" }, "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==" }, "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.9.tgz", + "integrity": "sha512-UVMXrXF5K/kIwUbK/crPFCytpWbNX2Q3dZSc8+nQUgfOHrCT4+MHncpdxVphUlQeZxlLXUJbDyXc5NBhTnS2tA==" }, "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz", + "integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==", "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=" } } }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" - }, "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==" }, "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz", + "integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==" }, "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz", + "integrity": "sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==" }, "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz", + "integrity": "sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==", "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=" } } }, "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==" + }, + "postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==" + }, + "postcss-normalize-positions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz", + "integrity": "sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==" + }, + "postcss-normalize-repeat-style": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz", + "integrity": "sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==" + }, + "postcss-normalize-string": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz", + "integrity": "sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==" + }, + "postcss-normalize-timing-functions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", + "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==" + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==" }, "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==" + }, + "postcss-normalize-whitespace": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", + "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==" }, "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", + "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==" }, "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", + "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==" }, "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", + "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==" }, "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=" + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0-rc.4.tgz", + "integrity": "sha512-0XvfYuShrKlTk1ooUrVzMCFQRcypsdEIsGqh5IxC5rdtBi4/M/tDAJeSONwC2MTqEFsmPZYAV7Dd4X8rgAfV0A==" }, "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", + "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==" }, "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==" }, "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=" - } - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=" + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=" - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=" + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=" + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } }, "source-map": { "version": "0.6.1", @@ -1515,32 +623,37 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "stylehacks": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz", + "integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==", "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=" } } }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + }, "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz", + "integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==" + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, "uniq": { "version": "1.0.1", @@ -1552,15 +665,20 @@ "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==" + }, "vendors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" } } } diff --git a/packages/minifier-css/minifier-tests.js b/packages/minifier-css/minifier-tests.js index e9254d2afa..3b798e40af 100644 --- a/packages/minifier-css/minifier-tests.js +++ b/packages/minifier-css/minifier-tests.js @@ -92,9 +92,15 @@ Tinytest.add( (test) => { const css1 = '@import "custom.css"; body { color: "red"; }'; const css2 = 'body { color: "blue"; }'; - const cssAst1 = CssTools.parseCss(css1); - const cssAst2 = CssTools.parseCss(css2); + const cssAst1 = CssTools.parseCss(css1, {from: "test.css"}); + const cssAst2 = CssTools.parseCss(css2, {from: "test2.css"}); const mergedAst = CssTools.mergeCssAsts([cssAst1, cssAst2]); + const stringifiedAsts = CssTools.stringifyCss(mergedAst, { + sourcemap: true, + inputSourcemaps: false + }); test.equal(mergedAst.nodes.length, 3); + test.equal(stringifiedAsts.map.sources.length, 2); + test.equal(stringifiedAsts.map.sources[0], 'test.css'); } ); diff --git a/packages/minifier-css/minifier.js b/packages/minifier-css/minifier.js index 2762fb9aa5..faf7a77efa 100644 --- a/packages/minifier-css/minifier.js +++ b/packages/minifier-css/minifier.js @@ -21,7 +21,7 @@ const CssTools = { options.from = options.source; delete options.source; } - return postcss().process(cssText, options).root; + return postcss.parse(cssText, options); }, /** @@ -45,14 +45,13 @@ const CssTools = { }; delete options.sourcemap; } + // explicitly set from to undefined to prevent postcss warnings + if (!options.from){ + options.from = void 0; + } + + transformResult = cssAst.toResult(options); - const f = new Future; - postcss().process(cssAst, options).then(result => { - f.return(result); - }).catch(error => { - f.throw(error); - }); - transformResult = f.wait(); return { code: transformResult.css, map: transformResult.map ? transformResult.map.toJSON() : null, @@ -67,7 +66,11 @@ const CssTools = { */ minifyCss(cssText) { const f = new Future; - postcss([ cssnano({ safe: true }) ]).process(cssText).then(result => { + postcss([ + cssnano({ safe: true }), + ]).process(cssText, { + from: void 0, + }).then(result => { f.return(result.css); }).catch(error => { f.throw(error); diff --git a/packages/minifier-css/package.js b/packages/minifier-css/package.js index 1e54ebefe9..f6c64bd762 100644 --- a/packages/minifier-css/package.js +++ b/packages/minifier-css/package.js @@ -4,8 +4,8 @@ Package.describe({ }); Npm.depends({ - postcss: '6.0.13', - cssnano: '3.10.0' + postcss: '7.0.5', + cssnano: '4.1.7' }); Package.onUse(function (api) { From 249f31707a3c476a2a0b7116a407b813a8d02233 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 3 Nov 2018 16:06:41 -0400 Subject: [PATCH 25/60] Bump [standard-]minifier-css package versions. --- packages/minifier-css/package.js | 2 +- .../.npm/plugin/minifyStdCSS/npm-shrinkwrap.json | 12 ++++++------ packages/standard-minifier-css/package.js | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/minifier-css/package.js b/packages/minifier-css/package.js index f6c64bd762..03ccc2eec1 100644 --- a/packages/minifier-css/package.js +++ b/packages/minifier-css/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'CSS minifier', - version: '1.4.0' + version: '1.4.1' }); Npm.depends({ diff --git a/packages/standard-minifier-css/.npm/plugin/minifyStdCSS/npm-shrinkwrap.json b/packages/standard-minifier-css/.npm/plugin/minifyStdCSS/npm-shrinkwrap.json index 1db65b734d..22d680ad73 100644 --- a/packages/standard-minifier-css/.npm/plugin/minifyStdCSS/npm-shrinkwrap.json +++ b/packages/standard-minifier-css/.npm/plugin/minifyStdCSS/npm-shrinkwrap.json @@ -2,14 +2,14 @@ "lockfileVersion": 1, "dependencies": { "@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==" }, "lru-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", - "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==" }, "pseudomap": { "version": "1.0.2", diff --git a/packages/standard-minifier-css/package.js b/packages/standard-minifier-css/package.js index d9ea6588f0..f79e39d66e 100644 --- a/packages/standard-minifier-css/package.js +++ b/packages/standard-minifier-css/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'standard-minifier-css', - version: '1.5.1', + version: '1.5.2', summary: 'Standard css minifier used with Meteor apps by default.', documentation: 'README.md' }); @@ -11,9 +11,9 @@ Package.registerBuildPlugin({ 'minifier-css' ], npmDependencies: { - "@babel/runtime": "7.0.0", + "@babel/runtime": "7.1.2", "source-map": "0.5.6", - "lru-cache": "4.0.1" + "lru-cache": "4.1.3" }, sources: [ 'plugin/minify-css.js' From f8e59735f6595f59782153c6c82d2be4eb885c8a Mon Sep 17 00:00:00 2001 From: Seba Kerckhof Date: Sat, 3 Nov 2018 21:12:06 +0100 Subject: [PATCH 26/60] Modernize session package (#10228) --- packages/session/package.js | 5 +++-- packages/session/session.js | 4 +++- packages/session/session_tests.js | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/session/package.js b/packages/session/package.js index 8138f21f3c..1423e42912 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -4,7 +4,7 @@ Package.describe({ }); Package.onUse(function (api) { - api.use(['reactive-dict', 'ejson'], 'client'); + api.use(['ecmascript', 'reactive-dict', 'ejson'], 'client'); // Session can work with or without reload, but if reload is present // it should load first so we can detect it at startup and populate @@ -12,10 +12,11 @@ Package.onUse(function (api) { api.use('reload', 'client', {weak: true}); api.export('Session', 'client'); - api.addFiles('session.js', 'client'); + api.mainModule('session.js', 'client'); }); Package.onTest(function (api) { + api.use('ecmascript'); api.use('tinytest'); api.use('session', 'client'); api.use('tracker'); diff --git a/packages/session/session.js b/packages/session/session.js index b347b83927..3eda8d7edd 100644 --- a/packages/session/session.js +++ b/packages/session/session.js @@ -1,4 +1,6 @@ -Session = new ReactiveDict('session'); +import { ReactiveDict } from 'meteor/reactive-dict'; + +export const Session = new ReactiveDict('session'); // Documentation here is really awkward because the methods are defined // elsewhere diff --git a/packages/session/session_tests.js b/packages/session/session_tests.js index 280e5daa56..3b004c344d 100644 --- a/packages/session/session_tests.js +++ b/packages/session/session_tests.js @@ -1,3 +1,5 @@ +import { Session } from 'meteor/session'; + Tinytest.add('session - setDefault', function (test) { Session.setDefault('def', "argyle"); test.equal(Session.get('def'), "argyle"); From 05ae386b7957961023c19b01ac618e665acd51e8 Mon Sep 17 00:00:00 2001 From: Seba Kerckhof Date: Sat, 3 Nov 2018 21:14:47 +0100 Subject: [PATCH 27/60] Sanitize compiler name for environment variables (#10270) While strictly speaking more characters are allowed, they are not usable in a shell except for uppercase / digits / underscore. ( https://stackoverflow.com/a/2821183 ) --- packages/caching-compiler/caching-compiler.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/caching-compiler/caching-compiler.js b/packages/caching-compiler/caching-compiler.js index e29e1362e5..670841773d 100644 --- a/packages/caching-compiler/caching-compiler.js +++ b/packages/caching-compiler/caching-compiler.js @@ -13,7 +13,9 @@ CachingCompilerBase = class CachingCompilerBase { }) { this._compilerName = compilerName; this._maxParallelism = maxParallelism; - const envVarPrefix = 'METEOR_' + compilerName.toUpperCase() + '_CACHE_'; + const compilerNameForEnvar = compilerName.toUpperCase() + .replace('/-/g', '_').replace(/[^A-Z0-9_]/g, ''); + const envVarPrefix = 'METEOR_' + compilerNameForEnvar + '_CACHE_'; const debugEnvVar = envVarPrefix + 'DEBUG'; this._cacheDebugEnabled = !! process.env[debugEnvVar]; From 6a18c7a2bfbffea607a9d8958c8cdf5f4d4f57cd Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 3 Nov 2018 16:21:16 -0400 Subject: [PATCH 28/60] Bump caching-compiler package version. --- packages/caching-compiler/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/caching-compiler/package.js b/packages/caching-compiler/package.js index 987d9b7651..3628d83a65 100644 --- a/packages/caching-compiler/package.js +++ b/packages/caching-compiler/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'caching-compiler', - version: '1.2.0', + version: '1.2.1', summary: 'An easy way to make compiler plugins cache', documentation: 'README.md' }); From 13388b495565c17f065d01a754a418ea9ac7939b Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 3 Nov 2018 16:21:32 -0400 Subject: [PATCH 29/60] Bump session package version. --- packages/session/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/session/package.js b/packages/session/package.js index 1423e42912..5515510f25 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.1.8' + version: '1.2.0' }); Package.onUse(function (api) { From 44e713f046dd5ad606ed71abdf1cec959992bc65 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 12 Nov 2018 18:33:24 -0500 Subject: [PATCH 30/60] Ensure file.hash is always computed from sha1(file.data). With the introduction of lazy compilation in Meteor 1.8, calling inputFile.addJavaScript({ ... hash: inputFile.getSourceHash(), ... }, function () { return compiler.processFilesForTarget(inputFile); }); becomes problematic, since inputFile.getSourceHash() is usually different from compiler.processFilesForTarget(inputFile).hash, because the latter is computed from the compiled code, whereas the former is computed from the source code. For example, when we use file.hash to cache imported module identifiers in ImportScanner#_findImportedModuleIdentifiers, we really need to be using the hash of the compiled code, since a single source module can be compiled in different ways. If we cache based on the source hash, there's a risk of reusing the scanned imports from the web.browser version for the web.browser.legacy version, which can lead to all sorts of problems that are only apparent in legacy browsers. The quick fix is easy enough: BabelCompiler can simply stop including a hash in the eager options to inputFile.addJavaScript. This fix can be published as a minor update to the babel-compiler and ecmascript packages. The remaining changes in this commit add another layer of defense against this problem, by ignoring any hash options provided by compiler plugins, in favor of simply computing the hash from the compiled data buffer. These additional changes will become available in the next release of Meteor (likely 1.8.1). --- packages/babel-compiler/babel-compiler.js | 1 - packages/babel-compiler/package.js | 2 +- tools/isobuild/compiler-plugin.js | 16 +++++----------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/babel-compiler/babel-compiler.js b/packages/babel-compiler/babel-compiler.js index 6ae5146c4e..05e7a4a07f 100644 --- a/packages/babel-compiler/babel-compiler.js +++ b/packages/babel-compiler/babel-compiler.js @@ -30,7 +30,6 @@ BCp.processFilesForTarget = function (inputFiles) { if (inputFile.supportsLazyCompilation) { inputFile.addJavaScript({ path: inputFile.getPathInPackage(), - hash: inputFile.getSourceHash(), bare: !! inputFile.getFileOptions().bare }, function () { return compiler.processOneFileForTarget(inputFile); diff --git a/packages/babel-compiler/package.js b/packages/babel-compiler/package.js index feb7187df9..4cb6db1af7 100644 --- a/packages/babel-compiler/package.js +++ b/packages/babel-compiler/package.js @@ -6,7 +6,7 @@ Package.describe({ // isn't possible because you can't publish a non-recommended // release with package versions that don't have a pre-release // identifier at the end (eg, -dev) - version: '7.2.1' + version: '7.2.2' }); Npm.depends({ diff --git a/tools/isobuild/compiler-plugin.js b/tools/isobuild/compiler-plugin.js index 9d84313e76..6f3daa7e89 100644 --- a/tools/isobuild/compiler-plugin.js +++ b/tools/isobuild/compiler-plugin.js @@ -578,7 +578,6 @@ class ResourceSlot { // files.convertToStandardLineEndings only works on strings for now data: self.inputResource.data.toString('utf8'), path: self.inputResource.path, - hash: self.inputResource.hash, bare: self.inputResource.fileOptions && (self.inputResource.fileOptions.bare || // XXX eventually get rid of backward-compatibility "raw" name @@ -594,14 +593,10 @@ class ResourceSlot { // Any resource that isn't handled by compiler plugins just gets passed // through. if (self.inputResource.type === "js") { - let resource = self.inputResource; - if (! _.isString(resource.sourcePath)) { - resource.sourcePath = self.inputResource.path; - } - if (! _.isString(resource.targetPath)) { - resource.targetPath = resource.sourcePath; - } - self.jsOutputResources.push(resource); + self.jsOutputResources.push(new JsOutputResource({ + resourceSlot: self, + options: self.inputResource, + })); } else { self.outputResources.push(self.inputResource); } @@ -964,8 +959,7 @@ class OutputResource { return this._set("data", data); case "hash": - const { hash } = this._initialOptions; - return this._set("hash", hash || sha1(this._get("data"))); + return this._set("hash", sha1(this._get("data"))); case "sourceMap": let { sourceMap } = this._initialOptions; From 429441450608c3ae2f7c5bbbbfca84726da01028 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 12 Nov 2018 19:32:48 -0500 Subject: [PATCH 31/60] Update meteor-babel to version 7.1.5. --- History.md | 10 ++ .../.npm/package/npm-shrinkwrap.json | 100 +++++++++--------- packages/babel-compiler/package.js | 2 +- scripts/dev-bundle-tool-package.js | 4 +- tools/static-assets/skel-bare/package.json | 2 +- tools/static-assets/skel-full/package.json | 2 +- tools/static-assets/skel-minimal/package.json | 2 +- tools/static-assets/skel-react/package.json | 2 +- tools/static-assets/skel/package.json | 2 +- 9 files changed, 68 insertions(+), 58 deletions(-) diff --git a/History.md b/History.md index 53e80785fc..a316fe1c65 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,15 @@ ## v.NEXT +### Breaking changes +N/A + +### Migration steps +N/A + +### Changes + +* The `meteor-babel` npm package has been updated to version 7.1.5. + ## v1.8, 2018-10-08 ### Breaking changes diff --git a/packages/babel-compiler/.npm/package/npm-shrinkwrap.json b/packages/babel-compiler/.npm/package/npm-shrinkwrap.json index 4607d8579d..d2145a3833 100644 --- a/packages/babel-compiler/.npm/package/npm-shrinkwrap.json +++ b/packages/babel-compiler/.npm/package/npm-shrinkwrap.json @@ -7,9 +7,9 @@ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==" }, "@babel/core": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.2.tgz", - "integrity": "sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.5.tgz", + "integrity": "sha512-vOyH020C56tQvte++i+rX2yokZcRfbv/kKcw+/BCRw/cK6dvsr47aCzm8oC1XHwMSEWbqrZKzZRLzLnq6SFMsg==", "dependencies": { "json5": { "version": "0.5.1", @@ -19,16 +19,9 @@ } }, "@babel/generator": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.3.tgz", - "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==", - "dependencies": { - "@babel/types": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz", - "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==" - } - } + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.5.tgz", + "integrity": "sha512-IO31r62xfMI+wBJVmgx0JR9ZOHty8HkoYpQAjRWUGG9vykBTlGHdArZ8zoFtpUu2gs17K7qTl/TtPpiSi6t+MA==" }, "@babel/helper-annotate-as-pure": { "version": "7.0.0", @@ -131,9 +124,9 @@ "integrity": "sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==" }, "@babel/helpers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.2.tgz", - "integrity": "sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.1.5.tgz", + "integrity": "sha512-2jkcdL02ywNBry1YNFAH/fViq4fXG0vdckHqeJk+75fpQ2OH+Az6076tX/M0835zA45E0Cqa6pV5Kiv9YOqjEg==" }, "@babel/highlight": { "version": "7.0.0", @@ -141,9 +134,9 @@ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==" }, "@babel/parser": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.2.tgz", - "integrity": "sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.5.tgz", + "integrity": "sha512-WXKf5K5HT6X0kKiCOezJZFljsfxKV1FpU8Tf1A7ZpGvyd/Q4hlrJm2EwoH2onaUq3O4tLDp+4gk0hHPsMyxmOg==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.1.0", @@ -191,9 +184,9 @@ "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==" }, "@babel/plugin-syntax-typescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0.tgz", - "integrity": "sha512-5fxmdqiAQVQTIS+KSvYeZuTt91wKtBTYi6JlIkvbQ6hmO+9fZE81ezxmMiFMIsxE7CdRSgzn7nQ1BChcvK9OpA==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.1.5.tgz", + "integrity": "sha512-VqK5DFcS6/T8mT5CcJv1BwZLYFxkHiGZmP7Hs87F53lSToE/qfL7TpPrqFSaKyZi9w7Z/b/tmOGZZDupcJjFvw==" }, "@babel/plugin-transform-arrow-functions": { "version": "7.0.0", @@ -211,9 +204,9 @@ "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==" }, "@babel/plugin-transform-block-scoping": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", - "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.1.5.tgz", + "integrity": "sha512-jlYcDrz+5ayWC7mxgpn1Wj8zj0mmjCT2w0mPIMSwO926eXBRxpEgoN/uQVRBfjtr8ayjcmS+xk2G1jaP8JjMJQ==" }, "@babel/plugin-transform-classes": { "version": "7.1.0", @@ -341,9 +334,9 @@ "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==" }, "@babel/runtime": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", - "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.5.tgz", + "integrity": "sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA==" }, "@babel/template": { "version": "7.1.2", @@ -351,14 +344,14 @@ "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==" }, "@babel/traverse": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.0.tgz", - "integrity": "sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.5.tgz", + "integrity": "sha512-eU6XokWypl0MVJo+MTSPUtlfPePkrqsF26O+l1qFGlCKWwmiYAYy2Sy44Qw8m2u/LbPCsxYt90rghmqhYMGpPA==" }, "@babel/types": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", - "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.5.tgz", + "integrity": "sha512-sJeqa/d9eM/bax8Ivg+fXF7FpN3E/ZmTrWbkk6r+g7biVYfALMnLin4dKijsaqEhpd2xvOGfQTkQkD31YCVV4A==" }, "acorn": { "version": "5.7.3", @@ -461,9 +454,16 @@ "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=" }, "babel-plugin-transform-es2015-modules-reify": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-reify/-/babel-plugin-transform-es2015-modules-reify-0.17.0.tgz", - "integrity": "sha512-ndt36d1gb3sLb5iEejlDxGkfnfhghmMtmVcFoBs+0mY0uOKNfAfU+h56y403v8VnlbHggXAMhslaiVHG4hXMrw==" + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-reify/-/babel-plugin-transform-es2015-modules-reify-0.18.0.tgz", + "integrity": "sha512-bwbrF9cAsMvZamg+tkfN1fazGj5uiTxhaL5fRfR5xDp2JELgY8yrEhq42czar39EBvWscX0DA6dLSeCdY+4Xuw==", + "dependencies": { + "reify": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/reify/-/reify-0.18.1.tgz", + "integrity": "sha512-eNiNGxo5Cz/s/7DOeQW5+lTAxMexZPFA8XW/ef6f8WBLtQfYAhDNXxva7ROFC/Wa3q91usYzqJYwC85OXaWUzA==" + } + } }, "babel-plugin-transform-inline-consecutive-adds": { "version": "0.4.3", @@ -521,9 +521,9 @@ "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=" }, "babel-preset-meteor": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.1.2.tgz", - "integrity": "sha512-V0rhi9J8hPoKsyeNAQM4OnL3hHwEhHqgSvEmsqD2bzzeHJLmQiAX0PrPEcmY3rV+61GlI2tEE21nAkrPgPDC5Q==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.1.5.tgz", + "integrity": "sha512-U93lhe6HTpz3g9TskGqVijRbqc/wVkrQtxKrjJiIjdGkvJubNVm0jFcWcXHqc26QHtYv0c6tItHZAWKlj9zcNQ==" }, "babel-preset-minify": { "version": "0.5.0", @@ -566,9 +566,9 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "globals": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", - "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==" }, "has-flag": { "version": "3.0.0", @@ -581,9 +581,9 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json5": { "version": "2.1.0", @@ -606,9 +606,9 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, "meteor-babel": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.1.3.tgz", - "integrity": "sha512-5pLtk2SW7HXW97u0Ke9vRJw0KrAsgGUDdWGAn4WrgD1l4XIyK0sGMV0QLvirSgXRfff3UkAUik9hrXS1h1mDUw==" + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.1.5.tgz", + "integrity": "sha512-fJK9GYtZnIy3/pEG/mFb3uk3DQ0e5jTQxu5SYUZ2S8szWS2WgZtco2BMeWMFSLSma5XHgyzpfUhbxnP2A+/Aiw==" }, "meteor-babel-helpers": { "version": "0.0.3", @@ -672,7 +672,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" } } diff --git a/packages/babel-compiler/package.js b/packages/babel-compiler/package.js index 4cb6db1af7..30924ecb45 100644 --- a/packages/babel-compiler/package.js +++ b/packages/babel-compiler/package.js @@ -10,7 +10,7 @@ Package.describe({ }); Npm.depends({ - 'meteor-babel': '7.1.3', + 'meteor-babel': '7.1.5', 'json5': '2.1.0' }); diff --git a/scripts/dev-bundle-tool-package.js b/scripts/dev-bundle-tool-package.js index 3e6863f990..6c4b9b9031 100644 --- a/scripts/dev-bundle-tool-package.js +++ b/scripts/dev-bundle-tool-package.js @@ -14,13 +14,13 @@ var packageJson = { pacote: "https://github.com/meteor/pacote/tarball/a3285854a68e4969d6c8abaa74407f7d113b178f", "node-gyp": "3.7.0", "node-pre-gyp": "0.10.3", - "meteor-babel": "7.1.3", + "meteor-babel": "7.1.5", "meteor-promise": "0.8.6", promise: "8.0.1", reify: "0.17.3", fibers: "2.0.0", // So that Babel can emit require("@babel/runtime/helpers/...") calls. - "@babel/runtime": "7.1.2", + "@babel/runtime": "7.1.5", // For backwards compatibility with isopackets that still depend on // babel-runtime rather than @babel/runtime. "babel-runtime": "7.0.0-beta.3", diff --git a/tools/static-assets/skel-bare/package.json b/tools/static-assets/skel-bare/package.json index 12c1493b65..5febcb11b0 100644 --- a/tools/static-assets/skel-bare/package.json +++ b/tools/static-assets/skel-bare/package.json @@ -5,7 +5,7 @@ "start": "meteor run" }, "dependencies": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.1.5", "meteor-node-stubs": "^0.4.1" } } diff --git a/tools/static-assets/skel-full/package.json b/tools/static-assets/skel-full/package.json index 2564b5537b..5031f9fe40 100644 --- a/tools/static-assets/skel-full/package.json +++ b/tools/static-assets/skel-full/package.json @@ -6,7 +6,7 @@ "test": "meteor test --once --driver-package meteortesting:mocha" }, "dependencies": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.1.5", "meteor-node-stubs": "^0.4.1" }, "devDependencies": { diff --git a/tools/static-assets/skel-minimal/package.json b/tools/static-assets/skel-minimal/package.json index 9525e7f7d1..6beb4506e1 100644 --- a/tools/static-assets/skel-minimal/package.json +++ b/tools/static-assets/skel-minimal/package.json @@ -8,7 +8,7 @@ "visualize": "meteor --production --extra-packages bundle-visualizer" }, "dependencies": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.1.5", "meteor-node-stubs": "^0.4.1" }, "meteor": { diff --git a/tools/static-assets/skel-react/package.json b/tools/static-assets/skel-react/package.json index 08fcde47f1..3b07f09169 100644 --- a/tools/static-assets/skel-react/package.json +++ b/tools/static-assets/skel-react/package.json @@ -8,7 +8,7 @@ "visualize": "meteor --production --extra-packages bundle-visualizer" }, "dependencies": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.1.5", "meteor-node-stubs": "^0.4.1", "react": "^16.5.0", "react-dom": "^16.5.0" diff --git a/tools/static-assets/skel/package.json b/tools/static-assets/skel/package.json index 9525e7f7d1..6beb4506e1 100644 --- a/tools/static-assets/skel/package.json +++ b/tools/static-assets/skel/package.json @@ -8,7 +8,7 @@ "visualize": "meteor --production --extra-packages bundle-visualizer" }, "dependencies": { - "@babel/runtime": "^7.0.0", + "@babel/runtime": "^7.1.5", "meteor-node-stubs": "^0.4.1" }, "meteor": { From 253213c24ffef5f230a446d31dfe61eaf22e4ab0 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 12 Nov 2018 19:35:50 -0500 Subject: [PATCH 32/60] Bump ecmascript package version after bumping babel-compiler version. --- packages/ecmascript/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ecmascript/package.js b/packages/ecmascript/package.js index ba763a251e..a6e5ca0e2d 100644 --- a/packages/ecmascript/package.js +++ b/packages/ecmascript/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'ecmascript', - version: '0.12.1', + version: '0.12.2', summary: 'Compiler plugin that supports ES2015+ in all .js files', documentation: 'README.md' }); From 152879c0933ce5e25e0b0a5d157d9ad264225a67 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 12 Nov 2018 20:44:49 -0500 Subject: [PATCH 33/60] Bump diff-sequence package version to fix #10320. (#10331) After @nathan-muir's PR #10053, we did not publish a new version of the diff-sequence package, which would have contained DiffSequence.diffMaps. I honestly have no idea why #10320 did not manifest before now, but publishing these changes seems to fix it. --- packages/diff-sequence/package.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/diff-sequence/package.js b/packages/diff-sequence/package.js index 8e937db42e..18c673049b 100644 --- a/packages/diff-sequence/package.js +++ b/packages/diff-sequence/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "An implementation of a diff algorithm on arrays and objects.", - version: '1.1.0', + version: '1.1.1', documentation: null }); From 7a7d5bd8a2476ad97c4aa14483cb4542988482cf Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 14 Nov 2018 11:44:14 -0500 Subject: [PATCH 34/60] Bump $BUNDLE_VERSION to 8.11.4.6 before rebuilding dev bundle. --- meteor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meteor b/meteor index 2cc96758b3..17a3eb932f 100755 --- a/meteor +++ b/meteor @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Note: Skip 8.12.0.0, as it has already been used. -BUNDLE_VERSION=8.11.4.5 +BUNDLE_VERSION=8.11.4.6 # OS Check. Put here because here is where we download the precompiled # bundles that are arch specific. From c06a31a3225283716f154f15e62397c08e51f8c2 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 14 Nov 2018 12:01:18 -0500 Subject: [PATCH 35/60] Bump package versions for 1.8.0.1-rc.0 release. --- packages/meteor-tool/package.js | 2 +- packages/session/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index d38de4b7a9..ba087a10b9 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.8.0' + version: '1.8.0-1-rc.0' }); Package.includeTool(); diff --git a/packages/session/package.js b/packages/session/package.js index 5515510f25..862097188e 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.0' + version: '1.2.0-rc1801.0' }); Package.onUse(function (api) { diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 841ba991fb..df1c89e673 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.8-rc.17", + "version": "1.8.0.1-rc.0", "recommended": false, "official": false, "description": "Meteor" From ea28a34a2c2beba23560b9b0ea9bd8f12084e9bf Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 14 Nov 2018 11:27:40 +0200 Subject: [PATCH 36/60] Update `webapp`'s `useragent` npm to v2.3.0 to support HeadlessChrome. Previously, while the `useragent` package was able to parse the User-Agent for so-called "Headless Chrome" and generate a family of "HeadlessChrome", it was unable to parse out the individual portions of the version number (e.g. major, minor, patch). For example, the following User-Agent (herein referred to as `userAgentAbove`): ``` Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/69.0.3497.100 Safari/537.36 ``` Previously resulted in: ``` > require('useragent').lookup(userAgentAbove); { family: 'HeadlessChrome', major: '0', minor: '0', patch: '0', /* ... */ } ``` With the newer version of `useragent`, these are now properly extracted and set which will enable Meteor to treat Headless Chrome the same as Chrome in a follow-up commit. Now: ``` > require('useragent').lookup(userAgentAbove); { family: 'HeadlessChrome', major: '69', minor: '0', patch: '3497' /* ... */ } ``` --- .../webapp/.npm/package/npm-shrinkwrap.json | 77 +++++++++++-------- packages/webapp/package.js | 2 +- 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/packages/webapp/.npm/package/npm-shrinkwrap.json b/packages/webapp/.npm/package/npm-shrinkwrap.json index 23f7a65ded..f9f1cbd82b 100644 --- a/packages/webapp/.npm/package/npm-shrinkwrap.json +++ b/packages/webapp/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=" }, "basic-auth-connect": { "version": "1.0.0", @@ -17,9 +17,9 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=" + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==" }, "compression": { "version": "1.7.1", @@ -59,9 +59,9 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "destroy": { "version": "1.0.4", @@ -74,9 +74,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "errorhandler": { "version": "1.5.0", @@ -111,9 +111,16 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=" + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } }, "inherits": { "version": "2.0.3", @@ -121,9 +128,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==" }, "mime": { "version": "1.4.1", @@ -131,14 +138,14 @@ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=" + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==" }, "ms": { "version": "2.0.0", @@ -175,6 +182,11 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", "integrity": "sha1-zQTv9G9clcOn0EVZHXm14+AfEtc=" }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, "qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", @@ -201,9 +213,9 @@ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==" }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "statuses": { "version": "1.3.1", @@ -226,9 +238,9 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==" }, "utils-merge": { "version": "1.0.1", @@ -239,6 +251,11 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } } diff --git a/packages/webapp/package.js b/packages/webapp/package.js index ffc7c28a23..3f4447b166 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -12,7 +12,7 @@ Npm.depends({"basic-auth-connect": "1.0.0", send: "0.16.1", "stream-to-string": "1.1.0", "qs-middleware": "1.0.3", - useragent: "2.2.1"}); + useragent: "2.3.0"}); Npm.strip({ multiparty: ["test/"], From b65f8b06103efcad6457b9a0103195c4e155f28b Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 14 Nov 2018 11:35:25 +0200 Subject: [PATCH 37/60] For modern bundles, treat Chromium and "Headless Chrome" the same as Chrome. Best I can tell, the major version portion of Chromium versions has always tracked all the way through to Chrome Canary, Dev and Stable releases. Since we observe the major version of Chrome in terms of identifying it as a "modern browser", it seems to make sense to treat "Headless Chrome" and Chromium in the same regard. Interestingly, when the same Chrome as we all use on our machines is run with the `--headless` flag, it switches its `navigator.userAgent` to `HeadlessChrome/`, rather than `Chrome/`. This was initially problematic since the `useragent` npm we use for parsing user agents didn't understand this designation, however, with the update of `webapp`'s `useragent` npm in 058351b7, `headlesschrome` will now have its version available from `WebAppInternals.identifyBrowser`, so we can accurately identify it and serve it the modern bundle. --- packages/modern-browsers/modern.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/modern-browsers/modern.js b/packages/modern-browsers/modern.js index ed7e60b157..29b28aff3e 100644 --- a/packages/modern-browsers/modern.js +++ b/packages/modern-browsers/modern.js @@ -1,15 +1,24 @@ const minimumVersions = Object.create(null); const hasOwn = Object.prototype.hasOwnProperty; -// By default, any minimum versions specified for chrome should apply to -// chromeMobile too, per https://github.com/meteor/meteor/pull/9793, -// though it should also be possible to specify minimum versions -// specifically for chromeMobile. This map defines that aliasing behavior -// in a generic way that could work for other browsers as well. +// This map defines aliasing behavior in a generic way which still permits +// minimum versions to be specified for a specific browser family. const browserAliases = { chrome: [ + // chromeMobile*, per https://github.com/meteor/meteor/pull/9793, "chromeMobile", "chromeMobileIOS", + + // The major version number of Chromium and Headless Chrome track with the + // releases of Chrome Dev, Canary and Stable, so we should be okay to + // alias them to Chrome in a generic sense. + // https://www.chromium.org/developers/version-numbers + // + // Chromium is particularly important to list here since, unlike macOS + // builds, Linux builds list Chromium in the userAgent along with Chrome: + // e.g. Chromium/70.0.3538.77 Chrome/70.0.3538.77 + "chromium", + "headlesschrome", ], // If a call to setMinimumBrowserVersions specifies Edge 12 as a minimum From dc2f2487acc463c26462bfbf1ec02e0da50b57c3 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 10:20:25 -0500 Subject: [PATCH 38/60] Make modern/legacy browser name check case-insensitive. https://github.com/meteor/meteor/pull/10334#commitcomment-31302219 cc @abernix @hwillson --- packages/modern-browsers/modern.js | 44 ++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/packages/modern-browsers/modern.js b/packages/modern-browsers/modern.js index 29b28aff3e..43440bf615 100644 --- a/packages/modern-browsers/modern.js +++ b/packages/modern-browsers/modern.js @@ -35,17 +35,27 @@ const browserAliases = { // Expand the given minimum versions by reusing chrome versions for // chromeMobile (according to browserAliases above). function applyAliases(versions) { + const lowerCaseVersions = Object.create(null); + + Object.keys(versions).forEach(browser => { + lowerCaseVersions[browser.toLowerCase()] = versions[browser]; + }); + Object.keys(browserAliases).forEach(original => { - if (hasOwn.call(versions, original)) { - browserAliases[original].forEach(alias => { - if (! hasOwn.call(versions, alias)) { - versions[alias] = versions[original]; + const aliases = browserAliases[original]; + original = original.toLowerCase(); + + if (hasOwn.call(lowerCaseVersions, original)) { + aliases.forEach(alias => { + alias = alias.toLowerCase(); + if (! hasOwn.call(lowerCaseVersions, alias)) { + lowerCaseVersions[alias] = lowerCaseVersions[original]; } }); } }); - return versions; + return lowerCaseVersions; } // TODO Should it be possible for callers to setMinimumBrowserVersions to @@ -55,14 +65,17 @@ function applyAliases(versions) { // webapp via request.browser, return true if that browser qualifies as // "modern" according to all requested version constraints. function isModern(browser) { - return browser && + const lowerCaseName = browser && typeof browser.name === "string" && - hasOwn.call(minimumVersions, browser.name) && + browser.name.toLowerCase(); + + return !!lowerCaseName && + hasOwn.call(minimumVersions, lowerCaseName) && greaterThanOrEqualTo([ ~~browser.major, ~~browser.minor, ~~browser.patch, - ], minimumVersions[browser.name].version); + ], minimumVersions[lowerCaseName].version); } // Any package that depends on the modern-browsers package can call this @@ -71,17 +84,18 @@ function isModern(browser) { // web.browser.legacy and web.browser will be based on the maximum of all // requested minimum versions for each browser. function setMinimumBrowserVersions(versions, source) { - applyAliases(versions); + const lowerCaseVersions = applyAliases(versions); - Object.keys(versions).forEach(browserName => { - if (hasOwn.call(minimumVersions, browserName) && - ! greaterThan(versions[browserName], - minimumVersions[browserName].version)) { + Object.keys(lowerCaseVersions).forEach(lowerCaseName => { + const version = lowerCaseVersions[lowerCaseName]; + + if (hasOwn.call(minimumVersions, lowerCaseName) && + ! greaterThan(version, minimumVersions[lowerCaseName].version)) { return; } - minimumVersions[browserName] = { - version: copy(versions[browserName]), + minimumVersions[lowerCaseName] = { + version: copy(version), source: source || getCaller("setMinimumBrowserVersions") }; }); From 65e44f6da69459c2e6155c4f1b09708d2ab7d398 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 10:44:20 -0500 Subject: [PATCH 39/60] Bump webapp and modern-browsers package versions for #10334. --- packages/modern-browsers/package.js | 2 +- packages/webapp/package.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 5b6ca065a9..002b8c14a8 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.2", + version: "0.1.3", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 3f4447b166..cd0295ceaa 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.0' + version: '1.7.1' }); Npm.depends({"basic-auth-connect": "1.0.0", From 0bbb6df449d40efc11779a1d0fddf1c61fc957ff Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 11:57:16 -0500 Subject: [PATCH 40/60] Mention PR #10334 in History.md. --- History.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/History.md b/History.md index a316fe1c65..df6b163208 100644 --- a/History.md +++ b/History.md @@ -10,6 +10,13 @@ N/A * The `meteor-babel` npm package has been updated to version 7.1.5. +* The `useragent` npm package used by `webapp` and (indirectly) by the + `modern-browsers` package has been updated from 2.2.1 to 2.3.0. The + `chromium` browser name has been aliased to use the same minimum modern + version as `chrome`, and browser names are now processed + case-insensitively by the `modern-browsers` package. + [PR #10334](https://github.com/meteor/meteor/pull/10334) + ## v1.8, 2018-10-08 ### Breaking changes From 014dfab1acd01c140a8834ba61820d6b38b28b2e Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 11:10:47 -0600 Subject: [PATCH 41/60] Implement ResourceSlot#_addDirectlyToJsOutputResources to fix #10337. (#10338) --- tools/isobuild/compiler-plugin.js | 40 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/tools/isobuild/compiler-plugin.js b/tools/isobuild/compiler-plugin.js index 6f3daa7e89..1a3950bce1 100644 --- a/tools/isobuild/compiler-plugin.js +++ b/tools/isobuild/compiler-plugin.js @@ -571,19 +571,7 @@ class ResourceSlot { // If we have a sourceProcessor, it will handle the adding of the // final processed JavaScript. } else if (self.inputResource.extension === "js") { - // If there is no sourceProcessor for a .js file, add the source - // directly to the output. #HardcodeJs - self.addJavaScript({ - // XXX it's a shame to keep converting between Buffer and string, but - // files.convertToStandardLineEndings only works on strings for now - data: self.inputResource.data.toString('utf8'), - path: self.inputResource.path, - bare: self.inputResource.fileOptions && - (self.inputResource.fileOptions.bare || - // XXX eventually get rid of backward-compatibility "raw" name - // XXX COMPAT WITH 0.6.4 - self.inputResource.fileOptions.raw) - }); + self._addDirectlyToJsOutputResources(); } } else { if (sourceProcessor) { @@ -593,16 +581,23 @@ class ResourceSlot { // Any resource that isn't handled by compiler plugins just gets passed // through. if (self.inputResource.type === "js") { - self.jsOutputResources.push(new JsOutputResource({ - resourceSlot: self, - options: self.inputResource, - })); + self._addDirectlyToJsOutputResources(); } else { self.outputResources.push(self.inputResource); } } } + // Add this resource directly to jsOutputResources without modifying the + // original data. #HardcodeJs + _addDirectlyToJsOutputResources() { + this.addJavaScript({ + ...(this.inputResource.fileOptions || {}), + path: this.inputResource.path, + data: this.inputResource.data, + }); + } + _getOption(name, options) { if (options && _.has(options, name)) { return options[name]; @@ -693,6 +688,15 @@ class ResourceSlot { return isInImports; } + _isBare(options) { + return !! ( + this._getOption("bare", options) || + // XXX eventually get rid of backwards-compatible "raw" name + // XXX COMPAT WITH 0.6.4 + this._getOption("raw", options) + ); + } + addStylesheet(options, lazyFinalizer) { if (! this.sourceProcessor) { throw Error("addStylesheet on non-source ResourceSlot?"); @@ -868,7 +872,7 @@ class OutputResource { Object.assign(this, { type, lazy: resourceSlot._isLazy(options, true), - bare: !! resourceSlot._getOption("bare", options), + bare: resourceSlot._isBare(options), mainModule: !! resourceSlot._getOption("mainModule", options), sourcePath, targetPath, From 5e7e809cd1993cd1018725b3d3d510cc36191a2c Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 11:10:47 -0600 Subject: [PATCH 42/60] Implement ResourceSlot#_addDirectlyToJsOutputResources to fix #10337. (#10338) --- tools/isobuild/compiler-plugin.js | 40 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/tools/isobuild/compiler-plugin.js b/tools/isobuild/compiler-plugin.js index 6f3daa7e89..1a3950bce1 100644 --- a/tools/isobuild/compiler-plugin.js +++ b/tools/isobuild/compiler-plugin.js @@ -571,19 +571,7 @@ class ResourceSlot { // If we have a sourceProcessor, it will handle the adding of the // final processed JavaScript. } else if (self.inputResource.extension === "js") { - // If there is no sourceProcessor for a .js file, add the source - // directly to the output. #HardcodeJs - self.addJavaScript({ - // XXX it's a shame to keep converting between Buffer and string, but - // files.convertToStandardLineEndings only works on strings for now - data: self.inputResource.data.toString('utf8'), - path: self.inputResource.path, - bare: self.inputResource.fileOptions && - (self.inputResource.fileOptions.bare || - // XXX eventually get rid of backward-compatibility "raw" name - // XXX COMPAT WITH 0.6.4 - self.inputResource.fileOptions.raw) - }); + self._addDirectlyToJsOutputResources(); } } else { if (sourceProcessor) { @@ -593,16 +581,23 @@ class ResourceSlot { // Any resource that isn't handled by compiler plugins just gets passed // through. if (self.inputResource.type === "js") { - self.jsOutputResources.push(new JsOutputResource({ - resourceSlot: self, - options: self.inputResource, - })); + self._addDirectlyToJsOutputResources(); } else { self.outputResources.push(self.inputResource); } } } + // Add this resource directly to jsOutputResources without modifying the + // original data. #HardcodeJs + _addDirectlyToJsOutputResources() { + this.addJavaScript({ + ...(this.inputResource.fileOptions || {}), + path: this.inputResource.path, + data: this.inputResource.data, + }); + } + _getOption(name, options) { if (options && _.has(options, name)) { return options[name]; @@ -693,6 +688,15 @@ class ResourceSlot { return isInImports; } + _isBare(options) { + return !! ( + this._getOption("bare", options) || + // XXX eventually get rid of backwards-compatible "raw" name + // XXX COMPAT WITH 0.6.4 + this._getOption("raw", options) + ); + } + addStylesheet(options, lazyFinalizer) { if (! this.sourceProcessor) { throw Error("addStylesheet on non-source ResourceSlot?"); @@ -868,7 +872,7 @@ class OutputResource { Object.assign(this, { type, lazy: resourceSlot._isLazy(options, true), - bare: !! resourceSlot._getOption("bare", options), + bare: resourceSlot._isBare(options), mainModule: !! resourceSlot._getOption("mainModule", options), sourcePath, targetPath, From 5e987902915f357575f942c316601f9fba5e0fda Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 14 Nov 2018 11:27:40 +0200 Subject: [PATCH 43/60] Update `webapp`'s `useragent` npm to v2.3.0 to support HeadlessChrome. Previously, while the `useragent` package was able to parse the User-Agent for so-called "Headless Chrome" and generate a family of "HeadlessChrome", it was unable to parse out the individual portions of the version number (e.g. major, minor, patch). For example, the following User-Agent (herein referred to as `userAgentAbove`): ``` Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/69.0.3497.100 Safari/537.36 ``` Previously resulted in: ``` > require('useragent').lookup(userAgentAbove); { family: 'HeadlessChrome', major: '0', minor: '0', patch: '0', /* ... */ } ``` With the newer version of `useragent`, these are now properly extracted and set which will enable Meteor to treat Headless Chrome the same as Chrome in a follow-up commit. Now: ``` > require('useragent').lookup(userAgentAbove); { family: 'HeadlessChrome', major: '69', minor: '0', patch: '3497' /* ... */ } ``` --- .../webapp/.npm/package/npm-shrinkwrap.json | 77 +++++++++++-------- packages/webapp/package.js | 2 +- 2 files changed, 48 insertions(+), 31 deletions(-) diff --git a/packages/webapp/.npm/package/npm-shrinkwrap.json b/packages/webapp/.npm/package/npm-shrinkwrap.json index 23f7a65ded..f9f1cbd82b 100644 --- a/packages/webapp/.npm/package/npm-shrinkwrap.json +++ b/packages/webapp/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=" }, "basic-auth-connect": { "version": "1.0.0", @@ -17,9 +17,9 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "compressible": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz", - "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=" + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==" }, "compression": { "version": "1.7.1", @@ -59,9 +59,9 @@ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "destroy": { "version": "1.0.4", @@ -74,9 +74,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "errorhandler": { "version": "1.5.0", @@ -111,9 +111,16 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=" + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } }, "inherits": { "version": "2.0.3", @@ -121,9 +128,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=" + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==" }, "mime": { "version": "1.4.1", @@ -131,14 +138,14 @@ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=" + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==" }, "ms": { "version": "2.0.0", @@ -175,6 +182,11 @@ "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", "integrity": "sha1-zQTv9G9clcOn0EVZHXm14+AfEtc=" }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, "qs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", @@ -201,9 +213,9 @@ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==" }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "statuses": { "version": "1.3.1", @@ -226,9 +238,9 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==" }, "utils-merge": { "version": "1.0.1", @@ -239,6 +251,11 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } } diff --git a/packages/webapp/package.js b/packages/webapp/package.js index ffc7c28a23..3f4447b166 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -12,7 +12,7 @@ Npm.depends({"basic-auth-connect": "1.0.0", send: "0.16.1", "stream-to-string": "1.1.0", "qs-middleware": "1.0.3", - useragent: "2.2.1"}); + useragent: "2.3.0"}); Npm.strip({ multiparty: ["test/"], From 128c9311ea145e1a4e167d53910accb76109db75 Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 14 Nov 2018 11:35:25 +0200 Subject: [PATCH 44/60] For modern bundles, treat Chromium and "Headless Chrome" the same as Chrome. Best I can tell, the major version portion of Chromium versions has always tracked all the way through to Chrome Canary, Dev and Stable releases. Since we observe the major version of Chrome in terms of identifying it as a "modern browser", it seems to make sense to treat "Headless Chrome" and Chromium in the same regard. Interestingly, when the same Chrome as we all use on our machines is run with the `--headless` flag, it switches its `navigator.userAgent` to `HeadlessChrome/`, rather than `Chrome/`. This was initially problematic since the `useragent` npm we use for parsing user agents didn't understand this designation, however, with the update of `webapp`'s `useragent` npm in 058351b7, `headlesschrome` will now have its version available from `WebAppInternals.identifyBrowser`, so we can accurately identify it and serve it the modern bundle. --- packages/modern-browsers/modern.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/modern-browsers/modern.js b/packages/modern-browsers/modern.js index ed7e60b157..29b28aff3e 100644 --- a/packages/modern-browsers/modern.js +++ b/packages/modern-browsers/modern.js @@ -1,15 +1,24 @@ const minimumVersions = Object.create(null); const hasOwn = Object.prototype.hasOwnProperty; -// By default, any minimum versions specified for chrome should apply to -// chromeMobile too, per https://github.com/meteor/meteor/pull/9793, -// though it should also be possible to specify minimum versions -// specifically for chromeMobile. This map defines that aliasing behavior -// in a generic way that could work for other browsers as well. +// This map defines aliasing behavior in a generic way which still permits +// minimum versions to be specified for a specific browser family. const browserAliases = { chrome: [ + // chromeMobile*, per https://github.com/meteor/meteor/pull/9793, "chromeMobile", "chromeMobileIOS", + + // The major version number of Chromium and Headless Chrome track with the + // releases of Chrome Dev, Canary and Stable, so we should be okay to + // alias them to Chrome in a generic sense. + // https://www.chromium.org/developers/version-numbers + // + // Chromium is particularly important to list here since, unlike macOS + // builds, Linux builds list Chromium in the userAgent along with Chrome: + // e.g. Chromium/70.0.3538.77 Chrome/70.0.3538.77 + "chromium", + "headlesschrome", ], // If a call to setMinimumBrowserVersions specifies Edge 12 as a minimum From f3f584d96bda78a14af606957f50dc4211297824 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 10:20:25 -0500 Subject: [PATCH 45/60] Make modern/legacy browser name check case-insensitive. https://github.com/meteor/meteor/pull/10334#commitcomment-31302219 cc @abernix @hwillson --- packages/modern-browsers/modern.js | 44 ++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/packages/modern-browsers/modern.js b/packages/modern-browsers/modern.js index 29b28aff3e..43440bf615 100644 --- a/packages/modern-browsers/modern.js +++ b/packages/modern-browsers/modern.js @@ -35,17 +35,27 @@ const browserAliases = { // Expand the given minimum versions by reusing chrome versions for // chromeMobile (according to browserAliases above). function applyAliases(versions) { + const lowerCaseVersions = Object.create(null); + + Object.keys(versions).forEach(browser => { + lowerCaseVersions[browser.toLowerCase()] = versions[browser]; + }); + Object.keys(browserAliases).forEach(original => { - if (hasOwn.call(versions, original)) { - browserAliases[original].forEach(alias => { - if (! hasOwn.call(versions, alias)) { - versions[alias] = versions[original]; + const aliases = browserAliases[original]; + original = original.toLowerCase(); + + if (hasOwn.call(lowerCaseVersions, original)) { + aliases.forEach(alias => { + alias = alias.toLowerCase(); + if (! hasOwn.call(lowerCaseVersions, alias)) { + lowerCaseVersions[alias] = lowerCaseVersions[original]; } }); } }); - return versions; + return lowerCaseVersions; } // TODO Should it be possible for callers to setMinimumBrowserVersions to @@ -55,14 +65,17 @@ function applyAliases(versions) { // webapp via request.browser, return true if that browser qualifies as // "modern" according to all requested version constraints. function isModern(browser) { - return browser && + const lowerCaseName = browser && typeof browser.name === "string" && - hasOwn.call(minimumVersions, browser.name) && + browser.name.toLowerCase(); + + return !!lowerCaseName && + hasOwn.call(minimumVersions, lowerCaseName) && greaterThanOrEqualTo([ ~~browser.major, ~~browser.minor, ~~browser.patch, - ], minimumVersions[browser.name].version); + ], minimumVersions[lowerCaseName].version); } // Any package that depends on the modern-browsers package can call this @@ -71,17 +84,18 @@ function isModern(browser) { // web.browser.legacy and web.browser will be based on the maximum of all // requested minimum versions for each browser. function setMinimumBrowserVersions(versions, source) { - applyAliases(versions); + const lowerCaseVersions = applyAliases(versions); - Object.keys(versions).forEach(browserName => { - if (hasOwn.call(minimumVersions, browserName) && - ! greaterThan(versions[browserName], - minimumVersions[browserName].version)) { + Object.keys(lowerCaseVersions).forEach(lowerCaseName => { + const version = lowerCaseVersions[lowerCaseName]; + + if (hasOwn.call(minimumVersions, lowerCaseName) && + ! greaterThan(version, minimumVersions[lowerCaseName].version)) { return; } - minimumVersions[browserName] = { - version: copy(versions[browserName]), + minimumVersions[lowerCaseName] = { + version: copy(version), source: source || getCaller("setMinimumBrowserVersions") }; }); From 0296f15880c2dafbf2f73419045f32f0ccf7ad9f Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 10:44:20 -0500 Subject: [PATCH 46/60] Bump webapp and modern-browsers package versions for #10334. --- packages/modern-browsers/package.js | 2 +- packages/webapp/package.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 5b6ca065a9..002b8c14a8 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.2", + version: "0.1.3", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 3f4447b166..cd0295ceaa 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.0' + version: '1.7.1' }); Npm.depends({"basic-auth-connect": "1.0.0", From c326591bb85e94b4bc70f677737284ccbbe861b7 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 11:57:16 -0500 Subject: [PATCH 47/60] Note PR #10334 in History.md. --- History.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/History.md b/History.md index a316fe1c65..df6b163208 100644 --- a/History.md +++ b/History.md @@ -10,6 +10,13 @@ N/A * The `meteor-babel` npm package has been updated to version 7.1.5. +* The `useragent` npm package used by `webapp` and (indirectly) by the + `modern-browsers` package has been updated from 2.2.1 to 2.3.0. The + `chromium` browser name has been aliased to use the same minimum modern + version as `chrome`, and browser names are now processed + case-insensitively by the `modern-browsers` package. + [PR #10334](https://github.com/meteor/meteor/pull/10334) + ## v1.8, 2018-10-08 ### Breaking changes From 0561124bdefc7594d6e51b3a4175fff9faeb334f Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 13:50:13 -0500 Subject: [PATCH 48/60] Note PR #10330 in History.md. --- History.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/History.md b/History.md index df6b163208..a45beaa171 100644 --- a/History.md +++ b/History.md @@ -17,6 +17,14 @@ N/A case-insensitively by the `modern-browsers` package. [PR #10334](https://github.com/meteor/meteor/pull/10334) +* Fixed a module caching bug that allowed `findImportedModuleIdentifiers` + to return the same identifiers for the modern and legacy versions of a + given module, even if the set of imported modules is different (for + example, because Babel injects fewer `@babel/runtime/...` imports into + modern code). Now the caching is always based on the SHA-1 hash of the + _generated_ code, rather than trusting the hash provided by compiler + plugins. [PR #10330](https://github.com/meteor/meteor/pull/10330) + ## v1.8, 2018-10-08 ### Breaking changes From 4c22e5ec974300e3752d41975287c99fa345d749 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 15 Nov 2018 13:41:58 -0500 Subject: [PATCH 49/60] Bump package versions for 1.8.0.1-rc.1 release. --- packages/meteor-tool/package.js | 2 +- packages/modern-browsers/package.js | 2 +- packages/session/package.js | 2 +- packages/webapp/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index ba087a10b9..54dde5c2bf 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.8.0-1-rc.0' + version: '1.8.0-1-rc.1' }); Package.includeTool(); diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 002b8c14a8..7191fa79e0 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.3", + version: "0.1.3-rc1801.1", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/session/package.js b/packages/session/package.js index 862097188e..bc6b6e2757 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.0-rc1801.0' + version: '1.2.0-rc1801.1' }); Package.onUse(function (api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index cd0295ceaa..ca99af1555 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.1' + version: '1.7.1-rc1801.1' }); Npm.depends({"basic-auth-connect": "1.0.0", diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index df1c89e673..6cc1080086 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.8.0.1-rc.0", + "version": "1.8.0.1-rc.1", "recommended": false, "official": false, "description": "Meteor" From b55806f9310e91a243d32bbfb4b7b15607ac87aa Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 17 Nov 2018 15:25:54 -0500 Subject: [PATCH 50/60] Relax precondition in ResourceSlot#addJavaScript. https://github.com/meteor/meteor/issues/10337#issuecomment-439638590 --- tools/isobuild/compiler-plugin.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/isobuild/compiler-plugin.js b/tools/isobuild/compiler-plugin.js index 1a3950bce1..c481d57d06 100644 --- a/tools/isobuild/compiler-plugin.js +++ b/tools/isobuild/compiler-plugin.js @@ -786,7 +786,9 @@ class ResourceSlot { addJavaScript(options, lazyFinalizer) { // #HardcodeJs this gets called by constructor in the "js" case - if (! this.sourceProcessor && this.inputResource.extension !== "js") { + if (! this.sourceProcessor && + this.inputResource.extension !== "js" && + this.inputResource.type !== "js") { throw Error("addJavaScript on non-source ResourceSlot?"); } From c0a35f0457a24fbfd854c554423155c0eb434553 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Sat, 17 Nov 2018 15:27:35 -0500 Subject: [PATCH 51/60] Bump package versions for 1.8.0.1-rc.2 release. --- packages/meteor-tool/package.js | 2 +- packages/modern-browsers/package.js | 2 +- packages/session/package.js | 2 +- packages/webapp/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 54dde5c2bf..b54071f493 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.8.0-1-rc.1' + version: '1.8.0-1-rc.2' }); Package.includeTool(); diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 7191fa79e0..b3c3c7188e 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.3-rc1801.1", + version: "0.1.3-rc1801.2", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/session/package.js b/packages/session/package.js index bc6b6e2757..cbe3dad17b 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.0-rc1801.1' + version: '1.2.0-rc1801.2' }); Package.onUse(function (api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index ca99af1555..52c8b8abf2 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.1-rc1801.1' + version: '1.7.1-rc1801.2' }); Npm.depends({"basic-auth-connect": "1.0.0", diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 6cc1080086..f09c901213 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.8.0.1-rc.1", + "version": "1.8.0.1-rc.2", "recommended": false, "official": false, "description": "Meteor" From 7ce3ca29fd7fb5f1ab68a652cc1d801e377dc75f Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 19 Nov 2018 12:39:58 -0500 Subject: [PATCH 52/60] Avoid computing servePath from undefined targetPath. https://github.com/meteor/meteor/issues/10337#issuecomment-439674497 --- tools/isobuild/compiler-plugin.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/isobuild/compiler-plugin.js b/tools/isobuild/compiler-plugin.js index c481d57d06..760bb79eac 100644 --- a/tools/isobuild/compiler-plugin.js +++ b/tools/isobuild/compiler-plugin.js @@ -870,6 +870,9 @@ class OutputResource { } const targetPath = options.path || sourcePath; + const servePath = targetPath + ? resourceSlot.packageSourceBatch.unibuild.pkg._getServePath(targetPath) + : resourceSlot.inputResource.servePath; Object.assign(this, { type, @@ -878,8 +881,7 @@ class OutputResource { mainModule: !! resourceSlot._getOption("mainModule", options), sourcePath, targetPath, - servePath: resourceSlot.packageSourceBatch - .unibuild.pkg._getServePath(targetPath), + servePath, }); } From 4ceb405f278489fcb9ef1a2e326d4073d14a040d Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 19 Nov 2018 12:45:51 -0500 Subject: [PATCH 53/60] Bump package versions for 1.8.0.1-rc.3 release. --- packages/meteor-tool/package.js | 2 +- packages/modern-browsers/package.js | 2 +- packages/session/package.js | 2 +- packages/webapp/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index b54071f493..56ac3ea8c7 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.8.0-1-rc.2' + version: '1.8.0-1-rc.3' }); Package.includeTool(); diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index b3c3c7188e..4e50ee0693 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.3-rc1801.2", + version: "0.1.3-rc1801.3", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/session/package.js b/packages/session/package.js index cbe3dad17b..b737cdc4d3 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.0-rc1801.2' + version: '1.2.0-rc1801.3' }); Package.onUse(function (api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 52c8b8abf2..4136fd96f2 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.1-rc1801.2' + version: '1.7.1-rc1801.3' }); Npm.depends({"basic-auth-connect": "1.0.0", diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index f09c901213..eecca408a6 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.8.0.1-rc.2", + "version": "1.8.0.1-rc.3", "recommended": false, "official": false, "description": "Meteor" From 346d512b135135e196514687ab0133e0c3e1057a Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 20 Nov 2018 10:47:26 -0500 Subject: [PATCH 54/60] Propagate input hashes all the way through bundling. Hashes have a number of overlapping but not entirely redundant or equivalent purposes within the build system. Hashes of source code are important because they can be computed before compilation and processing, and thus are useful as keys for caching that expensive work. Source hashes remain useful even after compilation, as a way of reflecting the contributions of source-code-sensitive assets like source maps. However, source hashes do not tell the whole story, and using them as cache keys can be risky if the work that's being cached depends on generated code rather than source code, as we recently discovered with the findImportedModuleIdentifiers function. The preliminary fix for that problem (#10330) was to cache findImportedModuleIdentifiers using a hash of the generated code rather than the source hash. PR #10330 swung a bit too far in the direction of ignoring source hashes and considering only hashes of generated code. For example, the URLs of source maps share the hash of the corresponding resource, but source maps can change (because of superficial changes in the source code) without changing the generated code of the resource. Ignoring the source hash when computing source map URLs resulted in stale source maps with incorrect line numbers. A better solution seems to be to propagate the source hash (along with any hashes of intermediate generated artifacts) all the way through bundling, so that the final hash of any static resource reflects all information that could/should change the behavior of that static resource, including its source map, which embeds the exact source code of all contributing files in the sourcesContent property. At every step of the way, we merge all the input hashes into a single hash, so we don't have to keep juggling multiple hashes, thankfully. Sub-Resource Integrity (SRI) hashes still need to be computed from just the final contents of a given asset, so that the browser can verify those contents without knowing anything about the Meteor build system, but that's handled separately. --- tools/isobuild/bundler.js | 33 ++++++++++++++++++++++--------- tools/isobuild/compiler-plugin.js | 17 ++++++++++++++-- tools/isobuild/linker.js | 17 ++++++++++------ 3 files changed, 50 insertions(+), 17 deletions(-) diff --git a/tools/isobuild/bundler.js b/tools/isobuild/bundler.js index b6eb36b360..7cced55f7a 100644 --- a/tools/isobuild/bundler.js +++ b/tools/isobuild/bundler.js @@ -597,6 +597,7 @@ class File { this.assets = null; this._contents = options.data || null; // contents, if known, as a Buffer + this._inputHash = options.hash; this._hash = null; this._sri = null; } @@ -612,10 +613,15 @@ class File { hash() { if (! this._hash) { - this._hash = watch.sha1( - String(File._salt()), - this.sri(), - ); + const hashes = [String(File._salt())]; + + if (typeof this._inputHash === "string") { + hashes.push(this._inputHash); + } + + hashes.push(this.sri()); + + this._hash = watch.sha1(...hashes); } return this._hash; @@ -1086,6 +1092,7 @@ class Target { info: 'resource ' + resource.servePath, arch: target.arch, data: resource.data, + hash: resource.hash, }); file.setTargetPathFromRelPath( @@ -1212,6 +1219,7 @@ class Target { info: 'resource ' + resource.servePath, arch: this.arch, data: resource.data, + hash: resource.hash, cacheable: false, }); @@ -1306,14 +1314,14 @@ class Target { const staticFiles = []; const dynamicFiles = []; const { arch } = this; + const inputHashesByJsFile = new Map; this.js.forEach(file => { const jsf = new JsFile(file, { arch }); - if (file.targetPath.startsWith("dynamic/")) { - // Make sure file._hash is cached. - file.hash(); + inputHashesByJsFile.set(jsf, file.hash()); + if (file.targetPath.startsWith("dynamic/")) { // Dynamic files consist of a single anonymous function // expression, which some minifiers (e.g. UglifyJS) either fail to // parse or mistakenly eliminate as dead code. To avoid these @@ -1365,6 +1373,7 @@ class Target { info: 'minified js', arch, data: Buffer.from(file.data, 'utf8'), + hash: inputHashesByJsFile.get(source), }); if (file.sourceMap) { @@ -1808,7 +1817,12 @@ const minifyCssFiles = Profile("minifyCssFiles", wrap(function (files, { minifier, minifyMode, }) { - const sources = files.map(file => new CssFile(file, { arch })); + const inputHashesByCssFile = new Map; + const sources = files.map(file => { + const cssFile = new CssFile(file, { arch }); + inputHashesByCssFile.set(cssFile, file.hash()); + return cssFile; + }); const markedMinifier = buildmessage.markBoundary( minifier.userPlugin.processFilesForBundle, minifier.userPlugin, @@ -1827,7 +1841,8 @@ const minifyCssFiles = Profile("minifyCssFiles", wrap(function (files, { const newFile = new File({ info: 'minified css', arch, - data: Buffer.from(file.data, 'utf8') + data: Buffer.from(file.data, 'utf8'), + hash: inputHashesByCssFile.get(source), }); if (file.sourceMap) { newFile.setSourceMap(file.sourceMap, '/'); diff --git a/tools/isobuild/compiler-plugin.js b/tools/isobuild/compiler-plugin.js index 760bb79eac..b3ae075895 100644 --- a/tools/isobuild/compiler-plugin.js +++ b/tools/isobuild/compiler-plugin.js @@ -882,6 +882,9 @@ class OutputResource { sourcePath, targetPath, servePath, + // Remember the source hash so that changes to the source that + // disappear after compilation can still contribute to the hash. + _inputHash: resourceSlot.inputResource.hash, }); } @@ -966,8 +969,17 @@ class OutputResource { } return this._set("data", data); - case "hash": - return this._set("hash", sha1(this._get("data"))); + case "hash": { + const hashes = []; + + if (typeof this._inputHash === "string") { + hashes.push(this._inputHash); + } + + hashes.push(sha1(this._get("data"))); + + return this._set("hash", sha1(...hashes)); + } case "sourceMap": let { sourceMap } = this._initialOptions; @@ -1657,6 +1669,7 @@ export class PackageSourceBatch { // before returning from the method (but after writing // to cache). data: file.source, + hash: file.hash, servePath: file.servePath, sourceMap: sm }; diff --git a/tools/isobuild/linker.js b/tools/isobuild/linker.js index 7a569f2e10..e824bfad4a 100644 --- a/tools/isobuild/linker.js +++ b/tools/isobuild/linker.js @@ -122,7 +122,10 @@ _.extend(Module.prototype, { return _.map(eagerFiles, function (file) { const cacheKey = JSON.stringify([ - file.sourceHash, file.bare, file.servePath]); + file._inputHash, + file.bare, + file.servePath, + ]); if (APP_PRELINK_CACHE.has(cacheKey)) { return APP_PRELINK_CACHE.get(cacheKey); @@ -146,7 +149,8 @@ _.extend(Module.prototype, { source: results.code, sourcePath: file.sourcePath, servePath: file.servePath, - sourceMap: sourceMap + sourceMap: sourceMap, + hash: file._inputHash, }; APP_PRELINK_CACHE.set(cacheKey, prelinked); @@ -164,6 +168,7 @@ _.extend(Module.prototype, { // .sourceMap, and (optionally) .exportsName properties before being // returned from this method in a singleton array. servePath: self.combinedServePath, + hash: watch.sha1(...self.files.map(file => file._inputHash)), }; const results = [result]; @@ -550,7 +555,7 @@ function File(inputFile, module) { // hash of source (precalculated for *.js files, calculated here for files // produced by plugins) - self.sourceHash = inputFile.hash || watch.sha1(self.source); + self._inputHash = inputFile.hash || watch.sha1(self.source); // The path of the source file, relative to the root directory of the // package or application. @@ -637,7 +642,7 @@ _.extend(File.prototype, { } try { - return _.keys(findAssignedGlobals(self.source, self.sourceHash)); + return _.keys(findAssignedGlobals(self.source, self._inputHash)); } catch (e) { if (!e.$ParseError) { throw e; @@ -664,7 +669,7 @@ _.extend(File.prototype, { // Recover by pretending that this file is empty (which // includes replacing its source code with '' in the output) self.source = ""; - self.sourceHash = watch.sha1(self.source); + self._inputHash = watch.sha1(self.source); self.sourceMap = null; return []; } @@ -812,7 +817,7 @@ const getPrelinkedOutputCached = require("optimism").wrap( makeCacheKey(file, options) { return JSON.stringify({ - sourceHash: file.sourceHash, + hash: file._inputHash, arch: file.module.bundleArch, bare: file.bare, servePath: file.servePath, From d5cee78567057e3ccfc0e3dc4a6fb025e87dc950 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 20 Nov 2018 16:23:26 -0500 Subject: [PATCH 55/60] Update meteor-babel to version 7.1.6. Change responsible for the source maps improvements: https://github.com/meteor/babel/commit/389cf7dfed9a2dfa980c40aaeda8d916da08675e --- History.md | 3 +- .../.npm/package/npm-shrinkwrap.json | 66 +++++++++---------- packages/babel-compiler/package.js | 4 +- packages/ecmascript/package.js | 2 +- scripts/dev-bundle-tool-package.js | 2 +- 5 files changed, 39 insertions(+), 38 deletions(-) diff --git a/History.md b/History.md index df6b163208..f6da336b3e 100644 --- a/History.md +++ b/History.md @@ -8,7 +8,8 @@ N/A ### Changes -* The `meteor-babel` npm package has been updated to version 7.1.5. +* The `meteor-babel` npm package has been updated to version 7.1.6, + improving source maps for applications with custom `.babelrc` files. * The `useragent` npm package used by `webapp` and (indirectly) by the `modern-browsers` package has been updated from 2.2.1 to 2.3.0. The diff --git a/packages/babel-compiler/.npm/package/npm-shrinkwrap.json b/packages/babel-compiler/.npm/package/npm-shrinkwrap.json index d2145a3833..abe529c07b 100644 --- a/packages/babel-compiler/.npm/package/npm-shrinkwrap.json +++ b/packages/babel-compiler/.npm/package/npm-shrinkwrap.json @@ -7,21 +7,21 @@ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==" }, "@babel/core": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.5.tgz", - "integrity": "sha512-vOyH020C56tQvte++i+rX2yokZcRfbv/kKcw+/BCRw/cK6dvsr47aCzm8oC1XHwMSEWbqrZKzZRLzLnq6SFMsg==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.1.6.tgz", + "integrity": "sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw==", "dependencies": { "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==" } } }, "@babel/generator": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.5.tgz", - "integrity": "sha512-IO31r62xfMI+wBJVmgx0JR9ZOHty8HkoYpQAjRWUGG9vykBTlGHdArZ8zoFtpUu2gs17K7qTl/TtPpiSi6t+MA==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", + "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==" }, "@babel/helper-annotate-as-pure": { "version": "7.0.0", @@ -134,9 +134,9 @@ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==" }, "@babel/parser": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.5.tgz", - "integrity": "sha512-WXKf5K5HT6X0kKiCOezJZFljsfxKV1FpU8Tf1A7ZpGvyd/Q4hlrJm2EwoH2onaUq3O4tLDp+4gk0hHPsMyxmOg==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", + "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==" }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.1.0", @@ -229,9 +229,9 @@ "integrity": "sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==" }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0.tgz", - "integrity": "sha512-WhXUNb4It5a19RsgKKbQPrjmy4yWOY1KynpEbNw7bnd1QTcrT/EIl3MJvnGgpgvrKyKbqX7nUNOJfkpLOnoDKA==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.1.6.tgz", + "integrity": "sha512-0tyFAAjJmnRlr8MVJV39ASn1hv+PbdVP71hf7aAseqLfQ0o9QXk9htbMbq7/ZYXnUIp6gDw0lUUP0+PQMbbtmg==" }, "@babel/plugin-transform-for-of": { "version": "7.0.0", @@ -269,9 +269,9 @@ "integrity": "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==" }, "@babel/plugin-transform-react-jsx": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz", - "integrity": "sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.1.6.tgz", + "integrity": "sha512-iU/IUlPEYDRwuqLwqVobzPAZkBOQoZ9xRTBmj6ANuk5g/Egn/zdNGnXlSoKeNmKoYVeIRxx5GZhWmMhLik8dag==" }, "@babel/plugin-transform-react-jsx-self": { "version": "7.0.0", @@ -344,14 +344,14 @@ "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==" }, "@babel/traverse": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.5.tgz", - "integrity": "sha512-eU6XokWypl0MVJo+MTSPUtlfPePkrqsF26O+l1qFGlCKWwmiYAYy2Sy44Qw8m2u/LbPCsxYt90rghmqhYMGpPA==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", + "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==" }, "@babel/types": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.5.tgz", - "integrity": "sha512-sJeqa/d9eM/bax8Ivg+fXF7FpN3E/ZmTrWbkk6r+g7biVYfALMnLin4dKijsaqEhpd2xvOGfQTkQkD31YCVV4A==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", + "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==" }, "acorn": { "version": "5.7.3", @@ -521,9 +521,9 @@ "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=" }, "babel-preset-meteor": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.1.5.tgz", - "integrity": "sha512-U93lhe6HTpz3g9TskGqVijRbqc/wVkrQtxKrjJiIjdGkvJubNVm0jFcWcXHqc26QHtYv0c6tItHZAWKlj9zcNQ==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.1.6.tgz", + "integrity": "sha512-4wjyLmCieDVP9UL9SRl/hOy3mCJj+uz4CP8SCfvzDqiOhbdks15/EmDYEJCxSvM5YzHLdEpTzP1XZnsyBQQWJw==" }, "babel-preset-minify": { "version": "0.5.0", @@ -551,9 +551,9 @@ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==" }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==" }, "escape-string-regexp": { "version": "1.0.5", @@ -606,9 +606,9 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" }, "meteor-babel": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.1.5.tgz", - "integrity": "sha512-fJK9GYtZnIy3/pEG/mFb3uk3DQ0e5jTQxu5SYUZ2S8szWS2WgZtco2BMeWMFSLSma5XHgyzpfUhbxnP2A+/Aiw==" + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.1.6.tgz", + "integrity": "sha512-crg3PQ+/vXex4woNeM9nIS0eDziIpxfFlPPDYzCfCzQgk0sP+P56POzfJ53gKt+Y9nkqDBSPXJOExjqpO8jOVw==" }, "meteor-babel-helpers": { "version": "0.0.3", diff --git a/packages/babel-compiler/package.js b/packages/babel-compiler/package.js index 30924ecb45..75b700b54c 100644 --- a/packages/babel-compiler/package.js +++ b/packages/babel-compiler/package.js @@ -6,11 +6,11 @@ Package.describe({ // isn't possible because you can't publish a non-recommended // release with package versions that don't have a pre-release // identifier at the end (eg, -dev) - version: '7.2.2' + version: '7.2.3' }); Npm.depends({ - 'meteor-babel': '7.1.5', + 'meteor-babel': '7.1.6', 'json5': '2.1.0' }); diff --git a/packages/ecmascript/package.js b/packages/ecmascript/package.js index a6e5ca0e2d..04de3fcb70 100644 --- a/packages/ecmascript/package.js +++ b/packages/ecmascript/package.js @@ -1,6 +1,6 @@ Package.describe({ name: 'ecmascript', - version: '0.12.2', + version: '0.12.3', summary: 'Compiler plugin that supports ES2015+ in all .js files', documentation: 'README.md' }); diff --git a/scripts/dev-bundle-tool-package.js b/scripts/dev-bundle-tool-package.js index 6c4b9b9031..e7f8daa7c8 100644 --- a/scripts/dev-bundle-tool-package.js +++ b/scripts/dev-bundle-tool-package.js @@ -14,7 +14,7 @@ var packageJson = { pacote: "https://github.com/meteor/pacote/tarball/a3285854a68e4969d6c8abaa74407f7d113b178f", "node-gyp": "3.7.0", "node-pre-gyp": "0.10.3", - "meteor-babel": "7.1.5", + "meteor-babel": "7.1.6", "meteor-promise": "0.8.6", promise: "8.0.1", reify: "0.17.3", From f440ef4d7a2e4dad69e55ea209f11c1e0716703c Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 20 Nov 2018 16:47:11 -0500 Subject: [PATCH 56/60] Bump $BUNDLE_VERSION to 8.11.4.7 before rebuilding dev bundle. --- meteor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meteor b/meteor index 17a3eb932f..189baed075 100755 --- a/meteor +++ b/meteor @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Note: Skip 8.12.0.0, as it has already been used. -BUNDLE_VERSION=8.11.4.6 +BUNDLE_VERSION=8.11.4.7 # OS Check. Put here because here is where we download the precompiled # bundles that are arch specific. From e8440a491dee7150887d30f6fc02a24efde99a40 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 20 Nov 2018 17:14:23 -0500 Subject: [PATCH 57/60] Bump package versions for 1.8.0.1-rc.4 release. --- packages/meteor-tool/package.js | 2 +- packages/modern-browsers/package.js | 2 +- packages/session/package.js | 2 +- packages/webapp/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 56ac3ea8c7..f5367b5580 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.8.0-1-rc.3' + version: '1.8.0-1-rc.4' }); Package.includeTool(); diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 4e50ee0693..8564f9534a 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.3-rc1801.3", + version: "0.1.3-rc1801.4", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/session/package.js b/packages/session/package.js index b737cdc4d3..0aea76c075 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.0-rc1801.3' + version: '1.2.0-rc1801.4' }); Package.onUse(function (api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 4136fd96f2..85e8028af5 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.1-rc1801.3' + version: '1.7.1-rc1801.4' }); Npm.depends({"basic-auth-connect": "1.0.0", diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index eecca408a6..c33bd87c9b 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.8.0.1-rc.3", + "version": "1.8.0.1-rc.4", "recommended": false, "official": false, "description": "Meteor" From 0f5bed4707ef9d95e7b0ab1e3153ba8fe9b01a3e Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 20 Nov 2018 17:47:49 -0500 Subject: [PATCH 58/60] Avoid passing lots of ...args to watch.sha1. --- tools/isobuild/linker.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/isobuild/linker.js b/tools/isobuild/linker.js index e824bfad4a..697460fcf3 100644 --- a/tools/isobuild/linker.js +++ b/tools/isobuild/linker.js @@ -168,7 +168,9 @@ _.extend(Module.prototype, { // .sourceMap, and (optionally) .exportsName properties before being // returned from this method in a singleton array. servePath: self.combinedServePath, - hash: watch.sha1(...self.files.map(file => file._inputHash)), + hash: watch.sha1( + JSON.stringify(self.files.map(file => file._inputHash)) + ), }; const results = [result]; From eecc11ea63a97bcc650f11dfd3f7cda122c31f33 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Fri, 23 Nov 2018 11:48:11 -0500 Subject: [PATCH 59/60] Note release date for Meteor 1.8.0.1 in History.md. --- History.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/History.md b/History.md index 95138424ee..66ccbfed23 100644 --- a/History.md +++ b/History.md @@ -8,6 +8,16 @@ N/A ### Changes +## v1.8.0.1, 2018-11-23 + +### Breaking changes +N/A + +### Migration steps +N/A + +### Changes + * The `meteor-babel` npm package has been updated to version 7.1.6, improving source maps for applications with custom `.babelrc` files. From ca2d44204f98cde52ce7ba296cd6f301f217d1b6 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Fri, 23 Nov 2018 11:50:10 -0500 Subject: [PATCH 60/60] Bump package versions for the official 1.8.0.1 release. --- packages/meteor-tool/package.js | 2 +- packages/modern-browsers/package.js | 2 +- packages/session/package.js | 2 +- packages/webapp/package.js | 2 +- scripts/admin/meteor-release-official.json | 5 ++++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index f5367b5580..296c189ffd 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.8.0-1-rc.4' + version: '1.8.0_1' }); Package.includeTool(); diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 8564f9534a..002b8c14a8 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.3-rc1801.4", + version: "0.1.3", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/session/package.js b/packages/session/package.js index 0aea76c075..5515510f25 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.2.0-rc1801.4' + version: '1.2.0' }); Package.onUse(function (api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 85e8028af5..cd0295ceaa 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.7.1-rc1801.4' + version: '1.7.1' }); Npm.depends({"basic-auth-connect": "1.0.0", diff --git a/scripts/admin/meteor-release-official.json b/scripts/admin/meteor-release-official.json index f683bf5f88..6e8dbb81cf 100644 --- a/scripts/admin/meteor-release-official.json +++ b/scripts/admin/meteor-release-official.json @@ -1,7 +1,10 @@ { "track": "METEOR", - "version": "1.8", + "version": "1.8.0.1", "recommended": false, "official": true, + "patchFrom": [ + "1.8" + ], "description": "The Official Meteor Distribution" }