tester-scraper
Version:
Sebuah Module Scraper yang dibuat oleh Sxyz dan SuzakuTeam untuk memudahkan penggunaan scraper di project ESM maupun CJS.
86 lines (77 loc) • 2.25 kB
JavaScript
class Success {
constructor(dataResults) {
if (
dataResults === undefined ||
dataResults === null ||
(Array.isArray(dataResults) && dataResults.length === 0) ||
(typeof dataResults === "object" &&
!Array.isArray(dataResults) &&
Object.keys(dataResults).length === 0)
) {
throw new Error("No data found");
}
// Handle different types of success responses
let result;
if (typeof dataResults === "object" && dataResults !== null) {
// If it's already a well-formed response object, use it directly
if (
dataResults.success !== undefined &&
dataResults.result !== undefined
) {
result = dataResults;
} else {
// Wrap plain objects/arrays in a standard success structure
result = {
success: true,
error: false,
result: dataResults,
};
}
} else {
// Handle primitive values (string, number, boolean)
result = {
success: true,
error: false,
result: dataResults,
};
}
return result;
}
}
class ErrorResponse {
constructor(err) {
let message = "Unknown error";
let code;
let data;
let details;
if (typeof err === "string") {
message = err;
} else if (err?.response) {
// Handle HTTP error responses
message = err.response.data?.message || err.message || "Request failed";
code = err.response.status;
data = err.response.data;
details = err.response.data?.errors || err.response.data?.details;
} else if (err instanceof Error) {
// Handle Error objects
message = err.message;
details = err.stack;
} else if (typeof err === "object" && err !== null) {
// Handle custom error objects
message = err.message || err.msg || JSON.stringify(err);
code = err.code || err.status || err.statusCode;
data = err.data;
details = err.details || err.errors || err.stack;
}
const res = {
success: false,
error: true,
message,
};
if (code) res.code = code;
if (data) res.data = data;
if (details) res.details = details;
return res;
}
}
export { Success, ErrorResponse };