@slickteam/nestjs-warp10
Version:
Module for Warp10 with Nestjs
109 lines • 3.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Utils = void 0;
class Utils {
static getNavigatorLanguage = () => {
let lang;
if (navigator.languages && navigator.languages.length) {
lang = navigator.languages[0];
}
else {
lang = navigator.language || 'fr';
}
return lang.split('-')[0].toLowerCase();
};
static clone(inObject) {
return structuredClone(inObject);
}
static throttle(func, delay, ctx) {
let isRunning;
return (...args) => {
const context = ctx || this;
if (!isRunning) {
isRunning = true;
func.apply(context, args);
setTimeout(() => (isRunning = false), delay);
}
};
}
static async httpPost(theUrl, payload, headers) {
const _headers = headers ?? {};
const response = await fetch(theUrl, {
method: 'POST',
headers: {
'Content-Type': 'text/plain; charset=utf-8',
..._headers,
},
body: payload,
});
const resHeaders = {};
response.headers.forEach((value, key) => {
resHeaders[key.toLowerCase()] = value;
});
if (response.ok) {
return {
data: await response.text(),
headers: resHeaders,
status: {
ops: parseInt(resHeaders['x-warp10-ops'], 10),
elapsed: parseInt(resHeaders['x-warp10-elapsed'], 10),
fetched: parseInt(resHeaders['x-warp10-fetched'], 10),
},
};
}
else if (response.status === 403) {
throw {
statusText: response.statusText,
status: response.status,
url: theUrl,
headers: resHeaders,
message: 'Not Authorized',
};
}
else if (response.status >= 500) {
if (resHeaders['x-warp10-error-line'] && resHeaders['x-warp10-error-message']) {
throw {
statusText: response.statusText,
status: response.status,
url: theUrl,
headers: resHeaders,
message: `line #${resHeaders['x-warp10-error-line']}: ${resHeaders['x-warp10-error-message']}`,
detail: {
mess: resHeaders['x-warp10-error-message'],
line: resHeaders['x-warp10-error-line'],
},
};
}
else {
throw {
statusText: response.statusText,
status: response.status,
url: theUrl,
headers: resHeaders,
message: 'WarpScript Error without message',
};
}
}
else {
throw {
statusText: theUrl + ' is unreachable',
status: 404,
url: theUrl,
headers: resHeaders,
message: theUrl + ' is unreachable',
detail: {
mess: theUrl + ' is unreachable',
line: -1,
},
};
}
}
static sanitize(data) {
if (typeof data === 'string')
return '["' + data + '"]';
else
return data;
}
}
exports.Utils = Utils;
//# sourceMappingURL=Utils.js.map