UNPKG

@slickteam/nestjs-warp10

Version:
109 lines 3.61 kB
"use strict"; 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