Skip to content

Commit f00c830

Browse files
committed
+
1 parent 4681c83 commit f00c830

File tree

6 files changed

+66
-65
lines changed

6 files changed

+66
-65
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"description": "Promisify setTimeout & setInterval",
77
"devDependencies": {
88
"@types/jest": "^26.0.20",
9+
"agadoo": "^2.0.0",
910
"jest": "^26.6.3",
1011
"ts-jest": "^26.5.3",
1112
"typescript": "^4.2.3"

src/main.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export declare const pause: (ms?: number, cb?: (...args: any[]) => any, ...args: any[]) => Promise<any>;
2-
export declare const poll: (interval?: number, times?: number, cb?: (...args: [...args: any[], resolve: (value: any) => any, reject: (reason: any) => any]) => any, ...args: any[]) => Promise<any>;
1+
export declare const pause: (ms: number, cb?: (...args: any[]) => any, ...args: any[]) => Promise<any>;
2+
export declare const poll: (interval: number, times: number, cb?: (...args: [...args: any[], resolve: (value: any) => any, reject: (reason: any) => any]) => any, ...args: any[]) => Promise<any>;

src/main.js

+28-54
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,30 @@
1-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3-
return new (P || (P = Promise))(function (resolve, reject) {
4-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7-
step((generator = generator.apply(thisArg, _arguments || [])).next());
1+
export const pause = (ms, cb, ...args) => {
2+
let timeout;
3+
const promise = new Promise((resolve, reject) => {
4+
timeout = setTimeout(async () => {
5+
try {
6+
resolve(await cb?.(...args));
7+
}
8+
catch (error) {
9+
reject(error);
10+
}
11+
}, ms);
812
});
13+
promise.abort = () => clearTimeout(timeout);
14+
return promise;
15+
};
16+
export const poll = async (interval, times, cb, ...args) => {
17+
let result;
18+
const resolve = value => (times = 0) || (result = value);
19+
const reject = reason => (times = 0) || (result = Promise.reject(reason));
20+
await (async function basePoll() {
21+
if (times > 0) {
22+
const _result = await cb?.(...args, resolve, reject);
23+
if (times) {
24+
result = _result;
25+
--times && (await pause(interval, basePoll));
26+
}
27+
}
28+
})();
29+
return result;
930
};
10-
(function (factory) {
11-
if (typeof module === "object" && typeof module.exports === "object") {
12-
var v = factory(require, exports);
13-
if (v !== undefined) module.exports = v;
14-
}
15-
else if (typeof define === "function" && define.amd) {
16-
define(["require", "exports"], factory);
17-
}
18-
})(function (require, exports) {
19-
"use strict";
20-
Object.defineProperty(exports, "__esModule", { value: true });
21-
exports.poll = exports.pause = void 0;
22-
const pause = (ms, cb, ...args) => {
23-
let timeout;
24-
const promise = new Promise((resolve, reject) => {
25-
timeout = setTimeout(() => __awaiter(void 0, void 0, void 0, function* () {
26-
try {
27-
resolve(yield (cb === null || cb === void 0 ? void 0 : cb(...args)));
28-
}
29-
catch (error) {
30-
reject(error);
31-
}
32-
}), ms);
33-
});
34-
promise.abort = () => clearTimeout(timeout);
35-
return promise;
36-
};
37-
exports.pause = pause;
38-
const poll = (interval, times, cb, ...args) => __awaiter(void 0, void 0, void 0, function* () {
39-
let result;
40-
const resolve = value => (times = 0) || (result = value);
41-
const reject = reason => (times = 0) || (result = Promise.reject(reason));
42-
yield (function basePoll() {
43-
return __awaiter(this, void 0, void 0, function* () {
44-
if (times > 0) {
45-
const _result = yield cb(...args, resolve, reject);
46-
if (times) {
47-
result = _result;
48-
--times && (yield exports.pause(interval, basePoll));
49-
}
50-
}
51-
});
52-
})();
53-
return result;
54-
});
55-
exports.poll = poll;
56-
});

src/main.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const pause = (
2-
ms?: number,
2+
ms: number,
33
cb?: (...args: any[]) => any,
44
...args: any[]
55
): Promise<any> => {
@@ -21,8 +21,8 @@ export const pause = (
2121
}
2222

2323
export const poll = async (
24-
interval?: number,
25-
times?: number,
24+
interval: number,
25+
times: number,
2626
cb?: (
2727
...args: [
2828
...args: any[],
@@ -38,7 +38,7 @@ export const poll = async (
3838

3939
await (async function basePoll() {
4040
if (times > 0) {
41-
const _result = await cb(...args, resolve, reject)
41+
const _result = await cb?.(...args, resolve, reject)
4242

4343
if (times) {
4444
result = _result

tsconfig.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
"compilerOptions": {
33
"declaration": true,
44
"esModuleInterop": true,
5-
"module": "UMD",
65
"moduleResolution": "Node",
7-
"target": "ES6"
6+
"removeComments": true,
87
},
9-
"exclude": ["src/main.test.ts"],
10-
"include": ["src/**/*"]
8+
"include": ["src/main.ts"]
119
}

yarn.lock

+29-1
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,11 @@
533533
dependencies:
534534
"@babel/types" "^7.3.0"
535535

536+
"@types/estree@*":
537+
version "0.0.46"
538+
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
539+
integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==
540+
536541
"@types/graceful-fs@^4.1.2":
537542
version "4.1.5"
538543
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
@@ -617,7 +622,7 @@ acorn-walk@^7.1.1:
617622
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
618623
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
619624

620-
acorn@^7.1.1:
625+
acorn@^7.1.0, acorn@^7.1.1:
621626
version "7.4.1"
622627
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
623628
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
@@ -627,6 +632,15 @@ acorn@^8.0.5:
627632
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe"
628633
integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==
629634

635+
agadoo@^2.0.0:
636+
version "2.0.0"
637+
resolved "https://registry.yarnpkg.com/agadoo/-/agadoo-2.0.0.tgz#1fbbcf429ce5e71df3d93855a915252b277667ed"
638+
integrity sha512-68aFhseH51ZBKYKkQNxwDi1hJwTnywBjHWg068qFnMkpXShhOazNzJUPRvaLQjrqhT3EOUth5G9mt1A0/dGhOw==
639+
dependencies:
640+
acorn "^7.1.0"
641+
rollup "^1"
642+
rollup-plugin-virtual "^1.0.1"
643+
630644
ajv@^6.12.3:
631645
version "6.12.6"
632646
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
@@ -2978,6 +2992,20 @@ rimraf@^3.0.0:
29782992
dependencies:
29792993
glob "^7.1.3"
29802994

2995+
rollup-plugin-virtual@^1.0.1:
2996+
version "1.0.1"
2997+
resolved "https://registry.yarnpkg.com/rollup-plugin-virtual/-/rollup-plugin-virtual-1.0.1.tgz#8227c94c605b981adfe433ea74de3551e42ffeb4"
2998+
integrity sha512-HCTBpV8MwP5lNzZrHD2moVxHIToHU1EkzkKGVj6Z0DcgUfxrxrZmeQirQeLz2yhnkJqRjwiVywK9CS8jDYakrw==
2999+
3000+
rollup@^1:
3001+
version "1.32.1"
3002+
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4"
3003+
integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==
3004+
dependencies:
3005+
"@types/estree" "*"
3006+
"@types/node" "*"
3007+
acorn "^7.1.0"
3008+
29813009
rsvp@^4.8.4:
29823010
version "4.8.5"
29833011
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"

0 commit comments

Comments
 (0)