Skip to content

feat: handle util.is**() depreciation #116

@AugustinMauroy

Description

@AugustinMauroy

Description

Since util.is**() is deprecated in Node.js v23.9.0, we should provide a codemod to replace it.

  • The codemod should remove import if it's only thing imported or remove the member if not anymore used.
  • The codemod should modify any call expression of this api.

Examples

Before:

import util from 'node:util';

if (util.isArray(someValue)) {
  console.log('someValue is an array');
}
if (util.isBoolean(someValue)) {
  console.log('someValue is a boolean');
}
if (util.isBuffer(someValue)) {
  console.log('someValue is a buffer');
}
if (util.isDate(someValue)) {
  console.log('someValue is a date');
}
if (util.isError(someValue)) {
  console.log('someValue is an error');
}
if (util.isFunction(someValue)) {
  console.log('someValue is a function');
}
if (util.isNull(someValue)) {
  console.log('someValue is null');
}
if (util.isNullOrUndefined(someValue)) {
  console.log('someValue is null or undefined');
}
if (util.isNumber(someValue)) {
  console.log('someValue is a number');
}
if (util.isObject(someValue)) {
  console.log('someValue is an object');
}
if (util.isPrimitive(someValue)) {
  console.log('someValue is a primitive');
}
if (util.isRegExp(someValue)) {
  console.log('someValue is a regular expression');
}
if (util.isString(someValue)) {
  console.log('someValue is a string');
}
if (util.isSymbol(someValue)) {
  console.log('someValue is a symbol');
}
if (util.isUndefined(someValue)) {
  console.log('someValue is undefined');
}

After:

if (Array.isArray(someValue)) {
  console.log('someValue is an array');
}
if (typeof someValue === 'boolean') {
  console.log('someValue is a boolean');
}
if (Buffer.isBuffer(someValue)) {
  console.log('someValue is a buffer');
}
if (someValue instanceof Date) {
  console.log('someValue is a date');
}
if (someValue instanceof Error) {
  console.log('someValue is an error');
}
if (typeof someValue === 'function') {
  console.log('someValue is a function');
}
if (someValue === null) {
  console.log('someValue is null');
}
if (someValue == null) {
  console.log('someValue is null or undefined');
}
if (typeof someValue === 'number') {
  console.log('someValue is a number');
}
if (typeof someValue === 'object' && someValue !== null) {
  console.log('someValue is an object');
}
if (someValue !== Object(someValue)) {
  console.log('someValue is a primitive');
}
if (someValue instanceof RegExp) {
  console.log('someValue is a regular expression');
}
if (typeof someValue === 'string') {
  console.log('someValue is a string');
}
if (typeof someValue === 'symbol') {
  console.log('someValue is a symbol');
}
if (typeof someValue === 'undefined') {
  console.log('someValue is undefined');
}

REFS

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    🏗 In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions