mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
esm - reduce diff to branch (#221154)
This commit is contained in:
@@ -69,4 +69,3 @@ function startServer(programArgs) {
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
|
||||
112
src/bootstrap-amd.js
vendored
112
src/bootstrap-amd.js
vendored
@@ -7,10 +7,28 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* @typedef {import('./vs/nls').INLSConfiguration} INLSConfiguration
|
||||
* @import { INLSConfiguration } from './vs/nls'
|
||||
* @import { IProductConfiguration } from './vs/base/common/product'
|
||||
*/
|
||||
|
||||
// ESM-comment-begin
|
||||
const isESM = false;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import * as fs from 'fs';
|
||||
// import { fileURLToPath } from 'url';
|
||||
// import { createRequire } from 'node:module';
|
||||
// import { product, pkg } from './bootstrap-meta.js';
|
||||
// import * as bootstrap from './bootstrap.js';
|
||||
// import * as performance from './vs/base/common/performance.js';
|
||||
//
|
||||
// const require = createRequire(import.meta.url);
|
||||
// const isESM = true;
|
||||
// const module = { exports: {} };
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
// Store the node.js require function in a variable
|
||||
// before loading our AMD loader to avoid issues
|
||||
// when this file is bundled with other files.
|
||||
@@ -21,7 +39,12 @@ globalThis._VSCODE_NODE_MODULES = new Proxy(Object.create(null), { get: (_target
|
||||
|
||||
// VSCODE_GLOBALS: package/product.json
|
||||
/** @type Partial<IProductConfiguration> */
|
||||
// ESM-comment-begin
|
||||
globalThis._VSCODE_PRODUCT_JSON = require('./bootstrap-meta').product;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// globalThis._VSCODE_PRODUCT_JSON = { ...product };
|
||||
// ESM-uncomment-end
|
||||
if (process.env['VSCODE_DEV']) {
|
||||
// Patch product overrides when running out of sources
|
||||
try {
|
||||
@@ -30,29 +53,21 @@ if (process.env['VSCODE_DEV']) {
|
||||
globalThis._VSCODE_PRODUCT_JSON = Object.assign(globalThis._VSCODE_PRODUCT_JSON, overrides);
|
||||
} catch (error) { /* ignore */ }
|
||||
}
|
||||
// ESM-comment-begin
|
||||
globalThis._VSCODE_PACKAGE_JSON = require('./bootstrap-meta').pkg;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// globalThis._VSCODE_PACKAGE_JSON = { ...pkg };
|
||||
// ESM-uncomment-end
|
||||
|
||||
// @ts-ignore
|
||||
const loader = require('./vs/loader');
|
||||
// VSCODE_GLOBALS: file root of all resources
|
||||
globalThis._VSCODE_FILE_ROOT = __dirname;
|
||||
|
||||
// ESM-comment-begin
|
||||
const bootstrap = require('./bootstrap');
|
||||
const performance = require('./vs/base/common/performance');
|
||||
const performance = require(`./vs/base/common/performance`);
|
||||
const fs = require('fs');
|
||||
|
||||
// Bootstrap: Loader
|
||||
loader.config({
|
||||
baseUrl: bootstrap.fileUriFromPath(__dirname, { isWindows: process.platform === 'win32' }),
|
||||
catchError: true,
|
||||
nodeRequire,
|
||||
amdModulesPattern: /^vs\//,
|
||||
recordStats: true
|
||||
});
|
||||
|
||||
// Running in Electron
|
||||
if (process.env['ELECTRON_RUN_AS_NODE'] || process.versions['electron']) {
|
||||
loader.define('fs', ['original-fs'], function (/** @type {import('fs')} */originalFS) {
|
||||
return originalFS; // replace the patched electron fs with the original node fs for all AMD code
|
||||
});
|
||||
}
|
||||
// ESM-comment-end
|
||||
|
||||
//#region NLS helpers
|
||||
|
||||
@@ -138,12 +153,56 @@ async function doSetupNLS() {
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region Loader Config
|
||||
|
||||
if (isESM) {
|
||||
|
||||
/**
|
||||
* @param {string=} entrypoint
|
||||
* @param {(value: any) => void=} onLoad
|
||||
* @param {(err: Error) => void=} onError
|
||||
* @param {(value: any) => void} [onLoad]
|
||||
* @param {(err: Error) => void} [onError]
|
||||
*/
|
||||
exports.load = function (entrypoint, onLoad, onError) {
|
||||
module.exports.load = function (entrypoint, onLoad, onError) {
|
||||
if (!entrypoint) {
|
||||
return;
|
||||
}
|
||||
|
||||
entrypoint = `./${entrypoint}.js`;
|
||||
|
||||
onLoad = onLoad || function () { };
|
||||
onError = onError || function (err) { console.error(err); };
|
||||
|
||||
setupNLS().then(() => {
|
||||
performance.mark(`code/fork/willLoadCode`);
|
||||
import(entrypoint).then(onLoad, onError);
|
||||
});
|
||||
};
|
||||
} else {
|
||||
|
||||
// @ts-ignore
|
||||
const loader = require('./vs/loader');
|
||||
|
||||
loader.config({
|
||||
baseUrl: bootstrap.fileUriFromPath(__dirname, { isWindows: process.platform === 'win32' }),
|
||||
catchError: true,
|
||||
nodeRequire,
|
||||
amdModulesPattern: /^vs\//,
|
||||
recordStats: true
|
||||
});
|
||||
|
||||
// Running in Electron
|
||||
if (process.env['ELECTRON_RUN_AS_NODE'] || process.versions['electron']) {
|
||||
loader.define('fs', ['original-fs'], function (/** @type {import('fs')} */originalFS) {
|
||||
return originalFS; // replace the patched electron fs with the original node fs for all AMD code
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string=} entrypoint
|
||||
* @param {(value: any) => void} [onLoad]
|
||||
* @param {(err: Error) => void} [onError]
|
||||
*/
|
||||
module.exports.load = function (entrypoint, onLoad, onError) {
|
||||
if (!entrypoint) {
|
||||
return;
|
||||
}
|
||||
@@ -166,3 +225,10 @@ exports.load = function (entrypoint, onLoad, onError) {
|
||||
loader([entrypoint], onLoad, onError);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const load = module.exports.load;
|
||||
// ESM-uncomment-end
|
||||
|
||||
15
src/bootstrap-fork.js
vendored
15
src/bootstrap-fork.js
vendored
@@ -6,11 +6,20 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// ESM-comment-begin
|
||||
const performance = require('./vs/base/common/performance');
|
||||
performance.mark('code/fork/start');
|
||||
|
||||
const bootstrap = require('./bootstrap');
|
||||
const bootstrapNode = require('./bootstrap-node');
|
||||
const bootstrapAmd = require('./bootstrap-amd');
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as performance from './vs/base/common/performance.js';
|
||||
// import * as bootstrap from './bootstrap.js';
|
||||
// import * as bootstrapNode from './bootstrap-node.js';
|
||||
// import * as bootstrapAmd from './bootstrap-amd.js';
|
||||
// ESM-uncomment-end
|
||||
|
||||
performance.mark('code/fork/start');
|
||||
|
||||
// Crash reporter
|
||||
configureCrashReporter();
|
||||
@@ -41,7 +50,7 @@ if (process.env['VSCODE_PARENT_PID']) {
|
||||
}
|
||||
|
||||
// Load AMD entry point
|
||||
require('./bootstrap-amd').load(process.env['VSCODE_AMD_ENTRYPOINT']);
|
||||
bootstrapAmd.load(process.env['VSCODE_AMD_ENTRYPOINT']);
|
||||
|
||||
|
||||
//#region Helpers
|
||||
|
||||
16
src/bootstrap-meta.js
vendored
16
src/bootstrap-meta.js
vendored
@@ -10,6 +10,13 @@
|
||||
* @import { IProductConfiguration } from './vs/base/common/product'
|
||||
*/
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// import { createRequire } from 'node:module';
|
||||
//
|
||||
// const require = createRequire(import.meta.url);
|
||||
// const module = { exports: {} };
|
||||
// ESM-uncomment-end
|
||||
|
||||
/** @type Partial<IProductConfiguration> & { BUILD_INSERT_PRODUCT_CONFIGURATION?: string } */
|
||||
let product = { BUILD_INSERT_PRODUCT_CONFIGURATION: 'BUILD_INSERT_PRODUCT_CONFIGURATION' }; // DO NOT MODIFY, PATCHED DURING BUILD
|
||||
if (product['BUILD_INSERT_PRODUCT_CONFIGURATION']) {
|
||||
@@ -24,5 +31,10 @@ if (pkg['BUILD_INSERT_PACKAGE_CONFIGURATION']) {
|
||||
pkg = require('../package.json'); // Running out of sources
|
||||
}
|
||||
|
||||
exports.product = product;
|
||||
exports.pkg = pkg;
|
||||
module.exports.product = product;
|
||||
module.exports.pkg = pkg;
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const product = module.exports.product;
|
||||
// export const pkg = module.exports.pkg;
|
||||
// ESM-uncomment-end
|
||||
|
||||
46
src/bootstrap-node.js
vendored
46
src/bootstrap-node.js
vendored
@@ -6,12 +6,28 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// ESM-comment-begin
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const isESM = false;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import * as fs from 'fs';
|
||||
// import { fileURLToPath } from 'url';
|
||||
// import { createRequire } from 'node:module';
|
||||
//
|
||||
// const require = createRequire(import.meta.url);
|
||||
// const isESM = true;
|
||||
// const module = { exports: {} };
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
// Setup current working directory in all our node & electron processes
|
||||
// - Windows: call `process.chdir()` to always set application folder as cwd
|
||||
// - all OS: store the `process.cwd()` inside `VSCODE_CWD` for consistent lookups
|
||||
function setupCurrentWorkingDirectory() {
|
||||
const path = require('path');
|
||||
|
||||
try {
|
||||
|
||||
// Store the `process.cwd()` inside `VSCODE_CWD`
|
||||
@@ -38,14 +54,18 @@ setupCurrentWorkingDirectory();
|
||||
*
|
||||
* @param {string} injectPath
|
||||
*/
|
||||
exports.injectNodeModuleLookupPath = function (injectPath) {
|
||||
module.exports.injectNodeModuleLookupPath = function (injectPath) {
|
||||
if (!injectPath) {
|
||||
throw new Error('Missing injectPath');
|
||||
}
|
||||
|
||||
const Module = require('module');
|
||||
const path = require('path');
|
||||
|
||||
const Module = require('node:module');
|
||||
if (isESM) {
|
||||
// register a loader hook
|
||||
// ESM-uncomment-begin
|
||||
// Module.register('./server-loader.mjs', { parentURL: import.meta.url, data: injectPath });
|
||||
// ESM-uncomment-end
|
||||
} else {
|
||||
const nodeModulesPath = path.join(__dirname, '../node_modules');
|
||||
|
||||
// @ts-ignore
|
||||
@@ -65,9 +85,10 @@ exports.injectNodeModuleLookupPath = function (injectPath) {
|
||||
|
||||
return paths;
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
exports.removeGlobalNodeModuleLookupPaths = function () {
|
||||
module.exports.removeGlobalNodeModuleLookupPaths = function () {
|
||||
const Module = require('module');
|
||||
// @ts-ignore
|
||||
const globalPaths = Module.globalPaths;
|
||||
@@ -95,10 +116,7 @@ exports.removeGlobalNodeModuleLookupPaths = function () {
|
||||
* @param {Partial<import('./vs/base/common/product').IProductConfiguration>} product
|
||||
* @returns {{ portableDataPath: string; isPortable: boolean; }}
|
||||
*/
|
||||
exports.configurePortable = function (product) {
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
module.exports.configurePortable = function (product) {
|
||||
const appRoot = path.dirname(__dirname);
|
||||
|
||||
/**
|
||||
@@ -158,3 +176,9 @@ exports.configurePortable = function (product) {
|
||||
isPortable
|
||||
};
|
||||
};
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const injectNodeModuleLookupPath = module.exports.injectNodeModuleLookupPath;
|
||||
// export const removeGlobalNodeModuleLookupPaths = module.exports.removeGlobalNodeModuleLookupPaths;
|
||||
// export const configurePortable = module.exports.configurePortable;
|
||||
// ESM-uncomment-end
|
||||
|
||||
98
src/bootstrap-window.js
vendored
98
src/bootstrap-window.js
vendored
@@ -10,12 +10,20 @@
|
||||
|
||||
/**
|
||||
* @import { ISandboxConfiguration } from './vs/base/parts/sandbox/common/sandboxTypes'
|
||||
* @typedef {any} LoaderConfig
|
||||
*/
|
||||
|
||||
/* eslint-disable no-restricted-globals */
|
||||
/* eslint-disable no-restricted-globals, */
|
||||
|
||||
// ESM-comment-begin
|
||||
const isESM = false;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// const isESM = true;
|
||||
// ESM-uncomment-end
|
||||
|
||||
// Simple module style to support node.js and browser environments
|
||||
(function (globalThis, factory) {
|
||||
(function (factory) {
|
||||
|
||||
// Node.js
|
||||
if (typeof exports === 'object') {
|
||||
@@ -27,7 +35,7 @@
|
||||
// @ts-ignore
|
||||
globalThis.MonacoBootstrapWindow = factory();
|
||||
}
|
||||
}(this, function () {
|
||||
}(function () {
|
||||
const bootstrapLib = bootstrap();
|
||||
const preloadGlobals = sandboxGlobals();
|
||||
const safeProcess = preloadGlobals.process;
|
||||
@@ -96,7 +104,79 @@
|
||||
|
||||
window['MonacoEnvironment'] = {};
|
||||
|
||||
/** @type {any} */
|
||||
if (isESM) {
|
||||
|
||||
// Signal before require()
|
||||
if (typeof options?.beforeRequire === 'function') {
|
||||
options.beforeRequire(configuration);
|
||||
}
|
||||
|
||||
const fileRoot = `${configuration.appRoot}/out`;
|
||||
globalThis._VSCODE_FILE_ROOT = fileRoot;
|
||||
|
||||
// DEV ---------------------------------------------------------------------------------------
|
||||
// DEV: This is for development and enables loading CSS via import-statements via import-maps.
|
||||
// DEV: For each CSS modules that we have we defined an entry in the import map that maps to
|
||||
// DEV: a blob URL that loads the CSS via a dynamic @import-rule.
|
||||
// DEV ---------------------------------------------------------------------------------------
|
||||
if (configuration.cssModules) {
|
||||
performance.mark('code/willAddCssLoader');
|
||||
|
||||
const style = document.createElement('style');
|
||||
style.type = 'text/css';
|
||||
style.media = 'screen';
|
||||
style.id = 'vscode-css-loading';
|
||||
document.head.appendChild(style);
|
||||
|
||||
globalThis._VSCODE_CSS_LOAD = function (url) {
|
||||
style.textContent += `@import url(${url});\n`;
|
||||
};
|
||||
|
||||
const baseUrl = new URL(`vscode-file://vscode-app${fileRoot}/`);
|
||||
/**
|
||||
* @type { { imports: Record<string, string> }}
|
||||
*/
|
||||
const importMap = { imports: {} };
|
||||
for (const cssModule of configuration.cssModules) {
|
||||
const cssUrl = new URL(cssModule, baseUrl).href;
|
||||
const jsSrc = `globalThis._VSCODE_CSS_LOAD('${cssUrl}');\n`;
|
||||
const blob = new Blob([jsSrc], { type: 'application/javascript' });
|
||||
importMap.imports[cssUrl] = URL.createObjectURL(blob);
|
||||
}
|
||||
|
||||
const ttp = window.trustedTypes?.createPolicy('vscode-bootstrapImportMap', { createScript(value) { return value; }, });
|
||||
const importMapSrc = JSON.stringify(importMap, undefined, 2);
|
||||
const importMapScript = document.createElement('script');
|
||||
importMapScript.type = 'importmap';
|
||||
importMapScript.setAttribute('nonce', '0c6a828f1297');
|
||||
// @ts-ignore
|
||||
importMapScript.textContent = ttp?.createScript(importMapSrc) ?? importMapSrc;
|
||||
document.head.appendChild(importMapScript);
|
||||
|
||||
performance.mark('code/didAddCssLoader');
|
||||
}
|
||||
|
||||
const result = Promise.all(modulePaths.map(modulePath => {
|
||||
if (modulePath.includes('vs/css!')) {
|
||||
// ESM/CSS when seeing the old `vs/css!` prefix we use that as a signal to
|
||||
// load CSS via a <link> tag
|
||||
const cssModule = modulePath.replace('vs/css!', '');
|
||||
const link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.href = `${configuration.appRoot}/out/${cssModule}.css`;
|
||||
document.head.appendChild(link);
|
||||
return Promise.resolve();
|
||||
|
||||
} else {
|
||||
// ESM/JS module loading
|
||||
return import(`${configuration.appRoot}/out/${modulePath}.js`);
|
||||
}
|
||||
}));
|
||||
|
||||
result.then((res) => invokeResult(res[0]), onUnexpectedError);
|
||||
} else {
|
||||
|
||||
/** @type {LoaderConfig} */
|
||||
const loaderConfig = {
|
||||
baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32', scheme: 'vscode-file', fallbackAuthority: 'vscode-app' })}/out`,
|
||||
preferScriptTags: true
|
||||
@@ -148,7 +228,13 @@
|
||||
}
|
||||
|
||||
// Actually require the main module as specified
|
||||
require(modulePaths, async firstModule => {
|
||||
require(modulePaths, invokeResult, onUnexpectedError);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {any} firstModule
|
||||
*/
|
||||
async function invokeResult(firstModule) {
|
||||
try {
|
||||
|
||||
// Callback only after process environment is resolved
|
||||
@@ -163,7 +249,7 @@
|
||||
} catch (error) {
|
||||
onUnexpectedError(error, enableDeveloperKeybindings);
|
||||
}
|
||||
}, onUnexpectedError);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
24
src/bootstrap.js
vendored
24
src/bootstrap.js
vendored
@@ -6,11 +6,24 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// TODO@bpasero this file can no longer be used from a non-node.js context and thus should
|
||||
// move into bootstrap-node.js and remaining usages (if any) in browser context be replaced.
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import { createRequire } from 'node:module';
|
||||
// import { fileURLToPath } from 'url';
|
||||
//
|
||||
// const require = createRequire(import.meta.url);
|
||||
// const module = { exports: {} };
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
// Simple module style to support node.js and browser environments
|
||||
(function (globalThis, factory) {
|
||||
(function (factory) {
|
||||
|
||||
// Node.js
|
||||
if (typeof exports === 'object') {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
module.exports = factory();
|
||||
}
|
||||
|
||||
@@ -19,7 +32,7 @@
|
||||
// @ts-ignore
|
||||
globalThis.MonacoBootstrap = factory();
|
||||
}
|
||||
}(this, function () {
|
||||
}(function () {
|
||||
const Module = typeof require === 'function' ? require('module') : undefined;
|
||||
const path = typeof require === 'function' ? require('path') : undefined;
|
||||
|
||||
@@ -121,3 +134,8 @@
|
||||
fileUriFromPath
|
||||
};
|
||||
}));
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const enableASARSupport = module.exports.enableASARSupport;
|
||||
// export const fileUriFromPath = module.exports.fileUriFromPath;
|
||||
// ESM-uncomment-end
|
||||
|
||||
29
src/cli.js
29
src/cli.js
@@ -6,19 +6,32 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// Delete `VSCODE_CWD` very early even before
|
||||
// importing bootstrap files. We have seen
|
||||
// ESM-comment-begin
|
||||
const bootstrap = require('./bootstrap');
|
||||
const bootstrapNode = require('./bootstrap-node');
|
||||
const bootstrapAmd = require('./bootstrap-amd');
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
const product = require('./bootstrap-meta').product;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import { fileURLToPath } from 'url';
|
||||
// import * as bootstrap from './bootstrap.js';
|
||||
// import * as bootstrapNode from './bootstrap-node.js';
|
||||
// import * as bootstrapAmd from './bootstrap-amd.js';
|
||||
// import { resolveNLSConfiguration } from './vs/base/node/nls.js';
|
||||
// import { product } from './bootstrap-meta.js';
|
||||
//
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
// Delete `VSCODE_CWD` very early. We have seen
|
||||
// reports where `code .` would use the wrong
|
||||
// current working directory due to our variable
|
||||
// somehow escaping to the parent shell
|
||||
// (https://github.com/microsoft/vscode/issues/126399)
|
||||
delete process.env['VSCODE_CWD'];
|
||||
|
||||
const bootstrap = require('./bootstrap');
|
||||
const bootstrapNode = require('./bootstrap-node');
|
||||
const product = require('./bootstrap-meta').product;
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
|
||||
async function start() {
|
||||
|
||||
// NLS
|
||||
@@ -36,7 +49,7 @@ async function start() {
|
||||
process.env['VSCODE_CLI'] = '1';
|
||||
|
||||
// Load CLI through AMD loader
|
||||
require('./bootstrap-amd').load('vs/code/node/cli');
|
||||
bootstrapAmd.load('vs/code/node/cli');
|
||||
}
|
||||
|
||||
start();
|
||||
|
||||
42
src/main.js
42
src/main.js
@@ -11,19 +11,43 @@
|
||||
* @import { NativeParsedArgs } from './vs/platform/environment/common/argv'
|
||||
*/
|
||||
|
||||
const perf = require('./vs/base/common/performance');
|
||||
perf.mark('code/didStartMain');
|
||||
|
||||
// ESM-comment-begin
|
||||
const path = require('path');
|
||||
const fs = require('original-fs');
|
||||
const os = require('os');
|
||||
const minimist = require('minimist');
|
||||
const bootstrap = require('./bootstrap');
|
||||
const bootstrapNode = require('./bootstrap-node');
|
||||
const { getUserDataPath } = require('./vs/platform/environment/node/userDataPath');
|
||||
const bootstrapAmd = require('./bootstrap-amd');
|
||||
const { getUserDataPath } = require(`./vs/platform/environment/node/userDataPath`);
|
||||
const { parse } = require('./vs/base/common/jsonc');
|
||||
const perf = require('./vs/base/common/performance');
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
const { getUNCHost, addUNCHostToAllowlist } = require('./vs/base/node/unc');
|
||||
const product = require('./bootstrap-meta').product;
|
||||
const { app, protocol, crashReporter, Menu } = require('electron');
|
||||
const { app, protocol, crashReporter, Menu, contentTracing } = require('electron');
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import * as fs from 'original-fs';
|
||||
// import * as os from 'os';
|
||||
// import { fileURLToPath } from 'url';
|
||||
// import { app, protocol, crashReporter, Menu, contentTracing } from 'electron';
|
||||
// import minimist from 'minimist';
|
||||
// import * as bootstrap from './bootstrap.js';
|
||||
// import * as bootstrapNode from './bootstrap-node.js';
|
||||
// import * as bootstrapAmd from './bootstrap-amd.js';
|
||||
// import { product } from './bootstrap-meta.js';
|
||||
// import { parse } from './vs/base/common/jsonc.js';
|
||||
// import { getUserDataPath } from './vs/platform/environment/node/userDataPath.js';
|
||||
// import * as perf from './vs/base/common/performance.js';
|
||||
// import { resolveNLSConfiguration } from './vs/base/node/nls.js';
|
||||
// import { getUNCHost, addUNCHostToAllowlist } from './vs/base/node/unc.js';
|
||||
//
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
perf.mark('code/didStartMain');
|
||||
|
||||
// Enable portable support
|
||||
const portable = bootstrapNode.configurePortable(product);
|
||||
@@ -121,7 +145,6 @@ let nlsConfigurationPromise = undefined;
|
||||
const osLocale = processZhLocale((app.getPreferredSystemLanguages()?.[0] ?? 'en').toLowerCase());
|
||||
const userLocale = getUserDefinedLocale(argvConfig);
|
||||
if (userLocale) {
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
nlsConfigurationPromise = resolveNLSConfiguration({
|
||||
userLocale,
|
||||
osLocale,
|
||||
@@ -147,8 +170,6 @@ if (process.platform === 'win32' || process.platform === 'linux') {
|
||||
// Load our code once ready
|
||||
app.once('ready', function () {
|
||||
if (args['trace']) {
|
||||
const contentTracing = require('electron').contentTracing;
|
||||
|
||||
const traceOptions = {
|
||||
categoryFilter: args['trace-category-filter'] || '*',
|
||||
traceOptions: args['trace-options'] || 'record-until-full,enable-sampling'
|
||||
@@ -187,7 +208,7 @@ function startup(codeCachePath, nlsConfig) {
|
||||
|
||||
// Load main in AMD
|
||||
perf.mark('code/willLoadMainBundle');
|
||||
require('./bootstrap-amd').load('vs/code/electron-main/main', () => {
|
||||
bootstrapAmd.load('vs/code/electron-main/main', () => {
|
||||
perf.mark('code/didLoadMainBundle');
|
||||
});
|
||||
}
|
||||
@@ -495,8 +516,6 @@ function getJSFlags(cliArgs) {
|
||||
* @returns {NativeParsedArgs}
|
||||
*/
|
||||
function parseCLIArgs() {
|
||||
const minimist = require('minimist');
|
||||
|
||||
return minimist(process.argv, {
|
||||
string: [
|
||||
'user-data-dir',
|
||||
@@ -665,7 +684,6 @@ async function resolveNlsConfiguration() {
|
||||
// See above the comment about the loader and case sensitiveness
|
||||
userLocale = processZhLocale(userLocale.toLowerCase());
|
||||
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
return resolveNLSConfiguration({
|
||||
userLocale,
|
||||
osLocale,
|
||||
|
||||
@@ -6,9 +6,23 @@
|
||||
// @ts-check
|
||||
'use strict';
|
||||
|
||||
// ESM-comment-begin
|
||||
const path = require('path');
|
||||
const product = require('./bootstrap-meta').product;
|
||||
const bootstrapNode = require('./bootstrap-node');
|
||||
const bootstrapAmd = require('./bootstrap-amd');
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
const product = require('./bootstrap-meta').product;
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import { fileURLToPath } from 'url';
|
||||
// import * as bootstrapNode from './bootstrap-node.js';
|
||||
// import * as bootstrapAmd from './bootstrap-amd.js';
|
||||
// import { resolveNLSConfiguration } from './vs/base/node/nls.js';
|
||||
// import { product } from './bootstrap-meta.js';
|
||||
//
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
async function start() {
|
||||
|
||||
@@ -23,11 +37,11 @@ async function start() {
|
||||
// When running out of sources, we need to load node modules from remote/node_modules,
|
||||
// which are compiled against nodejs, not electron
|
||||
process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH'] = process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH'] || path.join(__dirname, '..', 'remote', 'node_modules');
|
||||
require('./bootstrap-node').injectNodeModuleLookupPath(process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']);
|
||||
bootstrapNode.injectNodeModuleLookupPath(process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']);
|
||||
} else {
|
||||
delete process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH'];
|
||||
}
|
||||
require('./bootstrap-amd').load('vs/server/node/server.cli');
|
||||
bootstrapAmd.load('vs/server/node/server.cli');
|
||||
}
|
||||
|
||||
start();
|
||||
|
||||
@@ -8,25 +8,46 @@
|
||||
|
||||
/**
|
||||
* @import { INLSConfiguration } from './vs/nls'
|
||||
*/
|
||||
|
||||
/**
|
||||
* @import { IServerAPI } from './vs/server/node/remoteExtensionHostAgentServer'
|
||||
*/
|
||||
|
||||
const perf = require('./vs/base/common/performance');
|
||||
const performance = require('perf_hooks').performance;
|
||||
const product = require('./bootstrap-meta').product;
|
||||
const readline = require('readline');
|
||||
// ESM-comment-begin
|
||||
const path = require('path');
|
||||
const http = require('http');
|
||||
const os = require('os');
|
||||
const readline = require('readline');
|
||||
const performance = require('perf_hooks').performance;
|
||||
const bootstrapNode = require('./bootstrap-node');
|
||||
const bootstrapAmd = require('./bootstrap-amd');
|
||||
const { resolveNLSConfiguration } = require('./vs/base/node/nls');
|
||||
const product = require('./bootstrap-meta').product;
|
||||
const perf = require(`./vs/base/common/performance`);
|
||||
const minimist = require('minimist');
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import * as http from 'http';
|
||||
// import * as os from 'os';
|
||||
// import * as readline from 'readline';
|
||||
// import { performance }from 'perf_hooks';
|
||||
// import { fileURLToPath } from 'url';
|
||||
// import { createRequire } from 'node:module';
|
||||
// import * as bootstrapNode from './bootstrap-node.js';
|
||||
// import * as bootstrapAmd from './bootstrap-amd.js';
|
||||
// import { resolveNLSConfiguration } from './vs/base/node/nls.js';
|
||||
// import { product } from './bootstrap-meta.js';
|
||||
// import * as perf from './vs/base/common/performance.js';
|
||||
// import minimist from 'minimist';
|
||||
//
|
||||
// const require = createRequire(import.meta.url);
|
||||
// const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
// ESM-uncomment-end
|
||||
|
||||
perf.mark('code/server/start');
|
||||
// @ts-ignore
|
||||
global.vscodeServerStartTime = performance.now();
|
||||
|
||||
async function start() {
|
||||
const minimist = require('minimist');
|
||||
|
||||
// Do a quick parse to determine if a server or the cli needs to be started
|
||||
const parsedArgs = minimist(process.argv.slice(2), {
|
||||
@@ -73,9 +94,6 @@ async function start() {
|
||||
return _remoteExtensionHostAgentServerPromise;
|
||||
};
|
||||
|
||||
const http = require('http');
|
||||
const os = require('os');
|
||||
|
||||
if (Array.isArray(product.serverLicense) && product.serverLicense.length) {
|
||||
console.log(product.serverLicense.join('\n'));
|
||||
if (product.serverLicensePrompt && parsedArgs['accept-server-license-terms'] !== true) {
|
||||
@@ -263,8 +281,6 @@ async function findFreePort(host, start, end) {
|
||||
*/
|
||||
function loadCode(nlsConfiguration) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const path = require('path');
|
||||
|
||||
delete process.env['ELECTRON_RUN_AS_NODE']; // Keep bootstrap-amd.js from redefining 'fs'.
|
||||
|
||||
/** @type {INLSConfiguration} */
|
||||
@@ -280,11 +296,11 @@ function loadCode(nlsConfiguration) {
|
||||
// When running out of sources, we need to load node modules from remote/node_modules,
|
||||
// which are compiled against nodejs, not electron
|
||||
process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH'] = process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH'] || path.join(__dirname, '..', 'remote', 'node_modules');
|
||||
require('./bootstrap-node').injectNodeModuleLookupPath(process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']);
|
||||
bootstrapNode.injectNodeModuleLookupPath(process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']);
|
||||
} else {
|
||||
delete process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH'];
|
||||
}
|
||||
require('./bootstrap-amd').load('vs/server/node/server.main', resolve, reject);
|
||||
bootstrapAmd.load('vs/server/node/server.main', resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -39,5 +39,8 @@
|
||||
],
|
||||
"ban-element-insertadjacenthtml": [
|
||||
"**/*.ts"
|
||||
],
|
||||
"ban-script-content-assignments": [
|
||||
"bootstrap-window.js"
|
||||
]
|
||||
}
|
||||
|
||||
11
src/typings/vscode-globals-product.d.ts
vendored
11
src/typings/vscode-globals-product.d.ts
vendored
@@ -7,6 +7,17 @@
|
||||
|
||||
declare global {
|
||||
|
||||
/**
|
||||
* Holds the file root for resources.
|
||||
*/
|
||||
var _VSCODE_FILE_ROOT: string;
|
||||
|
||||
/**
|
||||
* CSS loader that's available during development time.
|
||||
* DO NOT call directly, instead just import css modules, like `import 'some.css'`
|
||||
*/
|
||||
var _VSCODE_CSS_LOAD: (module: string) => void;
|
||||
|
||||
/**
|
||||
* @deprecated You MUST use `IProductService` whenever possible.
|
||||
*/
|
||||
|
||||
@@ -8,8 +8,13 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// const module = { exports: {} };
|
||||
// ESM-uncomment-end
|
||||
|
||||
(function () {
|
||||
function factory(path, os, productName, cwd) {
|
||||
|
||||
function factory() {
|
||||
// First group matches a double quoted string
|
||||
// Second group matches a single quoted string
|
||||
// Third group matches a multi line comment
|
||||
@@ -77,3 +82,8 @@
|
||||
console.trace('jsonc defined in UNKNOWN context (neither requirejs or commonjs)');
|
||||
}
|
||||
})();
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const stripComments = module.exports.stripComments;
|
||||
// export const parse = module.exports.parse;
|
||||
// ESM-uncomment-end
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// const module = { exports: {} };
|
||||
// ESM-uncomment-end
|
||||
|
||||
(function () {
|
||||
|
||||
/**
|
||||
@@ -124,3 +128,8 @@
|
||||
}
|
||||
|
||||
})();
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const mark = module.exports.mark;
|
||||
// export const getMarks = module.exports.getMarks;
|
||||
// ESM-uncomment-end
|
||||
|
||||
7
src/vs/base/common/semver/semver.d.ts
vendored
7
src/vs/base/common/semver/semver.d.ts
vendored
@@ -3,9 +3,14 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
// ESM-comment-begin
|
||||
export as namespace semver;
|
||||
|
||||
export = semver;
|
||||
// ESM-comment-end
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export * from 'semver'
|
||||
// ESM-uncomment-end
|
||||
|
||||
declare namespace semver {
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -13,6 +13,14 @@
|
||||
* @import { IResolveNLSConfigurationContext } from './nls'
|
||||
*/
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// import * as path from 'path';
|
||||
// import * as fs from 'fs';
|
||||
// import * as perf from '../common/performance.js';
|
||||
//
|
||||
// const module = { exports: {} };
|
||||
// ESM-uncomment-end
|
||||
|
||||
(function () {
|
||||
|
||||
/**
|
||||
@@ -249,11 +257,17 @@
|
||||
define(['path', 'fs', 'vs/base/common/performance'], function (/** @type {typeof import('path')} */ path, /** @type {typeof import('fs')} */ fs, /** @type {typeof import('../common/performance')} */ perf) { return factory(path, fs, perf); });
|
||||
} else if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
// commonjs
|
||||
// ESM-comment-begin
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const perf = require('../common/performance');
|
||||
// ESM-comment-end
|
||||
module.exports = factory(path, fs, perf);
|
||||
} else {
|
||||
throw new Error('vs/base/node/nls defined in UNKNOWN context (neither requirejs or commonjs)');
|
||||
}
|
||||
})();
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const resolveNLSConfiguration = module.exports.resolveNLSConfiguration;
|
||||
// ESM-uncomment-end
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
//@ts-check
|
||||
'use strict';
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// const module = { exports: {} };
|
||||
// ESM-uncomment-end
|
||||
|
||||
(function () {
|
||||
function factory() {
|
||||
|
||||
@@ -148,3 +152,11 @@
|
||||
console.trace('vs/base/node/unc defined in UNKNOWN context (neither requirejs or commonjs)');
|
||||
}
|
||||
})();
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const getUNCHost = module.exports.getUNCHost;
|
||||
// export const getUNCHostAllowlist = module.exports.getUNCHostAllowlist;
|
||||
// export const addUNCHostToAllowlist = module.exports.addUNCHostToAllowlist;
|
||||
// export const disableUNCAccessRestrictions = module.exports.disableUNCAccessRestrictions;
|
||||
// export const isUNCAccessRestrictionsDisabled = module.exports.isUNCAccessRestrictionsDisabled;
|
||||
// ESM-uncomment-end
|
||||
|
||||
@@ -70,4 +70,9 @@ export interface ISandboxConfiguration {
|
||||
*/
|
||||
language: string | undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* DEV time only! All css-modules that we have.
|
||||
*/
|
||||
cssModules?: string[];
|
||||
}
|
||||
|
||||
@@ -309,8 +309,14 @@ export class SQLiteStorageDatabase implements IStorageDatabase {
|
||||
private doConnect(path: string): Promise<IDatabaseConnection> {
|
||||
return new Promise((resolve, reject) => {
|
||||
import('@vscode/sqlite3').then(sqlite3 => {
|
||||
// ESM-comment-begin
|
||||
const ctor = (this.logger.isTracing ? sqlite3.verbose().Database : sqlite3.Database);
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// const ctor = (this.logger.isTracing ? sqlite3.default.verbose().Database : sqlite3.default.Database);
|
||||
// ESM-uncomment-end
|
||||
const connection: IDatabaseConnection = {
|
||||
db: new (this.logger.isTracing ? sqlite3.verbose().Database : sqlite3.Database)(path, (error: (Error & { code?: string }) | null) => {
|
||||
db: new ctor(path, (error: (Error & { code?: string }) | null) => {
|
||||
if (error) {
|
||||
return (connection.db && error.code !== 'SQLITE_CANTOPEN' /* https://github.com/TryGhost/node-sqlite3/issues/1617 */) ? connection.db.close(() => reject(error)) : reject(error);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
//@ts-check
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
(function () {
|
||||
|
||||
/**
|
||||
* @import { ISandboxConfiguration } from '../../../base/parts/sandbox/common/sandboxTypes'
|
||||
*/
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
/// <reference path="../../../../typings/require.d.ts" />
|
||||
|
||||
//@ts-check
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
(function () {
|
||||
|
||||
/**
|
||||
* @import {INativeWindowConfiguration} from '../../../platform/window/common/window'
|
||||
* @import {NativeParsedArgs} from '../../../platform/environment/common/argv'
|
||||
|
||||
@@ -6,9 +6,17 @@
|
||||
/// <reference path="../../../../typings/require.d.ts" />
|
||||
|
||||
//@ts-check
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// import * as os from 'os';
|
||||
// import * as path from 'path';
|
||||
//
|
||||
// const module = { exports: {} };
|
||||
// ESM-uncomment-end
|
||||
|
||||
(function () {
|
||||
|
||||
/**
|
||||
* @import { NativeParsedArgs } from '../../environment/common/argv'
|
||||
*/
|
||||
@@ -117,11 +125,17 @@
|
||||
return factory(path, os, process.cwd()); // amd
|
||||
});
|
||||
} else if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
// ESM-comment-begin
|
||||
const path = require('path');
|
||||
const os = require('os');
|
||||
// ESM-comment-end
|
||||
|
||||
module.exports = factory(path, os, process.env['VSCODE_CWD'] || process.cwd()); // commonjs
|
||||
} else {
|
||||
throw new Error('Unknown context');
|
||||
}
|
||||
}());
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// export const getUserDataPath = module.exports.getUserDataPath;
|
||||
// ESM-uncomment-end
|
||||
|
||||
@@ -56,7 +56,12 @@ flakySuite('Native Modules (all platforms)', () => {
|
||||
});
|
||||
|
||||
test('@vscode/sqlite3', async () => {
|
||||
// ESM-comment-begin
|
||||
const sqlite3 = await import('@vscode/sqlite3');
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// const { default: sqlite3 } = await import('@vscode/sqlite3');
|
||||
// ESM-uncomment-end
|
||||
assert.ok(typeof sqlite3.Database === 'function', testErrorMessage('@vscode/sqlite3'));
|
||||
});
|
||||
|
||||
|
||||
@@ -44,7 +44,21 @@ export async function getProxyAgent(rawRequestURL: string, env: typeof process.e
|
||||
rejectUnauthorized: isBoolean(options.strictSSL) ? options.strictSSL : true,
|
||||
};
|
||||
|
||||
return requestURL.protocol === 'http:'
|
||||
? new (await import('http-proxy-agent')).HttpProxyAgent(proxyURL, opts)
|
||||
: new (await import('https-proxy-agent')).HttpsProxyAgent(proxyURL, opts);
|
||||
if (requestURL.protocol === 'http:') {
|
||||
// ESM-comment-begin
|
||||
const mod = await import('http-proxy-agent');
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// const mod = (await import('http-proxy-agent')).default;
|
||||
// ESM-uncomment-end
|
||||
return new mod.HttpProxyAgent(proxyURL, opts);
|
||||
} else {
|
||||
// ESM-comment-begin
|
||||
const mod = await import('https-proxy-agent');
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// const mod = (await import('https-proxy-agent')).default;
|
||||
// ESM-uncomment-end
|
||||
return new mod.HttpsProxyAgent(proxyURL, opts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import { RequestStore } from 'vs/platform/terminal/common/requestStore';
|
||||
import { IProcessDataEvent, IProcessReadyEvent, IPtyService, IRawTerminalInstanceLayoutInfo, IReconnectConstants, IShellLaunchConfig, ITerminalInstanceLayoutInfoById, ITerminalLaunchError, ITerminalsLayoutInfo, ITerminalTabLayoutInfoById, TerminalIcon, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, IFixedTerminalDimensions, IPersistentTerminalProcessLaunchConfig, ICrossVersionSerializedTerminalState, ISerializedTerminalState, ITerminalProcessOptions, IPtyHostLatencyMeasurement } from 'vs/platform/terminal/common/terminal';
|
||||
import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering';
|
||||
import { escapeNonWindowsPath } from 'vs/platform/terminal/common/terminalEnvironment';
|
||||
import { Terminal as XtermTerminal } from '@xterm/headless';
|
||||
import type { ISerializeOptions, SerializeAddon as XtermSerializeAddon } from '@xterm/addon-serialize';
|
||||
import type { Unicode11Addon as XtermUnicode11Addon } from '@xterm/addon-unicode11';
|
||||
import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs, ITerminalTabLayoutInfoDto } from 'vs/platform/terminal/common/terminalProcess';
|
||||
@@ -32,6 +31,14 @@ import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { join } from 'path';
|
||||
import { memoize } from 'vs/base/common/decorators';
|
||||
import * as performance from 'vs/base/common/performance';
|
||||
// ESM-comment-begin
|
||||
import { Terminal as XtermTerminal } from '@xterm/headless';
|
||||
// ESM-comment-end
|
||||
// ESM-uncomment-begin
|
||||
// import pkg from '@xterm/headless';
|
||||
// type XtermTerminal = pkg.Terminal;
|
||||
// const { Terminal: XtermTerminal } = pkg;
|
||||
// ESM-uncomment-end
|
||||
|
||||
export function traceRpc(_target: any, key: string, descriptor: any) {
|
||||
if (typeof descriptor.value !== 'function') {
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as _fs from 'fs';
|
||||
import * as _url from 'url';
|
||||
import * as _cp from 'child_process';
|
||||
import * as _http from 'http';
|
||||
import * as _os from 'os';
|
||||
import * as fs from 'fs';
|
||||
import * as url from 'url';
|
||||
import * as cp from 'child_process';
|
||||
import * as http from 'http';
|
||||
import { cwd } from 'vs/base/common/process';
|
||||
import { dirname, extname, resolve, join } from 'vs/base/common/path';
|
||||
import { parseArgs, buildHelpMessage, buildVersionMessage, OPTIONS, OptionDescriptions, ErrorReporter } from 'vs/platform/environment/node/argv';
|
||||
@@ -240,8 +239,8 @@ export async function main(desc: ProductDescription, args: string[]): Promise<vo
|
||||
cmdLine.push('--update-extensions');
|
||||
}
|
||||
|
||||
const cp = _cp.fork(join(__dirname, '../../../server-main.js'), cmdLine, { stdio: 'inherit' });
|
||||
cp.on('error', err => console.log(err));
|
||||
const childProcess = cp.fork(join(__dirname, '../../../server-main.js'), cmdLine, { stdio: 'inherit' });
|
||||
childProcess.on('error', err => console.log(err));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -270,7 +269,7 @@ export async function main(desc: ProductDescription, args: string[]): Promise<vo
|
||||
if (verbose) {
|
||||
console.log(`Invoking: cmd.exe /C ${cliCommand} ${newCommandline.join(' ')} in ${processCwd}`);
|
||||
}
|
||||
_cp.spawn('cmd.exe', ['/C', cliCommand, ...newCommandline], {
|
||||
cp.spawn('cmd.exe', ['/C', cliCommand, ...newCommandline], {
|
||||
stdio: 'inherit',
|
||||
cwd: processCwd
|
||||
});
|
||||
@@ -285,11 +284,11 @@ export async function main(desc: ProductDescription, args: string[]): Promise<vo
|
||||
if (verbose) {
|
||||
console.log(`Using pipes for output.`);
|
||||
}
|
||||
const cp = _cp.spawn(cliCommand, newCommandline, { cwd: cliCwd, env, stdio: ['inherit', 'pipe', 'pipe'] });
|
||||
cp.stdout.on('data', data => process.stdout.write(data));
|
||||
cp.stderr.on('data', data => process.stderr.write(data));
|
||||
const childProcess = cp.spawn(cliCommand, newCommandline, { cwd: cliCwd, env, stdio: ['inherit', 'pipe', 'pipe'] });
|
||||
childProcess.stdout.on('data', data => process.stdout.write(data));
|
||||
childProcess.stderr.on('data', data => process.stderr.write(data));
|
||||
} else {
|
||||
_cp.spawn(cliCommand, newCommandline, { cwd: cliCwd, env, stdio: 'inherit' });
|
||||
cp.spawn(cliCommand, newCommandline, { cwd: cliCwd, env, stdio: 'inherit' });
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -357,7 +356,7 @@ export async function main(desc: ProductDescription, args: string[]): Promise<vo
|
||||
function runningInWSL2(): boolean {
|
||||
if (!!process.env['WSL_DISTRO_NAME']) {
|
||||
try {
|
||||
return _cp.execSync('uname -r', { encoding: 'utf8' }).includes('-microsoft-');
|
||||
return cp.execSync('uname -r', { encoding: 'utf8' }).includes('-microsoft-');
|
||||
} catch (_e) {
|
||||
// Ignore
|
||||
}
|
||||
@@ -366,7 +365,7 @@ function runningInWSL2(): boolean {
|
||||
}
|
||||
|
||||
async function waitForFileDeleted(path: string) {
|
||||
while (_fs.existsSync(path)) {
|
||||
while (fs.existsSync(path)) {
|
||||
await new Promise(res => setTimeout(res, 1000));
|
||||
}
|
||||
}
|
||||
@@ -376,7 +375,7 @@ function openInBrowser(args: string[], verbose: boolean) {
|
||||
for (const location of args) {
|
||||
try {
|
||||
if (/^(http|https|file):\/\//.test(location)) {
|
||||
uris.push(_url.parse(location).href);
|
||||
uris.push(url.parse(location).href);
|
||||
} else {
|
||||
uris.push(pathToURI(location).href);
|
||||
}
|
||||
@@ -406,7 +405,7 @@ function sendToPipe(args: PipeCommand, verbose: boolean): Promise<any> {
|
||||
return;
|
||||
}
|
||||
|
||||
const opts: _http.RequestOptions = {
|
||||
const opts: http.RequestOptions = {
|
||||
socketPath: cliPipe,
|
||||
path: '/',
|
||||
method: 'POST',
|
||||
@@ -416,7 +415,7 @@ function sendToPipe(args: PipeCommand, verbose: boolean): Promise<any> {
|
||||
}
|
||||
};
|
||||
|
||||
const req = _http.request(opts, res => {
|
||||
const req = http.request(opts, res => {
|
||||
if (res.headers['content-type'] !== 'application/json') {
|
||||
reject('Error in response: Invalid content type: Expected \'application/json\', is: ' + res.headers['content-type']);
|
||||
return;
|
||||
@@ -461,18 +460,18 @@ function fatal(message: string, err: any): void {
|
||||
|
||||
const preferredCwd = process.env.PWD || cwd(); // prefer process.env.PWD as it does not follow symlinks
|
||||
|
||||
function pathToURI(input: string): _url.URL {
|
||||
function pathToURI(input: string): url.URL {
|
||||
input = input.trim();
|
||||
input = resolve(preferredCwd, input);
|
||||
|
||||
return _url.pathToFileURL(input);
|
||||
return url.pathToFileURL(input);
|
||||
}
|
||||
|
||||
function translatePath(input: string, mapFileUri: (input: string) => string, folderURIS: string[], fileURIS: string[]) {
|
||||
const url = pathToURI(input);
|
||||
const mappedUri = mapFileUri(url.href);
|
||||
try {
|
||||
const stat = _fs.lstatSync(_fs.realpathSync(input));
|
||||
const stat = fs.lstatSync(fs.realpathSync(input));
|
||||
|
||||
if (stat.isFile()) {
|
||||
fileURIS.push(mappedUri);
|
||||
|
||||
@@ -18,6 +18,10 @@ import { CLIServer } from 'vs/workbench/api/node/extHostCLIServer';
|
||||
import { realpathSync } from 'vs/base/node/extpath';
|
||||
import { ExtHostConsoleForwarder } from 'vs/workbench/api/node/extHostConsoleForwarder';
|
||||
import { ExtHostDiskFileSystemProvider } from 'vs/workbench/api/node/extHostDiskFileSystemProvider';
|
||||
// ESM-uncomment-begin
|
||||
// import { createRequire } from 'node:module';
|
||||
// const require = createRequire(import.meta.url);
|
||||
// ESM-uncomment-end
|
||||
|
||||
class NodeModuleRequireInterceptor extends RequireInterceptor {
|
||||
|
||||
@@ -109,7 +113,7 @@ export class ExtHostExtensionService extends AbstractExtHostExtensionService {
|
||||
if (extensionId) {
|
||||
performance.mark(`code/extHost/willLoadExtensionCode/${extensionId}`);
|
||||
}
|
||||
r = require.__$__nodeRequire<T>(module.fsPath);
|
||||
r = <T>require.__$__nodeRequire(module.fsPath);
|
||||
} finally {
|
||||
if (extensionId) {
|
||||
performance.mark(`code/extHost/didLoadExtensionCode/${extensionId}`);
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
// ESM-comment-begin
|
||||
import * as http from 'http';
|
||||
import * as https from 'https';
|
||||
import * as tls from 'tls';
|
||||
import * as net from 'net';
|
||||
// ESM-comment-end
|
||||
|
||||
import { IExtHostWorkspaceProvider } from 'vs/workbench/api/common/extHostWorkspace';
|
||||
import { ExtHostConfigProvider } from 'vs/workbench/api/common/extHostConfiguration';
|
||||
@@ -19,6 +21,15 @@ import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'
|
||||
import { LogLevel, createHttpPatch, createProxyResolver, createTlsPatch, ProxySupportSetting, ProxyAgentParams, createNetPatch, loadSystemCertificates } from '@vscode/proxy-agent';
|
||||
import { AuthInfo } from 'vs/platform/request/common/request';
|
||||
|
||||
// ESM-uncomment-begin
|
||||
// import { createRequire } from 'node:module';
|
||||
// const require = createRequire(import.meta.url);
|
||||
// const http = require('http');
|
||||
// const https = require('https');
|
||||
// const tls = require('tls');
|
||||
// const net = require('net');
|
||||
// ESM-uncomment-end
|
||||
|
||||
const systemCertificatesV2Default = false;
|
||||
|
||||
export function connectProxyResolver(
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
//@ts-check
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
(function () {
|
||||
|
||||
/**
|
||||
* @import { ISandboxConfiguration } from '../../../../base/parts/sandbox/common/sandboxTypes'
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user