@llui/lint-idiomatic 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +30 -8
- package/dist/vite.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -145,7 +145,13 @@ function checkMutationsInBody(node, stateName, sf, filename, violations) {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
// Check for prefix/postfix increment/decrement: state.x++, ++state.x
|
|
148
|
+
// Only `++` / `--` are mutations. Other prefix unary operators (`!`,
|
|
149
|
+
// `~`, `+`, `-`) are pure reads and must NOT match — flagging them
|
|
150
|
+
// turned `return [{ ...state, flag: !state.flag }, []]` into a false
|
|
151
|
+
// positive during the persistent-layout example work.
|
|
148
152
|
if ((ts.isPostfixUnaryExpression(node) || ts.isPrefixUnaryExpression(node)) &&
|
|
153
|
+
(node.operator === ts.SyntaxKind.PlusPlusToken ||
|
|
154
|
+
node.operator === ts.SyntaxKind.MinusMinusToken) &&
|
|
149
155
|
isStatePropertyAccess(node.operand, stateName)) {
|
|
150
156
|
const { line, column } = pos(node, sf);
|
|
151
157
|
violations.push({
|
|
@@ -1394,9 +1400,23 @@ function checkSpreadInChildren(sf, filename, violations) {
|
|
|
1394
1400
|
ELEMENT_HELPERS.has(node.expression.text)) {
|
|
1395
1401
|
// Check children argument (last array literal).
|
|
1396
1402
|
// Spread is allowed when the argument is a structural primitive
|
|
1397
|
-
//
|
|
1398
|
-
//
|
|
1399
|
-
|
|
1403
|
+
// or a context provider — those return Node[] and MUST be spread.
|
|
1404
|
+
// Flag only spreads over .map(), .filter(), or arrays.
|
|
1405
|
+
//
|
|
1406
|
+
// `provide` and `pageSlot` return Node[] the same way each/show/
|
|
1407
|
+
// branch do, and the idiomatic pattern is
|
|
1408
|
+
// `...provide(Ctx, accessor, () => [...])` as a child. Without
|
|
1409
|
+
// this exemption the rule trips on every context-provider use
|
|
1410
|
+
// inside a layout's view tree.
|
|
1411
|
+
const STRUCTURAL = new Set([
|
|
1412
|
+
'each',
|
|
1413
|
+
'show',
|
|
1414
|
+
'branch',
|
|
1415
|
+
'virtualEach',
|
|
1416
|
+
'onMount',
|
|
1417
|
+
'provide',
|
|
1418
|
+
'pageSlot',
|
|
1419
|
+
]);
|
|
1400
1420
|
for (const arg of node.arguments) {
|
|
1401
1421
|
if (!ts.isArrayLiteralExpression(arg))
|
|
1402
1422
|
continue;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript'\n\nexport interface LintViolation {\n rule: string\n message: string\n file: string\n line: number\n column: number\n suggestion?: string\n}\n\nexport interface LintResult {\n violations: LintViolation[]\n /** Score from 0 to 17. Starts at 17, -1 per violated rule category. */\n score: number\n}\n\nexport interface LintOptions {\n /**\n * Rule names to skip. Useful for avoiding duplication when running\n * alongside `@llui/vite-plugin`, which already emits some of these\n * diagnostics from its own `diagnose()` pass.\n */\n exclude?: readonly string[]\n}\n\n/**\n * Every rule name emitted by `lintIdiomatic`. Stable list so callers\n * (like the Vite plugin wrapper) can reference them by name to exclude.\n */\nexport const RULE_NAMES = [\n 'state-mutation',\n 'missing-memo',\n 'each-closure-violation',\n 'map-on-state-array',\n 'unnecessary-child',\n 'form-boilerplate',\n 'async-update',\n 'direct-state-in-view',\n 'exhaustive-effect-handling',\n 'effect-without-handler',\n 'forgotten-spread',\n 'string-effect-callback',\n 'nested-send-in-update',\n 'imperative-dom-in-view',\n 'accessor-side-effect',\n 'view-bag-import',\n 'spread-in-children',\n] as const\n\nexport type RuleName = (typeof RULE_NAMES)[number]\n\n/**\n * Lint a single source file for LLui idiomatic anti-patterns.\n * Returns violations and a numeric score (17 = perfect).\n */\nexport function lintIdiomatic(\n source: string,\n filename = 'input.ts',\n options: LintOptions = {},\n): LintResult {\n const sf = ts.createSourceFile(filename, source, ts.ScriptTarget.Latest, true)\n const violations: LintViolation[] = []\n const exclude = new Set(options.exclude ?? [])\n\n // Each check runs its own visitor; filter by rule name at the end rather\n // than skipping the check entirely, so tests can verify the exclude\n // mechanism without re-plumbing every check function.\n checkStateMutation(sf, filename, violations)\n checkMissingMemo(sf, filename, violations)\n checkEachClosureViolation(sf, filename, violations)\n checkMapOnStateArrays(sf, filename, violations)\n checkUnnecessaryChild(sf, filename, violations)\n checkFormBoilerplate(sf, filename, violations)\n checkAsyncUpdate(sf, filename, violations)\n checkDirectStateInView(sf, filename, violations)\n checkExhaustiveEffectHandling(sf, filename, violations)\n checkEffectWithoutHandler(sf, filename, violations)\n checkForgottenSpread(sf, filename, violations)\n checkStringEffectCallback(sf, filename, violations)\n checkNestedSendInUpdate(sf, filename, violations)\n checkImperativeDomInView(sf, filename, violations)\n checkAccessorSideEffect(sf, filename, violations)\n checkViewBagImport(sf, filename, violations)\n checkSpreadInChildren(sf, filename, violations)\n\n const filtered = exclude.size > 0 ? violations.filter((v) => !exclude.has(v.rule)) : violations\n\n // Score: unique violated rule categories (post-filter)\n const violatedRules = new Set(filtered.map((v) => v.rule))\n const score = Math.max(0, 17 - violatedRules.size)\n\n return { violations: filtered, score }\n}\n\n// ── Helpers ─────────────────────────────────────────────────────────\n\nfunction pos(node: ts.Node, sf: ts.SourceFile): { line: number; column: number } {\n const { line, character } = sf.getLineAndCharacterOfPosition(node.getStart(sf))\n return { line: line + 1, column: character + 1 }\n}\n\nfunction isStatePropertyAccess(node: ts.Node, stateName: string): boolean {\n if (ts.isPropertyAccessExpression(node)) {\n if (ts.isIdentifier(node.expression) && node.expression.text === stateName) return true\n return isStatePropertyAccess(node.expression, stateName)\n }\n return false\n}\n\nfunction isInsideViewFunction(node: ts.Node): boolean {\n let current = node.parent\n while (current) {\n if (ts.isPropertyAssignment(current)) {\n if (ts.isIdentifier(current.name) && current.name.text === 'view') {\n return true\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction referencesStateParam(node: ts.Node): boolean {\n if (ts.isPropertyAccessExpression(node)) {\n return referencesStateParam(node.expression)\n }\n if (ts.isIdentifier(node)) {\n const name = node.text\n return name === 'state' || name === 's' || name === '_state'\n }\n return false\n}\n\n// ── Rule 1: state-mutation ──────────────────────────────────────────\n\nfunction checkStateMutation(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n function visit(node: ts.Node): void {\n if (\n ts.isPropertyAssignment(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === 'update'\n ) {\n const fn = node.initializer\n if (ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) {\n const stateParam = fn.parameters[0]\n if (stateParam && ts.isIdentifier(stateParam.name)) {\n const stateName = stateParam.name.text\n checkMutationsInBody(fn.body, stateName, sf, filename, violations)\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction checkMutationsInBody(\n node: ts.Node,\n stateName: string,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Check for direct assignment: state.x = y\n if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.EqualsToken) {\n if (isStatePropertyAccess(node.left, stateName)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'state-mutation',\n message: `Direct mutation of state via assignment in update(). Use spread: { ...${stateName}, field: newValue }`,\n file: filename,\n line,\n column,\n suggestion: `Return a new object: { ...${stateName}, ... }`,\n })\n }\n }\n // Check for compound assignment: state.x += y\n if (\n ts.isBinaryExpression(node) &&\n [\n ts.SyntaxKind.PlusEqualsToken,\n ts.SyntaxKind.MinusEqualsToken,\n ts.SyntaxKind.AsteriskEqualsToken,\n ts.SyntaxKind.SlashEqualsToken,\n ].includes(node.operatorToken.kind)\n ) {\n if (isStatePropertyAccess(node.left, stateName)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'state-mutation',\n message: 'Compound assignment on state in update(). State is immutable.',\n file: filename,\n line,\n column,\n })\n }\n }\n // Check for prefix/postfix increment/decrement: state.x++, ++state.x\n // Only `++` / `--` are mutations. Other prefix unary operators (`!`,\n // `~`, `+`, `-`) are pure reads and must NOT match — flagging them\n // turned `return [{ ...state, flag: !state.flag }, []]` into a false\n // positive during the persistent-layout example work.\n if (\n (ts.isPostfixUnaryExpression(node) || ts.isPrefixUnaryExpression(node)) &&\n (node.operator === ts.SyntaxKind.PlusPlusToken ||\n node.operator === ts.SyntaxKind.MinusMinusToken) &&\n isStatePropertyAccess(node.operand, stateName)\n ) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'state-mutation',\n message: 'Increment/decrement on state in update(). State is immutable.',\n file: filename,\n line,\n column,\n })\n }\n // Check for mutating method calls: state.items.push(...)\n if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression)) {\n const methodName = node.expression.name.text\n if (\n ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse', 'fill'].includes(methodName)\n ) {\n if (isStatePropertyAccess(node.expression.expression, stateName)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'state-mutation',\n message: `Mutating method .${methodName}() called on state property in update(). Use immutable alternatives.`,\n file: filename,\n line,\n column,\n suggestion:\n methodName === 'push'\n ? 'Use [...array, newItem]'\n : `Use immutable alternative to .${methodName}()`,\n })\n }\n }\n }\n ts.forEachChild(node, (child) => checkMutationsInBody(child, stateName, sf, filename, violations))\n}\n\n// ── Rule 2: missing-memo ────────────────────────────────────────────\n\nfunction checkMissingMemo(sf: ts.SourceFile, filename: string, violations: LintViolation[]): void {\n // Collect arrow functions used as reactive-binding accessors (not\n // arbitrary prop values). Group by printed source text and flag\n // groups with count >= 2 that aren't wrapped in memo().\n const arrowsByText = new Map<string, { node: ts.ArrowFunction; inMemo: boolean }[]>()\n\n function isInMemoCall(node: ts.Node): boolean {\n const parent = node.parent\n if (\n parent &&\n ts.isCallExpression(parent) &&\n ts.isIdentifier(parent.expression) &&\n parent.expression.text === 'memo'\n ) {\n return true\n }\n return false\n }\n\n // Element helpers — any prop assignment on an object passed to one\n // of these counts as a reactive binding site. `child()`, `each()`,\n // `show()`, `branch()`, `memo()`, `selector()` are STRUCTURAL\n // primitives; arrow props there are configuration, not bindings.\n const ELEMENT_HELPER_RECEIVERS = new Set([\n 'a',\n 'abbr',\n 'article',\n 'aside',\n 'b',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'code',\n 'dd',\n 'details',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'meter',\n 'nav',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 's',\n 'samp',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n ])\n\n /**\n * An arrow is a reactive binding if it sits in one of:\n * - first arg to `text(...)`\n * - a property value of an object literal passed to an element\n * helper like `div({ class: (s) => ... }, [...])`\n *\n * Prop values passed to `child()`, `each()`, etc. are configuration,\n * not reactive bindings, and should not be memoized.\n */\n function isReactiveBinding(arrow: ts.ArrowFunction): boolean {\n const parent = arrow.parent\n if (!parent) return false\n\n // Case 1: first arg to text()\n if (\n ts.isCallExpression(parent) &&\n ts.isIdentifier(parent.expression) &&\n parent.expression.text === 'text' &&\n parent.arguments[0] === arrow\n ) {\n return true\n }\n\n // Case 2: property in an object literal passed to an element helper\n if (ts.isPropertyAssignment(parent)) {\n const objectLit = parent.parent\n if (!objectLit || !ts.isObjectLiteralExpression(objectLit)) return false\n const call = objectLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression)) return false\n return ELEMENT_HELPER_RECEIVERS.has(call.expression.text)\n }\n\n return false\n }\n\n function visit(node: ts.Node): void {\n if (ts.isArrowFunction(node) && isInsideViewFunction(node)) {\n // Require at least one parameter: state-accessor convention is\n // `(s) => ...`. Zero-arg arrows like `() => 'static'` or `() => ({})`\n // don't depend on state and memo() doesn't help.\n if (node.parameters.length === 0) {\n ts.forEachChild(node, visit)\n return\n }\n if (isReactiveBinding(node)) {\n const sourceText = node.getText(sf).replace(/\\s+/g, ' ').trim()\n const inMemo = isInMemoCall(node)\n const entries = arrowsByText.get(sourceText) ?? []\n entries.push({ node, inMemo })\n arrowsByText.set(sourceText, entries)\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sf)\n\n for (const [_sourceText, entries] of arrowsByText) {\n if (entries.length < 2) continue\n const unmemoized = entries.filter((e) => !e.inMemo)\n if (unmemoized.length < 2) continue\n // Report on all but the first occurrence\n for (let i = 1; i < unmemoized.length; i++) {\n const entry = unmemoized[i]!\n const { line, column } = pos(entry.node, sf)\n violations.push({\n rule: 'missing-memo',\n message:\n 'Duplicate accessor arrow function used in multiple binding sites without memo(). Wrap in memo() to share computation.',\n file: filename,\n line,\n column,\n suggestion: 'Wrap the accessor in memo() and reuse the reference.',\n })\n }\n }\n}\n\n// ── Rule 3: each-closure-violation ──────────────────────────────────\n\n/**\n * Collect every identifier declared at the module (file) level. These\n * are safe to capture inside an each() render callback because they\n * share a single value across all iterations — typical cases are\n * imports, top-level consts, and function declarations.\n *\n * Identifiers declared INSIDE a function (as `let`, `var`, or function\n * parameters) are not collected — those are the genuinely mutable\n * captures the rule is designed to catch.\n */\nfunction collectModuleLevelNames(sf: ts.SourceFile): Set<string> {\n const names = new Set<string>()\n for (const stmt of sf.statements) {\n // Imports: import { a, b as c } from 'x' / import def from 'x'\n if (ts.isImportDeclaration(stmt)) {\n const clause = stmt.importClause\n if (!clause) continue\n if (clause.name) names.add(clause.name.text) // default import\n if (clause.namedBindings) {\n if (ts.isNamespaceImport(clause.namedBindings)) {\n names.add(clause.namedBindings.name.text)\n } else if (ts.isNamedImports(clause.namedBindings)) {\n for (const el of clause.namedBindings.elements) {\n names.add(el.name.text)\n }\n }\n }\n continue\n }\n // Top-level function declarations\n if (ts.isFunctionDeclaration(stmt) && stmt.name) {\n names.add(stmt.name.text)\n continue\n }\n // Top-level class declarations\n if (ts.isClassDeclaration(stmt) && stmt.name) {\n names.add(stmt.name.text)\n continue\n }\n // Top-level variable declarations — any kind, including `let` and\n // `var`. A top-level `let` is still shared across each() iterations\n // because each() runs all renders within one update cycle; the\n // concern is locals inside the ENCLOSING component function, not\n // module-level state.\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n collectBindingIdentifiers(decl.name, names)\n }\n }\n }\n return names\n}\n\nfunction collectBindingIdentifiers(name: ts.BindingName, out: Set<string>): void {\n if (ts.isIdentifier(name)) {\n out.add(name.text)\n } else if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el)) collectBindingIdentifiers(el.name, out)\n }\n }\n}\n\nfunction checkEachClosureViolation(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Pre-compute module-level declarations so checkClosureCaptures can\n // skip any identifier that resolves to one of them. Built once per\n // file regardless of how many each() calls the file contains.\n const moduleScopeNames = collectModuleLevelNames(sf)\n\n function visit(node: ts.Node): void {\n // Look for each() calls\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'each'\n ) {\n // each() typically takes an object with a render callback\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n const renderFn = prop.initializer\n if (ts.isArrowFunction(renderFn) || ts.isFunctionExpression(renderFn)) {\n checkClosureCaptures(renderFn, sf, filename, violations, moduleScopeNames)\n }\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction checkClosureCaptures(\n renderFn: ts.ArrowFunction | ts.FunctionExpression,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n moduleScopeNames: Set<string>,\n): void {\n // Collect parameter names of the render callback (including destructured ones)\n const paramNames = new Set<string>()\n function collectBindingNames(name: ts.BindingName): void {\n if (ts.isIdentifier(name)) {\n paramNames.add(name.text)\n } else if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el)) collectBindingNames(el.name)\n }\n }\n }\n for (const param of renderFn.parameters) {\n collectBindingNames(param.name)\n }\n\n // Collect locally declared names inside the render body\n const localNames = new Set<string>()\n function collectLocals(node: ts.Node): void {\n if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name)) {\n localNames.add(node.name.text)\n }\n if (ts.isParameter(node) && ts.isIdentifier(node.name)) {\n localNames.add(node.name.text)\n }\n ts.forEachChild(node, collectLocals)\n }\n if (renderFn.body) {\n collectLocals(renderFn.body)\n }\n\n // Built-in JS globals that are always safe to reference. Everything\n // else we might need to skip (imports, element helpers, custom\n // utilities) is already in `moduleScopeNames` from the file pre-scan.\n const jsGlobals = new Set([\n 'console',\n 'Math',\n 'JSON',\n 'String',\n 'Number',\n 'Boolean',\n 'Array',\n 'Object',\n 'Date',\n 'Promise',\n 'undefined',\n 'null',\n 'true',\n 'false',\n 'NaN',\n 'Infinity',\n 'document',\n 'window',\n 'globalThis',\n 'parseInt',\n 'parseFloat',\n 'isNaN',\n 'isFinite',\n 'Error',\n 'TypeError',\n 'RangeError',\n 'Set',\n 'Map',\n 'WeakSet',\n 'WeakMap',\n 'Symbol',\n 'Reflect',\n 'Proxy',\n ])\n\n // LLui-specific names that are stable function references across\n // renders. `send` in particular is the same function inside and\n // outside the each() render callback, so capturing the outer one is\n // equivalent to destructuring it. No correctness risk.\n const lluiSafeNames = new Set(['send'])\n\n // Find identifiers in binding positions that reference parent scope\n function checkBindings(node: ts.Node): void {\n if (ts.isIdentifier(node)) {\n const name = node.text\n // Skip if it's a parameter, local, JS global, LLui stable name,\n // or module-scope name. Module-scope names include imports,\n // top-level consts, and function declarations — all shared\n // across each() iterations, so capturing them is harmless.\n if (\n paramNames.has(name) ||\n localNames.has(name) ||\n jsGlobals.has(name) ||\n lluiSafeNames.has(name) ||\n moduleScopeNames.has(name)\n ) {\n return\n }\n // Skip if it's a property name in a property access (rhs of dot)\n if (node.parent && ts.isPropertyAccessExpression(node.parent) && node.parent.name === node)\n return\n // Skip if it's a property name in a property assignment\n if (node.parent && ts.isPropertyAssignment(node.parent) && node.parent.name === node) return\n // Skip type references\n if (node.parent && ts.isTypeReferenceNode(node.parent)) return\n\n // Check if this identifier is used in a binding context (arrow fn arg to text(), prop value)\n // — but only nested arrow functions inside the render body, not the render itself.\n if (isInBindingContext(node, renderFn)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'each-closure-violation',\n message: `Identifier '${name}' captured from parent scope inside each() render callback. Use the item accessor instead.`,\n file: filename,\n line,\n column,\n suggestion: 'Access data through the item/index parameters provided by each().',\n })\n }\n }\n ts.forEachChild(node, checkBindings)\n }\n\n if (renderFn.body) {\n checkBindings(renderFn.body)\n }\n}\n\nfunction isInBindingContext(\n node: ts.Node,\n boundary: ts.ArrowFunction | ts.FunctionExpression,\n): boolean {\n // Walk up to find if we're inside an arrow function that's nested inside\n // (not equal to) the render callback — i.e. a genuine reactive binding.\n let current: ts.Node | undefined = node\n while (current && current !== boundary) {\n if (ts.isArrowFunction(current)) {\n const parent: ts.Node | undefined = current.parent\n // First arg to text() — reactive text binding\n if (\n parent &&\n ts.isCallExpression(parent) &&\n ts.isIdentifier(parent.expression) &&\n parent.expression.text === 'text' &&\n parent.arguments[0] === current\n ) {\n return true\n }\n // Reactive prop value in object literal (e.g. class: (s) => ...)\n // but only if the property is not a structural callback like 'render', 'items', 'key'\n if (parent && ts.isPropertyAssignment(parent)) {\n const propName =\n ts.isIdentifier(parent.name) || ts.isStringLiteral(parent.name) ? parent.name.text : null\n // Skip structural callbacks — they're not reactive bindings\n if (\n propName !== 'render' &&\n propName !== 'items' &&\n propName !== 'key' &&\n propName !== 'init' &&\n propName !== 'update' &&\n propName !== 'view' &&\n propName !== 'onMsg' &&\n propName !== 'onSuccess' &&\n propName !== 'onError' &&\n propName !== 'on' &&\n propName !== 'when' &&\n propName !== 'cases' &&\n propName !== 'fallback' &&\n propName !== 'props'\n ) {\n return true\n }\n }\n }\n current = current.parent\n }\n return false\n}\n\n// ── Rule 4: map-on-state-array ──────────────────────────────────────\n\nfunction checkMapOnStateArrays(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n function visit(node: ts.Node): void {\n if (!ts.isCallExpression(node)) {\n ts.forEachChild(node, visit)\n return\n }\n if (!ts.isPropertyAccessExpression(node.expression)) {\n ts.forEachChild(node, visit)\n return\n }\n if (node.expression.name.text !== 'map') {\n ts.forEachChild(node, visit)\n return\n }\n\n if (!referencesStateParam(node.expression.expression)) {\n ts.forEachChild(node, visit)\n return\n }\n\n if (!isInsideViewFunction(node)) {\n ts.forEachChild(node, visit)\n return\n }\n\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'map-on-state-array',\n message: 'Array .map() on state-derived value in view(). Use each() for reactive lists.',\n file: filename,\n line,\n column,\n suggestion: 'Replace .map() with each({ source: ..., key: ..., render: ... }).',\n })\n\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\n// ── Rule 5: unnecessary-child ───────────────────────────────────────\n\nfunction checkUnnecessaryChild(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Collect component definitions: look for component() calls and count state access paths\n const componentInfo = new Map<\n string,\n { stateAccessCount: number; hasReceives: boolean; node: ts.Node }\n >()\n\n function collectComponents(node: ts.Node): void {\n // Look for: const X = component({ ... })\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.initializer &&\n ts.isCallExpression(node.initializer) &&\n ts.isIdentifier(node.initializer.expression) &&\n node.initializer.expression.text === 'component'\n ) {\n const arg = node.initializer.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n let hasReceives = false\n let stateAccessCount = 0\n\n for (const prop of arg.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {\n if (prop.name.text === 'receives') {\n hasReceives = true\n }\n if (prop.name.text === 'view' || prop.name.text === 'update') {\n // Count unique state property accesses\n const accesses = new Set<string>()\n countStateAccesses(prop.initializer, accesses)\n stateAccessCount += accesses.size\n }\n }\n }\n\n componentInfo.set(node.name.text, {\n stateAccessCount,\n hasReceives,\n node: node.initializer,\n })\n }\n }\n ts.forEachChild(node, collectComponents)\n }\n\n collectComponents(sf)\n\n // Now find child() calls that reference these components\n function findChildCalls(node: ts.Node): void {\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'child'\n ) {\n // child() first arg is typically { component: X, ... }\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'component'\n ) {\n if (ts.isIdentifier(prop.initializer)) {\n const compName = prop.initializer.text\n const info = componentInfo.get(compName)\n if (info && info.stateAccessCount < 10 && !info.hasReceives) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'unnecessary-child',\n message: `child() used for component '${compName}' which has fewer than 10 state access paths and no receives. Consider using a view function (Level 1 composition) instead.`,\n file: filename,\n line,\n column,\n suggestion: 'Use Level 1 composition (view function) for simple components.',\n })\n }\n }\n }\n }\n }\n }\n ts.forEachChild(node, findChildCalls)\n }\n\n findChildCalls(sf)\n}\n\nfunction countStateAccesses(node: ts.Node, accesses: Set<string>): void {\n if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.expression)) {\n const name = node.expression.text\n if (name === 'state' || name === 's' || name === '_state') {\n accesses.add(node.name.text)\n }\n }\n ts.forEachChild(node, (child) => countStateAccesses(child, accesses))\n}\n\n// ── Rule 6: form-boilerplate ────────────────────────────────────────\n\nfunction checkFormBoilerplate(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Find Msg type alias declarations that are union types\n for (const stmt of sf.statements) {\n if (!ts.isTypeAliasDeclaration(stmt)) continue\n if (stmt.name.text !== 'Msg') continue\n\n const variants = collectMsgVariantShapes(stmt.type)\n if (variants.length < 3) continue\n\n // Group variants by their \"shape\" — same fields except the type literal value\n // A variant shape is: sorted field names + field types (excluding the 'type' field value)\n const shapeGroups = new Map<string, string[]>()\n\n for (const variant of variants) {\n const shape = variant.shape\n const group = shapeGroups.get(shape) ?? []\n group.push(variant.typeName)\n shapeGroups.set(shape, group)\n }\n\n for (const [shape, group] of shapeGroups) {\n if (group.length < 3) continue\n\n // Only flag when the shared shape looks like form field updates.\n // Heuristic: the shape must contain a `value` field AND the variant\n // names must share a common `set*`/`update*`/`change*` prefix.\n // Error variants (`apiError`, `readmeError`, …) and data variants\n // (`userOk`, `repoOk`, …) coincidentally share shapes but aren't\n // form boilerplate — the rule should not flag them.\n const hasValueField = shape.split(',').some((f) => f.startsWith('value:'))\n if (!hasValueField) continue\n\n const prefixPattern = /^(set|update|change)[A-Z]/\n const allMatchPrefix = group.every((name) => prefixPattern.test(name))\n if (!allMatchPrefix) continue\n\n const { line, column } = pos(stmt, sf)\n violations.push({\n rule: 'form-boilerplate',\n message: `Msg type has ${group.length} variants with identical shapes (${group\n .slice(0, 3)\n .map((g) => `'${g}'`)\n .join(\n ', ',\n )}${group.length > 3 ? ', ...' : ''}). Consider using a generic field-update message pattern.`,\n file: filename,\n line,\n column,\n suggestion:\n \"Use a single { type: 'setField'; field: string; value: string } variant instead.\",\n })\n }\n }\n}\n\ninterface MsgVariantShape {\n typeName: string\n shape: string\n}\n\n// ── Rule 7: async-update ───────────────────────────────────────────\n\nfunction checkAsyncUpdate(sf: ts.SourceFile, filename: string, violations: LintViolation[]): void {\n function visit(node: ts.Node): void {\n if (\n ts.isPropertyAssignment(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === 'update'\n ) {\n const fn = node.initializer\n if (ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) {\n // Check for async modifier\n const mods = ts.getModifiers(fn)\n if (mods?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword)) {\n const { line, column } = pos(fn, sf)\n violations.push({\n rule: 'async-update',\n message: 'update() must be synchronous and pure. Move async operations to effects.',\n file: filename,\n line,\n column,\n })\n }\n // Check for await keyword inside body\n if (fn.body) {\n checkForAwait(fn.body, sf, filename, violations)\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction checkForAwait(\n node: ts.Node,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Don't descend into nested functions — only check the update body itself\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node) || ts.isFunctionDeclaration(node)) {\n return\n }\n if (ts.isAwaitExpression(node)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'async-update',\n message: 'update() must be synchronous and pure. Move async operations to effects.',\n file: filename,\n line,\n column,\n })\n return\n }\n ts.forEachChild(node, (child) => checkForAwait(child, sf, filename, violations))\n}\n\n// ── Rule 8: direct-state-in-view ───────────────────────────────────\n\nfunction checkDirectStateInView(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n function visit(node: ts.Node): void {\n if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name) && node.name.text === 'view') {\n const fn = node.initializer\n if (ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) {\n // Look for state.X references inside event handler closures within view\n if (fn.body) {\n findStateInEventHandlers(fn.body, sf, filename, violations)\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction findStateInEventHandlers(\n node: ts.Node,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Look for event handler properties: onClick, onInput, onChange, onSubmit, etc.\n if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name)) {\n const propName = node.name.text\n if (/^on[A-Z]/.test(propName)) {\n const handler = node.initializer\n if (ts.isArrowFunction(handler) || ts.isFunctionExpression(handler)) {\n if (handler.body) {\n findStateAccess(handler.body, sf, filename, violations)\n }\n return // don't recurse further into the handler\n }\n }\n }\n ts.forEachChild(node, (child) => findStateInEventHandlers(child, sf, filename, violations))\n}\n\nfunction findStateAccess(\n node: ts.Node,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Don't descend into nested arrow functions that are accessors (s => s.x)\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n return\n }\n if (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'state'\n ) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'direct-state-in-view',\n message:\n 'Possible stale state capture in event handler. Use an accessor (s => s.field) for reactive reads, or item.field() for imperative reads inside each().',\n file: filename,\n line,\n column,\n })\n return\n }\n ts.forEachChild(node, (child) => findStateAccess(child, sf, filename, violations))\n}\n\n// ── Rule 9: exhaustive-effect-handling ─────────────────────────────\n\nfunction checkExhaustiveEffectHandling(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n function visit(node: ts.Node): void {\n // Look for .else(<empty fn>) calls\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === 'else'\n ) {\n const arg = node.arguments[0]\n if (arg && (ts.isArrowFunction(arg) || ts.isFunctionExpression(arg))) {\n if (isEmptyFunctionBody(arg)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'exhaustive-effect-handling',\n message:\n 'Empty .else() handler silently drops unhandled effects. Add a console.warn for unrecognized effect types, or handle them explicitly.',\n file: filename,\n line,\n column,\n })\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction isEmptyFunctionBody(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n if (!fn.body) return true\n // Arrow with block body: () => {}\n if (ts.isBlock(fn.body)) {\n return fn.body.statements.length === 0\n }\n // Arrow with expression body is never \"empty\" — e.g. () => undefined is intentional\n return false\n}\n\n// ── Rule 10: effect-without-handler ───────────────────────────────\n\nfunction checkEffectWithoutHandler(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n function visit(node: ts.Node): void {\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'component'\n ) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n let hasOnEffect = false\n let hasEffectsInUpdate = false\n let updateNode: ts.Node | undefined\n\n for (const prop of arg.properties) {\n if (!ts.isPropertyAssignment(prop) || !ts.isIdentifier(prop.name)) continue\n if (prop.name.text === 'onEffect') {\n hasOnEffect = true\n }\n if (prop.name.text === 'update') {\n updateNode = prop\n const fn = prop.initializer\n if (ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) {\n if (fn.body) {\n hasEffectsInUpdate = bodyReturnsEffects(fn.body)\n }\n }\n }\n }\n\n if (hasEffectsInUpdate && !hasOnEffect && updateNode) {\n const { line, column } = pos(updateNode, sf)\n violations.push({\n rule: 'effect-without-handler',\n message:\n 'Component returns effects from update() but has no onEffect handler. Effects will be silently dropped (only built-in delay/log are handled automatically).',\n file: filename,\n line,\n column,\n })\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction bodyReturnsEffects(node: ts.Node): boolean {\n // Look for array literals in return position with non-empty second element\n // Pattern: return [state, [{ type: ... }]] or [state, [effect]]\n if (ts.isArrayLiteralExpression(node) && node.elements.length === 2) {\n const second = node.elements[1]\n if (second && ts.isArrayLiteralExpression(second) && second.elements.length > 0) {\n return true\n }\n }\n let found = false\n ts.forEachChild(node, (child) => {\n if (!found) found = bodyReturnsEffects(child)\n })\n return found\n}\n\n// ── Rule 11: forgotten-spread ─────────────────────────────────────\n\nfunction checkForgottenSpread(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n const structuralNames = new Set(['show', 'branch', 'each'])\n\n function visit(node: ts.Node): void {\n // Look for array literals containing calls to show/branch/each without spread\n if (ts.isArrayLiteralExpression(node)) {\n for (const element of node.elements) {\n if (\n ts.isCallExpression(element) &&\n ts.isIdentifier(element.expression) &&\n structuralNames.has(element.expression.text)\n ) {\n const { line, column } = pos(element, sf)\n violations.push({\n rule: 'forgotten-spread',\n message: `${element.expression.text}() returns Node[] — spread it: [...${element.expression.text}({...})]. Without spread, the array is nested and won't render correctly.`,\n file: filename,\n line,\n column,\n })\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\n// ── Rule 12: string-effect-callback ───────────────────────────────\n\nfunction checkStringEffectCallback(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n const callbackProps = new Set(['onSuccess', 'onError', 'onLoad', 'onChange', 'onMessage'])\n\n function visit(node: ts.Node): void {\n if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name)) {\n if (callbackProps.has(node.name.text) && ts.isStringLiteral(node.initializer)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'string-effect-callback',\n message: `String-based effect callback '${node.name.text}' is deprecated. Use a typed message constructor: ${node.name.text}: (data) => ({ type: '${node.initializer.text}', payload: data }).`,\n file: filename,\n line,\n column,\n })\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\n// ── Rule 13: nested-send-in-update ────────────────────────────────\n\nfunction checkNestedSendInUpdate(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n function visit(node: ts.Node): void {\n if (\n ts.isPropertyAssignment(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === 'update'\n ) {\n // Check that this property is inside a component() call\n if (isInsideComponentCall(node)) {\n const fn = node.initializer\n if (ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) {\n if (fn.body) {\n findSendCalls(fn.body, sf, filename, violations)\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction isInsideComponentCall(node: ts.Node): boolean {\n let current = node.parent\n while (current) {\n if (\n ts.isCallExpression(current) &&\n ts.isIdentifier(current.expression) &&\n current.expression.text === 'component'\n ) {\n return true\n }\n current = current.parent\n }\n return false\n}\n\nfunction findSendCalls(\n node: ts.Node,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Don't descend into nested functions\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node) || ts.isFunctionDeclaration(node)) {\n return\n }\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'send'\n ) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'nested-send-in-update',\n message:\n 'Calling send() inside update() causes recursive dispatch. Return effects instead: return [newState, [myEffect]].',\n file: filename,\n line,\n column,\n })\n }\n ts.forEachChild(node, (child) => findSendCalls(child, sf, filename, violations))\n}\n\n// ── Rule 14: imperative-dom-in-view ───────────────────────────────\n\nfunction checkImperativeDomInView(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n const imperativeMethods = new Set([\n 'querySelector',\n 'querySelectorAll',\n 'getElementById',\n 'getElementsByClassName',\n 'getElementsByTagName',\n ])\n\n function visit(node: ts.Node): void {\n if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name) && node.name.text === 'view') {\n const fn = node.initializer\n if (ts.isArrowFunction(fn) || ts.isFunctionExpression(fn)) {\n if (fn.body) {\n findImperativeDom(fn.body, sf, filename, violations, imperativeMethods)\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction isInsideOnMountCall(node: ts.Node): boolean {\n let current = node.parent\n while (current) {\n if (\n ts.isCallExpression(current) &&\n ts.isIdentifier(current.expression) &&\n current.expression.text === 'onMount'\n ) {\n return true\n }\n current = current.parent\n }\n return false\n}\n\n/**\n * Returns true if the node is inside a function that serves as an\n * event handler (onClick, onInput, onMouseDown…) or a deferred\n * callback (setTimeout, queueMicrotask, requestAnimationFrame,\n * Promise.then, addEventListener). All of these execute imperatively,\n * not reactively — imperative DOM inside them is fine.\n */\nfunction isInsideImperativeCallback(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n // Walk up to the enclosing function, then check what that function\n // is passed to.\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n const parent = current.parent\n if (parent) {\n // Case 1: prop assignment like `onClick: () => ...`\n if (\n ts.isPropertyAssignment(parent) &&\n ts.isIdentifier(parent.name) &&\n /^on[A-Z]/.test(parent.name.text)\n ) {\n return true\n }\n // Case 2: argument to a known deferred-execution helper\n if (ts.isCallExpression(parent)) {\n const callee = parent.expression\n if (ts.isIdentifier(callee)) {\n if (\n callee.text === 'setTimeout' ||\n callee.text === 'setInterval' ||\n callee.text === 'queueMicrotask' ||\n callee.text === 'requestAnimationFrame' ||\n callee.text === 'requestIdleCallback'\n ) {\n return true\n }\n }\n // addEventListener / Promise.then / etc.\n if (ts.isPropertyAccessExpression(callee)) {\n const method = callee.name.text\n if (\n method === 'addEventListener' ||\n method === 'then' ||\n method === 'catch' ||\n method === 'finally'\n ) {\n return true\n }\n }\n }\n }\n // Keep walking — a nested arrow inside an event handler should\n // still count as \"inside an event handler\".\n }\n current = current.parent\n }\n return false\n}\n\nfunction findImperativeDom(\n node: ts.Node,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n imperativeMethods: Set<string>,\n): void {\n if (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'document' &&\n imperativeMethods.has(node.name.text)\n ) {\n // Skip legitimate imperative contexts: onMount() callbacks, event\n // handlers (onClick, onInput, …), and deferred callbacks\n // (setTimeout, queueMicrotask, addEventListener, Promise.then).\n if (!isInsideOnMountCall(node) && !isInsideImperativeCallback(node)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'imperative-dom-in-view',\n message:\n \"Imperative DOM access in view() won't be reactive. Use LLui primitives (text, show, branch, each) for reactive rendering. Use onMount() for imperative DOM that runs once.\",\n file: filename,\n line,\n column,\n })\n }\n }\n ts.forEachChild(node, (child) =>\n findImperativeDom(child, sf, filename, violations, imperativeMethods),\n )\n}\n\n// ── Rule 15: accessor-side-effect ─────────────────────────────────\n\nfunction checkAccessorSideEffect(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n const sideEffectNames = new Set(['fetch', 'alert'])\n const consoleMethods = new Set(['log', 'warn', 'error'])\n\n function visit(node: ts.Node): void {\n if (!isInsideViewFunction(node)) {\n ts.forEachChild(node, visit)\n return\n }\n\n // Find arrow functions that are accessors:\n // 1. First arg to text()\n // 2. Prop values in element helpers (e.g. class: s => ...)\n if (ts.isArrowFunction(node)) {\n const isAccessor = isAccessorArrow(node)\n if (isAccessor && node.body) {\n findSideEffectsInAccessor(\n node.body,\n sf,\n filename,\n violations,\n sideEffectNames,\n consoleMethods,\n )\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n}\n\nfunction isAccessorArrow(node: ts.ArrowFunction): boolean {\n const parent = node.parent\n // First arg to text()\n if (\n parent &&\n ts.isCallExpression(parent) &&\n ts.isIdentifier(parent.expression) &&\n parent.expression.text === 'text' &&\n parent.arguments[0] === node\n ) {\n return true\n }\n // Prop value in a property assignment (e.g. class: s => ...)\n if (parent && ts.isPropertyAssignment(parent)) {\n return true\n }\n return false\n}\n\nfunction findSideEffectsInAccessor(\n node: ts.Node,\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n sideEffectNames: Set<string>,\n consoleMethods: Set<string>,\n): void {\n if (ts.isCallExpression(node)) {\n // Check for console.log/warn/error\n if (\n ts.isPropertyAccessExpression(node.expression) &&\n ts.isIdentifier(node.expression.expression) &&\n node.expression.expression.text === 'console' &&\n consoleMethods.has(node.expression.name.text)\n ) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'accessor-side-effect',\n message:\n 'Side effect in accessor function. Accessors run on every state change — move side effects to update() or onEffect.',\n file: filename,\n line,\n column,\n })\n return\n }\n // Check for fetch, alert\n if (ts.isIdentifier(node.expression) && sideEffectNames.has(node.expression.text)) {\n const { line, column } = pos(node, sf)\n violations.push({\n rule: 'accessor-side-effect',\n message:\n 'Side effect in accessor function. Accessors run on every state change — move side effects to update() or onEffect.',\n file: filename,\n line,\n column,\n })\n return\n }\n }\n ts.forEachChild(node, (child) =>\n findSideEffectsInAccessor(child, sf, filename, violations, sideEffectNames, consoleMethods),\n )\n}\n\nfunction collectMsgVariantShapes(type: ts.TypeNode): MsgVariantShape[] {\n const variants: MsgVariantShape[] = []\n\n if (ts.isUnionTypeNode(type)) {\n for (const member of type.types) {\n variants.push(...collectMsgVariantShapes(member))\n }\n return variants\n }\n\n if (ts.isTypeLiteralNode(type)) {\n let typeName = ''\n const fields: string[] = []\n\n for (const member of type.members) {\n if (!ts.isPropertySignature(member)) continue\n if (!member.name || !ts.isIdentifier(member.name)) continue\n\n const fieldName = member.name.text\n const fieldType = member.type ? member.type.getText() : 'unknown'\n\n if (fieldName === 'type') {\n // Extract the literal value as the variant name\n if (\n member.type &&\n ts.isLiteralTypeNode(member.type) &&\n ts.isStringLiteral(member.type.literal)\n ) {\n typeName = member.type.literal.text\n }\n } else {\n fields.push(`${fieldName}:${fieldType}`)\n }\n }\n\n if (typeName && fields.length > 0) {\n fields.sort()\n variants.push({ typeName, shape: fields.join(',') })\n }\n }\n\n return variants\n}\n\n// ── Rule: view-bag-import ──────────────────────────────────────\n\nconst VIEW_BAG_NAMES = new Set(['text', 'each', 'show', 'branch', 'memo', 'selector'])\n\n/**\n * Detect whether the file defines a component. Only in that case does\n * a direct `import { text } from '@llui/dom'` compete with the\n * bag-provided form — in standalone helper modules (Level-1 view\n * functions, shared UI utilities), imports are the only way to\n * reference these primitives and are idiomatic.\n *\n * A `component()` call is sufficient on its own — even if the `view:`\n * callback currently has no parameter, the developer can add one and\n * destructure, so the direct import is still redundant.\n */\nfunction fileDefinesComponent(sf: ts.SourceFile): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === 'component' &&\n node.arguments.length > 0 &&\n ts.isObjectLiteralExpression(node.arguments[0]!)\n ) {\n const obj = node.arguments[0] as ts.ObjectLiteralExpression\n for (const prop of obj.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view'\n ) {\n found = true\n return\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\nfunction checkViewBagImport(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n // Only applies to files that define a component. Helper modules\n // (Level-1 view functions, shared UI utilities) legitimately need\n // to import these names because they have no view bag to destructure.\n if (!fileDefinesComponent(sf)) return\n\n for (const stmt of sf.statements) {\n if (!ts.isImportDeclaration(stmt)) continue\n const moduleSpec = stmt.moduleSpecifier\n if (!ts.isStringLiteral(moduleSpec)) continue\n if (moduleSpec.text !== '@llui/dom') continue\n\n const clause = stmt.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) continue\n\n for (const spec of clause.namedBindings.elements) {\n const name = spec.name.text\n if (VIEW_BAG_NAMES.has(name)) {\n const { line } = sf.getLineAndCharacterOfPosition(spec.getStart())\n violations.push({\n rule: 'view-bag-import',\n message: `Do not import '${name}' from '@llui/dom'. Use the view bag instead: view: ({ ${name}, ... }) => [...]. The view bag version is typed to your component's State.`,\n file: filename,\n line: line + 1,\n column: 0,\n suggestion: `Destructure '${name}' from the view() parameter and pass it to helper functions.`,\n })\n }\n }\n }\n}\n\n// ── Rule: spread-in-children ───────────────────────────────────\n\nfunction checkSpreadInChildren(\n sf: ts.SourceFile,\n filename: string,\n violations: LintViolation[],\n): void {\n const ELEMENT_HELPERS = new Set([\n 'div',\n 'span',\n 'button',\n 'p',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'ul',\n 'ol',\n 'li',\n 'a',\n 'nav',\n 'main',\n 'section',\n 'article',\n 'header',\n 'footer',\n 'form',\n 'fieldset',\n 'table',\n 'thead',\n 'tbody',\n 'tr',\n 'td',\n 'th',\n 'label',\n 'details',\n 'summary',\n ])\n\n function walk(node: ts.Node): void {\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n ELEMENT_HELPERS.has(node.expression.text)\n ) {\n // Check children argument (last array literal).\n // Spread is allowed when the argument is a structural primitive\n // or a context provider — those return Node[] and MUST be spread.\n // Flag only spreads over .map(), .filter(), or arrays.\n //\n // `provide` and `pageSlot` return Node[] the same way each/show/\n // branch do, and the idiomatic pattern is\n // `...provide(Ctx, accessor, () => [...])` as a child. Without\n // this exemption the rule trips on every context-provider use\n // inside a layout's view tree.\n const STRUCTURAL = new Set([\n 'each',\n 'show',\n 'branch',\n 'virtualEach',\n 'onMount',\n 'provide',\n 'pageSlot',\n ])\n for (const arg of node.arguments) {\n if (!ts.isArrayLiteralExpression(arg)) continue\n for (const el of arg.elements) {\n if (!ts.isSpreadElement(el)) continue\n // Allowed: ...each(...), ...show(...), ...branch(...), ...virtualEach(...)\n const inner = el.expression\n if (ts.isCallExpression(inner) && ts.isIdentifier(inner.expression)) {\n if (STRUCTURAL.has(inner.expression.text)) continue\n }\n const { line } = sf.getLineAndCharacterOfPosition(el.getStart())\n violations.push({\n rule: 'spread-in-children',\n message: `Spread in children of '${node.expression.text}()' prevents template-clone optimization. Use each() for lists.`,\n file: filename,\n line: line + 1,\n column: 0,\n suggestion: `Replace '...array.map(...)' with each({ items: () => array, key: ..., render: ... }).`,\n })\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n ts.forEachChild(sf, walk)\n}\n"]}
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAE3B;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CACxD;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,MAAM,CA+D5F;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAG9B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACtD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/vite.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
1
2
|
import { lintIdiomatic } from './index.js';
|
|
2
3
|
/**
|
|
3
4
|
* Rules that are already emitted by `@llui/vite-plugin`'s `diagnose()`.
|
|
@@ -35,23 +36,44 @@ export default function lintIdiomaticPlugin(options = {}) {
|
|
|
35
36
|
let isDev = false;
|
|
36
37
|
return {
|
|
37
38
|
name: 'llui-lint-idiomatic',
|
|
38
|
-
// Run
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
enforce: 'post',
|
|
39
|
+
// Run before other transforms in the same file so if another plugin
|
|
40
|
+
// depends on lint diagnostics they've seen them. The ordering matters
|
|
41
|
+
// only cosmetically — we always re-read the file from disk below, so
|
|
42
|
+
// whatever `code` the pipeline hands us is ignored.
|
|
43
|
+
enforce: 'pre',
|
|
44
44
|
configResolved(config) {
|
|
45
45
|
isDev = config.command === 'serve' || config.mode === 'development';
|
|
46
46
|
},
|
|
47
|
-
transform(
|
|
47
|
+
transform(_code, id) {
|
|
48
48
|
if (devOnly && !isDev)
|
|
49
49
|
return;
|
|
50
50
|
if (!id.endsWith('.ts') && !id.endsWith('.tsx'))
|
|
51
51
|
return;
|
|
52
52
|
if (skip.some((re) => re.test(id)))
|
|
53
53
|
return;
|
|
54
|
-
|
|
54
|
+
// Always lint the original on-disk source, not the current
|
|
55
|
+
// pipeline state. Another vite plugin (notably @llui/vite-plugin)
|
|
56
|
+
// rewrites component bodies before we'd get a chance to see
|
|
57
|
+
// them, and compiler-generated code contains patterns — `++` in
|
|
58
|
+
// row updaters, state-paren calls after prop-split — that
|
|
59
|
+
// trigger false positives against user-facing rules like
|
|
60
|
+
// `state-mutation`. Reading from disk guarantees we only ever
|
|
61
|
+
// see what the author wrote.
|
|
62
|
+
//
|
|
63
|
+
// Strip any query suffix vite may have added (e.g. `?t=123` for
|
|
64
|
+
// cache-busting) before passing the path to readFileSync.
|
|
65
|
+
const cleanPath = id.split('?', 1)[0];
|
|
66
|
+
let source;
|
|
67
|
+
try {
|
|
68
|
+
source = readFileSync(cleanPath, 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Virtual modules, not-yet-written files, anything without a
|
|
72
|
+
// readable on-disk path — skip silently. These aren't user
|
|
73
|
+
// source and aren't meaningful targets for idiomatic lint.
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const result = lintIdiomatic(source, id, { exclude });
|
|
55
77
|
if (onLint)
|
|
56
78
|
onLint(id, result);
|
|
57
79
|
if (result.violations.length === 0)
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFileSync } from 'node:fs'\nimport type { Plugin } from 'vite'\nimport { lintIdiomatic, type LintResult } from './index.js'\n\nexport interface LintIdiomaticPluginOptions {\n /**\n * Rule names to skip. By default, rules that overlap with\n * `@llui/vite-plugin`'s built-in `diagnose()` pass are excluded to\n * avoid duplicate warnings when both plugins run together.\n */\n exclude?: readonly string[]\n\n /**\n * Glob patterns to skip. Files matching any pattern are not linted.\n * Defaults to `['**\\/node_modules/**', '**\\/dist/**']`.\n */\n skip?: readonly RegExp[]\n\n /**\n * Run in dev mode only (default `false` — runs in both dev and build).\n * Set to `true` if lint warnings slow your build pipeline.\n */\n devOnly?: boolean\n\n /**\n * Fail the build on any violation. Default `false` — violations are\n * emitted as warnings.\n */\n failOnError?: boolean\n\n /**\n * Called after each linted file with its result. Useful for counting\n * violations across the whole build (e.g. a summary reporter).\n */\n onLint?: (filename: string, result: LintResult) => void\n}\n\n/**\n * Rules that are already emitted by `@llui/vite-plugin`'s `diagnose()`.\n * Excluded by default so users running both plugins don't see the same\n * warning twice. Override with an explicit `exclude: []` to re-enable.\n */\nconst DEFAULT_EXCLUDES: readonly string[] = ['map-on-state-array']\n\nconst DEFAULT_SKIP: readonly RegExp[] = [/\\/node_modules\\//, /\\/dist\\//]\n\n/**\n * Vite plugin that runs `@llui/lint-idiomatic` on every `.ts`/`.tsx`\n * file and emits violations as Vite warnings. Warnings show up in the\n * dev server overlay and CI output via Vite's `this.warn()`.\n *\n * Usage:\n *\n * ```ts\n * import llui from '@llui/vite-plugin'\n * import lintIdiomatic from '@llui/lint-idiomatic/vite'\n *\n * export default {\n * plugins: [llui(), lintIdiomatic()],\n * }\n * ```\n *\n * Composes naturally with `@llui/vite-plugin` — runs in the `transform`\n * hook with no ordering requirement. The default `exclude` list skips\n * rules that vite-plugin already emits.\n */\nexport default function lintIdiomaticPlugin(options: LintIdiomaticPluginOptions = {}): Plugin {\n const exclude = options.exclude ?? DEFAULT_EXCLUDES\n const skip = options.skip ?? DEFAULT_SKIP\n const failOnError = options.failOnError ?? false\n const devOnly = options.devOnly ?? false\n const onLint = options.onLint\n\n let isDev = false\n\n return {\n name: 'llui-lint-idiomatic',\n // Run before other transforms in the same file so if another plugin\n // depends on lint diagnostics they've seen them. The ordering matters\n // only cosmetically — we always re-read the file from disk below, so\n // whatever `code` the pipeline hands us is ignored.\n enforce: 'pre',\n\n configResolved(config) {\n isDev = config.command === 'serve' || config.mode === 'development'\n },\n\n transform(_code, id) {\n if (devOnly && !isDev) return\n if (!id.endsWith('.ts') && !id.endsWith('.tsx')) return\n if (skip.some((re) => re.test(id))) return\n\n // Always lint the original on-disk source, not the current\n // pipeline state. Another vite plugin (notably @llui/vite-plugin)\n // rewrites component bodies before we'd get a chance to see\n // them, and compiler-generated code contains patterns — `++` in\n // row updaters, state-paren calls after prop-split — that\n // trigger false positives against user-facing rules like\n // `state-mutation`. Reading from disk guarantees we only ever\n // see what the author wrote.\n //\n // Strip any query suffix vite may have added (e.g. `?t=123` for\n // cache-busting) before passing the path to readFileSync.\n const cleanPath = id.split('?', 1)[0]!\n let source: string\n try {\n source = readFileSync(cleanPath, 'utf-8')\n } catch {\n // Virtual modules, not-yet-written files, anything without a\n // readable on-disk path — skip silently. These aren't user\n // source and aren't meaningful targets for idiomatic lint.\n return\n }\n\n const result = lintIdiomatic(source, id, { exclude })\n if (onLint) onLint(id, result)\n if (result.violations.length === 0) return\n\n for (const v of result.violations) {\n const hint = v.suggestion ? ` Suggestion: ${v.suggestion}` : ''\n const message = `[${v.rule}] ${v.message}${hint}`\n if (failOnError) {\n this.error(message, { line: v.line, column: v.column })\n } else {\n this.warn(message, { line: v.line, column: v.column })\n }\n }\n },\n }\n}\n\n// Named export for callers that want to import { lintIdiomaticPlugin }\nexport { lintIdiomaticPlugin }\n\n// Re-export the pure function + types so users only need one import\nexport { lintIdiomatic, RULE_NAMES } from './index.js'\nexport type { LintResult, LintViolation, LintOptions, RuleName } from './index.js'\n"]}
|