diff --git a/packages/caching-compiler/caching-compiler.js b/packages/caching-compiler/caching-compiler.js index ab1cea5cae..e29e1362e5 100644 --- a/packages/caching-compiler/caching-compiler.js +++ b/packages/caching-compiler/caching-compiler.js @@ -25,6 +25,10 @@ CachingCompilerBase = class CachingCompilerBase { // For testing. this._callCount = 0; + + // Callbacks that will be called after the linker is done processing + // files, after all lazy compilation has finished. + this._afterLinkCallbacks = []; } // Your subclass must override this method to define the key used to identify @@ -113,6 +117,14 @@ CachingCompilerBase = class CachingCompilerBase { }, 0); } + // Called by the compiler plugins system after all linking and lazy + // compilation has finished. + afterLink() { + this._afterLinkCallbacks.splice(0).forEach(callback => { + callback(); + }); + } + // Borrowed from another MIT-licensed project that benjamn wrote: // https://github.com/reactjs/commoner/blob/235d54a12c/lib/util.js#L136-L168 _deepHash(val) { @@ -327,17 +339,19 @@ CachingCompiler = class CachingCompiler extends CachingCompilerBase { }); if (this._cacheDebugEnabled) { - cacheMisses.sort(); + this._afterLinkCallbacks.push(() => { + cacheMisses.sort(); - this._cacheDebug( - `Ran (#${ - ++this._callCount - }) on: ${ - JSON.stringify(cacheMisses) - } ${ - JSON.stringify(Object.keys(arches).sort()) - }` - ); + this._cacheDebug( + `Ran (#${ + ++this._callCount + }) on: ${ + JSON.stringify(cacheMisses) + } ${ + JSON.stringify(Object.keys(arches).sort()) + }` + ); + }); } } diff --git a/packages/caching-compiler/multi-file-caching-compiler.js b/packages/caching-compiler/multi-file-caching-compiler.js index 4add6b81a3..dcd75ac2e7 100644 --- a/packages/caching-compiler/multi-file-caching-compiler.js +++ b/packages/caching-compiler/multi-file-caching-compiler.js @@ -172,17 +172,19 @@ extends CachingCompilerBase { }); if (this._cacheDebugEnabled) { - cacheMisses.sort(); + this._afterLinkCallbacks.push(() => { + cacheMisses.sort(); - this._cacheDebug( - `Ran (#${ - ++this._callCount - }) on: ${ - JSON.stringify(cacheMisses) - } ${ - JSON.stringify(Object.keys(arches).sort()) - }` - ); + this._cacheDebug( + `Ran (#${ + ++this._callCount + }) on: ${ + JSON.stringify(cacheMisses) + } ${ + JSON.stringify(Object.keys(arches).sort()) + }` + ); + }); } } diff --git a/packages/ddp-client/client/client_convenience.js b/packages/ddp-client/client/client_convenience.js index f243fadec0..e4a7b8319c 100644 --- a/packages/ddp-client/client/client_convenience.js +++ b/packages/ddp-client/client/client_convenience.js @@ -40,7 +40,7 @@ function onDDPVersionNegotiationFailure(description) { return [true, { DDPVersionNegotiationFailures: failures }]; }); retry.retryLater(failures, () => { - Package.reload.Reload._reload(); + Package.reload.Reload._reload({ immediateMigration: true }); }); } } diff --git a/packages/ddp-client/common/livedata_connection.js b/packages/ddp-client/common/livedata_connection.js index e10b2a01d9..9ec5eee42e 100644 --- a/packages/ddp-client/common/livedata_connection.js +++ b/packages/ddp-client/common/livedata_connection.js @@ -246,10 +246,8 @@ export class Connection { ! options.reloadWithOutstanding) { Package.reload.Reload._onMigrate(retry => { if (! self._readyToMigrate()) { - if (self._retryMigrate) - throw new Error('Two migrations in progress?'); self._retryMigrate = retry; - return false; + return [false]; } else { return [true]; } diff --git a/packages/modules-runtime/.npm/package/npm-shrinkwrap.json b/packages/modules-runtime/.npm/package/npm-shrinkwrap.json index ed8734d530..bbc79174ba 100644 --- a/packages/modules-runtime/.npm/package/npm-shrinkwrap.json +++ b/packages/modules-runtime/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "install": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.12.0.tgz", - "integrity": "sha512-KOKFSWPANzP4XIbBnaRqIiMaCZmPxJEE0HbRrZ8MEt5Z9g4TdXA3LRAHBhb6UH7d8Ig9aSWwrD0Dy2Y3rPKs9w==" + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/install/-/install-0.12.2.tgz", + "integrity": "sha512-+7thTb4Rpvs9mnlhHKGZFJbGOO6kyMgy+gg0sgM5vFzIFK0wrCYXqdlaM71Bi289DTuPHf61puMFsaZBcwDIrg==" } } } diff --git a/packages/modules-runtime/package.js b/packages/modules-runtime/package.js index 25d89e72f2..519249240a 100644 --- a/packages/modules-runtime/package.js +++ b/packages/modules-runtime/package.js @@ -1,13 +1,13 @@ Package.describe({ name: "modules-runtime", - version: "0.10.2", + version: "0.10.3", summary: "CommonJS module system", git: "https://github.com/benjamn/install", documentation: "README.md" }); Npm.depends({ - install: "0.12.0" + install: "0.12.2" }); Package.onUse(function(api) { diff --git a/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json b/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json index 87857d7090..1d8d07771c 100644 --- a/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json +++ b/packages/non-core/coffeescript-compiler/.npm/package/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "coffeescript": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.3.1.tgz", - "integrity": "sha512-DNJmSPMyiz+OjWYyuDXNBcFutDjP2TS2owsZ8YvT65hA8c5IdHWIBqdA3Yf/XHoK23d/f1HqLjQbEJJZJoeV1w==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.3.2.tgz", + "integrity": "sha512-YObiFDoukx7qPBi/K0kUKyntEZDfBQiqs/DbrR1xzASKOBjGT7auD85/DiPeRr9k++lRj7l3uA9TNMLfyfcD/Q==" }, "source-map": { "version": "0.5.7", diff --git a/packages/non-core/coffeescript-compiler/package.js b/packages/non-core/coffeescript-compiler/package.js index f05cb8e6f1..0850dd130b 100644 --- a/packages/non-core/coffeescript-compiler/package.js +++ b/packages/non-core/coffeescript-compiler/package.js @@ -13,11 +13,11 @@ Package.describe({ summary: 'Compiler for CoffeeScript code, supporting the coffeescript package', // This version of NPM `coffeescript` module, with _1, _2 etc. // If you change this, make sure to also update ../coffeescript/package.js to match. - version: '2.3.1_2' + version: '2.3.2_1' }); Npm.depends({ - 'coffeescript': '2.3.1', + 'coffeescript': '2.3.2', 'source-map': '0.5.7' }); diff --git a/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json b/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json index 1f1254a557..a59317fc81 100644 --- a/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json +++ b/packages/non-core/coffeescript/.npm/plugin/compile-coffeescript/npm-shrinkwrap.json @@ -2,9 +2,9 @@ "lockfileVersion": 1, "dependencies": { "@babel/runtime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", - "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==" }, "regenerator-runtime": { "version": "0.12.1", diff --git a/packages/non-core/coffeescript/compile-coffeescript.js b/packages/non-core/coffeescript/compile-coffeescript.js index 7f91bb552d..3792d61d71 100644 --- a/packages/non-core/coffeescript/compile-coffeescript.js +++ b/packages/non-core/coffeescript/compile-coffeescript.js @@ -28,6 +28,20 @@ class CachedCoffeeScriptCompiler extends CachingCompiler { return super.setDiskCacheDirectory(cacheDir); } + compileOneFileLater(inputFile, getResult) { + inputFile.addJavaScript({ + path: this.coffeeScriptCompiler.outputFilePath(inputFile), + sourcePath: inputFile.getPathInPackage(), + bare: inputFile.getFileOptions().bare + }, async () => { + const result = await getResult(); + return result && { + data: result.source, + sourceMap: result.sourceMap, + }; + }); + } + compileOneFile(inputFile) { return this.coffeeScriptCompiler.compileOneFile(inputFile); } diff --git a/packages/non-core/coffeescript/package.js b/packages/non-core/coffeescript/package.js index c873977ee7..1fe5e6d492 100644 --- a/packages/non-core/coffeescript/package.js +++ b/packages/non-core/coffeescript/package.js @@ -6,12 +6,12 @@ Package.describe({ // so bumping the version of this package will be how they get newer versions // of `coffeescript-compiler`. If you change this, make sure to also update // ../coffeescript-compiler/package.js to match. - version: '2.3.1_2' + version: '2.3.2_1' }); Package.registerBuildPlugin({ name: 'compile-coffeescript', - use: ['caching-compiler@1.1.12', 'ecmascript@0.11.1', 'coffeescript-compiler@2.3.1_2'], + use: ['caching-compiler@1.1.12', 'ecmascript@0.11.1', 'coffeescript-compiler@2.3.2_1'], sources: ['compile-coffeescript.js'], npmDependencies: { // A breaking change was introduced in @babel/runtime@7.0.0-beta.56 @@ -22,7 +22,7 @@ Package.registerBuildPlugin({ // rather than delegating to the one installed in the application's // node_modules directory, so the coffeescript package can work in // Meteor 1.7.1 apps as well as 1.7.0.x and earlier. - '@babel/runtime': '7.0.0' + '@babel/runtime': '7.1.2' } }); diff --git a/packages/oauth/end_of_popup_response.js b/packages/oauth/end_of_popup_response.js index e142f9c30d..fd6a1ae20b 100644 --- a/packages/oauth/end_of_popup_response.js +++ b/packages/oauth/end_of_popup_response.js @@ -1,12 +1,14 @@ -(() => { +// NOTE: This file is added to the client as asset and hence ecmascript package has no effect here. +(function() { - const config = JSON.parse(document.getElementById("config").innerHTML); + var config = JSON.parse(document.getElementById("config").innerHTML); if (config.setCredentialToken) { - const { credentialToken, credentialSecret } = config; + var credentialToken = config.credentialToken; + var credentialSecret = config.credentialSecret; if (config.isCordova) { - const credentialString = JSON.stringify({ + var credentialString = JSON.stringify({ credentialToken, credentialSecret, }); @@ -30,7 +32,7 @@ if (! config.isCordova) { document.getElementById("completedText").style.display = "block"; - document.getElementById("loginCompleted").onclick = () => window.close(); + document.getElementById("loginCompleted").onclick = function() { window.close() }; window.close(); } })(); diff --git a/packages/oauth/end_of_redirect_response.js b/packages/oauth/end_of_redirect_response.js index 4c88aa356f..051159e0a2 100644 --- a/packages/oauth/end_of_redirect_response.js +++ b/packages/oauth/end_of_redirect_response.js @@ -1,6 +1,7 @@ -(() => { +// NOTE: This file is added to the client as asset and hence ecmascript package has no effect here. +(function() { - const config = JSON.parse(document.getElementById("config").innerHTML); + var config = JSON.parse(document.getElementById("config").innerHTML); if (config.setCredentialToken) { sessionStorage[config.storagePrefix + config.credentialToken] = diff --git a/packages/oauth/oauth_common.js b/packages/oauth/oauth_common.js index 68fe3319fe..5cd09c462c 100644 --- a/packages/oauth/oauth_common.js +++ b/packages/oauth/oauth_common.js @@ -1,5 +1,3 @@ -import url from 'url'; - OAuth._storageTokenPrefix = "Meteor.oauth.credentialSecret-"; OAuth._redirectUri = (serviceName, config, params, absoluteUrlOptions) => { @@ -29,6 +27,7 @@ OAuth._redirectUri = (serviceName, config, params, absoluteUrlOptions) => { } if (Meteor.isServer && isCordova) { + const url = Npm.require('url'); let rootUrl = process.env.MOBILE_ROOT_URL || __meteor_runtime_config__.ROOT_URL; @@ -46,7 +45,7 @@ OAuth._redirectUri = (serviceName, config, params, absoluteUrlOptions) => { rootUrl = url.format(parsedRootUrl); } - absoluteUrlOptions = { + absoluteUrlOptions = { ...absoluteUrlOptions, // For Cordova clients, redirect to the special Cordova root url // (likely a local IP in development mode). diff --git a/packages/oauth/oauth_server.js b/packages/oauth/oauth_server.js index 2be4dcad89..bf76687247 100644 --- a/packages/oauth/oauth_server.js +++ b/packages/oauth/oauth_server.js @@ -435,7 +435,7 @@ OAuth.sealSecret = plaintext => { return OAuthEncryption.seal(plaintext); else return plaintext; -} +}; // Unencrypt a service data field, if the "oauth-encryption" // package is loaded and the field is encrypted. diff --git a/packages/oauth/package.js b/packages/oauth/package.js index d740e13a21..524b0aeed9 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: "1.2.4" + version: "1.2.6" }); Package.onUse(api => { diff --git a/packages/oauth1/oauth1_server.js b/packages/oauth1/oauth1_server.js index 5b92dfd954..eb54458825 100644 --- a/packages/oauth1/oauth1_server.js +++ b/packages/oauth1/oauth1_server.js @@ -1,7 +1,7 @@ import url from 'url'; import { OAuth1Binding } from './oauth1_binding'; -OAuth._queryParamsWithAuthTokenUrl = (authUrl, oauthBinding, params = {}, whitelistedQueryParams) => { +OAuth._queryParamsWithAuthTokenUrl = (authUrl, oauthBinding, params = {}, whitelistedQueryParams = []) => { const redirectUrlObj = url.parse(authUrl, true); Object.assign( diff --git a/packages/oauth1/package.js b/packages/oauth1/package.js index 37f8ddc6f8..11dc87fc7d 100644 --- a/packages/oauth1/package.js +++ b/packages/oauth1/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth1-based login services", - version: "1.2.1", + version: "1.2.2", }); Package.onUse(api => { diff --git a/packages/reactive-dict/reactive-dict.js b/packages/reactive-dict/reactive-dict.js index a980dced9d..1e31964315 100644 --- a/packages/reactive-dict/reactive-dict.js +++ b/packages/reactive-dict/reactive-dict.js @@ -21,6 +21,14 @@ function changed(v) { } // XXX COMPAT WITH 0.9.1 : accept migrationData instead of dictName +/** + * @class + * @instanceName ReactiveDict + * @summary Constructor for a ReactiveDict, which represents a reactive dictionary of key/value pairs. + * @locus Client + * @param {String} [name] Optional. When a name is passed, preserves contents across Hot Code Pushes + * @param {Object} [initialValue] Optional. The default values for the dictionary + */ export class ReactiveDict { constructor(dictName, dictData) { // this.keys: key -> value @@ -64,6 +72,15 @@ export class ReactiveDict { // set() began as a key/value method, but we are now overloading it // to take an object of key/value pairs, similar to backbone // http://backbonejs.org/#Model-set + /** + * @summary Set a value for a key in the ReactiveDict. Notify any listeners + * that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + * @param {String} key The key to set, eg, `selectedItem` + * @param {EJSONable | undefined} value The new value for `key` + */ set(keyOrObject, value) { if ((typeof keyOrObject === 'object') && (value === undefined)) { // Called as `dict.set({...})` @@ -99,6 +116,13 @@ export class ReactiveDict { } } + /** + * @summary Set a value for a key if it hasn't been set before. + * Otherwise works exactly the same as [`ReactiveDict.set`](#ReactiveDict-set). + * @locus Client + * @param {String} key The key to set, eg, `selectedItem` + * @param {EJSONable | undefined} value The new value for `key` + */ setDefault(keyOrObject, value) { if ((typeof keyOrObject === 'object') && (value === undefined)) { // Called as `dict.setDefault({...})` @@ -114,12 +138,32 @@ export class ReactiveDict { } } + /** + * @summary Get the value assiciated with a key. If inside a [reactive + * computation](#reactivity), invalidate the computation the next time the + * value associated with this key is changed by + * [`ReactiveDict.set`](#ReactiveDict-set). + * This returns a clone of the value, so if it's an object or an array, + * mutating the returned value has no effect on the value stored in the + * ReactiveDict. + * @locus Client + * @param {String} key The key of the element to return + */ get(key) { this._ensureKey(key); this.keyDeps[key].depend(); return parse(this.keys[key]); } + /** + * @summary Test if the stored entry for a key is equal to a value. If inside a + * [reactive computation](#reactivity), invalidate the computation the next + * time the variable changes to or from the value. + * @locus Client + * @param {String} key The name of the session variable to test + * @param {String | Number | Boolean | null | undefined} value The value to + * test against + */ equals(key, value) { // Mongo.ObjectID is in the 'mongo' package let ObjectID = null; @@ -172,6 +216,16 @@ export class ReactiveDict { return EJSON.equals(oldValue, value); } + /** + * @summary Get all key-value pairs as a plain object. If inside a [reactive + * computation](#reactivity), invalidate the computation the next time the + * value associated with any key is changed by + * [`ReactiveDict.set`](#ReactiveDict-set). + * This returns a clone of each value, so if it's an object or an array, + * mutating the returned value has no effect on the value stored in the + * ReactiveDict. + * @locus Client + */ all() { this.allDeps.depend(); let ret = {}; @@ -181,6 +235,13 @@ export class ReactiveDict { return ret; } + /** + * @summary remove all key-value pairs from the ReactiveDict. Notify any + * listeners that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + */ clear() { const oldKeys = this.keys; this.keys = {}; @@ -196,6 +257,14 @@ export class ReactiveDict { }); } + /** + * @summary remove a key-value pair from the ReactiveDict. Notify any listeners + * that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + * @param {String} key The key to delete, eg, `selectedItem` + */ delete(key) { let didRemove = false; @@ -213,6 +282,14 @@ export class ReactiveDict { return didRemove; } + /** + * @summary Clear all values from the reactiveDict and prevent it from being + * migrated on a Hot Code Pushes. Notify any listeners + * that the value has changed (eg: redraw templates, and rerun any + * [`Tracker.autorun`](#tracker_autorun) computations, that called + * [`ReactiveDict.get`](#ReactiveDict_get) on this `key`.) + * @locus Client + */ destroy() { this.clear(); if (this.name && hasOwn.call(ReactiveDict._dictsToMigrate, this.name)) { diff --git a/tools/isobuild/bundler.js b/tools/isobuild/bundler.js index a473bd5c9d..b6eb36b360 100644 --- a/tools/isobuild/bundler.js +++ b/tools/isobuild/bundler.js @@ -1286,6 +1286,19 @@ class Target { ), "utf8") ); }); + + // Call any plugin.afterLink callbacks defined by compiler plugins, + // now that all compilation (including lazy compilation) is finished. + sourceBatches.forEach(batch => { + batch.resourceSlots.forEach(slot => { + const plugin = + slot.sourceProcessor && + slot.sourceProcessor.userPlugin; + if (plugin && typeof plugin.afterLink === "function") { + plugin.afterLink(); + } + }); + }); } // Minify the JS in this target diff --git a/tools/project-context.js b/tools/project-context.js index c3a1195055..7806436baf 100644 --- a/tools/project-context.js +++ b/tools/project-context.js @@ -28,6 +28,10 @@ import { import Resolver from "./isobuild/resolver.js"; +const CAN_DELAY_LEGACY_BUILD = ! JSON.parse( + process.env.METEOR_DISALLOW_DELAYED_LEGACY_BUILD || "false" +); + // The ProjectContext represents all the context associated with an app: // metadata files in the `.meteor` directory, the choice of package versions // used by it, etc. Any time you want to work with an app, create a @@ -1310,7 +1314,8 @@ _.extend(exports.PlatformList.prototype, { }, canDelayBuildingArch(arch) { - return arch === "web.browser.legacy"; + return CAN_DELAY_LEGACY_BUILD && + arch === "web.browser.legacy"; } }); diff --git a/tools/tests/apps/dynamic-import/.meteor/packages b/tools/tests/apps/dynamic-import/.meteor/packages index 78f569cadd..d913ee4980 100644 --- a/tools/tests/apps/dynamic-import/.meteor/packages +++ b/tools/tests/apps/dynamic-import/.meteor/packages @@ -6,21 +6,21 @@ meteor-base@1.4.0 # Packages every Meteor app needs to have mobile-experience@1.0.5 # Packages for a great mobile UX -mongo@1.5.0 # The database Meteor supports right now +mongo@1.6.0 # The database Meteor supports right now blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views reactive-var@1.0.11 # Reactive variable for tracker jquery@1.11.10 # Helpful client-side library tracker@1.2.0 # Meteor's client-side reactive programming library -standard-minifier-css@1.4.1 # CSS minifier run for production mode -standard-minifier-js@2.3.4 # JS minifier run for production mode +standard-minifier-css@1.5.0 # CSS minifier run for production mode +standard-minifier-js@2.4.0 # JS minifier run for production mode es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers. -ecmascript@0.11.1 # Enable ECMAScript2015+ syntax in app code -shell-server@0.3.1 # Server-side component of the `meteor shell` command +ecmascript@0.12.0 # Enable ECMAScript2015+ syntax in app code +shell-server@0.4.0 # Server-side component of the `meteor shell` command autopublish@1.0.7 # Publish all data to the clients (for prototyping) insecure@1.0.7 # Allow all DB writes from clients (for prototyping) -dynamic-import@0.4.0 +dynamic-import@0.5.0 lazy-test-package helper-package user:colon-name diff --git a/tools/tests/apps/dynamic-import/.meteor/release b/tools/tests/apps/dynamic-import/.meteor/release index f866f52c62..e76dedee10 100644 --- a/tools/tests/apps/dynamic-import/.meteor/release +++ b/tools/tests/apps/dynamic-import/.meteor/release @@ -1 +1 @@ -METEOR@1.7.0.4 +METEOR@1.8 diff --git a/tools/tests/apps/dynamic-import/.meteor/versions b/tools/tests/apps/dynamic-import/.meteor/versions index fd95ea07ad..c34f9857dc 100644 --- a/tools/tests/apps/dynamic-import/.meteor/versions +++ b/tools/tests/apps/dynamic-import/.meteor/versions @@ -1,76 +1,76 @@ allow-deny@1.1.0 autopublish@1.0.7 -autoupdate@1.4.0 -babel-compiler@7.1.1 -babel-runtime@1.2.4 +autoupdate@1.5.0 +babel-compiler@7.2.1 +babel-runtime@1.3.0 base64@1.0.11 -binary-heap@1.0.10 -blaze@2.3.2 +binary-heap@1.0.11 +blaze@2.3.3 blaze-html-templates@1.1.2 blaze-tools@1.0.10 -boilerplate-generator@1.5.0 -caching-compiler@1.1.12 -caching-html-compiler@1.1.2 +boilerplate-generator@1.6.0 +caching-compiler@1.2.0 +caching-html-compiler@1.1.3 callback-hook@1.1.0 check@1.3.1 -coffeescript@2.2.1_1 -coffeescript-compiler@2.2.1_1 +coffeescript@2.3.1_2 +coffeescript-compiler@2.3.1_2 ddp@1.4.0 -ddp-client@2.3.2 +ddp-client@2.3.3 ddp-common@1.4.0 ddp-server@2.2.0 deps@1.0.12 diff-sequence@1.1.0 -dispatch:mocha-browser@0.0.4 -dynamic-import@0.4.0 -ecmascript@0.11.1 +dynamic-import@0.5.0 +ecmascript@0.12.1 ecmascript-runtime@0.7.0 -ecmascript-runtime-client@0.7.1 -ecmascript-runtime-server@0.7.0 +ecmascript-runtime-client@0.8.0 +ecmascript-runtime-server@0.7.1 ejson@1.1.0 es5-shim@4.8.0 +fetch@0.1.0 geojson-utils@1.0.10 helper-package@0.0.1 hot-code-push@1.0.4 html-tools@1.0.11 htmljs@1.0.11 -http@1.4.1 id-map@1.1.0 insecure@1.0.7 +inter-process-messaging@0.1.0 jquery@1.11.11 launch-screen@1.1.1 lazy-test-package@0.0.1 livedata@1.0.18 logging@1.1.20 -meteor@1.9.0 +meteor@1.9.2 meteor-base@1.4.0 -minifier-css@1.3.1 -minifier-js@2.3.5 -minimongo@1.4.4 +minifier-css@1.4.0 +minifier-js@2.4.0 +minimongo@1.4.5 mobile-experience@1.0.5 mobile-status-bar@1.0.14 -modern-browsers@0.1.1 -modules@0.12.2 -modules-runtime@0.10.0 -mongo@1.5.0 +modern-browsers@0.1.2 +modules@0.13.0 +modules-runtime@0.10.2 +mongo@1.6.0 +mongo-decimal@0.1.0 mongo-dev-server@1.1.0 mongo-id@1.0.7 -npm-mongo@3.0.7 +npm-mongo@3.1.1 observe-sequence@1.0.16 ordered-dict@1.1.0 -practicalmeteor:mocha-core@1.0.1 promise@0.11.1 random@1.1.0 reactive-var@1.0.11 reload@1.2.0 retry@1.1.0 -routepolicy@1.0.13 -shell-server@0.3.1 -socket-stream-client@0.2.1 +routepolicy@1.1.0 +shell-server@0.4.0 +socket-stream-client@0.2.2 spacebars@1.0.15 spacebars-compiler@1.1.3 -standard-minifier-css@1.4.1 -standard-minifier-js@2.3.4 +standard-minifier-css@1.5.1 +standard-minifier-js@2.4.0 templating@1.3.2 templating-compiler@1.3.3 templating-runtime@1.3.2 @@ -78,7 +78,6 @@ templating-tools@1.1.2 tracker@1.2.0 ui@1.0.13 underscore@1.0.10 -url@1.2.0 user:colon-name@0.0.1 -webapp@1.6.0 +webapp@1.7.0 webapp-hashing@1.0.9 diff --git a/tools/tests/apps/dynamic-import/package-lock.json b/tools/tests/apps/dynamic-import/package-lock.json index af7e7423a0..bce0f7b9a9 100644 --- a/tools/tests/apps/dynamic-import/package-lock.json +++ b/tools/tests/apps/dynamic-import/package-lock.json @@ -4,9 +4,9 @@ "lockfileVersion": 1, "dependencies": { "@babel/runtime": { - "version": "7.0.0-beta.56", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.56.tgz", - "integrity": "sha512-vP9XV2VP013UEyZdU9eWClCsm6rQPUYHVNCfmpcv5uKviW7mKmUZq71Y5cr5dYsFKfnGDxSo8h6plUGR60lwHg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==", "requires": { "regenerator-runtime": "^0.12.0" }, diff --git a/tools/tests/apps/dynamic-import/package.json b/tools/tests/apps/dynamic-import/package.json index 5899aa6f77..e9dcc58101 100644 --- a/tools/tests/apps/dynamic-import/package.json +++ b/tools/tests/apps/dynamic-import/package.json @@ -6,7 +6,7 @@ "test": "TEST_BROWSER_DRIVER=puppeteer meteor test --full-app --driver-package meteortesting:mocha" }, "dependencies": { - "@babel/runtime": "^7.0.0-beta.56", + "@babel/runtime": "^7.1.2", "acorn": "^4.0.11", "arson": "^0.2.3", "meteor-node-stubs": "^0.4.1", diff --git a/tools/tests/apps/modules/.meteor/packages b/tools/tests/apps/modules/.meteor/packages index 2212c460f2..896ae88aa3 100644 --- a/tools/tests/apps/modules/.meteor/packages +++ b/tools/tests/apps/modules/.meteor/packages @@ -6,23 +6,23 @@ meteor-base@1.4.0 # Packages every Meteor app needs to have mobile-experience@1.0.5 # Packages for a great mobile UX -mongo@1.5.1 # The database Meteor supports right now +mongo@1.6.0 # The database Meteor supports right now blaze-html-templates # Compile .html files into Meteor Blaze views -session@1.1.7 # Client-side reactive dictionary for your app +session@1.1.8 # Client-side reactive dictionary for your app jquery@1.11.10 # Helpful client-side library tracker@1.2.0 # Meteor's client-side reactive programming library es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers. -ecmascript@0.12.0-beta171.28 # Enable ECMAScript2015+ syntax in app code +ecmascript@0.12.0 # Enable ECMAScript2015+ syntax in app code coffeescript modules-test-package -standard-minifier-css@1.4.1 -standard-minifier-js@2.4.0-beta171.28 +standard-minifier-css@1.5.0 +standard-minifier-js@2.4.0 client-only-ecmascript modules-test-plugin -shell-server@0.3.1 -dynamic-import@0.5.0-beta171.28 +shell-server@0.4.0 +dynamic-import@0.5.0 underscore@1.0.10 import-local-json-module akryum:vue-component diff --git a/tools/tests/apps/modules/.meteor/release b/tools/tests/apps/modules/.meteor/release index c1c46bc003..e76dedee10 100644 --- a/tools/tests/apps/modules/.meteor/release +++ b/tools/tests/apps/modules/.meteor/release @@ -1 +1 @@ -METEOR@1.7.1-beta.28 +METEOR@1.8 diff --git a/tools/tests/apps/modules/package-lock.json b/tools/tests/apps/modules/package-lock.json index d0bd213923..465c19b2ab 100644 --- a/tools/tests/apps/modules/package-lock.json +++ b/tools/tests/apps/modules/package-lock.json @@ -135,9 +135,9 @@ } }, "@babel/runtime": { - "version": "7.0.0-beta.56", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.56.tgz", - "integrity": "sha512-vP9XV2VP013UEyZdU9eWClCsm6rQPUYHVNCfmpcv5uKviW7mKmUZq71Y5cr5dYsFKfnGDxSo8h6plUGR60lwHg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.2.tgz", + "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==", "requires": { "regenerator-runtime": "^0.12.0" }, diff --git a/tools/tests/apps/modules/package.json b/tools/tests/apps/modules/package.json index 0517145d2b..82172b7b2e 100644 --- a/tools/tests/apps/modules/package.json +++ b/tools/tests/apps/modules/package.json @@ -7,7 +7,7 @@ "@babel/core": "^7.0.0-beta.56", "@babel/plugin-proposal-do-expressions": "^7.0.0-beta.56", "@babel/plugin-proposal-optional-chaining": "^7.0.0-beta.56", - "@babel/runtime": "^7.0.0-beta.56", + "@babel/runtime": "^7.1.2", "acorn": "file:imports/links/acorn", "aws-sdk": "^2.2.41", "cli-color": "^0.2.3", diff --git a/tools/tests/compiler-plugins.js b/tools/tests/compiler-plugins.js index 2222cd0fab..8e8abb8381 100644 --- a/tools/tests/compiler-plugins.js +++ b/tools/tests/compiler-plugins.js @@ -30,6 +30,11 @@ selftest.define("compiler plugin caching - coffee", () => { // Ask them to print out when they build a file (instead of using it from the // cache) as well as when they load cache from disk. s.set('METEOR_COFFEESCRIPT_CACHE_DEBUG', 't'); + + // Enforcing the order of builds is just too tricky if we let the legacy + // build race with the os.* build. + s.set("METEOR_DISALLOW_DELAYED_LEGACY_BUILD", "true"); + var run = startRun(s); let nextRunOrdinal = 1; @@ -69,6 +74,7 @@ selftest.define("compiler plugin caching - coffee", () => { // App prints this: run.match("Coffeescript X is 2 Y is 1 FromPackage is 4"); + run.match("App running at"); s.write("f2.coffee", "share.Y = 'Y is 3'\n"); @@ -79,6 +85,7 @@ selftest.define("compiler plugin caching - coffee", () => { // Program prints this: run.match("Coffeescript X is 2 Y is 3 FromPackage is 4"); + run.match("Meteor server restarted"); // Force a rebuild of the local package without actually changing the // coffeescript file in it. This should not require us to coffee.compile @@ -90,6 +97,7 @@ selftest.define("compiler plugin caching - coffee", () => { matchRun([], osArch); run.match("Coffeescript X is 2 Y is 3 FromPackage is 4"); + run.match("Meteor server restarted"); // But writing to the actual source file in the local package should // recompile. @@ -100,6 +108,7 @@ selftest.define("compiler plugin caching - coffee", () => { matchRun(["/packages/local-pack/p.coffee"], osArch); run.match("Coffeescript X is 2 Y is 3 FromPackage is 5"); + run.match("Meteor server restarted"); // We never should have loaded cache from disk, since we only made // each compiler once and there were no cache files at this point. @@ -140,6 +149,11 @@ selftest.define("compiler plugin caching - coffee", () => { // Ask them to print out when they build a file (instead of using it from // the cache) as well as when they load cache from disk. s.set(`METEOR_${ packageName.toUpperCase() }_CACHE_DEBUG`, "t"); + + // Enforcing the order of builds is just too tricky if we let the legacy + // build race with the "Client modified - refreshing" messages. + s.set("METEOR_DISALLOW_DELAYED_LEGACY_BUILD", "true"); + var run = startRun(s); const cacheMatch = selftest.markStack((message, arch) => {