Skip to content

Commit e116204

Browse files
committed
module: unflag esm json modules
1 parent d86dcaa commit e116204

21 files changed

+35
-88
lines changed

doc/node.1

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,6 @@ Enable Source Map V3 support for stack traces.
142142
.It Fl -experimental-import-meta-resolve
143143
Enable experimental ES modules support for import.meta.resolve().
144144
.
145-
.It Fl -experimental-json-modules
146-
Enable experimental JSON interop support for the ES Module loader.
147-
.
148145
.It Fl -experimental-loader Ns = Ns Ar module
149146
Specify the
150147
.Ar module

lib/internal/modules/esm/get_format.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ const {
88
const { extname } = require('path');
99
const { getOptionValue } = require('internal/options');
1010

11-
const experimentalJsonModules = getOptionValue('--experimental-json-modules');
1211
const experimentalSpecifierResolution =
1312
getOptionValue('--experimental-specifier-resolution');
1413
const experimentalWasmModules = getOptionValue('--experimental-wasm-modules');
@@ -20,7 +19,8 @@ const extensionFormatMap = {
2019
'__proto__': null,
2120
'.cjs': 'commonjs',
2221
'.js': 'module',
23-
'.mjs': 'module'
22+
'.json': 'json',
23+
'.mjs': 'module',
2424
};
2525

2626
const legacyExtensionFormatMap = {
@@ -29,17 +29,14 @@ const legacyExtensionFormatMap = {
2929
'.js': 'commonjs',
3030
'.json': 'commonjs',
3131
'.mjs': 'module',
32-
'.node': 'commonjs'
32+
'.node': 'commonjs',
3333
};
3434

3535
let experimentalSpecifierResolutionWarned = false;
3636

3737
if (experimentalWasmModules)
3838
extensionFormatMap['.wasm'] = legacyExtensionFormatMap['.wasm'] = 'wasm';
3939

40-
if (experimentalJsonModules)
41-
extensionFormatMap['.json'] = legacyExtensionFormatMap['.json'] = 'json';
42-
4340
const protocolHandlers = ObjectAssign(ObjectCreate(null), {
4441
'data:'(parsed) {
4542
const { 1: mime } = RegExpPrototypeExec(
@@ -49,7 +46,7 @@ const protocolHandlers = ObjectAssign(ObjectCreate(null), {
4946
const format = ({
5047
'__proto__': null,
5148
'text/javascript': 'module',
52-
'application/json': experimentalJsonModules ? 'json' : null,
49+
'application/json': 'json',
5350
'application/wasm': experimentalWasmModules ? 'wasm' : null
5451
})[mime] || null;
5552

lib/internal/modules/esm/translators.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,6 @@ translators.set('builtin', async function builtinStrategy(url) {
259259

260260
// Strategy for loading a JSON file
261261
translators.set('json', async function jsonStrategy(url, source) {
262-
emitExperimentalWarning('Importing JSON modules');
263262
assertBufferSource(source, true, 'load');
264263
debug(`Loading JSONModule ${url}`);
265264
const pathname = StringPrototypeStartsWith(url, 'file:') ?

src/node_options.cc

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -315,19 +315,13 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
315315
kAllowedInEnvironment);
316316
AddOption("--experimental-abortcontroller", "",
317317
NoOp{}, kAllowedInEnvironment);
318-
AddOption("--experimental-json-modules",
319-
"experimental JSON interop support for the ES Module loader",
320-
&EnvironmentOptions::experimental_json_modules,
321-
kAllowedInEnvironment);
318+
AddOption("--experimental-json-modules", "", NoOp{}, kAllowedInEnvironment);
322319
AddOption("--experimental-loader",
323320
"use the specified module as a custom loader",
324321
&EnvironmentOptions::userland_loader,
325322
kAllowedInEnvironment);
326323
AddAlias("--loader", "--experimental-loader");
327-
AddOption("--experimental-modules",
328-
"",
329-
&EnvironmentOptions::experimental_modules,
330-
kAllowedInEnvironment);
324+
AddOption("--experimental-modules","", NoOp{}, kAllowedInEnvironment);
331325
AddOption("--experimental-wasm-modules",
332326
"experimental ES Module support for webassembly modules",
333327
&EnvironmentOptions::experimental_wasm_modules,

src/node_options.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ class EnvironmentOptions : public Options {
107107
std::vector<std::string> conditions;
108108
std::string dns_result_order;
109109
bool enable_source_maps = false;
110-
bool experimental_json_modules = false;
111-
bool experimental_modules = false;
112110
std::string experimental_specifier_resolution;
113111
bool experimental_wasm_modules = false;
114112
bool experimental_import_meta_resolve = false;

test/es-module/test-esm-assertionless-json-import.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-json-modules --experimental-loader ./test/fixtures/es-module-loaders/assertionless-json-import.mjs
1+
// Flags: --experimental-loader ./test/fixtures/es-module-loaders/assertionless-json-import.mjs
22
'use strict';
33
const common = require('../common');
44
const { strictEqual } = require('assert');

test/es-module/test-esm-data-urls.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
'use strict';
32
const common = require('../common');
43
const assert = require('assert');

test/es-module/test-esm-dynamic-import-assertion.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
'use strict';
32
const common = require('../common');
43
const { strictEqual } = require('assert');

test/es-module/test-esm-dynamic-import-assertion.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32
import { strictEqual } from 'assert';
43

test/es-module/test-esm-import-assertion-1.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32
import { strictEqual } from 'assert';
43

test/es-module/test-esm-import-assertion-2.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32
import { strictEqual } from 'assert';
43

test/es-module/test-esm-import-assertion-3.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32
import { strictEqual } from 'assert';
43

test/es-module/test-esm-import-assertion-4.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32
import { strictEqual } from 'assert';
43

test/es-module/test-esm-import-assertion-errors.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
'use strict';
32
const common = require('../common');
43
const { rejects } = require('assert');

test/es-module/test-esm-import-assertion-errors.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32
import { rejects } from 'assert';
43

test/es-module/test-esm-import-json-named-export.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { spawn } from 'child_process';
55
import { execPath } from 'process';
66

77
const child = spawn(execPath, [
8-
'--experimental-json-modules',
98
path('es-modules', 'import-json-named-export.mjs'),
109
]);
1110

test/es-module/test-esm-invalid-data-urls.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,14 @@ const assert = require('assert');
55
(async () => {
66
await assert.rejects(import('data:text/plain,export default0'), {
77
code: 'ERR_INVALID_MODULE_SPECIFIER',
8-
message:
9-
'Invalid module "data:text/plain,export default0" has an unsupported ' +
10-
'MIME type "text/plain"',
8+
message: 'Invalid module "data:text/plain,export default0" has an unsupported MIME type "text/plain"',
119
});
1210
await assert.rejects(import('data:text/plain;base64,'), {
1311
code: 'ERR_INVALID_MODULE_SPECIFIER',
14-
message:
15-
'Invalid module "data:text/plain;base64," has an unsupported ' +
16-
'MIME type "text/plain"',
12+
message: 'Invalid module "data:text/plain;base64," has an unsupported MIME type "text/plain"',
1713
});
18-
await assert.rejects(import('data:application/json,[]'), {
14+
await assert.rejects(import('data:text/css,.error { color: red; }'), {
1915
code: 'ERR_INVALID_MODULE_SPECIFIER',
20-
message:
21-
'Invalid module "data:application/json,[]" has an unsupported ' +
22-
'MIME type "application/json"',
16+
message: 'Invalid module "data:text/css,.error { color: red; }" has an unsupported MIME type "text/css"',
2317
});
2418
})().then(common.mustCall());

test/es-module/test-esm-json-cache.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
32

43
import { strictEqual, deepStrictEqual } from 'assert';

test/es-module/test-esm-json.mjs

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,6 @@
1-
// Flags: --experimental-json-modules
21
import '../common/index.mjs';
3-
import { path } from '../common/fixtures.mjs';
4-
import { strictEqual, ok } from 'assert';
5-
import { spawn } from 'child_process';
2+
import { strictEqual } from 'assert';
63

74
import secret from '../fixtures/experimental.json' assert { type: 'json' };
85

96
strictEqual(secret.ofLife, 42);
10-
11-
// Test warning message
12-
const child = spawn(process.execPath, [
13-
'--experimental-json-modules',
14-
path('/es-modules/json-modules.mjs'),
15-
]);
16-
17-
let stderr = '';
18-
child.stderr.setEncoding('utf8');
19-
child.stderr.on('data', (data) => {
20-
stderr += data;
21-
});
22-
child.on('close', (code, signal) => {
23-
strictEqual(code, 0);
24-
strictEqual(signal, null);
25-
ok(stderr.toString().includes(
26-
'ExperimentalWarning: Importing JSON modules is an experimental feature. ' +
27-
'This feature could change at any time'
28-
));
29-
});

test/es-module/test-esm-non-js.js

Lines changed: 0 additions & 21 deletions
This file was deleted.

test/es-module/test-esm-non-js.mjs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { mustCall } from '../common/index.mjs';
2+
import { fileURL } from '../common/fixtures.mjs';
3+
import { match, strictEqual } from 'assert';
4+
import { spawn } from 'child_process';
5+
import { execPath } from 'process';
6+
7+
// Verify non-js extensions fail for ESM
8+
const child = spawn(execPath, [
9+
'--input-type=module',
10+
'--eval',
11+
`import ${JSON.stringify(fileURL('es-modules', 'file.unknown'))}`,
12+
]);
13+
14+
let stderr = '';
15+
child.stderr.setEncoding('utf8');
16+
child.stderr.on('data', (data) => {
17+
stderr += data;
18+
});
19+
child.on('close', mustCall((code, signal) => {
20+
strictEqual(code, 1);
21+
strictEqual(signal, null);
22+
match(stderr, /ERR_UNKNOWN_FILE_EXTENSION/);
23+
}));

0 commit comments

Comments
 (0)