|
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.defineWrapperListener = defineWrapperListener; |
|
exports.getProxyNode = getProxyNode; |
|
exports.buildProxyListener = buildProxyListener; |
|
exports.getCoreRule = getCoreRule; |
|
const eslint_1 = require("eslint"); |
|
|
|
|
|
|
|
function defineWrapperListener(coreRule, context, proxyOptions) { |
|
const listener = coreRule.create(context); |
|
const svelteListener = proxyOptions.createListenerProxy?.(listener) ?? listener; |
|
return svelteListener; |
|
} |
|
|
|
|
|
|
|
function getProxyNode(node, properties) { |
|
const cache = {}; |
|
return new Proxy(node, { |
|
get(_t, key) { |
|
if (key in cache) { |
|
return cache[key]; |
|
} |
|
if (key in properties) { |
|
return (cache[key] = properties[key]); |
|
} |
|
return node[key]; |
|
} |
|
}); |
|
} |
|
|
|
|
|
|
|
function buildProxyListener(base, convertNode) { |
|
const listeners = {}; |
|
for (const [key, listener] of Object.entries(base)) { |
|
listeners[key] = function (...args) { |
|
listener.call(this, ...args.map((arg) => { |
|
if (typeof arg === 'object' && |
|
'type' in arg && |
|
typeof arg.type === 'string' && |
|
'range' in arg) { |
|
return convertNode(arg); |
|
} |
|
return arg; |
|
})); |
|
}; |
|
} |
|
return listeners; |
|
} |
|
let ruleMap = null; |
|
|
|
|
|
|
|
function getCoreRule(ruleName) { |
|
try { |
|
const map = ruleMap |
|
? ruleMap |
|
: (ruleMap = new eslint_1.Linter().getRules()); |
|
return map.get(ruleName); |
|
} |
|
catch { |
|
|
|
} |
|
|
|
const { builtinRules } = require('eslint/use-at-your-own-risk'); |
|
ruleMap = builtinRules; |
|
return builtinRules.get(ruleName) || null; |
|
} |
|
|