@@ -13,7 +13,6 @@ var currentModulePaths = require('current-module-paths');
13
13
var toSpawnArgs = require ( 'object-to-spawn-args' ) ;
14
14
var cp = require ( 'child_process' ) ;
15
15
var util = require ( 'node:util' ) ;
16
- var streamReadAll = require ( 'stream-read-all' ) ;
17
16
18
17
var _documentCurrentScript = typeof document !== 'undefined' ? document . currentScript : null ;
19
18
class TempFile {
@@ -121,6 +120,53 @@ class Explain extends JsdocCommand {
121
120
}
122
121
123
122
async _runJsdoc ( ) {
123
+ const jsdocArgs = [
124
+ this . jsdocPath ,
125
+ ...toSpawnArgs ( this . jsdocOptions ) ,
126
+ '-X' ,
127
+ ...( this . options . source . length ? this . tempFileSet . files : this . inputFileSet . files )
128
+ ] ;
129
+ let jsdocOutput = { stdout : '' , stderr : '' } ;
130
+
131
+ const code = await new Promise ( ( resolve , reject ) => {
132
+ const handle = cp . spawn ( 'node' , jsdocArgs ) ;
133
+ handle . stdout . setEncoding ( 'utf8' ) ;
134
+ handle . stderr . setEncoding ( 'utf8' ) ;
135
+ handle . stdout . on ( 'data' , chunk => {
136
+ jsdocOutput . stdout += chunk ;
137
+ } ) ;
138
+ handle . stderr . on ( 'data' , chunk => {
139
+ jsdocOutput . stderr += chunk ;
140
+ } ) ;
141
+ handle . on ( 'exit' , ( code ) => {
142
+ resolve ( code ) ;
143
+ } ) ;
144
+ handle . on ( 'error' , reject ) ;
145
+ } ) ;
146
+ // console.log(handle.stdout.closed, handle.stdout.isPaused(), handle.stdout.readable, handle.stdout.destroyed, handle.stdout.errorer, handle.stdout.readableEnded)
147
+ // jsdocOutput.stdout = await streamReadText(handle.stdout)
148
+ // jsdocOutput.stderr = await streamReadText(handle.stderr)
149
+ // console.log(jsdocOutput)
150
+ try {
151
+ if ( code > 0 ) {
152
+ throw new Error ( 'jsdoc exited with non-zero code: ' + code )
153
+ } else {
154
+ const explainOutput = JSON . parse ( jsdocOutput . stdout ) ;
155
+ if ( this . options . cache ) {
156
+ await this . cache . write ( this . cacheKey , explainOutput ) ;
157
+ }
158
+ return explainOutput
159
+ }
160
+ } catch ( err ) {
161
+ const firstLineOfStdout = jsdocOutput . stdout . split ( / \r ? \n / ) [ 0 ] ;
162
+ const jsdocErr = new Error ( jsdocOutput . stderr . trim ( ) || firstLineOfStdout || 'Jsdoc failed.' ) ;
163
+ jsdocErr . name = 'JSDOC_ERROR' ;
164
+ jsdocErr . cause = err ;
165
+ throw jsdocErr
166
+ }
167
+ }
168
+
169
+ async _runJsdoc1 ( ) {
124
170
return new Promise ( ( resolve , reject ) => {
125
171
const jsdocArgs = [
126
172
this . jsdocPath ,
@@ -130,8 +176,8 @@ class Explain extends JsdocCommand {
130
176
] ;
131
177
let jsdocOutput = { stdout : '' , stderr : '' } ;
132
178
const handle = cp . spawn ( 'node' , jsdocArgs ) ;
133
- streamReadAll . streamReadText ( handle . stdout ) . then ( stdout => jsdocOutput . stdout = stdout ) ;
134
- streamReadAll . streamReadText ( handle . stderr ) . then ( stderr => jsdocOutput . stderr = stderr ) ;
179
+ streamReadText ( handle . stdout ) . then ( stdout => jsdocOutput . stdout = stdout ) ;
180
+ streamReadText ( handle . stderr ) . then ( stderr => jsdocOutput . stderr = stderr ) ;
135
181
handle . on ( 'close' , ( code ) => {
136
182
try {
137
183
if ( code > 0 ) {
0 commit comments