Merge branch 'master' into devel

This commit is contained in:
Ben Newman
2019-04-02 20:21:59 -04:00
117 changed files with 2481 additions and 830 deletions

View File

@@ -61,7 +61,7 @@ run_save_node_bin: &run_save_node_bin
build_machine_environment: &build_machine_environment
# Specify that we want an actual machine (ala Circle 1.0), not a Docker image.
docker:
- image: meteor/circleci
- image: meteor/circleci:android-27-node-8
environment:
# This multiplier scales the waitSecs for selftests.
TIMEOUT_SCALE_FACTOR: 8

View File

@@ -1,13 +1,80 @@
## v.NEXT
### Breaking changes
N/A
## v1.8.1, 2019-04-03
### Migration steps
### Breaking changes
* Although we are not aware of any specific backwards incompatibilities,
the major upgrade of `cordova-android` from 6.4.0 to 7.1.4 likely
deserves extra attention, if you use Cordova to build Android apps.
### Migration Steps
N/A
### Changes
* Node has been updated from version 8.11.4 to version
[8.15.1](https://nodejs.org/en/blog/release/v8.15.1/), an important
[security release](https://nodejs.org/en/blog/vulnerability/february-2019-security-releases/),
which includes the changes from four other minor releases:
* [8.15.0](https://nodejs.org/en/blog/release/v8.15.0/)
* [8.14.0](https://nodejs.org/en/blog/release/v8.14.0/), an important
[security release](https://nodejs.org/en/blog/vulnerability/november-2018-security-releases/)
* [8.12.0](https://nodejs.org/en/blog/release/v8.12.0/)
* [8.13.0](https://nodejs.org/en/blog/release/v8.13.0/)
> Note: While Node 8.12.0 included changes that may improve the
performance of Meteor apps, there have been reports of CPU usage spikes
in production due to excessive garbage collection, so this version of
Meteor should be considered experimental until those problems have been
fixed. [Issue #10216](https://github.com/meteor/meteor/issues/10216)
* The `npm` tool has been upgraded to version
[6.9.0](https://github.com/npm/cli/releases/tag/v6.9.0), and our
[fork](https://github.com/meteor/pacote/tree/v9.5.0-meteor) of its
`pacote` dependency has been updated to version 9.5.0.
* Mongo has been upgraded to version 4.0.6 for 64-bit systems (was 4.0.2),
and 3.2.22 for 32-bit systems (was 3.2.19). The `mongodb` npm package
used by `npm-mongo` has been updated to version 3.1.13 (was 3.1.6).
* The `fibers` npm package has been updated to version 3.1.1, a major
update from version 2.0.0. Building this version of `fibers` requires a
C++11 compiler, unlike previous versions. If you deploy your Meteor app
manually (without using Galaxy), you may need to update the version of
`g++` used when running `npm install` in the `bundle/programs/server`
directory.
* The `meteor-babel` npm package has been updated to version 7.3.4.
* Cordova Hot Code Push mechanism is now switching versions explicitly with
call to `WebAppLocalServer.switchToPendingVersion` instead of trying to
switch every time a browser reload is detected. If you use any third
party package or have your own HCP routines implemented be sure to call
it before forcing a browser reload. If you use the automatic reload from
the `Reload` meteor package you do not need to do anything.
[cordova-plugin-meteor-webapp PR #62](https://github.com/meteor/cordova-plugin-meteor-webapp/pull/62)
* Multiple Cordova-related bugs have been fixed, including Xcode 10 build
incompatibilities and hot code push errors due to duplicated
images/assets. [PR #10339](https://github.com/meteor/meteor/pull/10339)
* The `cordova-android` and `cordova-ios` npm dependencies have been
updated to 7.1.4 (from 6.4.0) and 4.5.5 (from 4.5.4), respectively.
* Build performance has improved (especially on Windows) thanks to
additional caching implemented by [@zodern](https://github.com/zodern)
in PRs [#10399](https://github.com/meteor/meteor/pull/10399),
[#10452](https://github.com/meteor/meteor/pull/10452),
[#10453](https://github.com/meteor/meteor/pull/10453), and
[#10454](https://github.com/meteor/meteor/pull/10454).
* The `meteor mongo` command no longer uses the `--quiet` option, so the
normal startup text will be displayed, albeit without the banner about
Mongo's free monitoring service. See this
[MongoDB Jira issue](https://jira.mongodb.org/browse/SERVER-38862)
for more details.
* In Meteor packages, `client/` and `server/` directories no longer have
any special meaning. In application code, `client/` directories are
ignored during the server build, and `server/` directories are ignored
@@ -16,6 +83,26 @@ N/A
[Issue #10393](https://github.com/meteor/meteor/issues/10393)
[PR #10414](https://github.com/meteor/meteor/pull/10414)
* If your application is using Git for version control, the current Git
commit hash will now be exposed via the `Meteor.gitCommitHash` property
while the app is running (in both server and client code), and also via
the `"gitCommitHash"` property in the `star.json` file located in the
root directory of builds produced by `meteor build`, for consumption by
deployment tools. If you are not using Git, neither property will be
defined. [PR #10442](https://github.com/meteor/meteor/pull/10442)
* The Meteor Tool now uses a more reliable method (the MongoDB
[`isMaster` command](https://docs.mongodb.com/manual/reference/command/isMaster/))
to detect when the local development database has started and is ready to
accept read and write operations.
[PR #10500](https://github.com/meteor/meteor/pull/10500)
* Setting the `x-no-compression` request header will prevent the `webapp`
package from compressing responses with `gzip`, which may be useful if
your Meteor app is behind a proxy that compresses resources with another
compression algorithm, such as [brotli](https://github.com/google/brotli).
[PR #10378](https://github.com/meteor/meteor/pull/10378)
## v1.8.0.2, 2019-01-07
### Breaking changes

3
meteor
View File

@@ -1,7 +1,6 @@
#!/usr/bin/env bash
# Note: Skip 8.12.0.0, as it has already been used.
BUNDLE_VERSION=8.11.4.8
BUNDLE_VERSION=8.15.1.1
# OS Check. Put here because here is where we download the precompiled
# bundles that are arch specific.

View File

@@ -25,6 +25,8 @@
// The client version of the client code currently running in the
// browser.
import { ClientVersions } from "./client_versions.js";
const clientArch = Meteor.isCordova ? "web.cordova" :
Meteor.isModern ? "web.browser" : "web.browser.legacy";
@@ -38,25 +40,21 @@ const autoupdateVersions =
export const Autoupdate = {};
// The collection of acceptable client versions.
const ClientVersions =
Autoupdate._ClientVersions = // Used by a self-test.
new Mongo.Collection("meteor_autoupdate_clientVersions");
// Stores acceptable client versions.
const clientVersions =
Autoupdate._clientVersions = // Used by a self-test.
new ClientVersions();
Meteor.connection.registerStore(
"meteor_autoupdate_clientVersions",
clientVersions.createStore()
);
Autoupdate.newClientAvailable = function () {
return !! (
ClientVersions.findOne({
_id: clientArch,
versionNonRefreshable: {
$ne: autoupdateVersions.versionNonRefreshable,
}
}) ||
ClientVersions.findOne({
_id: clientArch,
versionRefreshable: {
$ne: autoupdateVersions.versionRefreshable,
}
})
return clientVersions.newClientAvailable(
clientArch,
["versionRefreshable", "versionNonRefreshable"],
autoupdateVersions
);
};
@@ -104,10 +102,7 @@ Autoupdate._retrySubscription = () => {
resolved.then(() => checkNewVersionDocument(doc));
}
const handle = ClientVersions.find().observe({
added: check,
changed: check
});
const stop = clientVersions.watch(check);
function checkNewVersionDocument(doc) {
if (doc._id !== clientArch) {
@@ -118,7 +113,7 @@ Autoupdate._retrySubscription = () => {
autoupdateVersions.versionNonRefreshable) {
// Non-refreshable assets have changed, so we have to reload the
// whole page rather than just replacing <link> tags.
if (handle) handle.stop();
if (stop) stop();
if (Package.reload) {
// The reload package should be provided by ddp-client, which
// is provided by the ddp package that autoupdate depends on.

View File

@@ -1,21 +1,27 @@
import { ClientVersions } from "./client_versions.js";
var autoupdateVersionsCordova =
__meteor_runtime_config__.autoupdate.versions["web.cordova"] || {
version: "unknown"
};
// The collection of acceptable client versions.
const ClientVersions =
new Mongo.Collection("meteor_autoupdate_clientVersions");
export const Autoupdate = {};
Autoupdate.newClientAvailable =
() => !! ClientVersions.findOne({
_id: "web.cordova",
version: {
$ne: autoupdateVersionsCordova.version
}
});
// Stores acceptable client versions.
const clientVersions = new ClientVersions();
Meteor.connection.registerStore(
"meteor_autoupdate_clientVersions",
clientVersions.createStore()
);
Autoupdate.newClientAvailable = function () {
return clientVersions.newClientAvailable(
"web.cordova",
["version"],
autoupdateVersionsCordova
);
};
var retry = new Retry({
// Unlike the stream reconnect use of Retry, which we want to be instant
@@ -59,11 +65,8 @@ Autoupdate._retrySubscription = () => {
}
}
ClientVersions.find({
_id: "web.cordova"
}).observe({
added: checkNewVersionDocument,
changed: checkNewVersionDocument
clientVersions.watch(checkNewVersionDocument, {
filter: "web.cordova"
});
}
}

View File

@@ -22,6 +22,7 @@
// The ID of each document is the client architecture, and the fields of
// the document are the versions described above.
import { ClientVersions } from "./client_versions.js";
var Future = Npm.require("fibers/future");
export const Autoupdate = __meteor_runtime_config__.autoupdate = {
@@ -34,11 +35,8 @@ export const Autoupdate = __meteor_runtime_config__.autoupdate = {
versions: {}
};
// The collection of acceptable client versions.
const ClientVersions =
new Mongo.Collection("meteor_autoupdate_clientVersions", {
connection: null
});
// Stores acceptable client versions.
const clientVersions = new ClientVersions();
// The client hash includes __meteor_runtime_config__, so wait until
// all packages have loaded and have had a chance to populate the
@@ -96,11 +94,8 @@ function updateVersions(shouldReloadClientProgram) {
...Autoupdate.versions[arch],
assets: WebApp.getRefreshableAssets(arch),
};
if (! ClientVersions.findOne({ _id: arch })) {
ClientVersions.insert({ _id: arch, ...payload });
} else {
ClientVersions.update(arch, { $set: payload });
}
clientVersions.set(arch, payload);
});
});
}
@@ -118,7 +113,13 @@ Meteor.publish(
if (Autoupdate.appId && appId && Autoupdate.appId !== appId)
return [];
return ClientVersions.find();
const stop = clientVersions.watch((version, isNew) => {
(isNew ? this.added : this.changed)
.call(this, "meteor_autoupdate_clientVersions", version._id, version);
});
this.onStop(() => stop());
this.ready();
},
{is_auto: true}
);
@@ -132,8 +133,8 @@ Meteor.startup(function () {
"version-refreshable",
"version-cordova",
].forEach(_id => {
ClientVersions.upsert(_id, {
$set: { version: "outdated" }
clientVersions.set(_id, {
version: "outdated"
});
});
});

View File

@@ -0,0 +1,104 @@
import { Tracker } from "meteor/tracker";
export class ClientVersions {
constructor() {
this._versions = new Map();
this._watchCallbacks = new Set();
}
// Creates a Livedata store for use with `Meteor.connection.registerStore`.
// After the store is registered, document updates reported by Livedata are
// merged with the documents in this `ClientVersions` instance.
createStore() {
return {
update: ({ id, msg, fields }) => {
if (msg === "added" || msg === "changed") {
this.set(id, fields);
}
}
};
}
hasVersions() {
return this._versions.size > 0;
}
get(id) {
return this._versions.get(id);
}
// Adds or updates a version document and invokes registered callbacks for the
// added/updated document. If a document with the given ID already exists, its
// fields are merged with `fields`.
set(id, fields) {
let version = this._versions.get(id);
let isNew = false;
if (version) {
Object.assign(version, fields);
} else {
version = {
_id: id,
...fields
};
isNew = true;
this._versions.set(id, version);
}
this._watchCallbacks.forEach(({ fn, filter }) => {
if (! filter || filter === version._id) {
fn(version, isNew);
}
});
}
// Registers a callback that will be invoked when a version document is added
// or changed. Calling the function returned by `watch` removes the callback.
// If `skipInitial` is true, the callback isn't be invoked for existing
// documents. If `filter` is set, the callback is only invoked for documents
// with ID `filter`.
watch(fn, { skipInitial, filter } = {}) {
if (! skipInitial) {
const resolved = Promise.resolve();
this._versions.forEach((version) => {
if (! filter || filter === version._id) {
resolved.then(() => fn(version, true));
}
});
}
const callback = { fn, filter };
this._watchCallbacks.add(callback);
return () => this._watchCallbacks.delete(callback);
}
// A reactive data source for `Autoupdate.newClientAvailable`.
newClientAvailable(id, fields, currentVersion) {
function isNewVersion(version) {
return (
version._id === id &&
fields.some((field) => version[field] !== currentVersion[field])
);
}
const dependency = new Tracker.Dependency();
const version = this.get(id);
dependency.depend();
const stop = this.watch(
(version) => {
if (isNewVersion(version)) {
dependency.changed();
stop();
}
},
{ skipInitial: true }
);
return !! version && isNewVersion(version);
}
}

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Update the client when new client code is available",
version: '1.5.1'
version: '1.6.0'
});
Package.onUse(function (api) {
@@ -15,10 +15,11 @@ Package.onUse(function (api) {
'retry'
], 'client');
api.use('reload', 'client', { weak: true });
api.use([
'ecmascript',
'ddp',
'mongo',
'ddp'
], ['client', 'server']);
api.mainModule('autoupdate_server.js', 'server');

View File

@@ -7,9 +7,9 @@
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA=="
},
"@babel/core": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.0.tgz",
"integrity": "sha512-7pvAdC4B+iKjFFp9Ztj0QgBndJ++qaMeonT185wAqUnhipw8idm9Rv1UMyBuKtYjfl6ORNkgEgcsYLfHX/GpLw==",
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz",
"integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==",
"dependencies": {
"json5": {
"version": "2.1.0",
@@ -19,9 +19,9 @@
}
},
"@babel/generator": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz",
"integrity": "sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
"integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg=="
},
"@babel/helper-annotate-as-pure": {
"version": "7.0.0",
@@ -34,9 +34,9 @@
"integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w=="
},
"@babel/helper-builder-react-jsx": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz",
"integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw=="
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz",
"integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw=="
},
"@babel/helper-call-delegate": {
"version": "7.1.0",
@@ -44,9 +44,9 @@
"integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ=="
},
"@babel/helper-create-class-features-plugin": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.1.tgz",
"integrity": "sha512-EsEP7XLFmcJHjcuFYBxYD1FkP0irC8C9fsrt2tX/jrAi/eTnFI6DOPgVFb+WREeg1GboF+Ib+nCHbGBodyAXSg=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.4.tgz",
"integrity": "sha512-uFpzw6L2omjibjxa8VGZsJUPL5wJH0zzGKpoz0ccBkzIa6C8kWNUbiBmQ0rgOKWlHJ6qzmfa6lTiGchiV8SC+g=="
},
"@babel/helper-define-map": {
"version": "7.1.0",
@@ -84,9 +84,9 @@
"integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A=="
},
"@babel/helper-module-transforms": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz",
"integrity": "sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw=="
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz",
"integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA=="
},
"@babel/helper-optimise-call-expression": {
"version": "7.0.0",
@@ -109,9 +109,9 @@
"integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg=="
},
"@babel/helper-replace-supers": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz",
"integrity": "sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz",
"integrity": "sha512-pvObL9WVf2ADs+ePg0jrqlhHoxRXlOa+SHRHzAXIz2xkYuOHfGl+fKxPMaS4Fq+uje8JQPobnertBBvyrWnQ1A=="
},
"@babel/helper-simple-access": {
"version": "7.1.0",
@@ -129,9 +129,9 @@
"integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ=="
},
"@babel/helpers": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz",
"integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A=="
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz",
"integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA=="
},
"@babel/highlight": {
"version": "7.0.0",
@@ -139,9 +139,9 @@
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw=="
},
"@babel/parser": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.0.tgz",
"integrity": "sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
"integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ=="
},
"@babel/plugin-proposal-async-generator-functions": {
"version": "7.2.0",
@@ -149,14 +149,14 @@
"integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ=="
},
"@babel/plugin-proposal-class-properties": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.1.tgz",
"integrity": "sha512-/4FKFChkQ2Jgb8lBDsvFX496YTi7UWTetVgS8oJUpX1e/DlaoeEK57At27ug8Hu2zI2g8bzkJ+8k9qrHZRPGPA=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.4.tgz",
"integrity": "sha512-lUf8D3HLs4yYlAo8zjuneLvfxN7qfKv1Yzbj5vjqaqMJxgJA3Ipwp4VUJ+OrOdz53Wbww6ahwB8UhB2HQyLotA=="
},
"@babel/plugin-proposal-object-rest-spread": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz",
"integrity": "sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz",
"integrity": "sha512-j7VQmbbkA+qrzNqbKHrBsW3ddFnOeva6wzSe/zB7T+xaxGc+RCpwo44wCmRixAIGRoIpmVgvzFzNJqQcO3/9RA=="
},
"@babel/plugin-syntax-async-generators": {
"version": "7.2.0",
@@ -184,9 +184,9 @@
"integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA=="
},
"@babel/plugin-syntax-typescript": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.2.0.tgz",
"integrity": "sha512-WhKr6yu6yGpGcNMVgIBuI9MkredpVc7Y3YR4UzEZmDztHoL6wV56YBHLhWnjO1EvId1B32HrD3DRFc+zSoKI1g=="
"version": "7.3.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz",
"integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag=="
},
"@babel/plugin-transform-arrow-functions": {
"version": "7.2.0",
@@ -194,9 +194,9 @@
"integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg=="
},
"@babel/plugin-transform-async-to-generator": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz",
"integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz",
"integrity": "sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA=="
},
"@babel/plugin-transform-block-scoped-functions": {
"version": "7.2.0",
@@ -204,14 +204,14 @@
"integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w=="
},
"@babel/plugin-transform-block-scoping": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz",
"integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz",
"integrity": "sha512-blRr2O8IOZLAOJklXLV4WhcEzpYafYQKSGT3+R26lWG41u/FODJuBggehtOwilVAcFu393v3OFj+HmaE6tVjhA=="
},
"@babel/plugin-transform-classes": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.0.tgz",
"integrity": "sha512-aPCEkrhJYebDXcGTAP+cdUENkH7zqOlgbKwLbghjjHpJRJBWM/FSlCjMoPGA8oUdiMfOrk3+8EFPLLb5r7zj2w=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz",
"integrity": "sha512-J9fAvCFBkXEvBimgYxCjvaVDzL6thk0j0dBvCeZmIUDBwyt+nv6HfbImsSrWsYXfDNDivyANgJlFXDUWRTZBuA=="
},
"@babel/plugin-transform-computed-properties": {
"version": "7.2.0",
@@ -219,9 +219,9 @@
"integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA=="
},
"@babel/plugin-transform-destructuring": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz",
"integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ=="
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz",
"integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw=="
},
"@babel/plugin-transform-exponentiation-operator": {
"version": "7.2.0",
@@ -229,9 +229,9 @@
"integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A=="
},
"@babel/plugin-transform-flow-strip-types": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.0.tgz",
"integrity": "sha512-xhQp0lyXA5vk8z1kJitdMozQYEWfo4MgC6neNXrb5euqHiTIGhj5ZWfFPkVESInQSk9WZz1bbNmIRz6zKfWGVA=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.3.4.tgz",
"integrity": "sha512-PmQC9R7DwpBFA+7ATKMyzViz3zCaMNouzZMPZN2K5PnbBbtL3AXFYTkDk+Hey5crQq2A90UG5Uthz0mel+XZrA=="
},
"@babel/plugin-transform-for-of": {
"version": "7.2.0",
@@ -254,9 +254,9 @@
"integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg=="
},
"@babel/plugin-transform-parameters": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz",
"integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA=="
"version": "7.3.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz",
"integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw=="
},
"@babel/plugin-transform-property-literals": {
"version": "7.2.0",
@@ -269,9 +269,9 @@
"integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A=="
},
"@babel/plugin-transform-react-jsx": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.2.0.tgz",
"integrity": "sha512-h/fZRel5wAfCqcKgq3OhbmYaReo7KkoJBpt8XnvpS7wqaNMqtw5xhxutzcm35iMUWucfAdT/nvGTsWln0JTg2Q=="
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
"integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg=="
},
"@babel/plugin-transform-react-jsx-self": {
"version": "7.2.0",
@@ -284,14 +284,14 @@
"integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g=="
},
"@babel/plugin-transform-regenerator": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz",
"integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz",
"integrity": "sha512-hvJg8EReQvXT6G9H2MvNPXkv9zK36Vxa1+csAVTpE1J3j0zlHplw76uudEbJxgvqZzAq9Yh45FLD4pk5mKRFQA=="
},
"@babel/plugin-transform-runtime": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz",
"integrity": "sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.3.4.tgz",
"integrity": "sha512-PaoARuztAdd5MgeVjAxnIDAIUet5KpogqaefQvPOmPYCxYoaPhautxDh3aO8a4xHsKgT/b9gSxR0BKK1MIewPA=="
},
"@babel/plugin-transform-shorthand-properties": {
"version": "7.2.0",
@@ -299,9 +299,9 @@
"integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg=="
},
"@babel/plugin-transform-spread": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.0.tgz",
"integrity": "sha512-7TtPIdwjS/i5ZBlNiQePQCovDh9pAhVbp/nGVRBZuUdBiVRThyyLend3OHobc0G+RLCPPAN70+z/MAMhsgJd/A=="
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
"integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w=="
},
"@babel/plugin-transform-sticky-regex": {
"version": "7.2.0",
@@ -319,9 +319,9 @@
"integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw=="
},
"@babel/plugin-transform-typescript": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.2.0.tgz",
"integrity": "sha512-EnI7i2/gJ7ZNr2MuyvN2Hu+BHJENlxWte5XygPvfj/MbvtOkWor9zcnHpMMQL2YYaaCcqtIvJUyJ7QVfoGs7ew=="
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.3.2.tgz",
"integrity": "sha512-Pvco0x0ZSCnexJnshMfaibQ5hnK8aUHSvjCQhC1JR8eeg+iBwt0AtCO7gWxJ358zZevuf9wPSO5rv+WJcbHPXQ=="
},
"@babel/plugin-transform-unicode-regex": {
"version": "7.2.0",
@@ -334,24 +334,24 @@
"integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w=="
},
"@babel/runtime": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz",
"integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz",
"integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g=="
},
"@babel/template": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz",
"integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag=="
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
"integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g=="
},
"@babel/traverse": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
"integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
"integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ=="
},
"@babel/types": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.0.tgz",
"integrity": "sha512-b4v7dyfApuKDvmPb+O488UlGuR1WbwMXFsO/cyqMrnfvRAChZKJAYeeglWTjUO1b9UghKKgepAQM5tsvBJca6A=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
"integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ=="
},
"acorn": {
"version": "5.7.3",
@@ -375,7 +375,7 @@
},
"babel-helper-is-nodes-equiv": {
"version": "0.0.1",
"resolved": "http://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz",
"resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz",
"integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ="
},
"babel-helper-is-void-0": {
@@ -521,9 +521,9 @@
"integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA="
},
"babel-preset-meteor": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.2.0.tgz",
"integrity": "sha512-bwM5Zc78kPBHB0N5YEo2dtj9V+f34l3LX6y4ACS4JzQ/QW0zFRqa7jaGwt1tKkLtxRjInUg6yzcY8Iq8nLBwQg=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/babel-preset-meteor/-/babel-preset-meteor-7.3.4.tgz",
"integrity": "sha512-5S95oZLKn1RZexBCs3tPjjYXf2rJ8rBjkvJGkD9Bhut7XEGxDMMt1S+hhhGYo4ZwqOTmIeHv0EMppMWVxa7Lbg=="
},
"babel-preset-minify": {
"version": "0.5.0",
@@ -531,9 +531,9 @@
"integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA=="
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
},
"color-convert": {
"version": "1.9.3",
@@ -551,9 +551,9 @@
"integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A=="
},
"debug": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
"integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg=="
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw=="
},
"escape-string-regexp": {
"version": "1.0.5",
@@ -566,9 +566,9 @@
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
},
"globals": {
"version": "11.9.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
"integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg=="
"version": "11.11.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
"integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw=="
},
"has-flag": {
"version": "3.0.0",
@@ -606,9 +606,9 @@
"integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0="
},
"meteor-babel": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.2.0.tgz",
"integrity": "sha512-hHpqdYRSZ9dt3bMv1Pw8U2QVD5l7qspwTb7L2g4w3DV0sw5d8sK8XthdILQhVohVNpomOvIq8TiGH1/RubF8GA=="
"version": "7.3.4",
"resolved": "https://registry.npmjs.org/meteor-babel/-/meteor-babel-7.3.4.tgz",
"integrity": "sha512-5aVvIa9yGRq2WlkO8tThWhc3f07escWb0t93KRYM0EnsUbv2rDmrAir0P+e+4rpyDDz7utOpIfuO1dT1F8SCSA=="
},
"meteor-babel-helpers": {
"version": "0.0.3",
@@ -617,7 +617,7 @@
},
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"ms": {
@@ -651,9 +651,9 @@
"integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
},
"regenerator-transform": {
"version": "0.13.3",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz",
"integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA=="
"version": "0.13.4",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz",
"integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A=="
},
"regexpu-core": {
"version": "4.4.0",
@@ -672,7 +672,7 @@
"dependencies": {
"jsesc": {
"version": "0.5.0",
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
}
}
@@ -683,9 +683,9 @@
"integrity": "sha512-i0t837UYnWyJPCeesupZjmpThIppOPSs4I/uHmsWzQaiGQqtsYlbeJNN5i+61fe6UEA3Famc3IHnlm511poMnA=="
},
"resolve": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA=="
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg=="
},
"safe-buffer": {
"version": "5.1.2",

View File

@@ -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.4'
version: '7.3.4'
});
Npm.depends({
'meteor-babel': '7.2.0',
'meteor-babel': '7.3.4',
'json5': '2.1.0'
});

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor's latency-compensated distributed data server",
version: '2.2.0',
version: '2.3.0',
documentation: null
});
@@ -34,11 +34,6 @@ Package.onUse(function (api) {
api.use('facts-base', 'server', {weak: true});
api.use('callback-hook', 'server');
// we depend on LocalCollection._diffObjects, _applyChanges,
// _idParse, _idStringify.
api.use('minimongo', 'server');
api.export('DDPServer', 'server');
api.addFiles('stream_server.js', 'server');

View File

@@ -2,9 +2,9 @@
"lockfileVersion": 1,
"dependencies": {
"node-fetch": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
"integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
},
"whatwg-fetch": {
"version": "2.0.4",

View File

@@ -1,12 +1,12 @@
Package.describe({
name: "fetch",
version: "0.1.0",
version: "0.1.1",
summary: "Isomorphic modern/legacy/Node polyfill for WHATWG fetch()",
documentation: "README.md"
});
Npm.depends({
"node-fetch": "2.1.2",
"node-fetch": "2.3.0",
"whatwg-fetch": "2.0.4"
});

View File

@@ -2,14 +2,14 @@
"lockfileVersion": 1,
"dependencies": {
"ajv": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz",
"integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto="
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU="
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg=="
},
"assert-plus": {
"version": "1.0.0",
@@ -27,19 +27,14 @@
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40="
},
"boom": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE="
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4="
},
"caseless": {
"version": "0.12.0",
@@ -52,27 +47,15 @@
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk="
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cryptiles": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"dependencies": {
"boom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw=="
}
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -84,14 +67,14 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"ecc-jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU="
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk="
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extsprintf": {
"version": "1.3.0",
@@ -99,9 +82,9 @@
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
@@ -114,9 +97,9 @@
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
"integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8="
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ=="
},
"getpass": {
"version": "0.1.7",
@@ -129,19 +112,9 @@
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0="
},
"hawk": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ=="
},
"hoek": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
"integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA=="
},
"http-signature": {
"version": "1.2.0",
@@ -184,64 +157,64 @@
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI="
},
"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=="
},
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"psl": {
"version": "1.1.29",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
"integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
},
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"request": {
"version": "2.83.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
"integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw=="
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg=="
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"sntp": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg=="
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sshpk": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M="
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
"integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA=="
},
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE="
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ=="
},
"tunnel-agent": {
"version": "0.6.0",
@@ -254,9 +227,9 @@
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"uuid": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"verror": {
"version": "1.10.0",

View File

@@ -1,10 +1,10 @@
Package.describe({
summary: "Make HTTP calls to remote servers",
version: '1.4.1'
version: '1.4.2'
});
Npm.depends({
request: "2.83.0"
request: "2.88.0"
});
Package.onUse(function (api) {

View File

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

View File

@@ -56,6 +56,17 @@ Meteor = {
isModern: config.isModern
};
if (config.gitCommitHash) {
/**
* @summary Hexadecimal Git commit hash, if the application is using Git
* for version control. Undefined otherwise.
* @locus Anywhere
* @static
* @type {String}
*/
Meteor.gitCommitHash = config.gitCommitHash;
}
if (config.PUBLIC_SETTINGS) {
/**
* @summary `Meteor.settings` contains deployment-specific configuration options. You can initialize settings by passing the `--settings` option (which takes the name of a file containing JSON data) to `meteor run` or `meteor deploy`. When running your server directly (e.g. from a bundle), you instead specify settings by putting the JSON directly into the `METEOR_SETTINGS` environment variable. If the settings object contains a key named `public`, then `Meteor.settings.public` will be available on the client as well as the server. All other properties of `Meteor.settings` are only defined on the server. You can rely on `Meteor.settings` and `Meteor.settings.public` being defined objects (not undefined) on both client and server even if there are no settings specified. Changes to `Meteor.settings.public` at runtime will be picked up by new client connections.

View File

@@ -2,7 +2,7 @@
Package.describe({
summary: "Core Meteor environment",
version: '1.9.2'
version: '1.9.3'
});
Package.registerBuildPlugin({

View File

@@ -3,8 +3,11 @@ meteorEnv = {
TEST_METADATA: process.env.TEST_METADATA || "{}"
};
if (typeof __meteor_runtime_config__ === "object") {
__meteor_runtime_config__.meteorEnv = meteorEnv;
const config = typeof __meteor_runtime_config__ === "object" &&
__meteor_runtime_config__;
if (config) {
config.meteorEnv = meteorEnv;
}
Meteor = {
@@ -39,6 +42,10 @@ if (! Meteor.settings.public) {
// server, it also mutates
// `__meteor_runtime_config__.PUBLIC_SETTINGS`, and the modified
// settings will be sent to the client.
if (typeof __meteor_runtime_config__ === "object") {
__meteor_runtime_config__.PUBLIC_SETTINGS = Meteor.settings.public;
if (config) {
config.PUBLIC_SETTINGS = Meteor.settings.public;
}
if (config && config.gitCommitHash) {
Meteor.gitCommitHash = config.gitCommitHash;
}

View File

@@ -1,6 +1,11 @@
{
"lockfileVersion": 1,
"dependencies": {
"@types/q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz",
"integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA=="
},
"alphanum-sort": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
@@ -22,9 +27,24 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
"browserslist": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.4.tgz",
"integrity": "sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA=="
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz",
"integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg=="
},
"caller-callsite": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
"integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ="
},
"caller-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
"integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ="
},
"callsites": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA="
},
"caniuse-api": {
"version": "3.0.0",
@@ -32,19 +52,26 @@
"integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw=="
},
"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=="
"version": "1.0.30000939",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000939.tgz",
"integrity": "sha512-oXB23ImDJOgQpGjRv1tCtzAvJr4/OvrHi5SO2vUgB0g0xpdZZoA/BxfImiWfdwoYdUTtQrPsXsvYU/dmCSM8gg=="
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ=="
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dependencies": {
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
}
}
},
"coa": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/coa/-/coa-2.0.1.tgz",
"integrity": "sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ=="
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
"integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA=="
},
"color": {
"version": "3.1.0",
@@ -66,19 +93,14 @@
"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=="
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.1.0.tgz",
"integrity": "sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q=="
},
"css-color-names": {
"version": "0.0.4",
"resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
"integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA="
},
"css-declaration-sorter": {
@@ -119,9 +141,9 @@
"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=="
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg=="
},
"cssesc": {
"version": "2.0.0",
@@ -129,14 +151,14 @@
"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=="
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.9.tgz",
"integrity": "sha512-osEbYy4kzaNY3nkd92Uf3hy5Jqb5Aztuv+Ze3Z6DjRhyntZDlb3YljiYDdJ05k167U86CZpSR+rbuJYN7N3oBQ=="
},
"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=="
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
"integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA=="
},
"cssnano-util-get-arguments": {
"version": "4.0.0",
@@ -181,21 +203,14 @@
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ=="
},
"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="
}
}
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
"integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA=="
},
"domelementtype": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz",
"integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA=="
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="
},
"domutils": {
"version": "1.7.0",
@@ -208,9 +223,9 @@
"integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ=="
},
"electron-to-chromium": {
"version": "1.3.83",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz",
"integrity": "sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA=="
"version": "1.3.113",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz",
"integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g=="
},
"entities": {
"version": "1.1.2",
@@ -223,9 +238,9 @@
"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=="
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
"integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg=="
},
"es-to-primitive": {
"version": "1.2.0",
@@ -282,6 +297,11 @@
"resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
"integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ=="
},
"import-fresh": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
"integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY="
},
"indexes-of": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
@@ -319,7 +339,7 @@
},
"is-obj": {
"version": "1.0.1",
"resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
},
"is-regex": {
@@ -343,15 +363,20 @@
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw=="
},
"js-yaml": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
"integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A=="
"version": "3.12.2",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz",
"integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q=="
},
"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.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
"integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
},
"lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -369,18 +394,18 @@
},
"minimist": {
"version": "0.0.8",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM="
},
"node-releases": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.3.tgz",
"integrity": "sha512-ZaZWMsbuDcetpHmYeKWPO6e63pSXLb50M7lJgCbcM2nC/nQC3daNifmtp5a2kp7EWwYfhuvH6zLPWkrF8IiDdw=="
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.8.tgz",
"integrity": "sha512-gQm+K9mGCiT/NXHy+V/ZZS1N/LOaGGqRAAJJs3X9Ah1g+CIbRcBgNyoNYQ+SEtcyAtB9KqDruu+fF7nWjsqRaA=="
},
"normalize-url": {
"version": "3.3.0",
@@ -393,9 +418,9 @@
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg=="
},
"object-keys": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
"integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag=="
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
"integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg=="
},
"object.getownpropertydescriptors": {
"version": "2.0.3",
@@ -403,9 +428,9 @@
"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="
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
"integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg=="
},
"parse-json": {
"version": "4.0.0",
@@ -413,9 +438,9 @@
"integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA="
},
"postcss": {
"version": "7.0.5",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz",
"integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ=="
"version": "7.0.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz",
"integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg=="
},
"postcss-calc": {
"version": "7.0.1",
@@ -423,9 +448,9 @@
"integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ=="
},
"postcss-colormin": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz",
"integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw=="
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
"integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw=="
},
"postcss-convert-values": {
"version": "4.0.1",
@@ -433,9 +458,9 @@
"integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ=="
},
"postcss-discard-comments": {
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
"integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg=="
},
"postcss-discard-duplicates": {
"version": "4.0.2",
@@ -453,14 +478,14 @@
"integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg=="
},
"postcss-merge-longhand": {
"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=="
"version": "4.0.11",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
"integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw=="
},
"postcss-merge-rules": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz",
"integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
"integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
"dependencies": {
"postcss-selector-parser": {
"version": "3.1.1",
@@ -475,19 +500,19 @@
"integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg=="
},
"postcss-minify-gradients": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz",
"integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
"integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q=="
},
"postcss-minify-params": {
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
"integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg=="
},
"postcss-minify-selectors": {
"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==",
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
"integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
"dependencies": {
"postcss-selector-parser": {
"version": "3.1.1",
@@ -502,29 +527,29 @@
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
"integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ=="
},
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
"integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA=="
},
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
"integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q=="
},
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
"integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA=="
},
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
"integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A=="
},
"postcss-normalize-unicode": {
"version": "4.0.1",
@@ -537,34 +562,34 @@
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
"integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA=="
},
"postcss-ordered-values": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz",
"integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q=="
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
"integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw=="
},
"postcss-reduce-initial": {
"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=="
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
"integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA=="
},
"postcss-reduce-transforms": {
"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=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
"integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg=="
},
"postcss-selector-parser": {
"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=="
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
"integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ=="
},
"postcss-svgo": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz",
"integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw=="
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
"integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw=="
},
"postcss-unique-selectors": {
"version": "4.0.1",
@@ -581,6 +606,11 @@
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
},
"resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
},
"rgb-regex": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
@@ -629,9 +659,9 @@
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w=="
},
"stylehacks": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz",
"integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
"integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
"dependencies": {
"postcss-selector-parser": {
"version": "3.1.1",
@@ -641,14 +671,14 @@
}
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ=="
},
"svgo": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz",
"integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g=="
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.0.tgz",
"integrity": "sha512-xBfxJxfk4UeVN8asec9jNxHiv3UAMv/ujwBWGYvQhhMb2u3YTGKkiybPcLFDLq7GLLWE9wa73e0/m8L5nTzQbw=="
},
"timsort": {
"version": "0.3.0",

View File

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

View File

@@ -17,14 +17,14 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-support": {
"version": "0.5.9",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
"integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA=="
"version": "0.5.10",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
"integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ=="
},
"terser": {
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/terser/-/terser-3.9.2.tgz",
"integrity": "sha512-zOaL2PwflERZkVWbzv8rGbDR493fUaD/KXIUz/vjuvyH6Cxwu4pitM6con3Jy4bWtcQJwNOvN4rHltFeTEwZQA=="
"version": "3.16.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz",
"integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow=="
}
}
}

View File

@@ -1,10 +1,10 @@
Package.describe({
summary: "JavaScript minifier",
version: "2.4.0"
version: "2.4.1"
});
Npm.depends({
terser: "3.9.2"
terser: "3.16.1"
});
Package.onUse(function (api) {

View File

@@ -1,6 +1,6 @@
Package.describe({
name: "modern-browsers",
version: "0.1.3",
version: "0.1.4",
summary: "API for defining the boundary between modern and legacy " +
"JavaScript clients",
documentation: "README.md"

View File

@@ -270,7 +270,11 @@ _.extend(OplogHandle.prototype, {
if (doc.o.applyOps) {
// This was a successful transaction, so we need to apply the
// operations that were involved.
doc.o.applyOps.forEach(handleDoc);
doc.o.applyOps.forEach(op => {
// See https://github.com/meteor/meteor/issues/10420.
op.ts = op.ts || doc.ts;
handleDoc(op);
});
return;
}
throw new Error("Unknown command " + EJSON.stringify(doc));

View File

@@ -9,7 +9,7 @@
Package.describe({
summary: "Adaptor for using MongoDB and Minimongo over DDP",
version: '1.6.1'
version: '1.6.2'
});
Npm.depends({

View File

@@ -2,9 +2,9 @@
"lockfileVersion": 1,
"dependencies": {
"decimal.js": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-9.0.1.tgz",
"integrity": "sha512-2h0iKbJwnImBk4TGk7CG1xadoA0g3LDPlQhQzbZ221zvG0p2YVUedbKIPsOZXKZGx6YmZMJKYOalpCMxSdDqTQ=="
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.0.2.tgz",
"integrity": "sha512-qL5tUTXAWjB5cSBfm0V2a4jO5FaDLumCfwc/0f7WaTOT3WU8pIeq2HHrd98eXHtbey4qFWlaPzfml1JWIoO9TQ=="
}
}
}

View File

@@ -1,10 +1,10 @@
Package.describe({
summary: "JS simulation of MongoDB Decimal128 type",
version: '0.1.0'
version: '0.1.1'
});
Npm.depends({
"decimal.js": "9.0.1"
"decimal.js": "10.0.2"
});
Package.onUse(function (api) {

View File

@@ -7,19 +7,19 @@
"integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA=="
},
"memory-pager": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.1.0.tgz",
"integrity": "sha512-Mf9OHV/Y7h6YWDxTzX/b4ZZ4oh9NSXblQL8dtPCOomOtZciEHxePR78+uHFLLlsk01A6jVHhHsQZZ/WcIPpnzg=="
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
},
"mongodb": {
"version": "3.1.6",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.6.tgz",
"integrity": "sha512-E5QJuXQoMlT7KyCYqNNMfAkhfQD79AT4F8Xd+6x37OX+8BL17GyXyWvfm6wuyx4wnzCCPoCSLeMeUN2S7dU9yw=="
"version": "3.1.13",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.13.tgz",
"integrity": "sha512-sz2dhvBZQWf3LRNDhbd30KHVzdjZx9IKC0L+kSZ/gzYquCF5zPOgGqRz6sSCqYZtKP2ekB4nfLxhGtzGHnIKxA=="
},
"mongodb-core": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.5.tgz",
"integrity": "sha512-emT/tM4ZBinqd6RZok+EzDdtN4LjYJIckv71qQVOEFmvXgT5cperZegVmTgox/1cx4XQu6LJ5ZuIwipP/eKdQg=="
"version": "3.1.11",
"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.11.tgz",
"integrity": "sha512-rD2US2s5qk/ckbiiGFHeu+yKYDXdJ1G87F6CG3YdaZpzdOm5zpoAZd/EKbPmFO6cQZ+XVXBXBJ660sSI0gc6qg=="
},
"require_optional": {
"version": "1.0.1",
@@ -42,9 +42,9 @@
"integrity": "sha512-4cDsYuAjXssUSjxHKRe4DTZC0agDwsCqcMqtJAQPzC74nJ7LfAJflAtC1Zed5hMzEQKj82d3tuzqdGNRsLJ4Gw=="
},
"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=="
},
"sparse-bitfield": {
"version": "3.0.3",

View File

@@ -3,12 +3,12 @@
Package.describe({
summary: "Wrapper around the mongo npm package",
version: "3.1.1",
version: "3.1.2",
documentation: null
});
Npm.depends({
mongodb: "3.1.6"
mongodb: "3.1.13"
});
Package.onUse(function (api) {

View File

@@ -1,12 +1,12 @@
Package.describe({
summary: "Reactive dictionary",
version: '1.2.1'
version: '1.3.0'
});
Package.onUse(function (api) {
api.use(['tracker', 'ejson', 'ecmascript']);
// If we are loading mongo-livedata, let you store ObjectIDs in it.
api.use('mongo', {weak: true});
api.use(['mongo', 'reload'], { weak: true });
api.mainModule('migration.js');
api.export('ReactiveDict');
});

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Reload the page while preserving application state.",
version: '1.2.0'
version: '1.3.0'
});
Package.onUse(function (api) {

View File

@@ -60,7 +60,7 @@ try {
// Be consistently null, for safety
safeSessionStorage = null;
}
} catch(e) {
} catch (e) {
// Expected on chrome with strict security, or if sessionStorage not supported
safeSessionStorage = null;
}
@@ -125,7 +125,7 @@ Reload._onMigrate = function (name, callback) {
callback = name;
name = undefined;
}
providers.push({name: name, callback: callback});
providers.push({ name: name, callback: callback });
};
// Called by packages when they start up.
@@ -220,17 +220,27 @@ Reload._reload = function (options) {
setTimeout(reload, 1);
}
function forceBrowserReload() {
// We'd like to make the browser reload the page using location.replace()
// instead of location.reload(), because this avoids validating assets
// with the server if we still have a valid cached copy. This doesn't work
// when the location contains a hash however, because that wouldn't reload
// the page and just scroll to the hash location instead.
if (window.location.hash || window.location.href.endsWith("#")) {
window.location.reload();
} else {
window.location.replace(window.location.href);
}
}
function reload() {
if (Reload._migrate(tryReload, options)) {
// We'd like to make the browser reload the page using location.replace()
// instead of location.reload(), because this avoids validating assets
// with the server if we still have a valid cached copy. This doesn't work
// when the location contains a hash however, because that wouldn't reload
// the page and just scroll to the hash location instead.
if (window.location.hash || window.location.href.endsWith("#")) {
window.location.reload();
if (Meteor.isCordova) {
WebAppLocalServer.switchToPendingVersion(() => {
forceBrowserReload();
});
} else {
window.location.replace(window.location.href);
forceBrowserReload();
}
}
}

View File

@@ -1,6 +1,6 @@
Package.describe({
name: 'standard-minifier-css',
version: '1.5.2',
version: '1.5.3',
summary: 'Standard css minifier used with Meteor apps by default.',
documentation: 'README.md'
});

View File

@@ -1,6 +1,6 @@
Package.describe({
name: 'standard-minifier-js',
version: '2.4.0',
version: '2.4.1',
summary: 'Standard javascript minifiers used with Meteor apps by default.',
documentation: 'README.md',
});

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Serves a Meteor app over HTTP",
version: '1.7.2'
version: '1.7.3'
});
Npm.depends({"basic-auth-connect": "1.0.0",
@@ -20,9 +20,9 @@ Npm.strip({
});
Cordova.depends({
'cordova-plugin-whitelist': '1.3.2',
'cordova-plugin-wkwebview-engine': '1.1.3',
'cordova-plugin-meteor-webapp': '1.6.0'
'cordova-plugin-whitelist': '1.3.3',
'cordova-plugin-wkwebview-engine': '1.1.4',
'cordova-plugin-meteor-webapp': '1.6.5'
});
Package.onUse(function (api) {

View File

@@ -14,10 +14,7 @@ import query from "qs-middleware";
import parseRequest from "parseurl";
import basicAuth from "basic-auth-connect";
import { lookup as lookupUserAgent } from "useragent";
import {
isModern,
calculateHashOfMinimumVersions,
} from "meteor/modern-browsers";
import { isModern } from "meteor/modern-browsers";
import send from "send";
import {
removeExistingSocketFile,
@@ -64,6 +61,16 @@ var sha1 = function (contents) {
return hash.digest('hex');
};
function shouldCompress(req, res) {
if (req.headers['x-no-compression']) {
// don't compress responses with this request header
return false;
}
// fallback to standard filter function
return compress.filter(req, res);
};
// #BrowserIdentification
//
// We have multiple places that want to identify the browser: the
@@ -356,8 +363,6 @@ WebAppInternals.generateBoilerplateInstance = function (arch,
// - content: the stringified content that should be served at this path
// - absolutePath: the absolute path on disk to the file
var staticFilesByArch;
// Serve static files from the manifest or added with
// `addStaticJs`. Exported for tests.
WebAppInternals.staticFilesMiddleware = async function (
@@ -408,7 +413,7 @@ WebAppInternals.staticFilesMiddleware = async function (
return;
}
const info = getStaticFileInfo(pathname, path, arch);
const info = getStaticFileInfo(staticFilesByArch, pathname, path, arch);
if (! info) {
next();
return;
@@ -478,7 +483,7 @@ WebAppInternals.staticFilesMiddleware = async function (
}
};
function getStaticFileInfo(originalPath, path, arch) {
function getStaticFileInfo(staticFilesByArch, originalPath, path, arch) {
if (! hasOwn.call(WebApp.clientPrograms, arch)) {
return null;
}
@@ -587,14 +592,16 @@ function runWebAppServer() {
WebAppInternals.reloadClientPrograms = function () {
syncQueue.runTask(function() {
staticFilesByArch = Object.create(null);
const staticFilesByArch = Object.create(null);
const { configJson } = __meteor_bootstrap__;
const clientArchs = configJson.clientArchs ||
Object.keys(configJson.clientPaths);
try {
clientArchs.forEach(generateClientProgram);
clientArchs.forEach(arch => {
generateClientProgram(arch, staticFilesByArch);
});
WebAppInternals.staticFilesByArch = staticFilesByArch;
} catch (e) {
Log.error("Error reloading the client program: " + e.stack);
@@ -628,7 +635,10 @@ function runWebAppServer() {
syncQueue.runTask(() => generateClientProgram(arch));
};
function generateClientProgram(arch) {
function generateClientProgram(
arch,
staticFilesByArch = WebAppInternals.staticFilesByArch,
) {
const clientDir = pathJoin(
pathDirname(__meteor_bootstrap__.serverDir),
arch,
@@ -683,11 +693,6 @@ function runWebAppServer() {
const { PUBLIC_SETTINGS } = __meteor_runtime_config__;
const configOverrides = {
PUBLIC_SETTINGS,
// Since the minimum modern versions defined in the modern-versions
// package affect which bundle a given client receives, any changes
// in those versions should trigger a corresponding change in the
// versions calculated below.
minimumModernVersionsHash: calculateHashOfMinimumVersions(),
};
const oldProgram = WebApp.clientPrograms[arch];
@@ -697,6 +702,10 @@ function runWebAppServer() {
// Use arrow functions so that these versions can be lazily
// calculated later, and so that they will not be included in the
// staticFiles[manifestUrl].content string below.
//
// Note: these version calculations must be kept in agreement with
// CordovaBuilder#appendVersion in tools/cordova/builder.js, or hot
// code push will reload Cordova apps unnecessarily.
version: () => WebAppHashing.calculateClientHash(
manifest, null, configOverrides),
versionRefreshable: () => WebAppHashing.calculateClientHash(
@@ -819,7 +828,7 @@ function runWebAppServer() {
app.use(rawConnectHandlers);
// Auto-compress any json, javascript, or text.
app.use(compress());
app.use(compress({filter: shouldCompress}));
// parse cookies into an object
app.use(cookieParser());
@@ -887,7 +896,10 @@ function runWebAppServer() {
// Serve static files from the manifest.
// This is inspired by the 'static' middleware.
app.use(function (req, res, next) {
WebAppInternals.staticFilesMiddleware(staticFilesByArch, req, res, next);
WebAppInternals.staticFilesMiddleware(
WebAppInternals.staticFilesByArch,
req, res, next
);
});
// Core Meteor packages like dynamic-import can add handlers before

View File

@@ -1,6 +1,6 @@
{
"track": "METEOR",
"version": "1.8.0.2-rc.2",
"version": "1.8.1-rc.1",
"recommended": false,
"official": false,
"description": "Meteor"

View File

@@ -1,11 +1,12 @@
{
"track": "METEOR",
"version": "1.8.0.2",
"version": "1.8.1",
"recommended": false,
"official": true,
"patchFrom": [
"1.8",
"1.8.0.1"
"1.8.0.1",
"1.8.0.2"
],
"description": "The Official Meteor Distribution"
}

View File

@@ -5,10 +5,10 @@ set -u
UNAME=$(uname)
ARCH=$(uname -m)
NODE_VERSION=8.11.4
MONGO_VERSION_64BIT=4.0.2
MONGO_VERSION_32BIT=3.2.19
NPM_VERSION=6.4.1
NODE_VERSION=8.15.1
MONGO_VERSION_64BIT=4.0.6
MONGO_VERSION_32BIT=3.2.22
NPM_VERSION=6.9.0
# If we built Node from source on Jenkins, this is the build number.
NODE_BUILD_NUMBER=

View File

@@ -8,8 +8,8 @@ var packageJson = {
name: "meteor-dev-bundle",
private: true,
dependencies: {
fibers: "3.1.1",
"meteor-promise": "0.8.7",
fibers: "2.0.0",
promise: "8.0.2",
// Not yet upgrading Underscore from 1.5.2 to 1.7.0 (which should be done
// in the package too) because we should consider using lodash instead

View File

@@ -10,17 +10,16 @@ var packageJson = {
dependencies: {
// Explicit dependency because we are replacing it with a bundled version
// and we want to make sure there are no dependencies on a higher version
npm: "6.4.1",
pacote: "https://github.com/meteor/pacote/tarball/a3285854a68e4969d6c8abaa74407f7d113b178f",
npm: "6.9.0",
pacote: "https://github.com/meteor/pacote/tarball/c5043daa1b768594e01d76275e3854fc19f038f9",
"node-gyp": "3.7.0",
"node-pre-gyp": "0.10.3",
"meteor-babel": "7.2.0",
"meteor-babel": "7.3.4",
"meteor-promise": "0.8.7",
promise: "8.0.1",
reify: "0.17.3",
fibers: "2.0.0",
fibers: "3.1.1",
// So that Babel can emit require("@babel/runtime/helpers/...") calls.
"@babel/runtime": "7.2.0",
"@babel/runtime": "7.3.4",
// For backwards compatibility with isopackets that still depend on
// babel-runtime rather than @babel/runtime.
"babel-runtime": "7.0.0-beta.3",
@@ -30,12 +29,12 @@ var packageJson = {
underscore: "1.5.2",
"source-map-support": "https://github.com/meteor/node-source-map-support/tarball/1912478769d76e5df4c365e147f25896aee6375e",
semver: "5.4.1",
request: "2.83.0",
request: "2.88.0",
uuid: "3.3.2",
fstream: "https://github.com/meteor/fstream/tarball/cf4ea6c175355cec7bee38311e170d08c4078a5d",
tar: "2.2.1",
kexec: "3.0.0",
"source-map": "0.5.3",
"source-map": "0.5.7",
chalk: "0.5.1",
sqlite3: "3.1.8",
netroute: "1.0.2",
@@ -52,8 +51,8 @@ var packageJson = {
escope: "3.6.0",
split2: "2.2.0",
multipipe: "2.0.1",
pathwatcher: "7.1.1",
optimism: "0.6.3",
pathwatcher: "8.0.2",
optimism: "0.8.3",
'lru-cache': '4.1.3'
}
};

View File

@@ -115,6 +115,9 @@ ls -al "$INCLUDE_PATH"
mkdir "${DIR}/build/npm-server-install"
cd "${DIR}/build/npm-server-install"
node "${CHECKOUT_DIR}/scripts/dev-bundle-server-package.js" > package.json
# XXX For no apparent reason this npm install will fail with an EISDIR
# error if we do not help it by creating the .npm/_locks directory.
mkdir -p "${DIR}/.npm/_locks"
npm install
npm shrinkwrap
@@ -125,19 +128,6 @@ cp -R node_modules/* "${DIR}/server-lib/node_modules/"
mkdir -p "${DIR}/etc"
mv package.json npm-shrinkwrap.json "${DIR}/etc/"
# Fibers ships with compiled versions of its C code for a dozen platforms. This
# bloats our dev bundle. Remove all the ones other than our
# architecture. (Expression based on build.js in fibers source.)
shrink_fibers () {
FIBERS_ARCH=$(node -p -e 'process.platform + "-" + process.arch + "-" + process.versions.modules')
mv $FIBERS_ARCH ..
rm -rf *
mv ../$FIBERS_ARCH .
}
cd "$DIR/server-lib/node_modules/fibers/bin"
shrink_fibers
# Now, install the npm modules which are the dependencies of the command-line
# tool.
mkdir "${DIR}/build/npm-tool-install"
@@ -195,9 +185,6 @@ delete moment/min
# Remove esprima tests to reduce the size of the dev bundle
find . -path '*/esprima-fb/test' | xargs rm -rf
cd "$DIR/lib/node_modules/fibers/bin"
shrink_fibers
# Sanity check to see if we're not breaking anything by replacing npm
INSTALLED_NPM_VERSION=$(cat "$DIR/lib/node_modules/npm/package.json" |
xargs -0 node -e "console.log(JSON.parse(process.argv[1]).version)")

View File

@@ -14,7 +14,7 @@ export const EXAMPLE_REPOSITORIES = {
'repo': 'https://github.com/meteor/todos',
'branch': 'react',
},
'angular2-boilerplate': {
repo: 'https://github.com/bsliran/angular2-meteor-base'
'angular-boilerplate': {
repo: 'https://github.com/Urigo/angular-meteor-base.git'
}
};

View File

@@ -89,6 +89,7 @@ const PROGRESS_BAR_FORMAT = '[:bar] :percent :etas';
const TEMP_STATUS_LENGTH = STATUS_MAX_LENGTH + 12;
const STATUS_INTERVAL_MS = 50;
const PROGRESS_THROTTLE_MS = 300;
// Message to show when we don't know what we're doing
// XXX: ? FALLBACK_STATUS = 'Pondering';
@@ -309,9 +310,11 @@ class ProgressDisplayFull {
this._lastWrittenLine = null;
this._lastWrittenTime = 0;
this._renderTimeout = null;
}
depaint() {
this._clearDelayedRender();
this._stream.write(spacesString(this._printedLength) + CARRIAGE_RETURN);
}
@@ -332,7 +335,15 @@ class ProgressDisplayFull {
if (startTime) {
this._progressBarRenderer.start = startTime;
}
this._render();
if (!this._renderTimeout && this._lastWrittenTime) {
this._rerenderTimeout = setTimeout(() => {
this._rerenderTimeout = null;
this._render()
}, PROGRESS_THROTTLE_MS);
} else if (this._lastWrittenTime === 0) {
this._render();
}
}
repaint() {
@@ -343,8 +354,18 @@ class ProgressDisplayFull {
this._headless = !! headless;
}
_clearDelayedRender() {
if (this._rerenderTimeout) {
clearTimeout(this._rerenderTimeout);
this._rerenderTimeout = null;
}
}
_render() {
// XXX: Throttle these updates?
if (this._rerenderTimeout) {
this._clearDelayedRender();
}
// XXX: Or maybe just jump to the correct position?
var progressGraphic = '';

View File

@@ -451,6 +451,10 @@ export class CordovaBuilder {
}
appendVersion(program, publicSettings) {
// Note: these version calculations must be kept in agreement with
// generateClientProgram in packages/webapp/webapp_server.js, or hot
// code push will reload the app unnecessarily.
let configDummy = {};
configDummy.PUBLIC_SETTINGS = publicSettings || {};
@@ -480,6 +484,7 @@ export class CordovaBuilder {
const runtimeConfig = {
meteorRelease: meteorRelease,
gitCommitHash: files.findGitCommitHash(applicationPath),
ROOT_URL: mobileServerUrl,
// XXX propagate it from this.options?
ROOT_URL_PATH_PREFIX: '',

View File

@@ -14,11 +14,8 @@ export const CORDOVA_DEV_BUNDLE_VERSIONS = {
};
export const CORDOVA_PLATFORM_VERSIONS = {
// This commit represents cordova-android@6.4.0 plus
// https://github.com/apache/cordova-android/pull/417, aka
// https://github.com/meteor/cordova-android/tree/v6.4.0-with-pr-417:
'android': 'https://github.com/meteor/cordova-android/tarball/317db7df0f7a054444197bc6d28453cf4ab23280',
'ios': '4.5.4'
'android': '7.1.4',
'ios': '4.5.5',
};
const PLATFORM_TO_DISPLAY_NAME_MAP = {

View File

@@ -87,6 +87,9 @@ export class CordovaProject {
this.pluginsDir = files.pathJoin(this.projectRoot, 'plugins');
this.buildJsonPath = files.convertToOSPath(
files.pathJoin(this.projectRoot, 'build.json'));
this.createIfNeeded();
}
@@ -182,6 +185,31 @@ outdated platforms`);
undefined, undefined, config);
}, undefined, null);
}
this.writeBuildJson();
}
writeBuildJson() {
if (files.exists(this.buildJsonPath)) {
return;
}
const iosCommonOptions = {
// See https://github.com/apache/cordova-ios/issues/407:
buildFlag: [
"-UseModernBuildSystem=0"
]
};
files.writeFile(
this.buildJsonPath,
JSON.stringify({
ios: {
debug: iosCommonOptions,
release: iosCommonOptions,
}
}, null, 2) + "\n",
);
}
// Preparing
@@ -240,8 +268,10 @@ outdated platforms`);
delete require.cache[files.pathJoin(this.projectRoot,
'platforms/ios/cordova/lib/prepare.js')];
const commandOptions = _.extend(this.defaultOptions,
{ platforms: [platform] });
const commandOptions = {
...this.defaultOptions,
platforms: [platform],
};
this.runCommands(`preparing Cordova project for platform \
${displayNameForPlatform(platform)}`, async () => {
@@ -254,8 +284,11 @@ ${displayNameForPlatform(platform)}`, async () => {
buildForPlatform(platform, options = {}, extraPaths) {
assert(platform);
const commandOptions = _.extend(this.defaultOptions,
{ platforms: [platform], options: options });
const commandOptions = {
...this.defaultOptions,
platforms: [platform],
options,
};
this.runCommands(`building Cordova app for platform \
${displayNameForPlatform(platform)}`, async () => {
@@ -266,6 +299,7 @@ ${displayNameForPlatform(platform)}`, async () => {
// Running
async run(platform, isDevice, options = [], extraPaths = []) {
options.push('--buildConfig', this.buildJsonPath);
options.push(isDevice ? '--device' : '--emulator');
let env = this.defaultEnvWithPathsAdded(...extraPaths);
@@ -760,7 +794,11 @@ convenience, but you should adjust your dependencies.`);
// Cordova commands support
get defaultOptions() {
return { silent: !Console.verbose, verbose: Console.verbose };
return {
silent: !Console.verbose,
verbose: Console.verbose,
buildConfig: this.buildJsonPath,
};
}
defaultEnvWithPathsAdded(...extraPaths) {

View File

@@ -12,7 +12,7 @@ var util = require('util');
var _ = require('underscore');
var Fiber = require('fibers');
var crypto = require('crypto');
var spawn = require("child_process").spawn;
const { spawn, execFile } = require("child_process");
var rimraf = require('rimraf');
var sourcemap = require('source-map');
@@ -129,6 +129,29 @@ files.findPackageDir = function (filepath) {
return findUpwards(isPackageDir, filepath);
};
// Returns the hash of the current Git HEAD revision of the application,
// if possible. Always resolves rather than rejecting (unless something
// truly unexpected happens). The result value is a string when a Git
// revision was successfully resolved, or undefined otherwise.
files.findGitCommitHash = function (path) {
return new Promise(resolve => {
const appDir = files.findAppDir(path);
if (appDir) {
const proc = execFile("git", ["rev-parse", "HEAD"], {
cwd: files.convertToOSPath(appDir),
}, (error, stdout) => {
if (! error && typeof stdout === "string") {
resolve(stdout.trim());
} else {
resolve();
}
});
} else {
resolve();
}
}).await();
};
// create a .gitignore file in dirPath if one doesn't exist. add
// 'entry' to the .gitignore on its own line at the bottom of the
// file, if the exact line does not already exist in the file.
@@ -528,7 +551,7 @@ files.cp_r = function(from, to, options = {}) {
// create a symlink, overwriting the target link, file, or directory
// if it exists
export function symlinkWithOverwrite(source, target) {
export const symlinkWithOverwrite = Profile("files.symlinkWithOverwrite", function symlinkWithOverwrite(source, target) {
const args = [source, target];
if (process.platform === "win32") {
@@ -543,8 +566,12 @@ export function symlinkWithOverwrite(source, target) {
files.symlink(...args);
} catch (e) {
if (e.code === "EEXIST") {
function normalizePath (path) {
return files.convertToOSPath(path).replace(/[\/\\]$/, "")
}
if (files.lstat(target).isSymbolicLink() &&
files.readlink(target) === source) {
normalizePath(files.readlink(target)) === normalizePath(source)) {
// If the target already points to the desired source, we don't
// need to do anything.
return;
@@ -556,7 +583,7 @@ export function symlinkWithOverwrite(source, target) {
throw e;
}
}
}
})
/**
* Get every path in a directory recursively, treating symlinks as files
@@ -1005,7 +1032,12 @@ files.createTarball = Profile(function (dirPath, tarball) {
// is in a state other than initial or final".)
files.renameDirAlmostAtomically =
Profile("files.renameDirAlmostAtomically", (fromDir, toDir) => {
const garbageDir = `${toDir}-garbage-${utils.randomToken()}`;
const garbageDir = files.pathJoin(
files.pathDirname(toDir),
// Begin the base filename with a '.' character so that it can be
// ignored by other directory-scanning code.
`.${files.pathBasename(toDir)}-garbage-${utils.randomToken()}`,
);
// Get old dir out of the way, if it exists.
let cleanupGarbage = false;
@@ -1054,7 +1086,7 @@ files.renameDirAlmostAtomically =
// ... and take out the trash.
if (cleanupGarbage) {
// We don't care about how long this takes, so we'll let it go async.
files.rm_recursive(garbageDir);
files.rm_recursive_async(garbageDir);
}
});
@@ -1757,11 +1789,6 @@ function enableCache(name) {
};
}
enableCache("readdir");
enableCache("realpath");
enableCache("stat");
enableCache("lstat");
// The fs.exists method is deprecated in Node v4:
// https://nodejs.org/api/fs.html#fs_fs_exists_path_callback
files.exists =
@@ -1870,3 +1897,8 @@ files.readBufferWithLengthAndOffset = function (filename, length, offset) {
}
return data;
};
enableCache("readdir");
enableCache("realpath");
enableCache("stat");
enableCache("lstat");

View File

@@ -6,8 +6,6 @@ import {coalesce} from '../utils/func-utils.js';
import {Profile} from '../tool-env/profile.js';
import {
optimisticStatOrNull,
optimisticReaddir,
optimisticHashOrNull,
} from "./optimistic.js";
@@ -272,7 +270,7 @@ export const sha512 = Profile("sha512", function (...args) {
return hash.digest('base64');
});
export function readDirectory({absPath, include, exclude, names}) {
function readAndStatDirectory(absPath) {
// Read the directory.
try {
var contents = files.readdir(absPath);
@@ -303,8 +301,12 @@ export function readDirectory({absPath, include, exclude, names}) {
contentsWithSlashes.push(entry);
});
return contentsWithSlashes
}
function filterDirectoryContents(contents, { include, exclude, names }) {
// Filter based on regexps.
var filtered = contentsWithSlashes.filter((entry) => {
return contents.filter((entry) => {
// Is it one of the names we explicitly requested?
if (names && names.indexOf(entry) !== -1) {
return true;
@@ -318,11 +320,12 @@ export function readDirectory({absPath, include, exclude, names}) {
return true;
}
return false;
});
}).sort();
}
// Sort it!
filtered.sort();
return filtered;
export function readDirectory({absPath, include, exclude, names}) {
const contents = readAndStatDirectory(absPath);
return filterDirectoryContents(contents, { include, exclude, names });
}
// All fields are private.
@@ -330,6 +333,9 @@ export class Watcher {
constructor(options) {
var self = this;
// Run initial check asyncly
self._async = options.async;
// The set to watch.
self.watchSet = options.watchSet;
if (! self.watchSet) {
@@ -407,40 +413,38 @@ export class Watcher {
return true;
}
_fireIfDirectoryChanged(info) {
// infos must all be for the same directory
_fireIfDirectoryChanged(infos) {
var self = this;
if (self.stopped) {
return true;
}
var newContents = readDirectory({
absPath: info.absPath,
include: info.include,
exclude: info.exclude,
names: info.names
});
const contents = readAndStatDirectory(infos[0].absPath);
// If the directory has changed (including being deleted or created).
if (! _.isEqual(info.contents, newContents)) {
self._fire();
return true;
for (let i = 0; i < infos.length; i++) {
const info = infos[i];
const newContents = filterDirectoryContents(contents, info);
// If the directory has changed (including being deleted or created).
if (! _.isEqual(info.contents, newContents)) {
self._fire();
return true;
}
}
return false;
}
_startFileWatches() {
var self = this;
const self = this;
const keys = Object.keys(self.watchSet.files);
// Set up a watch for each file
_.each(self.watchSet.files, function (hash, absPath) {
if (self.stopped) {
return;
}
self._processBatches(keys, absPath => {
if (! self.justCheckOnce) {
self._watchFileOrDirectory(absPath);
self._watchFileOrDirectory(absPath, true);
}
// Check for the case where by the time we created the watch,
@@ -449,7 +453,7 @@ export class Watcher {
});
}
_watchFileOrDirectory(absPath) {
_watchFileOrDirectory(absPath, skipCheck) {
var self = this;
if (! _.has(self.watches, absPath)) {
@@ -476,9 +480,13 @@ export class Watcher {
var onWatchEvent = self._makeWatchEventCallback(absPath);
entry.watcher = safeWatcher.watch(absPath, onWatchEvent);
// If we successfully created the watcher, invoke the callback
// immediately, so that we examine this file at least once.
onWatchEvent();
if (!skipCheck) {
// If we successfully created the watcher, invoke the callback
// immediately, so that we examine this file at least once.
onWatchEvent();
} else {
self._updateStatForWatch(absPath);
}
} else {
if (self._mustBeAFile(absPath)) {
@@ -559,13 +567,12 @@ export class Watcher {
// If self.watchSet.directories contains any entries for the
// directory we are examining, call self._fireIfDirectoryChanged.
_.some(self.watchSet.directories, function(info) {
return self.stopped ||
(absPath === info.absPath &&
self._fireIfDirectoryChanged(info, true));
// XXX #3335 We probably should check again in a second, due to low
// filesystem modtime resolution.
});
const infos = self.watchSet.directories.filter(info => info.absPath === absPath );
if (infos.length) {
self._fireIfDirectoryChanged(infos);
}
// XXX #3335 We probably should check again in a second, due to low
// filesystem modtime resolution.
}
});
}
@@ -640,26 +647,60 @@ export class Watcher {
return stat;
}
// Iterates over the array, calling handleItem for each item
// When this._async is true, it pauses ocassionally to avoid blocking for too long
// Stops iterating after watcher is stopped
_processBatches(array, handleItem) {
const self = this;
const async = self._async;
let index = 0;
function processBatch() {
const stopTime = async ? Date.now() + 50 : Infinity;
while (Date.now() < stopTime && index < array.length) {
if (self.stopped) {
return;
}
handleItem(array[index]);
index += 1;
}
if (index < array.length) {
if (async) {
setImmediate(processBatch);
} else {
processBatch();
}
}
}
processBatch();
}
_checkDirectories() {
var self = this;
const self = this;
const dirs = Object.values(self.watchSet.directories.reduce((result, dir) => {
result[dir.absPath] = result[dir.absPath] || [];
result[dir.absPath].push(dir);
return result;
}, {}));
if (self.stopped) {
return;
}
_.each(self.watchSet.directories, function (info) {
if (self.stopped) {
return;
}
self._processBatches(dirs, infos => {
if (! self.justCheckOnce) {
self._watchFileOrDirectory(info.absPath);
self._watchFileOrDirectory(infos[0].absPath, true);
}
// Check for the case where by the time we created the watch, the
// directory has already changed.
self._fireIfDirectoryChanged(info);
self._fireIfDirectoryChanged(infos);
});
}

View File

@@ -10,6 +10,7 @@ import {
optimisticReaddir,
optimisticStatOrNull,
optimisticLStatOrNull,
optimisticHashOrNull,
} from "../fs/optimistic.js";
// Builder is in charge of writing "bundles" to disk, which are
@@ -75,7 +76,9 @@ export default class Builder {
this.previousUsedAsFile = {};
this.writtenHashes = {};
this.createdSymlinks = {};
this.previousWrittenHashes = {};
this.previousCreatedSymlinks = {};
// foo/bar => foo/.build1234.bar
// Should we include a random number? The advantage is that multiple
@@ -106,6 +109,7 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
this.previousWrittenHashes = previousBuilder.writtenHashes;
this.previousUsedAsFile = previousBuilder.usedAsFile;
this.previousCreatedSymlinks = previousBuilder.createdSymlinks;
resetBuildPath = false;
} else {
@@ -228,6 +232,39 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
return partsOut.join(files.pathSep);
}
// Checks if a file with the same path and hash was written by
// the previous builder. If it was, it adds it to the cache and makes
// sure the parent directories exist and are part of the cache.
//
// Returns true if the file was already written
usePreviousWrite(relPath, hash, sanitize) {
relPath = this._normalizeFilePath(relPath, sanitize);
if (this.previousWrittenHashes[relPath] === hash) {
this._ensureDirectory(files.pathDirname(relPath));
this.writtenHashes[relPath] = hash;
this.usedAsFile[relPath] = true;
return true;
}
return false;
}
_normalizeFilePath(relPath, sanitize) {
// Ensure no trailing slash
if (relPath.slice(-1) === files.pathSep) {
relPath = relPath.slice(0, -1);
}
// In sanitize mode, ensure path does not contain segments like
// '..', does not contain forbidden characters, and is unique.
if (sanitize) {
relPath = this._sanitize(relPath);
}
return relPath;
}
// Write either a buffer or the contents of a file to `relPath` (a
// path to a file relative to the bundle root), creating it (and any
// enclosing directories) if it doesn't exist yet. Exactly one of
@@ -250,16 +287,7 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
//
// If `file` is used then it will be added to the builder's WatchSet.
write(relPath, {data, file, hash, sanitize, executable, symlink}) {
// Ensure no trailing slash
if (relPath.slice(-1) === files.pathSep) {
relPath = relPath.slice(0, -1);
}
// In sanitize mode, ensure path does not contain segments like
// '..', does not contain forbidden characters, and is unique.
if (sanitize) {
relPath = this._sanitize(relPath);
}
relPath = this._normalizeFilePath(relPath, sanitize);
let getData = null;
if (data) {
@@ -285,13 +313,27 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
} else {
hash = hash || sha1(getData());
if (this.previousWrittenHashes[relPath] !== hash) {
// Write is called multiple times for assets when they have multiple urls for the same file
if (this.previousWrittenHashes[relPath] !== hash && this.writtenHashes[relPath] !== hash) {
// Builder is used to create build products, which should be read-only;
// users shouldn't be manually editing automatically generated files and
// expecting the results to "stick".
atomicallyRewriteFile(absPath, getData(), {
mode: executable ? 0o555 : 0o444
});
const mode = executable ? 0o555 : 0o444
if (this.buildPath === this.outputPath || this.writtenHashes[relPath]) {
// atomicallyRewriteFile handles overwriting files that have already been created
atomicallyRewriteFile(absPath, getData(), {
mode
});
} else {
// Since builder is not updating in place, and
// this build is only used if every file is successfully written,
// it is not important to write atomically.
files.writeFile(absPath, getData(), {
mode
})
}
}
this.writtenHashes[relPath] = hash;
@@ -499,8 +541,6 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
to = to.slice(0, -1);
}
const absPathTo = files.pathJoin(this.buildPath, to);
if (symlink) {
if (specificFiles) {
throw new Error("can't copy only specific paths with a single symlink");
@@ -530,7 +570,11 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
if (symlink && ! (relTo in this.usedAsFile)) {
this._ensureDirectory(files.pathDirname(relTo));
const absTo = files.pathResolve(this.buildPath, relTo);
symlinkWithOverwrite(absFrom, absTo);
if (this.previousCreatedSymlinks[absFrom] !== relTo) {
symlinkWithOverwrite(absFrom, absTo);
}
this.usedAsFile[relTo] = false;
this.createdSymlinks[absFrom] = relTo;
return;
}
@@ -641,23 +685,28 @@ Previous builder: ${previousBuilder.outputPath}, this builder: ${outputPath}`
// could not be created above.
fileStatus = optimisticStatOrNull(thisAbsFrom);
if (fileStatus && fileStatus.isFile()) {
// XXX can't really optimize this copying without reading
// the file into memory to calculate the hash.
files.writeFile(
files.pathResolve(this.buildPath, thisRelTo),
// The reason we call files.writeFile here instead of
// files.copyFile is so that we can read the file using
// optimisticReadFile instead of files.createReadStream.
optimisticReadFile(thisAbsFrom),
// Logic borrowed from files.copyFile: "Create the file as
// readable and writable by everyone, and executable by everyone
// if the original file is executably by owner. (This mode will be
// modified by umask.) We don't copy the mode *directly* because
// this function is used by 'meteor create' which is copying from
// the read-only tools tree into a writable app."
{ mode: (fileStatus.mode & 0o100) ? 0o777 : 0o666 },
);
const hash = optimisticHashOrNull(thisAbsFrom);
if (this.previousWrittenHashes[thisRelTo] !== hash) {
const content = optimisticReadFile(thisAbsFrom);
files.writeFile(
files.pathResolve(this.buildPath, thisRelTo),
// The reason we call files.writeFile here instead of
// files.copyFile is so that we can read the file using
// optimisticReadFile instead of files.createReadStream.
content,
// Logic borrowed from files.copyFile: "Create the file as
// readable and writable by everyone, and executable by everyone
// if the original file is executably by owner. (This mode will be
// modified by umask.) We don't copy the mode *directly* because
// this function is used by 'meteor create' which is copying from
// the read-only tools tree into a writable app."
{ mode: (fileStatus.mode & 0o100) ? 0o777 : 0o666 },
);
}
this.writtenHashes[thisRelTo] = hash;
this.usedAsFile[thisRelTo] = true;
}
});

View File

@@ -176,6 +176,9 @@ import { PackageRegistry } from "../../packages/meteor/define-package.js";
const SOURCE_URL_PREFIX = "meteor://\u{1f4bb}app";
const MINIFY_PLAIN_FUNCTION = Buffer.from('function(', 'utf8');
const MINIFY_RENAMED_FUNCTION = Buffer.from('function __minifyJs(', 'utf8');
// files to ignore when bundling. node has no globs, so use regexps
exports.ignoreFiles = [
/~$/, /^\.#/,
@@ -546,6 +549,9 @@ class File {
// disk).
this.sourcePath = options.sourcePath;
// Allows not calculating sri when it isn't needed
this._skipSri = options.skipSri
// info is just for help with debugging the tool; it isn't written to disk or
// anything.
this.info = options.info || '?';
@@ -619,7 +625,9 @@ class File {
hashes.push(this._inputHash);
}
hashes.push(this.sri());
if (!this._skipSri) {
hashes.push(this.sri());
}
this._hash = watch.sha1(...hashes);
}
@@ -628,7 +636,7 @@ class File {
}
sri() {
if (! this._sri) {
if (! this._sri && !this._skipSri) {
this._sri = watch.sha512(this.contents());
}
@@ -1160,6 +1168,7 @@ class Target {
data: resource.data,
cacheable: false,
hash: resource.hash,
skipSri: !!resource.hash
};
const file = new File(fileOptions);
@@ -1326,13 +1335,10 @@ class Target {
// expression, which some minifiers (e.g. UglifyJS) either fail to
// parse or mistakenly eliminate as dead code. To avoid these
// problems, we temporarily name the function __minifyJs.
file._contents = Buffer.from(
file.contents()
.toString("utf8")
.replace(/^\s*function\s*\(/,
"function __minifyJs("),
"utf8"
);
file._contents = Buffer.concat([
MINIFY_RENAMED_FUNCTION,
file.contents().slice(MINIFY_PLAIN_FUNCTION.length)
]);
dynamicFiles.push(jsf);
@@ -1364,15 +1370,24 @@ class Target {
function handle(source, dynamic) {
source._minifiedFiles.forEach(file => {
// Remove the function name __minifyJs that was added above.
file.data = file.data
.toString("utf8")
.replace(/^\s*function\s+__minifyJs\s*\(/,
"function(");
if (typeof file.data === 'string') {
file.data = Buffer.from(
file.data
.replace(/^\s*function\s+__minifyJs\s*\(/,
"function("),
"utf8"
);
} else if (dynamic) {
file.data = Buffer.concat([
MINIFY_PLAIN_FUNCTION,
file.data.slice(MINIFY_RENAMED_FUNCTION.length)
]);
}
const newFile = new File({
info: 'minified js',
arch,
data: Buffer.from(file.data, 'utf8'),
data: file.data,
hash: inputHashesByJsFile.get(source),
});
@@ -2420,7 +2435,9 @@ class JsImage {
_.each(nodeModulesDirectories, function (nmd) {
assert.strictEqual(typeof nmd.preferredBundlePath, "string");
if (! nmd.isPortable()) {
// Skip calculating isPortable in 'meteor run' since the
// modules are never rebuilt
if (includeNodeModules !== 'symlink' && !nmd.isPortable()) {
const parentDir = files.pathDirname(nmd.preferredBundlePath);
rebuildDirs[parentDir] = parentDir;
}
@@ -2742,6 +2759,10 @@ var writeFile = Profile("bundler writeFile", function (file, builder, options) {
let data = file.contents();
const hash = file.hash();
if (builder.usePreviousWrite(file.targetPath, hash)) {
return;
}
if (options && options.sourceMapUrl) {
data = addSourceMappingURL(data, options.sourceMapUrl);
} else {
@@ -2823,9 +2844,12 @@ var writeTargetToPath = Profile(
// .meteor/local/build/programs/web.browser.legacy, because they
// tend to be written atomically, and it's important on Windows to
// avoid overwriting files that might be open currently in the build
// or server process. If in-place builds were safer on Windows, they
// or server process.
// Server builds do use an in-place build since the server is always stopped
// during the build.
// If client in-place builds were safer on Windows, they
// would be much quicker than from-scratch rebuilds.
forceInPlaceBuild: false,
forceInPlaceBuild: name === 'server',
});
var targetBuild = target.write(builder, {
@@ -2876,7 +2900,8 @@ var writeSiteArchive = Profile("bundler writeSiteArchive", function (
releaseName,
previousBuilders = Object.create(null),
buildMode,
minifyMode
minifyMode,
sourceRoot,
}) {
const builders = {};
@@ -2893,6 +2918,12 @@ var writeSiteArchive = Profile("bundler writeSiteArchive", function (
});
try {
Object.keys(targets).forEach(key => {
// Both makeClientTarget and makeServerTarget get their sourceRoot
// from packageSource.sourceRoot, so this should always be true:
assert.strictEqual(targets[key].sourceRoot, sourceRoot);
});
var json = {
format: "site-archive-pre1",
builtBy,
@@ -2900,6 +2931,7 @@ var writeSiteArchive = Profile("bundler writeSiteArchive", function (
meteorRelease: releaseName,
nodeVersion: process.versions.node,
npmVersion: meteorNpm.npmVersion,
gitCommitHash: files.findGitCommitHash(sourceRoot),
};
// Tell the deploy server what version of the dependency kit we're using, so
@@ -3309,6 +3341,7 @@ function bundle({
starResult = writeSiteArchive(targets, outputPath, {
buildMode: buildOptions.buildMode,
previousBuilders,
sourceRoot: packageSource.sourceRoot,
...writeOptions,
});
serverWatchSet.merge(starResult.serverWatchSet);

View File

@@ -479,12 +479,8 @@ var compileUnibuild = Profile(function (options) {
const relPath = asset.relPath;
const absPath = files.pathResolve(inputSourceArch.sourceRoot, relPath);
// readAndWatchFileWithHash returns an object carrying a buffer with the
// file-contents. The buffer contains the original data of the file (no EOL
// transforms from the tools/files.js part).
const file = watch.readAndWatchFileWithHash(watchSet, absPath);
const hash = file.hash;
const contents = file.contents;
const hash = optimisticHashOrNull(absPath)
const contents = optimisticReadFile(absPath)
addAsset(contents, relPath, hash);
});

View File

@@ -21,6 +21,10 @@ const APP_PRELINK_CACHE = new LRU({
return prelinked.source.length + sourceMapLength(prelinked.sourceMap);
}
});
// Caches code with source map for dynamic files
const DYNAMIC_PRELINKED_OUTPUT_CACHE = new LRU({
max: Math.pow(2, 11)
});
var packageDot = function (name) {
if (/^[a-zA-Z][a-zA-Z0-9]*$/.exec(name)) {
@@ -271,11 +275,7 @@ _.extend(Module.prototype, {
if (file.isDynamic()) {
const servePath = files.pathJoin("dynamic", file.absModuleId);
const { code: source, map } =
file.getPrelinkedOutput({
sourceWidth: sourceWidth,
}).toStringWithSourceMap({
file: servePath,
});
getOutputWithSourceMapCached(file, servePath, { sourceWidth })
results.push({
source,
@@ -812,12 +812,15 @@ const getPrelinkedOutputCached = require("optimism").wrap(
}
return new sourcemap.SourceNode(null, null, null, chunks);
}, {
// Store at most 4096 Files worth of prelinked output in this cache.
max: Math.pow(2, 12),
makeCacheKey(file, options) {
if (options.disableCache) {
return;
}
return JSON.stringify({
hash: file._inputHash,
arch: file.module.bundleArch,
@@ -829,6 +832,32 @@ const getPrelinkedOutputCached = require("optimism").wrap(
}
);
function getOutputWithSourceMapCached(file, servePath, options) {
const key = JSON.stringify({
hash: file._inputHash,
arch: file.module.bundleArch,
bare: file.bare,
servePath: file.servePath,
dynamic: file.isDynamic(),
options,
});
if (DYNAMIC_PRELINKED_OUTPUT_CACHE.has(key)) {
return DYNAMIC_PRELINKED_OUTPUT_CACHE.get(key);
}
const result = file.getPrelinkedOutput({
...options,
disableCache: true
}).toStringWithSourceMap({
file: servePath,
});
DYNAMIC_PRELINKED_OUTPUT_CACHE.set(key, result);
return result;
}
// Given a list of lines (not newline-terminated), returns a string placing them
// in a pretty banner of width bannerWidth. All lines must have length at most
// (bannerWidth - 6); if bannerWidth is not provided, the smallest width that

View File

@@ -343,21 +343,27 @@ Profile("meteorNpm.rebuildIfNonPortable", function (nodeModulesDir) {
// directory paths.
const tempPkgDirs = {};
dirsToRebuild.forEach(function (pkgPath) {
dirsToRebuild.splice(0).forEach(pkgPath => {
const tempPkgDir = tempPkgDirs[pkgPath] = files.pathJoin(
tempNodeModules,
files.pathRelative(nodeModulesDir, pkgPath)
);
// Copy the package directory instead of renaming it, so that the
// original package will be left untouched if the rebuild fails. We
// could just run files.cp_r(pkgPath, tempPkgDir) here, except that we
// want to handle nested node_modules directories specially.
copyNpmPackageWithSymlinkedNodeModules(pkgPath, tempPkgDir);
// It's possible the pkgPath directory may have been deleted since we
// did the scan above: https://circleci.com/gh/meteor/meteor/31330
if (isDirectory(pkgPath)) {
// Copy the package directory instead of renaming it, so that the
// original package will be left untouched if the rebuild fails. We
// could just run files.cp_r(pkgPath, tempPkgDir) here, except that we
// want to handle nested node_modules directories specially.
copyNpmPackageWithSymlinkedNodeModules(pkgPath, tempPkgDir);
// Record the current process.versions so that we can avoid
// copying/rebuilding/renaming next time.
recordLastRebuildVersions(tempPkgDir);
// Record the current process.versions so that we can avoid
// copying/rebuilding/renaming next time.
recordLastRebuildVersions(tempPkgDir);
dirsToRebuild.push(pkgPath);
}
});
// The `npm rebuild` command must be run in the parent directory of the
@@ -478,8 +484,9 @@ const isPortable = Profile("meteorNpm.isPortable", dir => {
const pkgJsonPath = files.pathJoin(dir, "package.json");
const pkgJsonStat = optimisticStatOrNull(pkgJsonPath);
const canCache = pkgJsonStat && pkgJsonStat.isFile();
const portableFile = files.pathJoin(
dir, ".meteor-portable-" + portableVersion + ".json");
const portableFile = files.convertToOSPath(
files.pathJoin(dir, ".meteor-portable-" + portableVersion + ".json")
);
if (canCache) {
// Cache previous results by writing a boolean value to a hidden file
@@ -1073,7 +1080,7 @@ const installNpmModule = meteorNpm.installNpmModule = (name, version, dir) => {
if (! result.success) {
const pkgNotFound =
`404 Not Found: ${utils.quotemeta(name)}@${utils.quotemeta(version)}`;
`404 Not Found - GET ${utils.quotemeta("https://registry.npmjs.org/"+name)}`;
const versionNotFound =
"No matching version found for " +

View File

@@ -1113,11 +1113,12 @@ _.extend(PackageSource.prototype, {
const anyLevelExcludes = [];
if (testModule) {
if (testModule || !isApp) {
// If we have a meteor.testModule from package.json, then we don't
// need to exclude tests/ directories or *.tests.js files from the
// search, because we trust meteor.testModule to identify a single
// test entry point.
// test entry point. Likewise, in packages (!isApp), test files are
// added explicitly, and thus do not need to be excluded here.
} else {
anyLevelExcludes.push(/^tests\/$/);

View File

@@ -697,6 +697,7 @@ _.extend(AppRunner.prototype, {
Promise.await(self.runPromise);
var runPromise = self.runPromise = self._makePromise("run");
var listenPromise = self._makePromise("listen");
// Run the program
options.beforeRun && options.beforeRun();
@@ -722,6 +723,7 @@ _.extend(AppRunner.prototype, {
self.proxy.setMode("proxy");
options.onListen && options.onListen();
self._resolvePromise("start");
self._resolvePromise("listen");
},
nodeOptions: getNodeOptionsFromEnvironment(),
settings: settings,
@@ -772,20 +774,22 @@ _.extend(AppRunner.prototype, {
self._resolvePromise("run", {
outcome: 'changed'
});
}
},
async: true
});
}
var setupClientWatcher = function () {
clientWatcher && clientWatcher.stop();
clientWatcher = new watch.Watcher({
watchSet: bundleResult.clientWatchSet,
onChange: function () {
watchSet: bundleResult.clientWatchSet,
onChange: function () {
var outcome = watch.isUpToDate(serverWatchSet)
? 'changed-refreshable' // only a client asset has changed
: 'changed'; // both a client and server asset changed
self._resolvePromise('run', { outcome: outcome });
}
},
async: true
});
};
if (self.watchForChanges && canRefreshClient) {
@@ -839,7 +843,13 @@ _.extend(AppRunner.prototype, {
Console.enableProgressDisplay(false);
const postStartupResult = runPostStartupCallbacks(bundleResult);
const postStartupResult = Promise.race([
listenPromise,
runPromise
]).then(() => {
return runPostStartupCallbacks(bundleResult);
}).await();
if (postStartupResult) return postStartupResult;
// Wait for either the process to exit, or (if watchForChanges) a

View File

@@ -22,7 +22,7 @@ var runMongoShell = function (url) {
var auth = mongoUrl.auth && mongoUrl.auth.split(':');
var ssl = require('querystring').parse(mongoUrl.query).ssl === "true";
var args = ['--quiet'];
var args = [];
if (ssl) {
args.push('--ssl');
}
@@ -61,6 +61,14 @@ function spawnMongod(mongodPath, port, dbPath, replSetName) {
// Use mmapv1 on 32bit platforms, as our binary doesn't support WT
if (process.arch === 'ia32') {
args.push('--storageEngine', 'mmapv1', '--smallfiles');
} else if (process.platform !== 'linux') {
// MongoDB 4, which we use on 64-bit systems, displays a banner in the
// Mongo shell about a free monitoring service, which can be disabled
// with this flag. However, the generic Linux build (without SSL; see
// MONGO_SSL in scripts/generate-dev-bundle.sh) neither displays the
// banner nor supports the flag, so it's safe/important to avoid
// passing the flag to mongod on 64-bit linux.
args.push('--enableFreeMonitoring', 'off');
}
return child_process.spawn(mongodPath, args, {
@@ -185,12 +193,30 @@ if (process.platform === 'win32') {
'else ps ax; fi';
}
// If the child process output includes unicode, make sure it's
// handled properly.
const {
LANG = "en_US.UTF-8",
LC_ALL = LANG,
LANGUAGE = LANG,
// Remainder of process.env without above properties.
...env
} = process.env;
// Make sure all three properties are set to the same value, which
// defaults to "en_US.UTF-8" or whatever LANG was already set to.
Object.assign(env, { LANG, LC_ALL, LANGUAGE });
child_process.exec(
psScript,
// we don't want this to randomly fail just because you're running lots of
// processes. 10MB should be more than ps ax will ever spit out; the default
// is 200K, which at least one person hit (#2158).
{maxBuffer: 1024 * 1024 * 10},
{
env,
// we don't want this to randomly fail just because you're running
// lots of processes. 10MB should be more than ps ax will ever
// spit out; the default is 200K, which at least one person hit
// (#2158).
maxBuffer: 1024 * 1024 * 10,
},
function (error, stdout, stderr) {
if (error) {
promise.reject(
@@ -657,62 +683,29 @@ var launchMongo = function (options) {
return;
}
let wasJustSecondary = false;
let writableTimestamp = Date.now();
// XXX timeout eventually?
// Wait until the primary is writable. If it isn't writable after one
// minute, throw an error and report the replica set status.
while (!stopped) {
var status = yieldingMethod(
db.admin(), 'command', {replSetGetStatus: 1});
const { ismaster } = yieldingMethod(db.admin(), "command", {
isMaster: 1
});
// See https://docs.mongodb.com/manual/reference/replica-states/
// for information on various states
if (ismaster) {
break;
} else if (Date.now() - writableTimestamp > 60000) {
const status = yieldingMethod(db.admin(), "command", {
replSetGetStatus: 1
});
// Are any of the members starting up or recovering?
if (_.any(status.members, function (member) {
return member.stateStr === 'STARTUP' ||
member.stateStr === 'STARTUP2' ||
member.stateStr === 'RECOVERING';
})) {
utils.sleepMs(20);
continue;
throw new Error(
"Primary not writable after one minute. Last replica set status: " +
JSON.stringify(status)
);
}
const firstMemberState = status.members[0].stateStr;
// Is the intended primary currently a secondary? (It passes through
// that phase briefly.)
if (firstMemberState === 'SECONDARY') {
utils.sleepMs(20);
wasJustSecondary = true;
continue;
}
// Mongo 3.2 introduced a new heartbeatIntervalMillis property
// on replica sets, used during "primary" negotiation.
//
// If the first member was _just_ promoted, we'll wait until
// the heartbeat interval has elapsed before proceeding since
// the decision is not official until the heartbeat has elapsed.
if (firstMemberState === 'PRIMARY' && wasJustSecondary) {
wasJustSecondary = false;
utils.sleepMs(status.heartbeatIntervalMillis);
continue;
}
// Anything else for the intended primary is probably an error.
if (firstMemberState !== 'PRIMARY') {
throw Error("Unexpected Mongo status: " + JSON.stringify(status));
}
// Anything but secondary for the other members is probably an error.
for (var i = 1; i < status.members.length; ++i) {
if (status.members[i].stateStr !== 'SECONDARY') {
throw Error("Unexpected Mongo secondary status: " +
JSON.stringify(status));
}
}
break;
utils.sleepMs(50);
}
client.close(true /* means "the app is closing the connection" */);

View File

@@ -27,12 +27,21 @@ var serverJson = require("./server-json.js");
var configJson =
JSON.parse(fs.readFileSync(path.resolve(serverDir, 'config.json'), 'utf8'));
var programsDir = path.dirname(serverDir);
var buildDir = path.dirname(programsDir);
var starJson = JSON.parse(fs.readFileSync(path.join(buildDir, "star.json")));
// Set up environment
__meteor_bootstrap__ = {
startupHooks: [],
serverDir: serverDir,
configJson: configJson };
__meteor_runtime_config__ = { meteorRelease: configJson.meteorRelease };
configJson: configJson
};
__meteor_runtime_config__ = {
meteorRelease: configJson.meteorRelease,
gitCommitHash: starJson.gitCommitHash
};
if (!process.env.APP_ID) {
process.env.APP_ID = configJson.appId;
@@ -196,7 +205,6 @@ var specialArgPaths = {
"packages/dynamic-import.js": function (file) {
var dynamicImportInfo = {};
var programsDir = path.dirname(serverDir);
var clientArchs = configJson.clientArchs ||
Object.keys(configJson.clientPaths);

View File

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

View File

@@ -6,7 +6,7 @@
"test": "meteor test --once --driver-package meteortesting:mocha"
},
"dependencies": {
"@babel/runtime": "^7.1.5",
"@babel/runtime": "^7.3.4",
"meteor-node-stubs": "^0.4.1"
},
"devDependencies": {

View File

@@ -8,7 +8,7 @@
"visualize": "meteor --production --extra-packages bundle-visualizer"
},
"dependencies": {
"@babel/runtime": "^7.1.5",
"@babel/runtime": "^7.3.4",
"meteor-node-stubs": "^0.4.1"
},
"meteor": {

View File

@@ -8,7 +8,7 @@
"visualize": "meteor --production --extra-packages bundle-visualizer"
},
"dependencies": {
"@babel/runtime": "^7.1.5",
"@babel/runtime": "^7.3.4",
"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.1.5",
"@babel/runtime": "^7.3.4",
"meteor-node-stubs": "^0.4.1"
},
"meteor": {

View File

@@ -767,9 +767,9 @@
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4="
},
"puppeteer": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.12.2.tgz",
"integrity": "sha512-xWSyCeD6EazGlfnQweMpM+Hs6X6PhUYhNTHKFj/axNZDq4OmrVERf70isBf7HsnFgB3zOC1+23/8+wCAZYg+Pg==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.13.0.tgz",
"integrity": "sha512-LUXgvhjfB/P6IOUDAKxOcbCz9ISwBLL9UpKghYrcBDwrOGx1m60y0iN2M64mdAUbT4+7oZM5DTxOW7equa2fxQ==",
"requires": {
"debug": "^4.1.0",
"extract-zip": "^1.6.6",
@@ -837,9 +837,9 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
"integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.0.tgz",
"integrity": "sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==",
"requires": {
"async-limiter": "~1.0.0"
}

View File

@@ -0,0 +1 @@
node_modules/

View File

@@ -0,0 +1,18 @@
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.
notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
1.7-split-underscore-from-meteor-base

View File

@@ -0,0 +1 @@
local

View File

@@ -0,0 +1,7 @@
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics
xh4qomttjyd.znxg6je45aan

View File

@@ -0,0 +1,15 @@
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor # Shared foundation for all Meteor packages
static-html # Define static page content in .html files
standard-minifier-css # CSS minifier run for production mode
standard-minifier-js # JS minifier run for production mode
es5-shim # ECMAScript 5 compatibility for older browsers
ecmascript # Enable ECMAScript2015+ syntax in app code
shell-server # Server-side component of the `meteor shell` command
webapp # Serves a Meteor app over HTTP
server-render # Support for server-side rendering

View File

@@ -0,0 +1,2 @@
server
browser

View File

@@ -0,0 +1 @@
none

View File

@@ -0,0 +1,39 @@
babel-compiler@7.2.4
babel-runtime@1.3.0
base64@1.0.11
blaze-tools@1.0.10
boilerplate-generator@1.6.0
caching-compiler@1.2.1
caching-html-compiler@1.1.3
dynamic-import@0.5.1
ecmascript@0.12.4
ecmascript-runtime@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
html-tools@1.0.11
htmljs@1.0.11
inter-process-messaging@0.1.0
logging@1.1.20
meteor@1.9.3
minifier-css@1.4.1
minifier-js@2.4.0
modern-browsers@0.1.4-beta181.16
modules@0.13.0
modules-runtime@0.10.3
promise@0.11.2
random@1.1.0
routepolicy@1.1.0
server-render@0.3.1
shell-server@0.4.0
spacebars-compiler@1.1.3
standard-minifier-css@1.5.2
standard-minifier-js@2.4.0
static-html@1.2.2
templating-tools@1.1.2
tracker@1.2.0
underscore@1.0.10
webapp@1.7.3-beta181.16
webapp-hashing@1.0.9

View File

@@ -0,0 +1,4 @@
body {
padding: 10px;
font-family: sans-serif;
}

View File

@@ -0,0 +1,21 @@
<head>
<title>Minimal Meteor app</title>
</head>
<body>
<h1>Minimal Meteor app</h1>
<p>
This Meteor app uses as few Meteor packages as possible, to keep the
client JavaScript bundle as small as possible.
</p>
<em id="server-render-target"></em>
<h2>Learn Meteor!</h2>
<ul>
<li><a href="https://www.meteor.com/try" target="_blank">Do the Tutorial</a></li>
<li><a href="http://guide.meteor.com" target="_blank">Follow the Guide</a></li>
<li><a href="https://docs.meteor.com" target="_blank">Read the Docs</a></li>
<li><a href="https://forums.meteor.com" target="_blank">Discussions</a></li>
</ul>
</body>

View File

@@ -0,0 +1 @@
console.log(`Greetings from ${module.id}!`);

View File

@@ -0,0 +1,846 @@
{
"name": "git-commit-hash",
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"@babel/runtime": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz",
"integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==",
"requires": {
"regenerator-runtime": "^0.12.0"
}
},
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"requires": {
"es6-promisify": "^5.0.0"
}
},
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
}
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"es6-promise": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
"integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg=="
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
"es6-promise": "^4.0.3"
}
},
"extract-zip": {
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
"integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
"requires": {
"concat-stream": "1.6.2",
"debug": "2.6.9",
"mkdirp": "0.5.1",
"yauzl": "2.4.1"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"fd-slicer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
"requires": {
"pend": "~1.2.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"https-proxy-agent": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"meteor-node-stubs": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.4.1.tgz",
"integrity": "sha512-UO2OStvLOKoApmOdIP5eCqoLaa/ritMXRg4ffJVdkNLEsczzPvTjgC0Mxk4cM4R8MZkwll90FYgjDf5qUTJdMA==",
"requires": {
"assert": "^1.4.1",
"browserify-zlib": "^0.1.4",
"buffer": "^4.9.1",
"console-browserify": "^1.1.0",
"constants-browserify": "^1.0.0",
"crypto-browserify": "^3.11.0",
"domain-browser": "^1.1.7",
"events": "^1.1.1",
"https-browserify": "0.0.1",
"os-browserify": "^0.2.1",
"path-browserify": "0.0.0",
"process": "^0.11.9",
"punycode": "^1.4.1",
"querystring-es3": "^0.2.1",
"readable-stream": "^2.3.6",
"stream-browserify": "^2.0.1",
"stream-http": "^2.8.0",
"string_decoder": "^1.1.0",
"timers-browserify": "^1.4.2",
"tty-browserify": "0.0.0",
"url": "^0.11.0",
"util": "^0.10.3",
"vm-browserify": "0.0.4"
},
"dependencies": {
"asn1.js": {
"version": "4.10.1",
"bundled": true,
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
}
},
"assert": {
"version": "1.4.1",
"bundled": true,
"requires": {
"util": "0.10.3"
}
},
"base64-js": {
"version": "1.3.0",
"bundled": true
},
"bn.js": {
"version": "4.11.8",
"bundled": true
},
"brorand": {
"version": "1.1.0",
"bundled": true
},
"browserify-aes": {
"version": "1.2.0",
"bundled": true,
"requires": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
"create-hash": "^1.1.0",
"evp_bytestokey": "^1.0.3",
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"browserify-cipher": {
"version": "1.0.1",
"bundled": true,
"requires": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
"evp_bytestokey": "^1.0.0"
}
},
"browserify-des": {
"version": "1.0.1",
"bundled": true,
"requires": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
"inherits": "^2.0.1"
}
},
"browserify-rsa": {
"version": "4.0.1",
"bundled": true,
"requires": {
"bn.js": "^4.1.0",
"randombytes": "^2.0.1"
}
},
"browserify-sign": {
"version": "4.0.4",
"bundled": true,
"requires": {
"bn.js": "^4.1.1",
"browserify-rsa": "^4.0.0",
"create-hash": "^1.1.0",
"create-hmac": "^1.1.2",
"elliptic": "^6.0.0",
"inherits": "^2.0.1",
"parse-asn1": "^5.0.0"
}
},
"browserify-zlib": {
"version": "0.1.4",
"bundled": true,
"requires": {
"pako": "~0.2.0"
}
},
"buffer": {
"version": "4.9.1",
"bundled": true,
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4",
"isarray": "^1.0.0"
}
},
"buffer-xor": {
"version": "1.0.3",
"bundled": true
},
"builtin-status-codes": {
"version": "3.0.0",
"bundled": true
},
"cipher-base": {
"version": "1.0.4",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"console-browserify": {
"version": "1.1.0",
"bundled": true,
"requires": {
"date-now": "^0.1.4"
}
},
"constants-browserify": {
"version": "1.0.0",
"bundled": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true
},
"create-ecdh": {
"version": "4.0.3",
"bundled": true,
"requires": {
"bn.js": "^4.1.0",
"elliptic": "^6.0.0"
}
},
"create-hash": {
"version": "1.2.0",
"bundled": true,
"requires": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
"md5.js": "^1.3.4",
"ripemd160": "^2.0.1",
"sha.js": "^2.4.0"
}
},
"create-hmac": {
"version": "1.1.7",
"bundled": true,
"requires": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
"inherits": "^2.0.1",
"ripemd160": "^2.0.0",
"safe-buffer": "^5.0.1",
"sha.js": "^2.4.8"
}
},
"crypto-browserify": {
"version": "3.12.0",
"bundled": true,
"requires": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
"create-ecdh": "^4.0.0",
"create-hash": "^1.1.0",
"create-hmac": "^1.1.0",
"diffie-hellman": "^5.0.0",
"inherits": "^2.0.1",
"pbkdf2": "^3.0.3",
"public-encrypt": "^4.0.0",
"randombytes": "^2.0.0",
"randomfill": "^1.0.3"
}
},
"date-now": {
"version": "0.1.4",
"bundled": true
},
"des.js": {
"version": "1.0.0",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
}
},
"diffie-hellman": {
"version": "5.0.3",
"bundled": true,
"requires": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
"randombytes": "^2.0.0"
}
},
"domain-browser": {
"version": "1.2.0",
"bundled": true
},
"elliptic": {
"version": "6.4.0",
"bundled": true,
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
"hash.js": "^1.0.0",
"hmac-drbg": "^1.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
}
},
"events": {
"version": "1.1.1",
"bundled": true
},
"evp_bytestokey": {
"version": "1.0.3",
"bundled": true,
"requires": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
}
},
"hash-base": {
"version": "3.0.4",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"hash.js": {
"version": "1.1.3",
"bundled": true,
"requires": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.0"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"bundled": true
}
}
},
"hmac-drbg": {
"version": "1.0.1",
"bundled": true,
"requires": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.1"
}
},
"https-browserify": {
"version": "0.0.1",
"bundled": true
},
"ieee754": {
"version": "1.1.11",
"bundled": true
},
"indexof": {
"version": "0.0.1",
"bundled": true
},
"inherits": {
"version": "2.0.1",
"bundled": true
},
"isarray": {
"version": "1.0.0",
"bundled": true
},
"md5.js": {
"version": "1.3.4",
"bundled": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
}
},
"miller-rabin": {
"version": "4.0.1",
"bundled": true,
"requires": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
}
},
"minimalistic-assert": {
"version": "1.0.1",
"bundled": true
},
"minimalistic-crypto-utils": {
"version": "1.0.1",
"bundled": true
},
"os-browserify": {
"version": "0.2.1",
"bundled": true
},
"pako": {
"version": "0.2.9",
"bundled": true
},
"parse-asn1": {
"version": "5.1.1",
"bundled": true,
"requires": {
"asn1.js": "^4.0.0",
"browserify-aes": "^1.0.0",
"create-hash": "^1.1.0",
"evp_bytestokey": "^1.0.0",
"pbkdf2": "^3.0.3"
}
},
"path-browserify": {
"version": "0.0.0",
"bundled": true
},
"pbkdf2": {
"version": "3.0.16",
"bundled": true,
"requires": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
"ripemd160": "^2.0.1",
"safe-buffer": "^5.0.1",
"sha.js": "^2.4.8"
}
},
"process": {
"version": "0.11.10",
"bundled": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true
},
"public-encrypt": {
"version": "4.0.2",
"bundled": true,
"requires": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
"create-hash": "^1.1.0",
"parse-asn1": "^5.0.0",
"randombytes": "^2.0.1"
}
},
"punycode": {
"version": "1.4.1",
"bundled": true
},
"querystring": {
"version": "0.2.0",
"bundled": true
},
"querystring-es3": {
"version": "0.2.1",
"bundled": true
},
"randombytes": {
"version": "2.0.6",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.0"
}
},
"randomfill": {
"version": "1.0.4",
"bundled": true,
"requires": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"bundled": true
}
}
},
"ripemd160": {
"version": "2.0.2",
"bundled": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
}
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true
},
"sha.js": {
"version": "2.4.11",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
}
},
"stream-browserify": {
"version": "2.0.1",
"bundled": true,
"requires": {
"inherits": "~2.0.1",
"readable-stream": "^2.0.2"
}
},
"stream-http": {
"version": "2.8.1",
"bundled": true,
"requires": {
"builtin-status-codes": "^3.0.0",
"inherits": "^2.0.1",
"readable-stream": "^2.3.3",
"to-arraybuffer": "^1.0.0",
"xtend": "^4.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"timers-browserify": {
"version": "1.4.2",
"bundled": true,
"requires": {
"process": "~0.11.0"
}
},
"to-arraybuffer": {
"version": "1.0.1",
"bundled": true
},
"tty-browserify": {
"version": "0.0.0",
"bundled": true
},
"url": {
"version": "0.11.0",
"bundled": true,
"requires": {
"punycode": "1.3.2",
"querystring": "0.2.0"
},
"dependencies": {
"punycode": {
"version": "1.3.2",
"bundled": true
}
}
},
"util": {
"version": "0.10.3",
"bundled": true,
"requires": {
"inherits": "2.0.1"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true
},
"vm-browserify": {
"version": "0.0.4",
"bundled": true,
"requires": {
"indexof": "0.0.1"
}
},
"xtend": {
"version": "4.0.1",
"bundled": true
}
}
},
"mime": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
"integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w=="
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
},
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
"integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4="
},
"puppeteer": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.6.2.tgz",
"integrity": "sha512-KBgMr/ZdwIwDQWTqcAlGhnQ2Vd6p+o5B89H60XUfdmCpia2KViSZsdRjvrf2wYOxXSrpYx6OuCBzV7ppLuNjNg==",
"requires": {
"debug": "^3.1.0",
"extract-zip": "^1.6.6",
"https-proxy-agent": "^2.2.1",
"mime": "^2.0.3",
"progress": "^2.0.0",
"proxy-from-env": "^1.0.0",
"rimraf": "^2.6.1",
"ws": "^5.1.1"
}
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"regenerator-runtime": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
"integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
},
"rimraf": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"ws": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
"integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"requires": {
"async-limiter": "~1.0.0"
}
},
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
"requires": {
"fd-slicer": "~1.0.1"
}
}
}
}

View File

@@ -0,0 +1,20 @@
{
"name": "git-commit-hash",
"private": true,
"scripts": {
"start": "meteor run",
"test": "TEST_BROWSER_DRIVER=puppeteer meteor test --once --full-app --driver-package meteortesting:mocha"
},
"dependencies": {
"@babel/runtime": "^7.1.5",
"meteor-node-stubs": "^0.4.1",
"puppeteer": "^1.6.2"
},
"meteor": {
"mainModule": {
"client": "client/main.js",
"server": "server/main.js"
},
"testModule": "tests/main.js"
}
}

View File

@@ -0,0 +1,6 @@
import { Meteor } from "meteor/meteor";
Meteor.startup(() => {
const { gitCommitHash } = __meteor_runtime_config__;
console.log("__meteor_runtime_config__.gitCommitHash: " + gitCommitHash);
});

View File

@@ -0,0 +1,27 @@
import assert from "assert";
const gitShaPattern = /^[0-9a-z]{40}$/;
describe("git-commit-hash", function () {
it("package.json has correct name", async function () {
const { name } = await import("../package.json");
assert.strictEqual(name, "git-commit-hash");
});
it("Meteor.gitCommitHash is defined", function () {
assert.strictEqual(typeof Meteor.gitCommitHash, "string");
assert(gitShaPattern.test(Meteor.gitCommitHash), Meteor.gitCommitHash);
});
if (Meteor.isClient) {
it("client is not server", function () {
assert.strictEqual(Meteor.isServer, false);
});
}
if (Meteor.isServer) {
it("server is not client", function () {
assert.strictEqual(Meteor.isClient, false);
});
}
});

View File

@@ -3,7 +3,7 @@ if (Meteor.isClient) {
var maybeCall = function () {
var A = Package.autoupdate.Autoupdate;
if (A._ClientVersions.findOne() && ! A.newClientAvailable()) {
if (A._clientVersions.hasVersions() && ! A.newClientAvailable()) {
Meteor.call("clientLoad",
typeof jsVar === 'undefined' ? 'undefined' : jsVar,
typeof packageVar === 'undefined' ? 'undefined' : packageVar,

View File

@@ -0,0 +1,18 @@
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.
notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
1.7-split-underscore-from-meteor-base

View File

@@ -0,0 +1,7 @@
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics
lwfpbe3yeelg.jiny0taw9ho

View File

@@ -3,5 +3,9 @@
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor-base
standard-minifiers
meteor-base@1.4.0
mongo@1.6.0
standard-minifier-css
standard-minifier-js
shell-server
dynamic-import

Some files were not shown because too many files have changed in this diff Show More