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 }); } }, }; },};
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 });
}
},
};
},
};