Skip to content

Commit fb37438

Browse files
committed
Merge pull request DefinitelyTyped#4339 from niemyjski/master
Added stacktrace.js and node-stack-trace definitions.
2 parents d9a0f25 + bf147fd commit fb37438

File tree

4 files changed

+118
-0
lines changed

4 files changed

+118
-0
lines changed

stack-trace/stack-trace-tests.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import stackTrace = require('stack-trace');
2+
3+
var currentStackTrace = stackTrace.get();
4+
5+
var err = new Error('something went wrong');
6+
var trace = stackTrace.parse(err);
7+
8+
var fileName = trace[0].getFileName();

stack-trace/stack-trace.d.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Type definitions for node-stack-trace
2+
// Project: https://github.com/felixge/node-stack-trace
3+
// Definitions by: Exceptionless <https://github.com/exceptionless>
4+
// Definitions: https://github.com/borisyankov/DefinitelyTyped
5+
6+
declare module 'stack-trace' {
7+
export interface StackFrame {
8+
getTypeName():string;
9+
getFunctionName():string;
10+
getMethodName():string;
11+
getFileName():string;
12+
getTypeName():string;
13+
getLineNumber():number;
14+
getColumnNumber():number;
15+
isNative():boolean;
16+
}
17+
18+
export function get(belowFn?:() => void): StackFrame[];
19+
export function parse(err:Error): StackFrame[];
20+
}

stacktrace-js/stacktrace-js-tests.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/// <reference path="stacktrace-js.d.ts" />
2+
3+
function interestingFn() {
4+
return 'https://github.com/exceptionless/Exceptionless';
5+
}
6+
7+
var callback = function(stackframes:StackTrace.StackFrame[]) {
8+
var stringifiedStack = stackframes.map(function(sf:StackTrace.StackFrame) {
9+
return sf.toString();
10+
}).join('\n');
11+
console.log(stringifiedStack);
12+
};
13+
14+
var errorCallback = function(err:Error) { console.log(err.message); };
15+
16+
StackTrace.get();
17+
18+
// Somewhere else...
19+
var error = new Error('BOOM!');
20+
StackTrace.fromError(error);
21+
StackTrace.generateArtificially();
22+
23+
StackTrace.instrument(interestingFn, callback, errorCallback);
24+
StackTrace.deinstrument(interestingFn);

stacktrace-js/stacktrace-js.d.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
// Type definitions for stacktrace.js
2+
// Project: https://github.com/stacktracejs/stacktrace.js
3+
// Definitions by: Exceptionless <https://github.com/exceptionless>
4+
// Definitions: https://github.com/borisyankov/DefinitelyTyped
5+
6+
/// <reference path="../es6-promise/es6-promise.d.ts"/>
7+
8+
declare module StackTrace {
9+
export interface StackTraceOptions {
10+
filter?: (stackFrame:StackFrame) => boolean;
11+
sourceCache?: { URL:string };
12+
offline?: boolean;
13+
}
14+
15+
export interface StackFrame {
16+
constructor(functionName:string, args:any, fileName:string, lineNumber:number, columnNumber:number): StackFrame;
17+
18+
functionName?:string;
19+
args?:any;
20+
fileName?:string;
21+
lineNumber?:number;
22+
columnNumber?:number;
23+
toString():string;
24+
}
25+
26+
/**
27+
* Get a backtrace from invocation point.
28+
* @param options Options Object
29+
* @return Array[StackFrame]
30+
*/
31+
export function get(options?: StackTraceOptions): Promise<StackFrame[]>;
32+
33+
/**
34+
* Given an error object, parse it.
35+
* @param error Error object
36+
* @param options Object for options
37+
* @return Array[StackFrame]
38+
*/
39+
export function fromError(error:Error, options?:StackTraceOptions): Promise<StackFrame[]>;
40+
41+
/**
42+
* Use StackGenerator to generate a backtrace.
43+
* @param options Object options
44+
* @returns Array[StackFrame]
45+
*/
46+
export function generateArtificially(options?: StackTraceOptions): Promise<StackFrame[]>;
47+
48+
/**
49+
* Given a function, wrap it such that invocations trigger a callback that
50+
* is called with a stack trace.
51+
*
52+
* @param {Function} fn to be instrumented
53+
* @param {Function} callback function to call with a stack trace on invocation
54+
* @param {Function} errorCallback optional function to call with error if unable to get stack trace.
55+
* @param {Object} thisArg optional context object (e.g. window)
56+
*/
57+
export function instrument(fn:() => void, callback:(stackFrames:StackFrame[]) => void, errorCallback:(error:Error) => void, thisArg?:any): void;
58+
59+
/**
60+
* Given a function that has been instrumented,
61+
* revert the function to it's original (non-instrumented) state.
62+
*
63+
* @param fn {Function}
64+
*/
65+
export function deinstrument(fn:() => void): void;
66+
}

0 commit comments

Comments
 (0)