UNPKG

sussudio

Version:

An unofficial VS Code Internal API

119 lines (118 loc) 4.98 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { INodeProcess, IProcessEnvironment } from "../../../common/platform.mjs"; import { ISandboxConfiguration } from "../common/sandboxTypes.mjs"; import { IpcRenderer, ProcessMemoryInfo, WebFrame } from "./electronTypes.mjs"; /** * In sandboxed renderers we cannot expose all of the `process` global of node.js */ export interface ISandboxNodeProcess extends INodeProcess { /** * The process.platform property returns a string identifying the operating system platform * on which the Node.js process is running. */ readonly platform: string; /** * The process.arch property returns a string identifying the CPU architecture * on which the Node.js process is running. */ readonly arch: string; /** * The type will always be `renderer`. */ readonly type: string; /** * Whether the process is sandboxed or not. */ readonly sandboxed: boolean; /** * The `process.pid` property returns the PID of the process. * * @deprecated this property will be removed once sandbox is enabled. * * TODO@bpasero remove this property when sandbox is on */ readonly pid: number; /** * A list of versions for the current node.js/electron configuration. */ readonly versions: { [key: string]: string | undefined; }; /** * The process.env property returns an object containing the user environment. */ readonly env: IProcessEnvironment; /** * The `execPath` will be the location of the executable of this application. */ readonly execPath: string; /** * A listener on the process. Only a small subset of listener types are allowed. */ on: (type: string, callback: Function) => void; /** * The current working directory of the process. */ cwd: () => string; /** * Resolves with a ProcessMemoryInfo * * Returns an object giving memory usage statistics about the current process. Note * that all statistics are reported in Kilobytes. This api should be called after * app ready. * * Chromium does not provide `residentSet` value for macOS. This is because macOS * performs in-memory compression of pages that haven't been recently used. As a * result the resident set size value is not what one would expect. `private` * memory is more representative of the actual pre-compression memory usage of the * process on macOS. */ getProcessMemoryInfo: () => Promise<ProcessMemoryInfo>; /** * Returns a process environment that includes all shell environment variables even if * the application was not started from a shell / terminal / console. * * There are different layers of environment that will apply: * - `process.env`: this is the actual environment of the process before this method * - `shellEnv` : if the program was not started from a terminal, we resolve all shell * variables to get the same experience as if the program was started from * a terminal (Linux, macOS) * - `userEnv` : this is instance specific environment, e.g. if the user started the program * from a terminal and changed certain variables * * The order of overwrites is `process.env` < `shellEnv` < `userEnv`. */ shellEnv(): Promise<IProcessEnvironment>; } export interface IpcMessagePort { /** * Acquire a `MessagePort`. The main process will transfer the port over to * the `responseChannel` with a payload of `requestNonce` so that the source can * correlate the response. * * The source should install a `window.on('message')` listener, ensuring `e.data` * matches `nonce`, `e.source` matches `window` and then receiving the `MessagePort` * via `e.ports[0]`. */ acquire(responseChannel: string, nonce: string): void; } export interface ISandboxContext { /** * A configuration object made accessible from the main side * to configure the sandbox browser window. Will be `undefined` * for as long as `resolveConfiguration` is not awaited. */ configuration(): ISandboxConfiguration | undefined; /** * Allows to await the resolution of the configuration object. */ resolveConfiguration(): Promise<ISandboxConfiguration>; } export declare const ipcRenderer: IpcRenderer; export declare const ipcMessagePort: IpcMessagePort; export declare const webFrame: WebFrame; export declare const process: ISandboxNodeProcess; export declare const context: ISandboxContext;