BetaViberTest is in active development — expect breaking changes.
Overview
#013mediumStyle & Patterns
Obsolete Patterns
Detects outdated JS/TS patterns: var, .then() chains, class components, CommonJS.
Rule ID:
obsolete-patternsExamples#
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
}
}
}