All files / core/dist errorId.js

76.56% Statements 49/64
60.87% Branches 14/23
81.82% Functions 9/11
76.19% Lines 48/63

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111  9x 9x 9x 9x 9x     13x   5x 5x             6x 6x   2x 2x         13x 13x 3x   10x 2x     8x   10x   9x   2x 2x 1x   1x     2x                         2x 2x                     18x   9x   2x   9x   3x   9x   2x 2x 1x   1x     1x   9x   3x   9x   13x 13x   13x 510x 510x 510x   13x    
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeHashPath = exports.getRealPageOrigin = exports.getFlutterRealPath = exports.getFlutterRealOrigin = exports.getRealPath = exports.createErrorId = void 0;
var utils_1 = require("@mito/utils");
var common_1 = require("@mito/common");
var allErrorNumber = {};
function createErrorId(data, apikey) {
    var id;
    switch (data.type) {
        case common_1.ERRORTYPES.FETCH_ERROR:
            id = data.type + data.request.method + data.response.status + getRealPath(data.request.url) + apikey;
            break;
        case common_1.ERRORTYPES.JAVASCRIPT_ERROR:
        case common_1.ERRORTYPES.VUE_ERROR:
        case common_1.ERRORTYPES.REACT_ERROR:
            id = data.type + data.name + data.message + apikey;
            break;
        case common_1.ERRORTYPES.LOG_ERROR:
            id = data.customTag + data.type + data.name + apikey;
            break;
        case common_1.ERRORTYPES.PROMISE_ERROR:
            id = generatePromiseErrorId(data, apikey);
            break;
        default:
            id = data.type + data.message + apikey;
            break;
    }
    id = hashCode(id);
    if (allErrorNumber[id] > 1) {
        return null;
    }
    if (typeof allErrorNumber[id] === 'number') {
        allErrorNumber[id]++;
    }
    else {
        allErrorNumber[id] = 1;
    }
    return id;
}
exports.createErrorId = createErrorId;
function generatePromiseErrorId(data, apikey) {
    var locationUrl = getRealPath(data.url);
    if (data.name === common_1.EVENTTYPES.UNHANDLEDREJECTION) {
        return data.type + objectOrder(data.message) + apikey;
    }
    return data.type + data.name + objectOrder(data.message) + locationUrl;
}
function objectOrder(reason) {
    var sortFn = function (obj) {
        return Object.keys(obj)
            .sort()
            .reduce(function (total, key) {
            if (utils_1.variableTypeDetection.isObject(obj[key])) {
                total[key] = sortFn(obj[key]);
            }
            else {
                total[key] = obj[key];
            }
            return total;
        }, {});
    };
    try {
        Iif (/\{.*\}/.test(reason)) {
            var obj = JSON.parse(reason);
            obj = sortFn(obj);
            return JSON.stringify(obj);
        }
    }
    catch (error) {
        return reason;
    }
}
function getRealPath(url) {
    return url.replace(/[\?#].*$/, '').replace(/\/\d+([\/]*$)/, '{param}$1');
}
exports.getRealPath = getRealPath;
function getFlutterRealOrigin(url) {
    return removeHashPath(getFlutterRealPath(url));
}
exports.getFlutterRealOrigin = getFlutterRealOrigin;
function getFlutterRealPath(url) {
    return url.replace(/(\S+)(\/Documents\/)(\S*)/, "$3");
}
exports.getFlutterRealPath = getFlutterRealPath;
function getRealPageOrigin(url) {
    var fileStartReg = /^file:\/\//;
    if (fileStartReg.test(url)) {
        return getFlutterRealOrigin(url);
    }
    Iif (utils_1.isWxMiniEnv) {
        return utils_1.getAppId();
    }
    return getRealPath(removeHashPath(url).replace(/(\S*)(\/\/)(\S+)/, '$3'));
}
exports.getRealPageOrigin = getRealPageOrigin;
function removeHashPath(url) {
    return url.replace(/(\S+)(\/#\/)(\S*)/, "$1");
}
exports.removeHashPath = removeHashPath;
function hashCode(str) {
    var hash = 0;
    Iif (str.length == 0)
        return hash;
    for (var i = 0; i < str.length; i++) {
        var char = str.charCodeAt(i);
        hash = (hash << 5) - hash + char;
        hash = hash & hash;
    }
    return hash;
}
//# sourceMappingURL=errorId.js.map