Skip to content

Commit 0257fd7

Browse files
committed
process: wrap process.binding for selective fallthrough
Selectively fallthrough `process.binding()` to `internalBinding()` Refs: #22163 PR-URL: #22269 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Jon Moss <me@jonathanmoss.me> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1 parent a091fbe commit 0257fd7

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

lib/internal/bootstrap/node.js

+15
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,21 @@
318318
for (var i = 0; i < arguments.length; i++)
319319
this.push(arguments[i]);
320320
}
321+
322+
// Deprecated specific process.binding() modules, but not all, allow
323+
// selective fallback to internalBinding for the deprecated ones.
324+
const { SafeSet } = NativeModule.require('internal/safe_globals');
325+
const processBinding = process.binding;
326+
// internalBindingWhitelist contains the name of internalBinding modules
327+
// that are whitelisted for access via process.binding()... this is used
328+
// to provide a transition path for modules that are being moved over to
329+
// internalBinding.
330+
const internalBindingWhitelist = new SafeSet(['uv']);
331+
process.binding = function binding(name) {
332+
return internalBindingWhitelist.has(name) ?
333+
internalBinding(name) :
334+
processBinding(name);
335+
};
321336
}
322337

323338
function setupGlobalVariables() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Flags: --no-warnings
2+
'use strict';
3+
4+
require('../common');
5+
const assert = require('assert');
6+
7+
// Assert that whitelisted internalBinding modules are accessible via
8+
// process.binding().
9+
assert(process.binding('uv'));

0 commit comments

Comments
 (0)