Skip to content

Commit

Permalink
Refactor TypeScript definition to CommonJS compatible export (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
BendingBender authored and sindresorhus committed Apr 6, 2019
1 parent 3bc8adc commit e62c864
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 65 deletions.
141 changes: 82 additions & 59 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -1,73 +1,96 @@
export interface CallSite {
/**
* Returns the value of `this`.
*/
getThis(): unknown | undefined;
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 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 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 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 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 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 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 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 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 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 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 call is in native V8 code.
*/
isNative(): boolean;

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

/**
* Get callsites from the V8 stack trace API.
*
* @returns An array of `CallSite` objects.
*/
export default function callsites(): CallSite[];
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;
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ const callsites = () => {
};

module.exports = callsites;
// TODO: Remove this for the next major release
module.exports.default = callsites;
5 changes: 3 additions & 2 deletions index.test-d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {expectType} from 'tsd-check';
import callsites, {CallSite} from '.';
import {expectType} from 'tsd';
import callsites = require('.');
import {CallSite} from '.';

const callsite = callsites()[0];

Expand Down
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"node": ">=6"
},
"scripts": {
"test": "xo && ava && tsd-check"
"test": "xo && ava && tsd"
},
"files": [
"index.js",
Expand All @@ -32,8 +32,8 @@
"debug"
],
"devDependencies": {
"ava": "^0.25.0",
"tsd-check": "^0.2.1",
"xo": "^0.23.0"
"ava": "^1.4.1",
"tsd": "^0.7.2",
"xo": "^0.24.0"
}
}

0 comments on commit e62c864

Please sign in to comment.