@@ -6,7 +6,7 @@ import { join } from 'node:path'
66import { Readable } from 'node:stream'
77import { existsSync , mkdirSync } from 'node:fs'
88
9- const spinner = ora ( )
9+ export const spinner = ora ( )
1010
1111const options = {
1212 template : {
@@ -23,16 +23,14 @@ async function getVersionByTag(packageName: string, tag: string) {
2323 const url = getRegistryAPIUrl ( packageName , tag )
2424 const response = await fetch ( url )
2525 if ( response . status === 404 ) {
26- spinner . fail ( `Package not found: ${ packageName } ` )
27- process . exit ( 1 )
26+ throw new Error ( `Package not found: ${ packageName } ` )
2827 }
2928 if ( ! response . ok ) {
30- spinner . fail (
29+ throw new Error (
3130 `Failed to fetch package ${ packageName } with ${
3231 response . status
3332 } : ${ await response . text ( ) } `,
3433 )
35- process . exit ( 1 )
3634 }
3735 const { version } = await response . json ( )
3836 return version
@@ -64,20 +62,17 @@ export async function createGraphQLYoga(fullArgs: string[] = process.argv) {
6462 const url = getTarballUrl ( packageName , version )
6563 const response = await fetch ( url )
6664 if ( response . status === 404 ) {
67- spinner . fail ( `Template not found: ${ template } ` )
68- process . exit ( 1 )
65+ throw new Error ( `Template not found: ${ template } ` )
6966 }
7067 if ( ! response . ok ) {
71- spinner . fail (
68+ throw new Error (
7269 `Failed to fetch template ${ template } with ${
7370 response . status
7471 } : ${ await response . text ( ) } `,
7572 )
76- process . exit ( 1 )
7773 }
7874 if ( ! response . body ) {
79- spinner . fail ( `Failed to fetch template ${ template } with empty body` )
80- process . exit ( 1 )
75+ throw new Error ( `Failed to fetch template ${ template } with empty body` )
8176 }
8277 const nodeStream = Readable . from (
8378 response . body as unknown as AsyncIterable < Uint8Array > ,
@@ -88,17 +83,18 @@ export async function createGraphQLYoga(fullArgs: string[] = process.argv) {
8883 C : targetDir ,
8984 } )
9085 if ( existsSync ( targetDir ) ) {
91- spinner . fail ( `Target directory ${ targetDir } already exists.` )
92- process . exit ( 1 )
86+ throw new Error ( `Target directory ${ targetDir } already exists.` )
9387 }
9488 mkdirSync ( targetDir , { recursive : true } )
95- nodeStream
96- . pipe ( extractedTarStream )
97- . once ( 'error' , ( err ) => {
98- spinner . fail ( `Failed to extract template ${ template } with ${ err } ` )
99- process . exit ( 1 )
100- } )
101- . once ( 'close' , ( ) => {
102- spinner . succeed ( `Template ${ template } created on ${ targetDir } .` )
103- } )
89+ await new Promise < void > ( ( resolve , reject ) => {
90+ nodeStream
91+ . pipe ( extractedTarStream )
92+ . once ( 'error' , ( err ) => {
93+ reject ( new Error ( `Failed to extract template ${ template } with ${ err } ` ) )
94+ } )
95+ . once ( 'close' , ( ) => {
96+ resolve ( )
97+ } )
98+ } )
99+ spinner . succeed ( `Template ${ template } created on ${ targetDir } .` )
104100}
0 commit comments