@@ -11,153 +11,152 @@ exports.setup = function() {
11
11
const REPORTFILENAME = 3 ;
12
12
const REPORTPATH = 4 ;
13
13
const REPORTVERBOSE = 5 ;
14
- if ( internalBinding ( 'config' ) . hasReport ) {
15
- // If report is enabled, extract the binding and
16
- // wrap the APIs with thin layers, with some error checks.
17
- // user options can come in from CLI / ENV / API.
18
- // CLI and ENV is intercepted in C++ and the API call here (JS).
19
- // So sync up with both sides as appropriate - initially from
20
- // C++ to JS and from JS to C++ whenever the API is called.
21
- // Some events are controlled purely from JS (signal | exception)
22
- // and some from C++ (fatalerror) so this sync-up is essential for
23
- // correct behavior and alignment with the supplied tunables.
24
- const nr = internalBinding ( 'report' ) ;
25
14
26
- // Keep it un-exposed; lest programs play with it
27
- // leaving us with a lot of unwanted sanity checks.
28
- let config = {
29
- events : [ ] ,
30
- signal : 'SIGUSR2' ,
31
- filename : '' ,
32
- path : '' ,
33
- verbose : false
34
- } ;
35
- const report = {
36
- setDiagnosticReportOptions ( options ) {
37
- emitExperimentalWarning ( 'report' ) ;
38
- // Reuse the null and undefined checks. Save
39
- // space when dealing with large number of arguments.
40
- const list = parseOptions ( options ) ;
15
+ // If report is enabled, extract the binding and
16
+ // wrap the APIs with thin layers, with some error checks.
17
+ // user options can come in from CLI / ENV / API.
18
+ // CLI and ENV is intercepted in C++ and the API call here (JS).
19
+ // So sync up with both sides as appropriate - initially from
20
+ // C++ to JS and from JS to C++ whenever the API is called.
21
+ // Some events are controlled purely from JS (signal | exception)
22
+ // and some from C++ (fatalerror) so this sync-up is essential for
23
+ // correct behavior and alignment with the supplied tunables.
24
+ const nr = internalBinding ( 'report' ) ;
41
25
42
- // Flush the stale entries from report, as
43
- // we are refreshing it, items that the users did not
44
- // touch may be hanging around stale otherwise.
45
- config = { } ;
26
+ // Keep it un-exposed; lest programs play with it
27
+ // leaving us with a lot of unwanted sanity checks.
28
+ let config = {
29
+ events : [ ] ,
30
+ signal : 'SIGUSR2' ,
31
+ filename : '' ,
32
+ path : '' ,
33
+ verbose : false
34
+ } ;
35
+ const report = {
36
+ setDiagnosticReportOptions ( options ) {
37
+ emitExperimentalWarning ( 'report' ) ;
38
+ // Reuse the null and undefined checks. Save
39
+ // space when dealing with large number of arguments.
40
+ const list = parseOptions ( options ) ;
46
41
47
- // The parseOption method returns an array that include
48
- // the indices at which valid params are present.
49
- list . forEach ( ( i ) => {
50
- switch ( i ) {
51
- case REPORTEVENTS :
52
- if ( Array . isArray ( options . events ) )
53
- config . events = options . events ;
54
- else
55
- throw new ERR_INVALID_ARG_TYPE ( 'events' ,
56
- 'Array' ,
57
- options . events ) ;
58
- break ;
59
- case REPORTSIGNAL :
60
- if ( typeof options . signal !== 'string' ) {
61
- throw new ERR_INVALID_ARG_TYPE ( 'signal' ,
62
- 'String' ,
63
- options . signal ) ;
64
- }
65
- process . removeListener ( config . signal , handleSignal ) ;
66
- if ( config . events . includes ( 'signal' ) )
67
- process . on ( options . signal , handleSignal ) ;
68
- config . signal = options . signal ;
69
- break ;
70
- case REPORTFILENAME :
71
- if ( typeof options . filename !== 'string' ) {
72
- throw new ERR_INVALID_ARG_TYPE ( 'filename' ,
73
- 'String' ,
74
- options . filename ) ;
75
- }
76
- config . filename = options . filename ;
77
- break ;
78
- case REPORTPATH :
79
- if ( typeof options . path !== 'string' )
80
- throw new ERR_INVALID_ARG_TYPE ( 'path' , 'String' , options . path ) ;
81
- config . path = options . path ;
82
- break ;
83
- case REPORTVERBOSE :
84
- if ( typeof options . verbose !== 'string' &&
85
- typeof options . verbose !== 'boolean' ) {
86
- throw new ERR_INVALID_ARG_TYPE ( 'verbose' ,
87
- 'Booelan | String' +
88
- ' (true|false|yes|no)' ,
89
- options . verbose ) ;
90
- }
91
- config . verbose = options . verbose ;
92
- break ;
93
- }
94
- } ) ;
95
- // Upload this new config to C++ land
96
- nr . syncConfig ( config , true ) ;
97
- } ,
42
+ // Flush the stale entries from report, as
43
+ // we are refreshing it, items that the users did not
44
+ // touch may be hanging around stale otherwise.
45
+ config = { } ;
46
+
47
+ // The parseOption method returns an array that include
48
+ // the indices at which valid params are present.
49
+ list . forEach ( ( i ) => {
50
+ switch ( i ) {
51
+ case REPORTEVENTS :
52
+ if ( Array . isArray ( options . events ) )
53
+ config . events = options . events ;
54
+ else
55
+ throw new ERR_INVALID_ARG_TYPE ( 'events' ,
56
+ 'Array' ,
57
+ options . events ) ;
58
+ break ;
59
+ case REPORTSIGNAL :
60
+ if ( typeof options . signal !== 'string' ) {
61
+ throw new ERR_INVALID_ARG_TYPE ( 'signal' ,
62
+ 'String' ,
63
+ options . signal ) ;
64
+ }
65
+ process . removeListener ( config . signal , handleSignal ) ;
66
+ if ( config . events . includes ( 'signal' ) )
67
+ process . on ( options . signal , handleSignal ) ;
68
+ config . signal = options . signal ;
69
+ break ;
70
+ case REPORTFILENAME :
71
+ if ( typeof options . filename !== 'string' ) {
72
+ throw new ERR_INVALID_ARG_TYPE ( 'filename' ,
73
+ 'String' ,
74
+ options . filename ) ;
75
+ }
76
+ config . filename = options . filename ;
77
+ break ;
78
+ case REPORTPATH :
79
+ if ( typeof options . path !== 'string' )
80
+ throw new ERR_INVALID_ARG_TYPE ( 'path' , 'String' , options . path ) ;
81
+ config . path = options . path ;
82
+ break ;
83
+ case REPORTVERBOSE :
84
+ if ( typeof options . verbose !== 'string' &&
85
+ typeof options . verbose !== 'boolean' ) {
86
+ throw new ERR_INVALID_ARG_TYPE ( 'verbose' ,
87
+ 'Booelan | String' +
88
+ ' (true|false|yes|no)' ,
89
+ options . verbose ) ;
90
+ }
91
+ config . verbose = options . verbose ;
92
+ break ;
93
+ }
94
+ } ) ;
95
+ // Upload this new config to C++ land
96
+ nr . syncConfig ( config , true ) ;
97
+ } ,
98
98
99
99
100
- triggerReport ( file , err ) {
101
- emitExperimentalWarning ( 'report' ) ;
102
- if ( err == null ) {
103
- if ( file == null ) {
104
- return nr . triggerReport ( new ERR_SYNTHETIC (
105
- 'JavaScript Callstack' ) . stack ) ;
106
- }
107
- if ( typeof file !== 'string' )
108
- throw new ERR_INVALID_ARG_TYPE ( 'file' , 'String' , file ) ;
109
- return nr . triggerReport ( file , new ERR_SYNTHETIC (
100
+ triggerReport ( file , err ) {
101
+ emitExperimentalWarning ( 'report' ) ;
102
+ if ( err == null ) {
103
+ if ( file == null ) {
104
+ return nr . triggerReport ( new ERR_SYNTHETIC (
110
105
'JavaScript Callstack' ) . stack ) ;
111
106
}
112
- if ( typeof err !== 'object' )
113
- throw new ERR_INVALID_ARG_TYPE ( 'err' , 'Object' , err ) ;
114
- if ( file == null )
115
- return nr . triggerReport ( err . stack ) ;
116
107
if ( typeof file !== 'string' )
117
108
throw new ERR_INVALID_ARG_TYPE ( 'file' , 'String' , file ) ;
118
- return nr . triggerReport ( file , err . stack ) ;
119
- } ,
120
- getReport ( err ) {
121
- emitExperimentalWarning ( 'report' ) ;
122
- if ( err == null ) {
123
- return nr . getReport ( new ERR_SYNTHETIC ( 'JavaScript Callstack' ) . stack ) ;
124
- } else if ( typeof err !== 'object' ) {
125
- throw new ERR_INVALID_ARG_TYPE ( 'err' , 'Objct' , err ) ;
126
- } else {
127
- return nr . getReport ( err . stack ) ;
128
- }
109
+ return nr . triggerReport ( file , new ERR_SYNTHETIC (
110
+ 'JavaScript Callstack' ) . stack ) ;
129
111
}
130
- } ;
112
+ if ( typeof err !== 'object' )
113
+ throw new ERR_INVALID_ARG_TYPE ( 'err' , 'Object' , err ) ;
114
+ if ( file == null )
115
+ return nr . triggerReport ( err . stack ) ;
116
+ if ( typeof file !== 'string' )
117
+ throw new ERR_INVALID_ARG_TYPE ( 'file' , 'String' , file ) ;
118
+ return nr . triggerReport ( file , err . stack ) ;
119
+ } ,
120
+ getReport ( err ) {
121
+ emitExperimentalWarning ( 'report' ) ;
122
+ if ( err == null ) {
123
+ return nr . getReport ( new ERR_SYNTHETIC ( 'JavaScript Callstack' ) . stack ) ;
124
+ } else if ( typeof err !== 'object' ) {
125
+ throw new ERR_INVALID_ARG_TYPE ( 'err' , 'Objct' , err ) ;
126
+ } else {
127
+ return nr . getReport ( err . stack ) ;
128
+ }
129
+ }
130
+ } ;
131
131
132
- // Download the CLI / ENV config into JS land.
133
- nr . syncConfig ( config , false ) ;
132
+ // Download the CLI / ENV config into JS land.
133
+ nr . syncConfig ( config , false ) ;
134
134
135
- function handleSignal ( signo ) {
136
- if ( typeof signo !== 'string' )
137
- signo = config . signal ;
138
- nr . onUserSignal ( signo ) ;
139
- }
135
+ function handleSignal ( signo ) {
136
+ if ( typeof signo !== 'string' )
137
+ signo = config . signal ;
138
+ nr . onUserSignal ( signo ) ;
139
+ }
140
140
141
- if ( config . events . includes ( 'signal' ) ) {
142
- process . on ( config . signal , handleSignal ) ;
143
- }
141
+ if ( config . events . includes ( 'signal' ) ) {
142
+ process . on ( config . signal , handleSignal ) ;
143
+ }
144
144
145
- function parseOptions ( obj ) {
146
- const list = [ ] ;
147
- if ( obj == null )
148
- return list ;
149
- if ( obj . events != null )
150
- list . push ( REPORTEVENTS ) ;
151
- if ( obj . signal != null )
152
- list . push ( REPORTSIGNAL ) ;
153
- if ( obj . filename != null )
154
- list . push ( REPORTFILENAME ) ;
155
- if ( obj . path != null )
156
- list . push ( REPORTPATH ) ;
157
- if ( obj . verbose != null )
158
- list . push ( REPORTVERBOSE ) ;
145
+ function parseOptions ( obj ) {
146
+ const list = [ ] ;
147
+ if ( obj == null )
159
148
return list ;
160
- }
161
- process . report = report ;
149
+ if ( obj . events != null )
150
+ list . push ( REPORTEVENTS ) ;
151
+ if ( obj . signal != null )
152
+ list . push ( REPORTSIGNAL ) ;
153
+ if ( obj . filename != null )
154
+ list . push ( REPORTFILENAME ) ;
155
+ if ( obj . path != null )
156
+ list . push ( REPORTPATH ) ;
157
+ if ( obj . verbose != null )
158
+ list . push ( REPORTVERBOSE ) ;
159
+ return list ;
162
160
}
161
+ process . report = report ;
163
162
} ;
0 commit comments