From e62c864fe5e2c2e28b3cf4a681370cda01e8683c Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Sat, 6 Apr 2019 11:55:31 +0000 Subject: [PATCH] Refactor TypeScript definition to CommonJS compatible export (#11) --- index.d.ts | 141 ++++++++++++++++++++++++++++-------------------- index.js | 1 + index.test-d.ts | 5 +- package.json | 8 +-- 4 files changed, 90 insertions(+), 65 deletions(-) diff --git a/index.d.ts b/index.d.ts index b5bb8f6..61f597c 100644 --- a/index.d.ts +++ b/index.d.ts @@ -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; diff --git a/index.js b/index.js index c408fc8..486c241 100644 --- a/index.js +++ b/index.js @@ -9,4 +9,5 @@ const callsites = () => { }; module.exports = callsites; +// TODO: Remove this for the next major release module.exports.default = callsites; diff --git a/index.test-d.ts b/index.test-d.ts index 7aa85dc..a617027 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -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]; diff --git a/package.json b/package.json index f18051a..09dc044 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "node": ">=6" }, "scripts": { - "test": "xo && ava && tsd-check" + "test": "xo && ava && tsd" }, "files": [ "index.js", @@ -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" } }