40 lines · 989 B · JavaScript
RawDownload
import { nodeName } from "../utils.js"; const errorConstructors = new Set([  "AggregateError",  "Error",  "EvalError",  "RangeError",  "ReferenceError",  "SyntaxError",  "TypeError",  "URIError",]); const message =  "Do not construct built-in Error objects in Effect domain code. Use typed domain errors and Effect.fail instead; at true adapter boundaries use a narrow suppression with a boundary reason. Skill: wrdn-effect-typed-errors."; const isErrorConstructor = (node) => errorConstructors.has(nodeName(node)); export default {  meta: {    type: "problem",    docs: {      description: "Disallow built-in Error constructors.",    },  },  create(context) {    return {      NewExpression(node) {        if (isErrorConstructor(node.callee)) {          context.report({ node, message });        }      },      CallExpression(node) {        if (isErrorConstructor(node.callee)) {          context.report({ node, message });        }      },    };  },};