@@ -29,6 +29,7 @@ const { IterableWeakMap } = require('internal/util/iterable_weak_map');
29
29
const {
30
30
normalizeReferrerURL,
31
31
} = require ( 'internal/modules/cjs/helpers' ) ;
32
+ const { validateBoolean } = require ( 'internal/validators' ) ;
32
33
// Since the CJS module cache is mutable, which leads to memory leaks when
33
34
// modules are deleted, we use a WeakMap so that the source map cache will
34
35
// be purged automatically:
@@ -41,22 +42,35 @@ let SourceMap;
41
42
let sourceMapsEnabled ;
42
43
function getSourceMapsEnabled ( ) {
43
44
if ( sourceMapsEnabled === undefined ) {
44
- sourceMapsEnabled = getOptionValue ( '--enable-source-maps' ) ;
45
- if ( sourceMapsEnabled ) {
46
- const {
47
- enableSourceMaps,
48
- setPrepareStackTraceCallback
49
- } = internalBinding ( 'errors' ) ;
50
- const {
51
- prepareStackTrace
52
- } = require ( 'internal/source_map/prepare_stack_trace' ) ;
53
- setPrepareStackTraceCallback ( prepareStackTrace ) ;
54
- enableSourceMaps ( ) ;
55
- }
45
+ setSourceMapsEnabled ( getOptionValue ( '--enable-source-maps' ) ) ;
56
46
}
57
47
return sourceMapsEnabled ;
58
48
}
59
49
50
+ function setSourceMapsEnabled ( val ) {
51
+ validateBoolean ( val , 'val' ) ;
52
+
53
+ const {
54
+ setSourceMapsEnabled,
55
+ setPrepareStackTraceCallback
56
+ } = internalBinding ( 'errors' ) ;
57
+ setSourceMapsEnabled ( val ) ;
58
+ if ( val ) {
59
+ const {
60
+ prepareStackTrace
61
+ } = require ( 'internal/source_map/prepare_stack_trace' ) ;
62
+ setPrepareStackTraceCallback ( prepareStackTrace ) ;
63
+ } else if ( sourceMapsEnabled !== undefined ) {
64
+ // Reset prepare stack trace callback only when disabling source maps.
65
+ const {
66
+ prepareStackTrace,
67
+ } = require ( 'internal/errors' ) ;
68
+ setPrepareStackTraceCallback ( prepareStackTrace ) ;
69
+ }
70
+
71
+ sourceMapsEnabled = val ;
72
+ }
73
+
60
74
function maybeCacheSourceMap ( filename , content , cjsModuleInstance ) {
61
75
const sourceMapsEnabled = getSourceMapsEnabled ( ) ;
62
76
if ( ! ( process . env . NODE_V8_COVERAGE || sourceMapsEnabled ) ) return ;
@@ -231,6 +245,7 @@ function findSourceMap(sourceURL) {
231
245
module . exports = {
232
246
findSourceMap,
233
247
getSourceMapsEnabled,
248
+ setSourceMapsEnabled,
234
249
maybeCacheSourceMap,
235
250
sourceMapCacheToObject,
236
251
} ;
0 commit comments