mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
esm: mark import attributes and JSON module as stable
The two proposals reached stage 4 at the October 2024 meeting. PR-URL: https://github.com/nodejs/node/pull/55333 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
parent
1d7cddd35b
commit
d881fcba86
@ -270,13 +270,9 @@ changes:
|
||||
description: Switch from Import Assertions to Import Attributes.
|
||||
-->
|
||||
|
||||
> Stability: 1.1 - Active development
|
||||
> Stability: 2 - Stable
|
||||
|
||||
> 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 Attributes proposal][] adds an inline syntax for module import
|
||||
[Import attributes][Import Attributes MDN] are an inline syntax for module import
|
||||
statements to pass on more information alongside the module specifier.
|
||||
|
||||
```js
|
||||
@ -286,13 +282,14 @@ const { default: barData } =
|
||||
await import('./bar.json', { with: { type: 'json' } });
|
||||
```
|
||||
|
||||
Node.js supports the following `type` values, for which the attribute is
|
||||
mandatory:
|
||||
Node.js only supports the `type` attribute, for which it supports the following values:
|
||||
|
||||
| Attribute `type` | Needed for |
|
||||
| ---------------- | ---------------- |
|
||||
| `'json'` | [JSON modules][] |
|
||||
|
||||
The `type: 'json'` attribute is mandatory when importing JSON modules.
|
||||
|
||||
## Built-in modules
|
||||
|
||||
[Built-in modules][] provide named exports of their public API. A
|
||||
@ -631,7 +628,7 @@ separate cache.
|
||||
|
||||
## JSON modules
|
||||
|
||||
> Stability: 1 - Experimental
|
||||
> Stability: 2 - Stable
|
||||
|
||||
JSON files can be referenced by `import`:
|
||||
|
||||
@ -1101,7 +1098,7 @@ resolution for ESM specifiers is [commonjs-extension-resolution-loader][].
|
||||
[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 Attributes]: #import-attributes
|
||||
[Import Attributes proposal]: https://github.com/tc39/proposal-import-attributes
|
||||
[Import Attributes MDN]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import/with
|
||||
[JSON modules]: #json-modules
|
||||
[Loading ECMAScript modules using `require()`]: modules.md#loading-ecmascript-modules-using-require
|
||||
[Module customization hooks]: module.md#customization-hooks
|
||||
|
@ -365,7 +365,6 @@ translators.set('builtin', function builtinStrategy(url) {
|
||||
|
||||
// Strategy for loading a JSON file
|
||||
translators.set('json', function jsonStrategy(url, source) {
|
||||
emitExperimentalWarning('Importing JSON modules');
|
||||
assertBufferSource(source, true, 'load');
|
||||
debug(`Loading JSONModule ${url}`);
|
||||
const pathname = StringPrototypeStartsWith(url, 'file:') ?
|
||||
|
@ -16,12 +16,12 @@ describe('ESM: importing JSON', () => {
|
||||
assert.strictEqual(secret.ofLife, 42);
|
||||
});
|
||||
|
||||
it('should print an experimental warning', async () => {
|
||||
it('should not print an experimental warning', async () => {
|
||||
const { code, signal, stderr } = await spawnPromisified(execPath, [
|
||||
fixtures.path('/es-modules/json-modules.mjs'),
|
||||
]);
|
||||
|
||||
assert.match(stderr, /ExperimentalWarning: Importing JSON modules/);
|
||||
assert.strictEqual(stderr, '');
|
||||
assert.strictEqual(code, 0);
|
||||
assert.strictEqual(signal, null);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user