11'use strict' ;
22
3- const { inspect, promisify } = require ( 'util' ) ;
3+ const { inspect} = require ( 'util' ) ;
44const { resolve} = require ( 'path' ) ;
55const { Transform} = require ( 'stream' ) ;
6+ const { promises : fs } = require ( 'fs' ) ;
67
78const cancelablePump = require ( '../cancelable-pump/index.js' ) ;
89const { Unpack} = require ( 'tar' ) ;
910const isPlainObj = require ( 'is-plain-obj' ) ;
10- const request = require ( 'request' ) ;
11- const mkdirp = require ( 'mkdirp' ) ;
11+ const fetch = require ( 'make-fetch-happen' ) ;
1212const Observable = require ( 'zen-observable' ) ;
1313
14- const promisifiedMkdirp = promisify ( mkdirp ) ;
15-
1614class InternalUnpack extends Unpack {
1715 constructor ( options ) {
1816 super ( {
@@ -173,7 +171,7 @@ module.exports = function dlTar(...args) {
173171 ( async ( ) => {
174172 try {
175173 if ( absoluteDest !== cwd ) {
176- await promisifiedMkdirp ( absoluteDest ) ;
174+ await fs . mkdir ( absoluteDest , { recursive : true } ) ;
177175 }
178176
179177 if ( ended ) {
@@ -186,21 +184,24 @@ module.exports = function dlTar(...args) {
186184 observer
187185 } ) ;
188186
189- const pipe = [
190- request ( { url, ...options , encoding : null } )
191- . on ( 'response' , function ( response ) {
192- if ( response . statusCode < 200 || 299 < response . statusCode ) {
193- this . emit ( 'error' , new Error ( `${ response . statusCode } ${ response . statusMessage } ` ) ) ;
194- return ;
195- }
187+ const { baseUrl, headers} = options ;
188+ const { href} = new URL ( url , baseUrl ) ;
196189
197- if ( typeof response . headers [ 'content-length' ] === 'string' ) {
198- response . headers [ 'content-length' ] = Number ( response . headers [ 'content-length' ] ) ;
199- }
190+ const res = await fetch ( href , { headers} ) . then ( response => {
200191
201- unpackStream . url = response . request . uri . href ;
202- unpackStream . responseHeaders = response . headers ;
203- } ) ,
192+ if ( response . ok !== true ) {
193+ throw new Error ( `${ response . status } ${ response . statusText } ` ) ;
194+ }
195+
196+ unpackStream . url = response . url ;
197+ unpackStream . responseHeaders = response . headers ;
198+
199+ return response ;
200+
201+ } ) ;
202+
203+ const pipe = [
204+ res . body ,
204205 new Transform ( {
205206 transform ( chunk , encoding , cb ) {
206207 unpackStream . responseBytes += chunk . length ;
0 commit comments