Merge branch 'release-1.10' into refactor/modernize-random

This commit is contained in:
Filipe Névola
2020-02-25 15:37:17 -04:00
committed by GitHub
36 changed files with 464 additions and 125 deletions

View File

@@ -5,7 +5,10 @@ cache:
directories:
- ".meteor"
- ".babel-cache"
script: TEST_PACKAGES_EXCLUDE="less" phantom=false ./packages/test-in-console/run.sh
script:
- export TEST_PACKAGES_EXCLUDE="less"
- export phantom=false
- travis_retry ./packages/test-in-console/run.sh
sudo: false
env:
- CXX=g++-4.8

View File

@@ -5,7 +5,15 @@
* Cordova has been updated from version 7 to 9. We recommend that you test
your features that are taking advantage of Cordova plugins to be sure
they are still working as expected.
* Because MongoDB since 3.4 no longer supports 32-bit Windows, Meteor 1.10 has
also dropped support for 32-bit Windows. In other words, Meteor 1.10 supports
64-bit Mac, Windows 64-bit, and Linux 64-bit.
### Migration Steps
N/A
### Changes
* The version of MongoDB used by Meteor in development has been updated
from 4.0.6 to 4.2.1, and the `mongodb` driver package has been updated
from 3.2.7 to 3.4.0, thanks to [@klaussner](https://github.com/klaussner).
@@ -73,6 +81,11 @@ N/A
* Updated V8 to [release v7.8](https://v8.dev/blog/v8-release-78) which includes improvements in performance, for example, object destructuring now is as fast as the equivalent variable assignment.
* [12.15.0](https://nodejs.org/en/blog/release/v12.15.0/)
* `cursor.observeChanges` now accepts a second options argument.
If your observer functions do not mutate the passed arguments, you can specify
`{ nonMutatingCallbacks: true }`, which improves performance by reducing
the amount of data copies.
## v1.9, 2020-01-09
### Breaking changes

2
meteor
View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
BUNDLE_VERSION=12.16.1.3
BUNDLE_VERSION=12.16.1.4
# OS Check. Put here because here is where we download the precompiled
# bundles that are arch specific.

View File

@@ -895,7 +895,7 @@ export class AccountsServer extends AccountsCommon {
// The onClose callback for the connection takes care of
// cleaning up the observe handle and any other state we have
// lying around.
});
}, { nonMutatingCallbacks: true });
// If the user ran another login or logout command we were waiting for the
// defer or added to fire (ie, another call to _setLoginToken occurred),

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "A user account system",
version: "1.5.0",
version: "1.6.0-beta110.8",
});
Package.onUse(api => {

View File

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

View File

@@ -5,7 +5,7 @@ Package.describe({
// 2.2.x in the future. The version was also bumped to 2.0.0 temporarily
// during the Meteor 1.5.1 release process, so versions 2.0.0-beta.2
// through -beta.5 and -rc.0 have already been published.
version: "1.5.3"
version: "1.6.0-beta110.8"
});
Package.onUse(api => {

View File

@@ -261,10 +261,12 @@ function eachResource({
}
function sizeCheck() {
const sizes = [ // Check size of each known architecture independently.
const RESOURCE_SIZE_LIMIT = 5 * 1024 * 1024; // 5MB
const largeSizes = [ // Check size of each known architecture independently.
"web.browser",
"web.browser.legacy",
].reduce((filt, arch) => {
].filter((arch) => !!WebApp.clientPrograms[arch])
.map((arch) => {
let totalSize = 0;
WebApp.clientPrograms[arch].manifest.forEach(resource => {
@@ -275,22 +277,21 @@ function sizeCheck() {
}
});
if (totalSize > 5 * 1024 * 1024) {
filt.push({
arch,
size: totalSize
});
return {
arch,
size: totalSize,
}
return filt;
}, []);
if (sizes.length > 0) {
})
.filter(({ size }) => size > RESOURCE_SIZE_LIMIT);
if (largeSizes.length > 0) {
Meteor._debug([
"** You are using the appcache package, but the size of",
"** one or more of your cached resources is larger than",
"** the recommended maximum size of 5MB which may break",
"** your app in some browsers!",
"** ",
...sizes.map(data => `** ${data.arch}: ${(data.size / 1024 / 1024).toFixed(1)}MB`),
...largeSizes.map(data => `** ${data.arch}: ${(data.size / 1024 / 1024).toFixed(1)}MB`),
"** ",
"** See http://docs.meteor.com/#appcache for more",
"** information and fixes."

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Generates the boilerplate html from program's manifest",
version: '1.6.0'
version: '1.7.0-beta110.8'
});
Npm.depends({

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Facebook OAuth flow",
version: "1.7.0"
version: "1.7.0-beta110.8"
});
Package.onUse(api => {

View File

@@ -6,7 +6,7 @@ Package.describe({
// between such packages and the build tool.
name: 'launch-screen',
summary: 'Default and customizable launch screen on mobile.',
version: '1.2.0'
version: '1.2.0-beta110.8'
});
Cordova.depends({

View File

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

View File

@@ -669,17 +669,18 @@ LocalCollection._CachingChangeObserver = class _CachingChangeObserver {
this.docs = new OrderedDict(MongoID.idStringify);
this.applyChange = {
addedBefore: (id, fields, before) => {
const doc = EJSON.clone(fields);
// Take a shallow copy since the top-level properties can be changed
const doc = { ...fields };
doc._id = id;
if (callbacks.addedBefore) {
callbacks.addedBefore.call(this, id, fields, before);
callbacks.addedBefore.call(this, id, EJSON.clone(fields), before);
}
// This line triggers if we provide added with movedBefore.
if (callbacks.added) {
callbacks.added.call(this, id, fields);
callbacks.added.call(this, id, EJSON.clone(fields));
}
// XXX could `before` be a falsy ID? Technically
@@ -701,10 +702,11 @@ LocalCollection._CachingChangeObserver = class _CachingChangeObserver {
this.docs = new LocalCollection._IdMap;
this.applyChange = {
added: (id, fields) => {
const doc = EJSON.clone(fields);
// Take a shallow copy since the top-level properties can be changed
const doc = { ...fields };
if (callbacks.added) {
callbacks.added.call(this, id, fields);
callbacks.added.call(this, id, EJSON.clone(fields));
}
doc._id = id;
@@ -1330,7 +1332,12 @@ LocalCollection._observeFromObserveChanges = (cursor, observeCallbacks) => {
callbacks: observeChangesCallbacks
});
const handle = cursor.observeChanges(changeObserver.applyChange);
// CachingChangeObserver clones all received input on its callbacks
// So we can mark it as safe to reduce the ejson clones.
// This is tested by the `mongo-livedata - (extended) scribbling` tests
changeObserver.applyChange._fromObserve = true;
const handle = cursor.observeChanges(changeObserver.applyChange,
{ nonMutatingCallbacks: true });
suppressed = false;

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Meteor's client-side datastore: a port of MongoDB to Javascript",
version: '1.4.5'
version: '1.5.0-beta110.8'
});
Package.onUse(api => {

View File

@@ -1,6 +1,6 @@
Package.describe({
name: 'mobile-experience',
version: '1.1.0',
version: '1.1.0-beta110.8',
summary: 'Packages for a great mobile user experience',
documentation: 'README.md'
});

View File

@@ -1,7 +1,7 @@
Package.describe({
name: 'mobile-status-bar',
summary: "Good defaults for the mobile status bar",
version: "1.1.0"
version: "1.1.0-beta110.8"
});
Cordova.depends({

View File

@@ -372,7 +372,10 @@ Object.assign(Mongo.Collection, {
removed: function (id) {
sub.removed(collection, id);
}
});
},
// Publications don't mutate the documents
// This is tested by the `livedata - publish callbacks clone` test
{ nonMutatingCallbacks: true });
// We don't call sub.ready() here: it gets called in livedata_server, after
// possibly calling _publishCursor on multiple returned cursors.

View File

@@ -918,7 +918,7 @@ Cursor.prototype.observe = function (callbacks) {
return LocalCollection._observeFromObserveChanges(self, callbacks);
};
Cursor.prototype.observeChanges = function (callbacks) {
Cursor.prototype.observeChanges = function (callbacks, options = {}) {
var self = this;
var methods = [
'addedAt',
@@ -931,8 +931,8 @@ Cursor.prototype.observeChanges = function (callbacks) {
];
var ordered = LocalCollection._observeChangesCallbacksAreOrdered(callbacks);
// XXX: Can we find out if callbacks are from observe?
var exceptionName = ' observe/observeChanges callback';
let exceptionName = callbacks._fromObserve ? 'observe' : 'observeChanges';
exceptionName += ' callback';
methods.forEach(function (method) {
if (callbacks[method] && typeof callbacks[method] == "function") {
callbacks[method] = Meteor.bindEnvironment(callbacks[method], method + exceptionName);
@@ -940,7 +940,7 @@ Cursor.prototype.observeChanges = function (callbacks) {
});
return self._mongo._observeChanges(
self._cursorDescription, ordered, callbacks);
self._cursorDescription, ordered, callbacks, options.nonMutatingCallbacks);
};
MongoConnection.prototype._createSynchronousCursor = function(
@@ -1241,7 +1241,7 @@ MongoConnection.prototype.tail = function (cursorDescription, docCallback, timeo
};
MongoConnection.prototype._observeChanges = function (
cursorDescription, ordered, callbacks) {
cursorDescription, ordered, callbacks, nonMutatingCallbacks) {
var self = this;
if (cursorDescription.options.tailable) {
@@ -1282,7 +1282,10 @@ MongoConnection.prototype._observeChanges = function (
}
});
var observeHandle = new ObserveHandle(multiplexer, callbacks);
var observeHandle = new ObserveHandle(multiplexer,
callbacks,
nonMutatingCallbacks,
);
if (firstHandle) {
var matcher, sorter;

View File

@@ -560,6 +560,80 @@ Tinytest.addAsync("mongo-livedata - scribbling, " + idGeneration, function (test
onComplete();
});
if (Meteor.isServer) {
Tinytest.addAsync("mongo-livedata - extended scribbling, " + idGeneration, function (test, onComplete) {
function error() {
throw new Meteor.Error('unsafe object mutation');
}
const denyModifications = {
get(target, key) {
const type = Object.prototype.toString.call(target[key]);
if (type === '[object Object]' || type === '[object Array]') {
return freeze(target[key]);
} else {
return target[key];
}
},
set: error,
deleteProperty: error,
defineProperty: error,
};
// Object.freeze only throws in silent mode
// So we make our own version that always throws.
function freeze(obj) {
return new Proxy(obj, denyModifications);
}
const origApplyCallback = ObserveMultiplexer.prototype._applyCallback;
ObserveMultiplexer.prototype._applyCallback = function(callback, args) {
// Make sure that if anything touches the original object, this will throw
return origApplyCallback.call(this, callback, freeze(args));
}
const run = test.runId();
const coll = new Mongo.Collection(`livedata_test_scribble_collection_${run}`, collectionOptions);
const expectMutatable = (o) => {
try {
o.a[0].c = 3;
} catch (error) {
test.fail();
}
}
const expectNotMutatable = (o) => {
try {
o.a[0].c = 3;
test.fail();
} catch (error) {}
}
const handle = coll.find({run}).observe({
addedAt: expectMutatable,
changedAt: function(id, o) {
expectMutatable(o);
}
});
const handle2 = coll.find({run}).observeChanges({
added: expectNotMutatable,
changed: function(id, o) {
expectNotMutatable(o);
}
}, { nonMutatingCallbacks: true });
runInFence(function () {
coll.insert({run, a: [ {c: 1} ]});
coll.update({run}, { $set: { 'a.0.c': 2 } });
});
handle.stop();
handle2.stop();
ObserveMultiplexer.prototype._applyCallback = origApplyCallback;
onComplete();
});
}
Tinytest.addAsync("mongo-livedata - stop handle in callback, " + idGeneration, function (test, onComplete) {
var run = Random.id();
var coll;

View File

@@ -155,11 +155,7 @@ _.extend(ObserveMultiplexer.prototype, {
return;
// First, apply the change to the cache.
// XXX We could make applyChange callbacks promise not to hang on to any
// state from their arguments (assuming that their supplied callbacks
// don't) and skip this clone. Currently 'changed' hangs on to state
// though.
self._cache.applyChange[callbackName].apply(null, EJSON.clone(args));
self._cache.applyChange[callbackName].apply(null, args);
// If we haven't finished the initial adds, then we should only be getting
// adds.
@@ -179,7 +175,8 @@ _.extend(ObserveMultiplexer.prototype, {
return;
var callback = handle['_' + callbackName];
// clone arguments so that callbacks can mutate their arguments
callback && callback.apply(null, EJSON.clone(args));
callback && callback.apply(null,
handle.nonMutatingCallbacks ? args : EJSON.clone(args));
});
});
},
@@ -199,8 +196,8 @@ _.extend(ObserveMultiplexer.prototype, {
self._cache.docs.forEach(function (doc, id) {
if (!_.has(self._handles, handle._id))
throw Error("handle got removed before sending initial adds!");
var fields = EJSON.clone(doc);
delete fields._id;
const { _id, ...fields } = handle.nonMutatingCallbacks ? doc
: EJSON.clone(doc);
if (self._ordered)
add(id, fields, null); // we're going in order, so add at end
else
@@ -211,7 +208,9 @@ _.extend(ObserveMultiplexer.prototype, {
var nextObserveHandleId = 1;
ObserveHandle = function (multiplexer, callbacks) {
// When the callbacks do not mutate the arguments, we can skip a lot of data clones
ObserveHandle = function (multiplexer, callbacks, nonMutatingCallbacks = false) {
var self = this;
// The end user is only supposed to call stop(). The other fields are
// accessible to the multiplexer, though.
@@ -231,6 +230,7 @@ ObserveHandle = function (multiplexer, callbacks) {
});
self._stopped = false;
self._id = nextObserveHandleId++;
self.nonMutatingCallbacks = nonMutatingCallbacks;
};
ObserveHandle.prototype.stop = function () {
var self = this;

View File

@@ -9,7 +9,7 @@
Package.describe({
summary: "Adaptor for using MongoDB and Minimongo over DDP",
version: '1.8.1'
version: '1.9.0-beta110.8'
});
Npm.depends({
@@ -71,6 +71,7 @@ Package.onUse(function (api) {
api.export('MongoInternals', 'server');
api.export("Mongo");
api.export('ObserveMultiplexer', 'server', {testOnly: true});
api.addFiles(['mongo_driver.js', 'oplog_tailing.js',
'observe_multiplex.js', 'doc_fetcher.js',

View File

@@ -3,7 +3,7 @@
Package.describe({
summary: "Wrapper around the mongo npm package",
version: "3.5.0",
version: "3.5.0-beta110.8",
documentation: null
});

View File

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

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Common code for OAuth1-based login services",
version: "1.2.2",
version: "1.3.0-beta110.8",
});
Package.onUse(api => {

View File

@@ -1,6 +1,6 @@
Package.describe({
summary: "Serves a Meteor app over HTTP",
version: '1.8.2'
version: '1.9.0-beta110.8'
});
Npm.depends({"basic-auth-connect": "1.0.0",
@@ -20,9 +20,9 @@ Npm.strip({
});
Cordova.depends({
'cordova-plugin-whitelist': '1.3.3',
'cordova-plugin-wkwebview-engine': '1.1.4',
'cordova-plugin-meteor-webapp': '1.7.0'
'cordova-plugin-whitelist': '1.3.4',
'cordova-plugin-wkwebview-engine': '1.2.1',
'cordova-plugin-meteor-webapp': '1.8.0'
});
Package.onUse(function (api) {

View File

@@ -404,6 +404,12 @@ WebAppInternals.staticFilesMiddleware = async function (
identifyBrowser(req.headers["user-agent"]),
);
if (! hasOwn.call(WebApp.clientPrograms, arch)) {
// We could come here in case we run with some architectures excluded
next();
return;
}
// If pauseClient(arch) has been called, program.paused will be a
// Promise that will be resolved when the program is unpaused.
const program = WebApp.clientPrograms[arch];
@@ -987,6 +993,19 @@ function runWebAppServer() {
request.browser,
);
if (! hasOwn.call(WebApp.clientPrograms, arch)) {
// We could come here in case we run with some architectures excluded
headers['Cache-Control'] = 'no-cache';
res.writeHead(404, headers);
if (Meteor.isDevelopment) {
res.end(`No client program found for the ${arch} architecture.`);
} else {
// Safety net, but this branch should not be possible.
res.end("404 Not Found");
}
return;
}
// If pauseClient(arch) has been called, program.paused will be a
// Promise that will be resolved when the program is unpaused.
await WebApp.clientPrograms[arch].paused;

View File

@@ -39,7 +39,7 @@ echo Found build $DIRNAME
trap "echo Found surprising number of tarballs." EXIT
# Check to make sure the proper number of each kind of file is there.
aws s3 ls s3://com.meteor.jenkins/$DIRNAME/ | \
perl -nle 'if (/\.tar\.gz/) { ++$TAR } else { die "something weird" } END { exit !($TAR == 4) }'
perl -nle 'if (/\.tar\.gz/) { ++$TAR } else { die "something weird" } END { exit !($TAR == 3) }'
trap - EXIT

View File

@@ -1,6 +1,6 @@
{
"track": "METEOR",
"version": "1.9.2-rc.1",
"version": "1.10-beta.8",
"recommended": false,
"official": false,
"description": "Meteor"

View File

@@ -72,9 +72,6 @@ Function Add-7ZipTool {
$webclient.DownloadFile("http://www.7-zip.org/a/7z1604-extra.7z", $extraArchive)
$pathToExtract = 'x64/7za.exe'
if ($PLATFORM -eq "windows_x86") {
$pathToExtract = '7za.exe'
}
Write-Host 'Placing 7za.exe from extra.7z in \bin...' -ForegroundColor Magenta
& "$system7zip" e $extraArchive -o"$dirTemp" $pathToExtract | Out-Null
@@ -118,11 +115,7 @@ Function Add-NodeAndNpm {
$nodeUrlBase = 'https://nodejs.org/dist'
}
if ($PLATFORM -eq "windows_x86") {
$nodeArchitecture = 'win-x86'
} else {
$nodeArchitecture = 'win-x64'
}
$nodeArchitecture = 'win-x64'
# Various variables which are used as part of directory paths and
# inside Node release and header archives.
@@ -231,7 +224,6 @@ Function Add-Mongo {
# Mongo >= 3.4 no longer supports 32-bit (x86) architectures, so we package
# the latest 3.2 version of Mongo for those builds and >= 3.4 for x64.
$mongo_filenames = @{
windows_x86 = "mongodb-win32-i386-${MONGO_VERSION_32BIT}"
windows_x64 = "mongodb-win32-x86_64-2012plus-${MONGO_VERSION_64BIT}"
}

View File

@@ -162,6 +162,16 @@ export function parseRunTargets(targets) {
});
};
const excludableWebArchs = ['web.browser', 'web.browser.legacy', 'web.cordova'];
function filterWebArchs(webArchs, excludeArchsOption) {
if (excludeArchsOption) {
const excludeArchs = excludeArchsOption.trim().split(/\s*,\s*/)
.filter(arch => excludableWebArchs.includes(arch));
webArchs = webArchs.filter(arch => !excludeArchs.includes(arch));
}
return webArchs;
}
///////////////////////////////////////////////////////////////////////////////
// options that act like commands
///////////////////////////////////////////////////////////////////////////////
@@ -318,7 +328,8 @@ var runCommandOptions = {
// Allow the version solver to make breaking changes to the versions
// of top-level dependencies.
'allow-incompatible-update': { type: Boolean },
'extra-packages': { type: String }
'extra-packages': { type: String },
'exclude-archs': { type: String }
},
catalogRefresh: new catalog.Refresh.Never()
};
@@ -399,6 +410,7 @@ function doRunCommand(options) {
webArchs.push("web.cordova");
}
}
webArchs = filterWebArchs(webArchs, options['exclude-archs']);
let cordovaRunner;
if (!_.isEmpty(runTargets)) {
@@ -1635,7 +1647,9 @@ testCommandOptions = {
// For 'test-packages': Run in "full app" mode
'full-app': { type: Boolean, 'default': false },
'extra-packages': { type: String }
'extra-packages': { type: String },
'exclude-archs': { type: String }
}
};
@@ -1978,6 +1992,11 @@ var runTestAppForPackages = function (projectContext, options) {
minifyMode: options.production ? 'production' : 'development'
};
buildOptions.buildMode = "test";
let webArchs = projectContext.platformList.getWebArchs();
if (options.cordovaRunner) {
webArchs.push("web.cordova");
}
buildOptions.webArchs = filterWebArchs(webArchs, options['exclude-archs']);
if (options.deploy) {
// Run the constraint solver and build local packages.

View File

@@ -189,10 +189,7 @@ function makeStatTest(method) {
function getHostArch() {
if (process.platform === "win32") {
if (process.arch === "x64") {
return "os.windows.x86_64";
}
return "os.windows.x86_32";
return "os.windows.x86_64";
}
if (process.platform === "linux") {

View File

@@ -103,6 +103,9 @@ Options:
version constraints.
--extra-packages Run with additional packages (comma separated, for example:
--extra-packages "package-name1, package-name2@1.2.3")
--exclude-archs Don't create bundles for certain web architectures
(comma separated, for example:
--exclude-archs "web.browser.legacy, web.cordova")
>>> debug
Run the project with server-side debugging enabled.
@@ -713,6 +716,9 @@ Options:
--driver-package Name of the optional test driver package to use to run
tests and display results. For example:
--driver-package practicalmeteor:mocha
--exclude-archs Don't create test bundles for certain web architectures
(comma separated, for example:
--exclude-archs "web.browser.legacy, web.cordova")
>>> self-test
Run tests of the 'meteor' tool.

View File

@@ -12,24 +12,123 @@
}
},
"@babel/core": {
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz",
"integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.4.tgz",
"integrity": "sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA==",
"requires": {
"@babel/code-frame": "^7.5.5",
"@babel/generator": "^7.7.2",
"@babel/helpers": "^7.7.0",
"@babel/parser": "^7.7.2",
"@babel/template": "^7.7.0",
"@babel/traverse": "^7.7.2",
"@babel/types": "^7.7.2",
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.4",
"@babel/helpers": "^7.8.4",
"@babel/parser": "^7.8.4",
"@babel/template": "^7.8.3",
"@babel/traverse": "^7.8.4",
"@babel/types": "^7.8.3",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.1",
"json5": "^2.1.0",
"lodash": "^4.17.13",
"resolve": "^1.3.2",
"semver": "^5.4.1",
"source-map": "^0.5.0"
},
"dependencies": {
"@babel/code-frame": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
"integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
"requires": {
"@babel/highlight": "^7.8.3"
}
},
"@babel/generator": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
"integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
"requires": {
"@babel/types": "^7.8.3",
"jsesc": "^2.5.1",
"lodash": "^4.17.13",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
"integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
"requires": {
"@babel/helper-get-function-arity": "^7.8.3",
"@babel/template": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/helper-get-function-arity": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
"integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
"integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/highlight": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
"integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
"integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw=="
},
"@babel/template": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
"integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/traverse": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
"integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.4",
"@babel/helper-function-name": "^7.8.3",
"@babel/helper-split-export-declaration": "^7.8.3",
"@babel/parser": "^7.8.4",
"@babel/types": "^7.8.3",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.13"
}
},
"@babel/types": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
"integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
"requires": {
"esutils": "^2.0.2",
"lodash": "^4.17.13",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/generator": {
@@ -78,9 +177,9 @@
}
},
"@babel/helper-plugin-utils": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
"integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA=="
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
"integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ=="
},
"@babel/helper-split-export-declaration": {
"version": "7.7.0",
@@ -91,13 +190,111 @@
}
},
"@babel/helpers": {
"version": "7.7.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz",
"integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz",
"integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==",
"requires": {
"@babel/template": "^7.7.0",
"@babel/traverse": "^7.7.0",
"@babel/types": "^7.7.0"
"@babel/template": "^7.8.3",
"@babel/traverse": "^7.8.4",
"@babel/types": "^7.8.3"
},
"dependencies": {
"@babel/code-frame": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
"integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
"requires": {
"@babel/highlight": "^7.8.3"
}
},
"@babel/generator": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz",
"integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==",
"requires": {
"@babel/types": "^7.8.3",
"jsesc": "^2.5.1",
"lodash": "^4.17.13",
"source-map": "^0.5.0"
}
},
"@babel/helper-function-name": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
"integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
"requires": {
"@babel/helper-get-function-arity": "^7.8.3",
"@babel/template": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/helper-get-function-arity": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
"integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/helper-split-export-declaration": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
"integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
"requires": {
"@babel/types": "^7.8.3"
}
},
"@babel/highlight": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
"integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
"@babel/parser": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz",
"integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw=="
},
"@babel/template": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz",
"integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/parser": "^7.8.3",
"@babel/types": "^7.8.3"
}
},
"@babel/traverse": {
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz",
"integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==",
"requires": {
"@babel/code-frame": "^7.8.3",
"@babel/generator": "^7.8.4",
"@babel/helper-function-name": "^7.8.3",
"@babel/helper-split-export-declaration": "^7.8.3",
"@babel/parser": "^7.8.4",
"@babel/types": "^7.8.3",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.13"
}
},
"@babel/types": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
"integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
"requires": {
"esutils": "^2.0.2",
"lodash": "^4.17.13",
"to-fast-properties": "^2.0.0"
}
}
}
},
"@babel/highlight": {
@@ -116,26 +313,26 @@
"integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A=="
},
"@babel/plugin-proposal-do-expressions": {
"version": "7.6.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.6.0.tgz",
"integrity": "sha512-qJDaoBDbLySwU1tG0jbAomOwz8W1PEiiiK0iLQAnHLr4PYIMVX4ltDGkj3uAKx4HDs1WJ0tozGW1zAQjuTIiWg==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.8.3.tgz",
"integrity": "sha512-NoMcN+0+SS1DVswjDCfz+Jfm9ViOYuFtv1lm0QInEugbEXK2iH3jeSq38WmIiTP+2QKqo2zt8xku77gqHINZkw==",
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-syntax-do-expressions": "^7.2.0"
"@babel/helper-plugin-utils": "^7.8.3",
"@babel/plugin-syntax-do-expressions": "^7.8.3"
}
},
"@babel/plugin-syntax-do-expressions": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.2.0.tgz",
"integrity": "sha512-/u4rJ+XEmZkIhspVuKRS+7WLvm7Dky9j9TvGK5IgId8B3FKir9MG+nQxDZ9xLn10QMBvW58dZ6ABe2juSmARjg==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.8.3.tgz",
"integrity": "sha512-puRiUTVDQ69iRX41eeVWqOftZK31waWqZfwKB/TGzPfgi7097twx/DpwfOfyqEGqYtvpQF3jpHwT6UBzvSyAjw==",
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
"@babel/helper-plugin-utils": "^7.8.3"
}
},
"@babel/runtime": {
"version": "7.7.7",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.7.tgz",
"integrity": "sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA==",
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz",
"integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==",
"requires": {
"regenerator-runtime": "^0.13.2"
},
@@ -656,6 +853,11 @@
"resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.5.4.tgz",
"integrity": "sha1-OMYYhRPhQDCUjsblz2VSPZd5KZs="
},
"gensync": {
"version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
"integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg=="
},
"github": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/github/-/github-0.2.4.tgz",
@@ -1927,9 +2129,9 @@
"integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
},
"resolve": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
"integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
"version": "1.15.1",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
"requires": {
"path-parse": "^1.0.6"
}

View File

@@ -4,9 +4,9 @@
"description": "Test app exercising many aspects of the Meteor module system.",
"private": true,
"dependencies": {
"@babel/core": "^7.7.2",
"@babel/plugin-proposal-do-expressions": "^7.6.0",
"@babel/runtime": "^7.7.7",
"@babel/core": "^7.8.4",
"@babel/plugin-proposal-do-expressions": "^7.8.3",
"@babel/runtime": "^7.8.4",
"@polymer/lit-element": "0.7.1",
"@wry/context": "^0.4.0",
"acorn": "file:imports/links/acorn",

View File

@@ -402,15 +402,19 @@ describe("local node_modules", () => {
});
it("can import @babel/runtime/helpers/esm/*", () => {
function check(exports) {
assert.strictEqual(typeof exports.default, "function");
}
check(require("@babel/runtime/helpers/esm/asyncIterator.js"));
check(require("@babel/runtime/helpers/esm/createClass.js"));
check(require("@babel/runtime/helpers/esm/getPrototypeOf.js"));
check(require("@babel/runtime/helpers/esm/inherits.js"));
check(require("@babel/runtime/helpers/esm/toArray.js"));
check(require("@babel/runtime/helpers/esm/typeof.js"));
import asyncIterator from "@babel/runtime/helpers/esm/asyncIterator.js";
import createClass from "@babel/runtime/helpers/esm/createClass.js";
import getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf.js";
import inherits from "@babel/runtime/helpers/esm/inherits.js";
import toArray from "@babel/runtime/helpers/esm/toArray.js";
import _typeof from "@babel/runtime/helpers/esm/typeof.js";
assert.strictEqual(typeof asyncIterator, "function");
assert.strictEqual(typeof createClass, "function");
assert.strictEqual(typeof getPrototypeOf, "function");
assert.strictEqual(typeof inherits, "function");
assert.strictEqual(typeof toArray, "function");
assert.strictEqual(typeof _typeof, "function");
});
it('can import packages with broken "module" fields', () => {

View File

@@ -64,7 +64,6 @@ const utils = require('./utils');
* hardware is virtually extinct. Meteor has never supported it and
* nobody has asked for it.
*
* os.windows.x86_32
* os.windows.x86_64
* Once, on the far side of yesterday, there was not a 64-bit
* build of Meteor for Windows, due to the belief that Node didn't
@@ -76,6 +75,7 @@ const utils = require('./utils');
* platforms show clear performance benefits over their 32-bit
* siblings (e.g. 7-zip, et.al), so Meteor should also try to offer
* that same benefit by building and offering a 64-bit version.
* Meteor no longer supports Windows 32-bit.
*
* To be (more but far from completely) precise, the ABI for os.*
* architectures includes a CPU type, a mode in which the code will be
@@ -131,7 +131,6 @@ export const VALID_ARCHITECTURES: Record<string, boolean> = {
"os.osx.x86_64": true,
"os.linux.x86_64": true,
"os.windows.x86_64": true,
"os.windows.x86_32": true,
};
// Returns the fully qualified arch of this host -- something like
@@ -170,12 +169,8 @@ export function host() {
} else {
throw new Error(`Unsupported architecture: ${machine}`);
}
} else if (platform === "win32") {
if (process.arch === "x64") {
_host = "os.windows.x86_64";
} else {
_host = "os.windows.x86_32";
}
} else if (platform === "win32" && process.arch === "x64") {
_host = "os.windows.x86_64";
} else {
throw new Error(`Unsupported operating system: ${platform}`);
}