diff options
Diffstat (limited to 'std/node/README.md')
-rw-r--r-- | std/node/README.md | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/std/node/README.md b/std/node/README.md deleted file mode 100644 index 5f0d8511a..000000000 --- a/std/node/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# Deno Node compatibility - -This module is meant to have a compatibility layer for the -[NodeJS standard library](https://nodejs.org/docs/latest-v12.x/api/). - -**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 -- [x] buffer -- [ ] child_process -- [ ] cluster -- [ ] console -- [ ] crypto -- [ ] dgram -- [ ] dns -- [x] events -- [x] fs _partly_ -- [ ] http -- [ ] http2 -- [ ] https -- [x] module -- [ ] net -- [x] os _partly_ -- [x] path -- [ ] perf_hooks -- [x] process _partly_ -- [x] querystring -- [ ] readline -- [ ] repl -- [ ] stream -- [ ] string_decoder -- [ ] sys -- [x] timers -- [ ] tls -- [ ] tty -- [ ] url -- [x] util _partly_ -- [ ] ~~v8~~ _can't implement_ -- [ ] vm -- [ ] worker_threads -- [ ] zlib - -* [x] 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. - -```ts -import { createRequire } from "https://deno.land/std@$STD_VERSION/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"); -``` - -## Contributing - -When converting from promise-based to callback-based APIs, the most obvious way -is like this: - -```ts -promise.then((value) => callback(null, value)).catch(callback); -``` - -This has a subtle bug - if the callback throws an error, the catch statement -will also catch _that_ error, and the callback will be called twice. The correct -way to do it is like this: - -```ts -promise.then((value) => callback(null, value), callback); -``` - -The second parameter of `then` can also be used to catch errors, but only errors -from the existing promise, not the new one created by the callback. - -If the Deno equivalent is actually synchronous, there's a similar problem with -try/catch statements: - -```ts -try { - const value = process(); - callback(null, value); -} catch (err) { - callback(err); -} -``` - -Since the callback is called within the `try` block, any errors from it will be -caught and call the callback again. - -The correct way to do it is like this: - -```ts -let err, value; -try { - value = process(); -} catch (e) { - err = e; -} -if (err) { - callback(err); // Make sure arguments.length === 1 -} else { - callback(null, value); -} -``` - -It's not as clean, but prevents the callback being called twice. |