node/lib/internal/bootstrap/cache.js
Anna Henningsen 270ffb0fa7
src,lib: remove dead process.binding() code
There are no non-internal builtin modules left, so this
should be safe to remove to a large degree.

PR-URL: https://github.com/nodejs/node/pull/25829
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2019-02-03 20:41:53 +01:00

84 lines
2.0 KiB
JavaScript

'use strict';
// This is only exposed for internal build steps and testing purposes.
// We create new copies of the source and the code cache
// so the resources eventually used to compile builtin modules
// cannot be tampered with even with --expose-internals.
const { NativeModule } = require('internal/bootstrap/loaders');
const {
getCodeCache, compileFunction
} = internalBinding('native_module');
const { hasTracing, hasInspector } = internalBinding('config');
// Modules with source code compiled in js2c that
// cannot be compiled with the code cache.
const cannotBeRequired = [
'sys', // Deprecated.
'internal/v8_prof_polyfill',
'internal/v8_prof_processor',
'internal/per_context',
'internal/test/binding',
'internal/bootstrap/primordials',
'internal/bootstrap/loaders',
'internal/bootstrap/node'
];
// Skip modules that cannot be required when they are not
// built into the binary.
if (!hasInspector) {
cannotBeRequired.push(
'inspector',
'internal/util/inspector',
);
}
if (!hasTracing) {
cannotBeRequired.push('trace_events');
}
if (!process.versions.openssl) {
cannotBeRequired.push(
'crypto',
'https',
'http2',
'tls',
'_tls_common',
'_tls_wrap',
'internal/crypto/certificate',
'internal/crypto/cipher',
'internal/crypto/diffiehellman',
'internal/crypto/hash',
'internal/crypto/keygen',
'internal/crypto/keys',
'internal/crypto/pbkdf2',
'internal/crypto/random',
'internal/crypto/scrypt',
'internal/crypto/sig',
'internal/crypto/util',
'internal/http2/core',
'internal/http2/compat',
'internal/policy/manifest',
'internal/process/policy',
'internal/streams/lazy_transform',
);
}
const cachableBuiltins = [];
for (const id of NativeModule.map.keys()) {
if (id.startsWith('internal/deps') || id.startsWith('internal/main')) {
cannotBeRequired.push(id);
}
if (!cannotBeRequired.includes(id)) {
cachableBuiltins.push(id);
}
}
module.exports = {
cachableBuiltins,
getCodeCache,
compileFunction,
cannotBeRequired
};