diff --git a/index.js b/index.js index 48c7645..ec0a816 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,18 @@ 'use strict'; +/* istanbul ignore next - affordance for node v8 */ +if (!String.prototype.trimEnd) { + String.prototype.trimEnd = function () { + return this.replace(/[\n\r\s\t]+$/, '') + } +} + const escapeStringRegexp = require('escape-string-regexp'); const natives = [].concat( require('module').builtinModules, 'bootstrap_node', - 'node', + 'node' ).map(n => new RegExp(`(?:\\((?:node:)?${n}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${n}(?:\\.js)?:\\d+:\\d+$)`)); natives.push( @@ -16,10 +23,9 @@ natives.push( class StackUtils { constructor (opts) { - opts = { - ignoredPackages: [], - ...opts - }; + opts = Object.assign({}, { + ignoredPackages: [] + }, opts); if ('internals' in opts === false) { opts.internals = StackUtils.nodeInternals(); @@ -39,10 +45,11 @@ class StackUtils { } static nodeInternals () { - return [...natives]; + return natives.slice(); } - clean (stack, indent = 0) { + clean (stack, indent) { + indent = indent || 0 indent = ' '.repeat(indent); if (!Array.isArray(stack)) { @@ -95,13 +102,14 @@ class StackUtils { return result.map(line => `${indent}${line}\n`).join(''); } - captureString (limit, fn = this.captureString) { + captureString (limit, fn) { + fn = fn || this.captureString if (typeof limit === 'function') { fn = limit; limit = Infinity; } - const {stackTraceLimit} = Error; + const stackTraceLimit = Error.stackTraceLimit; if (limit) { Error.stackTraceLimit = limit; } @@ -109,19 +117,21 @@ class StackUtils { const obj = {}; Error.captureStackTrace(obj, fn); - const {stack} = obj; + const stack = obj.stack; Error.stackTraceLimit = stackTraceLimit; return this.clean(stack); } - capture (limit, fn = this.capture) { + capture (limit, fn) { + fn = fn || this.capture if (typeof limit === 'function') { fn = limit; limit = Infinity; } - const {prepareStackTrace, stackTraceLimit} = Error; + const prepareStackTrace = Error.prepareStackTrace + const stackTraceLimit = Error.stackTraceLimit Error.prepareStackTrace = (obj, site) => { if (this._wrapCallSite) { return site.map(this._wrapCallSite); @@ -136,14 +146,15 @@ class StackUtils { const obj = {}; Error.captureStackTrace(obj, fn); - const { stack } = obj; + const stack = obj.stack; Object.assign(Error, {prepareStackTrace, stackTraceLimit}); return stack; } - at (fn = this.at) { - const [site] = this.capture(1, fn); + at (fn) { + fn = fn || this.at + const site = this.capture(1, fn)[0]; if (!site) { return {}; diff --git a/package-lock.json b/package-lock.json index ea7a7b8..3e58b01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "stack-utils", - "version": "2.0.3", + "version": "1.0.5", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "2.0.3", + "version": "1.0.5", "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" @@ -1043,15 +1043,16 @@ "dev": true }, "node_modules/handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "dependencies": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "bin": { "handlebars": "bin/handlebars" @@ -1799,22 +1800,6 @@ "opener": "bin/opener-bin.js" } }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/optimist/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -2444,7 +2429,13 @@ "bundleDependencies": [ "ink", "treport", - "@types/react" + "@types/react", + "import-jsx", + "minipass", + "signal-exit", + "tap-parser", + "tap-yaml", + "yaml" ], "dev": true, "dependencies": { @@ -4671,13 +4662,10 @@ "dev": true }, "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true }, "node_modules/wrappy": { "version": "1.0.2", @@ -4746,9 +4734,9 @@ } }, "node_modules/yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "dependencies": { "camelcase": "^5.0.0", @@ -5702,15 +5690,16 @@ "dev": true }, "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" } }, "har-schema": { @@ -6318,24 +6307,6 @@ "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", "dev": true }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } - } - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -8563,9 +8534,9 @@ "dev": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrappy": { @@ -8694,9 +8665,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 198de6e..ccdbd84 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,9 @@ { "name": "stack-utils", - "version": "2.0.3", + "version": "1.0.5", + "publishConfig": { + "tag": "v1-legacy" + }, "description": "Captures and cleans stack traces", "license": "MIT", "repository": "tapjs/stack-utils", @@ -10,7 +13,7 @@ "url": "github.com/jamestalmage" }, "engines": { - "node": ">=10" + "node": ">=8" }, "scripts": { "test": "tap --no-esm --100",