Skip to content

Commit 255a541

Browse files
committed
fix ts type file, add more strict ts testing
1 parent 950692e commit 255a541

File tree

8 files changed

+154
-23
lines changed

8 files changed

+154
-23
lines changed

index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
type SignalListener = (done: () => void, event: any, signal: string) => (undefined | Promise<any>)
1+
type SignalListener = (done: () => void, event: any, signal: string) => (undefined | Promise<void> | Promise<any> | Promise<Error>)
22
type cancelSubscription = () => void
33

44

index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// +----------------------------------------------------------------------+
2-
// | node-graceful v0.3.0 (https://github.com/mrbar42/node-graceful) |
2+
// | node-graceful v0.3.1 (https://github.com/mrbar42/node-graceful) |
33
// | Graceful process exit manager. |
44
// |----------------------------------------------------------------------|
55
'use strict';
@@ -170,3 +170,7 @@ Graceful.prototype._invokeListener = function _invokeListener(listener, quit, ev
170170

171171
let graceful = new Graceful();
172172
module.exports = graceful;
173+
174+
// monkey patch exports to support both old & new & Typescript module systems
175+
module.exports.Graceful = graceful;
176+
module.exports.default = graceful;

package-lock.json

Lines changed: 82 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-graceful",
3-
"version": "0.3.0",
3+
"version": "0.3.1",
44
"description": "Graceful process exit manager. allows waiting on multiple async services.",
55
"main": "index",
66
"repository": {
@@ -18,15 +18,18 @@
1818
],
1919
"scripts": {
2020
"test:unit": "node tests/runner",
21-
"test:lint": "tslint -c tslint.json --fix tests/*.ts",
22-
"test": "npm run test:unit && npm run test:lint",
21+
"test:unit-ts": "ts-node tests/wait-for-multiple-promise.ts",
22+
"test:lint": "tsc && tslint -c tslint.json --fix tests/*.ts",
23+
"test": "npm run test:lint && npm run test:unit && npm run test:unit-ts",
2324
"transpile": "tsc --allowJs --outFile es5/index.js --pretty index.js ",
24-
"prepublish": "npm run test && npm run transpile"
25+
"prepublishOnly": "npm run test && npm run transpile"
2526
},
2627
"author": "mrbar42",
2728
"license": "WTFPL",
2829
"devDependencies": {
30+
"@types/node": "9.6.0",
31+
"ts-node": "5.0.1",
2932
"tslint": "5.9.1",
30-
"typescript": "2.6.2"
33+
"typescript": "2.7.2"
3134
}
3235
}

tests/TypeScript.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1-
import {Graceful} from "../";
1+
import Graceful from "../";
22

3-
const listener = (done, event, signal) => {
3+
const listener = (done: () => {}, event: any, signal: string) => {
44
done();
55
};
66

7-
const listenerPromise = (done, event, signal) => Promise.resolve();
8-
7+
const listenerPromise = (done: () => {}, event: any, signal: string) => Promise.resolve("abc");
98
Graceful.on("exit", listener);
9+
const listenerPromise1 = (done: () => {}, event: any, signal: string) => Promise.resolve({});
10+
Graceful.on("exit", listenerPromise1);
11+
const listenerPromise2 = (done: () => {}, event: any, signal: string) => new Promise((resolve) => {
12+
resolve();
13+
});
14+
Graceful.on("exit", listenerPromise2);
15+
1016
Graceful.on("exit", listener, true);
1117
Graceful.on("exit", listenerPromise);
1218
Graceful.on("exit", listenerPromise, true);

tests/wait-for-multiple-promise.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
3+
import Graceful from "../";
4+
5+
const handlerSuccess = () => {
6+
return new Promise((resolve) => {
7+
setTimeout(() => {
8+
process.stdout.write("ok");
9+
resolve();
10+
}, 100);
11+
});
12+
};
13+
14+
const handlerReject = () => {
15+
return new Promise((resolve, reject) => {
16+
setTimeout(() => {
17+
process.stdout.write("ok");
18+
reject();
19+
}, 200);
20+
});
21+
};
22+
23+
Graceful.on("exit", handlerSuccess);
24+
Graceful.on("exit", handlerReject);
25+
26+
Graceful.exit();

tsconfig.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"compileOnSave": false,
3+
"compilerOptions": {
4+
"target": "es2015",
5+
"noImplicitAny": true,
6+
"strictNullChecks": true,
7+
"noEmit": true,
8+
"alwaysStrict": true,
9+
"preserveConstEnums": true,
10+
"sourceMap": false,
11+
"moduleResolution": "Node",
12+
"declaration": true,
13+
"lib": [
14+
"es2015"
15+
]
16+
}
17+
}

tslint.json

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
{
2-
"defaultSeverity": "error",
3-
"extends": [
4-
"tslint:recommended"
5-
],
6-
"jsRules": {},
7-
"rules": {},
8-
"rulesDirectory": []
9-
}
2+
"defaultSeverity": "error",
3+
"extends": [
4+
"tslint:recommended"
5+
]
6+
}

0 commit comments

Comments
 (0)