clear-error-stack.js 851 B

1234567891011121314151617181920
  1. var uncurryThis = require('../internals/function-uncurry-this');
  2. var arraySlice = require('../internals/array-slice-simple');
  3. var replace = uncurryThis(''.replace);
  4. var split = uncurryThis(''.split);
  5. var join = uncurryThis([].join);
  6. var TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');
  7. var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
  8. var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
  9. var IS_FIREFOX_OR_SAFARI_STACK = /@[^\n]*\n/.test(TEST) && !/zxcasd/.test(TEST);
  10. module.exports = function (stack, dropEntries) {
  11. if (typeof stack != 'string') return stack;
  12. if (IS_V8_OR_CHAKRA_STACK) {
  13. while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
  14. } else if (IS_FIREFOX_OR_SAFARI_STACK) {
  15. return join(arraySlice(split(stack, '\n'), dropEntries), '\n');
  16. } return stack;
  17. };