summaryrefslogtreecommitdiff
path: root/test/fixtures/es-modules
diff options
context:
space:
mode:
authorguybedford <guybedford@gmail.com>2018-08-28 17:28:46 +0200
committerMyles Borins <mylesborins@google.com>2019-03-27 15:52:11 -0400
commitb1094dbe19f31f7a69ad16d193748f610b159073 (patch)
treebb623ea607ed54c27ef36ee9453f5623e19cbb90 /test/fixtures/es-modules
parent39141426d46a7e55d93ad2e8efa12ed86d223522 (diff)
downloadandroid-node-v8-b1094dbe19f31f7a69ad16d193748f610b159073.tar.gz
android-node-v8-b1094dbe19f31f7a69ad16d193748f610b159073.tar.bz2
android-node-v8-b1094dbe19f31f7a69ad16d193748f610b159073.zip
esm: phase two of new esm implementation
This PR updates the current `--experimental-modules` implementation based on the work of the modules team and reflects Phase 2 of our new modules plan. The largest differences from the current implementation include * `packge.type` which can be either `module` or `commonjs` - `type: "commonjs"`: - `.js` is parsed as commonjs - default for entry point without an extension is commonjs - `type: "module"`: - `.js` is parsed as esm - does not support loading JSON or Native Module by default - default for entry point without an extension is esm * `--entry-type=[mode]` - allows you set the type on entry point. * A new file extension `.cjs`. - this is specifically to support importing commonjs in the `module` mode. - this is only in the esm loader, the commonjs loader remains untouched, but the extension will work in the old loader if you use the full file path. * `--es-module-specifier-resolution=[type]` - options are `explicit` (default) and `node` - by default our loader will not allow for optional extensions in the import, the path for a module must include the extension if there is one - by default our loader will not allow for importing directories that have an index file - developers can use `--es-module-specifier-resolution=node` to enable the commonjs specifier resolution algorithm - This is not a “feature” but rather an implementation for experimentation. It is expected to change before the flag is removed * `--experimental-json-loader` - the only way to import json when `"type": "module"` - when enable all `import 'thing.json'` will go through the experimental loader independent of mode - based on https://github.com/whatwg/html/issues/4315 * You can use `package.main` to set an entry point for a module - the file extensions used in main will be resolved based on the `type` of the module Refs: https://github.com/nodejs/modules/blob/master/doc/plan-for-new-modules-implementation.md Refs: https://github.com/GeoffreyBooth/node-import-file-specifier-resolution-proposal Refs: https://github.com/nodejs/modules/pull/180 Refs: https://github.com/nodejs/ecmascript-modules/pull/6 Refs: https://github.com/nodejs/ecmascript-modules/pull/12 Refs: https://github.com/nodejs/ecmascript-modules/pull/28 Refs: https://github.com/nodejs/modules/issues/255 Refs: https://github.com/whatwg/html/issues/4315 Refs: https://github.com/w3c/webcomponents/issues/770 Co-authored-by: Myles Borins <MylesBorins@google.com> Co-authored-by: John-David Dalton <john.david.dalton@gmail.com> Co-authored-by: Evan Plaice <evanplaice@gmail.com> Co-authored-by: Geoffrey Booth <webmaster@geoffreybooth.com> Co-authored-by: Michaël Zasso <targos@protonmail.com> PR-URL: https://github.com/nodejs/node/pull/26745 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Ben Coe <bencoe@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Diffstat (limited to 'test/fixtures/es-modules')
-rw-r--r--test/fixtures/es-modules/cjs-file.cjs1
-rw-r--r--test/fixtures/es-modules/json-cache/another.cjs7
-rw-r--r--test/fixtures/es-modules/json-cache/mod.cjs7
-rw-r--r--test/fixtures/es-modules/json-cache/test.json5
-rw-r--r--test/fixtures/es-modules/json.json3
-rw-r--r--test/fixtures/es-modules/loop.mjs2
-rw-r--r--test/fixtures/es-modules/mjs-file.mjs1
-rw-r--r--test/fixtures/es-modules/noext-esm2
-rw-r--r--test/fixtures/es-modules/package-type-commonjs/index.js3
-rw-r--r--test/fixtures/es-modules/package-type-commonjs/package.json4
-rw-r--r--test/fixtures/es-modules/package-type-module/index.js3
-rw-r--r--test/fixtures/es-modules/package-type-module/package.json4
-rw-r--r--test/fixtures/es-modules/package-without-type/index.js3
-rw-r--r--test/fixtures/es-modules/package-without-type/package.json3
-rw-r--r--test/fixtures/es-modules/pjson-main/main.js1
-rw-r--r--test/fixtures/es-modules/pjson-main/main.mjs1
-rw-r--r--test/fixtures/es-modules/pjson-main/package.json2
-rw-r--r--test/fixtures/es-modules/test-esm-double-encoding-native%20.mjs (renamed from test/fixtures/es-modules/test-esm-double-encoding-native%20.js)2
18 files changed, 47 insertions, 7 deletions
diff --git a/test/fixtures/es-modules/cjs-file.cjs b/test/fixtures/es-modules/cjs-file.cjs
new file mode 100644
index 0000000000..3d0637686e
--- /dev/null
+++ b/test/fixtures/es-modules/cjs-file.cjs
@@ -0,0 +1 @@
+console.log('.cjs file');
diff --git a/test/fixtures/es-modules/json-cache/another.cjs b/test/fixtures/es-modules/json-cache/another.cjs
new file mode 100644
index 0000000000..8c8e9f1c0f
--- /dev/null
+++ b/test/fixtures/es-modules/json-cache/another.cjs
@@ -0,0 +1,7 @@
+const test = require('./test.json');
+
+module.exports = {
+ ...test
+};
+
+test.one = 'it comes';
diff --git a/test/fixtures/es-modules/json-cache/mod.cjs b/test/fixtures/es-modules/json-cache/mod.cjs
new file mode 100644
index 0000000000..047cfb24a4
--- /dev/null
+++ b/test/fixtures/es-modules/json-cache/mod.cjs
@@ -0,0 +1,7 @@
+const test = require('./test.json');
+
+module.exports = {
+ ...test
+};
+
+test.one = 'zalgo';
diff --git a/test/fixtures/es-modules/json-cache/test.json b/test/fixtures/es-modules/json-cache/test.json
new file mode 100644
index 0000000000..120cbb2840
--- /dev/null
+++ b/test/fixtures/es-modules/json-cache/test.json
@@ -0,0 +1,5 @@
+{
+ "one": 1,
+ "two": 2,
+ "three": 3
+}
diff --git a/test/fixtures/es-modules/json.json b/test/fixtures/es-modules/json.json
deleted file mode 100644
index 8288d42e2b..0000000000
--- a/test/fixtures/es-modules/json.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "val": 42
-}
diff --git a/test/fixtures/es-modules/loop.mjs b/test/fixtures/es-modules/loop.mjs
index 1b5cab10ed..3d2ddd2eb7 100644
--- a/test/fixtures/es-modules/loop.mjs
+++ b/test/fixtures/es-modules/loop.mjs
@@ -1,4 +1,4 @@
-import { message } from './message';
+import { message } from './message.mjs';
var t = 1;
var k = 1;
diff --git a/test/fixtures/es-modules/mjs-file.mjs b/test/fixtures/es-modules/mjs-file.mjs
new file mode 100644
index 0000000000..489d4ab570
--- /dev/null
+++ b/test/fixtures/es-modules/mjs-file.mjs
@@ -0,0 +1 @@
+console.log('.mjs file');
diff --git a/test/fixtures/es-modules/noext-esm b/test/fixtures/es-modules/noext-esm
new file mode 100644
index 0000000000..251d6e538a
--- /dev/null
+++ b/test/fixtures/es-modules/noext-esm
@@ -0,0 +1,2 @@
+export default 'module';
+console.log('executed');
diff --git a/test/fixtures/es-modules/package-type-commonjs/index.js b/test/fixtures/es-modules/package-type-commonjs/index.js
new file mode 100644
index 0000000000..009431d851
--- /dev/null
+++ b/test/fixtures/es-modules/package-type-commonjs/index.js
@@ -0,0 +1,3 @@
+const identifier = 'package-type-commonjs';
+console.log(identifier);
+module.exports = identifier;
diff --git a/test/fixtures/es-modules/package-type-commonjs/package.json b/test/fixtures/es-modules/package-type-commonjs/package.json
new file mode 100644
index 0000000000..4aaa4a2388
--- /dev/null
+++ b/test/fixtures/es-modules/package-type-commonjs/package.json
@@ -0,0 +1,4 @@
+{
+ "type": "commonjs",
+ "main": "index.js"
+}
diff --git a/test/fixtures/es-modules/package-type-module/index.js b/test/fixtures/es-modules/package-type-module/index.js
new file mode 100644
index 0000000000..12aba970ef
--- /dev/null
+++ b/test/fixtures/es-modules/package-type-module/index.js
@@ -0,0 +1,3 @@
+const identifier = 'package-type-module';
+console.log(identifier);
+export default identifier;
diff --git a/test/fixtures/es-modules/package-type-module/package.json b/test/fixtures/es-modules/package-type-module/package.json
new file mode 100644
index 0000000000..07aec65d5a
--- /dev/null
+++ b/test/fixtures/es-modules/package-type-module/package.json
@@ -0,0 +1,4 @@
+{
+ "type": "module",
+ "main": "index.js"
+}
diff --git a/test/fixtures/es-modules/package-without-type/index.js b/test/fixtures/es-modules/package-without-type/index.js
new file mode 100644
index 0000000000..a547216cb0
--- /dev/null
+++ b/test/fixtures/es-modules/package-without-type/index.js
@@ -0,0 +1,3 @@
+const identifier = 'package-without-type';
+console.log(identifier);
+module.exports = identifier;
diff --git a/test/fixtures/es-modules/package-without-type/package.json b/test/fixtures/es-modules/package-without-type/package.json
new file mode 100644
index 0000000000..14ab704d8f
--- /dev/null
+++ b/test/fixtures/es-modules/package-without-type/package.json
@@ -0,0 +1,3 @@
+{
+ "main": "index.js"
+}
diff --git a/test/fixtures/es-modules/pjson-main/main.js b/test/fixtures/es-modules/pjson-main/main.js
deleted file mode 100644
index dfdd47b877..0000000000
--- a/test/fixtures/es-modules/pjson-main/main.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'main';
diff --git a/test/fixtures/es-modules/pjson-main/main.mjs b/test/fixtures/es-modules/pjson-main/main.mjs
new file mode 100644
index 0000000000..9eb0aade18
--- /dev/null
+++ b/test/fixtures/es-modules/pjson-main/main.mjs
@@ -0,0 +1 @@
+export const main = 'main'
diff --git a/test/fixtures/es-modules/pjson-main/package.json b/test/fixtures/es-modules/pjson-main/package.json
index c13b8cf6ac..ea9b784692 100644
--- a/test/fixtures/es-modules/pjson-main/package.json
+++ b/test/fixtures/es-modules/pjson-main/package.json
@@ -1,3 +1,3 @@
{
- "main": "main.js"
+ "main": "main.mjs"
}
diff --git a/test/fixtures/es-modules/test-esm-double-encoding-native%20.js b/test/fixtures/es-modules/test-esm-double-encoding-native%20.mjs
index ea1caa81be..a3bfe972e5 100644
--- a/test/fixtures/es-modules/test-esm-double-encoding-native%20.js
+++ b/test/fixtures/es-modules/test-esm-double-encoding-native%20.mjs
@@ -3,4 +3,4 @@
// Trivial test to assert we can load files with `%` in their pathname.
// Imported by `test-esm-double-encoding.mjs`.
-module.exports = 42;
+export default 42;