node/lib/internal/test/binding.js

34 lines
987 B
JavaScript

'use strict';
const {
Error,
StringPrototypeStartsWith,
globalThis,
} = primordials;
process.emitWarning(
'These APIs are for internal testing only. Do not use them.',
'internal/test/binding');
function filteredInternalBinding(id) {
// Disallows internal bindings with names that start with 'internal_only'
// which means it should not be exposed to users even with
// --expose-internals.
if (StringPrototypeStartsWith(id, 'internal_only')) {
// This code is only intended for internal errors and is not documented.
// Do not use the normal error system.
// eslint-disable-next-line no-restricted-syntax
const error = new Error(`No such binding: ${id}`);
error.code = 'ERR_INVALID_MODULE';
throw error;
}
return internalBinding(id);
}
if (module.isPreloading) {
globalThis.internalBinding = filteredInternalBinding;
globalThis.primordials = primordials;
}
module.exports = { internalBinding: filteredInternalBinding, primordials };