lib/common/utils/index.ts (46 lines of code) (raw):
export { DateTimeUtilities } from "./dateTimeUtilities.util";
export { StatementBuilder } from "./statementBuilder.util";
export { HttpUtilities } from "./httpUtilities.util";
interface ClientError extends Error {
response: {
status: number;
};
}
interface ServerError extends Error {
response: {
status: number;
};
}
const isClientError = (err: Error): err is ClientError =>
err.message.startsWith("soap:Client:");
const isServerError = (err: Error): err is ServerError =>
err.message.startsWith("soap:Server:");
export function promiseFromCallback(
fn: (callback: (err: Error, result: any) => void) => void,
): Promise<any> {
return new Promise((resolve, reject) => {
fn((err, result) => {
if (err) {
const error = err.message.split(": ");
if (isClientError(err)) {
reject({
code: err["response"].status,
name: error[1],
message: error[3],
});
}
if (isServerError(err)) {
reject({
code: err["response"].status,
name: error[2]?.match(/"xsi:type":"(.*)"},/)?.[1] ?? "",
message: error[1],
details: JSON.parse(error[2] ?? "{}"),
});
}
reject(err);
return;
}
resolve(result);
});
});
}