Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Dima <alexdima@microsoft.com>2022-11-10 23:52:42 +0300
committerGitHub <noreply@github.com>2022-11-10 23:52:42 +0300
commit96bf637c101b8832e44a97a27a26305d8c2cf22e (patch)
tree61e0ab105bf8c7fbb314b7303b5d7cb37cfc5e5c
parent8fd500ed74c0fcec7f416a3614516bfce0fcb3ab (diff)
parentf46738bc477ad71db379c8efa09c8ea22110cefc (diff)
Merge pull request #165831 from microsoft/alexd/inclined-panda
Always use app root for resource URIs (avoid usage of `require`)
-rw-r--r--src/typings/require.d.ts4
-rw-r--r--src/vs/base/browser/dom.ts2
-rw-r--r--src/vs/base/browser/markdownRenderer.ts2
-rw-r--r--src/vs/base/common/amd.ts5
-rw-r--r--src/vs/base/common/network.ts48
-rw-r--r--src/vs/base/node/ps.ts4
-rw-r--r--src/vs/base/test/common/network.test.ts22
-rw-r--r--src/vs/code/node/cli.ts2
-rw-r--r--src/vs/platform/environment/common/environmentService.ts4
-rw-r--r--src/vs/platform/extensionManagement/common/extensionsScannerService.ts2
-rw-r--r--src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts2
-rw-r--r--src/vs/platform/extensions/electron-main/extensionHostStarter.ts4
-rw-r--r--src/vs/platform/externalTerminal/node/externalTerminalService.ts2
-rw-r--r--src/vs/platform/files/node/watcher/watcherClient.ts2
-rw-r--r--src/vs/platform/issue/electron-main/issueMainService.ts6
-rw-r--r--src/vs/platform/product/common/product.ts2
-rw-r--r--src/vs/platform/protocol/electron-main/protocolMainService.ts2
-rw-r--r--src/vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService.ts2
-rw-r--r--src/vs/platform/sharedProcess/electron-main/sharedProcess.ts4
-rw-r--r--src/vs/platform/telemetry/node/customEndpointTelemetryService.ts2
-rw-r--r--src/vs/platform/terminal/node/ptyHostService.ts2
-rw-r--r--src/vs/platform/terminal/node/terminalEnvironment.ts2
-rw-r--r--src/vs/platform/webview/electron-main/webviewProtocolProvider.ts6
-rw-r--r--src/vs/platform/windows/electron-main/windowImpl.ts4
-rw-r--r--src/vs/server/node/extensionHostConnection.ts2
-rw-r--r--src/vs/server/node/remoteExtensionHostAgentServer.ts4
-rw-r--r--src/vs/server/node/remoteLanguagePacks.ts2
-rw-r--r--src/vs/server/node/server.main.ts2
-rw-r--r--src/vs/server/node/webClientServer.ts6
-rw-r--r--src/vs/workbench/api/browser/mainThreadExtensionService.ts2
-rw-r--r--src/vs/workbench/api/worker/extensionHostWorker.ts2
-rw-r--r--src/vs/workbench/browser/dnd.ts2
-rw-r--r--src/vs/workbench/browser/parts/editor/editor.contribution.ts4
-rw-r--r--src/vs/workbench/browser/parts/editor/editorGroupView.ts6
-rw-r--r--src/vs/workbench/contrib/audioCues/browser/audioCueService.ts3
-rw-r--r--src/vs/workbench/contrib/debug/browser/debug.contribution.ts18
-rw-r--r--src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts6
-rw-r--r--src/vs/workbench/contrib/files/browser/fileImportExport.ts2
-rw-r--r--src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts6
-rw-r--r--src/vs/workbench/contrib/performance/browser/perfviewEditor.ts8
-rw-r--r--src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts16
-rw-r--r--src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts2
-rw-r--r--src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.ts2
-rw-r--r--src/vs/workbench/electron-sandbox/window.ts2
-rw-r--r--src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts4
-rw-r--r--src/vs/workbench/services/extensionManagement/common/extensionManagement.ts2
-rw-r--r--src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts2
-rw-r--r--src/vs/workbench/services/integrity/electron-sandbox/integrityService.ts8
-rw-r--r--src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts26
-rw-r--r--src/vs/workbench/services/textMate/browser/browserTextMateService.ts2
-rw-r--r--src/vs/workbench/services/textMate/browser/nativeTextMateService.ts6
-rw-r--r--src/vs/workbench/services/textMate/browser/textMateWorker.ts27
-rw-r--r--src/vs/workbench/services/themes/test/electron-browser/tokenStyleResolving.test.ts2
53 files changed, 176 insertions, 137 deletions
diff --git a/src/typings/require.d.ts b/src/typings/require.d.ts
index 5b0fcf921f7..671692c88da 100644
--- a/src/typings/require.d.ts
+++ b/src/typings/require.d.ts
@@ -49,8 +49,8 @@ interface NodeRequire {
config(data: any): any;
onError: Function;
__$__nodeRequire<T>(moduleName: string): T;
- getStats(): ReadonlyArray<LoaderEvent>;
- hasDependencyCycle(): boolean;
+ getStats?(): ReadonlyArray<LoaderEvent>;
+ hasDependencyCycle?(): boolean;
define(amdModuleId: string, dependencies: string[], callback: (...args: any[]) => any): any;
}
diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts
index 1abef9c8d49..6f690ebf36f 100644
--- a/src/vs/base/browser/dom.ts
+++ b/src/vs/base/browser/dom.ts
@@ -1199,7 +1199,7 @@ export function asCSSUrl(uri: URI | null | undefined): string {
if (!uri) {
return `url('')`;
}
- return `url('${FileAccess.asBrowserUri(uri).toString(true).replace(/'/g, '%27')}')`;
+ return `url('${FileAccess.uriToBrowserUri(uri).toString(true).replace(/'/g, '%27')}')`;
}
export function asCSSPropertyValue(value: string) {
diff --git a/src/vs/base/browser/markdownRenderer.ts b/src/vs/base/browser/markdownRenderer.ts
index e4b9dcf4ecd..aadf5d2c87a 100644
--- a/src/vs/base/browser/markdownRenderer.ts
+++ b/src/vs/base/browser/markdownRenderer.ts
@@ -126,7 +126,7 @@ export function renderMarkdown(markdown: IMarkdownString, options: MarkdownRende
// and because of that special rewriting needs to be done
// so that the URI uses a protocol that's understood by
// browsers (like http or https)
- return FileAccess.asBrowserUri(uri).toString(true);
+ return FileAccess.uriToBrowserUri(uri).toString(true);
}
if (!uri) {
return href;
diff --git a/src/vs/base/common/amd.ts b/src/vs/base/common/amd.ts
index 7f788bf4629..fdbdb2e1030 100644
--- a/src/vs/base/common/amd.ts
+++ b/src/vs/base/common/amd.ts
@@ -40,7 +40,10 @@ export abstract class LoaderStats {
map.set(stat.detail, duration + stat.timestamp);
}
- const stats = require.getStats().slice(0).sort((a, b) => a.timestamp - b.timestamp);
+ let stats: readonly LoaderEvent[] = [];
+ if (typeof require.getStats === 'function') {
+ stats = require.getStats().slice(0).sort((a, b) => a.timestamp - b.timestamp);
+ }
for (const stat of stats) {
switch (stat.type) {
diff --git a/src/vs/base/common/network.ts b/src/vs/base/common/network.ts
index 648a6391131..3c706e3d277 100644
--- a/src/vs/base/common/network.ts
+++ b/src/vs/base/common/network.ts
@@ -170,6 +170,22 @@ class RemoteAuthoritiesImpl {
export const RemoteAuthorities = new RemoteAuthoritiesImpl();
+/**
+ * A string pointing to a path inside the app. It should not begin with ./ or ../
+ */
+export type AppResourcePath = (
+ `a${string}` | `b${string}` | `c${string}` | `d${string}` | `e${string}` | `f${string}`
+ | `g${string}` | `h${string}` | `i${string}` | `j${string}` | `k${string}` | `l${string}`
+ | `m${string}` | `n${string}` | `o${string}` | `p${string}` | `q${string}` | `r${string}`
+ | `s${string}` | `t${string}` | `u${string}` | `v${string}` | `w${string}` | `x${string}`
+ | `y${string}` | `z${string}`
+);
+
+export const builtinExtensionsPath: AppResourcePath = 'vs/../../extensions';
+export const nodeModulesPath: AppResourcePath = 'vs/../../node_modules';
+export const nodeModulesAsarPath: AppResourcePath = 'vs/../../node_modules.asar';
+export const nodeModulesAsarUnpackedPath: AppResourcePath = 'vs/../../node_modules.asar.unpacked';
+
class FileAccessImpl {
private static readonly FALLBACK_AUTHORITY = 'vscode-app';
@@ -180,11 +196,18 @@ class FileAccessImpl {
*
* **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context.
*/
- asBrowserUri(uri: URI): URI;
- asBrowserUri(moduleId: string, moduleIdToUrl: { toUrl(moduleId: string): string }): URI;
- asBrowserUri(uriOrModule: URI | string, moduleIdToUrl?: { toUrl(moduleId: string): string }): URI {
- const uri = this.toUri(uriOrModule, moduleIdToUrl);
+ asBrowserUri(resourcePath: AppResourcePath | ''): URI {
+ const uri = this.toUri(resourcePath, require);
+ return this.uriToBrowserUri(uri);
+ }
+ /**
+ * Returns a URI to use in contexts where the browser is responsible
+ * for loading (e.g. fetch()) or when used within the DOM.
+ *
+ * **Note:** use `dom.ts#asCSSUrl` whenever the URL is to be used in CSS context.
+ */
+ uriToBrowserUri(uri: URI): URI {
// Handle remote URIs via `RemoteAuthorities`
if (uri.scheme === Schemas.vscodeRemote) {
return RemoteAuthorities.rewrite(uri);
@@ -220,11 +243,16 @@ class FileAccessImpl {
* Returns the `file` URI to use in contexts where node.js
* is responsible for loading.
*/
- asFileUri(uri: URI): URI;
- asFileUri(moduleId: string, moduleIdToUrl: { toUrl(moduleId: string): string }): URI;
- asFileUri(uriOrModule: URI | string, moduleIdToUrl?: { toUrl(moduleId: string): string }): URI {
- const uri = this.toUri(uriOrModule, moduleIdToUrl);
+ asFileUri(resourcePath: AppResourcePath | ''): URI {
+ const uri = this.toUri(resourcePath, require);
+ return this.uriToFileUri(uri);
+ }
+ /**
+ * Returns the `file` URI to use in contexts where node.js
+ * is responsible for loading.
+ */
+ uriToFileUri(uri: URI): URI {
// Only convert the URI if it is `vscode-file:` scheme
if (uri.scheme === Schemas.vscodeFileResource) {
return uri.with({
@@ -241,12 +269,12 @@ class FileAccessImpl {
return uri;
}
- private toUri(uriOrModule: URI | string, moduleIdToUrl?: { toUrl(moduleId: string): string }): URI {
+ private toUri(uriOrModule: URI | string, moduleIdToUrl: { toUrl(moduleId: string): string }): URI {
if (URI.isUri(uriOrModule)) {
return uriOrModule;
}
- return URI.parse(moduleIdToUrl!.toUrl(uriOrModule));
+ return URI.parse(moduleIdToUrl.toUrl(uriOrModule));
}
}
diff --git a/src/vs/base/node/ps.ts b/src/vs/base/node/ps.ts
index 8498145bed2..0bcbce4a8d4 100644
--- a/src/vs/base/node/ps.ts
+++ b/src/vs/base/node/ps.ts
@@ -198,7 +198,7 @@ export function listProcesses(rootPid: number): Promise<ProcessItem> {
// The cpu usage value reported on Linux is the average over the process lifetime,
// recalculate the usage over a one second interval
// JSON.stringify is needed to escape spaces, https://github.com/nodejs/node/issues/6803
- let cmd = JSON.stringify(FileAccess.asFileUri('vs/base/node/cpuUsage.sh', require).fsPath);
+ let cmd = JSON.stringify(FileAccess.asFileUri('vs/base/node/cpuUsage.sh').fsPath);
cmd += ' ' + pids.join(' ');
exec(cmd, {}, (err, stdout, stderr) => {
@@ -226,7 +226,7 @@ export function listProcesses(rootPid: number): Promise<ProcessItem> {
if (process.platform !== 'linux') {
reject(err || new Error(stderr.toString()));
} else {
- const cmd = JSON.stringify(FileAccess.asFileUri('vs/base/node/ps.sh', require).fsPath);
+ const cmd = JSON.stringify(FileAccess.asFileUri('vs/base/node/ps.sh').fsPath);
exec(cmd, {}, (err, stdout, stderr) => {
if (err || stderr) {
reject(err || new Error(stderr.toString()));
diff --git a/src/vs/base/test/common/network.test.ts b/src/vs/base/test/common/network.test.ts
index 8916eb1c868..9c6938967d9 100644
--- a/src/vs/base/test/common/network.test.ts
+++ b/src/vs/base/test/common/network.test.ts
@@ -15,55 +15,55 @@ suite('network', () => {
// asCodeUri() & asFileUri(): simple, without authority
let originalFileUri = URI.file('network.test.ts');
- let browserUri = FileAccess.asBrowserUri(originalFileUri);
+ let browserUri = FileAccess.uriToBrowserUri(originalFileUri);
assert.ok(browserUri.authority.length > 0);
- let fileUri = FileAccess.asFileUri(browserUri);
+ let fileUri = FileAccess.uriToFileUri(browserUri);
assert.strictEqual(fileUri.authority.length, 0);
assert(isEqual(originalFileUri, fileUri));
// asCodeUri() & asFileUri(): with authority
originalFileUri = URI.file('network.test.ts').with({ authority: 'test-authority' });
- browserUri = FileAccess.asBrowserUri(originalFileUri);
+ browserUri = FileAccess.uriToBrowserUri(originalFileUri);
assert.strictEqual(browserUri.authority, originalFileUri.authority);
- fileUri = FileAccess.asFileUri(browserUri);
+ fileUri = FileAccess.uriToFileUri(browserUri);
assert(isEqual(originalFileUri, fileUri));
});
(isWeb ? test.skip : test)('FileAccess: moduleId (native)', () => {
- const browserUri = FileAccess.asBrowserUri('vs/base/test/node/network.test', require);
+ const browserUri = FileAccess.asBrowserUri('vs/base/test/node/network.test');
assert.strictEqual(browserUri.scheme, Schemas.vscodeFileResource);
- const fileUri = FileAccess.asFileUri('vs/base/test/node/network.test', require);
+ const fileUri = FileAccess.asFileUri('vs/base/test/node/network.test');
assert.strictEqual(fileUri.scheme, Schemas.file);
});
(isWeb ? test.skip : test)('FileAccess: query and fragment is dropped (native)', () => {
const originalFileUri = URI.file('network.test.ts').with({ query: 'foo=bar', fragment: 'something' });
- const browserUri = FileAccess.asBrowserUri(originalFileUri);
+ const browserUri = FileAccess.uriToBrowserUri(originalFileUri);
assert.strictEqual(browserUri.query, '');
assert.strictEqual(browserUri.fragment, '');
});
(isWeb ? test.skip : test)('FileAccess: query and fragment is kept if URI is already of same scheme (native)', () => {
const originalFileUri = URI.file('network.test.ts').with({ query: 'foo=bar', fragment: 'something' });
- const browserUri = FileAccess.asBrowserUri(originalFileUri.with({ scheme: Schemas.vscodeFileResource }));
+ const browserUri = FileAccess.uriToBrowserUri(originalFileUri.with({ scheme: Schemas.vscodeFileResource }));
assert.strictEqual(browserUri.query, 'foo=bar');
assert.strictEqual(browserUri.fragment, 'something');
- const fileUri = FileAccess.asFileUri(originalFileUri);
+ const fileUri = FileAccess.uriToFileUri(originalFileUri);
assert.strictEqual(fileUri.query, 'foo=bar');
assert.strictEqual(fileUri.fragment, 'something');
});
(isWeb ? test.skip : test)('FileAccess: web', () => {
const originalHttpsUri = URI.file('network.test.ts').with({ scheme: 'https' });
- const browserUri = FileAccess.asBrowserUri(originalHttpsUri);
+ const browserUri = FileAccess.uriToBrowserUri(originalHttpsUri);
assert.strictEqual(originalHttpsUri.toString(), browserUri.toString());
});
test('FileAccess: remote URIs', () => {
const originalRemoteUri = URI.file('network.test.ts').with({ scheme: Schemas.vscodeRemote });
- const browserUri = FileAccess.asBrowserUri(originalRemoteUri);
+ const browserUri = FileAccess.uriToBrowserUri(originalRemoteUri);
assert.notStrictEqual(originalRemoteUri.scheme, browserUri.scheme);
});
});
diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts
index bd7acdf794c..bcefa8782e3 100644
--- a/src/vs/code/node/cli.ts
+++ b/src/vs/code/node/cli.ts
@@ -496,7 +496,7 @@ export async function main(argv: string[]): Promise<any> {
}
function getAppRoot() {
- return dirname(FileAccess.asFileUri('', require).fsPath);
+ return dirname(FileAccess.asFileUri('').fsPath);
}
function eventuallyExit(code: number): void {
diff --git a/src/vs/platform/environment/common/environmentService.ts b/src/vs/platform/environment/common/environmentService.ts
index cfbba68219b..1745ed81462 100644
--- a/src/vs/platform/environment/common/environmentService.ts
+++ b/src/vs/platform/environment/common/environmentService.ts
@@ -44,7 +44,7 @@ export abstract class AbstractNativeEnvironmentService implements INativeEnviron
declare readonly _serviceBrand: undefined;
@memoize
- get appRoot(): string { return dirname(FileAccess.asFileUri('', require).fsPath); }
+ get appRoot(): string { return dirname(FileAccess.asFileUri('').fsPath); }
@memoize
get userHome(): URI { return URI.file(this.paths.homeDir); }
@@ -129,7 +129,7 @@ export abstract class AbstractNativeEnvironmentService implements INativeEnviron
return resolve(cliBuiltinExtensionsDir);
}
- return normalize(join(FileAccess.asFileUri('', require).fsPath, '..', 'extensions'));
+ return normalize(join(FileAccess.asFileUri('').fsPath, '..', 'extensions'));
}
get extensionsDownloadLocation(): URI {
diff --git a/src/vs/platform/extensionManagement/common/extensionsScannerService.ts b/src/vs/platform/extensionManagement/common/extensionsScannerService.ts
index 2a763089d41..13dfbaa1a07 100644
--- a/src/vs/platform/extensionManagement/common/extensionsScannerService.ts
+++ b/src/vs/platform/extensionManagement/common/extensionsScannerService.ts
@@ -355,7 +355,7 @@ export abstract class AbstractExtensionsScannerService extends Disposable implem
this.logService.trace('Started scanning dev system extensions');
const builtinExtensionControl = checkControlFile ? await this.getBuiltInExtensionControl() : {};
const devSystemExtensionsLocations: URI[] = [];
- const devSystemExtensionsLocation = URI.file(path.normalize(path.join(FileAccess.asFileUri('', require).fsPath, '..', '.build', 'builtInExtensions')));
+ const devSystemExtensionsLocation = URI.file(path.normalize(path.join(FileAccess.asFileUri('').fsPath, '..', '.build', 'builtInExtensions')));
for (const extension of devSystemExtensionsList) {
const controlState = builtinExtensionControl[extension.name] || 'marketplace';
switch (controlState) {
diff --git a/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts b/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts
index e2bc58ae980..c766318f30f 100644
--- a/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts
+++ b/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.ts
@@ -30,7 +30,7 @@ class ExtensionResourceLoaderService extends AbstractExtensionResourceLoaderServ
}
async readExtensionResource(uri: URI): Promise<string> {
- uri = FileAccess.asBrowserUri(uri);
+ uri = FileAccess.uriToBrowserUri(uri);
if (uri.scheme !== Schemas.http && uri.scheme !== Schemas.https) {
const result = await this._fileService.readFile(uri);
diff --git a/src/vs/platform/extensions/electron-main/extensionHostStarter.ts b/src/vs/platform/extensions/electron-main/extensionHostStarter.ts
index 8a2c0a87780..da9e7b5a70d 100644
--- a/src/vs/platform/extensions/electron-main/extensionHostStarter.ts
+++ b/src/vs/platform/extensions/electron-main/extensionHostStarter.ts
@@ -309,7 +309,7 @@ class ExtensionHostProcess extends Disposable {
}
const sw = StopWatch.create(false);
this._process = fork(
- FileAccess.asFileUri('bootstrap-fork', require).fsPath,
+ FileAccess.asFileUri('bootstrap-fork').fsPath,
['--type=extensionHost', '--skipWorkspaceStorageLock'],
mixin({ cwd: cwd() }, opts),
);
@@ -434,7 +434,7 @@ class UtilityExtensionHostProcess extends Disposable {
}
const serviceName = `extensionHost${this.id}`;
- const modulePath = FileAccess.asFileUri('bootstrap-fork.js', require).fsPath;
+ const modulePath = FileAccess.asFileUri('bootstrap-fork.js').fsPath;
const args: string[] = ['--type=extensionHost', '--skipWorkspaceStorageLock'];
const execArgv: string[] = opts.execArgv || [];
const env: { [key: string]: any } = { ...opts.env };
diff --git a/src/vs/platform/externalTerminal/node/externalTerminalService.ts b/src/vs/platform/externalTerminal/node/externalTerminalService.ts
index dc00f2f647d..c378445f6f5 100644
--- a/src/vs/platform/externalTerminal/node/externalTerminalService.ts
+++ b/src/vs/platform/externalTerminal/node/externalTerminalService.ts
@@ -133,7 +133,7 @@ export class MacExternalTerminalService extends ExternalTerminalService implemen
// and then launches the program inside that window.
const script = terminalApp === DEFAULT_TERMINAL_OSX ? 'TerminalHelper' : 'iTermHelper';
- const scriptpath = FileAccess.asFileUri(`vs/workbench/contrib/externalTerminal/node/${script}.scpt`, require).fsPath;
+ const scriptpath = FileAccess.asFileUri(`vs/workbench/contrib/externalTerminal/node/${script}.scpt`).fsPath;
const osaArgs = [
scriptpath,
diff --git a/src/vs/platform/files/node/watcher/watcherClient.ts b/src/vs/platform/files/node/watcher/watcherClient.ts
index 465f8421d06..221f7629496 100644
--- a/src/vs/platform/files/node/watcher/watcherClient.ts
+++ b/src/vs/platform/files/node/watcher/watcherClient.ts
@@ -26,7 +26,7 @@ export class UniversalWatcherClient extends AbstractUniversalWatcherClient {
// Fork the universal file watcher and build a client around
// its server for passing over requests and receiving events.
const client = disposables.add(new Client(
- FileAccess.asFileUri('bootstrap-fork', require).fsPath,
+ FileAccess.asFileUri('bootstrap-fork').fsPath,
{
serverName: 'File Watcher',
args: ['--type=fileWatcher'],
diff --git a/src/vs/platform/issue/electron-main/issueMainService.ts b/src/vs/platform/issue/electron-main/issueMainService.ts
index a26823ec79c..c1967961955 100644
--- a/src/vs/platform/issue/electron-main/issueMainService.ts
+++ b/src/vs/platform/issue/electron-main/issueMainService.ts
@@ -228,7 +228,7 @@ export class IssueMainService implements IIssueMainService {
});
this.issueReporterWindow.loadURL(
- FileAccess.asBrowserUri(`vs/code/electron-sandbox/issue/issueReporter${this.environmentMainService.isBuilt ? '' : '-dev'}.html`, require).toString(true)
+ FileAccess.asBrowserUri(`vs/code/electron-sandbox/issue/issueReporter${this.environmentMainService.isBuilt ? '' : '-dev'}.html`).toString(true)
);
this.issueReporterWindow.on('close', () => {
@@ -279,7 +279,7 @@ export class IssueMainService implements IIssueMainService {
});
this.processExplorerWindow.loadURL(
- FileAccess.asBrowserUri(`vs/code/electron-sandbox/processExplorer/processExplorer${this.environmentMainService.isBuilt ? '' : '-dev'}.html`, require).toString(true)
+ FileAccess.asBrowserUri(`vs/code/electron-sandbox/processExplorer/processExplorer${this.environmentMainService.isBuilt ? '' : '-dev'}.html`).toString(true)
);
this.processExplorerWindow.on('close', () => {
@@ -325,7 +325,7 @@ export class IssueMainService implements IIssueMainService {
title: options.title,
backgroundColor: options.backgroundColor || IssueMainService.DEFAULT_BACKGROUND_COLOR,
webPreferences: {
- preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js', require).fsPath,
+ preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js').fsPath,
additionalArguments: [`--vscode-window-config=${ipcObjectUrl.resource.toString()}`, `--vscode-window-kind=${windowKind}`],
v8CacheOptions: this.environmentMainService.useCodeCache ? 'bypassHeatCheck' : 'none',
enableWebSQL: false,
diff --git a/src/vs/platform/product/common/product.ts b/src/vs/platform/product/common/product.ts
index bceda016f20..3f50bef5ca2 100644
--- a/src/vs/platform/product/common/product.ts
+++ b/src/vs/platform/product/common/product.ts
@@ -29,7 +29,7 @@ if (typeof globals.vscode !== 'undefined' && typeof globals.vscode.context !== '
else if (typeof require?.__$__nodeRequire === 'function') {
// Obtain values from product.json and package.json
- const rootPath = dirname(FileAccess.asFileUri('', require));
+ const rootPath = dirname(FileAccess.asFileUri(''));
product = require.__$__nodeRequire(joinPath(rootPath, 'product.json').fsPath);
diff --git a/src/vs/platform/protocol/electron-main/protocolMainService.ts b/src/vs/platform/protocol/electron-main/protocolMainService.ts
index b66fd1c1c0f..79d431b275c 100644
--- a/src/vs/platform/protocol/electron-main/protocolMainService.ts
+++ b/src/vs/platform/protocol/electron-main/protocolMainService.ts
@@ -127,7 +127,7 @@ export class ProtocolMainService extends Disposable implements IProtocolMainServ
// 2.) Use `FileAccess.asFileUri` to convert back from a
// `vscode-file:` URI to a `file:` URI.
- const unnormalizedFileUri = FileAccess.asFileUri(requestUri);
+ const unnormalizedFileUri = FileAccess.uriToFileUri(requestUri);
// 3.) Strip anything from the URI that could result in
// relative paths (such as "..") by using `normalize`
diff --git a/src/vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService.ts b/src/vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService.ts
index 15eba30ae44..e02ea92731b 100644
--- a/src/vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService.ts
+++ b/src/vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService.ts
@@ -281,7 +281,7 @@ class SharedProcessWebWorker extends Disposable {
id: SharedProcessWorkerMessages.Spawn,
configuration,
environment: {
- bootstrapPath: FileAccess.asFileUri('bootstrap-fork', require).fsPath
+ bootstrapPath: FileAccess.asFileUri('bootstrap-fork').fsPath
}
};
diff --git a/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts b/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts
index 5b3e3936011..43b70a639b5 100644
--- a/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts
+++ b/src/vs/platform/sharedProcess/electron-main/sharedProcess.ts
@@ -222,7 +222,7 @@ export class SharedProcess extends Disposable implements ISharedProcess {
show: false,
backgroundColor: this.themeMainService.getBackgroundColor(),
webPreferences: {
- preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js', require).fsPath,
+ preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js').fsPath,
additionalArguments: [`--vscode-window-config=${configObjectUrl.resource.toString()}`, '--vscode-window-kind=shared-process'],
v8CacheOptions: this.environmentMainService.useCodeCache ? 'bypassHeatCheck' : 'none',
nodeIntegration: true,
@@ -250,7 +250,7 @@ export class SharedProcess extends Disposable implements ISharedProcess {
});
// Load with config
- this.window.loadURL(FileAccess.asBrowserUri(`vs/code/electron-browser/sharedProcess/sharedProcess${this.environmentMainService.isBuilt ? '' : '-dev'}.html`, require).toString(true));
+ this.window.loadURL(FileAccess.asBrowserUri(`vs/code/electron-browser/sharedProcess/sharedProcess${this.environmentMainService.isBuilt ? '' : '-dev'}.html`).toString(true));
}
private registerWindowListeners(): void {
diff --git a/src/vs/platform/telemetry/node/customEndpointTelemetryService.ts b/src/vs/platform/telemetry/node/customEndpointTelemetryService.ts
index 2b7a2228a4a..255f26d5217 100644
--- a/src/vs/platform/telemetry/node/customEndpointTelemetryService.ts
+++ b/src/vs/platform/telemetry/node/customEndpointTelemetryService.ts
@@ -34,7 +34,7 @@ export class CustomEndpointTelemetryService implements ICustomEndpointTelemetryS
telemetryInfo['common.vscodesessionid'] = sessionId;
const args = [endpoint.id, JSON.stringify(telemetryInfo), endpoint.aiKey];
const client = new TelemetryClient(
- FileAccess.asFileUri('bootstrap-fork', require).fsPath,
+ FileAccess.asFileUri('bootstrap-fork').fsPath,
{
serverName: 'Debug Telemetry',
timeout: 1000 * 60 * 5,
diff --git a/src/vs/platform/terminal/node/ptyHostService.ts b/src/vs/platform/terminal/node/ptyHostService.ts
index 98bc9f4180e..ac1e390de91 100644
--- a/src/vs/platform/terminal/node/ptyHostService.ts
+++ b/src/vs/platform/terminal/node/ptyHostService.ts
@@ -155,7 +155,7 @@ export class PtyHostService extends Disposable implements IPtyService {
}
}
- const client = new Client(FileAccess.asFileUri('bootstrap-fork', require).fsPath, opts);
+ const client = new Client(FileAccess.asFileUri('bootstrap-fork').fsPath, opts);
this._onPtyHostStart.fire();
// Setup heartbeat service and trigger a heartbeat immediately to reset the timeouts
diff --git a/src/vs/platform/terminal/node/terminalEnvironment.ts b/src/vs/platform/terminal/node/terminalEnvironment.ts
index 9ff09c4322e..774973104d6 100644
--- a/src/vs/platform/terminal/node/terminalEnvironment.ts
+++ b/src/vs/platform/terminal/node/terminalEnvironment.ts
@@ -119,7 +119,7 @@ export function getShellIntegrationInjection(
const originalArgs = shellLaunchConfig.args;
const shell = process.platform === 'win32' ? path.basename(shellLaunchConfig.executable).toLowerCase() : path.basename(shellLaunchConfig.executable);
- const appRoot = path.dirname(FileAccess.asFileUri('', require).fsPath);
+ const appRoot = path.dirname(FileAccess.asFileUri('').fsPath);
let newArgs: string[] | undefined;
const envMixin: IProcessEnvironment = {
'VSCODE_INJECTION': '1'
diff --git a/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts b/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts
index 8c8be165bc0..7697c49c8cc 100644
--- a/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts
+++ b/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts
@@ -5,7 +5,7 @@
import { protocol } from 'electron';
import { Disposable } from 'vs/base/common/lifecycle';
-import { COI, FileAccess, Schemas } from 'vs/base/common/network';
+import { AppResourcePath, COI, FileAccess, Schemas } from 'vs/base/common/network';
import { URI } from 'vs/base/common/uri';
@@ -33,8 +33,8 @@ export class WebviewProtocolProvider extends Disposable {
const uri = URI.parse(request.url);
const entry = WebviewProtocolProvider.validWebviewFilePaths.get(uri.path);
if (typeof entry === 'string') {
- const relativeResourcePath = `vs/workbench/contrib/webview/browser/pre/${entry}`;
- const url = FileAccess.asFileUri(relativeResourcePath, require);
+ const relativeResourcePath: AppResourcePath = `vs/workbench/contrib/webview/browser/pre/${entry}`;
+ const url = FileAccess.asFileUri(relativeResourcePath);
return callback({
path: decodeURIComponent(url.fsPath),
headers: {
diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts
index 25eb72719b2..8efb68d9130 100644
--- a/src/vs/platform/windows/electron-main/windowImpl.ts
+++ b/src/vs/platform/windows/electron-main/windowImpl.ts
@@ -215,7 +215,7 @@ export class CodeWindow extends Disposable implements ICodeWindow {
show: !isFullscreenOrMaximized, // reduce flicker by showing later
title: this.productService.nameLong,
webPreferences: {
- preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js', require).fsPath,
+ preload: FileAccess.asFileUri('vs/base/parts/sandbox/electron-browser/preload.js').fsPath,
additionalArguments: [`--vscode-window-config=${this.configObjectUrl.resource.toString()}`],
v8CacheOptions: this.environmentMainService.useCodeCache ? 'bypassHeatCheck' : 'none',
enableWebSQL: false,
@@ -878,7 +878,7 @@ export class CodeWindow extends Disposable implements ICodeWindow {
this.readyState = ReadyState.NAVIGATING;
// Load URL
- this._win.loadURL(FileAccess.asBrowserUri(`vs/code/electron-sandbox/workbench/workbench${this.environmentMainService.isBuilt ? '' : '-dev'}.html`, require).toString(true));
+ this._win.loadURL(FileAccess.asBrowserUri(`vs/code/electron-sandbox/workbench/workbench${this.environmentMainService.isBuilt ? '' : '-dev'}.html`).toString(true));
// Remember that we did load
const wasLoaded = this.wasLoaded;
diff --git a/src/vs/server/node/extensionHostConnection.ts b/src/vs/server/node/extensionHostConnection.ts
index 00e2e2a1305..3336c1ec2ce 100644
--- a/src/vs/server/node/extensionHostConnection.ts
+++ b/src/vs/server/node/extensionHostConnection.ts
@@ -257,7 +257,7 @@ export class ExtensionHostConnection {
const args = ['--type=extensionHost', `--transformURIs`];
const useHostProxy = this._environmentService.args['use-host-proxy'];
args.push(`--useHostProxy=${useHostProxy ? 'true' : 'false'}`);
- this._extensionHostProcess = cp.fork(FileAccess.asFileUri('bootstrap-fork', require).fsPath, args, opts);
+ this._extensionHostProcess = cp.fork(FileAccess.asFileUri('bootstrap-fork').fsPath, args, opts);
const pid = this._extensionHostProcess.pid;
this._log(`<${pid}> Launched Extension Host Process.`);
diff --git a/src/vs/server/node/remoteExtensionHostAgentServer.ts b/src/vs/server/node/remoteExtensionHostAgentServer.ts
index 31c0864d5fb..efc591aab18 100644
--- a/src/vs/server/node/remoteExtensionHostAgentServer.ts
+++ b/src/vs/server/node/remoteExtensionHostAgentServer.ts
@@ -724,7 +724,7 @@ export async function createServer(address: string | net.AddressInfo | null, arg
const vsdaMod = instantiationService.invokeFunction((accessor) => {
const logService = accessor.get(ILogService);
- const hasVSDA = fs.existsSync(join(FileAccess.asFileUri('', require).fsPath, '../node_modules/vsda'));
+ const hasVSDA = fs.existsSync(join(FileAccess.asFileUri('').fsPath, '../node_modules/vsda'));
if (hasVSDA) {
try {
return <typeof vsda>require.__$__nodeRequire('vsda');
@@ -735,7 +735,7 @@ export async function createServer(address: string | net.AddressInfo | null, arg
return null;
});
- const hasWebClient = fs.existsSync(FileAccess.asFileUri('vs/code/browser/workbench/workbench.html', require).fsPath);
+ const hasWebClient = fs.existsSync(FileAccess.asFileUri('vs/code/browser/workbench/workbench.html').fsPath);
if (hasWebClient && address && typeof address !== 'string') {
// ships the web ui!
diff --git a/src/vs/server/node/remoteLanguagePacks.ts b/src/vs/server/node/remoteLanguagePacks.ts
index 1da6011a1cc..e0218f836ab 100644
--- a/src/vs/server/node/remoteLanguagePacks.ts
+++ b/src/vs/server/node/remoteLanguagePacks.ts
@@ -10,7 +10,7 @@ import * as path from 'vs/base/common/path';
import * as lp from 'vs/base/node/languagePacks';
import product from 'vs/platform/product/common/product';
-const metaData = path.join(FileAccess.asFileUri('', require).fsPath, 'nls.metadata.json');
+const metaData = path.join(FileAccess.asFileUri('').fsPath, 'nls.metadata.json');
const _cache: Map<string, Promise<lp.NLSConfiguration>> = new Map();
function exists(file: string) {
diff --git a/src/vs/server/node/server.main.ts b/src/vs/server/node/server.main.ts
index 183b614e2bc..469671e5745 100644
--- a/src/vs/server/node/server.main.ts
+++ b/src/vs/server/node/server.main.ts
@@ -43,7 +43,7 @@ const GLOBAL_STORAGE_HOME = join(APP_SETTINGS_HOME, 'globalStorage');
const LOCAL_HISTORY_HOME = join(APP_SETTINGS_HOME, 'History');
const MACHINE_SETTINGS_HOME = join(USER_DATA_PATH, 'Machine');
args['user-data-dir'] = USER_DATA_PATH;
-const APP_ROOT = dirname(FileAccess.asFileUri('', require).fsPath);
+const APP_ROOT = dirname(FileAccess.asFileUri('').fsPath);
const BUILTIN_EXTENSIONS_FOLDER_PATH = join(APP_ROOT, 'extensions');
args['builtin-extensions-dir'] = BUILTIN_EXTENSIONS_FOLDER_PATH;
args['extensions-dir'] = args['extensions-dir'] || join(REMOTE_DATA_FOLDER, 'extensions');
diff --git a/src/vs/server/node/webClientServer.ts b/src/vs/server/node/webClientServer.ts
index 35cdf1e9590..82d88edf26f 100644
--- a/src/vs/server/node/webClientServer.ts
+++ b/src/vs/server/node/webClientServer.ts
@@ -90,7 +90,7 @@ export async function serveFile(filePath: string, cacheControl: CacheControl, lo
}
}
-const APP_ROOT = dirname(FileAccess.asFileUri('', require).fsPath);
+const APP_ROOT = dirname(FileAccess.asFileUri('').fsPath);
export class WebClientServer {
@@ -290,7 +290,7 @@ export class WebClientServer {
const resolveWorkspaceURI = (defaultLocation?: string) => defaultLocation && URI.file(path.resolve(defaultLocation)).with({ scheme: Schemas.vscodeRemote, authority: remoteAuthority });
- const filePath = FileAccess.asFileUri(this._environmentService.isBuilt ? 'vs/code/browser/workbench/workbench.html' : 'vs/code/browser/workbench/workbench-dev.html', require).fsPath;
+ const filePath = FileAccess.asFileUri(this._environmentService.isBuilt ? 'vs/code/browser/workbench/workbench.html' : 'vs/code/browser/workbench/workbench-dev.html').fsPath;
const authSessionInfo = !this._environmentService.isBuilt && this._environmentService.args['github-auth'] ? {
id: generateUuid(),
providerId: 'github',
@@ -398,7 +398,7 @@ export class WebClientServer {
* Handle HTTP requests for /callback
*/
private async _handleCallback(res: http.ServerResponse): Promise<void> {
- const filePath = FileAccess.asFileUri('vs/code/browser/workbench/callback.html', require).fsPath;
+ const filePath = FileAccess.asFileUri('vs/code/browser/workbench/callback.html').fsPath;
const data = (await fsp.readFile(filePath)).toString();
const cspDirectives = [
'default-src \'self\';',
diff --git a/src/vs/workbench/api/browser/mainThreadExtensionService.ts b/src/vs/workbench/api/browser/mainThreadExtensionService.ts
index 85891b4bd7f..f0b222d8b6a 100644
--- a/src/vs/workbench/api/browser/mainThreadExtensionService.ts
+++ b/src/vs/workbench/api/browser/mainThreadExtensionService.ts
@@ -189,7 +189,7 @@ export class MainThreadExtensionService implements MainThreadExtensionServiceSha
}
async $asBrowserUri(uri: UriComponents): Promise<UriComponents> {
- return FileAccess.asBrowserUri(URI.revive(uri));
+ return FileAccess.uriToBrowserUri(URI.revive(uri));
}
}
diff --git a/src/vs/workbench/api/worker/extensionHostWorker.ts b/src/vs/workbench/api/worker/extensionHostWorker.ts
index 872f077cbb1..998b53a64ce 100644
--- a/src/vs/workbench/api/worker/extensionHostWorker.ts
+++ b/src/vs/workbench/api/worker/extensionHostWorker.ts
@@ -95,7 +95,7 @@ if ((<any>self).Worker) {
const _Worker = (<any>self).Worker;
Worker = <any>function (stringUrl: string | URL, options?: WorkerOptions) {
if (/^file:/i.test(stringUrl.toString())) {
- stringUrl = FileAccess.asBrowserUri(URI.parse(stringUrl.toString())).toString(true);
+ stringUrl = FileAccess.uriToBrowserUri(URI.parse(stringUrl.toString())).toString(true);
} else if (/^vscode-remote:/i.test(stringUrl.toString())) {
// Supporting transformation of vscode-remote URIs requires an async call to the main thread,
// but we cannot do this call from within the embedded Worker, and the only way out would be
diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts
index 93d9de7b0f6..253dc7371b8 100644
--- a/src/vs/workbench/browser/dnd.ts
+++ b/src/vs/workbench/browser/dnd.ts
@@ -236,7 +236,7 @@ export function fillEditorsDragData(accessor: ServicesAccessor, resourcesOrEdito
// - only file:/ resources are supported
const firstFile = fileSystemResources.find(({ isDirectory }) => !isDirectory);
if (firstFile) {
- const firstFileUri = FileAccess.asFileUri(firstFile.resource); // enforce `file:` URIs
+ const firstFileUri = FileAccess.uriToFileUri(firstFile.resource); // enforce `file:` URIs
if (firstFileUri.scheme === Schemas.file) {
event.dataTransfer.setData(DataTransfers.DOWNLOAD_URL, [Mimes.binary, basename(firstFile.resource), firstFileUri.toString()].join(':'));
}
diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts
index 82ca36f22a6..fbe1d5a8853 100644
--- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts
+++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts
@@ -304,13 +304,13 @@ registerEditorCommands();
// macOS: Touchbar
if (isMacintosh) {
MenuRegistry.appendMenuItem(MenuId.TouchBarContext, {
- command: { id: NavigateBackwardsAction.ID, title: NavigateBackwardsAction.LABEL, icon: { dark: FileAccess.asFileUri('vs/workbench/browser/parts/editor/media/back-tb.png', require) } },
+ command: { id: NavigateBackwardsAction.ID, title: NavigateBackwardsAction.LABEL, icon: { dark: FileAccess.asFileUri('vs/workbench/browser/parts/editor/media/back-tb.png') } },
group: 'navigation',
order: 0
});
MenuRegistry.appendMenuItem(MenuId.TouchBarContext, {
- command: { id: NavigateForwardAction.ID, title: NavigateForwardAction.LABEL, icon: { dark: FileAccess.asFileUri('vs/workbench/browser/parts/editor/media/forward-tb.png', require) } },
+ command: { id: NavigateForwardAction.ID, title: NavigateForwardAction.LABEL, icon: { dark: FileAccess.asFileUri('vs/workbench/browser/parts/editor/media/forward-tb.png') } },
group: 'navigation',
order: 1
});
diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts
index 086e0d0d9bf..0c2c8f23796 100644
--- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts
+++ b/src/vs/workbench/browser/parts/editor/editorGroupView.ts
@@ -43,7 +43,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
import { hash } from 'vs/base/common/hash';
import { getMimeTypes } from 'vs/editor/common/services/languagesAssociations';
import { extname, isEqual } from 'vs/base/common/resources';
-import { FileAccess, Schemas } from 'vs/base/common/network';
+import { AppResourcePath, FileAccess, Schemas } from 'vs/base/common/network';
import { EditorActivation, IEditorOptions } from 'vs/platform/editor/common/editor';
import { IFileDialogService, ConfirmResult } from 'vs/platform/dialogs/common/dialogs';
import { IFilesConfigurationService, AutoSaveMode } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService';
@@ -1939,10 +1939,10 @@ export interface EditorReplacement extends IEditorReplacement {
registerThemingParticipant((theme, collector) => {
// Letterpress
- const letterpress = `./media/letterpress-${theme.type}.svg`;
+ const letterpress: AppResourcePath = `vs/workbench/browser/parts/editor/media/letterpress-${theme.type}.svg`;
collector.addRule(`
.monaco-workbench .part.editor > .content .editor-group-container.empty .editor-group-letterpress {
- background-image: ${asCSSUrl(FileAccess.asBrowserUri(letterpress, require))}
+ background-image: ${asCSSUrl(FileAccess.asBrowserUri(letterpress))}
}
`);
diff --git a/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts b/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts
index b2ab0e3d458..6aeb6d66f25 100644
--- a/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts
+++ b/src/vs/workbench/contrib/audioCues/browser/audioCueService.ts
@@ -70,8 +70,7 @@ export class AudioCueService extends Disposable implements IAudioCueService {
this.playingSounds.add(sound);
const url = FileAccess.asBrowserUri(
- `vs/workbench/contrib/audioCues/browser/media/${sound.fileName}`,
- require
+ `vs/workbench/contrib/audioCues/browser/media/${sound.fileName}`
).toString();
const audio = new Audio(url);
audio.volume = this.getVolumeInPercent() / 100;
diff --git a/src/vs/workbench/contrib/debug/browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/browser/debug.contribution.ts
index 77bda0eb967..95473c975cf 100644
--- a/src/vs/workbench/contrib/debug/browser/debug.contribution.ts
+++ b/src/vs/workbench/contrib/debug/browser/debug.contribution.ts
@@ -200,15 +200,15 @@ if (isMacintosh) {
});
};
- registerTouchBarEntry(DEBUG_RUN_COMMAND_ID, DEBUG_RUN_LABEL, 0, CONTEXT_IN_DEBUG_MODE.toNegated(), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/continue-tb.png', require));
- registerTouchBarEntry(DEBUG_START_COMMAND_ID, DEBUG_START_LABEL, 1, CONTEXT_IN_DEBUG_MODE.toNegated(), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/run-with-debugging-tb.png', require));
- registerTouchBarEntry(CONTINUE_ID, CONTINUE_LABEL, 0, CONTEXT_DEBUG_STATE.isEqualTo('stopped'), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/continue-tb.png', require));
- registerTouchBarEntry(PAUSE_ID, PAUSE_LABEL, 1, ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, ContextKeyExpr.notEquals('debugState', 'stopped')), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/pause-tb.png', require));
- registerTouchBarEntry(STEP_OVER_ID, STEP_OVER_LABEL, 2, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stepover-tb.png', require));
- registerTouchBarEntry(STEP_INTO_ID, STEP_INTO_LABEL, 3, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stepinto-tb.png', require));
- registerTouchBarEntry(STEP_OUT_ID, STEP_OUT_LABEL, 4, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stepout-tb.png', require));
- registerTouchBarEntry(RESTART_SESSION_ID, RESTART_LABEL, 5, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/restart-tb.png', require));
- registerTouchBarEntry(STOP_ID, STOP_LABEL, 6, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stop-tb.png', require));
+ registerTouchBarEntry(DEBUG_RUN_COMMAND_ID, DEBUG_RUN_LABEL, 0, CONTEXT_IN_DEBUG_MODE.toNegated(), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/continue-tb.png'));
+ registerTouchBarEntry(DEBUG_START_COMMAND_ID, DEBUG_START_LABEL, 1, CONTEXT_IN_DEBUG_MODE.toNegated(), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/run-with-debugging-tb.png'));
+ registerTouchBarEntry(CONTINUE_ID, CONTINUE_LABEL, 0, CONTEXT_DEBUG_STATE.isEqualTo('stopped'), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/continue-tb.png'));
+ registerTouchBarEntry(PAUSE_ID, PAUSE_LABEL, 1, ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, ContextKeyExpr.notEquals('debugState', 'stopped')), FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/pause-tb.png'));
+ registerTouchBarEntry(STEP_OVER_ID, STEP_OVER_LABEL, 2, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stepover-tb.png'));
+ registerTouchBarEntry(STEP_INTO_ID, STEP_INTO_LABEL, 3, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stepinto-tb.png'));
+ registerTouchBarEntry(STEP_OUT_ID, STEP_OUT_LABEL, 4, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stepout-tb.png'));
+ registerTouchBarEntry(RESTART_SESSION_ID, RESTART_LABEL, 5, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/restart-tb.png'));
+ registerTouchBarEntry(STOP_ID, STOP_LABEL, 6, CONTEXT_IN_DEBUG_MODE, FileAccess.asFileUri('vs/workbench/contrib/debug/browser/media/stop-tb.png'));
}
// Editor Title Menu's "Run/Debug" dropdown item
diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts
index adc6daaa487..6a7d8cbd13f 100644
--- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts
+++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts
@@ -174,7 +174,7 @@ export class Extension implements IExtension {
private get localIconUrl(): string | null {
if (this.local && this.local.manifest.icon) {
- return FileAccess.asBrowserUri(resources.joinPath(this.local.location, this.local.manifest.icon)).toString(true);
+ return FileAccess.uriToBrowserUri(resources.joinPath(this.local.location, this.local.manifest.icon)).toString(true);
}
return null;
}
@@ -191,10 +191,10 @@ export class Extension implements IExtension {
if (this.type === ExtensionType.System && this.local) {
if (this.local.manifest && this.local.manifest.contributes) {
if (Array.isArray(this.local.manifest.contributes.themes) && this.local.manifest.contributes.themes.length) {
- return FileAccess.asBrowserUri('./media/theme-icon.png', require).toString(true);
+ return FileAccess.asBrowserUri('vs/workbench/contrib/extensions/browser/media/theme-icon.png').toString(true);
}
if (Array.isArray(this.local.manifest.contributes.grammars) && this.local.manifest.contributes.grammars.length) {
- return FileAccess.asBrowserUri('./media/language-icon.svg', require).toString(true);
+ return FileAccess.asBrowserUri('vs/workbench/contrib/extensions/browser/media/language-icon.svg').toString(true);
}
}
}
diff --git a/src/vs/workbench/contrib/files/browser/fileImportExport.ts b/src/vs/workbench/contrib/files/browser/fileImportExport.ts
index bb2297d08c7..fe66a30e5a5 100644
--- a/src/vs/workbench/contrib/files/browser/fileImportExport.ts
+++ b/src/vs/workbench/contrib/files/browser/fileImportExport.ts
@@ -672,7 +672,7 @@ export class FileDownload {
try {
bufferOrUri = (await this.fileService.readFile(stat.resource, { limits: { size: maxBlobDownloadSize } }, cts.token)).value.buffer;
} catch (error) {
- bufferOrUri = FileAccess.asBrowserUri(stat.resource);
+ bufferOrUri = FileAccess.uriToBrowserUri(stat.resource);
}
if (!cts.token.isCancellationRequested) {
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 6803f396bcf..9fc80f70589 100644
--- a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts
+++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts
@@ -479,7 +479,7 @@ export class BackLayerWebView<T extends ICommonCellInfo> extends Disposable {
this._webviewPreloadInitialized = new DeferredPromise();
if (!isWeb) {
- const loaderUri = FileAccess.asFileUri('vs/loader.js', require);
+ const loaderUri = FileAccess.asFileUri('vs/loader.js');
const loader = this.asWebviewUri(loaderUri, undefined);
coreDependencies = `<script src="${loader}"></script><script>
@@ -491,7 +491,7 @@ export class BackLayerWebView<T extends ICommonCellInfo> extends Disposable {
this._initialize(htmlContent);
this._initialized.complete();
} else {
- const loaderUri = FileAccess.asBrowserUri('vs/loader.js', require);
+ const loaderUri = FileAccess.asBrowserUri('vs/loader.js');
fetch(loaderUri.toString(true)).then(async response => {
if (response.status !== 200) {
@@ -553,7 +553,7 @@ var requirejs = (function() {
}
return [
- dirname(FileAccess.asFileUri('vs/loader.js', require)),
+ dirname(FileAccess.asFileUri('vs/loader.js')),
];
}
diff --git a/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts b/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts
index 3d1ddf27618..1f9d20449ef 100644
--- a/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts
+++ b/src/vs/workbench/contrib/performance/browser/perfviewEditor.ts
@@ -256,9 +256,11 @@ class PerfModelContentProvider implements ITextModelContentProvider {
map.set(LoaderEventType.CachedDataFound, []);
map.set(LoaderEventType.CachedDataMissed, []);
map.set(LoaderEventType.CachedDataRejected, []);
- for (const stat of require.getStats()) {
- if (map.has(stat.type)) {
- map.get(stat.type)!.push(stat.detail);
+ if (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/contrib/welcomeGettingStarted/browser/gettingStartedService.ts b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts
index 6e58d3390ea..c186be0ba4d 100644
--- a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts
+++ b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts
@@ -216,8 +216,8 @@ export class WalkthroughsService extends Disposable implements IWalkthroughsServ
: {
type: 'markdown',
path: convertInternalMediaPathToFileURI(step.media.path).with({ query: JSON.stringify({ moduleId: 'vs/workbench/contrib/welcomeGettingStarted/common/media/' + step.media.path }) }),
- base: FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/', require),
- root: FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/', require),
+ base: FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/'),
+ root: FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/'),
},
});
})
@@ -281,12 +281,12 @@ export class WalkthroughsService extends Disposable implements IWalkthroughsServ
private async registerExtensionWalkthroughContributions(extension: IExtensionDescription) {
const convertExtensionPathToFileURI = (path: string) => path.startsWith('https://')
? URI.parse(path, true)
- : FileAccess.asFileUri(joinPath(extension.extensionLocation, path));
+ : FileAccess.uriToFileUri(joinPath(extension.extensionLocation, path));
const convertExtensionRelativePathsToBrowserURIs = (path: string | { hc: string; hcLight?: string; dark: string; light: string }): { hcDark: URI; hcLight: URI; dark: URI; light: URI } => {
const convertPath = (path: string) => path.startsWith('https://')
? URI.parse(path, true)
- : FileAccess.asBrowserUri(joinPath(extension.extensionLocation, path));
+ : FileAccess.uriToBrowserUri(joinPath(extension.extensionLocation, path));
if (typeof path === 'string') {
const converted = convertPath(path);
@@ -353,7 +353,7 @@ export class WalkthroughsService extends Disposable implements IWalkthroughsServ
type: 'markdown',
path: convertExtensionPathToFileURI(step.media.markdown),
base: convertExtensionPathToFileURI(dirname(step.media.markdown)),
- root: FileAccess.asFileUri(extension.extensionLocation),
+ root: FileAccess.uriToFileUri(extension.extensionLocation),
};
}
else if (step.media.svg) {
@@ -401,7 +401,7 @@ export class WalkthroughsService extends Disposable implements IWalkthroughsServ
icon: {
type: 'image',
path: iconStr
- ? FileAccess.asBrowserUri(joinPath(extension.extensionLocation, iconStr)).toString(true)
+ ? FileAccess.uriToBrowserUri(joinPath(extension.extensionLocation, iconStr)).toString(true)
: DefaultIconPath
},
when: ContextKeyExpr.deserialize(override ?? walkthrough.when) ?? ContextKeyExpr.true(),
@@ -657,11 +657,11 @@ const parseDescription = (desc: string): LinkedText[] => desc.split('\n').filter
export const convertInternalMediaPathToFileURI = (path: string) => path.startsWith('https://')
? URI.parse(path, true)
- : FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/' + path, require);
+ : FileAccess.asFileUri(`vs/workbench/contrib/welcomeGettingStarted/common/media/${path}`);
const convertInternalMediaPathToBrowserURI = (path: string) => path.startsWith('https://')
? URI.parse(path, true)
- : FileAccess.asBrowserUri('vs/workbench/contrib/welcomeGettingStarted/common/media/' + path, require);
+ : FileAccess.asBrowserUri(`vs/workbench/contrib/welcomeGettingStarted/common/media/${path}`);
const convertInternalMediaPathsToBrowserURIs = (path: string | { hc: string; hcLight?: string; dark: string; light: string }): { hcDark: URI; hcLight: URI; dark: URI; light: URI } => {
if (typeof path === 'string') {
const converted = convertInternalMediaPathToBrowserURI(path);
diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts b/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts
index 43a52649d81..773842399ae 100644
--- a/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts
+++ b/src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts
@@ -19,7 +19,7 @@ suite('Getting Started Markdown Renderer', () => {
const languageService = new LanguageService();
const renderer = new GettingStartedDetailsRenderer(fileService, new TestNotificationService(), new TestExtensionService(), languageService);
const mdPath = convertInternalMediaPathToFileURI('theme_picker').with({ query: JSON.stringify({ moduleId: 'vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker' }) });
- const mdBase = FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/', require);
+ const mdBase = FileAccess.asFileUri('vs/workbench/contrib/welcomeGettingStarted/common/media/');
const rendered = await renderer.renderMarkdown(mdPath, mdBase);
const imageSrcs = [...rendered.matchAll(/img src="[^"]*"/g)].map(match => match[0]);
for (const src of imageSrcs) {
diff --git a/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.ts b/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.ts
index 906d5a4d76c..46030249ab8 100644
--- a/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.ts
+++ b/src/vs/workbench/contrib/welcomeWalkthrough/browser/editor/editorWalkThrough.ts
@@ -18,7 +18,7 @@ const typeId = 'workbench.editors.walkThroughInput';
const inputOptions: WalkThroughInputOptions = {
typeId,
name: localize('editorWalkThrough.title', "Editor Playground"),
- resource: FileAccess.asBrowserUri('./vs_code_editor_walkthrough.md', require)
+ resource: FileAccess.asBrowserUri('vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough.md')
.with({
scheme: Schemas.walkThrough,
query: JSON.stringify({ moduleId: 'vs/workbench/contrib/welcomeWalkthrough/browser/editor/vs_code_editor_walkthrough' })
diff --git a/src/vs/workbench/electron-sandbox/window.ts b/src/vs/workbench/electron-sandbox/window.ts
index dbaa1204d74..e020a5eec2c 100644
--- a/src/vs/workbench/electron-sandbox/window.ts
+++ b/src/vs/workbench/electron-sandbox/window.ts
@@ -647,7 +647,7 @@ export class NativeWindow extends Disposable {
private async handleWarnings(): Promise<void> {
// Check for cyclic dependencies
- if (require.hasDependencyCycle()) {
+ if (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
diff --git a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts
index 41a586dc3f1..7e797a7bc1d 100644
--- a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts
+++ b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts
@@ -9,7 +9,7 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/
import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity';
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
-import { FileAccess } from 'vs/base/common/network';
+import { builtinExtensionsPath, FileAccess } from 'vs/base/common/network';
import { URI } from 'vs/base/common/uri';
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
import { IProductService } from 'vs/platform/product/common/productService';
@@ -47,7 +47,7 @@ export class BuiltinExtensionsScannerService implements IBuiltinExtensionsScanne
this.nlsUrl = URI.joinPath(URI.parse(nlsBaseUrl), productService.commit, productService.version, Language.value());
}
- const builtinExtensionsServiceUrl = FileAccess.asBrowserUri('../../../../../../extensions', require);
+ const builtinExtensionsServiceUrl = FileAccess.asBrowserUri(builtinExtensionsPath);
if (builtinExtensionsServiceUrl) {
let bundledExtensions: IBundledExtension[] = [];
diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts
index aecd0f677db..4063bccefe7 100644
--- a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts
+++ b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts
@@ -43,7 +43,7 @@ export interface IExtensionManagementServerService {
getExtensionInstallLocation(extension: IExtension): ExtensionInstallLocation | null;
}
-export const DefaultIconPath = FileAccess.asBrowserUri('./media/defaultIcon.png', require).toString(true);
+export const DefaultIconPath = FileAccess.asBrowserUri('vs/workbench/services/extensionManagement/common/media/defaultIcon.png').toString(true);
export type InstallExtensionOnServerEvent = InstallExtensionEvent & { server: IExtensionManagementServer };
export type UninstallExtensionOnServerEvent = UninstallExtensionEvent & { server: IExtensionManagementServer };
diff --git a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts
index b78a21d763e..dcc84bf6d18 100644
--- a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts
+++ b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts
@@ -120,7 +120,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost
console.warn(`The web worker extension host is started in a same-origin iframe!`);
}
- const relativeExtensionHostIframeSrc = FileAccess.asBrowserUri(iframeModulePath, require);
+ const relativeExtensionHostIframeSrc = FileAccess.asBrowserUri(iframeModulePath);
return `${relativeExtensionHostIframeSrc.toString(true)}${suffix}`;
}
diff --git a/src/vs/workbench/services/integrity/electron-sandbox/integrityService.ts b/src/vs/workbench/services/integrity/electron-sandbox/integrityService.ts
index ad51e6ef946..ff9b70bbb6a 100644
--- a/src/vs/workbench/services/integrity/electron-sandbox/integrityService.ts
+++ b/src/vs/workbench/services/integrity/electron-sandbox/integrityService.ts
@@ -13,7 +13,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { IOpenerService } from 'vs/platform/opener/common/opener';
-import { FileAccess } from 'vs/base/common/network';
+import { FileAccess, AppResourcePath } from 'vs/base/common/network';
import { IChecksumService } from 'vs/platform/checksum/common/checksumService';
interface IStorageData {
@@ -125,7 +125,7 @@ export class IntegrityService implements IIntegrityService {
await this.lifecycleService.when(LifecyclePhase.Eventually);
- const allResults = await Promise.all(Object.keys(expectedChecksums).map(filename => this._resolve(filename, expectedChecksums[filename])));
+ const allResults = await Promise.all(Object.keys(expectedChecksums).map(filename => this._resolve(<AppResourcePath>filename, expectedChecksums[filename])));
let isPure = true;
for (let i = 0, len = allResults.length; i < len; i++) {
@@ -141,8 +141,8 @@ export class IntegrityService implements IIntegrityService {
};
}
- private async _resolve(filename: string, expected: string): Promise<ChecksumPair> {
- const fileUri = FileAccess.asFileUri(filename, require);
+ private async _resolve(filename: AppResourcePath, expected: string): Promise<ChecksumPair> {
+ const fileUri = FileAccess.asFileUri(filename);
try {
const checksum = await this.checksumService.checksum(fileUri);
diff --git a/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts b/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts
index 1b3db8dbbfd..ee459b1eaf6 100644
--- a/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts
+++ b/src/vs/workbench/services/languageDetection/browser/languageDetectionWorkerServiceImpl.ts
@@ -5,7 +5,7 @@
import { Disposable } from 'vs/base/common/lifecycle';
import { ILanguageDetectionService, ILanguageDetectionStats, LanguageDetectionStatsClassification, LanguageDetectionStatsId } from 'vs/workbench/services/languageDetection/common/languageDetectionWorkerService';
-import { FileAccess, Schemas } from 'vs/base/common/network';
+import { AppResourcePath, FileAccess, nodeModulesAsarPath, nodeModulesPath, Schemas } from 'vs/base/common/network';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ILanguageService } from 'vs/editor/common/languages/language';
@@ -27,10 +27,10 @@ import { ILogService } from 'vs/platform/log/common/log';
const TOP_LANG_COUNTS = 12;
-const regexpModuleLocation = '../../../../../../node_modules/vscode-regexp-languagedetection';
-const regexpModuleLocationAsar = '../../../../../../node_modules.asar/vscode-regexp-languagedetection';
-const moduleLocation = '../../../../../../node_modules/@vscode/vscode-languagedetection';
-const moduleLocationAsar = '../../../../../../node_modules.asar/@vscode/vscode-languagedetection';
+const regexpModuleLocation: AppResourcePath = `${nodeModulesPath}/vscode-regexp-languagedetection`;
+const regexpModuleLocationAsar: AppResourcePath = `${nodeModulesAsarPath}/vscode-regexp-languagedetection`;
+const moduleLocation: AppResourcePath = `${nodeModulesPath}/@vscode/vscode-languagedetection`;
+const moduleLocationAsar: AppResourcePath = `${nodeModulesAsarPath}/@vscode/vscode-languagedetection`;
export class LanguageDetectionService extends Disposable implements ILanguageDetectionService {
static readonly enablementSettingKey = 'workbench.editor.languageDetection';
@@ -72,17 +72,17 @@ export class LanguageDetectionService extends Disposable implements ILanguageDet
telemetryService,
// TODO: See if it's possible to bundle vscode-languagedetection
this._environmentService.isBuilt && !isWeb
- ? FileAccess.asBrowserUri(`${moduleLocationAsar}/dist/lib/index.js`, require).toString(true)
- : FileAccess.asBrowserUri(`${moduleLocation}/dist/lib/index.js`, require).toString(true),
+ ? FileAccess.asBrowserUri(`${moduleLocationAsar}/dist/lib/index.js`).toString(true)
+ : FileAccess.asBrowserUri(`${moduleLocation}/dist/lib/index.js`).toString(true),
this._environmentService.isBuilt && !isWeb
- ? FileAccess.asBrowserUri(`${moduleLocationAsar}/model/model.json`, require).toString(true)
- : FileAccess.asBrowserUri(`${moduleLocation}/model/model.json`, require).toString(true),
+ ? FileAccess.asBrowserUri(`${moduleLocationAsar}/model/model.json`).toString(true)
+ : FileAccess.asBrowserUri(`${moduleLocation}/model/model.json`).toString(true),
this._environmentService.isBuilt && !isWeb
- ? FileAccess.asBrowserUri(`${moduleLocationAsar}/model/group1-shard1of1.bin`, require).toString(true)
- : FileAccess.asBrowserUri(`${moduleLocation}/model/group1-shard1of1.bin`, require).toString(true),
+ ? FileAccess.asBrowserUri(`${moduleLocationAsar}/model/group1-shard1of1.bin`).toString(true)
+ : FileAccess.asBrowserUri(`${moduleLocation}/model/group1-shard1of1.bin`).toString(true),
this._environmentService.isBuilt && !isWeb
- ? FileAccess.asBrowserUri(`${regexpModuleLocationAsar}/dist/index.js`, require).toString(true)
- : FileAccess.asBrowserUri(`${regexpModuleLocation}/dist/index.js`, require).toString(true),
+ ? FileAccess.asBrowserUri(`${regexpModuleLocationAsar}/dist/index.js`).toString(true)
+ : FileAccess.asBrowserUri(`${regexpModuleLocation}/dist/index.js`).toString(true),
languageConfigurationService
);
diff --git a/src/vs/workbench/services/textMate/browser/browserTextMateService.ts b/src/vs/workbench/services/textMate/browser/browserTextMateService.ts
index 44397b4825c..0cfc9e90156 100644
--- a/src/vs/workbench/services/textMate/browser/browserTextMateService.ts
+++ b/src/vs/workbench/services/textMate/browser/browserTextMateService.ts
@@ -10,7 +10,7 @@ import { FileAccess } from 'vs/base/common/network';
export class TextMateService extends AbstractTextMateService {
protected async _loadVSCodeOnigurumWASM(): Promise<Response | ArrayBuffer> {
- const response = await fetch(FileAccess.asBrowserUri('vscode-oniguruma/../onig.wasm', require).toString(true));
+ const response = await fetch(FileAccess.asBrowserUri('vscode-oniguruma/../onig.wasm').toString(true));
// Using the response directly only works if the server sets the MIME type 'application/wasm'.
// Otherwise, a TypeError is thrown when using the streaming compiler.
// We therefore use the non-streaming compiler :(.
diff --git a/src/vs/workbench/services/textMate/browser/nativeTextMateService.ts b/src/vs/workbench/services/textMate/browser/nativeTextMateService.ts
index 6bccb3bd252..9206d7b6c33 100644
--- a/src/vs/workbench/services/textMate/browser/nativeTextMateService.ts
+++ b/src/vs/workbench/services/textMate/browser/nativeTextMateService.ts
@@ -25,7 +25,7 @@ import { IModelContentChangedEvent } from 'vs/editor/common/textModelEvents';
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { IProgressService } from 'vs/platform/progress/common/progress';
-import { FileAccess } from 'vs/base/common/network';
+import { FileAccess, nodeModulesAsarUnpackedPath, nodeModulesPath } from 'vs/base/common/network';
import { ILanguageIdCodec } from 'vs/editor/common/languages';
import { ILanguageConfigurationService } from 'vs/editor/common/languages/languageConfigurationRegistry';
@@ -192,8 +192,8 @@ export class TextMateService extends AbstractTextMateService {
protected async _loadVSCodeOnigurumWASM(): Promise<Response | ArrayBuffer> {
const response = await fetch(this._environmentService.isBuilt
- ? FileAccess.asBrowserUri('../../../../../../node_modules.asar.unpacked/vscode-oniguruma/release/onig.wasm', require).toString(true)
- : FileAccess.asBrowserUri('../../../../../../node_modules/vscode-oniguruma/release/onig.wasm', require).toString(true));
+ ? FileAccess.asBrowserUri(`${nodeModulesAsarUnpackedPath}/vscode-oniguruma/release/onig.wasm`).toString(true)
+ : FileAccess.asBrowserUri(`${nodeModulesPath}/vscode-oniguruma/release/onig.wasm`).toString(true));
return response;
}
diff --git a/src/vs/workbench/services/textMate/browser/textMateWorker.ts b/src/vs/workbench/services/textMate/browser/textMateWorker.ts
index 9c4339175eb..ff7f393d33a 100644
--- a/src/vs/workbench/services/textMate/browser/textMateWorker.ts
+++ b/src/vs/workbench/services/textMate/browser/textMateWorker.ts
@@ -15,9 +15,14 @@ import type { IRawTheme, IOnigLib } from 'vscode-textmate';
import { ContiguousMultilineTokensBuilder } from 'vs/editor/common/tokens/contiguousMultilineTokensBuilder';
import { countEOL } from 'vs/editor/common/core/eolCounter';
import { LineTokens } from 'vs/editor/common/tokens/lineTokens';
-import { FileAccess } from 'vs/base/common/network';
+import { AppResourcePath, FileAccess, nodeModulesAsarPath, nodeModulesPath } from 'vs/base/common/network';
import { TMTokenization } from 'vs/workbench/services/textMate/common/TMTokenization';
+const textmateModuleLocation: AppResourcePath = `${nodeModulesPath}/vscode-textmate`;
+const textmateModuleLocationAsar: AppResourcePath = `${nodeModulesAsarPath}/vscode-textmate`;
+const onigurumaModuleLocation: AppResourcePath = `${nodeModulesPath}/vscode-oniguruma`;
+const onigurumaModuleLocationAsar: AppResourcePath = `${nodeModulesAsarPath}/vscode-oniguruma`;
+
export interface IValidGrammarDefinitionDTO {
location: UriComponents;
language?: string;
@@ -153,15 +158,17 @@ export class TextMateWorker {
}
private async _loadTMGrammarFactory(grammarDefinitions: IValidGrammarDefinition[]): Promise<TMGrammarFactory> {
- require.config({
- paths: {
- 'vscode-textmate': '../node_modules/vscode-textmate/release/main',
- 'vscode-oniguruma': '../node_modules/vscode-oniguruma/release/main',
- }
- });
- const vscodeTextmate = await import('vscode-textmate');
- const vscodeOniguruma = await import('vscode-oniguruma');
- const response = await fetch(FileAccess.asBrowserUri('vscode-oniguruma/../onig.wasm', require).toString(true));
+ // TODO: asar support
+ const useAsar = false; // this._environmentService.isBuilt && !isWeb
+
+ const textmateLocation: AppResourcePath = useAsar ? textmateModuleLocation : textmateModuleLocationAsar;
+ const onigurumaLocation: AppResourcePath = useAsar ? onigurumaModuleLocation : onigurumaModuleLocationAsar;
+ const textmateMain: AppResourcePath = `${textmateLocation}/release/main.js`;
+ const onigurumaMain: AppResourcePath = `${onigurumaLocation}/release/main.js`;
+ const onigurumaWASM: AppResourcePath = `${onigurumaLocation}/release/onig.wasm`;
+ const vscodeTextmate = await import(FileAccess.asBrowserUri(textmateMain).toString(true));
+ const vscodeOniguruma = await import(FileAccess.asBrowserUri(onigurumaMain).toString(true));
+ const response = await fetch(FileAccess.asBrowserUri(onigurumaWASM).toString(true));
// Using the response directly only works if the server sets the MIME type 'application/wasm'.
// Otherwise, a TypeError is thrown when using the streaming compiler.
// We therefore use the non-streaming compiler :(.
diff --git a/src/vs/workbench/services/themes/test/electron-browser/tokenStyleResolving.test.ts b/src/vs/workbench/services/themes/test/electron-browser/tokenStyleResolving.test.ts
index d93a77294b0..c52a3ad504d 100644
--- a/src/vs/workbench/services/themes/test/electron-browser/tokenStyleResolving.test.ts
+++ b/src/vs/workbench/services/themes/test/electron-browser/tokenStyleResolving.test.ts
@@ -99,7 +99,7 @@ suite('Themes - TokenStyleResolving', () => {
test('color defaults', async () => {
const themeData = ColorThemeData.createUnloadedTheme('foo');
- themeData.location = FileAccess.asFileUri('./color-theme.json', require);
+ themeData.location = FileAccess.asFileUri('vs/workbench/services/themes/test/electron-browser/color-theme.json');
await themeData.ensureLoaded(extensionResourceLoaderService);
assert.strictEqual(themeData.isLoaded, true);