diff --git a/.eslintignore b/.eslintignore
index 153ac6e24f731e..6f3d86e6bfac8a 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -8,5 +8,7 @@ tools/lint-md/lint-md.mjs
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 6107469443ab61..9c31bf3da17dbf 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,10 @@ module.exports = {
parserOptions: {
babelOptions: {
plugins: [
- Module._findPath('@babel/plugin-syntax-import-assertions'),
+ [
+ Module._findPath('@babel/plugin-syntax-import-attributes'),
+ { deprecatedAssertSyntax: true },
+ ],
],
},
requireConfigFile: false,
diff --git a/doc/api/errors.md b/doc/api/errors.md
index c589fcd375136d..ecfb20864c37d1 100644
--- a/doc/api/errors.md
+++ b/doc/api/errors.md
@@ -1762,7 +1762,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.
@@ -1774,7 +1775,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.
@@ -1786,7 +1787,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 269888042fc453..88d58735707123 100644
--- a/doc/api/esm.md
+++ b/doc/api/esm.md
@@ -18,7 +18,7 @@ changes:
- v17.1.0
- v16.14.0
pr-url: https://github.com/nodejs/node/pull/40250
- description: Add support for import assertions.
+ description: Add experimental support for import assertions.
- version:
- v17.0.0
- v16.12.0
@@ -234,17 +234,28 @@ absolute URL strings.
import fs from 'node:fs/promises';
```
-## Import assertions
+
+
+## Import attributes
-> Stability: 1 - Experimental
+> Stability: 1.1 - Active development
+
+> This feature was previously named "Import assertions", and using the `assert`
+> keyword instead of `with`. Because the version of V8 on this release line does
+> not support the `with` keyword, you need to keep using `assert` to support
+> this version of Node.js.
-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
@@ -254,10 +265,10 @@ const { default: barData } =
await import('./bar.json', { assert: { 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][] |
@@ -547,7 +558,7 @@ JSON files can be referenced by `import`:
import packageConfig from './package.json' assert { type: 'json' };
```
-The `assert { type: 'json' }` syntax is mandatory; see [Import Assertions][].
+The `assert { 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.
@@ -1076,8 +1087,8 @@ success!
[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 c0cbcf68f86fb4..61776aefbebeef 100644
--- a/doc/api/module.md
+++ b/doc/api/module.md
@@ -456,6 +456,11 @@ register('./path-to-my-hooks.js', {