f5c0188b5e
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]: |
||
---|---|---|
.. | ||
_util | ||
archive | ||
async | ||
bytes | ||
datetime | ||
encoding | ||
examples | ||
flags | ||
fmt | ||
fs | ||
hash | ||
http | ||
io | ||
log | ||
mime | ||
node | ||
path | ||
permissions | ||
signal | ||
testing | ||
textproto | ||
uuid | ||
ws | ||
README.md | ||
version.ts |
Deno Standard Modules
These modules do not have external dependencies and they are reviewed by the Deno core team. The intention is to have a standard set of high quality code that all Deno projects can use fearlessly.
Contributions are welcome!
How to use
These modules are tagged in accordance with Deno releases. So, for example, the
v0.3.0 tag is guaranteed to work with deno v0.3.0. You can link to v0.3.0 using
the URL https://deno.land/std@v0.3.0/
. Not specifying a tag will link to the
master branch.
It is strongly recommended that you link to tagged releases to avoid unintended updates.
Don't link to / import any module whose path:
- Has a name or parent with an underscore prefix:
_foo.ts
,_util/bar.ts
. - Is that of a test module or test data:
test.ts
,foo_test.ts
,testdata/bar.txt
.
No stability is guaranteed for these files.
Documentation
To browse documentation for modules:
- Go to https://deno.land/std/.
- Navigate to any module of interest.
- Click the "DOCUMENTATION" link.
Contributing
deno_std is a loose port of Go's standard library. When in doubt, simply port Go's source code, documentation, and tests. There are many times when the nature of JavaScript, TypeScript, or Deno itself justifies diverging from Go, but if possible we want to leverage the energy that went into building Go. We generally welcome direct ports of Go's code.
Please ensure the copyright headers cite the code's origin.
Follow the style guide.