Commit Graph

22057 Commits

Author SHA1 Message Date
Ben Newman
e70e1cda79 Bump package versions for 1.8.2-beta.6 release. release/METEOR@1.8.2-beta.6 2019-06-23 15:03:39 -04:00
Ben Newman
6afc82b48d Bump $BUNDLE_VERSION to 8.16.0.9 before rebuilding dev bundle. 2019-06-23 15:03:39 -04:00
Ben Newman
f259d553be Update @wry/context to version 0.4.4. 2019-06-23 15:03:39 -04:00
Ben Newman
168468dce3 Update meteor-babel to latest version (7.4.14). 2019-06-23 14:56:18 -04:00
Ben Newman
a797bf3e67 Bump $BUNDLE_VERSION to 8.16.0.8 before rebuilding dev bundle. 2019-06-23 12:37:46 -04:00
Konstantin
a872401b09 Update dev-bundle-tool-package.js (#10592)
Need to update version "node-gyp" to "5.0.1", due to deprecated packages into 3.7.0
2019-06-23 12:35:54 -04:00
Robert Lowe
f214eba7d9 Allow for METEOR_GIT_COMMIT_HASH in lieu of findGitCommitHash's execFile (#10586) 2019-06-23 11:54:47 -04:00
Ben Newman
ed101ad22b Merge pull request #10585 from meteor/invoke-compileOneJsResource-from-ImportScanner
Support full ECMAScript compilation of modules unexpectedly imported from node_modules.
2019-06-23 11:51:04 -04:00
Ben Newman
13048740c8 Update meteor-babel and reify to latest versions, again. 2019-06-23 11:12:39 -04:00
Ben Newman
5c701daba7 Update meteor-babel to latest version (7.4.12), again. 2019-06-20 17:06:43 -04:00
Ben Newman
16518dac52 Bump $BUNDLE_VERSION to 8.16.0.7 before rebuilding dev bundle. 2019-06-20 13:29:02 -04:00
Ben Newman
67c6d2cdd3 Update meteor-babel and reify to latest versions, again. 2019-06-20 13:28:21 -04:00
Ben Newman
ad47129b60 Bump $BUNDLE_VERSION to 8.16.0.6 before rebuilding dev bundle. 2019-06-20 12:11:29 -04:00
Ben Newman
4c097321ca Update meteor-babel and reify to latest versions, again. 2019-06-20 12:11:29 -04:00
Ben Newman
a4586e4332 Compile import/export syntax in @babel/runtime-related modules.
Case in point: @babel/runtime/helpers/esm/typeof.js uses ECMAScript module
syntax (import, export), but must not be compiled with transforms like
@babel/plugin-transform-typeof-symbol, since it's part of the runtime
library depended upon by that transform.

This logic is an extreme implementation detail for sure, but at least
babel-compiler is the only code that needs to know about this complexity.
2019-06-20 12:11:29 -04:00
Ben Newman
26d4cb33c6 Bump $BUNDLE_VERSION to 8.16.0.5 before rebuilding dev bundle. 2019-06-20 12:11:29 -04:00
Ben Newman
7d3e7ab189 Bump minor versions of babel-compiler, ecmascript, and modules. 2019-06-20 12:11:29 -04:00
Ben Newman
de14b380c5 Update meteor-babel and reify to latest versions. 2019-06-20 12:11:29 -04:00
Ben Newman
88004d4649 Add a basic regression test of issue #10563. 2019-06-20 12:11:29 -04:00
Ben Newman
d21400567f Avoid double-compilation of @babel/runtime-related packages.
Now that we have the ability to invoke Babel via compiler plugins for
individual modules encountered by the ImportScanner, it's possible the
ImportScanner will try to compile @babel/runtime/helpers/* modules.

These modules are not safe to recompile because they use native syntax
(such as typeof) in ways that do not need additional transformation or
simulation, and would be broken by applying the usual Babel transforms.

It may bother you that this list of packages is hard-coded, or that it
might grow over time. To ease those concerns, I would say:

  1. We can release new versions of the babel-compiler and ecmascript
     packages whenever we need to.

  2. These particular npm packages belong in this list because Babel
     itself assumes they have already been compiled, so there shouldn't be
     (m)any other packages that fit that narrow criterion.

In other words, this is just a list of packages that must be left
untouched in order to bootstrap the Babel compiler system, and the
babel-compiler package is where the details of that system primarily
reside, so that's where we should put this list, until/unless we find a
better solution.
2019-06-20 12:11:29 -04:00
Ben Newman
c7b886c5d9 Nest cacheOptions in scope where used. 2019-06-20 12:11:29 -04:00
Ben Newman
9f88fa35c3 Use full power of compiler plugins to compile unanticipated modules.
Instead of merely supporting ECMAScript module syntax via Reify, we should
really be compiling unanticipated modules (typically within node_modules)
using the same logic that the rest of the application uses.

Note: this processing applies only to .js files for now, since that's what
the ImportScanner works with.

Should help with #10563.
2019-06-20 12:11:29 -04:00
Ben Newman
a2f5e1c3e5 Make PackageSourceBatch ResourceSlot creation more reusable. 2019-06-20 12:11:29 -04:00
Ben Newman
330a6cfe3d Update ecmascript-runtime-{client,server} to use core-js@3.1.4. (#10588)
* Update ecmascript-runtime-{client,server} to core-js@3.1.4.

Also added a polyfill for Symbol.asyncIterator to server, modern, and
legacy, which should fix #9897.

* Add a test of for-await-of async iteration.

This should verify that #9897 is fixed.
2019-06-19 20:24:23 -04:00
Ben Newman
830c13b287 Bump package versions for 1.8.2-beta.5 release. release/METEOR@1.8.2-beta.5 2019-06-19 13:20:02 -04:00
Ben Newman
bd89ac8d1b Merge branch 'devel' into release-1.8.2 2019-06-19 13:19:11 -04:00
Ben Newman
bf24ef3cb6 Bump patch version of accounts-google package to 1.3.3. 2019-06-19 13:14:01 -04:00
Filipe Névola
ce14282304 Enable running multiple Cordova apps from same application source (#10577)
Fixes #10576.
2019-06-19 13:07:25 -04:00
zodern
d0de6e1176 Add assets to watchSet, again (#10565)
Follow-up to #10452.
2019-06-17 12:51:33 -04:00
Timo Schneider
ee09e22bde Add missing dot in query parameter (#10581)
So that emails from other users are not exposed.
2019-06-17 12:38:05 -04:00
Ben Newman
f0d39b86e6 Avoid module.useNode() for packages with "module" entry points. 2019-05-17 11:22:23 -04:00
Ben Newman
9fc6642f5a Compile unhandled JS imports for server bundles, too. 2019-05-17 10:59:17 -04:00
Ben Newman
6d3386d77d Bump package versions for 1.8.2-beta.4 release. release/METEOR@1.8.2-beta.4 2019-05-16 13:27:56 -04:00
Ben Newman
4b518d56e2 Bump $BUNDLE_VERSION to 8.16.0.4 before rebuilding dev bundle. 2019-05-16 13:11:18 -04:00
Ben Newman
c73ac1c844 Update reify and @babel/runtime to latest versions in dev bundle.
We ended up with two different versions of the reify package (0.19.0 and
0.19.1) in the last build of the dev bundle, which seems to have caused
the test failures.
2019-05-16 13:10:28 -04:00
Ben Newman
28d74dcc9f Use Reify to compile dynamic import(...). 2019-05-15 19:12:09 -04:00
Ben Newman
7185137ce7 Bump $BUNDLE_VERSION to 8.16.0.3 before rebuilding dev bundle. 2019-05-15 19:07:56 -04:00
Ben Newman
4155a01e57 Update meteor-babel and reify versions in dev bundle. 2019-05-15 19:06:23 -04:00
Ben Newman
d5d7413a38 Compile all unhandled node_modules client JS with Reify.
Although I hoped we could be clever about which npm packages we compiled,
there are already too many exceptions to the rules (for example, not all
npm packages that contain ESM code have a "module" entry point in
package.json).

It seems safer simply to compile all modules imported from node_modules
that have not already been handled by compiler plugins, and trust that our
disk+memory caching system will provide acceptable build performance.

Should help with #10547, #10544, and #10546.
2019-05-10 15:43:48 -04:00
Ben Newman
646fa4e3ee Consider only named packages in optimisticLookupPackageJson.
Sometimes (very rarely) an npm package may contain package.json files
other than the one found in the root package directory. For example, the
date-fns@2.0.0-alpha.27 package includes a small package.json file for
each of its functions (date-fns/someDateFn/package.json) that contains
only { sideEffects, typings }, for whatever reason. These package.json
files clearly do not serve the same purpose as date-fns/package.json, and
it would be convenient to ignore them in optimisticLookupPackageJson. The
easiest way I can see to accomplish that is to ignore package.json files
that do not have a "name" property, since any package.json file that
governs an actual package must have a name.

Should fix #10547.
2019-05-06 17:23:06 -04:00
Ben Newman
e94d5d3237 Bump package versions for 1.8.2-beta.3 release. release/METEOR@1.8.2-beta.3 2019-05-05 19:39:22 -04:00
Ben Newman
d9fd447e6f Avoid using fs.unlinkSync on directories.
Should help with #10549.
2019-05-05 19:37:45 -04:00
Ben Newman
fd68d4aa8c Merge pull request #10550 from meteor/support-module-syntax-in-ImportScanner
Support module syntax in ImportScanner, rather than using PackageSource#_findSources.
2019-05-05 19:36:31 -04:00
Ben Newman
f4af3ab2fa Backstop ESM module compilation with Reify in the ImportScanner.
Instead of compiling ESM syntax in node_modules using compiler plugins,
the ImportScanner can provide "native" support for ESM syntax by using
Reify to quickly compile just the import/export syntax in any imported
modules that were not already handled by compiler plugins.

Since this code runs every time the app is built, it should not matter
which version of Meteor was used to publish a package. Compared to the
previous implementation based on PackageSource#_findSources and unibuild
JSON files (#10545), this implementation should have far fewer
compatibility concerns, as well as being faster thanks to not processing
or compiling modules until the ImportScanner determines that they are
actually imported.

Though the number of files that get compiled by this system should be
relatively small for now, to maintain good performance, the results of the
compilation are cached on disk and in memory.
2019-05-05 19:10:13 -04:00
Ben Newman
72c704bcae Revert using _findSources to scan .npm/package/node_modules.
After much thought, I believe this implementation (#10545) would have
caused severe compatibility problems when using packages published with
earlier versions of Meteor in a Meteor 1.8.2 app, or when publishing
packages with Meteor 1.8.2 for use with earlier Meteor versions.

Specifically, this implementation relied on writing the additional
.npm/package/node_modules resources found by _findSources into the
unibuild JSON file(s), and there just wasn't any good way to make sure the
new JSON format could be safely consumed by previous Meteor versions.

Even if we found a way to hide the new resources from older versions of
Meteor, perhaps by putting them in a new/different property of the
unibuild JSON file, packages published with older Meteor versions might
try to load an npm package with a "module" field without realizing the
code must be compiled, which would likely cause a syntax error in Meteor
1.8.2, since the "module" field always gets preference over the "main"
field of package.json (in Meteor 1.8.2).
2019-05-05 19:03:30 -04:00
zodern
da323022b1 Do not remove source map url comments in public files (#10525) 2019-05-05 15:23:13 -05:00
Ben Newman
43d72af0f0 Bump package versions for 1.8.2-beta.2 release. release/METEOR@1.8.2-beta.2 2019-05-04 18:57:36 -04:00
Ben Newman
a69e6ffd21 Merge pull request #10545 from meteor/compile-Npm.depends-packages-with-ESM-entry-points
Allow .npm/package/node_modules to be compiled in Meteor packages.
2019-05-04 18:48:36 -04:00
Ben Newman
683d23cdee Bump compiler.BUILT_BY and LINKER_CACHE_SALT to force rebuild. 2019-05-04 18:08:49 -04:00
Ben Newman
5d0a1200c7 Allow .npm/package/node_modules to be compiled in Meteor packages.
When I implemented support for the "module" entry point in package.json
files for client code in #10541, I modified PackageSource#_findSources to
include files found in node_modules that need to be compiled, but my
implementation considered only "local" node_modules directories, like the
one in the application root directory, while neglecting the private
.npm/package/node_modules directories that many Meteor packages have.

This commit includes .npm/**/node_modules when _findSources is scanning a
Meteor package, which should solve issues like #10544, where a Meteor
package imports an npm package that was installed with Npm.depends, and
that npm package has a "module" field in its package.json file, pointing
to an ESM entry point module, but the ESM syntax was not appropriately
compiled, leading to parse errors like "Unexpected token export".

Before lazy compilation was introduced in Meteor 1.7 (#9983), including
the node_modules directories of Meteor packages would likely have been a
big problem for build performance, since there would be that many more
modules to compile. It's still worth making sure this change doesn't
regress build performance for other reasons, but I'm reasonably confident
lazy compilation will save us here, unless there are just too many npm
packages installed via Npm.depends that export ESM modules.
2019-05-04 18:08:49 -04:00