UNPKG

backtrace-node

Version:
127 lines 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var axios_1 = tslib_1.__importDefault(require("axios")); var crypto_1 = tslib_1.__importDefault(require("crypto")); /** * Generate a UUID */ function uuid() { var uuidArray = new Uint8Array(16); crypto_1.default.randomFillSync(uuidArray); var hexStr = function (b) { var s = b.toString(16); return b < 0x10 ? '0' + s : s; }; var result = ''; var i = 0; for (; i < 4; i += 1) { result += hexStr(uuidArray[i]); } result += '-'; for (; i < 6; i += 1) { result += hexStr(uuidArray[i]); } result += '-'; for (; i < 8; i += 1) { result += hexStr(uuidArray[i]); } result += '-'; for (; i < 10; i += 1) { result += hexStr(uuidArray[i]); } result += '-'; for (; i < 16; i += 1) { result += hexStr(uuidArray[i]); } return result; } exports.uuid = uuid; /** * Current unix time in seconds. */ function currentTimestamp(millis) { if (millis === void 0) { millis = false; } return Math.floor(new Date().getTime() / (millis ? 1 : 1000)); } exports.currentTimestamp = currentTimestamp; /** * Get universe and token from the endpoint. */ function getEndpointParams(endpoint, token) { if (!endpoint) { return undefined; } if (endpoint.indexOf('submit.backtrace.io') !== -1) { var positionFilter = 'backtrace.io/'; var startPosition = endpoint.indexOf('backtrace.io/') + positionFilter.length; if (startPosition === -1) { return undefined; } var indexOfTheEndOfTheUniverseName = endpoint.indexOf('/', startPosition); if (indexOfTheEndOfTheUniverseName === -1) { return undefined; } var universeName = endpoint.substring(startPosition, indexOfTheEndOfTheUniverseName); if (!token) { var lastSeparatorIndex = endpoint.lastIndexOf('/'); if (lastSeparatorIndex === indexOfTheEndOfTheUniverseName) { return undefined; } token = endpoint.substring(indexOfTheEndOfTheUniverseName + 1, lastSeparatorIndex); if (!token || token.length !== 64) { return undefined; } } return { universe: universeName, token: token }; } var backtraceSubmissionUrl = new URL(endpoint).hostname; var firstSeparatorIndex = backtraceSubmissionUrl.indexOf('.'); // unvalid submission URL if (firstSeparatorIndex === -1) { return undefined; } return { token: token, universe: backtraceSubmissionUrl.substring(0, firstSeparatorIndex), }; } exports.getEndpointParams = getEndpointParams; /** * Send POST request. * @param url - string endpoint * @param data - JSON Object. */ function post(url, data, options) { return tslib_1.__awaiter(this, void 0, void 0, function () { var DEFAULT_TIMEOUT, defaultOptions, res, err_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: DEFAULT_TIMEOUT = 15000; _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); defaultOptions = { headers: { 'Content-Type': 'application/json', }, timeout: DEFAULT_TIMEOUT, }; return [4 /*yield*/, axios_1.default.post(url, data, tslib_1.__assign(tslib_1.__assign({}, defaultOptions), options))]; case 2: res = _a.sent(); if (res.status !== 200) { return [2 /*return*/, Promise.reject(new Error("Invalid attempt to submit error to Backtrace. Result: " + res))]; } return [2 /*return*/]; case 3: err_1 = _a.sent(); return [2 /*return*/, Promise.reject(err_1)]; case 4: return [2 /*return*/]; } }); }); } exports.post = post; //# sourceMappingURL=index.js.map