mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-22 17:48:56 +01:00
@@ -23,8 +23,25 @@ class NodeModuleRequireInterceptor extends RequireInterceptor {
|
||||
protected _installInterceptor(): void {
|
||||
const that = this;
|
||||
const node_module = <any>require.__$__nodeRequire('module');
|
||||
const original = node_module._load;
|
||||
const originalLoad = node_module._load;
|
||||
node_module._load = function load(request: string, parent: { filename: string; }, isMain: boolean) {
|
||||
request = applyAlternatives(request);
|
||||
if (!that._factories.has(request)) {
|
||||
return originalLoad.apply(this, arguments);
|
||||
}
|
||||
return that._factories.get(request)!.load(
|
||||
request,
|
||||
URI.file(realpathSync(parent.filename)),
|
||||
request => originalLoad.apply(this, [request, parent, isMain])
|
||||
);
|
||||
};
|
||||
|
||||
const originalLookup = node_module._resolveLookupPaths;
|
||||
node_module._resolveLookupPaths = (request: string, parent: unknown) => {
|
||||
return originalLookup.call(this, applyAlternatives(request), parent);
|
||||
};
|
||||
|
||||
const applyAlternatives = (request: string) => {
|
||||
for (let alternativeModuleName of that._alternatives) {
|
||||
let alternative = alternativeModuleName(request);
|
||||
if (alternative) {
|
||||
@@ -32,14 +49,7 @@ class NodeModuleRequireInterceptor extends RequireInterceptor {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!that._factories.has(request)) {
|
||||
return original.apply(this, arguments);
|
||||
}
|
||||
return that._factories.get(request)!.load(
|
||||
request,
|
||||
URI.file(realpathSync(parent.filename)),
|
||||
request => original.apply(this, [request, parent, isMain])
|
||||
);
|
||||
return request;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user