diff options
author | Evan Hahn <me@evanhahn.com> | 2020-05-20 09:29:05 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-20 10:29:05 -0400 |
commit | f5c0188b5edf9451aca42347dd4a48708fefce23 (patch) | |
tree | 371926d505070a8dd91b547528f846af812b962a /std/node/util.ts | |
parent | 7566aa8765be82a9773b7ff83c3ddc8e70041e79 (diff) |
std/node: add util.callbackify (#5415)
This adds [Node's `util.callbackify`][0] to `std/node/util.ts`.
I lifted most of this from the [original Node source code][1] (and [its
tests][2]). I tried to make minimal modifications to the source.
I made a few arbitrary decisions:
- I was unable to do the function's types elegantly. I made overloads
for functions that have 0 to 5 (inclusive) arguments, excluding the
callback. I would love to know a better way to do this. (It seems that
the folks at DefinitelyTyped [were also stumped][3], though maybe
their solution is deliberate.)
- There are a few edge cases that cause custom Node errors to be
produced. Instead of re-implementing those errors completely, I
created simplified classes. These are mostly correct but are not
identical to the real Node errors.
- The tests implement a possibly-arcane `TestQueue` class. I originally
used a lot of inline promises but found it too repetitive.
Closes [#5366][4].
[0]: https://nodejs.org/api/util.html#util_util_callbackify_original
[1]: https://github.com/nodejs/node/blob/47804933012841f2dc90626bdcc161adf34569a5/lib/util.js#L183-L226
[2]: https://github.com/nodejs/node/blob/47804933012841f2dc90626bdcc161adf34569a5/test/parallel/test-util-callbackify.js
[3]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/7d24857ddb07ab637dfa8c477d13352f8a8206fc/types/node/util.d.ts#L61-L84
[4]: https://github.com/denoland/deno/issues/5366
Diffstat (limited to 'std/node/util.ts')
-rw-r--r-- | std/node/util.ts | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/std/node/util.ts b/std/node/util.ts index 73cbbf823..a61dc30b2 100644 --- a/std/node/util.ts +++ b/std/node/util.ts @@ -1,3 +1,5 @@ +export { callbackify } from "./_util/_util_callbackify.ts"; + export function isArray(value: unknown): boolean { return Array.isArray(value); } |