BetaViberTest is in active development — expect breaking changes.
Overview
DocsRulesObsolete Patterns
#013mediumStyle & Patterns

Obsolete Patterns

Detects outdated JS/TS patterns: var, .then() chains, class components, CommonJS.

Rule ID:obsolete-patterns

Examples#

Badvar, class components, require()
// var instead of const/let
var userName = 'John';
var count = 0;

// React class component
class UserProfile extends React.Component {
  render() {
    return <div>{this.props.name}</div>;
  }
}

// CommonJS in TypeScript
const express = require('express');
module.exports = { router };

// .then() chain hell
getData()
  .then(a => process(a))
  .then(b => transform(b))
  .then(c => save(c))
  .catch(err => console.log(err));
GoodModern patterns
// const/let
const userName = 'John';
let count = 0;

// Function component with hooks
function UserProfile({ name }: { name: string }) {
  return <div>{name}</div>;
}

// ES modules
import express from 'express';
export { router };

// async/await
try {
  const a = await getData();
  const b = await process(a);
  const c = await transform(b);
  await save(c);
} catch (err) {
  logger.error(err);
}

What It Detects#

mediumvar declarations
Obsolete pattern: "var" detected

Fix: Use const (preferred) or let instead of var.

medium3+ .then() chains (callback hell)
Promise chain with 3+ .then() calls detected

Fix: Refactor to async/await for better readability.

mediumReact class components
React class component detected

Fix: Convert to function components with hooks.

mediumrequire()/module.exports in .ts files
CommonJS (require/module.exports) in TypeScript file

Fix: Use ES modules: import/export.

Configuration#

This rule is enabled by default. To disable it:

.vibertestrc.jsonjson
{
  "rules": {
    "obsolete-patterns": {
      "enabled": false
    }
  }
}