Skip to content

Commit e7878e9

Browse files
committed
Update: fix missing deprecated APIs in v6 (fixes #92)
1 parent 52ceb11 commit e7878e9

File tree

4 files changed

+40
-5
lines changed

4 files changed

+40
-5
lines changed

docs/rules/no-deprecated-api.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ This rule reports the following deprecated API.
4444
- [lchownSync](https://nodejs.org/dist/v8.0.0/docs/api/fs.html#fs_fs_lchownsync_path_uid_gid)
4545
- globals
4646
- [require.extensions](https://nodejs.org/dist/v0.12.0/docs/api/globals.html#globals_require_extensions)
47-
- `Intl.v8BreakIterator` (undocumented)
47+
- [GLOBAL](https://nodejs.org/api/deprecations.html#deprecations_dep0016_global_root)
48+
- [root](https://nodejs.org/api/deprecations.html#deprecations_dep0016_global_root)
49+
- [Intl.v8BreakIterator](https://nodejs.org/api/deprecations.html#deprecations_dep0017_intl_v8breakiterator)
4850
- http
4951
- [createClient](https://nodejs.org/dist/v0.10.0/docs/api/http.html#http_http_createclient_port_host)
5052
- module
@@ -62,7 +64,7 @@ This rule reports the following deprecated API.
6264
- `stripVTControlCharacters` (undocumented)
6365
- repl
6466
- [process.env.NODE_REPL_HISTORY_FILE](https://nodejs.org/dist/v4.0.0/docs/api/repl.html#repl_node_repl_history_file)
65-
- sys (undocumented)
67+
- [sys](https://nodejs.org/api/deprecations.html#deprecations_dep0025_require_sys)
6668
- tls
6769
- [CleartextStream](https://nodejs.org/dist/v0.10.0/docs/api/tls.html#tls_class_tls_cleartextstream)
6870
(this class was removed on v0.11.3, but never deprecated in documents)

lib/rules/no-deprecated-api.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,10 @@ function create(context) {
274274
*/
275275
function reportProperty(node, path, key, info) {
276276
const ignored = info.global ? ignoredGlobalItems : ignoredModuleItems
277-
const name = `${path.join(".")}.${key}`
277+
278+
path.push(key)
279+
const name = path.join(".")
280+
path.pop()
278281

279282
if (ignored.indexOf(name) === -1) {
280283
report(node, `'${name}'`, info)
@@ -405,8 +408,16 @@ function create(context) {
405408
}
406409
varStack.push(variable)
407410

408-
for (const reference of variable.references.filter(r => r.isRead())) {
409-
checkProperties(reference.identifier, path, infoMap)
411+
if (infoMap.$deprecated) {
412+
const key = path.pop()
413+
for (const reference of variable.references.filter(r => r.isRead())) {
414+
reportProperty(reference.identifier, path, key, infoMap)
415+
}
416+
}
417+
else {
418+
for (const reference of variable.references.filter(r => r.isRead())) {
419+
checkProperties(reference.identifier, path, infoMap)
420+
}
410421
}
411422

412423
varStack.pop()

lib/util/deprecated-apis.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,12 @@ module.exports = {
337337
replacedBy: "'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0')",
338338
},
339339
},
340+
GLOBAL: {
341+
$deprecated: true,
342+
global: true,
343+
since: 6,
344+
replacedBy: "'global'",
345+
},
340346
Intl: {
341347
v8BreakIterator: {
342348
$deprecated: true,
@@ -353,6 +359,12 @@ module.exports = {
353359
replacedBy: "compiling them ahead of time",
354360
},
355361
},
362+
root: {
363+
$deprecated: true,
364+
global: true,
365+
since: 6,
366+
replacedBy: "'global'",
367+
},
356368
process: {
357369
EventEmitter: {
358370
$deprecated: true,

tests/lib/rules/no-deprecated-api.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,11 @@ ruleTester.run("no-deprecated-api", rule, {
592592
env: {node: true},
593593
errors: ["'Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead."],
594594
},
595+
{
596+
code: "GLOBAL; /*globals GLOBAL*/",
597+
env: {node: true},
598+
errors: ["'GLOBAL' was deprecated since v6. Use 'global' instead."],
599+
},
595600
{
596601
code: "Intl.v8BreakIterator;",
597602
env: {node: true},
@@ -602,6 +607,11 @@ ruleTester.run("no-deprecated-api", rule, {
602607
env: {node: true},
603608
errors: ["'require.extensions' was deprecated since v0.12. Use compiling them ahead of time instead."],
604609
},
610+
{
611+
code: "root;",
612+
env: {node: true},
613+
errors: ["'root' was deprecated since v6. Use 'global' instead."],
614+
},
605615
{
606616
code: "process.EventEmitter;",
607617
env: {node: true},

0 commit comments

Comments
 (0)