From 7cbcafcbcc88298cfdcd0238018fbbba8eb6853e Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Fri, 23 Aug 2024 12:53:58 +0200 Subject: [PATCH] esm - remove `loader.js` dependency fully (#226414) * esm - remove `loader.js` dependency fully * . --- src/vs/base/common/performance.js | 2 +- src/vs/base/node/unc.js | 2 -- .../processExplorer/processExplorer-dev.esm.html | 1 - .../processExplorer/processExplorer-dev.html | 1 - .../electron-sandbox/workbench/workbench-dev.esm.html | 1 - src/vs/code/electron-sandbox/workbench/workbench.js | 2 -- .../issue/electron-sandbox/issueReporter-dev.esm.html | 1 - .../notebook/browser/view/renderers/backLayerWebView.ts | 2 +- .../contrib/performance/browser/perfviewEditor.ts | 8 ++++---- src/vs/workbench/electron-sandbox/window.ts | 3 ++- 10 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/vs/base/common/performance.js b/src/vs/base/common/performance.js index 2bb3703ef94..fd26d5e8677 100644 --- a/src/vs/base/common/performance.js +++ b/src/vs/base/common/performance.js @@ -82,7 +82,7 @@ } else if (typeof process === 'object') { // node.js: use the normal polyfill but add the timeOrigin // from the node perf_hooks API as very first mark - const timeOrigin = performance?.timeOrigin ?? Math.round((require.__$__nodeRequire ?? require /* TODO@esm drop the first */)('perf_hooks').performance.timeOrigin); + const timeOrigin = performance?.timeOrigin;// ?? Math.round((require.__$__nodeRequire ?? require /* TODO@esm this is fishy */)('perf_hooks').performance.timeOrigin); return _definePolyfillMarks(timeOrigin); } else { diff --git a/src/vs/base/node/unc.js b/src/vs/base/node/unc.js index a9203d79cc3..e68162480c3 100644 --- a/src/vs/base/node/unc.js +++ b/src/vs/base/node/unc.js @@ -3,8 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -/// - //@ts-check 'use strict'; diff --git a/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.esm.html b/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.esm.html index 74d159c3ddd..19d194fc1c5 100644 --- a/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.esm.html +++ b/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.esm.html @@ -37,7 +37,6 @@ - diff --git a/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.html b/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.html index dd0548c22c1..5bdf62c8230 100644 --- a/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.html +++ b/src/vs/code/electron-sandbox/processExplorer/processExplorer-dev.html @@ -35,7 +35,6 @@ - diff --git a/src/vs/code/electron-sandbox/workbench/workbench-dev.esm.html b/src/vs/code/electron-sandbox/workbench/workbench-dev.esm.html index 2d8161be6a9..ea5cbee848a 100644 --- a/src/vs/code/electron-sandbox/workbench/workbench-dev.esm.html +++ b/src/vs/code/electron-sandbox/workbench/workbench-dev.esm.html @@ -70,7 +70,6 @@ - diff --git a/src/vs/code/electron-sandbox/workbench/workbench.js b/src/vs/code/electron-sandbox/workbench/workbench.js index 5ad97839d23..bed16c9f9bd 100644 --- a/src/vs/code/electron-sandbox/workbench/workbench.js +++ b/src/vs/code/electron-sandbox/workbench/workbench.js @@ -3,8 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -/// - //@ts-check 'use strict'; diff --git a/src/vs/workbench/contrib/issue/electron-sandbox/issueReporter-dev.esm.html b/src/vs/workbench/contrib/issue/electron-sandbox/issueReporter-dev.esm.html index 5276ed507ba..f14661a283c 100644 --- a/src/vs/workbench/contrib/issue/electron-sandbox/issueReporter-dev.esm.html +++ b/src/vs/workbench/contrib/issue/electron-sandbox/issueReporter-dev.esm.html @@ -41,7 +41,6 @@ - diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts index 51c11f43383..5df72991c34 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts @@ -569,7 +569,7 @@ export class BackLayerWebView extends Themable { } return [ - dirname(FileAccess.asFileUri('vs/loader.js')), + dirname(FileAccess.asFileUri('vs/loader.js')), // TODO@esm this file will not exist in the future ]; } diff --git a/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts b/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts index 81653b58f6d..082f44a42c4 100644 --- a/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts +++ b/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts @@ -200,13 +200,13 @@ class PerfModelContentProvider implements ITextModelContentProvider { const table: Array> = []; table.push(['start => app.isReady', metrics.timers.ellapsedAppReady, '[main]', `initial startup: ${metrics.initialStartup}`]); table.push(['nls:start => nls:end', metrics.timers.ellapsedNlsGeneration, '[main]', `initial startup: ${metrics.initialStartup}`]); - table.push(['require(main.bundle.js)', metrics.timers.ellapsedLoadMainBundle, '[main]', `initial startup: ${metrics.initialStartup}`]); + table.push(['import(main.bundle.js)', metrics.timers.ellapsedLoadMainBundle, '[main]', `initial startup: ${metrics.initialStartup}`]); table.push(['start crash reporter', metrics.timers.ellapsedCrashReporter, '[main]', `initial startup: ${metrics.initialStartup}`]); table.push(['serve main IPC handle', metrics.timers.ellapsedMainServer, '[main]', `initial startup: ${metrics.initialStartup}`]); table.push(['create window', metrics.timers.ellapsedWindowCreate, '[main]', `initial startup: ${metrics.initialStartup}, ${metrics.initialStartup ? `state: ${metrics.timers.ellapsedWindowRestoreState}ms, widget: ${metrics.timers.ellapsedBrowserWindowCreate}ms, show: ${metrics.timers.ellapsedWindowMaximize}ms` : ''}`]); table.push(['app.isReady => window.loadUrl()', metrics.timers.ellapsedWindowLoad, '[main]', `initial startup: ${metrics.initialStartup}`]); - table.push(['window.loadUrl() => begin to require(workbench.desktop.main.js)', metrics.timers.ellapsedWindowLoadToRequire, '[main->renderer]', StartupKindToString(metrics.windowKind)]); - table.push(['require(workbench.desktop.main.js)', metrics.timers.ellapsedRequire, '[renderer]', `cached data: ${(metrics.didUseCachedData ? 'YES' : 'NO')}${stats ? `, node_modules took ${stats.nodeRequireTotal}ms` : ''}`]); + table.push(['window.loadUrl() => begin to import(workbench.desktop.main.js)', metrics.timers.ellapsedWindowLoadToRequire, '[main->renderer]', StartupKindToString(metrics.windowKind)]); + table.push(['import(workbench.desktop.main.js)', metrics.timers.ellapsedRequire, '[renderer]', `cached data: ${(metrics.didUseCachedData ? 'YES' : 'NO')}${stats ? `, node_modules took ${stats.nodeRequireTotal}ms` : ''}`]); table.push(['wait for window config', metrics.timers.ellapsedWaitForWindowConfig, '[renderer]', undefined]); table.push(['init storage (global & workspace)', metrics.timers.ellapsedStorageInit, '[renderer]', undefined]); table.push(['init workspace service', metrics.timers.ellapsedWorkspaceServiceInit, '[renderer]', undefined]); @@ -332,7 +332,7 @@ class PerfModelContentProvider implements ITextModelContentProvider { map.set(LoaderEventType.CachedDataFound, []); map.set(LoaderEventType.CachedDataMissed, []); map.set(LoaderEventType.CachedDataRejected, []); - if (typeof require.getStats === 'function') { + if (!isESM && typeof require.getStats === 'function') { for (const stat of require.getStats()) { if (map.has(stat.type)) { map.get(stat.type)!.push(stat.detail); diff --git a/src/vs/workbench/electron-sandbox/window.ts b/src/vs/workbench/electron-sandbox/window.ts index 4ab26d0a24a..914476a7fb2 100644 --- a/src/vs/workbench/electron-sandbox/window.ts +++ b/src/vs/workbench/electron-sandbox/window.ts @@ -80,6 +80,7 @@ import { ThemeIcon } from 'vs/base/common/themables'; import { getWorkbenchContribution } from 'vs/workbench/common/contributions'; import { DynamicWorkbenchSecurityConfiguration } from 'vs/workbench/common/configuration'; import { nativeHoverDelegate } from 'vs/platform/hover/browser/hover'; +import { isESM } from 'vs/base/common/amd'; export class NativeWindow extends BaseWindow { @@ -708,7 +709,7 @@ export class NativeWindow extends BaseWindow { private async handleWarnings(): Promise { // Check for cyclic dependencies - if (typeof require.hasDependencyCycle === 'function' && require.hasDependencyCycle()) { + if (!isESM && typeof require.hasDependencyCycle === 'function' && require.hasDependencyCycle()) { if (isCI) { this.logService.error('Error: There is a dependency cycle in the AMD modules that needs to be resolved!'); this.nativeHostService.exit(37); // running on a build machine, just exit without showing a dialog