exthos
Version:
stream processing in nodejs using the power of golang
159 lines • 4.81 kB
JavaScript
import { execaCommandSync } from "execa";
import axios from "axios";
import proxymise from "./proxymise.js";
import { IncomingMessage } from "http";
import { Stream } from "stream";
function checkExeExists() {
try {
execaCommandSync(`benthos -v`);
}
catch (err) {
if (err.exitCode !== 0)
return false;
}
return true;
}
function standardizeAxiosErrors(e) {
if (axios.isAxiosError(e)) {
if (e.response) {
delete e.response.request;
delete e.response["config"];
let dataIsStream = e.response.data instanceof IncomingMessage &&
e.response.data instanceof Stream;
let toReturnError = {
name: "Error",
message: "axios response has an error",
response: {
status: e.response.status,
statusText: e.response.statusText,
headers: e.response.headers,
data: dataIsStream ? "" : e.response.data,
},
request: {
host: e.request.getHeader("host"),
path: e.request.path,
},
};
return toReturnError;
}
else if (e.request) {
return new Error(e.message);
}
}
return e;
}
async function sleep(ms) {
let resolve;
let p = new Promise((r) => {
resolve = r;
});
setTimeout(resolve, ms);
await p;
return true;
}
class Deferred {
constructor() {
this.fulfilled = false;
this.rejected = false;
this.resolved = false;
let self = this;
this.promise = new Promise(function (resolve, reject) {
self.reject = (reason) => {
self.fulfilled = true;
self.rejected = true;
reject(reason);
};
self.resolve = (value) => {
self.fulfilled = true;
self.resolved = true;
resolve(value);
};
});
}
}
function replaceKeys(obj, keyMap) {
let iterate = (obj) => {
Object.keys(obj).forEach((key) => {
if (Object.keys(keyMap).includes(key)) {
let oldKey = key;
let newKey = keyMap[oldKey];
Object.defineProperty(obj, newKey(), Object.getOwnPropertyDescriptor(obj, oldKey));
delete obj[oldKey];
if (!(typeof obj[key] === "object" && obj[key] !== null)) {
return obj;
}
}
if (typeof obj[key] === "object" &&
obj[key] !== null &&
!Array.isArray(obj[key])) {
iterate(obj[key]);
}
else if (Array.isArray(obj[key])) {
obj[key].forEach((el) => {
iterate(el);
});
}
});
};
iterate(obj);
return obj;
}
function replaceValueForKey(obj, kv) {
let iterate = (obj) => {
Object.keys(obj).forEach((key) => {
if (Object.keys(kv).includes(key)) {
obj[key] = kv[key](obj[key]);
if (!(typeof obj[key] === "object" && obj[key] !== null)) {
return obj;
}
}
if (typeof obj[key] === "object" &&
obj[key] !== null &&
!Array.isArray(obj[key])) {
iterate(obj[key]);
}
else if (Array.isArray(obj[key])) {
obj[key].forEach((el) => {
iterate(el);
});
}
});
};
iterate(obj);
return obj;
}
function proxyPromise(t) {
return proxymise(t);
}
function getISOStringLocalTz(date = new Date()) {
var tzo = -date.getTimezoneOffset(), dif = tzo >= 0 ? "+" : "-", pad = function (num) {
return (num < 10 ? "0" : "") + num;
};
return (date.getFullYear() +
"-" +
pad(date.getMonth() + 1) +
"-" +
pad(date.getDate()) +
"T" +
pad(date.getHours()) +
":" +
pad(date.getMinutes()) +
":" +
pad(date.getSeconds()) +
dif +
pad(Math.floor(Math.abs(tzo) / 60)) +
":" +
pad(Math.abs(tzo) % 60));
}
function getCaller() {
return new Error().stack.split("at ")[3].trim();
}
function formatErrorForEvent(e) {
let toReturn = {};
Object.getOwnPropertyNames(e).forEach((p) => {
toReturn[p] = e[p];
});
return toReturn;
}
export { checkExeExists, standardizeAxiosErrors, sleep, Deferred, replaceKeys, replaceValueForKey, proxyPromise, getISOStringLocalTz, getCaller, formatErrorForEvent, };
//# sourceMappingURL=utils.js.map