Skip to content

Commit 44c3bce

Browse files
committed
Several changes:
Allow installers to be notified upon redirection so they can log warnings to users Allow installers to opt-out of redirection Support both entrypoints: source-map-support and source-map-support/register
1 parent eb81879 commit 44c3bce

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

source-map-support.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ export interface Options {
3131
overrideRetrieveSourceMap?: boolean | undefined;
3232
retrieveFile?(path: string): string;
3333
retrieveSourceMap?(source: string): UrlAndMap | null;
34+
/**
35+
* Set false to disable redirection of require / import `source-map-support` to `@cspotcode/source-map-support`
36+
*/
37+
redirectConflictingLibrary?: boolean;
38+
/**
39+
* Callback will be called every time we redirect due to `redirectConflictingLibrary`
40+
* This allows consumers to log helpful warnings if they choose.
41+
*/
42+
onConflictingLibraryRedirect?: (request, parent, isMain, redirectedRequest) => void;
3443
}
3544

3645
export interface Position {

source-map-support.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -560,12 +560,22 @@ exports.install = function(options) {
560560

561561
// Redirect subsequent imports of "source-map-support"
562562
// to this package
563-
const originalResolveFilename = Module._resolveFilename;
564-
Module._resolveFilename = function resolveFilenameProxy(request, parent, isMain, options) {
565-
if (request === 'source-map-support') {
566-
request = require.resolve('@cspotcode/source-map-support');
563+
const {redirectConflictingLibrary = true, onConflictingLibraryRedirect} = options;
564+
if(redirectConflictingLibrary) {
565+
const originalResolveFilename = Module._resolveFilename;
566+
Module._resolveFilename = function resolveFilenameProxy(request, parent, isMain, options) {
567+
// Match all source-map-support entrypoints: source-map-support, source-map-support/register
568+
if (request === 'source-map-support') {
569+
const newRequest = require.resolve('./');
570+
if(onConflictingLibraryRedirect) onConflictingLibraryRedirect(request, parent, isMain, options, newRequest);
571+
request = newRequest;
572+
} else if (request === 'source-map-support/register') {
573+
const newRequest = require.resolve('./register');
574+
if(onConflictingLibraryRedirect) onConflictingLibraryRedirect(request, parent, isMain, options, newRequest);
575+
request = newRequest;
576+
}
577+
return originalResolveFilename.call(this, request, parent, isMain, options);
567578
}
568-
return originalResolveFilename.call(this, request, parent, isMain, options);
569579
}
570580

571581
// Allow sources to be found by methods other than reading the files

0 commit comments

Comments
 (0)