mirror of
https://github.com/denoland/deno.git
synced 2024-11-01 09:24:20 -04:00
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]: |
||
---|---|---|
.. | ||
_fs | ||
_util | ||
tests | ||
_utils.ts | ||
events.ts | ||
events_test.ts | ||
fs.ts | ||
global.ts | ||
module.ts | ||
module_test.ts | ||
os.ts | ||
os_test.ts | ||
path.ts | ||
process.ts | ||
process_test.ts | ||
querystring.ts | ||
querystring_test.ts | ||
README.md | ||
timers.ts | ||
util.ts | ||
util_test.ts |
Deno Node compatibility
This module is meant to have a compatibility layer for the NodeJS standard library.
Warning: Any function of this module should not be referred anywhere in the deno standard library as it's a compatibility module.
Supported Builtins
- assert
- buffer
- child_process
- cluster
- console
- crypto
- dgram
- dns
- events
- fs partly
- http
- http2
- https
- module
- net
- os partly
- path
- perf_hooks
- process partly
- querystring
- readline
- repl
- stream
- string_decoder
- sys
- timers
- tls
- tty
- url
- util partly
v8can't implement- vm
- worker_threads
- zlib
- node globals partly
Deprecated
These builtins are deprecated in NodeJS v13 and will probably not be polyfilled:
- constants
- domain
- freelist
- punycode
Experimental
These builtins are experimental in NodeJS v13 and will not be polyfilled until they are stable:
- async_hooks
- inspector
- policies
- report
- trace_events
- wasi
CommonJS Module Loading
createRequire(...)
is provided to create a require
function for loading CJS
modules. It also sets supported globals.
import { createRequire } from "https://deno.land/std/node/module.ts";
const require = createRequire(import.meta.url);
// Loads native module polyfill.
const path = require("path");
// Loads extensionless module.
const cjsModule = require("./my_mod");
// Visits node_modules.
const leftPad = require("left-pad");