callsite-record
Advanced tools
Comparing version 3.2.2 to 4.0.0
@@ -77,3 +77,7 @@ var fs = require('fs'); | ||
function processFrames (stackFrames, processFn) { | ||
return processFn ? stackFrames.map(processFn) : stackFrames; | ||
} | ||
// CallsiteRecord | ||
@@ -234,3 +238,3 @@ var CallsiteRecord = function (filename, lineNum, callsiteFrameIdx, stackFrames) { | ||
// Static | ||
CallsiteRecord.fromStackFrames = function (stackFrames, fnName, typeName) { | ||
CallsiteRecord.fromStackFrames = function (stackFrames, fnName, typeName, processFrameFn) { | ||
if (typeName && fnName === 'constructor') | ||
@@ -248,2 +252,4 @@ fnName = typeName; | ||
if (callsiteFrameIdx !== null) { | ||
stackFrames = processFrames(stackFrames, processFrameFn); | ||
var callsiteFrame = stackFrames[callsiteFrameIdx]; | ||
@@ -263,3 +269,3 @@ var filename = callsiteFrame.getFileName(); | ||
CallsiteRecord.fromError = function (error, isCallsiteFrame) { | ||
CallsiteRecord.fromError = function (error, isCallsiteFrame, processFrameFn) { | ||
var stackFrames = parseStack(error); | ||
@@ -278,2 +284,4 @@ | ||
if (stackFrames.length) { | ||
stackFrames = processFrames(stackFrames, processFrameFn); | ||
var filename = stackFrames[0].getFileName(); | ||
@@ -290,7 +298,7 @@ var lineNum = stackFrames[0].getLineNumber() - 1; | ||
// API | ||
module.exports = function createCallsiteRecord (/* err, isCallsiteFrame || fnName, typeName */) { | ||
if (arguments[0] instanceof Error) | ||
return CallsiteRecord.fromError(arguments[0], arguments[1]); | ||
module.exports = function createCallsiteRecord (options) { /*{ forError, isCallsiteFrame, byFunctionName, typeName, processFrameFn }*/ | ||
if (options.forError) | ||
return CallsiteRecord.fromError(options.forError, options.isCallsiteFrame, options.processFrameFn); | ||
else if (typeof arguments[0] === 'string') { | ||
else if (options.byFunctionName) { | ||
var stackFrames = callsite(); | ||
@@ -301,3 +309,3 @@ | ||
return CallsiteRecord.fromStackFrames(stackFrames, arguments[0], arguments[1]); | ||
return CallsiteRecord.fromStackFrames(stackFrames, options.byFunctionName, options.typeName, options.processFrameFn); | ||
} | ||
@@ -304,0 +312,0 @@ |
{ | ||
"name": "callsite-record", | ||
"version": "3.2.2", | ||
"version": "4.0.0", | ||
"description": "Create fancy log entries for errors and function call sites.", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -20,3 +20,3 @@ # callsite-record | ||
catch(err) { | ||
console.log(createCallsiteRecord(err).renderSync()); | ||
console.log(createCallsiteRecord({ forError: err }).renderSync()); | ||
} | ||
@@ -41,3 +41,3 @@ | ||
(function func1 () { | ||
console.log(createCallsiteRecord('func2').renderSync()); | ||
console.log(createCallsiteRecord({ byFunctionName: 'func2' }).renderSync()); | ||
})(); | ||
@@ -63,3 +63,3 @@ } | ||
## API | ||
### createCallsiteRecord(error, [isCallsiteFrame]) → CallsiteRecord | ||
### createCallsiteRecord( { forError, isCallsiteFrame, processFrameFn }) → CallsiteRecord | ||
@@ -78,10 +78,10 @@ You can generate a callsite for any stack frame, not only the topmost one. Use the `isCallsiteFrame` function to select | ||
catch(err) { | ||
const record = createCallsiteRecord(err); | ||
const record = createCallsiteRecord({ forError: err }); | ||
} | ||
``` | ||
### createCallsiteRecord(functionName, [typeName]) → CallsiteRecord | ||
### createCallsiteRecord({ byFunctionName, typeName, processFrameFn }) → CallsiteRecord | ||
Creates `CallsiteRecord` for the function up in the call stack specified by `functionName`. You can optionally specify a | ||
`typeName` if the function is a method. If the function is a constructor set `functionName` to `constructor`. | ||
Creates `CallsiteRecord` for the function up in the call stack specified by `byFunctionName`. You can optionally specify a | ||
`typeName` if the function is a method. If the function is a constructor set `byFunctionName` to `constructor`. | ||
@@ -95,3 +95,3 @@ *Example:* | ||
(function func3() { | ||
const record = createCallsiteRecord('func2'); | ||
const record = createCallsiteRecord({ byFunctionName: 'func2' }); | ||
})(); | ||
@@ -102,2 +102,26 @@ })(); | ||
You can specify `processFrameFn` function, which will process every frame in callstack. It's usefull when you need to | ||
enable frame processing like `source-maps-support`. | ||
*Example:* | ||
```js | ||
const createCallsiteRecord = require('callsite-record'); | ||
const wrapCallSite = require('source-map-support').wrapCallSite; | ||
try { | ||
throw new Error("We're doomed"); | ||
} | ||
catch(err) { | ||
const record = createCallsiteRecord({ forError: err, processFrameFn: wrapCallSite }); | ||
} | ||
(function func1() { | ||
(function func2() { | ||
(function func3() { | ||
const record = createCallsiteRecord({ byFunctionName: 'func2', processFrameFn: wrapCallSite }); | ||
})(); | ||
})(); | ||
})(); | ||
``` | ||
### CallsiteRecord | ||
@@ -104,0 +128,0 @@ #### CallsiteRecord.render([renderOptions]) → Promise<String> |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20458
316
214