Merge pull request #10336 from meteor/release-1.8.0.1

Release 1.8.0.1
This commit is contained in:
Ben Newman
2018-11-23 11:45:17 -06:00
committed by GitHub
69 changed files with 1252 additions and 1815 deletions

View File

@@ -1,5 +1,41 @@
## v.NEXT
### Breaking changes
N/A
### Migration steps
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.
* 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)
* 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
@@ -8,6 +44,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
```

View File

@@ -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 Meteors included Mongo/DDP data stack, you should feel good about Meteors 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.*

2
meteor
View File

@@ -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.7
# OS Check. Put here because here is where we download the precompiled
# bundles that are arch specific.

View File

@@ -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,
);

View File

@@ -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",

View File

@@ -7,21 +7,21 @@
"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.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": "https://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.0.0",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz",
"integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q=="
"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",
@@ -124,9 +124,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.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",
@@ -134,9 +134,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.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",
@@ -184,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",
@@ -204,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",
@@ -219,9 +219,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",
@@ -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",
@@ -334,24 +334,24 @@
"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.5",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.5.tgz",
"integrity": "sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA=="
},
"@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",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.0.tgz",
"integrity": "sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw=="
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
"integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ=="
},
"@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.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz",
"integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w=="
},
"acorn": {
"version": "5.7.3",
@@ -364,9 +364,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 +394,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 +429,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 +439,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",
@@ -454,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",
@@ -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.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.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": "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",
@@ -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.9.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
"integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg=="
},
"has-flag": {
"version": "3.0.0",
@@ -574,14 +581,14 @@
"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.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.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",
@@ -665,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="
}
}
@@ -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",

View File

@@ -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);

View File

@@ -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.3'
});
Npm.depends({
'meteor-babel': '7.1.0',
'json5': '2.0.1'
'meteor-babel': '7.1.6',
'json5': '2.1.0'
});
Package.onUse(function (api) {

View File

@@ -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];
@@ -25,6 +27,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 +119,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 +341,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())
}`
);
});
}
}

View File

@@ -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())
}`
);
});
}
}

View File

@@ -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'
});

View File

@@ -40,7 +40,7 @@ function onDDPVersionNegotiationFailure(description) {
return [true, { DDPVersionNegotiationFailures: failures }];
});
retry.retryLater(failures, () => {
Package.reload.Reload._reload();
Package.reload.Reload._reload({ immediateMigration: true });
});
}
}

View File

@@ -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];
}

View File

@@ -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
});

View File

@@ -1,6 +1,6 @@
Package.describe({
name: 'ecmascript',
version: '0.12.0',
version: '0.12.3',
summary: 'Compiler plugin that supports ES2015+ in all .js files',
documentation: 'README.md'
});

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "The Meteor command-line tool",
version: '1.8.0'
version: '1.8.0_1'
});
Package.includeTool();

File diff suppressed because it is too large Load Diff

View File

@@ -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');
}
);

View File

@@ -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);

View File

@@ -1,11 +1,11 @@
Package.describe({
summary: 'CSS minifier',
version: '1.4.0'
version: '1.4.1'
});
Npm.depends({
postcss: '6.0.13',
cssnano: '3.10.0'
postcss: '7.0.5',
cssnano: '4.1.7'
});
Package.onUse(function (api) {

View File

@@ -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
@@ -26,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
@@ -46,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
@@ -62,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")
};
});

View File

@@ -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"

View File

@@ -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=="
}
}
}

View File

@@ -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) {

View File

@@ -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",

View File

@@ -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'
});

View File

@@ -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",

View File

@@ -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);
}

View File

@@ -6,12 +6,12 @@ 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({
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
@@ -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'
}
});

View File

@@ -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();
}
})();

View File

@@ -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] =

View File

@@ -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).

View File

@@ -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;
@@ -443,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.

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Common code for OAuth-based services",
version: "1.2.3"
version: "1.2.6"
});
Package.onUse(api => {

View File

@@ -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(

View File

@@ -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 => {

View File

@@ -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)) {

View File

@@ -1,10 +1,10 @@
Package.describe({
summary: "Session variable",
version: '1.1.8'
version: '1.2.0'
});
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');

View File

@@ -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

View File

@@ -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");

View File

@@ -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",

View File

@@ -1,6 +1,6 @@
Package.describe({
name: 'standard-minifier-css',
version: '1.5.0',
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'

View File

@@ -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) {
@@ -114,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

View File

@@ -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="
}
}
}

View File

@@ -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",
@@ -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/"],

View File

@@ -1,6 +1,6 @@
{
"track": "METEOR",
"version": "1.8-rc.17",
"version": "1.8.0.1-rc.4",
"recommended": false,
"official": false,
"description": "Meteor"

View File

@@ -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"
}

View File

@@ -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.6",
"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.5",
// For backwards compatibility with isopackets that still depend on
// babel-runtime rather than @babel/runtime.
"babel-runtime": "7.0.0-beta.3",

View File

@@ -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,
});
@@ -1286,6 +1294,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
@@ -1293,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
@@ -1352,6 +1373,7 @@ class Target {
info: 'minified js',
arch,
data: Buffer.from(file.data, 'utf8'),
hash: inputHashesByJsFile.get(source),
});
if (file.sourceMap) {
@@ -1795,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,
@@ -1814,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, '/');

View File

@@ -571,20 +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,
hash: self.inputResource.hash,
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) {
@@ -594,20 +581,23 @@ 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._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];
@@ -698,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?");
@@ -787,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?");
}
@@ -869,16 +870,21 @@ class OutputResource {
}
const targetPath = options.path || sourcePath;
const servePath = targetPath
? resourceSlot.packageSourceBatch.unibuild.pkg._getServePath(targetPath)
: resourceSlot.inputResource.servePath;
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,
servePath: resourceSlot.packageSourceBatch
.unibuild.pkg._getServePath(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,
});
}
@@ -963,9 +969,17 @@ class OutputResource {
}
return this._set("data", data);
case "hash":
const { hash } = this._initialOptions;
return this._set("hash", 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;
@@ -1655,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
};

View File

@@ -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,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(
JSON.stringify(self.files.map(file => file._inputHash))
),
};
const results = [result];
@@ -550,7 +557,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 +644,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 +671,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 +819,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,

View File

@@ -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";
}
});

View File

@@ -5,7 +5,7 @@
"start": "meteor run"
},
"dependencies": {
"@babel/runtime": "^7.0.0",
"@babel/runtime": "^7.1.5",
"meteor-node-stubs": "^0.4.1"
}
}

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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"

View File

@@ -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": {

View File

@@ -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

View File

@@ -1 +1 @@
METEOR@1.7.0.4
METEOR@1.8

View File

@@ -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

View File

@@ -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"
},

View File

@@ -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",

View File

@@ -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

View File

@@ -1 +1 @@
METEOR@1.7.1-beta.28
METEOR@1.8

View File

@@ -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"
},

View File

@@ -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",

View File

@@ -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) => {

View File

@@ -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

View File

@@ -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();
}
}
});