Skip to content

Commit

Permalink
Breaking: update no-deprecated-api (fixes #80)
Browse files Browse the repository at this point in the history
  • Loading branch information
mysticatea committed Jun 1, 2017
1 parent 3387336 commit 0e487f9
Show file tree
Hide file tree
Showing 3 changed files with 151 additions and 0 deletions.
28 changes: 28 additions & 0 deletions docs/rules/no-deprecated-api.md
Expand Up @@ -23,16 +23,25 @@ const {exists} = require("fs"); /*ERROR: 'fs.exists' was deprecated since

This rule reports the following deprecated API.

- _linklist (undocumented)
- buffer
- [Buffer constructors](https://nodejs.org/dist/v6.0.0/docs/api/buffer.html#buffer_class_buffer) (Use [safe-buffer](https://www.npmjs.com/package/safe-buffer) module for `Node@<4.5.0`)
- [SlowBuffer class](https://nodejs.org/dist/v6.0.0/docs/api/buffer.html#buffer_class_slowbuffer)
- constants (undocumented)
- crypto
- `Credentials` (undocumented)
- [createCredentials](https://nodejs.org/dist/v0.12.0/docs/api/crypto.html#crypto_crypto_createcredentials_details)
- [domain](https://nodejs.org/dist/v4.0.0/docs/api/domain.html#domain_domain)
- events
- [EventEmitter.listenerCount](https://nodejs.org/dist/v4.0.0/docs/api/events.html#events_class_method_eventemitter_listenercount_emitter_event)
- freelist (undocumented)
- fs
- `SyncWriteStream` (undocumented)
- [exists](https://nodejs.org/dist/v4.0.0/docs/api/fs.html#fs_fs_exists_path_callback)
- [lchmod](https://nodejs.org/dist/v8.0.0/docs/api/fs.html#fs_fs_lchmod_path_mode_callback)
- [lchmodSync](https://nodejs.org/dist/v8.0.0/docs/api/fs.html#fs_fs_lchmodsync_path_mode)
- [lchown](https://nodejs.org/dist/v8.0.0/docs/api/fs.html#fs_fs_lchown_path_uid_gid_callback)
- [lchownSync](https://nodejs.org/dist/v8.0.0/docs/api/fs.html#fs_fs_lchownsync_path_uid_gid)
- globals
- [require.extensions](https://nodejs.org/dist/v0.12.0/docs/api/globals.html#globals_require_extensions)
- `Intl.v8BreakIterator` (undocumented)
Expand All @@ -42,6 +51,7 @@ This rule reports the following deprecated API.
- `requireRepl` (undocumented)
- os
- `tmpDir` (undocumented)
- `getNetworkInterfaces` (undocumented)
- process
- `EventEmitter` (undocumented)
- [punycode](https://nodejs.org/dist/v7.0.0/docs/api/punycode.html)
Expand All @@ -52,6 +62,7 @@ This rule reports the following deprecated API.
- `stripVTControlCharacters` (undocumented)
- repl
- [process.env.NODE_REPL_HISTORY_FILE](https://nodejs.org/dist/v4.0.0/docs/api/repl.html#repl_node_repl_history_file)
- sys (undocumented)
- tls
- [CleartextStream](https://nodejs.org/dist/v0.10.0/docs/api/tls.html#tls_class_tls_cleartextstream)
(this class was removed on v0.11.3, but never deprecated in documents)
Expand Down Expand Up @@ -83,6 +94,8 @@ This rule reports the following deprecated API.
- [pump](https://nodejs.org/dist/v0.10.0/docs/api/util.html#util_util_pump_readablestream_writablestream_callback)
- [puts](https://nodejs.org/dist/v0.12.0/docs/api/util.html#util_util_puts)
- [_extend](https://nodejs.org/dist/v6.0.0/docs/api/util.html#util_util_extend_obj)
- vm
- [runInDebugContext](https://nodejs.org/dist/v8.0.0/docs/api/vm.html#vm_vm_runindebugcontext_code)

## Options

Expand All @@ -107,14 +120,23 @@ Default is an empty array.
This rule ignores APIs that `ignoreModuleItems` includes.
This option can include the following values:

- `_linklist`
- `buffer.Buffer()`
- `new buffer.Buffer()`
- `buffer.SlowBuffer`
- `constants`
- `crypto.Credentials`
- `crypto.createCredentials`
- `domain`
- `events.EventEmitter.listenerCount`
- `events.listenerCount`
- `freelist`
- `fs.SyncWriteStream`
- `fs.exists`
- `fs.lchmod`
- `fs.lchmodSync`
- `fs.lchown`
- `fs.lchownSync`
- `http.createClient`
- `module.Module.requireRepl`
- `module.requireRepl`
Expand All @@ -124,6 +146,7 @@ This option can include the following values:
- `readline.getStringWidth`
- `readline.isFullWidthCodePoint`
- `readline.stripVTControlCharacters`
- `sys`
- `tls.CleartextStream`
- `tls.CryptoStream`
- `tls.SecurePair`
Expand Down Expand Up @@ -151,6 +174,7 @@ This option can include the following values:
- `util.pump`
- `util.puts`
- `util._extend`
- `vm.runInDebugContext`

Examples of :+1: **correct** code for the `{"ignoreModuleItems": ["new buffer.Buffer()"]}`:

Expand Down Expand Up @@ -190,10 +214,14 @@ This rule cannot report the following cases:

### non-static properties

- buffer
- [buf.parent](https://nodejs.org/dist/v8.0.0/docs/api/buffer.html#buffer_buf_parent)
- cluster
- [worker.suicide](https://nodejs.org/dist/v6.0.0/docs/api/cluster.html#cluster_worker_suicide)
- crypto
- [ecdh.setPublicKey](https://nodejs.org/dist/v6.0.0/docs/api/crypto.html#crypto_ecdh_setpublickey_public_key_encoding)
- http
- [res.writeHeader()](https://nodejs.org/dist/v8.0.0/docs/api/deprecations.html#deprecations_dep0063_serverresponse_prototype_writeheader)
- net
- [server.connections](https://nodejs.org/dist/v0.10.0/docs/api/net.html#net_server_connections)
- repl
Expand Down
62 changes: 62 additions & 0 deletions lib/util/deprecated-apis.js
Expand Up @@ -11,6 +11,11 @@

module.exports = {
modules: {
_linklist: {
$deprecated: true,
since: 5,
replacedBy: null,
},
buffer: {
Buffer: {
$constructor: {
Expand All @@ -30,7 +35,17 @@ module.exports = {
replacedBy: "'buffer.Buffer.allocUnsafeSlow()'",
},
},
constants: {
$deprecated: true,
since: 6.3,
replacedBy: "'constants' property of each module",
},
crypto: {
Credentials: {
$deprecated: true,
since: 0.12,
replacedBy: "'tls.SecureContext'",
},
createCredentials: {
$deprecated: true,
since: 0.12,
Expand All @@ -56,12 +71,42 @@ module.exports = {
replacedBy: "'events.EventEmitter#listenerCount()'",
},
},
freelist: {
$deprecated: true,
since: 4,
replacedBy: null,
},
fs: {
SyncWriteStream: {
$deprecated: true,
since: 4,
replacedBy: null,
},
exists: {
$deprecated: true,
since: 4,
replacedBy: "'fs.stat()' or 'fs.access()'",
},
lchmod: {
$deprecated: true,
since: 0.4,
replacedBy: null,
},
lchmodSync: {
$deprecated: true,
since: 0.4,
replacedBy: null,
},
lchown: {
$deprecated: true,
since: 0.4,
replacedBy: null,
},
lchownSync: {
$deprecated: true,
since: 0.4,
replacedBy: null,
},
},
http: {
createClient: {
Expand All @@ -85,6 +130,11 @@ module.exports = {
},
},
os: {
getNetworkInterfaces: {
$deprecated: true,
since: 0.6,
replacedBy: "'os.networkInterfaces()'",
},
tmpDir: {
$deprecated: true,
since: 7,
Expand Down Expand Up @@ -118,6 +168,11 @@ module.exports = {
replacedBy: null,
},
},
sys: {
$deprecated: true,
since: 0.3,
replacedBy: "'util' module",
},
tls: {
CleartextStream: {
$deprecated: true,
Expand Down Expand Up @@ -259,6 +314,13 @@ module.exports = {
replacedBy: "'Object.assign()'",
},
},
vm: {
runInDebugContext: {
$deprecated: true,
since: 8,
replacedBy: null,
},
},
},
globals: {
Buffer: {
Expand Down
61 changes: 61 additions & 0 deletions tests/lib/rules/no-deprecated-api.js
Expand Up @@ -231,6 +231,22 @@ ruleTester.run("no-deprecated-api", rule, {
errors: ["'buffer.SlowBuffer' was deprecated since v6. Use 'buffer.Buffer.allocUnsafeSlow()' instead."],
},

//----------------------------------------------------------------------
{
code: "require('_linklist');",
env: {node: true},
errors: ["'_linklist' module was deprecated since v5."],
},
{
code: "require('constants');",
env: {node: true},
errors: ["'constants' module was deprecated since v6.3. Use 'constants' property of each module instead."],
},
{
code: "require('crypto').Credentials;",
env: {node: true},
errors: ["'crypto.Credentials' was deprecated since v0.12. Use 'tls.SecureContext' instead."],
},
{
code: "require('crypto').createCredentials;",
env: {node: true},
Expand All @@ -251,11 +267,41 @@ ruleTester.run("no-deprecated-api", rule, {
env: {node: true},
errors: ["'events.listenerCount' was deprecated since v4. Use 'events.EventEmitter#listenerCount()' instead."],
},
{
code: "require('freelist');",
env: {node: true},
errors: ["'freelist' module was deprecated since v4."],
},
{
code: "require('fs').SyncWriteStream;",
env: {node: true},
errors: ["'fs.SyncWriteStream' was deprecated since v4."],
},
{
code: "require('fs').exists;",
env: {node: true},
errors: ["'fs.exists' was deprecated since v4. Use 'fs.stat()' or 'fs.access()' instead."],
},
{
code: "require('fs').lchmod;",
env: {node: true},
errors: ["'fs.lchmod' was deprecated since v0.4."],
},
{
code: "require('fs').lchmodSync;",
env: {node: true},
errors: ["'fs.lchmodSync' was deprecated since v0.4."],
},
{
code: "require('fs').lchown;",
env: {node: true},
errors: ["'fs.lchown' was deprecated since v0.4."],
},
{
code: "require('fs').lchownSync;",
env: {node: true},
errors: ["'fs.lchownSync' was deprecated since v0.4."],
},
{
code: "require('http').createClient;",
env: {node: true},
Expand All @@ -271,6 +317,11 @@ ruleTester.run("no-deprecated-api", rule, {
env: {node: true},
errors: ["'module.Module.requireRepl' was deprecated since v6. Use 'require(\"repl\")' instead."],
},
{
code: "require('os').getNetworkInterfaces;",
env: {node: true},
errors: ["'os.getNetworkInterfaces' was deprecated since v0.6. Use 'os.networkInterfaces()' instead."],
},
{
code: "require('os').tmpDir;",
env: {node: true},
Expand Down Expand Up @@ -301,6 +352,11 @@ ruleTester.run("no-deprecated-api", rule, {
env: {node: true},
errors: ["'readline.stripVTControlCharacters' was deprecated since v6."],
},
{
code: "require('sys');",
env: {node: true},
errors: ["'sys' module was deprecated since v0.3. Use 'util' module instead."],
},
{
code: "require('tls').CleartextStream;",
env: {node: true},
Expand Down Expand Up @@ -436,6 +492,11 @@ ruleTester.run("no-deprecated-api", rule, {
env: {node: true},
errors: ["'util._extend' was deprecated since v6. Use 'Object.assign()' instead."],
},
{
code: "require('vm').runInDebugContext;",
env: {node: true},
errors: ["'vm.runInDebugContext' was deprecated since v8."],
},

// ES2015 Modules
{
Expand Down

0 comments on commit 0e487f9

Please sign in to comment.