node/test/fixtures/es-modules
Maya Lekova b09155d975
module: enable existing machinery for deferred import of static modules
This commit enables deferred import for statically imported modules,
by using the corresponding functionality in V8. It adds two tests:
 - smoke test exercising the basic syntax
 - test for deferred import of module with its own imports

More test coverage should be added for mixing ESM and CJS modules,
as well as TypeScript modules.

Refs: https://github.com/tc39/proposal-defer-import-eval
Signed-off-by: Maya Lekova <maya@igalia.com>
PR-URL: https://github.com/nodejs/node/pull/63712
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
2026-06-16 20:39:20 +00:00
..
cjs-esm-esm-cycle module: cache synchronous module jobs before linking 2024-05-09 00:25:14 +00:00
custom-condition module: fix conditions override in synchronous resolve hooks 2025-07-26 09:13:11 +00:00
deprecated-folders-ignore module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
dynamic-import module: implement NODE_COMPILE_CACHE for automatic on-disk code caching 2024-04-17 23:39:45 +02:00
esm-cjs-esm-cycle module: disallow CJS <-> ESM edges in a cycle from require(esm) 2024-04-08 14:45:55 +00:00
esm-cjs-esm-esm-cycle module: disallow CJS <-> ESM edges in a cycle from require(esm) 2024-04-08 14:45:55 +00:00
esm-esm-cjs-esm-cycle module: disallow CJS <-> ESM edges in a cycle from require(esm) 2024-04-08 14:45:55 +00:00
esm-esm-cjs-esm-esm-cycle module: disallow CJS <-> ESM edges in a cycle from require(esm) 2024-04-08 14:45:55 +00:00
esm-in-require-cache module: only put directly require-d ESM into require.cache 2025-09-17 13:13:59 +00:00
exports-both module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
exports-import-default module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
exports-import-only module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
exports-require-only module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
extensionless-esm-commonjs module: fix extensionless entry with explicit type=commonjs 2026-02-16 14:58:58 +00:00
extensionless-esm-module module: fix extensionless entry with explicit type=commonjs 2026-02-16 14:58:58 +00:00
folder%25with percentage# esm: fix hint on invalid module specifier 2023-12-23 20:38:08 +00:00
import-require-tla-twice esm: fix missed renaming in ModuleJob.runSync 2025-09-04 10:01:32 +00:00
json-cache
legacy-main-resolver
module-condition module: implement the "module-sync" exports condition 2024-09-25 06:35:26 +00:00
module-counter-by-type
package-cjs-named-error
package-default-extension module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
package-ends-node_modules src: do not treat all paths ending with node_modules as such 2023-12-25 11:44:26 +00:00
package-type-commonjs esm: bypass CJS loader in default load under --default-type=module 2023-11-10 09:20:46 +01:00
package-type-module esm: detect ESM syntax in ambiguous JavaScript 2023-10-20 15:44:56 +00:00
package-without-pjson
package-without-type module: remove --experimental-default-type 2024-12-02 22:43:55 +00:00
pjson-invalid
pjson-main
pkgimports module: allow subpath imports that start with #/ 2025-12-04 02:27:04 +00:00
require-and-import module: fix submodules loaded by require() and import() 2024-04-16 14:07:44 +00:00
require-esm-in-cjs-cache esm: populate separate cache for require(esm) in imported CJS 2025-09-08 14:59:31 +00:00
require-module-instantiated module: handle instantiated async module jobs in require(esm) 2025-05-08 20:10:32 +00:00
self-deprecated-folders
test_node_modules module: do not warn when require(esm) comes from node_modules 2024-11-23 11:28:47 +00:00
tla src: fix process exit listeners not receiving unsettled tla codes 2025-03-08 19:54:30 +00:00
transpiled-cjs-require-module module: add __esModule to require()'d ESM 2024-07-11 18:59:31 +00:00
builtin-imports-case.mjs
cjs-esm-esm.js
cjs-esm.js
cjs-exports-invalid.mjs
cjs-exports.mjs esm: export 'module.exports' on ESM CJS wrapper 2024-10-02 12:30:23 -07:00
cjs-file.cjs
cjs.js
conditional-exports.js
conditional-exports.mjs
data-import.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
dep.wasm esm: unwrap WebAssembly.Global on Wasm Namespaces 2025-05-27 11:40:28 -07:00
dep.wat esm: unwrap WebAssembly.Global on Wasm Namespaces 2025-05-27 11:40:28 -07:00
dep1.js
dep2.js
es-note-error-1.cjs
es-note-error-1.mjs
es-note-error-2.cjs
es-note-error-2.mjs
es-note-error-3.cjs
es-note-error-3.mjs
es-note-error-4.cjs
es-note-error-4.mjs
es-note-promiserej-import-2.cjs
es-note-unexpected-export-1.cjs
es-note-unexpected-export-2.cjs
es-note-unexpected-import-1.cjs
es-note-unexpected-import-3.cjs
es-note-unexpected-import-4.cjs
es-note-unexpected-import-5.cjs
esm-snapshot-mutator.js
esm-snapshot.js
esm-top-level-await.mjs module: execute --import sequentially 2023-11-01 12:38:01 +00:00
export-es-module-2.mjs module: add __esModule to require()'d ESM 2024-07-11 18:59:31 +00:00
export-es-module.mjs module: add __esModule to require()'d ESM 2024-07-11 18:59:31 +00:00
export-name-code-injection.wasm module: fix code injection through export names 2023-10-13 18:03:52 -03:00
export-name-code-injection.wat module: fix code injection through export names 2023-10-13 18:03:52 -03:00
export-name-syntax-error.wasm module: fix code injection through export names 2023-10-13 18:03:52 -03:00
export-name-syntax-error.wat module: fix code injection through export names 2023-10-13 18:03:52 -03:00
exports-cases.js esm: fix module.exports export on CJS modules 2025-03-09 13:51:04 -07:00
exports-cases2.js
exports-cases3.js
file.ext
file.unknown
globals.js esm: unwrap WebAssembly.Global on Wasm Namespaces 2025-05-27 11:40:28 -07:00
globals.wasm esm: unwrap WebAssembly.Global on Wasm Namespaces 2025-05-27 11:40:28 -07:00
globals.wat esm: unwrap WebAssembly.Global on Wasm Namespaces 2025-05-27 11:40:28 -07:00
import-data-url.mjs lib,esm: handle bypass network-import via data: 2024-07-12 12:48:54 +00:00
import-esm.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
import-invalid-ext.mjs
import-invalid-pjson.mjs
import-json-named-export.mjs esm: use import attributes instead of import assertions 2023-10-14 03:52:38 +00:00
import-meta-main.mjs esm: implement import.meta.main 2025-05-26 22:31:54 +00:00
import-meta-main.ts module: fix typescript import.meta.main 2025-06-12 11:21:54 +00:00
import-name.wasm module: fix code injection through export names 2023-10-13 18:03:52 -03:00
import-name.wat module: fix code injection through export names 2023-10-13 18:03:52 -03:00
import-process-exit.mjs
import-resolve-exports.mjs
imported-esm.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
imports-loose.mjs
imports-noext.mjs
invalid-cjs.js
invalid-export-name-wasm-js.wasm esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-export-name-wasm-js.wat esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-export-name.wasm esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-export-name.wat esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-import-module.wasm esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-import-module.wat esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-import-name-wasm-js.wasm esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-import-name-wasm-js.wat esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-import-name.wasm esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-import-name.wat esm: js-string Wasm builtins in ESM Integration 2025-07-18 15:50:52 -07:00
invalid-posix-host.mjs
js-string-builtins.wasm wasm: support js string constant esm import 2026-03-14 15:08:49 -04:00
js-string-builtins.wat wasm: support js string constant esm import 2026-03-14 15:08:49 -04:00
json-modules-attributes.mjs module: link module with a module request record 2025-07-04 19:56:08 +00:00
json-modules.mjs esm: use import attributes instead of import assertions 2023-10-14 03:52:38 +00:00
loop.mjs
loose.js module: remove --experimental-default-type 2024-12-02 22:43:55 +00:00
message.mjs
mjs-file.mjs
module-deferred-eval.mjs module: enable existing machinery for deferred import of static modules 2026-06-16 20:39:20 +00:00
module-with-module-tree.mjs module: enable existing machinery for deferred import of static modules 2026-06-16 20:39:20 +00:00
noext
noext-esm
noext-wasm
pattern-trailing-slash.mjs
print-3.mjs
print-entrypoint.mjs module: support loading entrypoint as url 2024-09-27 15:26:48 +08:00
process-exit.mjs
reference-error-esm.js module: mark evaluation rejection in require(esm) as handled 2024-12-05 16:12:50 +00:00
reference-error.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
require-cjs.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
require-esm-throws-with-loaders.js esm: move hooks test with others 2024-06-25 10:08:44 +00:00
require-module.js module: trim off internal stack frames for require(esm) warnings 2024-10-29 18:29:27 +01:00
require-reference-error.cjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
require-syntax-error.cjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
require-throw-error.cjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
required-cjs.js module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
runmain.mjs
runtime-error-esm.js module: mark evaluation rejection in require(esm) as handled 2024-12-05 16:12:50 +00:00
should-not-be-resolved.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
simple.wasm
simple.wat
stateful.mjs
symlink.mjs
synchronous-rejection-esm.js module: mark evaluation rejection in require(esm) as handled 2024-12-05 16:12:50 +00:00
syntax-error.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
test-esm-comma,.mjs
test-esm-double-encoding-native%20.mjs
test-esm-ok.mjs
test-wasm-escape-import-names.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-globals-all-types.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-js-string-builtins.mjs wasm: support js string constant esm import 2026-03-14 15:08:49 -04:00
test-wasm-load-exports.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-non-identifier-exports.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-reject-wasm-export-names.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-reject-wasm-import-names.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-reject-wasm-js-export-names.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-reject-wasm-js-import-module.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-reject-wasm-js-import-names.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-source-phase-dynamic.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-source-phase-identity-parent.mjs esm: fix source phase identity bug in loadCache eviction 2026-03-26 14:12:45 -07:00
test-wasm-source-phase-identity.mjs esm: fix source phase identity bug in loadCache eviction 2026-03-26 14:12:45 -07:00
test-wasm-source-phase-no-execute-dynamic.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-source-phase-no-execute.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-source-phase-not-defined-dynamic.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-source-phase-not-defined-static.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-source-phase-static.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-vm-source-phase-dynamic.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
test-wasm-vm-source-phase-static.mjs test: split test-esm-wasm.js 2025-11-05 10:36:31 +00:00
throw-error.mjs module: support require()ing synchronous ESM graphs 2024-03-18 18:10:06 +08:00
top-level-wasm.wasm esm: support top-level Wasm without package type 2025-04-03 19:38:40 -07:00
unimportable.wasm esm: support source phase imports for WebAssembly 2025-02-28 09:52:47 -08:00
wasm-dep.mjs
wasm-function.js esm: support top-level Wasm without package type 2025-04-03 19:38:40 -07:00
wasm-modules.mjs
wasm-object.js esm: support top-level Wasm without package type 2025-04-03 19:38:40 -07:00
wasm-source-phase.js esm: support source phase imports for WebAssembly 2025-02-28 09:52:47 -08:00
wasm-string-constants.js esm: support top-level Wasm without package type 2025-04-03 19:38:40 -07:00