A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nodejs/node/commit/dcca9ba560 below:

refactor `get_format` · nodejs/node@dcca9ba · GitHub

@@ -17,6 +17,7 @@ const {

17 17

mimeToFormat,

18 18

} = require('internal/modules/esm/formats');

19 19 20 +

const detectModule = getOptionValue('--experimental-detect-module');

20 21

const experimentalNetworkImports =

21 22

getOptionValue('--experimental-network-imports');

22 23

const { containsModuleSyntax } = internalBinding('contextify');

@@ -33,6 +34,17 @@ const protocolHandlers = {

33 34

'node:'() { return 'builtin'; },

34 35

};

35 36 37 +

/**

38 +

* Determine whether the given ambiguous source contains CommonJS or ES module syntax.

39 +

* @param {string | Buffer | undefined} source

40 +

* @param {URL} url

41 +

*/

42 +

function detectModuleFormat(source, url) {

43 +

if (!source) { return detectModule ? null : 'commonjs'; }

44 +

if (!detectModule) { return 'commonjs'; }

45 +

return containsModuleSyntax(`${source}`, fileURLToPath(url), url) ? 'module' : 'commonjs';

46 +

}

47 + 36 48

/**

37 49

* @param {URL} parsed

38 50

* @returns {string | null}

@@ -112,26 +124,23 @@ function getFileProtocolModuleFormat(url, context = { __proto__: null }, ignoreE

112 124

default: { // The user did not pass `--experimental-default-type`.

113 125

// `source` is undefined when this is called from `defaultResolve`;

114 126

// but this gets called again from `defaultLoad`/`defaultLoadSync`.

115 -

if (getOptionValue('--experimental-detect-module')) {

116 -

const format = source ?

117 -

(containsModuleSyntax(`${source}`, fileURLToPath(url), url) ? 'module' : 'commonjs') :

118 -

null;

119 -

if (format === 'module') {

120 -

// This module has a .js extension, a package.json with no `type` field, and ESM syntax.

121 -

// Warn about the missing `type` field so that the user can avoid the performance penalty of detection.

122 -

typelessPackageJsonFilesWarnedAbout ??= new SafeSet();

123 -

if (!typelessPackageJsonFilesWarnedAbout.has(pjsonPath)) {

124 -

const warning = `${url} parsed as an ES module because module syntax was detected;` +

125 -

` to avoid the performance penalty of syntax detection, add "type": "module" to ${pjsonPath}`;

126 -

process.emitWarning(warning, {

127 -

code: 'MODULE_TYPELESS_PACKAGE_JSON',

128 -

});

129 -

typelessPackageJsonFilesWarnedAbout.add(pjsonPath);

130 -

}

127 +

// For ambiguous files (no type field, .js extension) we return

128 +

// undefined from `resolve` and re-run the check in `load`.

129 +

const format = detectModuleFormat(source, url);

130 +

if (format === 'module') {

131 +

// This module has a .js extension, a package.json with no `type` field, and ESM syntax.

132 +

// Warn about the missing `type` field so that the user can avoid the performance penalty of detection.

133 +

typelessPackageJsonFilesWarnedAbout ??= new SafeSet();

134 +

if (!typelessPackageJsonFilesWarnedAbout.has(pjsonPath)) {

135 +

const warning = `${url} parsed as an ES module because module syntax was detected;` +

136 +

` to avoid the performance penalty of syntax detection, add "type": "module" to ${pjsonPath}`;

137 +

process.emitWarning(warning, {

138 +

code: 'MODULE_TYPELESS_PACKAGE_JSON',

139 +

});

140 +

typelessPackageJsonFilesWarnedAbout.add(pjsonPath);

131 141

}

132 -

return format;

133 142

}

134 -

return 'commonjs';

143 +

return format;

135 144

}

136 145

}

137 146

}

@@ -154,15 +163,14 @@ function getFileProtocolModuleFormat(url, context = { __proto__: null }, ignoreE

154 163

return 'commonjs';

155 164

}

156 165

default: { // The user did not pass `--experimental-default-type`.

157 -

if (getOptionValue('--experimental-detect-module')) {

158 -

if (!source) { return null; }

159 -

const format = getFormatOfExtensionlessFile(url);

160 -

if (format === 'module') {

161 -

return containsModuleSyntax(`${source}`, fileURLToPath(url), url) ? 'module' : 'commonjs';

162 -

}

166 +

if (!source) {

167 +

return null;

168 +

}

169 +

const format = getFormatOfExtensionlessFile(url);

170 +

if (format === 'wasm') {

163 171

return format;

164 172

}

165 -

return 'commonjs';

173 +

return detectModuleFormat(source, url);

166 174

}

167 175

}

168 176

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4