31 lines
971 B
TypeScript
31 lines
971 B
TypeScript
![]() |
// Pre-initialization code for sandboxed renderers.
|
||
|
|
||
|
import * as events from 'events';
|
||
|
|
||
|
declare const binding: {
|
||
|
get: (name: string) => any;
|
||
|
process: NodeJS.Process;
|
||
|
};
|
||
|
|
||
|
// Expose internal binding getter.
|
||
|
process._linkedBinding = binding.get;
|
||
|
|
||
|
const { EventEmitter } = events;
|
||
|
const v8Util = process._linkedBinding('electron_common_v8_util');
|
||
|
|
||
|
// Include properties from script 'binding' parameter.
|
||
|
Object.assign(process, binding.process);
|
||
|
|
||
|
// Expose Buffer shim as a hidden value. This is used by C++ code to
|
||
|
// deserialize Buffer instances sent from browser process.
|
||
|
v8Util.setHiddenValue(global, 'Buffer', Buffer);
|
||
|
|
||
|
// The process object created by webpack is not an event emitter, fix it so
|
||
|
// the API is more compatible with non-sandboxed renderers.
|
||
|
for (const prop of Object.keys(EventEmitter.prototype) as (keyof typeof process)[]) {
|
||
|
if (Object.hasOwn(process, prop)) {
|
||
|
delete process[prop];
|
||
|
}
|
||
|
}
|
||
|
Object.setPrototypeOf(process, EventEmitter.prototype);
|