UNPKG

auto-cr-rules

Version:

Extensible static analysis rule set for the auto-cr automated code review toolkit

59 lines (58 loc) 2.23 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toRule = exports.isRule = exports.RuleSeverity = void 0; exports.defineRule = defineRule; var RuleSeverity; (function (RuleSeverity) { RuleSeverity["Error"] = "error"; RuleSeverity["Warning"] = "warning"; RuleSeverity["Optimizing"] = "optimizing"; })(RuleSeverity || (exports.RuleSeverity = RuleSeverity = {})); function defineRule(name, metadataOrRunner, maybeRunner) { var _a; var metadata = typeof metadataOrRunner === 'function' ? {} : metadataOrRunner; var runner = typeof metadataOrRunner === 'function' ? metadataOrRunner : maybeRunner; if (!runner) { throw new Error('defineRule requires a rule runner function'); } return __assign(__assign({ name: name }, metadata), { severity: (_a = metadata.severity) !== null && _a !== void 0 ? _a : RuleSeverity.Error, run: runner }); } var isRule = function (value) { return (typeof value === 'object' && value !== null && typeof value.name === 'string' && typeof value.run === 'function' && (typeof value.tag === 'undefined' || typeof value.tag === 'string') && (typeof value.severity === 'undefined' || (typeof value.severity === 'string' && Object.values(RuleSeverity).includes(value.severity)))); }; exports.isRule = isRule; var toRule = function (value, origin) { var _a; if ((0, exports.isRule)(value)) { return __assign({ severity: (_a = value.severity) !== null && _a !== void 0 ? _a : RuleSeverity.Error }, value); } if (typeof value === 'function') { var fn = value; return { name: fn.name || origin, severity: RuleSeverity.Error, run: fn, }; } return null; }; exports.toRule = toRule;