@@ -3,7 +3,7 @@ import createClient, { FetchResponse } from 'openapi-fetch'
33import type { components , paths } from './schema.gen'
44import { defaultHeaders } from './metadata'
55import { ConnectionConfig } from '../connectionConfig'
6- import { AuthenticationError , RateLimitError , SandboxError } from '../errors'
6+ import { AuthenticationError , RateLimitError , SandboxError , NotFoundError } from '../errors'
77import { createApiLogger } from '../logs'
88
99export function handleApiError (
@@ -18,28 +18,31 @@ export function handleApiError(
1818 return
1919 }
2020
21+ const content = response . error ?. message ?? response . error
22+
2123 if ( response . response . status === 401 ) {
2224 const message = 'Unauthorized, please check your credentials.'
23- const content = response . error ?. message ?? response . error
2425
25- if ( content ) {
26- return new AuthenticationError ( `${ message } - ${ content } ` )
27- }
28- return new AuthenticationError ( message )
26+ return content
27+ ? new AuthenticationError ( `${ message } - ${ content } ` )
28+ : new AuthenticationError ( message )
2929 }
3030
3131 if ( response . response . status === 429 ) {
3232 const message = 'Rate limit exceeded, please try again later'
33- const content = response . error ?. message ?? response . error
3433
35- if ( content ) {
36- return new RateLimitError ( `${ message } - ${ content } ` )
37- }
38- return new RateLimitError ( message )
34+ return content
35+ ? new RateLimitError ( `${ message } - ${ content } ` )
36+ : new RateLimitError ( message )
37+ }
38+
39+ if ( response . response . status === 404 ) {
40+ return content
41+ ? new NotFoundError ( `${ content } ` )
42+ : new NotFoundError ( 'Not found' )
3943 }
4044
41- const message = response . error ?. message ?? response . error
42- return new errorClass ( `${ response . response . status } : ${ message } ` , stackTrace )
45+ return new errorClass ( `${ response . response . status } : ${ content } ` , stackTrace )
4346}
4447
4548/**
@@ -58,15 +61,15 @@ class ApiClient {
5861 if ( opts ?. requireApiKey && ! config . apiKey ) {
5962 throw new AuthenticationError (
6063 'API key is required, please visit the Team tab at https://e2b.dev/dashboard to get your API key. ' +
61- 'You can either set the environment variable `E2B_API_KEY` ' +
62- "or you can pass it directly to the sandbox like Sandbox.create({ apiKey: 'e2b_...' })"
64+ 'You can either set the environment variable `E2B_API_KEY` ' +
65+ "or you can pass it directly to the sandbox like Sandbox.create({ apiKey: 'e2b_...' })"
6366 )
6467 }
6568
6669 if ( opts ?. requireAccessToken && ! config . accessToken ) {
6770 throw new AuthenticationError (
6871 'Access token is required, please visit the Personal tab at https://e2b.dev/dashboard to get your access token. ' +
69- 'You can set the environment variable `E2B_ACCESS_TOKEN` or pass the `accessToken` in options.'
72+ 'You can set the environment variable `E2B_ACCESS_TOKEN` or pass the `accessToken` in options.'
7073 )
7174 }
7275
0 commit comments