node/deps/npm/node_modules/builtins/index.js
npm team 2d84620f86
deps: upgrade npm to 8.6.0
PR-URL: https://github.com/nodejs/node/pull/42550
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Mestery <mestery@protonmail.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
2022-04-09 12:56:30 +02:00

80 lines
1.4 KiB
JavaScript

'use strict'
const semver = require('semver')
const permanentModules = [
'assert',
'buffer',
'child_process',
'cluster',
'console',
'constants',
'crypto',
'dgram',
'dns',
'domain',
'events',
'fs',
'http',
'https',
'module',
'net',
'os',
'path',
'punycode',
'querystring',
'readline',
'repl',
'stream',
'string_decoder',
'sys',
'timers',
'tls',
'tty',
'url',
'util',
'vm',
'zlib'
]
const versionLockedModules = {
freelist: '<6.0.0',
v8: '>=1.0.0',
process: '>=1.1.0',
inspector: '>=8.0.0',
async_hooks: '>=8.1.0',
http2: '>=8.4.0',
perf_hooks: '>=8.5.0',
trace_events: '>=10.0.0',
worker_threads: '>=12.0.0'
}
const experimentalModules = {
worker_threads: '>=10.5.0',
wasi: '>=12.16.0',
diagnostics_channel: '^14.17.0 || >=15.1.0'
}
module.exports = ({ version = process.version, experimental = false } = {}) => {
const builtins = [...permanentModules]
for (const [name, semverRange] of Object.entries(versionLockedModules)) {
if (version === '*' || semver.satisfies(version, semverRange)) {
builtins.push(name)
}
}
if (experimental) {
for (const [name, semverRange] of Object.entries(experimentalModules)) {
if (
!builtins.includes(name) &&
(version === '*' || semver.satisfies(version, semverRange))
) {
builtins.push(name)
}
}
}
return builtins
}