5
5
const path = require ( 'path' )
6
6
const mkdirp = require ( 'mkdirp' )
7
7
const fs = require ( 'fs-extra' )
8
- const request = require ( 'request' )
9
8
const commander = require ( 'commander' )
9
+ const { Readable } = require ( 'stream' )
10
+ const { finished } = require ( 'stream/promises' )
10
11
11
12
const getComponentList = ( ) => {
12
13
return [
@@ -79,19 +80,15 @@ const getComponentList = () => {
79
80
function downloadComponentInputFiles ( manifestFileName , manifestUrl , outDir ) {
80
81
return new Promise ( function ( resolve , reject ) {
81
82
let manifestBody = '{}'
82
- request ( manifestUrl , async function ( error , response , body ) {
83
- if ( error ) {
84
- console . error ( `Error from ${ manifestUrl } :` , error )
85
- return reject ( error )
86
- }
87
-
88
- if ( response && response . statusCode === 200 ) {
89
- manifestBody = body
83
+ fetch ( manifestUrl , async function ( response ) {
84
+ if ( response . status === 200 ) {
85
+ manifestBody = await response . text ( )
90
86
}
91
87
92
88
const manifestJson = JSON . parse ( manifestBody )
93
89
if ( ! manifestJson . schemaVersion ) {
94
- console . error ( 'Error: Missing schema version' )
90
+ const error = 'Error: Missing schema version'
91
+ console . error ( error )
95
92
return reject ( error )
96
93
}
97
94
@@ -105,20 +102,20 @@ function downloadComponentInputFiles (manifestFileName, manifestUrl, outDir) {
105
102
} )
106
103
}
107
104
108
- const downloadOps = fileList . map ( ( fileName ) => new Promise ( resolve => {
105
+ const downloadOps = fileList . map ( async ( fileName ) => {
109
106
const resourceFileOutPath = path . join ( outDir , fileName )
110
107
const resourceFileUrl = new URL ( fileName , manifestUrl ) . href
111
- request ( resourceFileUrl )
112
- . pipe ( fs . createWriteStream ( resourceFileOutPath ) )
113
- . on ( 'finish' , ( ) => {
114
- console . log ( resourceFileUrl )
115
- resolve ( )
116
- } )
117
- } ) )
108
+ const response = await fetch ( resourceFileUrl )
109
+ const ws = fs . createWriteStream ( resourceFileOutPath )
110
+ return finished ( Readable . fromWeb ( response . body ) . pipe ( ws ) )
111
+ . then ( ( ) => console . log ( resourceFileUrl ) )
112
+ } )
118
113
119
114
await Promise . all ( downloadOps )
120
115
121
116
resolve ( )
117
+ } ) . catch ( error => {
118
+ throw new Error ( `Error from ${ manifestUrl } : ${ error . cause } ` )
122
119
} )
123
120
} )
124
121
}
0 commit comments