/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
tools/eslint-rules/iterator-result-done-first.js
66 строк
1 KB
Trivikram Kamat
tools: enforce iterator result property order
26 май 2026, 20:19
Не верифицирован
26 май 2026, 20:19
92f48f4
Код
Авторство
О чём код?
'use strict'; const MESSAGE = 'Iterator result objects should place `done` before `value`.'; function getStaticPropertyName(property) { const { key } = property; if (!key) { return; } if (key.type === 'Identifier' && !property.computed) { return key.name; } if (key.type === 'Literal') { return key.value; } } module.exports = { meta: { type: 'suggestion', fixable: 'code', schema: [], }, create(context) { const sourceCode = context.sourceCode; return { ObjectExpression(node) { let doneProperty; let valueProperty; for (const property of node.properties) { if (property.type !== 'Property') { continue; } switch (getStaticPropertyName(property)) { case 'done': doneProperty ??= property; break; case 'value': valueProperty ??= property; break; } } if (doneProperty && valueProperty && valueProperty.range[0] < doneProperty.range[0]) { context.report({ node: valueProperty, message: MESSAGE, fix(fixer) { return [ fixer.replaceText(valueProperty, sourceCode.getText(doneProperty)), fixer.replaceText(doneProperty, sourceCode.getText(valueProperty)), ]; }, }); } }, }; }, };