@fenge/eslint-plugin-ts
Version:
An eslint plugin for TypeScript
31 lines • 3.4 kB
JavaScript
import { getRuleName } from "../utils.js";
const name = getRuleName(import.meta.url);
const rule = {
meta: {
messages: {
default: "Disallow using `declare` statement.",
},
schema: [
{
type: "object",
properties: {
allowClassProperty: { type: "boolean" },
},
additionalProperties: false,
},
],
},
create: (context) => ({
"[declare=true]": (node) => {
const { allowClassProperty = false } = context.options[0] ?? {};
if (allowClassProperty &&
node.type === "PropertyDefinition" &&
node.parent.type === "ClassBody") {
return;
}
context.report({ node, messageId: "default" });
},
}),
};
export const noDeclares = { name, rule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZGVjbGFyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tZGVjbGFyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLElBQUksR0FBb0I7SUFDNUIsSUFBSSxFQUFFO1FBQ0osUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLHFDQUFxQztTQUMvQztRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7aUJBQ3hDO2dCQUNELG9CQUFvQixFQUFFLEtBQUs7YUFDNUI7U0FDRjtLQUNGO0lBQ0QsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLGdCQUFnQixFQUFFLENBQUMsSUFBZSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hFLElBQ0Usa0JBQWtCO2dCQUNsQixJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQjtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUNoQyxDQUFDO2dCQUNELE9BQU87WUFDVCxDQUFDO1lBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO0tBQ0YsQ0FBQztDQUNILENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgeyBnZXRSdWxlTmFtZSB9IGZyb20gXCIuLi91dGlscy50c1wiO1xuXG5jb25zdCBuYW1lID0gZ2V0UnVsZU5hbWUoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IHJ1bGU6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgbWV0YToge1xuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBkZWZhdWx0OiBcIkRpc2FsbG93IHVzaW5nIGBkZWNsYXJlYCBzdGF0ZW1lbnQuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFsbG93Q2xhc3NQcm9wZXJ0eTogeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICB9LFxuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGNyZWF0ZTogKGNvbnRleHQpID0+ICh7XG4gICAgXCJbZGVjbGFyZT10cnVlXVwiOiAobm9kZTogUnVsZS5Ob2RlKSA9PiB7XG4gICAgICBjb25zdCB7IGFsbG93Q2xhc3NQcm9wZXJ0eSA9IGZhbHNlIH0gPSBjb250ZXh0Lm9wdGlvbnNbMF0gPz8ge307XG4gICAgICBpZiAoXG4gICAgICAgIGFsbG93Q2xhc3NQcm9wZXJ0eSAmJlxuICAgICAgICBub2RlLnR5cGUgPT09IFwiUHJvcGVydHlEZWZpbml0aW9uXCIgJiZcbiAgICAgICAgbm9kZS5wYXJlbnQudHlwZSA9PT0gXCJDbGFzc0JvZHlcIlxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnRleHQucmVwb3J0KHsgbm9kZSwgbWVzc2FnZUlkOiBcImRlZmF1bHRcIiB9KTtcbiAgICB9LFxuICB9KSxcbn07XG5leHBvcnQgY29uc3Qgbm9EZWNsYXJlcyA9IHsgbmFtZSwgcnVsZSB9O1xuIl19