Commit Graph

7159 Commits

Author SHA1 Message Date
Ben Newman
bb564dd93f Address my own (minor) review feedback. 2019-02-28 14:55:38 -05:00
zodern
95a1f54cce Skip regenerating main bundle when only a dynamic file changed. 2019-02-28 14:55:38 -05:00
zodern
7b2adcb9da Cache stringified prelinked output for dynamic files. 2019-02-28 14:55:38 -05:00
Ben Newman
eda0146266 Merge pull request #10454 from zodern/write-performance 2019-02-28 14:52:05 -05:00
Ben Newman
7c7dea58a7 Double-check isDirectory before calling copyNpmPackageWithSymlinkedNodeModules. 2019-02-28 14:47:44 -05:00
Ben Newman
61ee90ef2d Begin garbage directory names with a '.' character. 2019-02-28 14:34:37 -05:00
Ben Newman
01f515e6b2 Inconsequential style tweaks. 2019-02-28 14:02:59 -05:00
zodern
aadbbfbd2b Clean up code. 2019-02-28 14:02:57 -05:00
zodern
c34a61a3f9 Simplify deciding when to not calculate SRI. 2019-02-28 14:02:52 -05:00
zodern
29b6ca6483 Avoid unnecessary work if the file was already written. 2019-02-28 14:02:48 -05:00
zodern
b48715d804 Improve performance of minifying dynamic files.
Avoids converting file contents to and from buffers and strings. The
conversion had been done for dynamic files before minifying them, and all
files after they were minified.
2019-02-28 14:02:41 -05:00
zodern
79d643574a Skip calculating SRI for assets from the public/ folder.
Saves on average ~2ms per file in one app, which adds up when there are
hundreds. SRI is currently only supported for js and css files, and Meteor
only uses it for the main bundles.
2019-02-28 14:02:27 -05:00
Ben Newman
24e8d1d6f9 Merge pull request #10452 from zodern/cache-assets
Use optimistic functions with assets
2019-02-27 11:07:36 -05:00
Ben Newman
743bfb6f43 Update RegExp for detecting non-existent npm packages.
Should fix failures like https://circleci.com/gh/meteor/meteor/31259.
2019-02-26 20:49:01 -05:00
Ben Newman
83ec5e9ff8 Update meteor-babel to version 7.3.4. 2019-02-26 19:09:43 -05:00
zodern
f11b905185 Use optimistic functions with assets 2019-02-13 11:13:00 -06:00
Ben Newman
0f4802883a Attempt to fix tests by reverting puppeteer from 1.12.1 to 1.6.2.
Tests have started failing for reasons that may be related to puppeteer's
Meteor process management: https://circleci.com/gh/meteor/meteor/31035

Since I can't identify any other possible causes, using the same version
of puppeteer that other tests use (e.g. modules, dynamic-import) seems
like a reasonable first step.

Also updated puppeteer in tests/apps/app-config/package-lock.json to
version 1.6.2 (was 1.3.0), in an attempt to fix some unhandled promise
rejection warnings: https://circleci.com/gh/meteor/meteor/31063
2019-02-04 15:46:19 -05:00
Ben Newman
a96241911a Address review feedback from @glasser. 2019-02-04 14:22:29 -05:00
Ben Newman
2486743aab Expose Meteor.gitRevision for even easier access. 2019-02-04 13:21:06 -05:00
Ben Newman
ccab56380a Add a self-test of gitRevision extraction. 2019-02-04 12:06:45 -05:00
Ben Newman
312d06a90a Add gitRevision property to star.json and __meteor_runtime_config__.
This information is useful when you need a unique identifier for the
current version of the application (and you're using Git).

If the current Git HEAD revision can't be found for any reason, the
gitRevision property simply will not appear in star.json or
__meteor_runtime_config__.
2019-02-04 11:51:38 -05:00
Ben Newman
419ff7ce92 Merge pull request #10399 from zodern/windows-build-performance
Windows build performance
2019-01-31 12:02:41 -05:00
zodern
ead0a6de1f Fix indentation 2019-01-17 16:12:15 -06:00
zodern
31dfb0cc06 Remove timeout for starting delayed build 2019-01-17 16:09:21 -06:00
zodern
f9d17aaf0f Fix delaying render 2019-01-16 22:17:28 -06:00
zodern
285e1b50c3 Clean up code 2019-01-16 22:16:51 -06:00
zodern
65bc2b0100 Fix reusing symlinks from initial build 2019-01-16 20:21:00 -06:00
Ben Newman
a89b34c4c2 Remove hash of minimum modern browser versions from client hash.
This partially reverts commit 99b79dc00f,
which was added as part of PR #10055 in an effort to trigger hot reloads
on the client when/if the definition of a "modern" browser happened to
change, due to server code calling setMinimumBrowserVersions. Although
changes in the minimum modern browser versions are pretty rare, it seemed
important to incorporate this information into the client hash, because
code sent to the client tends to be dramatically different depending on
whether the client is considered modern.

However, this change was made without updating the corresponding version
calculations in CordovaBuilder#appendVersion in tools/cordova/builder.js,
so the versions in program.json for Cordova apps disagreed with the
versions served in manifest.json by the web server, leading to the
problems described by @lorensr in this cordova-plugin-meteor-webapp issue:
https://github.com/meteor/cordova-plugin-meteor-webapp/issues/69

It would be nice to include the minimum versions hash in program.json for
Cordova builds, but unfortunately these versions are not known at build
time, because they are determined by calls to setMinimumBrowserVersions
during server startup. In other words, if we wanted to access that
information during Cordova builds, we would have to start the web server
and run all server-side application initialization code just to find out
if setMinimumBrowserVersions was called anywhere.

In the future, we could consider including the minimum versions hash in
manifest.json, so cordova-plugin-meteor-webapp could compare the current
version to the new version whenever it fetches manifest.json. However, I
think simply removing the minimum versions hash from the client version
calculation is a fine solution in the meantime. If a developer needs to
trigger a hot reload because they changed their minimum modern versions,
they should just be sure to change their client code at the same time.
Any change that would normally trigger a client reload will work.
2019-01-14 20:41:16 -05:00
Ben Newman
5e26ebb6a9 Update cordova-{android,ios} to latest versions.
This version of cordova-android includes the PR that previously required
us to fork the package: https://github.com/apache/cordova-android/pull/417

The cordova-ios update is just 4.5.4 => 4.5.5, so hopefully entirely
backwards compatible. :crossed-fingers:
2019-01-14 15:58:10 -05:00
Ben Newman
cdb5854662 Merge branch 'devel' into release-1.8.1 2019-01-14 10:42:51 -05:00
Ben Newman
20da99c219 Do not treat client and server directories specially in packages. (#10414)
Fixes #10393.

Bumping compiler.BUILT_BY and LINKER_CACHE_SALT because
PR #10414 changes the behavior of the build system in a subtle way that
does not automatically trigger recompilation.
2019-01-11 16:52:23 -05:00
Ben Newman
f4485fe807 Use build.json to opt out of incompatible Xcode 10 build system.
https://github.com/apache/cordova-ios/issues/407
2019-01-11 12:14:51 -05:00
Ben Newman
991ff6d620 Merge branch 'devel' into release-1.8.1 2019-01-10 11:32:02 -05:00
Ben Newman
dea96ecac6 Fix #10409 by ignoring self-referential browser aliases in package.json. 2019-01-10 11:31:49 -05:00
Ben Newman
e25415927f Merge branch 'devel' into release-1.8.1 2019-01-06 19:10:45 -05:00
Ben Newman
fb2146cb3b Stop excluding test modules when meteor.testModule found in package.json. (#10402)
New Meteor apps have the following meteor.testModule in their package.json
files by default

  "meteor": {
    "testModule": "tests/main.js"
  }

When meteor.testModule is defined, it determines the test entry point when
running the `meteor test` command, ignoring legacy file naming conventions
like *.tests.js or *.app-tests.js.

The package-source.js code changed by this commit was incorrect because it
ignored those specially-named test files even when running tests, which
was a problem if the meteor.testModule tried to import them explicitly,
because they would not be properly compiled.

If you're using meteor.testModule, the distinction between `meteor test`
and `meteor test --full-app` matters a bit less, since the test entry
point will be the same for both modes, though you can still check
Meteor.isTest and Meteor.isAppTest at runtime to control test behavior.
2019-01-06 15:02:48 -05:00
Ben Newman
5d88d9a1a4 Improve stack traces for self-test failures. 2019-01-05 16:54:38 -05:00
Ben Newman
aaeb2a7c2c Pass --enableFreeMonitoring off to Mongo 4 shell, except on Linux. 2019-01-05 16:27:20 -05:00
Ben Newman
c7441e68c6 Ensure consistent LANG-related environment variables in findMongoPids.
For some reason, without all three of these environment variables set
(LANG, LC_ALL, and LANGUAGE), the STDOUT returned from the child process
in findMongoPids contained ?? in place of non-ASCII unicode characters,
which was causing the self-test of Mongo shell in a unicode application
directory to fail.

This implementation defaults all three environment variables to
process.env.LANG if it was defined, or "en_US.UTF-8" otherwise.
2019-01-05 15:05:34 -05:00
Ben Newman
bcf6bf2cfc Wait until test app is running before starting Mongo shell. 2019-01-05 15:04:30 -05:00
Ben Newman
61b2ac3878 Revert "Use --enableFreeMonitoring off instead of --quiet for Mongo shell."
This reverts commit 7055780697.

While this flag works as expected on MacOS, it appears not to be supported
on Linux, even using MongoDB 4.0.5 (the latest version):
https://jira.mongodb.org/browse/SERVER-38862
2019-01-05 13:17:33 -05:00
Ben Newman
7055780697 Use --enableFreeMonitoring off instead of --quiet for Mongo shell.
Previously: 7f7a987251

cc @klaussner @mitar
2019-01-05 12:45:24 -05:00
Ben Newman
6c87f68116 Fix mongo tests by adding a package.json to standard-app. 2019-01-05 12:45:22 -05:00
zodern
ca3d3911a9 Clean up watch code 2019-01-05 07:55:02 -06:00
zodern
a985bf4b22 Throttle rendering progress in updateProgress 2019-01-04 22:55:52 -06:00
zodern
70772dcae7 Reduce duplicate fs calls in watcher
Most directories are in the WatchSet at least twice, and the directory is read and each item is stat each time. In addition, when the watcher is not created by isUpToDate, each item in watchSet.directories and watchSet.files is checked twice.

With these changes, isUpToDate finishes in less than 1/2 the time on Windows, and creating a watcher takes around 1/4 the time.
2019-01-04 22:47:08 -06:00
zodern
5c86db22a7 Fix files.readdir and files.realpath not being cached
enableCache was called before readdir and realpath was added to "files".
2019-01-04 18:40:39 -06:00
Ben Newman
4859f426dd Adjust timeouts to help Mongo self-tests pass reliably. 2019-01-04 14:13:25 -05:00
zodern
e04c87adfe Clean up old symlinks 2019-01-01 12:08:35 -06:00
zodern
21f976d6f0 Fix delay between server starting and showing "=> Server restarted"
Creating the watcher can take up to 12+ seconds in small - medium apps, and uses sync fs calls.
The server would start right away, but the tool process wouldn't know about it until the watcher finished setting up. Also, the proxy doesn't forward requests until "=> Server restarted" is shown.
A new async option is added to Watcher which prevents it from blocking the event loop too long.
Also, the watcher and legacy bundle are only created after the server has started, or 3 seconds has passed.
2019-01-01 11:47:20 -06:00