feat: scaffold workspace with search, fetch, and extract packages
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
/** Errors thrown by the TTS fetcher. */
|
||||
|
||||
export class TtsError extends Error {
|
||||
constructor(
|
||||
message: string,
|
||||
readonly status: number = 500,
|
||||
) {
|
||||
super(message);
|
||||
this.name = 'TtsError';
|
||||
}
|
||||
}
|
||||
|
||||
/** The Steam API returned no details for the requested item. */
|
||||
export class ItemNotFoundError extends TtsError {
|
||||
constructor(id: string) {
|
||||
super(`No Workshop item found for id ${id}`, 404);
|
||||
this.name = 'ItemNotFoundError';
|
||||
}
|
||||
}
|
||||
|
||||
/** The item exists but has no downloadable `file_url`. */
|
||||
export class NoFileError extends TtsError {
|
||||
constructor(id: string) {
|
||||
super(`Workshop item ${id} has no downloadable save file`, 404);
|
||||
this.name = 'NoFileError';
|
||||
}
|
||||
}
|
||||
|
||||
/** The Steam API rejected the request (bad key, rate limit, etc.). */
|
||||
export class SteamApiError extends TtsError {
|
||||
constructor(message: string, status = 502) {
|
||||
super(message, status);
|
||||
this.name = 'SteamApiError';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user