diff --git a/.eslintignore b/.eslintignore
index 268232d911bbb5f..64f34660d87a8f7 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -9,5 +9,7 @@ tools/github_reporter
benchmark/tmp
benchmark/fixtures
doc/**/*.js
+doc/changelogs/CHANGELOG_v1*.md
+!doc/changelogs/CHANGELOG_v18.md
!doc/api_assets/*.js
!.eslintrc.js
diff --git a/.eslintrc.js b/.eslintrc.js
index 47b218c55e91714..82481b3d2be1c62 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -18,7 +18,7 @@ const hacks = [
'eslint-plugin-jsdoc',
'eslint-plugin-markdown',
'@babel/eslint-parser',
- '@babel/plugin-syntax-import-assertions',
+ '@babel/plugin-syntax-import-attributes',
];
Module._findPath = (request, paths, isMain) => {
const r = ModuleFindPath(request, paths, isMain);
@@ -44,7 +44,7 @@ module.exports = {
parserOptions: {
babelOptions: {
plugins: [
- Module._findPath('@babel/plugin-syntax-import-assertions'),
+ Module._findPath('@babel/plugin-syntax-import-attributes'),
],
},
requireConfigFile: false,
diff --git a/doc/api/errors.md b/doc/api/errors.md
index 95ad3c9c6719543..89048c6485df0f8 100644
--- a/doc/api/errors.md
+++ b/doc/api/errors.md
@@ -1759,7 +1759,8 @@ added:
- v16.14.0
-->
-An import assertion has failed, preventing the specified module to be imported.
+An import `type` attribute was provided, but the specified module is of a
+different type.
@@ -1771,7 +1772,7 @@ added:
- v16.14.0
-->
-An import assertion is missing, preventing the specified module to be imported.
+An import attribute is missing, preventing the specified module to be imported.
@@ -1783,7 +1784,17 @@ added:
- v16.14.0
-->
-An import assertion is not supported by this version of Node.js.
+An import attribute is not supported by this version of Node.js.
+
+
+
+### `ERR_IMPORT_ATTRIBUTE_UNSUPPORTED`
+
+
+
+An import attribute is not supported by this version of Node.js.
diff --git a/doc/api/esm.md b/doc/api/esm.md
index b40b4ccb6f08656..a96badcf91b55d6 100644
--- a/doc/api/esm.md
+++ b/doc/api/esm.md
@@ -7,6 +7,9 @@
-> Stability: 1 - Experimental
+> Stability: 1.1 - Active development
+
+> This feature was previously named "Import assertions", and using the `assert`
+> keyword instead of `with`. Any uses in code of the prior `assert` keyword
+> should be updated to use `with` instead.
-The [Import Assertions proposal][] adds an inline syntax for module import
+The [Import Attributes proposal][] adds an inline syntax for module import
statements to pass on more information alongside the module specifier.
```js
-import fooData from './foo.json' assert { type: 'json' };
+import fooData from './foo.json' with { type: 'json' };
const { default: barData } =
- await import('./bar.json', { assert: { type: 'json' } });
+ await import('./bar.json', { with: { type: 'json' } });
```
-Node.js supports the following `type` values, for which the assertion is
+Node.js supports the following `type` values, for which the attribute is
mandatory:
-| Assertion `type` | Needed for |
+| Attribute `type` | Needed for |
| ---------------- | ---------------- |
| `'json'` | [JSON modules][] |
@@ -544,10 +557,10 @@ separate cache.
JSON files can be referenced by `import`:
```js
-import packageConfig from './package.json' assert { type: 'json' };
+import packageConfig from './package.json' with { type: 'json' };
```
-The `assert { type: 'json' }` syntax is mandatory; see [Import Assertions][].
+The `with { type: 'json' }` syntax is mandatory; see [Import Attributes][].
The imported JSON only exposes a `default` export. There is no support for named
exports. A cache entry is created in the CommonJS cache to avoid duplication.
@@ -1050,8 +1063,8 @@ resolution for ESM specifiers is [commonjs-extension-resolution-loader][].
[Determining module system]: packages.md#determining-module-system
[Dynamic `import()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import
[ES Module Integration Proposal for WebAssembly]: https://github.com/webassembly/esm-integration
-[Import Assertions]: #import-assertions
-[Import Assertions proposal]: https://github.com/tc39/proposal-import-assertions
+[Import Attributes]: #import-attributes
+[Import Attributes proposal]: https://github.com/tc39/proposal-import-attributes
[JSON modules]: #json-modules
[Module customization hooks]: module.md#customization-hooks
[Node.js Module Resolution And Loading Algorithm]: #resolution-algorithm-specification
diff --git a/doc/api/module.md b/doc/api/module.md
index 8bf5c09041a41a6..857c02142b199f4 100644
--- a/doc/api/module.md
+++ b/doc/api/module.md
@@ -458,6 +458,11 @@ register('./path-to-my-hooks.js', {