UNPKG

@wopjs/disposable

Version:

Manage side effect disposers in a compact, reusable and testable style.

43 lines (40 loc) 1.14 kB
const plugin = { meta: { name: "eslint-plugin-disposable", }, rules: { "readonly-dispose": { create(context) { function checkProperty(node) { context.report({ fix(fixer) { return fixer.insertTextBefore(node, "readonly "); }, message: `Use readonly for Disposable to avoid leaks through accidental reassignment.`, node, }); } return { "PropertyDefinition[readonly!=true][key.name=dispose][typeAnnotation.typeAnnotation.typeName.name=/Disposer|IDisposable|DisposableType|DisposableDisposer|DisposableStore|DisposableMap|DisposableOne/]": checkProperty, "PropertyDefinition[readonly!=true][key.name=dispose][value.type=CallExpression][value.callee.name=/disposableStore|disposableMap|disposableOne/]": checkProperty, }; }, meta: { fixable: "code", }, }, }, }; module.exports = { plugin, recommended: { plugins: { disposable: plugin, }, rules: { "disposable/readonly-dispose": "error", }, }, };