-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror.ts
More file actions
134 lines (108 loc) · 3.96 KB
/
Copy patherror.ts
File metadata and controls
134 lines (108 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
Remote API
Talent is everywhere. Opportunity is not. Remote's mission is to create opportunity everywhere, empowering employers to find and hire the best talent, and enabling individuals to build financial and personal freedom.
Remote is a Global HR Platform that helps companies hire, manage, and pay their entire team — and more effectively compete in the modern global economy through our comprehensive set of core solutions including, HRIS, payroll, international employment, contractor management, and more.
Whether you're just starting your global journey, or looking to optimize your existing operations, sign up or book a demo - and see how Remote makes global HR simple.
The version of the OpenAPI document: 0.1.0
NOTE: This file is auto generated by Konfig (https://konfigthis.com).
*/
import type { AxiosError } from "axios";
/**
* This class provides a wrapper for network errors when making requests to Remote API
*/
export class RemoteError extends Error {
/**
* The response body
*/
readonly responseBody: unknown;
/**
* The error code provided from the underlying "axios" library which can be
* more descriptive than the HTTP status descriptions.
*/
readonly code?: string;
/**
* The status code from the response.
* For explanations, refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
*/
readonly status?: number;
/**
* The status text from the response.
* For explanations, refer to https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
*/
readonly statusText?: string;
/**
* The URL that the original request was sent to
*/
readonly url?: string;
/**
* HTTP request method (see https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)
*/
readonly method?: string;
constructor(axiosError: AxiosError, responseBody: unknown) {
super(axiosError.message);
this.name = "RemoteError";
this.code = axiosError.code;
this.method = axiosError.config?.method?.toUpperCase();
this.url = axiosError.config?.url;
this.status = axiosError.response?.status;
this.statusText = axiosError.response?.statusText;
this.responseBody = responseBody;
}
toJSON() {
return {
name: this.name,
message: this.message,
method: this.method,
url: this.url,
code: this.code,
status: this.status,
statusText: this.statusText,
responseBody: this.responseBody,
};
}
}
export async function readableStreamToString(stream: ReadableStream) {
// Step 1: Create a new TextDecoder
const decoder = new TextDecoder();
// Step 2: Create a new ReadableStreamDefaultReader
const reader = stream.getReader();
// Step 3: Initialize an empty string to hold the result
let result = "";
try {
while (true) {
// Step 4: Read data from the stream
const { done, value } = await reader.read();
// If there is no more data to read, break the loop
if (done) break;
// Convert the chunk of data to a string using the TextDecoder
const chunk = decoder.decode(value, { stream: true });
// Concatenate the chunk to the result
result += chunk;
}
} finally {
// Step 5: Release the ReadableStreamDefaultReader when done or in case of an error
reader.releaseLock();
}
// Return the final result as a string
return result;
}
export function parseIfJson(input: unknown): object | unknown {
if (typeof input !== "string") {
// If the input is not a string, return the original input
return input;
}
try {
// Attempt to parse the input as JSON
const parsedJSON = JSON.parse(input);
// Check if the parsed result is an object (not an array or primitive value)
if (typeof parsedJSON === "object" && parsedJSON !== null) {
return parsedJSON;
} else {
// Return the original input if the parsed result is not an object
return input;
}
} catch (error) {
// Return the original input if parsing fails (invalid JSON)
return input;
}
}