all files / src/ helpers.js

100% Statements 27/27
100% Branches 2/2
100% Functions 6/6
100% Lines 27/27
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                                          39× 78×     39× 39×     39×                 181×                                                                          
/**
 * @license Apache-2.0
 * Copyright (C) 2016 The Sitecheck Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
"use strict";
 
/**
* Generates a random alphanumerical string
*/
exports.token = function() {
    var rand = function () {
        return Math.random().toString(36).substr(2); // remove `0.`
    };
 
    var token = function () {
        return rand() + rand(); // to make it longer
    };
 
    return token();
};
 
/**
 * Returns caller function triplet { name, fileName, line}
 */
exports.getCaller = function () {
    var stack = exports.getStack();
 
    let s = stack[1];
    let funcName = s.getFunctionName() || 'anonymous';
    let fileName = s.getFileName();
    let dirName = __dirname;
 
    // get relative path
    let index = 0;
    while (fileName[index] === dirName[index]) {
        index++;
    }
    fileName = fileName.substring(index);
    let line = s.getLineNumber();
    return { name: funcName, fileName: fileName, line: line };
};
 
/**
 * Returns current stack
 */
exports.getStack = function () {
    // Save original Error.prepareStackTrace
    var origPrepareStackTrace = Error.prepareStackTrace;
 
    // Override with function that just returns `stack`
    Error.prepareStackTrace = function (_, stack) {
        return stack;
    };
 
    // Create a new `Error`, which automatically gets `stack`
    var err = new Error();
 
    // Evaluate `err.stack`, which calls our new `Error.prepareStackTrace`
    var stack = err.stack;
 
    // Restore original `Error.prepareStackTrace`
    Error.prepareStackTrace = origPrepareStackTrace;
 
    // Remove superfluous function call on stack
    stack.shift(); // getStack --> Error
 
    return stack;
};
 
/**
 * Gets an array of cookies from a request
 * The function is not currently used but is working
 */
 
/*exports.parseCookies = function (request) {
    var list = {},
        rc = request.headers.cookie;
 
    rc && rc.split(';').forEach(function (cookie) {
        var parts = cookie.split('=');
        list[parts.shift().trim()] = decodeURI(parts.join('='));
    });// jshint ignore:line
 
    return list;
};*/