File size: 2,351 Bytes
4a51346
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
declare namespace callsites {
	interface CallSite {
		/**
		Returns the value of `this`.
		*/
		getThis(): unknown | undefined;

		/**
		Returns the type of `this` as a string. This is the name of the function stored in the constructor field of `this`, if available, otherwise the object's `[[Class]]` internal property.
		*/
		getTypeName(): string | null;

		/**
		Returns the current function.
		*/
		getFunction(): Function | undefined;

		/**
		Returns the name of the current function, typically its `name` property. If a name property is not available an attempt will be made to try to infer a name from the function's context.
		*/
		getFunctionName(): string | null;

		/**
		Returns the name of the property of `this` or one of its prototypes that holds the current function.
		*/
		getMethodName(): string | undefined;

		/**
		Returns the name of the script if this function was defined in a script.
		*/
		getFileName(): string | null;

		/**
		Returns the current line number if this function was defined in a script.
		*/
		getLineNumber(): number | null;

		/**
		Returns the current column number if this function was defined in a script.
		*/
		getColumnNumber(): number | null;

		/**
		Returns a string representing the location where `eval` was called if this function was created using a call to `eval`.
		*/
		getEvalOrigin(): string | undefined;

		/**
		Returns `true` if this is a top-level invocation, that is, if it's a global object.
		*/
		isToplevel(): boolean;

		/**
		Returns `true` if this call takes place in code defined by a call to `eval`.
		*/
		isEval(): boolean;

		/**
		Returns `true` if this call is in native V8 code.
		*/
		isNative(): boolean;

		/**
		Returns `true` if this is a constructor call.
		*/
		isConstructor(): boolean;
	}
}

declare const callsites: {
	/**
	Get callsites from the V8 stack trace API.

	@returns An array of `CallSite` objects.

	@example
	```
	import callsites = require('callsites');

	function unicorn() {
		console.log(callsites()[0].getFileName());
		//=> '/Users/sindresorhus/dev/callsites/test.js'
	}

	unicorn();
	```
	*/
	(): callsites.CallSite[];

	// TODO: Remove this for the next major release, refactor the whole definition to:
	// declare function callsites(): callsites.CallSite[];
	// export = callsites;
	default: typeof callsites;
};

export = callsites;