@colrealpro/react-luau-doctor 0.20.0 → 0.20.1
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/CHANGELOG.md +7 -0
- package/dist/cli.js +511 -142
- package/dist/cli.js.map +10 -8
- package/dist/config.schema.json +3 -3
- package/dist/scan-worker.js +510 -141
- package/dist/scan-worker.js.map +10 -8
- package/package.json +1 -1
package/dist/cli.js.map
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/cli.ts", "../src/config.ts", "../src/ast/walk.ts", "../src/ast/local-values.ts", "../src/rules/helpers.ts", "../src/rules/binding-rules.ts", "../src/rules/no-call-component-as-function.ts", "../src/module-resolution.ts", "../src/rules/parameter-mutations.ts", "../src/rules/no-mutating-state-updater.ts", "../src/rules/usememo-must-return.ts", "../src/rules/examples.ts", "../src/roblox-semantics.ts", "../src/rules/effect-needs-cleanup.ts", "../src/rules/effect-state-rules.ts", "../src/rules/dependency-tables.ts", "../src/rules/exhaustive-deps.ts", "../src/parser-compat.ts", "../src/rules/collection-key-kind.ts", "../src/rules/no-array-index-as-key.ts", "../src/rules/no-create-context-in-render.ts", "../src/rules/no-nested-component-definition.ts", "../src/rules/no-prop-mutation.ts", "../src/rules/no-static-name-prop.ts", "../src/rules/no-random-key.ts", "../src/rules/no-set-state-in-render.ts", "../src/rules/parse-errors.ts", "../src/rules/performance-rules.ts", "../src/rules/prefer-binding-over-state.ts", "../src/rules/react-roblox-lifecycle.ts", "../src/rules/ref-rules.ts", "../src/rules/render-side-effects.ts", "../src/rules/rules-of-hooks.ts", "../src/rules/state-performance.ts", "../src/rules/unstable-context-value.ts", "../src/rules/index.ts", "../src/ci.ts", "../src/files.ts", "../src/git.ts", "../src/reporter.ts", "../src/scope.ts", "../src/scanner.ts", "../src/cache.ts", "../src/file-analysis.ts", "../src/ast/context.ts", "../src/ast/react-model.ts", "../src/inline-disables.ts", "../src/parser.ts", "../src/parallel.ts", "../src/project-model.ts", "../src/project-effects.ts", "../src/update-check.ts", "../src/update-install.ts", "../src/presentation.ts", "../src/fix-preview.ts", "../src/why.ts", "../src/progress.ts"],
|
|
3
|
+
"sources": ["../src/cli.ts", "../src/config.ts", "../src/ast/walk.ts", "../src/ast/local-values.ts", "../src/rules/helpers.ts", "../src/rules/binding-rules.ts", "../src/rules/no-call-component-as-function.ts", "../src/module-resolution.ts", "../src/rules/parameter-mutations.ts", "../src/rules/no-mutating-state-updater.ts", "../src/rules/usememo-must-return.ts", "../src/rules/examples.ts", "../src/roblox-semantics.ts", "../src/rules/effect-needs-cleanup.ts", "../src/api-reference.ts", "../src/ast/value-identity.ts", "../src/rules/effect-state-rules.ts", "../src/rules/dependency-tables.ts", "../src/rules/exhaustive-deps.ts", "../src/parser-compat.ts", "../src/rules/collection-key-kind.ts", "../src/rules/no-array-index-as-key.ts", "../src/rules/no-create-context-in-render.ts", "../src/rules/no-nested-component-definition.ts", "../src/rules/no-prop-mutation.ts", "../src/rules/no-static-name-prop.ts", "../src/rules/no-random-key.ts", "../src/rules/no-set-state-in-render.ts", "../src/rules/parse-errors.ts", "../src/rules/performance-rules.ts", "../src/rules/prefer-binding-over-state.ts", "../src/rules/react-roblox-lifecycle.ts", "../src/rules/ref-rules.ts", "../src/rules/render-side-effects.ts", "../src/rules/rules-of-hooks.ts", "../src/rules/state-performance.ts", "../src/rules/unstable-context-value.ts", "../src/rules/index.ts", "../src/ci.ts", "../src/files.ts", "../src/git.ts", "../src/reporter.ts", "../src/scope.ts", "../src/scanner.ts", "../src/cache.ts", "../src/file-analysis.ts", "../src/ast/context.ts", "../src/ast/react-model.ts", "../src/inline-disables.ts", "../src/parser.ts", "../src/parallel.ts", "../src/project-model.ts", "../src/project-effects.ts", "../src/update-check.ts", "../src/update-install.ts", "../src/presentation.ts", "../src/fix-preview.ts", "../src/why.ts", "../src/progress.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"#!/usr/bin/env bun\r\n\r\nimport fs from \"node:fs\";\r\nimport os from \"node:os\";\r\nimport path from \"node:path\";\r\nimport packageJson from \"../package.json\";\r\n\r\nimport {\r\n effectiveSeverity,\r\n loadConfigWithSource,\r\n normalizeCategory,\r\n normalizeRuleSetting,\r\n writeConfig,\r\n} from \"./config\";\r\n\r\nimport { runCiCommand } from \"./ci\";\r\n\r\nimport {\r\n checkForUpdatesNow,\r\n fetchChangelogReleases,\r\n getCachedUpdateNotice,\r\n refreshUpdateCache,\r\n startBackgroundUpdateRefresh,\r\n type ChangelogRelease,\r\n} from \"./update-check\";\r\n\r\nimport {\r\n currentUpdateInstallCommand,\r\n installLatestVersion,\r\n} from \"./update-install\";\r\n\r\nimport {\r\n WHY_ANSI, WHY_THEME, whyPaint, whySectionTitle, wrapWhyWords,\r\n renderWhyFixPreview, renderWhyDiagnostic,\r\n} from \"./why\";\r\nimport { createProgressRenderer } from \"./progress\";\r\nimport { createInlineSuppressionChecker } from \"./inline-disables\";\r\n\r\nimport {\r\n renderAnnotations,\r\n renderRulesList,\r\n renderTextReport,\r\n} from \"./reporter\";\r\n\r\nimport { rules } from \"./rules\";\r\nimport { scanPath } from \"./scanner\";\r\nimport { aggregateReports, scanProjectWithScope } from \"./scope\";\r\n\r\nimport type {\r\n BlockingLevel,\r\n Category,\r\n Diagnostic,\r\n DoctorConfig,\r\n RuleDefinition,\r\n ScanProgress,\r\n ScanReport,\r\n ScanScope,\r\n Severity,\r\n} from \"./types\";\r\n\r\ninterface CliOptions {\r\n target: string;\r\n verbose?: boolean;\r\n debug: boolean;\r\n outputDir?: string;\r\n scoreOnly: boolean;\r\n json: boolean;\r\n jsonCompact: boolean;\r\n jsonOut?: string;\r\n project?: string;\r\n scope?: ScanScope;\r\n base?: string;\r\n includeUntracked: boolean;\r\n diff?: boolean | string;\r\n changedFilesFrom?: string;\r\n showScore?: boolean;\r\n categories: Category[];\r\n staged: boolean;\r\n maxDurationSeconds?: number;\r\n blocking?: BlockingLevel;\r\n respectInlineDisables?: boolean;\r\n warnings?: boolean;\r\n noColor: boolean;\r\n noCache: boolean;\r\n noParallel: boolean;\r\n noUpdateCheck: boolean;\r\n annotations: boolean;\r\n minSeverity?: Severity;\r\n help: boolean;\r\n version: boolean;\r\n}\r\n\r\nconst VERSION = packageJson.version;\r\nconst SCOPES = new Set<ScanScope>([\"full\", \"files\", \"changed\", \"lines\"]);\r\nconst BLOCKING = new Set<BlockingLevel>([\"error\", \"warning\", \"none\"]);\r\nconst SEVERITIES = new Set<Severity>([\"suggestion\", \"warning\", \"error\"]);\r\n\r\nprocess.stdout.on(\"error\", (error: Error & { code?: string }) => {\r\n if (error.code === \"EPIPE\") process.exit(0);\r\n\r\n throw error;\r\n});\r\n\r\nfunction usage(): string {\r\n return `React-Luau Doctor ${VERSION}\r\n\r\nUsage:\r\n react-luau-doctor [directory] [options]\r\n react-luau-doctor ci <install|config|upgrade>\r\n react-luau-doctor why <file:line>\r\n react-luau-doctor update [--check]\r\n react-luau-doctor rules <command>\r\n\r\nScan options:\r\n --verbose Show every finding and per-file details\r\n --debug Print resolved local scan details to stderr\r\n --output-dir <dir> Write report.json, diagnostics.json, and summary.json\r\n --score Output only the numeric score\r\n --json Output one structured JSON report\r\n --json-compact Emit compact JSON instead of indented JSON\r\n --json-out <path> Write the JSON report to a file\r\n --project <name> Select project directories, comma-separated\r\n --scope <value> full, files, changed, or lines\r\n --base <ref> Git base ref for files/changed/lines scope\r\n --include-untracked Include untracked files in git scopes\r\n --diff [base] Alias for changed scope; false forces full scope\r\n --changed-files-from <file> Read changed paths from a newline-delimited file\r\n --no-score Hide the local score\r\n --category <category> Only report a category; repeatable\r\n --staged Scan staged git-index content only\r\n --max-duration <seconds> Stop after a shared scan time budget and report partial results\r\n --blocking <level> Exit gate: error, warning, or none\r\n --respect-inline-disables Respect react-luau-doctor inline suppression comments\r\n --no-respect-inline-disables Ignore inline suppressions for audit scans\r\n --warnings / --no-warnings Show warnings (default) or errors only\r\n --annotations Emit GitHub Actions workflow annotations\r\n --no-color Disable automatic ANSI colors\r\n --no-cache Disable the persistent OS-level analysis cache\r\n --no-parallel Disable parallel file analysis\r\n --no-update-check Disable the automatic update notice\r\n\r\nReact-Luau Doctor options:\r\n --min-severity <level> suggestion, warning, or error\r\n -v, --version Print the version\r\n -h, --help Show this help\r\n\r\nCI commands:\r\n ci install [--provider github|gitlab] [--pr] [--blocking <level>] [--scope <value>] [reporting toggles] [-y] [--cwd <cwd>]\r\n ci config [--provider github|gitlab] [--blocking <level>] [--scope <value>] [reporting toggles] [-y] [--cwd <cwd>]\r\n ci upgrade [--provider github|gitlab] [--pr] [-y] [--cwd <cwd>]\r\n Reporting toggles: --comment/--no-comment, --review-comments/--no-review-comments, --commit-status/--no-commit-status\r\n\r\nUpdate commands:\r\n update Update the global installation to the latest release\r\n update --check Check npm and show release notes without updating\r\n\r\nRules commands:\r\n rules list [--category <name>] [--configured] [--json]\r\n rules explain <rule> [--json]\r\n rules set <rule> <severity>\r\n rules enable <rule> [--severity <level>]\r\n rules disable <rule>\r\n rules category <category> <severity>\r\n\r\nConfig:\r\n react-luau-doctor.config.json\r\n`;\r\n}\r\n\r\nfunction automaticUpdateNoticeEnabled(\r\n options: CliOptions,\r\n machineReadable: boolean,\r\n): boolean {\r\n return (\r\n !options.noUpdateCheck &&\r\n !machineReadable &&\r\n Boolean(process.stdout.isTTY) &&\r\n !process.env.CI &&\r\n process.env.NO_UPDATE_NOTIFIER === undefined &&\r\n process.env.REACT_LUAU_DOCTOR_NO_UPDATE_CHECK === undefined\r\n );\r\n}\r\n\r\nfunction renderUpdateHeader(\r\n current: string,\r\n latest: string,\r\n colorized: boolean,\r\n): string {\r\n const label = whyPaint(\r\n colorized,\r\n \"Update available:\",\r\n WHY_ANSI.bold,\r\n WHY_ANSI.yellow,\r\n );\r\n\r\n const oldVersion = whyPaint(colorized, `v${current}`, WHY_ANSI.dim);\r\n const newVersion = whyPaint(colorized, `v${latest}`, WHY_ANSI.bold);\r\n\r\n return `${label} ${oldVersion} → ${newVersion}`;\r\n}\r\n\r\nfunction renderUpdateNotice(\r\n current: string,\r\n latest: string,\r\n colorized: boolean,\r\n): string {\r\n return `${renderUpdateHeader(current, latest, colorized)}\\nRun \\`react-luau-doctor update --check\\` to see what's new.`;\r\n}\r\n\r\nfunction renderChangelogInline(\r\n value: string,\r\n colorized: boolean,\r\n ...baseCodes: string[]\r\n): string {\r\n if (!colorized) return value;\r\n\r\n const parts: string[] = [];\r\n let offset = 0;\r\n\r\n for (const match of value.matchAll(/`([^`\\n]+)`/g)) {\r\n const index = match.index ?? 0;\r\n\r\n if (index > offset)\r\n parts.push(whyPaint(true, value.slice(offset, index), ...baseCodes));\r\n\r\n parts.push(whyPaint(true, match[1], WHY_THEME.variable));\r\n offset = index + match[0].length;\r\n }\r\n\r\n if (parts.length === 0) return whyPaint(true, value, ...baseCodes);\r\n\r\n if (offset < value.length)\r\n parts.push(whyPaint(true, value.slice(offset), ...baseCodes));\r\n\r\n return parts.join(\"\");\r\n}\r\n\r\nfunction renderChangelogNotes(notes: string, colorized: boolean): string {\r\n return notes\r\n .split(/\\r?\\n/)\r\n .map((line) => {\r\n const heading = /^#{3,6}\\s+(.+)$/.exec(line.trim());\r\n\r\n if (heading)\r\n return renderChangelogInline(heading[1], colorized, WHY_ANSI.bold);\r\n\r\n const bullet = /^(\\s*)[-*]\\s+(.+)$/.exec(line);\r\n\r\n if (bullet)\r\n return `${bullet[1] || \" \"}• ${renderChangelogInline(bullet[2], colorized)}`;\r\n\r\n return renderChangelogInline(line, colorized);\r\n })\r\n .join(\"\\n\")\r\n .trim();\r\n}\r\n\r\nfunction renderUpdateCheck(\r\n current: string,\r\n latest: string,\r\n releases: ChangelogRelease[],\r\n releaseNotesUnavailable: boolean,\r\n colorized: boolean,\r\n): string {\r\n const lines = [\r\n renderUpdateHeader(current, latest, colorized),\r\n \"\",\r\n whyPaint(colorized, \"What's new\", WHY_ANSI.bold),\r\n ];\r\n\r\n if (releaseNotesUnavailable) {\r\n lines.push(\" Release notes could not be loaded from GitHub.\");\r\n } else if (releases.length === 0) {\r\n lines.push(\" No changelog entries were found between these versions.\");\r\n } else {\r\n for (const release of releases) {\r\n lines.push(\"\", whyPaint(colorized, `v${release.version}`, WHY_ANSI.bold));\r\n const notes = renderChangelogNotes(release.notes, colorized);\r\n\r\n if (notes) lines.push(notes);\r\n }\r\n }\r\n\r\n lines.push(\"\", \"Run `react-luau-doctor update` to update.\");\r\n\r\n return lines.join(\"\\n\");\r\n}\r\n\r\nasync function runUpdateCommand(argv: string[]): Promise<void> {\r\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\r\n process.stdout.write(\"Usage: react-luau-doctor update [--check]\\n\");\r\n\r\n return;\r\n }\r\n\r\n if (argv.length > 1 || (argv.length === 1 && argv[0] !== \"--check\")) {\r\n throw new Error(\"Usage: react-luau-doctor update [--check]\");\r\n }\r\n\r\n const result = await checkForUpdatesNow(VERSION);\r\n\r\n if (!result.updateAvailable) {\r\n process.stdout.write(`React-Luau Doctor v${VERSION} is up to date.\\n`);\r\n\r\n return;\r\n }\r\n\r\n const colorized = shouldUseColor(false, false);\r\n\r\n if (argv[0] === \"--check\") {\r\n let releases: ChangelogRelease[] = [];\r\n let releaseNotesUnavailable = false;\r\n\r\n try {\r\n releases = await fetchChangelogReleases(VERSION, result.latest);\r\n } catch {\r\n releaseNotesUnavailable = true;\r\n }\r\n\r\n process.stdout.write(\r\n `${renderUpdateCheck(VERSION, result.latest, releases, releaseNotesUnavailable, colorized)}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n const command = currentUpdateInstallCommand();\r\n\r\n if (!command) {\r\n throw new Error(\r\n `Could not determine the global package manager for this installation. Run \\`npm install -g ${packageJson.name}@latest\\` manually.`,\r\n );\r\n }\r\n\r\n const label = whyPaint(\r\n colorized,\r\n \"Updating React-Luau Doctor:\",\r\n WHY_ANSI.bold,\r\n WHY_ANSI.yellow,\r\n );\r\n\r\n const oldVersion = whyPaint(colorized, `v${VERSION}`, WHY_ANSI.dim);\r\n const newVersion = whyPaint(colorized, `v${result.latest}`, WHY_ANSI.bold);\r\n\r\n process.stdout.write(\r\n `${label} ${oldVersion} → ${newVersion}\\nUsing \\`${command.display}\\`\\n\\n`,\r\n );\r\n\r\n installLatestVersion(command);\r\n process.stdout.write(`\\nUpdated React-Luau Doctor to v${result.latest}.\\n`);\r\n}\r\n\r\nfunction splitLongOption(arg: string): { name: string; inlineValue?: string } {\r\n if (!arg.startsWith(\"--\")) return { name: arg };\r\n\r\n const equals = arg.indexOf(\"=\");\r\n\r\n if (equals < 0) return { name: arg };\r\n\r\n return { name: arg.slice(0, equals), inlineValue: arg.slice(equals + 1) };\r\n}\r\n\r\nfunction requiredValue(\r\n argv: string[],\r\n index: number,\r\n name: string,\r\n inlineValue?: string,\r\n): { value: string; nextIndex: number } {\r\n if (inlineValue !== undefined) {\r\n if (!inlineValue) throw new Error(`${name} requires a value`);\r\n\r\n return { value: inlineValue, nextIndex: index };\r\n }\r\n\r\n const value = argv[index + 1];\r\n\r\n if (!value || value.startsWith(\"-\"))\r\n throw new Error(`${name} requires a value`);\r\n\r\n return { value, nextIndex: index + 1 };\r\n}\r\n\r\nfunction shouldUseColor(noColor = false, machineReadable = false): boolean {\r\n return (\r\n !noColor &&\r\n !machineReadable &&\r\n process.env.NO_COLOR === undefined &&\r\n Boolean(process.stdout.isTTY)\r\n );\r\n}\r\n\r\nfunction whyTextWidth(): number {\r\n return Math.max(60, (process.stdout.columns ?? 120) - 2);\r\n}\r\n\r\nfunction parseBlocking(value: string, name: string): BlockingLevel {\r\n if (!BLOCKING.has(value as BlockingLevel))\r\n throw new Error(`${name} must be error, warning, or none`);\r\n\r\n return value as BlockingLevel;\r\n}\r\n\r\nfunction parseArgs(argv: string[]): CliOptions {\r\n const options: CliOptions = {\r\n target: \".\",\r\n debug: false,\r\n scoreOnly: false,\r\n json: false,\r\n jsonCompact: false,\r\n includeUntracked: false,\r\n categories: [],\r\n staged: false,\r\n annotations: false,\r\n noColor: false,\r\n noCache: false,\r\n noParallel: false,\r\n noUpdateCheck: false,\r\n help: false,\r\n version: false,\r\n };\r\n\r\n let sawTarget = false;\r\n\r\n for (let index = 0; index < argv.length; index += 1) {\r\n const raw = argv[index];\r\n const { name: arg, inlineValue } = splitLongOption(raw);\r\n\r\n if (arg === \"--verbose\") options.verbose = true;\r\n else if (arg === \"--debug\") options.debug = true;\r\n else if (arg === \"--score\") options.scoreOnly = true;\r\n else if (arg === \"--json\") options.json = true;\r\n else if (arg === \"--json-compact\") options.jsonCompact = true;\r\n else if (arg === \"--include-untracked\") options.includeUntracked = true;\r\n else if (arg === \"--no-score\") options.showScore = false;\r\n else if (arg === \"--staged\") options.staged = true;\r\n else if (arg === \"--no-respect-inline-disables\")\r\n options.respectInlineDisables = false;\r\n else if (arg === \"--respect-inline-disables\")\r\n options.respectInlineDisables = true;\r\n else if (arg === \"--warnings\") options.warnings = true;\r\n else if (arg === \"--no-warnings\") options.warnings = false;\r\n else if (arg === \"--no-color\") options.noColor = true;\r\n else if (arg === \"--no-cache\") options.noCache = true;\r\n else if (arg === \"--no-parallel\") options.noParallel = true;\r\n else if (arg === \"--no-update-check\") options.noUpdateCheck = true;\r\n else if (arg === \"--annotations\") options.annotations = true;\r\n else if (arg === \"--help\" || arg === \"-h\") options.help = true;\r\n else if (arg === \"--version\" || arg === \"-v\") options.version = true;\r\n else if (arg === \"--output-dir\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n options.outputDir = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--json-out\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n options.jsonOut = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--project\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n options.project = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--scope\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n\r\n if (!SCOPES.has(parsed.value as ScanScope))\r\n throw new Error(\"--scope must be full, files, changed, or lines\");\r\n\r\n options.scope = parsed.value as ScanScope;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--base\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n options.base = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--diff\") {\r\n if (inlineValue !== undefined)\r\n options.diff =\r\n inlineValue === \"false\"\r\n ? false\r\n : inlineValue === \"true\"\r\n ? true\r\n : inlineValue;\r\n else {\r\n const next = argv[index + 1];\r\n\r\n if (next && !next.startsWith(\"-\")) {\r\n options.diff =\r\n next === \"false\" ? false : next === \"true\" ? true : next;\r\n\r\n index += 1;\r\n } else options.diff = true;\r\n }\r\n } else if (arg === \"--changed-files-from\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n options.changedFilesFrom = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--category\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n const category = normalizeCategory(parsed.value);\r\n\r\n if (!category) throw new Error(`Unknown category: ${parsed.value}`);\r\n\r\n options.categories.push(category);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--max-duration\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n const seconds = Number(parsed.value);\r\n\r\n if (!Number.isFinite(seconds) || seconds <= 0)\r\n throw new Error(\"--max-duration must be a positive number of seconds\");\r\n\r\n options.maxDurationSeconds = seconds;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--blocking\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n options.blocking = parseBlocking(parsed.value, arg);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--min-severity\") {\r\n const parsed = requiredValue(argv, index, arg, inlineValue);\r\n\r\n if (!SEVERITIES.has(parsed.value as Severity))\r\n throw new Error(\"--min-severity must be suggestion, warning, or error\");\r\n\r\n options.minSeverity = parsed.value as Severity;\r\n index = parsed.nextIndex;\r\n } else if (arg.startsWith(\"-\")) {\r\n throw new Error(`Unknown option: ${raw}`);\r\n } else if (!sawTarget) {\r\n options.target = raw;\r\n sawTarget = true;\r\n } else {\r\n throw new Error(`Unexpected argument: ${raw}`);\r\n }\r\n }\r\n\r\n return options;\r\n}\r\n\r\nfunction resolveScope(\r\n options: CliOptions,\r\n config: DoctorConfig,\r\n): { scope: ScanScope; base?: string } {\r\n if (options.scope)\r\n return { scope: options.scope, base: options.base ?? config.base };\r\n\r\n if (options.diff !== undefined) {\r\n if (options.diff === false)\r\n return { scope: \"full\", base: options.base ?? config.base };\r\n\r\n return {\r\n scope: \"changed\",\r\n\r\n base:\r\n options.base ??\r\n (typeof options.diff === \"string\" ? options.diff : config.base),\r\n };\r\n }\r\n\r\n if (config.scope)\r\n return { scope: config.scope, base: options.base ?? config.base };\r\n\r\n if (config.diff !== undefined) {\r\n if (config.diff === false)\r\n return { scope: \"full\", base: options.base ?? config.base };\r\n\r\n return {\r\n scope: \"changed\",\r\n\r\n base:\r\n options.base ??\r\n (typeof config.diff === \"string\" ? config.diff : config.base),\r\n };\r\n }\r\n\r\n if (options.changedFilesFrom)\r\n return { scope: \"files\", base: options.base ?? config.base };\r\n\r\n return { scope: \"full\", base: options.base ?? config.base };\r\n}\r\n\r\nfunction validateModeFlags(options: CliOptions, scope: ScanScope): void {\r\n if (options.scope && options.diff !== undefined && options.diff !== false)\r\n throw new Error(\"Cannot combine --scope and --diff. Pick one mode\");\r\n\r\n if (options.staged && options.diff !== undefined && options.diff !== false)\r\n throw new Error(\"Cannot combine --staged and --diff. Pick one mode\");\r\n\r\n if (options.staged && (scope === \"full\" || scope === \"changed\")) {\r\n throw new Error(\r\n `Cannot combine --staged with --scope ${scope}. Use --scope files or --scope lines, or omit --scope`,\r\n );\r\n }\r\n\r\n if (options.includeUntracked && options.staged)\r\n throw new Error(\r\n \"Cannot combine --include-untracked with --staged. The git index never holds untracked files\",\r\n );\r\n\r\n if (options.includeUntracked && scope === \"full\")\r\n throw new Error(\r\n \"--include-untracked requires files, changed, or lines scope\",\r\n );\r\n\r\n if (options.scoreOnly && options.json)\r\n throw new Error(\"Cannot combine --score and --json. Pick one output mode\");\r\n\r\n if (options.scoreOnly && options.showScore === false)\r\n throw new Error(\"Cannot combine --score with --no-score\");\r\n\r\n if (options.annotations && (options.json || options.scoreOnly))\r\n throw new Error(\"--annotations cannot be combined with --json or --score\");\r\n}\r\n\r\nfunction findProjectByName(root: string, name: string): string | null {\r\n const direct = path.resolve(root, name);\r\n\r\n if (fs.existsSync(direct) && fs.statSync(direct).isDirectory()) return direct;\r\n\r\n const ignored = new Set([\r\n \".git\",\r\n \"node_modules\",\r\n \"Packages\",\r\n \"DevPackages\",\r\n \"ServerPackages\",\r\n \"dist\",\r\n \"vendor\",\r\n ]);\r\n\r\n const queue: Array<{ directory: string; depth: number }> = [\r\n { directory: root, depth: 0 },\r\n ];\r\n\r\n const matches: string[] = [];\r\n\r\n while (queue.length > 0) {\r\n const current = queue.shift()!;\r\n\r\n if (current.depth >= 3) continue;\r\n\r\n for (const entry of fs.readdirSync(current.directory, {\r\n withFileTypes: true,\r\n })) {\r\n if (!entry.isDirectory() || ignored.has(entry.name)) continue;\r\n\r\n const absolute = path.join(current.directory, entry.name);\r\n\r\n if (entry.name === name) matches.push(absolute);\r\n\r\n queue.push({ directory: absolute, depth: current.depth + 1 });\r\n }\r\n }\r\n\r\n if (matches.length > 1)\r\n throw new Error(\r\n `Project selector \"${name}\" is ambiguous: ${matches.map((match) => path.relative(root, match)).join(\", \")}`,\r\n );\r\n\r\n return matches[0] ?? null;\r\n}\r\n\r\nfunction resolveProjectRoots(\r\n root: string,\r\n projectFlag: string | undefined,\r\n config: DoctorConfig,\r\n): string[] {\r\n const requested = projectFlag\r\n ? projectFlag\r\n .split(\",\")\r\n .map((value) => value.trim())\r\n .filter(Boolean)\r\n : (config.projects ?? []);\r\n\r\n if (requested.length === 0) return [root];\r\n\r\n return [\r\n ...new Set(\r\n requested.map((project) => {\r\n const resolved = findProjectByName(root, project);\r\n\r\n if (!resolved) throw new Error(`Could not find project: ${project}`);\r\n\r\n return resolved;\r\n }),\r\n ),\r\n ];\r\n}\r\n\r\nfunction serializeReport(report: ScanReport, compact: boolean): string {\r\n return compact ? JSON.stringify(report) : JSON.stringify(report, null, 2);\r\n}\r\n\r\nfunction writeJsonFile(\r\n filename: string,\r\n value: unknown,\r\n compact = false,\r\n): void {\r\n fs.mkdirSync(path.dirname(filename), { recursive: true });\r\n\r\n fs.writeFileSync(\r\n filename,\r\n `${compact ? JSON.stringify(value) : JSON.stringify(value, null, 2)}\\n`,\r\n );\r\n}\r\n\r\nfunction writeDiagnosticsDump(directory: string, report: ScanReport): void {\r\n fs.mkdirSync(directory, { recursive: true });\r\n writeJsonFile(path.join(directory, \"report.json\"), report);\r\n writeJsonFile(path.join(directory, \"diagnostics.json\"), report.diagnostics);\r\n\r\n writeJsonFile(path.join(directory, \"summary.json\"), {\r\n schemaVersion: report.schemaVersion,\r\n root: report.root,\r\n scope: report.scope ?? \"full\",\r\n base: report.base ?? null,\r\n scannedFiles: report.scannedFiles,\r\n candidateFiles: report.candidateFiles,\r\n partial: report.partial,\r\n skippedFiles: report.skippedFiles ?? [],\r\n durationMs: report.durationMs,\r\n score: report.score,\r\n counts: report.counts,\r\n });\r\n}\r\n\r\nfunction shouldBlock(report: ScanReport, level: BlockingLevel): boolean {\r\n if (level === \"none\") return false;\r\n\r\n if (level === \"warning\")\r\n return report.counts.error > 0 || report.counts.warning > 0;\r\n\r\n return report.counts.error > 0;\r\n}\r\n\r\nfunction findRule(requested: string): RuleDefinition {\r\n const rule = rules.find(\r\n (candidate) =>\r\n candidate.id === requested || candidate.id.endsWith(`/${requested}`),\r\n );\r\n\r\n if (!rule) throw new Error(`Unknown rule: ${requested}`);\r\n\r\n return rule;\r\n}\r\n\r\nfunction parseCommandCwd(argv: string[]): { cwd: string; remaining: string[] } {\r\n let cwd = process.cwd();\r\n const remaining: string[] = [];\r\n\r\n for (let index = 0; index < argv.length; index += 1) {\r\n const arg = argv[index];\r\n\r\n if (arg === \"-c\" || arg === \"--cwd\") {\r\n const value = argv[++index];\r\n\r\n if (!value) throw new Error(`${arg} requires a path`);\r\n\r\n cwd = path.resolve(value);\r\n } else remaining.push(arg);\r\n }\r\n\r\n return { cwd, remaining };\r\n}\r\n\r\nfunction ruleSeverityMap(config: DoctorConfig): Map<string, string> {\r\n return new Map(\r\n rules.map((rule) => [\r\n rule.id,\r\n effectiveSeverity(rule.severity, rule.id, config) ?? \"off\",\r\n ]),\r\n );\r\n}\r\n\r\nfunction runRulesCommand(argv: string[]): void {\r\n const noColor = argv.includes(\"--no-color\");\r\n const cleaned = argv.filter((arg) => arg !== \"--no-color\");\r\n const action = cleaned[0] ?? \"list\";\r\n const { cwd, remaining } = parseCommandCwd(cleaned.slice(1));\r\n const loaded = loadConfigWithSource(cwd);\r\n const config = loaded.config;\r\n\r\n if (action === \"list\") {\r\n let category: Category | null = null;\r\n let configured = false;\r\n let json = false;\r\n\r\n for (let index = 0; index < remaining.length; index += 1) {\r\n const arg = remaining[index];\r\n\r\n if (arg === \"--configured\") configured = true;\r\n else if (arg === \"--json\") json = true;\r\n else if (arg === \"--category\") {\r\n const value = remaining[++index];\r\n\r\n if (!value) throw new Error(\"rules list --category requires a name\");\r\n\r\n category = normalizeCategory(value);\r\n\r\n if (!category) throw new Error(`Unknown category: ${value}`);\r\n } else throw new Error(`Unknown rules list option: ${arg}`);\r\n }\r\n\r\n const severityMap = ruleSeverityMap(config);\r\n\r\n const filtered = rules.filter((rule) => {\r\n if (category && rule.category !== category) return false;\r\n\r\n if (configured && config.rules?.[rule.id] === undefined) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (json) {\r\n process.stdout.write(\r\n `${JSON.stringify(\r\n filtered.map((rule) => ({\r\n id: rule.id,\r\n severity: severityMap.get(rule.id),\r\n defaultSeverity: rule.severity,\r\n category: rule.category,\r\n description: rule.description,\r\n })),\r\n null,\r\n 2,\r\n )}\\n`,\r\n );\r\n } else\r\n process.stdout.write(\r\n `${renderRulesList(filtered, process.stdout.columns ?? 120, severityMap, shouldUseColor(noColor))}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (action === \"explain\") {\r\n const requested = remaining[0];\r\n\r\n if (!requested) throw new Error(\"rules explain requires a rule id\");\r\n\r\n const json = remaining.slice(1).includes(\"--json\");\r\n const extra = remaining.slice(1).filter((arg) => arg !== \"--json\");\r\n\r\n if (extra.length > 0)\r\n throw new Error(`Unknown rules explain option: ${extra[0]}`);\r\n\r\n const rule = findRule(requested);\r\n\r\n const currentSeverity =\r\n effectiveSeverity(rule.severity, rule.id, config) ?? \"off\";\r\n\r\n const result = {\r\n id: rule.id,\r\n severity: currentSeverity,\r\n defaultSeverity: rule.severity,\r\n category: rule.category,\r\n description: rule.description,\r\n example: rule.guidance?.example,\r\n };\r\n\r\n if (json) process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\r\n else {\r\n const colorized = shouldUseColor(noColor);\r\n const width = whyTextWidth();\r\n\r\n const lines = [\r\n whyPaint(colorized, rule.id, WHY_ANSI.bold, WHY_ANSI.magenta),\r\n `${rule.category} | Severity: ${currentSeverity} | Default: ${rule.severity}`,\r\n \"\",\r\n whySectionTitle(colorized, \"What this checks\"),\r\n ...wrapWhyWords(rule.description, width),\r\n ];\r\n\r\n if (\r\n rule.guidance?.explanation &&\r\n rule.guidance.explanation !== rule.description\r\n ) {\r\n lines.push(\"\", ...wrapWhyWords(rule.guidance.explanation, width));\r\n }\r\n\r\n if (rule.guidance?.help) {\r\n lines.push(\r\n \"\",\r\n whySectionTitle(colorized, \"How to fix\"),\r\n ...wrapWhyWords(rule.guidance.help, width),\r\n );\r\n }\r\n\r\n if (result.example) {\r\n lines.push(\r\n \"\",\r\n whySectionTitle(colorized, \"Example fix\"),\r\n ...renderWhyFixPreview(result.example, colorized, width),\r\n );\r\n }\r\n\r\n lines.push(\r\n \"\",\r\n ...wrapWhyWords(\r\n \"This is an example pattern, not an automatic edit. To explain a finding in your code, run:\",\r\n width,\r\n ),\r\n \" react-luau-doctor why <file:line>\",\r\n );\r\n\r\n process.stdout.write(`${lines.join(\"\\n\")}\\n`);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (action === \"set\") {\r\n const requested = remaining[0];\r\n const rawSeverity = remaining[1];\r\n\r\n if (!requested || !rawSeverity)\r\n throw new Error(\"rules set requires <rule> <severity>\");\r\n\r\n const rule = findRule(requested);\r\n const severity = normalizeRuleSetting(rawSeverity);\r\n\r\n if (!severity)\r\n throw new Error(\r\n \"Rule severity must be off, suggestion, warning/warn, or error\",\r\n );\r\n\r\n const filename = writeConfig(cwd, (current) => ({\r\n ...current,\r\n rules: { ...current.rules, [rule.id]: severity },\r\n }));\r\n\r\n process.stdout.write(\r\n `Set ${rule.id} to ${severity} in ${path.relative(cwd, filename)}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (action === \"enable\") {\r\n const requested = remaining[0];\r\n\r\n if (!requested) throw new Error(\"rules enable requires a rule id\");\r\n\r\n const rule = findRule(requested);\r\n let severity: Severity = rule.severity;\r\n const severityIndex = remaining.indexOf(\"--severity\");\r\n\r\n if (severityIndex >= 0) {\r\n const value = remaining[severityIndex + 1];\r\n const normalized = value ? normalizeRuleSetting(value) : null;\r\n\r\n if (!normalized || normalized === \"off\")\r\n throw new Error(\r\n \"--severity must be suggestion, warning/warn, or error\",\r\n );\r\n\r\n severity = normalized;\r\n }\r\n\r\n const filename = writeConfig(cwd, (current) => ({\r\n ...current,\r\n rules: { ...current.rules, [rule.id]: severity },\r\n }));\r\n\r\n process.stdout.write(\r\n `Enabled ${rule.id} at ${severity} in ${path.relative(cwd, filename)}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (action === \"disable\") {\r\n const requested = remaining[0];\r\n\r\n if (!requested) throw new Error(\"rules disable requires a rule id\");\r\n\r\n const rule = findRule(requested);\r\n\r\n const filename = writeConfig(cwd, (current) => ({\r\n ...current,\r\n rules: { ...current.rules, [rule.id]: \"off\" },\r\n }));\r\n\r\n process.stdout.write(\r\n `Disabled ${rule.id} in ${path.relative(cwd, filename)}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (action === \"category\") {\r\n const rawCategory = remaining[0];\r\n const rawSeverity = remaining[1];\r\n\r\n if (!rawCategory || !rawSeverity)\r\n throw new Error(\"rules category requires <category> <severity>\");\r\n\r\n const category = normalizeCategory(rawCategory);\r\n const severity = normalizeRuleSetting(rawSeverity);\r\n\r\n if (!category) throw new Error(`Unknown category: ${rawCategory}`);\r\n\r\n if (!severity)\r\n throw new Error(\r\n \"Category severity must be off, suggestion, warning/warn, or error\",\r\n );\r\n\r\n const categoryRules = rules.filter((rule) => rule.category === category);\r\n\r\n const filename = writeConfig(cwd, (current) => ({\r\n ...current,\r\n\r\n rules: Object.fromEntries([\r\n ...Object.entries(current.rules ?? {}),\r\n ...categoryRules.map((rule) => [rule.id, severity] as const),\r\n ]),\r\n }));\r\n\r\n process.stdout.write(\r\n `Set ${categoryRules.length} ${category} rules to ${severity} in ${path.relative(cwd, filename)}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n throw new Error(`Unknown rules command: ${action}`);\r\n}\r\n\r\nfunction whyLocationContains(\r\n location: Diagnostic[\"location\"],\r\n line: number,\r\n column?: number,\r\n): boolean {\r\n if (line < location.line || line > location.endLine) return false;\r\n\r\n if (column === undefined) return true;\r\n\r\n if (location.line === location.endLine)\r\n return column >= location.column && column <= location.endColumn;\r\n\r\n if (line === location.line) return column >= location.column;\r\n\r\n if (line === location.endLine) return column <= location.endColumn;\r\n\r\n return true;\r\n}\r\n\r\nfunction whyLocationMatches(\r\n diagnostic: Diagnostic,\r\n line: number,\r\n column?: number,\r\n): boolean {\r\n if (whyLocationContains(diagnostic.location, line, column)) return true;\r\n\r\n return (diagnostic.highlights ?? []).some((location) =>\r\n whyLocationContains(location, line, column),\r\n );\r\n}\r\n\r\nasync function scanWhyFile(\r\n filename: string,\r\n cwd: string,\r\n cache: boolean,\r\n onProgress?: (progress: ScanProgress) => void,\r\n): Promise<ScanReport> {\r\n // Scan only the requested file, but build its project model from the same root\r\n // as a normal project scan. Project-aware rules otherwise disappear when `why`\r\n // is invoked on a single file. Suppressions are evaluated after this one audit\r\n // scan so `why` never rebuilds project context just to discover hidden findings.\r\n return scanPath(cwd, {\r\n files: [{ absolutePath: filename, forceScan: true }],\r\n respectInlineDisables: false,\r\n onProgress,\r\n cache,\r\n });\r\n}\r\n\r\nasync function runWhy(\r\n location: string,\r\n cwd: string,\r\n noColor = false,\r\n cache = true,\r\n onProgress?: (progress: ScanProgress) => void,\r\n beforeOutput?: () => void,\r\n): Promise<void> {\r\n const match = location.match(/^(.*):(\\d+)(?::(\\d+))?$/);\r\n\r\n if (!match) throw new Error(\"Location must be file:line or file:line:column\");\r\n\r\n const filename = path.resolve(cwd, match[1]);\r\n const line = Number(match[2]);\r\n const column = match[3] === undefined ? undefined : Number(match[3]);\r\n\r\n if (!fs.existsSync(filename))\r\n throw new Error(`File does not exist: ${match[1]}`);\r\n\r\n const colorized = shouldUseColor(noColor, false);\r\n const source = fs.readFileSync(filename, \"utf8\");\r\n const isSuppressed = createInlineSuppressionChecker(source);\r\n const auditReport = await scanWhyFile(filename, cwd, cache, onProgress);\r\n // `why` renders its own output before returning to the CLI entry point. Clear\r\n // the transient progress line here so the diagnostic never starts on the same\r\n // terminal row as a completed progress bar.\r\n beforeOutput?.();\r\n\r\n const matching = auditReport.diagnostics.filter((diagnostic) =>\r\n whyLocationMatches(diagnostic, line, column),\r\n );\r\n\r\n const visible = matching.filter(\r\n (diagnostic) => !isSuppressed(diagnostic.rule, diagnostic.location.line),\r\n );\r\n\r\n if (visible.length > 0) {\r\n for (let index = 0; index < visible.length; index += 1) {\r\n if (index > 0) process.stdout.write(\"\\n\");\r\n\r\n process.stdout.write(\r\n renderWhyDiagnostic(source, visible[index], colorized, whyTextWidth()),\r\n );\r\n }\r\n\r\n return;\r\n }\r\n\r\n const suppressed = matching.filter((diagnostic) =>\r\n isSuppressed(diagnostic.rule, diagnostic.location.line),\r\n );\r\n\r\n if (suppressed.length > 0) {\r\n process.stdout.write(\r\n `No visible diagnostic at ${location}. ${suppressed.length} diagnostic${suppressed.length === 1 ? \" is\" : \"s are\"} hidden by an inline react-luau-doctor suppression.\\n\\n`,\r\n );\r\n\r\n for (let index = 0; index < suppressed.length; index += 1) {\r\n if (index > 0) process.stdout.write(\"\\n\");\r\n\r\n process.stdout.write(\r\n renderWhyDiagnostic(source, suppressed[index], colorized, whyTextWidth()),\r\n );\r\n }\r\n\r\n return;\r\n }\r\n\r\n const nearby = auditReport.diagnostics\r\n .filter(\r\n (diagnostic) => !isSuppressed(diagnostic.rule, diagnostic.location.line),\r\n )\r\n .filter((diagnostic) => Math.abs(diagnostic.location.line - line) <= 3)\r\n .sort(\r\n (a, b) =>\r\n Math.abs(a.location.line - line) - Math.abs(b.location.line - line),\r\n );\r\n\r\n process.stdout.write(\r\n `No React-Luau Doctor diagnostic found at ${location}.\\n`,\r\n );\r\n\r\n if (nearby.length > 0) {\r\n process.stdout.write(\"Nearby diagnostics in this file:\\n\");\r\n\r\n for (const diagnostic of nearby.slice(0, 5)) {\r\n process.stdout.write(\r\n ` ${diagnostic.file}:${diagnostic.location.line}:${diagnostic.location.column} ${diagnostic.rule}\\n`,\r\n );\r\n }\r\n }\r\n}\r\n\r\nfunction pathIsInside(parent: string, child: string): boolean {\r\n const relative = path.relative(parent, child);\r\n\r\n return (\r\n relative === \"\" ||\r\n (!relative.startsWith(\"..\") && !path.isAbsolute(relative))\r\n );\r\n}\r\n\r\nasync function runScan(\r\n options: CliOptions,\r\n onProgress?: (progress: ScanProgress) => void,\r\n): Promise<ScanReport> {\r\n const commandRoot = process.cwd();\r\n const target = path.resolve(commandRoot, options.target);\r\n\r\n if (!fs.existsSync(target))\r\n throw new Error(`Scan path does not exist: ${options.target}`);\r\n\r\n const targetStat = fs.statSync(target);\r\n const scanRoot = targetStat.isFile() ? path.dirname(target) : target;\r\n\r\n // CLI configuration is owned by the directory the command was launched from.\r\n // Narrowing the scan target must not silently switch to a different config.\r\n const loaded = loadConfigWithSource(commandRoot);\r\n const config = loaded.config;\r\n const resolvedScope = resolveScope(options, config);\r\n\r\n const scope =\r\n options.staged && options.scope === undefined\r\n ? \"files\"\r\n : resolvedScope.scope;\r\n\r\n validateModeFlags(options, scope);\r\n\r\n if (\r\n targetStat.isFile() &&\r\n (scope !== \"full\" || options.staged || options.changedFilesFrom)\r\n ) {\r\n throw new Error(\r\n \"Git scopes require a directory target. Scan the containing project directory instead\",\r\n );\r\n }\r\n\r\n const targetInsideCommandRoot = pathIsInside(commandRoot, target);\r\n const selectionRoot = targetInsideCommandRoot ? commandRoot : scanRoot;\r\n\r\n const requestedProjectRoots = resolveProjectRoots(\r\n selectionRoot,\r\n options.project,\r\n config,\r\n );\r\n\r\n const projectTargets = requestedProjectRoots.flatMap((projectRoot) => {\r\n if (pathIsInside(projectRoot, target))\r\n return [{ projectRoot, targetRoot: target }];\r\n\r\n if (pathIsInside(target, projectRoot))\r\n return [{ projectRoot, targetRoot: projectRoot }];\r\n\r\n return [];\r\n });\r\n\r\n if (projectTargets.length === 0) {\r\n throw new Error(\r\n `Scan target is outside the selected project${requestedProjectRoots.length === 1 ? \"\" : \"s\"}: ${options.target}`,\r\n );\r\n }\r\n\r\n const displayRoot = targetInsideCommandRoot ? commandRoot : selectionRoot;\r\n\r\n const minSeverity =\r\n (options.warnings ?? config.warnings ?? true)\r\n ? (options.minSeverity ?? \"suggestion\")\r\n : \"error\";\r\n\r\n const categories =\r\n options.categories.length > 0 ? options.categories : config.categories;\r\n\r\n const respectInlineDisables =\r\n options.respectInlineDisables ?? config.respectInlineDisables ?? true;\r\n\r\n const deadlineAt =\r\n options.maxDurationSeconds !== undefined\r\n ? performance.now() + options.maxDurationSeconds * 1000\r\n : undefined;\r\n\r\n const reports: Array<{ projectRoot: string; report: ScanReport }> = [];\r\n\r\n for (const { projectRoot, targetRoot } of projectTargets) {\r\n let report: ScanReport;\r\n\r\n const projectName =\r\n projectTargets.length > 1\r\n ? path.relative(displayRoot, projectRoot) || \".\"\r\n : undefined;\r\n\r\n const projectProgress = onProgress\r\n ? (progress: ScanProgress) =>\r\n onProgress({\r\n ...progress,\r\n\r\n phase:\r\n [projectName, progress.phase].filter(Boolean).join(\":\") ||\r\n undefined,\r\n\r\n label:\r\n projectName && progress.label\r\n ? `${projectName}: ${progress.label}`\r\n : progress.label,\r\n })\r\n : undefined;\r\n\r\n if (targetStat.isFile()) {\r\n report = await scanPath(targetRoot, {\r\n projectRoot,\r\n config,\r\n minSeverity,\r\n categories,\r\n respectInlineDisables,\r\n deadlineAt,\r\n onProgress: projectProgress,\r\n cache: !options.noCache,\r\n parallel: !options.noParallel,\r\n });\r\n\r\n report.scope = \"full\";\r\n } else {\r\n report = await scanProjectWithScope(projectRoot, {\r\n targetRoot,\r\n scope,\r\n base: resolvedScope.base,\r\n includeUntracked: options.includeUntracked,\r\n staged: options.staged,\r\n changedFilesFrom: options.changedFilesFrom,\r\n config,\r\n minSeverity,\r\n categories,\r\n respectInlineDisables,\r\n deadlineAt,\r\n onProgress: projectProgress,\r\n cache: !options.noCache,\r\n parallel: !options.noParallel,\r\n });\r\n }\r\n\r\n reports.push({ projectRoot, report });\r\n }\r\n\r\n const report = aggregateReports(displayRoot, reports);\r\n\r\n if (options.debug) {\r\n const debugLines = [\r\n `[debug] version=${VERSION}`,\r\n `[debug] bun=${Bun.version} platform=${process.platform}/${process.arch}`,\r\n `[debug] target=${target}`,\r\n `[debug] config=${loaded.filename ?? \"none\"}`,\r\n `[debug] scope=${report.scope ?? scope} base=${report.base ?? resolvedScope.base ?? \"auto\"}`,\r\n `[debug] projects=${projectTargets.map(({ projectRoot }) => path.relative(displayRoot, projectRoot) || \".\").join(\",\")}`,\r\n `[debug] candidates=${report.candidateFiles ?? 0} scanned=${report.scannedFiles} partial=${Boolean(report.partial)}`,\r\n `[debug] parallel=${!options.noParallel}`,\r\n ];\r\n\r\n process.stderr.write(`${debugLines.join(\"\\n\")}\\n`);\r\n }\r\n\r\n return report;\r\n}\r\n\r\nasync function main(): Promise<void> {\r\n try {\r\n const argv = process.argv.slice(2);\r\n\r\n if (argv[0] === \"__update-cache\") {\r\n await refreshUpdateCache({ silent: true });\r\n\r\n return;\r\n }\r\n\r\n if (argv[0] === \"update\") {\r\n await runUpdateCommand(argv.slice(1));\r\n\r\n return;\r\n }\r\n\r\n if (argv[0] === \"ci\") {\r\n await runCiCommand(argv.slice(1));\r\n\r\n return;\r\n }\r\n\r\n if (argv[0] === \"rules\") {\r\n runRulesCommand(argv.slice(1));\r\n\r\n return;\r\n }\r\n\r\n if (argv[0] === \"why\") {\r\n const location = argv[1];\r\n\r\n if (!location) throw new Error(\"why requires file:line\");\r\n\r\n const { cwd, remaining } = parseCommandCwd(argv.slice(2));\r\n const noColor = remaining.includes(\"--no-color\");\r\n const noCache = remaining.includes(\"--no-cache\");\r\n\r\n const unknown = remaining.filter(\r\n (arg) => arg !== \"--no-color\" && arg !== \"--no-cache\",\r\n );\r\n\r\n if (unknown.length > 0)\r\n throw new Error(`Unknown why option: ${unknown[0]}`);\r\n\r\n const colorized = shouldUseColor(noColor, false);\r\n\r\n const progress = createProgressRenderer({\r\n enabled: Boolean(process.stdout.isTTY && !process.env.CI),\r\n colorized,\r\n });\r\n\r\n try {\r\n await runWhy(\r\n location,\r\n cwd,\r\n noColor,\r\n !noCache,\r\n (scanProgress) => progress.update(scanProgress),\r\n () => progress.clear(),\r\n );\r\n } finally {\r\n progress.clear();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (argv[0] === \"version\") {\r\n process.stdout.write(\r\n `React-Luau Doctor ${VERSION}\\nBun ${Bun.version}\\n${process.platform} ${process.arch}\\n${os.release()}\\n`,\r\n );\r\n\r\n return;\r\n }\r\n\r\n const options = parseArgs(argv);\r\n\r\n if (options.help) {\r\n process.stdout.write(usage());\r\n\r\n return;\r\n }\r\n\r\n if (options.version) {\r\n process.stdout.write(`${VERSION}\\n`);\r\n\r\n return;\r\n }\r\n\r\n const machineReadable =\r\n options.scoreOnly || options.json || options.annotations;\r\n\r\n const colorized = shouldUseColor(options.noColor, machineReadable);\r\n\r\n const updateNoticeEnabled = automaticUpdateNoticeEnabled(\r\n options,\r\n machineReadable,\r\n );\r\n\r\n if (updateNoticeEnabled) startBackgroundUpdateRefresh();\r\n\r\n const progress = createProgressRenderer({\r\n enabled: Boolean(\r\n process.stdout.isTTY && !process.env.CI && !machineReadable,\r\n ),\r\n\r\n colorized,\r\n });\r\n\r\n let report: ScanReport;\r\n\r\n try {\r\n report = await runScan(options, (scanProgress) =>\r\n progress.update(scanProgress),\r\n );\r\n } finally {\r\n progress.clear();\r\n }\r\n\r\n const compactJson = options.jsonCompact;\r\n const json = `${serializeReport(report, compactJson)}\\n`;\r\n\r\n if (options.jsonOut) {\r\n const outputPath = path.resolve(process.cwd(), options.jsonOut);\r\n fs.mkdirSync(path.dirname(outputPath), { recursive: true });\r\n fs.writeFileSync(outputPath, json);\r\n }\r\n\r\n if (options.outputDir)\r\n writeDiagnosticsDump(\r\n path.resolve(process.cwd(), options.outputDir),\r\n report,\r\n );\r\n\r\n const config = loadConfigWithSource(process.cwd()).config;\r\n const showScore = options.showScore ?? true;\r\n const verbose = options.verbose ?? config.verbose ?? false;\r\n\r\n if (options.scoreOnly) process.stdout.write(`${report.score}\\n`);\r\n else if (options.json) process.stdout.write(json);\r\n else if (options.annotations) {\r\n const annotations = renderAnnotations(report);\r\n\r\n if (annotations) process.stdout.write(`${annotations}\\n`);\r\n } else\r\n process.stdout.write(\r\n `${renderTextReport(report, showScore, colorized, verbose, process.stdout.columns ?? 120)}\\n`,\r\n );\r\n\r\n if (updateNoticeEnabled) {\r\n const update = getCachedUpdateNotice(VERSION);\r\n\r\n if (update)\r\n process.stdout.write(\r\n `\\n${renderUpdateNotice(update.current, update.latest, colorized)}\\n`,\r\n );\r\n }\r\n\r\n const blocking = options.blocking ?? config.blocking ?? \"error\";\r\n\r\n if (shouldBlock(report, blocking)) process.exitCode = 1;\r\n } catch (error) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(`react-luau-doctor: ${message}\\n`);\r\n process.exitCode = 2;\r\n }\r\n}\r\n\r\nvoid main();\r\n",
|
|
6
6
|
"import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { rulesById } from \"./rules\";\n\nimport type {\n BlockingLevel,\n Category,\n DoctorConfig,\n RuleSetting,\n ScanScope,\n Severity,\n} from \"./types\";\n\nexport const CONFIG_NAME = \"react-luau-doctor.config.json\";\n\nconst SEVERITIES = new Set<RuleSetting>([\n \"off\",\n \"error\",\n \"warning\",\n \"suggestion\",\n]);\n\nconst SCOPES = new Set<ScanScope>([\"full\", \"files\", \"changed\", \"lines\"]);\nconst BLOCKING_LEVELS = new Set<BlockingLevel>([\"error\", \"warning\", \"none\"]);\n\nconst CATEGORIES = new Set<Category>([\n \"Correctness\",\n \"Hooks\",\n \"Effects\",\n \"Performance\",\n \"Roblox\",\n \"Architecture\",\n]);\n\nexport function configSchema() {\n const strings = { type: \"array\", items: { type: \"string\" } };\n\n return {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n title: \"React-Luau Doctor project config\",\n type: \"object\",\n additionalProperties: false,\n\n properties: {\n $schema: {\n type: \"string\",\n description: \"JSON schema used by your editor\",\n },\n\n include: {\n ...strings,\n description: \"File globs to include in project scans\",\n },\n\n ignore: {\n ...strings,\n description: \"File globs and directories to exclude from project scans\",\n },\n\n projects: { ...strings, description: \"Project directories to scan\" },\n\n rules: {\n type: \"object\",\n description: \"Override a rule severity or turn it off for this project\",\n additionalProperties: false,\n\n properties: Object.fromEntries(\n [...rulesById.values()].map((rule) => [\n rule.id,\n {\n type: \"string\",\n enum: [...SEVERITIES],\n default: rule.severity,\n description: rule.description.replace(/\\.$/, \"\"),\n },\n ]),\n ),\n },\n\n categories: {\n type: \"array\",\n items: { type: \"string\", enum: [...CATEGORIES] },\n description: \"Limit findings to these categories\",\n },\n\n scope: {\n type: \"string\",\n enum: [...SCOPES],\n description: \"Choose which files or changed lines to report\",\n },\n\n diff: {\n type: [\"boolean\", \"string\"],\n\n description:\n \"Report introduced findings against HEAD or a specific Git ref\",\n },\n\n base: {\n type: \"string\",\n description: \"Git ref used as the baseline for changed scope\",\n },\n\n verbose: {\n type: \"boolean\",\n description: \"Include detailed findings in CLI output\",\n },\n\n blocking: {\n type: \"string\",\n enum: [...BLOCKING_LEVELS],\n description: \"Minimum severity that fails the CLI exit gate\",\n },\n\n warnings: {\n type: \"boolean\",\n description: \"Include warning findings in CLI output\",\n },\n\n respectInlineDisables: {\n type: \"boolean\",\n description: \"Honor inline suppression comments\",\n },\n },\n };\n}\n\nexport interface LoadedConfig {\n config: DoctorConfig;\n filename: string | null;\n}\n\nexport function loadConfigWithSource(root: string): LoadedConfig {\n const candidate = path.join(root, CONFIG_NAME);\n\n if (!fs.existsSync(candidate)) return { config: {}, filename: null };\n\n const parsed = JSON.parse(fs.readFileSync(candidate, \"utf8\")) as DoctorConfig;\n validateConfig(parsed, candidate);\n\n return { config: parsed, filename: candidate };\n}\n\nexport function loadConfig(root: string): DoctorConfig {\n return loadConfigWithSource(root).config;\n}\n\nexport function validateKnownRules(config: DoctorConfig): void {\n for (const ruleId of Object.keys(config.rules ?? {})) {\n if (!rulesById.has(ruleId))\n throw new Error(`Unknown configured rule: ${ruleId}`);\n }\n}\n\nfunction validateStringArray(\n value: unknown,\n field: string,\n filename: string,\n): void {\n if (\n !Array.isArray(value) ||\n value.some((entry) => typeof entry !== \"string\")\n ) {\n throw new Error(`${filename}: ${field} must be an array of strings`);\n }\n}\n\nfunction validateConfig(config: DoctorConfig, filename: string): void {\n if (config.include !== undefined)\n validateStringArray(config.include, \"include\", filename);\n\n if (config.ignore !== undefined)\n validateStringArray(config.ignore, \"ignore\", filename);\n\n if (config.projects !== undefined)\n validateStringArray(config.projects, \"projects\", filename);\n\n if (config.categories !== undefined) {\n if (\n !Array.isArray(config.categories) ||\n config.categories.some((category) => !CATEGORIES.has(category))\n ) {\n throw new Error(\n `${filename}: categories must contain valid React-Luau Doctor categories`,\n );\n }\n }\n\n if (config.rules) {\n for (const [rule, value] of Object.entries(config.rules)) {\n if (!SEVERITIES.has(value))\n throw new Error(\n `${filename}: invalid severity ${String(value)} for ${rule}`,\n );\n }\n }\n\n if (config.scope !== undefined && !SCOPES.has(config.scope)) {\n throw new Error(\n `${filename}: scope must be full, files, changed, or lines`,\n );\n }\n\n if (\n config.diff !== undefined &&\n typeof config.diff !== \"boolean\" &&\n typeof config.diff !== \"string\"\n ) {\n throw new Error(`${filename}: diff must be a boolean or git ref string`);\n }\n\n if (config.base !== undefined && typeof config.base !== \"string\")\n throw new Error(`${filename}: base must be a string`);\n\n if (config.verbose !== undefined && typeof config.verbose !== \"boolean\")\n throw new Error(`${filename}: verbose must be a boolean`);\n\n if (config.warnings !== undefined && typeof config.warnings !== \"boolean\")\n throw new Error(`${filename}: warnings must be a boolean`);\n\n if (\n config.respectInlineDisables !== undefined &&\n typeof config.respectInlineDisables !== \"boolean\"\n ) {\n throw new Error(`${filename}: respectInlineDisables must be a boolean`);\n }\n\n if (config.blocking !== undefined && !BLOCKING_LEVELS.has(config.blocking)) {\n throw new Error(`${filename}: blocking must be error, warning, or none`);\n }\n}\n\nexport function effectiveSeverity(\n defaultSeverity: Severity,\n ruleId: string,\n config: DoctorConfig,\n): Severity | null {\n const configured = config.rules?.[ruleId];\n\n if (!configured) return defaultSeverity;\n\n return configured === \"off\" ? null : configured;\n}\n\nfunction configPathForWrite(root: string): string {\n const loaded = loadConfigWithSource(root);\n\n return loaded.filename ?? path.join(root, CONFIG_NAME);\n}\n\nexport function writeConfig(\n root: string,\n update: (config: DoctorConfig) => DoctorConfig,\n): string {\n const loaded = loadConfigWithSource(root);\n const next = update(structuredClone(loaded.config));\n validateConfig(next, loaded.filename ?? CONFIG_NAME);\n const filename = loaded.filename ?? configPathForWrite(root);\n fs.mkdirSync(path.dirname(filename), { recursive: true });\n fs.writeFileSync(filename, `${JSON.stringify(next, null, 2)}\\n`);\n\n return filename;\n}\n\nexport function normalizeRuleSetting(value: string): RuleSetting | null {\n const normalized = value.toLowerCase();\n\n if (normalized === \"warn\") return \"warning\";\n\n if (\n normalized === \"off\" ||\n normalized === \"error\" ||\n normalized === \"warning\" ||\n normalized === \"suggestion\"\n ) {\n return normalized;\n }\n\n return null;\n}\n\nexport function normalizeCategory(value: string): Category | null {\n const normalized = value.toLowerCase();\n\n for (const category of CATEGORIES) {\n if (category.toLowerCase() === normalized) return category;\n }\n\n return null;\n}\n",
|
|
7
7
|
"import type { SyntaxNode } from \"../syntax\";\r\n\r\nexport function walk(node: SyntaxNode): SyntaxNode[] {\r\n const result: SyntaxNode[] = [];\r\n const stack = [node];\r\n\r\n while (stack.length > 0) {\r\n const current = stack.pop()!;\r\n result.push(current);\r\n\r\n const children = current.namedChildren;\r\n for (let index = children.length - 1; index >= 0; index -= 1) {\r\n stack.push(children[index]);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function ancestors(node: SyntaxNode): SyntaxNode[] {\r\n const result: SyntaxNode[] = [];\r\n let current = node.parent;\r\n while (current) {\r\n result.push(current);\r\n current = current.parent;\r\n }\r\n return result;\r\n}\r\n\r\nexport function nearestAncestor(node: SyntaxNode, predicate: (candidate: SyntaxNode) => boolean): SyntaxNode | null {\r\n let current = node.parent;\r\n while (current) {\r\n if (predicate(current)) return current;\r\n current = current.parent;\r\n }\r\n return null;\r\n}\r\n\r\nexport function descendantsOfType(node: SyntaxNode, type: string): SyntaxNode[] {\r\n const result: SyntaxNode[] = [];\r\n for (const candidate of walk(node)) {\r\n if (candidate.type === type) result.push(candidate);\r\n }\r\n return result;\r\n}\r\n\r\n\r\nexport function parameterBindingNames(parameters: SyntaxNode | null | undefined): string[] {\r\n if (!parameters) return [];\r\n const result: string[] = [];\r\n for (const parameter of parameters.namedChildren) {\r\n if (parameter.type !== \"parameter\") continue;\r\n const identifier = parameter.namedChildren.find((child) => child.type === \"identifier\");\r\n if (identifier) result.push(identifier.text);\r\n }\r\n return [...new Set(result)];\r\n}\r\n\r\nexport function rootIdentifier(text: string): string | null {\r\n const match = text.trim().match(/^([A-Za-z_][A-Za-z0-9_]*)/);\r\n return match?.[1] ?? null;\r\n}\r\n\r\nexport function normalizeExpressionText(text: string): string {\r\n return text.replace(/\\s+/g, \"\").replace(/^\\((.*)\\)$/s, \"$1\");\r\n}\r\n\r\nexport function nodeKey(node: SyntaxNode): number {\r\n return node.id;\r\n}\r\n\r\nexport function sameNode(left: SyntaxNode | null | undefined, right: SyntaxNode | null | undefined): boolean {\r\n return Boolean(left && right && nodeKey(left) === nodeKey(right));\r\n}\r\n",
|
|
8
|
-
"import type { SyntaxNode } from \"../syntax\";\
|
|
8
|
+
"import type { SyntaxNode } from \"../syntax\";\nimport type { FunctionInfo, RuleContext } from \"../types\";\nimport { normalizeExpressionText, parameterBindingNames } from \"./walk\";\n\ninterface LocalValue {\n value: SyntaxNode;\n returnIndex: number;\n}\n\nconst valueCache = new WeakMap<RuleContext, Map<number, LocalValue | null>>();\nconst apiCache = new WeakMap<RuleContext, Map<number, string | null>>();\n\nexport function isUnboundIdentifier(\n context: RuleContext,\n node: SyntaxNode,\n): boolean {\n return (\n node.type === \"identifier\" && visibleValue(context, node) === undefined\n );\n}\n\nexport function localValueBinding(\n context: RuleContext,\n node: SyntaxNode,\n): LocalValue | null | undefined {\n return node.type === \"identifier\" ? visibleValue(context, node) : null;\n}\n\nexport function unwrapExpression(node: SyntaxNode): SyntaxNode {\n while (\n [\"parenthesized_expression\", \"cast_expression\"].includes(node.type) &&\n node.namedChildren[0]\n ) {\n node = node.namedChildren[0];\n }\n\n return node;\n}\n\nfunction assignedValue(\n statement: SyntaxNode,\n name: string,\n): LocalValue | null | undefined {\n const assignment =\n statement.type === \"variable_declaration\"\n ? statement.namedChildren.find(\n (child) => child.type === \"assignment_statement\",\n )\n : statement;\n\n const variables = assignment?.namedChildren.find(\n (child) => child.type === \"variable_list\",\n );\n\n const expressions =\n assignment?.namedChildren.find((child) => child.type === \"expression_list\")\n ?.namedChildren ?? [];\n\n const index =\n variables?.namedChildren.findIndex(\n (child) => child.type === \"identifier\" && child.text === name,\n ) ?? -1;\n\n if (index < 0) return undefined;\n\n const value = expressions[index] ?? expressions.at(-1);\n\n if (!value) return null;\n\n const returnIndex = Math.max(0, index - expressions.length + 1);\n\n if (returnIndex > 0 && value.type !== \"function_call\") return null;\n\n return { value, returnIndex };\n}\n\nfunction visibleValue(\n context: RuleContext,\n node: SyntaxNode,\n): LocalValue | null | undefined {\n const name = node.text;\n let current = node.parent;\n\n while (current) {\n if (\n [\"function_definition\", \"function_declaration\"].includes(current.type) &&\n parameterBindingNames(current.childForFieldName(\"parameters\")).includes(\n name,\n )\n )\n return null;\n\n if (current.type === \"for_statement\") {\n const header = current.text.split(/\\bdo\\b/, 1)[0];\n\n const names = header\n .match(/^\\s*for\\s+(.+?)\\s*(?:=|\\bin\\b)/s)?.[1]\n .split(\",\")\n .map((part) => part.trim());\n\n if (names?.includes(name)) return null;\n }\n\n if (current.type === \"block\" || current.id === context.root.id) {\n for (const child of [...current.namedChildren].reverse()) {\n if (child.startIndex >= node.startIndex) continue;\n\n if (\n child.type === \"function_declaration\" &&\n child.childForFieldName(\"name\")?.text === name\n ) {\n return { value: child, returnIndex: 0 };\n }\n\n if (\n child.type === \"variable_declaration\" ||\n child.type === \"assignment_statement\"\n ) {\n if (child.endIndex > node.startIndex) continue;\n\n const value = assignedValue(child, name);\n\n if (value !== undefined) return value;\n } else if (\n child.endIndex < node.startIndex &&\n child.type !== \"function_declaration\"\n ) {\n // A conditional reassignment makes the earlier value uncertain\n for (const nested of context.walk(child)) {\n if (\n nested.type !== \"assignment_statement\" ||\n nested.parent?.type === \"variable_declaration\"\n )\n continue;\n\n if (\n context.nearestFunction(nested) !== context.nearestFunction(node)\n )\n continue;\n\n if (assignedValue(nested, name) !== undefined) return null;\n }\n }\n }\n }\n\n current = current.parent;\n }\n\n return undefined;\n}\n\nexport function resolveLocalValue(\n context: RuleContext,\n expression: SyntaxNode,\n seen = new Set<number>(),\n): LocalValue | null {\n const node = unwrapExpression(expression);\n\n if (seen.has(node.id)) return null;\n\n let cache = valueCache.get(context);\n\n if (!cache) {\n cache = new Map();\n valueCache.set(context, cache);\n }\n\n if (cache.has(node.id)) return cache.get(node.id) ?? null;\n\n seen.add(node.id);\n\n const binding =\n node.type === \"identifier\"\n ? visibleValue(context, node)\n : { value: node, returnIndex: 0 };\n\n const result = !binding\n ? null\n : binding.returnIndex > 0 || node.type !== \"identifier\"\n ? binding\n : resolveLocalValue(context, binding.value, seen);\n\n cache.set(node.id, result);\n\n return result;\n}\n\nexport function resolveLocalFunction(\n context: RuleContext,\n expression: SyntaxNode,\n): FunctionInfo | null {\n const resolved = resolveLocalValue(context, expression);\n\n if (!resolved || resolved.returnIndex !== 0) return null;\n\n return context.model.functionByNode.get(resolved.value.id) ?? null;\n}\n\nexport function reactApiPath(\n context: RuleContext,\n call: SyntaxNode,\n): string | null {\n let cache = apiCache.get(context);\n\n if (!cache) {\n cache = new Map();\n apiCache.set(context, cache);\n }\n\n if (cache.has(call.id)) return cache.get(call.id) ?? null;\n\n const result = resolveReactApiPath(context, call);\n cache.set(call.id, result);\n\n return result;\n}\n\nfunction resolveReactApiPath(\n context: RuleContext,\n call: SyntaxNode,\n): string | null {\n const name = call.childForFieldName(\"name\");\n\n if (!name) return null;\n\n const resolved = resolveLocalValue(context, name);\n\n if (!resolved || resolved.returnIndex !== 0) return null;\n\n const path = normalizeExpressionText(resolved.value.text);\n\n const match = path.match(\n /^([A-Za-z_][A-Za-z0-9_]*)\\.([A-Za-z_][A-Za-z0-9_]*)$/,\n );\n\n if (!match) return null;\n\n const namespace = resolved.value.namedChildren[0];\n\n if (!namespace) return null;\n\n const visible = visibleValue(context, namespace);\n\n if (visible === null) return null;\n\n const binding = resolveLocalValue(context, namespace);\n\n if (\n visible !== undefined &&\n (!binding || !/^require\\s*\\(.*\\bReact\\b.*\\)$/s.test(binding.value.text))\n )\n return null;\n\n if (visible === undefined && !context.model.reactNamespaces.has(match[1]))\n return null;\n\n // An unbound React namespace is supported by the existing React model\n return `React.${match[2]}`;\n}\n",
|
|
9
9
|
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { FunctionInfo, RuleContext } from \"../types\";\r\nimport { rootIdentifier, sameNode } from \"../ast/walk\";\r\n\r\nexport const CONDITIONAL_TYPES = new Set([\r\n \"if_statement\",\r\n \"if_expression\",\r\n \"for_statement\",\r\n \"while_statement\",\r\n \"repeat_statement\",\r\n]);\r\n\r\nexport function isHookPath(path: string): boolean {\r\n const final = path.split(/[.:]/).at(-1) ?? \"\";\r\n return /^use[A-Z0-9_]/.test(final);\r\n}\r\n\r\n\r\nexport function assignmentTargetNode(statement: SyntaxNode): SyntaxNode {\r\n return statement.namedChildren[0] ?? statement;\r\n}\r\n\r\nexport function tableStartNode(table: SyntaxNode): SyntaxNode {\r\n return table.children.find((child) => child.type === \"{\") ?? table;\r\n}\r\n\r\nexport function identifierNode(node: SyntaxNode, name: string): SyntaxNode | null {\r\n const stack = [node];\r\n while (stack.length > 0) {\r\n const current = stack.pop()!;\r\n if (current.type === \"identifier\" && current.text === name) return current;\r\n for (let index = current.namedChildren.length - 1; index >= 0; index -= 1) stack.push(current.namedChildren[index]);\r\n }\r\n return null;\r\n}\r\n\r\nexport function callNameNode(call: SyntaxNode): SyntaxNode {\r\n return call.childForFieldName(\"name\") ?? call;\r\n}\r\n\r\nexport function fieldNameNode(field: SyntaxNode): SyntaxNode {\r\n return field.childForFieldName(\"name\") ?? field;\r\n}\r\n\r\nexport function firstFunctionArgument(context: RuleContext, call: SyntaxNode): SyntaxNode | null {\r\n return context.callArguments(call).find((arg) => arg.type === \"function_definition\") ?? null;\r\n}\r\n\r\nexport function directComponentForCall(context: RuleContext, call: SyntaxNode): FunctionInfo | null {\r\n const fn = context.nearestFunction(call);\r\n return fn?.isComponent ? fn : null;\r\n}\r\n\r\nexport function findAncestorBetween(node: SyntaxNode, stop: SyntaxNode, predicate: (node: SyntaxNode) => boolean): SyntaxNode | null {\r\n let current = node.parent;\r\n while (current && !sameNode(current, stop)) {\r\n if (predicate(current)) return current;\r\n current = current.parent;\r\n }\r\n return null;\r\n}\r\n\r\nexport function declarationNames(node: SyntaxNode): string[] {\r\n if (node.type !== \"variable_declaration\") return [];\r\n const beforeEquals = node.text.split(\"=\")[0] ?? \"\";\r\n return beforeEquals\r\n .replace(/^\\s*local\\s+/, \"\")\r\n .split(\",\")\r\n .map((piece) => piece.trim().match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1] ?? null)\r\n .filter((name): name is string => Boolean(name));\r\n}\r\n\r\nexport function callRoot(path: string): string | null {\r\n return rootIdentifier(path);\r\n}\r\n\r\nexport function isNestedInsideFunction(node: SyntaxNode, boundary: SyntaxNode): boolean {\r\n let current = node.parent;\r\n while (current && !sameNode(current, boundary)) {\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") return true;\r\n current = current.parent;\r\n }\r\n return false;\r\n}\r\n\r\nexport function functionHasReturnedBefore(call: SyntaxNode, fn: FunctionInfo, context: RuleContext): boolean {\r\n if (!fn.body) return false;\r\n for (const node of context.walk(fn.body)) {\r\n if (node.endIndex > call.startIndex) continue;\r\n if (node.type !== \"return_statement\") continue;\r\n if (isNestedInsideFunction(node, fn.node)) continue;\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function parseDependencyRoots(node: SyntaxNode | undefined): Set<string> {\r\n const result = new Set<string>();\r\n if (!node || node.type !== \"table_constructor\") return result;\r\n\r\n for (const child of node.namedChildren) {\r\n const root = rootIdentifier(child.text);\r\n if (root) result.add(root);\r\n }\r\n return result;\r\n}\r\n\r\nexport function assignmentLeft(text: string): string {\r\n const match = text.match(/^(.*?)(?:\\+=|-=|\\*=|\\/=|%=|\\^=|\\.\\.=|\\/=|=)/s);\r\n return match?.[1]?.trim() ?? \"\";\r\n}\r\n\r\nexport function functionInfoForNode(context: RuleContext, node: SyntaxNode | null): FunctionInfo | null {\r\n if (!node) return null;\r\n return context.model.functionByNode.get(node.id) ?? null;\r\n}\r\n\r\nexport function stateBindingsFor(context: RuleContext, owner: FunctionInfo): typeof context.model.stateBindings {\r\n return context.model.stateBindings.filter((binding) => binding.owner === owner);\r\n}\r\n\r\nexport function isEffectPath(path: string): boolean {\r\n return path === \"React.useEffect\" || path === \"React.useLayoutEffect\";\r\n}\r\n\r\nexport function dependencyExpressions(node: SyntaxNode | undefined): SyntaxNode[] {\r\n if (!node || node.type !== \"table_constructor\") return [];\r\n return node.namedChildren\r\n .filter((child) => child.type === \"field\")\r\n .map((field) => {\r\n const name = field.childForFieldName(\"name\");\r\n if (name && field.text.trim().startsWith(\"[\")) return name;\r\n return field.namedChildren.find((child) => !sameNode(child, name)) ?? name ?? field;\r\n });\r\n}\r\n\r\nexport function fieldName(node: SyntaxNode): string | null {\r\n if (node.type !== \"field\") return null;\r\n const name = node.childForFieldName(\"name\");\r\n return name?.type === \"identifier\" ? name.text : null;\r\n}\r\n\r\nexport function fieldValue(node: SyntaxNode): SyntaxNode | null {\r\n if (node.type !== \"field\") return null;\r\n const name = node.childForFieldName(\"name\");\r\n if (!name) return node.namedChildren[0] ?? null;\r\n return node.namedChildren.find((child) => child.startIndex > name.endIndex) ?? null;\r\n}\r\n\r\nexport function containsIdentifier(node: SyntaxNode | null | undefined, name: string, context: RuleContext): boolean {\r\n if (!node) return false;\r\n for (const child of context.walk(node)) {\r\n if (child.type !== \"identifier\" || child.text !== name) continue;\r\n const parent = child.parent;\r\n if (parent?.type === \"dot_index_expression\" && sameNode(parent.childForFieldName(\"field\"), child)) continue;\r\n if (parent?.type === \"method_index_expression\" && (sameNode(parent.childForFieldName(\"method\"), child) || sameNode(parent.namedChildren.at(-1), child))) continue;\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function ownerStateSetter(context: RuleContext, owner: FunctionInfo, path: string): string | null {\r\n for (const binding of context.model.stateBindings) {\r\n if (binding.owner === owner && binding.setterName === path) return binding.valueName;\r\n }\r\n return null;\r\n}\r\n\r\n\r\nfunction parameterNames(node: SyntaxNode | null): Set<string> {\r\n const names = new Set<string>();\r\n if (!node) return names;\r\n for (const candidate of node.namedChildren) {\r\n for (const child of [candidate, ...Array.from((function* walkLocal(current: SyntaxNode): Iterable<SyntaxNode> {\r\n for (const nested of current.namedChildren) {\r\n yield nested;\r\n yield* walkLocal(nested);\r\n }\r\n })(candidate))]) {\r\n if (child.type === \"identifier\") names.add(child.text);\r\n }\r\n }\r\n return names;\r\n}\r\n\r\nfunction blockBindingsBefore(block: SyntaxNode, beforeIndex: number): Set<string> {\r\n const names = new Set<string>();\r\n for (const child of block.namedChildren) {\r\n if (child.startIndex >= beforeIndex) continue;\r\n if (child.type === \"variable_declaration\") {\r\n for (const name of declarationNames(child)) names.add(name);\r\n } else if (child.type === \"function_declaration\") {\r\n const name = child.childForFieldName(\"name\")?.text;\r\n if (name && /^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) names.add(name);\r\n }\r\n }\r\n return names;\r\n}\r\n\r\nfunction loopBindings(loop: SyntaxNode): Set<string> {\r\n const names = new Set<string>();\r\n const header = loop.text.split(/\\bdo\\b/s, 1)[0] ?? \"\";\r\n const numeric = header.match(/^\\s*for\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=/s);\r\n if (numeric) names.add(numeric[1]);\r\n const generic = header.match(/^\\s*for\\s+(.+?)\\s+in\\b/s);\r\n if (generic) {\r\n for (const part of generic[1].split(\",\")) {\r\n const name = part.trim().match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\r\n if (name) names.add(name);\r\n }\r\n }\r\n return names;\r\n}\r\n\r\nexport function isNameShadowedBetween(node: SyntaxNode, boundary: FunctionInfo, name: string): boolean {\r\n let current: SyntaxNode | null = node.parent;\r\n while (current && !sameNode(current, boundary.node)) {\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") {\r\n if (parameterNames(current.childForFieldName(\"parameters\")).has(name)) return true;\r\n }\r\n if (current.type === \"block\" && !sameNode(current.parent, boundary.node) && blockBindingsBefore(current, node.startIndex).has(name)) return true;\r\n if (current.type === \"for_statement\" && loopBindings(current).has(name)) return true;\r\n current = current.parent;\r\n }\r\n return false;\r\n}\r\n\r\nconst topLevelBindingsCache = new WeakMap<FunctionInfo, Map<string, SyntaxNode[]>>();\r\n\r\nfunction topLevelBindings(boundary: FunctionInfo): Map<string, SyntaxNode[]> {\r\n const cached = topLevelBindingsCache.get(boundary);\r\n if (cached) return cached;\r\n\r\n const result = new Map<string, SyntaxNode[]>();\r\n const add = (name: string, node: SyntaxNode): void => {\r\n const existing = result.get(name) ?? [];\r\n existing.push(node);\r\n result.set(name, existing);\r\n };\r\n\r\n for (const child of boundary.body?.namedChildren ?? []) {\r\n if (child.type === \"variable_declaration\") {\r\n for (const name of declarationNames(child)) add(name, child);\r\n } else if (child.type === \"function_declaration\") {\r\n const declared = child.childForFieldName(\"name\")?.text.replace(/\\s+/g, \"\") ?? \"\";\r\n if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(declared)) add(declared, child);\r\n }\r\n }\r\n\r\n topLevelBindingsCache.set(boundary, result);\r\n return result;\r\n}\r\n\r\nexport function isBindingShadowedBetween(\r\n node: SyntaxNode,\r\n boundary: FunctionInfo,\r\n name: string,\r\n declaration: SyntaxNode | null = null,\r\n): boolean {\r\n if (isNameShadowedBetween(node, boundary, name)) return true;\r\n if (!boundary.body) return false;\r\n\r\n const afterIndex = declaration?.endIndex ?? boundary.body.startIndex - 1;\r\n return (topLevelBindings(boundary).get(name) ?? []).some((binding) =>\r\n binding.startIndex > afterIndex && binding.startIndex < node.startIndex\r\n );\r\n}\r\n\r\nexport function containsUnshadowedIdentifier(\r\n node: SyntaxNode | null | undefined,\r\n name: string,\r\n context: RuleContext,\r\n boundary: FunctionInfo,\r\n): boolean {\r\n if (!node) return false;\r\n for (const child of context.walk(node)) {\r\n if (child.type !== \"identifier\" || child.text !== name) continue;\r\n const parent = child.parent;\r\n if (parent?.type === \"dot_index_expression\" && sameNode(parent.childForFieldName(\"field\"), child)) continue;\r\n if (parent?.type === \"method_index_expression\" && (sameNode(parent.childForFieldName(\"method\"), child) || sameNode(parent.namedChildren.at(-1), child))) continue;\r\n if (isNameShadowedBetween(child, boundary, name)) continue;\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function directFunctionCalls(context: RuleContext, fn: FunctionInfo): SyntaxNode[] {\r\n if (!fn.body) return [];\r\n return [...context.walk(fn.body)].filter((node) => node.type === \"function_call\" && context.nearestFunction(node) === fn);\r\n}\r\n\r\nexport function isUnconditionallyExecutedInFunction(\n context: RuleContext,\n node: SyntaxNode,\n fn: FunctionInfo,\n): boolean {\n if (\n !context.isDirectlyExecutedInFunction(node, fn) ||\n functionHasReturnedBefore(node, fn, context)\n )\n return false;\n\n let child = node;\n let parent = node.parent;\n\n while (parent && !sameNode(parent, fn.node)) {\n // A break can skip a repeat loop's condition even on its first iteration\r\n if (parent.type === \"repeat_statement\") return false;\r\n\r\n if (CONDITIONAL_TYPES.has(parent.type)) {\n if (!sameNode(parent.childForFieldName(\"condition\"), child)) return false;\n }\n\n if (\n parent.type === \"binary_expression\" &&\n parent.children.some(\n (token) => token.type === \"and\" || token.type === \"or\",\n )\n ) {\n if (!sameNode(parent.childForFieldName(\"left\"), child)) return false;\n }\n\n child = parent;\n parent = parent.parent;\n }\n\n return sameNode(parent, fn.node);\n}\n",
|
|
10
10
|
"import { reactApiPath, resolveLocalValue } from \"../ast/local-values\";\r\nimport { normalizeExpressionText } from \"../ast/walk\";\r\nimport type { SyntaxNode } from \"../syntax\";\r\nimport type { RuleContext, RuleDefinition } from \"../types\";\r\nimport { callNameNode } from \"./helpers\";\r\n\r\nfunction isBinding(\r\n context: RuleContext,\r\n expression: SyntaxNode,\r\n seen = new Set<number>(),\r\n): boolean {\r\n if (seen.has(expression.id)) return false;\r\n\r\n seen.add(expression.id);\r\n const resolved = resolveLocalValue(context, expression);\r\n\r\n if (\r\n !resolved ||\r\n resolved.returnIndex !== 0 ||\r\n resolved.value.type !== \"function_call\"\r\n )\r\n return false;\r\n\r\n if (\r\n [\"React.useBinding\", \"React.createBinding\", \"React.joinBindings\"].includes(\r\n reactApiPath(context, resolved.value) ?? \"\",\r\n )\r\n )\r\n return true;\r\n\r\n const name = resolved.value.childForFieldName(\"name\");\r\n\r\n return (\r\n name?.type === \"method_index_expression\" &&\r\n name.namedChildren.at(-1)?.text === \"map\" &&\r\n Boolean(\r\n name.namedChildren[0] && isBinding(context, name.namedChildren[0], seen),\r\n )\r\n );\r\n}\r\n\r\nfunction isLazyRefInitialization(\r\n context: RuleContext,\r\n call: SyntaxNode,\r\n): boolean {\r\n let node = call.parent;\r\n\r\n while (\r\n node &&\r\n ![\"function_definition\", \"function_declaration\"].includes(node.type)\r\n ) {\r\n if (node.type === \"if_statement\") {\r\n const condition = node.childForFieldName(\"condition\");\r\n const text = condition && normalizeExpressionText(condition.text);\r\n\r\n const match = text?.match(\r\n /^(?:([A-Za-z_]\\w*)\\.current==nil|nil==([A-Za-z_]\\w*)\\.current)$/,\r\n );\r\n\r\n if (!match) return false;\r\n\r\n const refName = match[1] ?? match[2];\r\n\r\n const ref =\r\n condition &&\r\n [...context.walk(condition)].find(\r\n (child) => child.type === \"identifier\" && child.text === refName,\r\n );\r\n\r\n const resolved = ref && resolveLocalValue(context, ref);\r\n\r\n if (!resolved || reactApiPath(context, resolved.value) !== \"React.useRef\")\r\n return false;\r\n\r\n let assignment = call.parent;\r\n\r\n while (assignment && assignment.id !== node.id) {\r\n if (assignment.type === \"assignment_statement\") {\r\n const target = assignment.namedChildren.find(\r\n (child) => child.type === \"variable_list\",\r\n )?.namedChildren[0];\r\n\r\n const thenBlock = node.namedChildren.find(\r\n (child) => child.type === \"block\",\r\n );\r\n\r\n return Boolean(\r\n target &&\r\n normalizeExpressionText(target.text) === `${refName}.current` &&\r\n thenBlock &&\r\n call.startIndex >= thenBlock.startIndex &&\r\n call.endIndex <= thenBlock.endIndex,\r\n );\r\n }\r\n\r\n assignment = assignment.parent;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n node = node.parent;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isRefInitializer(context: RuleContext, call: SyntaxNode): boolean {\r\n let node = call;\r\n\r\n while (node.parent) {\r\n const parent = node.parent;\r\n\r\n if ([\"function_definition\", \"function_declaration\"].includes(parent.type))\r\n return false;\r\n\r\n if (parent.type === \"arguments\") {\r\n const hook = parent.parent;\r\n\r\n if (\r\n hook?.type === \"function_call\" &&\r\n reactApiPath(context, hook) === \"React.useRef\" &&\r\n context.callArguments(hook)[0]?.id === node.id\r\n )\r\n return true;\r\n }\r\n\r\n node = parent;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport const noCreateBindingInRender: RuleDefinition = {\r\n id: \"react-luau/no-create-binding-in-render\",\r\n category: \"Correctness\",\r\n severity: \"warning\",\r\n description: \"Preserve binding identity across function component renders\",\r\n\r\n guidance: {\r\n explanation:\r\n \"React.createBinding creates a new binding and initial value on every render\",\r\n\r\n help: \"Use React.useBinding to preserve the binding and updater across renders\",\r\n },\r\n\r\n run(context) {\r\n return context.findCalls().flatMap((call) => {\r\n const owner = context.nearestFunction(call);\r\n\r\n if (\r\n !owner ||\r\n (!owner.isComponent && !owner.isHook) ||\r\n reactApiPath(context, call) !== \"React.createBinding\" ||\r\n isLazyRefInitialization(context, call)\r\n )\r\n return [];\r\n\r\n return [\r\n {\r\n node: callNameNode(call),\r\n message: \"React.createBinding creates a new binding on every render\",\r\n help: \"Use React.useBinding so rerenders preserve the binding and its current value\",\r\n },\r\n ];\r\n });\r\n },\r\n};\r\n\r\nexport const noBindingGetValueInRender: RuleDefinition = {\r\n id: \"react-luau/no-binding-getvalue-in-render\",\r\n category: \"Correctness\",\r\n severity: \"warning\",\r\n description:\r\n \"Do not read binding snapshots during render except to initialize a ref\",\r\n\r\n guidance: {\r\n explanation:\r\n \"getValue returns a snapshot without subscribing — later binding updates do not rerender the component or update props built from that snapshot\",\r\n\r\n help: \"Pass the binding directly to the prop or use binding:map(function(value) return ... end)\",\r\n caveat:\r\n \"A snapshot used to initialize React.useRef is allowed because the initial value is intentionally preserved\",\r\n },\r\n\r\n run(context) {\r\n return context.findCalls().flatMap((call) => {\r\n const owner = context.nearestFunction(call);\r\n const name = call.childForFieldName(\"name\");\r\n const receiver = name?.namedChildren[0];\r\n\r\n if (\r\n !owner ||\r\n (!owner.isComponent && !owner.isHook) ||\r\n name?.type !== \"method_index_expression\" ||\r\n name.namedChildren.at(-1)?.text !== \"getValue\" ||\r\n !receiver ||\r\n !isBinding(context, receiver) ||\r\n isRefInitializer(context, call)\r\n )\r\n return [];\r\n\r\n return [\r\n {\r\n node: name,\r\n message: `${receiver.text}:getValue() reads a binding snapshot during render`,\r\n help: \"Pass the binding itself or map it so the prop subscribes to binding updates\",\r\n },\r\n ];\r\n });\r\n },\r\n};\r\n",
|
|
11
11
|
"import {\r\n reactApiPath,\r\n resolveLocalFunction,\r\n resolveLocalValue,\r\n} from \"../ast/local-values\";\r\nimport type { RuleDefinition } from \"../types\";\r\nimport { callNameNode } from \"./helpers\";\r\n\r\nexport const noCallComponentAsFunction: RuleDefinition = {\r\n id: \"react-luau/no-call-component-as-function\",\r\n category: \"Correctness\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Render components with React.createElement instead of calling them directly\",\r\n\r\n guidance: {\r\n explanation:\r\n \"A direct call gives the child no separate component identity and runs its hooks as part of the caller\",\r\n\r\n help: \"Pass the component function and its props to React.createElement\",\r\n },\r\n\r\n run(context) {\r\n const components = new Set<number>();\r\n const returnsElement = new Set<number>();\r\n\r\n for (const node of context.walk()) {\r\n if (node.type !== \"return_statement\") continue;\r\n\r\n const expression = node.namedChildren.find(\r\n (child) => child.type === \"expression_list\",\r\n )?.namedChildren[0];\r\n const returned = expression && resolveLocalValue(context, expression);\r\n const owner = context.nearestFunction(node);\r\n\r\n if (\r\n owner &&\r\n returned?.returnIndex === 0 &&\r\n returned.value.type === \"function_call\" &&\r\n reactApiPath(context, returned.value) === \"React.createElement\"\r\n )\r\n returnsElement.add(owner.node.id);\r\n }\r\n\r\n for (const call of context.findCalls()) {\r\n if (reactApiPath(context, call) === \"React.createElement\") {\r\n const argument = context.callArguments(call)[0];\r\n const component = argument && resolveLocalFunction(context, argument);\r\n\r\n if (component) components.add(component.node.id);\r\n }\r\n\r\n const owner = context.nearestFunction(call);\r\n\r\n if (\r\n owner?.isComponent &&\r\n returnsElement.has(owner.node.id) &&\r\n /^React\\.use[A-Z]/.test(reactApiPath(context, call) ?? \"\")\r\n )\r\n components.add(owner.node.id);\r\n }\r\n\r\n return context.findCalls().flatMap((call) => {\r\n const name = call.childForFieldName(\"name\");\r\n const component = name && resolveLocalFunction(context, name);\r\n\r\n if (!component || !components.has(component.node.id)) return [];\r\n\r\n return [\r\n {\r\n node: callNameNode(call),\r\n message: `${name!.text} is called directly instead of rendered as a component`,\r\n help: \"Use React.createElement(component, props) so React owns the component's hooks and identity\",\r\n },\r\n ];\r\n });\r\n },\r\n};\r\n",
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
"import type { FixPreview } from \"../types\";\n\nconst examples: Record<string, FixPreview> = {\n \"react-luau/no-mutating-state-updater\": {\n before: `setItems(function(previous)\n\\ttable.insert(previous, item)\n\\treturn previous\nend)`,\n after: `setItems(function(previous)\n\\tlocal nextItems = table.clone(previous)\n\\ttable.insert(nextItems, item)\n\\treturn nextItems\nend)`,\n note: \"Copy any nested table being changed as well\",\n },\n\n \"react-luau/no-call-component-as-function\": {\n before: `local child = Child({ value = value })`,\n after: `local child = React.createElement(Child, { value = value })`,\n note: \"Give the child its own component identity and hook lifecycle\",\n },\n\n \"react-luau/no-create-binding-in-render\": {\n before: `local value, setValue = React.createBinding(0)`,\n after: `local value, setValue = React.useBinding(0)`,\n note: \"Keep the binding and updater stable across renders\",\n },\n\n \"react-luau/no-binding-getvalue-in-render\": {\n before: `Text = tostring(value:getValue())`,\n after: `Text = value:map(function(current)\n\\treturn tostring(current)\nend)`,\n note: \"Map the binding so later updates reach the prop\",\n },\n\n \"react-luau/usememo-must-return\": {\n before: `local result = React.useMemo(function()\n\\tcalculateValue(input)\nend, { input })`,\n after: `local result = React.useMemo(function()\n\\treturn calculateValue(input)\nend, { input })`,\n note: \"Return the calculated value instead of discarding it\",\n },\n\n \"react-luau/parse-error\": {\n before: `return React.createElement(\"Frame\", {\n\\tVisible = true,\n)`,\n after: `return React.createElement(\"Frame\", {\n\\tVisible = true,\n})`,\n note: \"Close the props table before closing the call. Parse errors can also come from unsupported syntax. Inspect the reported location before applying a repair.\",\n },\n\n \"react-luau/rules-of-hooks\": {\n before: `if enabled then\n\\tlocal value = React.useMemo(function()\n\\t\\treturn computeValue()\n\\tend, {})\nend`,\n after: `local value = React.useMemo(function()\n\\treturn computeValue()\nend, {})\n\nif enabled then\n\\t-- use value here\nend`,\n note: \"Keep hook calls at the top level, then branch on their results.\",\n },\n\n \"react-luau/exhaustive-deps\": {\n before: `React.useEffect(function()\n\\tprint(value)\nend, {})`,\n after: `React.useEffect(function()\n\\tprint(value)\nend, { value })`,\n note: \"Make the dependency table match the reactive values captured by the hook callback.\",\n },\n\n \"react-luau/effect-needs-cleanup\": {\n before: `React.useEffect(function()\n\\tlocal connection = signal:Connect(onChanged)\nend, { signal, onChanged })`,\n after: `React.useEffect(function()\n\\tlocal connection = signal:Connect(onChanged)\n\\treturn function()\n\\t\\tconnection:Disconnect()\n\\tend\nend, { signal, onChanged })`,\n note: \"Return cleanup from the same effect that creates the owned resource.\",\n },\n\n \"react-luau/no-derived-state-effect\": {\n before: `local value, setValue = React.useState(0)\n\nReact.useEffect(function()\n\\tsetValue(input * scale)\nend, { input, scale })`,\n after: `local value = input * scale`,\n note: \"Compute render-known derived values during render instead of synchronizing another state cell.\",\n },\n\n \"react-luau/no-self-updating-effect\": {\n before: `React.useEffect(function()\n\\tsetCount(count + 1)\nend, { count })`,\n after: `local function increment()\n\\tsetCount(function(previous)\n\\t\\treturn previous + 1\n\\tend)\nend`,\n note: \"Move the update to the event that owns it, or add a real convergence guard when an effect is required.\",\n },\n\n \"react-luau/no-effect-with-fresh-deps\": {\n before: `local options = { enabled = enabled }\n\nReact.useEffect(function()\n\\tapplyOptions(options)\nend, { options })`,\n after: `React.useEffect(function()\n\\tlocal options = { enabled = enabled }\n\\tapplyOptions(options)\nend, { enabled })`,\n note: \"Depend on stable reactive inputs rather than an object or function recreated every render.\",\n },\n\n \"react-luau/no-mutable-in-deps\": {\n before: `React.useEffect(function()\n\\tuseValue(ref.current)\nend, { ref.current })`,\n after: `React.useEffect(function()\n\\tuseValue(ref.current)\nend, {})`,\n note: \"This effect reads the ref after mount only. A ref mutation cannot schedule another effect. Use state or a subscription if changes must trigger work. Keep other reactive dependencies in the table.\",\n },\n\n \"react-luau/prefer-binding-over-state\": {\n before: `local value, setValue = React.useState(0)`,\n after: `local value, setValue = React.useBinding(0)`,\n note: \"Use a Binding when updates only need to flow into Binding-aware visual consumers.\",\n },\n\n \"react-luau/prefer-binding-over-state-candidate\": {\n before: `local value, setValue = React.useState(0)\nsignal:Connect(setValue)\n-- value is used for presentation`,\n after: `local value, setValue = React.useBinding(0)\nsignal:Connect(setValue)\n-- keep separate React state too if structure depends on it`,\n note: \"Use a Binding when this is really an external presentation stream. Keep or split React state when the event represents semantic UI state or needs reconciliation.\",\n },\n\n \"react-luau/rerender-unstable-memo-props\": {\n before: `return React.createElement(MemoizedButton, {\n\\tonClick = function()\n\\t\\tdoSomething()\n\\tend,\n})`,\n after: `local onClick = React.useCallback(function()\n\\tdoSomething()\nend, {})\n\nreturn React.createElement(MemoizedButton, {\n\\tonClick = onClick,\n})`,\n note: \"Stabilize identity only when the memoized child is worth skipping. Moving construction into the child or removing ineffective memoization can also be better.\",\n },\n\n \"react-luau/rerender-high-frequency-state\": {\n before: `local transparency, setTransparency = React.useState(0)\nReact.useEffect(function()\n\\tlocal connection = RunService.RenderStepped:Connect(function()\n\\t\\tsetTransparency(readTransparency())\n\\tend)\n\\treturn function() connection:Disconnect() end\nend, { readTransparency })\nreturn React.createElement(\"Frame\", {\n\\tBackgroundTransparency = transparency,\n})`,\n after: `local transparency, setTransparency = React.useBinding(0)\nReact.useEffect(function()\n\\tlocal connection = RunService.RenderStepped:Connect(function()\n\\t\\tsetTransparency(readTransparency())\n\\tend)\n\\treturn function() connection:Disconnect() end\nend, { readTransparency })\nreturn React.createElement(\"Frame\", {\n\\tBackgroundTransparency = transparency,\n})`,\n note: \"A Binding updates this host property without scheduling component renders. Keep state for values that control child structure, and keep the subscription cleanup.\",\n },\n\n \"react-luau/rerender-unnecessary-usememo\": {\n before: `local doubled = React.useMemo(function()\n\\treturn value * 2\nend, { value })`,\n after: `local doubled = value * 2`,\n note: \"Compute cheap derived values directly when stable identity is not observed.\",\n },\n\n \"react-luau/rerender-unnecessary-usecallback\": {\n before: `local functionName = React.useCallback(function()\n\\tdoSomething()\nend, {})`,\n after: `local function functionName()\n\\tdoSomething()\nend`,\n note: \"Use a normal local function when nothing observes the callback's identity.\",\n },\n\n \"react-luau/rerender-static-discovery-in-render\": {\n before: `local function Component()\n\\tlocal modules = ReplicatedStorage.Modules:GetChildren()\n\\treturn renderModules(modules)\nend`,\n after: `local modules = ReplicatedStorage.Modules:GetChildren()\n\nlocal function Component()\n\\treturn renderModules(modules)\nend`,\n note: \"Move truly static discovery to module scope. If the source can change, cache or subscribe to the real changing input instead.\",\n },\n\n \"react-luau/rerender-repeated-collection-scan\": {\n before: `for _, item in items do\n\\tbuildRow(item)\nend\n\nfor _, item in items do\n\\tbuildLookup(item)\nend`,\n after: `for _, item in items do\n\\tbuildRow(item)\n\\tbuildLookup(item)\nend`,\n note: \"Combine passes when they iterate the same collection and can safely share one traversal.\",\n },\n\n \"react-luau/rerender-static-state\": {\n before: `local value, setValue = React.useState(computeValue())\n-- setValue is never used`,\n after: `local valueRef = React.useRef(nil)\nif valueRef.current == nil then\n\\tvalueRef.current = computeValue()\nend\nlocal value = valueRef.current`,\n note: \"This preserves a pure, non-nil initial value without a state setter. Derive a local value directly only when recomputing on every render is intended.\",\n },\n\n \"react-luau/prefer-use-ref-for-mutable-cell\": {\n before: `local cell = React.useMemo(function()\n\\treturn { current = initialValue }\nend, {})`,\n after: `local cell = React.useRef(initialValue)`,\n note: \"useRef directly expresses a stable mutable current cell.\",\n },\n\n \"react-luau/rerender-functional-setstate\": {\n before: `setCount(count + 1)`,\n after: `setCount(function(previous)\n\\treturn previous + 1\nend)`,\n note: \"Use the previous value supplied by React when a retained callback computes the next state from old state.\",\n },\n\n \"react-luau/rerender-lazy-state-init\": {\n before: `local value, setValue = React.useState(buildExpensiveValue())`,\n after: `local value, setValue = React.useState(function()\n\\treturn buildExpensiveValue()\nend)`,\n note: \"Pass a lazy initializer function so expensive construction only runs when the state is first created.\",\n },\n\n \"react-luau/rerender-lazy-ref-init\": {\n before: `local valueRef = React.useRef(buildExpensiveValue())`,\n after: `local valueRef = React.useRef(nil)\nif valueRef.current == nil then\n\\tvalueRef.current = buildExpensiveValue()\nend`,\n note: \"Use nil-guarded lazy initialization only for pure construction. Owned resources with cleanup usually belong in an effect.\",\n },\n\n \"react-luau/rerender-state-only-in-handlers\": {\n before: `local value, setValue = React.useState(0)\n\nlocal function onInput()\n\\tprint(value)\nend`,\n after: `local valueRef = React.useRef(0)\n\nlocal function onInput()\n\\tprint(valueRef.current)\nend`,\n note: \"Use a ref when updates do not need to participate in rendering or hook dependencies.\",\n },\n\n \"react-luau/no-set-state-in-render\": {\n before: `local value, setValue = React.useState(0)\nsetValue(nextValue)`,\n after: `local value, setValue = React.useState(0)\n\nReact.useEffect(function()\n\\tsetValue(nextValue)\nend, { nextValue })`,\n note: \"Move the update to the event or effect that owns it. Prefer deriving the value directly when no state synchronization is needed.\",\n },\n\n \"react-luau/no-direct-state-mutation\": {\n before: `items[index] = nextItem\nsetItems(items)`,\n after: `local nextItems = table.clone(items)\nnextItems[index] = nextItem\nsetItems(nextItems)`,\n note: \"Create a new table identity before updating React state.\",\n },\n\n \"react-luau/no-ref-current-in-render\": {\n before: `latest.current = value`,\n after: `React.useEffect(function()\n\\tlatest.current = value\nend, { value })`,\n note: \"When committed-versus-uncommitted values matter, update the latest-value ref after commit.\",\n },\n\n \"react-luau/no-create-context-in-render\": {\n before: `local function Component()\n\\tlocal Context = React.createContext(nil)\n\\treturn React.createElement(Context.Provider)\nend`,\n after: `local Context = React.createContext(nil)\n\nlocal function Component()\n\\treturn React.createElement(Context.Provider)\nend`,\n note: \"Create the Context once at module scope so its identity is stable.\",\n },\n\n \"react-luau/no-nested-component-definition\": {\n before: `local function Parent()\n\\tlocal function Child()\n\\t\\treturn React.createElement(\"Frame\")\n\\tend\n\\treturn React.createElement(Child)\nend`,\n after: `local function Child()\n\\treturn React.createElement(\"Frame\")\nend\n\nlocal function Parent()\n\\treturn React.createElement(Child)\nend`,\n note: \"Move component definitions out of render so React sees a stable component identity.\",\n },\n\n \"react-luau/no-random-key\": {\n before: `React.createElement(Row, {\n\\tkey = HttpService:GenerateGUID(false),\n})`,\n after: `React.createElement(Row, {\n\\tkey = item.id,\n})`,\n note: \"Use identity that remains stable for the lifetime of the logical item.\",\n },\n\n \"react-luau/no-yield-in-render\": {\n before: `local function Component(props)\n\\tlocal result = props.remote:InvokeServer()\n\\treturn React.createElement(\"TextLabel\", { Text = tostring(result) })\nend`,\n after: `local function Component(props)\n\\tlocal result, setResult = React.useState(\"Loading...\")\n\\tReact.useEffect(function()\n\\t\\tlocal active = true\n\\t\\ttask.spawn(function()\n\\t\\t\\tlocal ok, value = pcall(function()\n\\t\\t\\t\\treturn props.remote:InvokeServer()\n\\t\\t\\tend)\n\\t\\t\\tif active then\n\\t\\t\\t\\tsetResult(if ok then tostring(value) else \"Request failed\")\n\\t\\t\\tend\n\\t\\tend)\n\\t\\treturn function() active = false end\n\\tend, { props.remote })\n\\treturn React.createElement(\"TextLabel\", { Text = result })\nend`,\n note: \"Start yielding work after commit and ignore stale results after cleanup. This does not cancel the server request. Production data loading may also need retries or request deduplication.\",\n },\n\n \"react-luau/no-task-spawn-in-render\": {\n before: `local function Component()\n\\ttask.spawn(doWork)\n\\treturn React.createElement(\"Frame\")\nend`,\n after: `local function Component()\n\\tReact.useEffect(function()\n\\t\\tlocal thread = task.spawn(doWork)\n\\t\\treturn function()\n\\t\\t\\tif coroutine.status(thread) ~= \"dead\" then\n\\t\\t\\t\\ttask.cancel(thread)\n\\t\\t\\tend\n\\t\\tend\n\\tend, { doWork })\n\\treturn React.createElement(\"Frame\")\nend`,\n note: \"Schedule work from the effect or event that owns the side effect, not while rendering.\",\n },\n\n \"react-luau/no-side-effects-in-render\": {\n before: `local connection = signal:Connect(onChanged)`,\n after: `React.useEffect(function()\n\\tlocal connection = signal:Connect(onChanged)\n\\treturn function()\n\\t\\tconnection:Disconnect()\n\\tend\nend, { signal, onChanged })`,\n note: \"Move imperative work into an owned effect with cleanup. Disconnect subscriptions, destroy owned Instances, and cancel tweens. Prefer React.createElement for React-owned Instances.\",\n },\n\n \"react-luau/no-create-root-in-render\": {\n before: `local function Component()\n\\tlocal root = ReactRoblox.createRoot(container)\n\\troot:render(element)\nend`,\n after: `local root = ReactRoblox.createRoot(container)\nroot:render(element)`,\n note: \"Create and own roots outside component render. A component should not imperatively create another React root while rendering.\",\n },\n\n \"react-luau/no-static-name-prop\": {\n before: `return React.createElement(\"Frame\", {}, {\n\\tChild = React.createElement(\"TextLabel\", {\n\\t\\tName = \"Label\",\n\\t}),\n})`,\n after: `return React.createElement(\"Frame\", {}, {\n\\tLabel = React.createElement(\"TextLabel\"),\n})`,\n note: \"The child table key names a static instance. Keep Name in props when the name must change dynamically.\",\n },\n\n \"react-luau/no-prop-mutation\": {\n before: `props.value = normalize(props.value)`,\n after: `local value = normalize(props.value)`,\n note: \"Treat props as immutable and derive a local value or update state in the owner.\",\n },\n\n \"react-luau/no-array-index-as-key\": {\n before: `for index, item in items do\n\\tchildren[index] = React.createElement(Row, {\n\\t\\tkey = index,\n\\t})\nend`,\n after: `for _, item in items do\n\\tchildren[item.id] = React.createElement(Row, {\n\\t\\tkey = item.id,\n\\t})\nend`,\n note: \"Use stable item identity when items can move. Keep positional identity only when replacing the occupant of a slot is intentional.\",\n },\n\n \"react-luau/unstable-context-value\": {\n before: `return React.createElement(Context.Provider, {\n\\tvalue = { user = user, theme = theme },\n})`,\n after: `local contextValue = React.useMemo(function()\n\\treturn { user = user, theme = theme }\nend, { user, theme })\n\nreturn React.createElement(Context.Provider, {\n\\tvalue = contextValue,\n})`,\n note: \"Memoize the provider value when consumer updates depend on table identity.\",\n },\n};\n\nexport function fixExampleForRule(ruleId: string): FixPreview | undefined {\n const example = examples[ruleId];\n\n return example ? { ...example, kind: example.kind ?? \"pattern\" } : undefined;\n}\n",
|
|
17
17
|
"import type { SyntaxNode } from \"./syntax\";\r\nimport type { RuleContext } from \"./types\";\r\n\r\n/**\r\n * Engine members that are documented/known to yield. The analyzer intentionally\r\n * matches exact member names instead of every `*Async` function so custom\r\n * promise-style APIs do not become false positives merely because of naming.\r\n */\r\nconst YIELDING_ENGINE_MEMBERS = new Set([\r\n \"WaitForChild\",\r\n \"Wait\",\r\n \"GetAsync\",\r\n \"SetAsync\",\r\n \"UpdateAsync\",\r\n \"RemoveAsync\",\r\n \"IncrementAsync\",\r\n \"GetSortedAsync\",\r\n \"ListKeysAsync\",\r\n \"ListVersionsAsync\",\r\n \"GetVersionAsync\",\r\n \"PublishAsync\",\r\n \"SubscribeAsync\",\r\n \"RequestAsync\",\r\n \"PostAsync\",\r\n \"PreloadAsync\",\r\n \"ComputeAsync\",\r\n \"FilterStringAsync\",\r\n \"FilterStringForBroadcast\",\r\n \"FilterStringForPlayerAsync\",\r\n \"GetNonChatStringForBroadcastAsync\",\r\n \"GetNonChatStringForUserAsync\",\r\n \"GetChatForUserAsync\",\r\n \"AwardBadgeAsync\",\r\n \"UserHasBadgeAsync\",\r\n \"GetBadgeInfoAsync\",\r\n \"GetPolicyInfoForPlayerAsync\",\r\n \"GetTranslatorForPlayerAsync\",\r\n \"GetUserIdFromNameAsync\",\r\n \"GetNameFromUserIdAsync\",\r\n \"GetHumanoidDescriptionFromUserId\",\r\n \"GetHumanoidDescriptionFromOutfitId\",\r\n \"GetFriendsAsync\",\r\n \"GetUserThumbnailAsync\",\r\n \"GetUserInfosByUserIdsAsync\",\r\n \"GetGroupInfoAsync\",\r\n \"GetAlliesAsync\",\r\n \"GetEnemiesAsync\",\r\n \"GetGroupsAsync\",\r\n \"TeleportAsync\",\r\n \"ReserveServerAsync\",\r\n \"CreatePlaceAsync\",\r\n \"SavePlaceAsync\",\r\n \"LoadAsset\",\r\n \"LoadAssetVersion\",\r\n \"GetProductInfo\",\r\n \"CreateEditableImageAsync\",\r\n \"CreateEditableMeshAsync\",\r\n \"GetBundleDetailsAsync\",\r\n \"GetGamePlacesAsync\",\r\n \"GetDeveloperProductsAsync\",\r\n \"GetInventoryAsync\",\r\n \"GetItemDetailsAsync\",\r\n \"GetBatchItemDetailsAsync\",\r\n \"PromptCreateAssetAsync\",\r\n \"PromptImportAnimationClipFromVideoAsync\",\r\n \"GetAnimationClipAsync\",\r\n]);\r\n\r\nconst ROBLOX_MUTABLE_LEAFS = new Set([\r\n \"AbsolutePosition\",\r\n \"AbsoluteRotation\",\r\n \"AbsoluteSize\",\r\n \"AssemblyAngularVelocity\",\r\n \"AssemblyLinearVelocity\",\r\n \"CFrame\",\r\n \"Changed\",\r\n \"ContentSize\",\r\n \"CurrentCamera\",\r\n \"Enabled\",\r\n \"FocusLost\",\r\n \"Focused\",\r\n \"Heartbeat\",\r\n \"InputBegan\",\r\n \"InputChanged\",\r\n \"InputEnded\",\r\n \"Parent\",\r\n \"Position\",\r\n \"PreRender\",\r\n \"PreSimulation\",\r\n \"RenderStepped\",\r\n \"Rotation\",\r\n \"Size\",\r\n \"Stepped\",\r\n \"TextBounds\",\r\n \"Value\",\r\n \"ViewportSize\",\r\n \"WorldCFrame\",\r\n \"WorldPosition\",\r\n \"X\",\r\n \"Y\",\r\n]);\r\n\r\nconst INSTANCE_FACTORY_MEMBERS = new Set([\r\n \"Clone\",\r\n \"FindFirstAncestor\",\r\n \"FindFirstAncestorOfClass\",\r\n \"FindFirstAncestorWhichIsA\",\r\n \"FindFirstChild\",\r\n \"FindFirstChildOfClass\",\r\n \"FindFirstChildWhichIsA\",\r\n \"GetButton\",\r\n \"GetMouse\",\r\n \"GetService\",\r\n \"WaitForChild\",\r\n]);\r\n\r\nexport function finalCallMember(path: string): string {\r\n return path.split(/[.:]/).at(-1) ?? path;\r\n}\r\n\r\nfunction declarationInitializer(node: SyntaxNode, name: string): SyntaxNode | null | undefined {\r\n if (node.type !== \"variable_declaration\") return undefined;\r\n const assignment = node.namedChildren.find((child) => child.type === \"assignment_statement\");\r\n const variables = assignment?.namedChildren.find((child) => child.type === \"variable_list\")\r\n ?? node.namedChildren.find((child) => child.type === \"variable_list\");\r\n const expressions = assignment?.namedChildren.find((child) => child.type === \"expression_list\");\r\n const names = variables?.namedChildren.filter((child) => child.type === \"identifier\") ?? [];\r\n const index = names.findIndex((candidate) => candidate.text === name);\r\n if (index < 0) return undefined;\r\n return expressions?.namedChildren[index] ?? expressions?.namedChildren[0] ?? null;\r\n}\r\n\r\nfunction functionBindsName(node: SyntaxNode, name: string): boolean {\r\n if (node.type !== \"function_definition\" && node.type !== \"function_declaration\") return false;\r\n const parameters = node.childForFieldName(\"parameters\");\r\n if (!parameters) return false;\r\n return parameters.namedChildren.some((parameter) =>\r\n parameter.namedChildren.some((child) => child.type === \"identifier\" && child.text === name)\r\n || (parameter.type === \"identifier\" && parameter.text === name)\r\n );\r\n}\r\n\r\nfunction loopBindsName(node: SyntaxNode, name: string): boolean {\r\n if (node.type !== \"for_statement\") return false;\r\n const header = node.text.split(/\\bdo\\b/s, 1)[0] ?? \"\";\r\n const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n return new RegExp(`^\\\\s*for\\\\s+(?:${escaped}\\\\s*=|[^\\\\n]*\\\\b${escaped}\\\\b[^\\\\n]*\\\\bin\\\\b)`, \"s\").test(header);\r\n}\r\n\r\nfunction visibleInitializer(name: string, from: SyntaxNode, context: RuleContext): SyntaxNode | null | undefined {\r\n let current: SyntaxNode | null = from.parent;\r\n while (current) {\r\n if (current.type === \"block\" || current.id === context.root.id) {\r\n const children = current.namedChildren;\r\n for (let index = children.length - 1; index >= 0; index -= 1) {\r\n const child = children[index];\r\n if (child.startIndex >= from.startIndex) continue;\r\n const initializer = declarationInitializer(child, name);\r\n if (initializer !== undefined) return initializer;\r\n if (child.type === \"function_declaration\") {\r\n const declared = child.childForFieldName(\"name\")?.text.replace(/\\s+/g, \"\") ?? \"\";\r\n if (declared === name) return null;\r\n }\r\n }\r\n }\r\n if (functionBindsName(current, name) || loopBindsName(current, name)) return null;\r\n current = current.parent;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction expressionHasRobloxOrigin(\r\n expression: SyntaxNode | null | undefined,\r\n from: SyntaxNode,\r\n context: RuleContext,\r\n seen: Set<string>,\r\n): boolean {\r\n if (!expression) return false;\r\n const normalized = expression.text.replace(/\\s+/g, \"\");\r\n if (/^(?:game|workspace|script)(?:[.:]|$)/.test(normalized) || /^Instance\\.new\\(/.test(normalized)) return true;\r\n\r\n const root = normalized.match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\r\n if (!root || root === \"require\" || seen.has(root)) return false;\r\n if (expression.type !== \"identifier\" && expression.type !== \"function_call\") return false;\r\n\r\n seen.add(root);\r\n return expressionHasRobloxOrigin(visibleInitializer(root, from, context), from, context, seen);\r\n}\r\n\r\nfunction hasRobloxReceiver(path: string, call: SyntaxNode, context: RuleContext): boolean {\r\n const normalized = path.replace(/\\s+/g, \"\");\r\n if (/^(?:game|workspace|script)(?:[.:]|$)/.test(normalized)) return true;\r\n const root = normalized.match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\r\n if (!root) return false;\r\n return expressionHasRobloxOrigin(visibleInitializer(root, call, context), call, context, new Set([root]));\r\n}\r\n\r\nconst runServiceCallCache = new WeakMap<RuleContext, Map<number, boolean>>();\r\nconst runServiceExpressionCache = new WeakMap<RuleContext, Map<number, boolean>>();\r\nconst highFrequencyRobloxCallCache = new WeakMap<RuleContext, Map<number, boolean>>();\r\nconst highFrequencyRobloxExpressionCache = new WeakMap<RuleContext, Map<number, boolean>>();\r\n\r\nfunction cachedNodeBoolean(\r\n cache: WeakMap<RuleContext, Map<number, boolean>>,\r\n context: RuleContext,\r\n node: SyntaxNode,\r\n compute: () => boolean,\r\n): boolean {\r\n let entries = cache.get(context);\r\n if (!entries) {\r\n entries = new Map<number, boolean>();\r\n cache.set(context, entries);\r\n }\r\n const cached = entries.get(node.id);\r\n if (cached !== undefined) return cached;\r\n const value = compute();\r\n entries.set(node.id, value);\r\n return value;\r\n}\r\n\r\nconst RUN_SERVICE_EVENTS = new Set([\r\n \"RenderStepped\",\r\n \"Heartbeat\",\r\n \"Stepped\",\r\n \"PreRender\",\r\n \"PreSimulation\",\r\n \"PostSimulation\",\r\n]);\r\n\r\nfunction expressionIsRunService(\r\n expression: SyntaxNode | null | undefined,\r\n from: SyntaxNode,\r\n context: RuleContext,\r\n seen: Set<string>,\r\n): boolean {\r\n if (!expression) return false;\r\n const normalized = expression.text.replace(/\\s+/g, \"\");\r\n if (/^game:GetService\\([\"']RunService[\"']\\)$/.test(normalized)) return true;\r\n if (expression.type !== \"identifier\") return false;\r\n const name = expression.text;\r\n if (seen.has(name)) return false;\r\n seen.add(name);\r\n return expressionIsRunService(visibleInitializer(name, from, context), from, context, seen);\r\n}\r\n\r\nfunction rootIsRunService(root: string, from: SyntaxNode, context: RuleContext): boolean {\r\n if (root === \"game\") return false;\r\n return expressionIsRunService(visibleInitializer(root, from, context), from, context, new Set([root]));\r\n}\r\n\r\nexport function isHighFrequencyRunServiceExpression(node: SyntaxNode, context: RuleContext): boolean {\r\n return cachedNodeBoolean(runServiceExpressionCache, context, node, () => {\r\n const normalized = node.text.replace(/\\s+/g, \"\");\r\n if (/^game:GetService\\([\"']RunService[\"']\\)\\.(?:RenderStepped|Heartbeat|Stepped|PreRender|PreSimulation|PostSimulation)$/.test(normalized)) {\r\n return true;\r\n }\r\n const match = normalized.match(/^([A-Za-z_][A-Za-z0-9_]*)\\.(RenderStepped|Heartbeat|Stepped|PreRender|PreSimulation|PostSimulation)$/);\r\n return Boolean(match && RUN_SERVICE_EVENTS.has(match[2]) && rootIsRunService(match[1], node, context));\r\n });\r\n}\r\n\r\nexport function isHighFrequencyRunServiceCall(call: SyntaxNode, context: RuleContext): boolean {\r\n return cachedNodeBoolean(runServiceCallCache, context, call, () => {\r\n const normalized = (context.getCallPath(call) ?? \"\").replace(/\\s+/g, \"\");\r\n const direct = call.text.replace(/\\s+/g, \"\");\r\n if (/^game:GetService\\([\"']RunService[\"']\\)(?:\\.(?:RenderStepped|Heartbeat|Stepped|PreRender|PreSimulation|PostSimulation):Connect|:BindToRenderStep|:BindToSimulation)\\(/.test(direct)) {\r\n return true;\r\n }\r\n\r\n const event = normalized.match(/^([A-Za-z_][A-Za-z0-9_]*)\\.(RenderStepped|Heartbeat|Stepped|PreRender|PreSimulation|PostSimulation):Connect$/);\r\n if (event) return rootIsRunService(event[1], call, context);\r\n\r\n const bind = normalized.match(/^([A-Za-z_][A-Za-z0-9_]*):(?:BindToRenderStep|BindToSimulation)$/);\r\n return Boolean(bind && rootIsRunService(bind[1], call, context));\r\n });\r\n}\r\n\r\nconst HIGH_FREQUENCY_ROBLOX_EVENTS = new Set([\r\n \"InputChanged\",\r\n \"TouchMoved\",\r\n \"Move\",\r\n]);\r\n\r\nexport function isHighFrequencyRobloxExpression(node: SyntaxNode, context: RuleContext): boolean {\r\n return cachedNodeBoolean(highFrequencyRobloxExpressionCache, context, node, () => {\r\n if (isHighFrequencyRunServiceExpression(node, context)) return true;\r\n const normalized = node.text.replace(/\\s+/g, \"\");\r\n const match = normalized.match(/^(.+)\\.(InputChanged|TouchMoved|Move)$/);\r\n if (!match || !HIGH_FREQUENCY_ROBLOX_EVENTS.has(match[2])) return false;\r\n return hasRobloxReceiver(match[1], node, context);\r\n });\r\n}\r\n\r\nexport function isHighFrequencyRobloxCall(call: SyntaxNode, context: RuleContext): boolean {\r\n return cachedNodeBoolean(highFrequencyRobloxCallCache, context, call, () => {\r\n if (isHighFrequencyRunServiceCall(call, context)) return true;\r\n const normalized = (context.getCallPath(call) ?? \"\").replace(/\\s+/g, \"\");\r\n const event = normalized.match(/^(.+)\\.(InputChanged|TouchMoved|Move):Connect$/);\r\n if (!event || !HIGH_FREQUENCY_ROBLOX_EVENTS.has(event[2])) return false;\r\n return hasRobloxReceiver(event[1], call, context);\r\n });\r\n}\r\n\r\nexport function sourceHasHighFrequencyRunService(source: string): boolean {\r\n if (/game\\s*:\\s*GetService\\s*\\(\\s*[\"']RunService[\"']\\s*\\)\\s*(?:\\.\\s*(?:RenderStepped|Heartbeat|Stepped|PreRender|PreSimulation|PostSimulation)\\s*:\\s*Connect|:\\s*(?:BindToRenderStep|BindToSimulation))/.test(source)) {\r\n return true;\r\n }\r\n\r\n const aliases = new Set<string>();\r\n for (const match of source.matchAll(/\\blocal\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*game\\s*:\\s*GetService\\s*\\(\\s*[\"']RunService[\"']\\s*\\)/g)) {\r\n aliases.add(match[1]);\r\n }\r\n for (const alias of aliases) {\r\n const escaped = alias.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n const pattern = new RegExp(`\\\\b${escaped}\\\\s*(?:\\\\.\\\\s*(?:RenderStepped|Heartbeat|Stepped|PreRender|PreSimulation|PostSimulation)\\\\s*:\\\\s*Connect|:\\\\s*(?:BindToRenderStep|BindToSimulation))`);\r\n if (pattern.test(source)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function sourceHasHighFrequencyRobloxEvent(source: string): boolean {\r\n if (sourceHasHighFrequencyRunService(source)) return true;\r\n\r\n if (/game\\s*:\\s*GetService\\s*\\(\\s*[\"']UserInputService[\"']\\s*\\)\\s*\\.\\s*(?:InputChanged|TouchMoved)\\s*:\\s*Connect/.test(source)) {\r\n return true;\r\n }\r\n\r\n const serviceAliases = new Set<string>();\r\n for (const match of source.matchAll(\r\n /\\blocal\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*game\\s*:\\s*GetService\\s*\\(\\s*[\"']UserInputService[\"']\\s*\\)/g,\r\n )) {\r\n serviceAliases.add(match[1]);\r\n }\r\n for (const alias of serviceAliases) {\r\n const escaped = alias.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n if (new RegExp(`\\\\b${escaped}\\\\s*\\\\.\\\\s*(?:InputChanged|TouchMoved)\\\\s*:\\\\s*Connect`).test(source)) {\r\n return true;\r\n }\r\n }\r\n\r\n const playersAliases = new Set<string>();\r\n for (const match of source.matchAll(\r\n /\\blocal\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*game\\s*:\\s*GetService\\s*\\(\\s*[\"']Players[\"']\\s*\\)/g,\r\n )) {\r\n playersAliases.add(match[1]);\r\n }\r\n for (const players of playersAliases) {\r\n const escapedPlayers = players.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n for (const match of source.matchAll(\r\n new RegExp(`\\\\blocal\\\\s+([A-Za-z_][A-Za-z0-9_]*)\\\\s*=\\\\s*${escapedPlayers}\\\\s*\\\\.\\\\s*LocalPlayer\\\\s*:\\\\s*GetMouse\\\\s*\\\\(\\\\s*\\\\)`, \"g\"),\r\n )) {\r\n const mouse = match[1].replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n if (new RegExp(`\\\\b${mouse}\\\\s*\\\\.\\\\s*Move\\\\s*:\\\\s*Connect`).test(source)) return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function knownYieldReason(path: string, call?: SyntaxNode, context?: RuleContext): string | null {\r\n const normalized = path.replace(/\\s+/g, \"\");\r\n if (normalized === \"task.wait\") return \"task.wait\";\r\n if (normalized === \"coroutine.yield\") return \"coroutine.yield\";\r\n\r\n const member = finalCallMember(normalized);\r\n if (!YIELDING_ENGINE_MEMBERS.has(member)) return null;\r\n if (!call || !context) return null;\r\n return hasRobloxReceiver(normalized, call, context) ? member : null;\r\n}\r\n\r\nexport function functionYieldPoint(node: SyntaxNode, context: RuleContext): { call: SyntaxNode; reason: string } | null {\r\n for (const candidate of context.walk(node)) {\r\n if (candidate.type !== \"function_call\") continue;\r\n const nearest = context.nearestFunction(candidate);\r\n const owner = context.model.functionByNode.get(node.id);\r\n if (owner && nearest !== owner) continue;\r\n const path = context.resolveCallPath(context.getCallPath(candidate) ?? \"\");\r\n const reason = knownYieldReason(path, candidate, context);\r\n if (reason) return { call: candidate, reason };\r\n }\r\n return null;\r\n}\r\n\r\nexport function isInstanceProducingExpression(node: SyntaxNode | undefined, context: RuleContext): boolean {\r\n if (!node) return false;\r\n\r\n const text = node.text.trim();\r\n if (/^(?:workspace|game|script)(?:\\.|:|$)/.test(text)) return true;\r\n\r\n for (const candidate of context.walk(node)) {\r\n if (candidate.type !== \"function_call\") continue;\r\n const path = context.resolveCallPath(context.getCallPath(candidate) ?? \"\");\r\n if (path === \"Instance.new\") return true;\r\n if (INSTANCE_FACTORY_MEMBERS.has(finalCallMember(path))) return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport function mutableDependencyBase(path: string, externallyMutableRoots: Set<string>): string | null {\r\n const normalized = path.replace(/\\s+/g, \"\");\r\n if (/\\.current(?:\\.|$)/.test(normalized)) return \"\";\r\n\r\n const segments = normalized.split(\".\");\r\n if (segments.length < 2) return null;\r\n\r\n if (externallyMutableRoots.has(segments[0])) return segments[0];\r\n\r\n const mutableIndex = segments.findIndex((segment, index) => index > 0 && ROBLOX_MUTABLE_LEAFS.has(segment));\r\n if (mutableIndex <= 0) return null;\r\n\r\n const ownerPath = segments.slice(0, mutableIndex).join(\".\");\r\n const mutableLeaf = segments[mutableIndex];\r\n const signalLike = /(?:Changed|Began|Ended|Focused|Heartbeat|Stepped|PreRender|PreSimulation)$/.test(mutableLeaf);\r\n const objectLike = /(?:instance|attachment|camera|mouse|frame|gui|part|value|humanoid|sound|tween|workspace|root|viewport)/i.test(ownerPath);\r\n return signalLike || objectLike ? ownerPath : null;\r\n}\r\n",
|
|
18
18
|
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { FixPreview, FunctionInfo, RuleContext, RuleDefinition, Severity } from \"../types\";\r\nimport { sameNode } from \"../ast/walk\";\r\nimport { functionYieldPoint } from \"../roblox-semantics\";\r\nimport { callNameNode, declarationNames, firstFunctionArgument, functionInfoForNode } from \"./helpers\";\r\n\r\ninterface Resource {\r\n call: SyntaxNode;\r\n label: string;\r\n variable: string | null;\r\n detail?: string;\r\n severity?: Severity;\r\n cleanupMatches(cleanupText: string, variable: string | null, call: SyntaxNode): boolean;\r\n}\r\n\r\nconst ALWAYS_MANAGED_METHOD = /:GiveTask$/;\r\nconst GENERIC_MANAGER_METHOD = /:(?:Add|AddTask|AddObject|Track)$/;\r\nconst MANAGER_ROOT = /(?:maid|trove|janitor|cleaner|cleanup|scope|bin|disposer)(?:$|[._])/i;\r\nconst CONNECTION_RETURNING_METHODS = new Set([\"BindToSimulation\", \"SubscribeAsync\", \"OnUpdate\"]);\r\n\r\nfunction escapeRegExp(value: string): string {\r\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n}\r\n\r\nfunction connectionOwnerExpression(rawPath: string): string | null {\r\n const connected = rawPath.match(/^(.*):Connect$/s)?.[1];\r\n if (!connected) return null;\r\n\r\n const signalMethod = connected.match(/^(.*):(?:GetPropertyChangedSignal|GetAttributeChangedSignal)\\s*\\(.*\\)$/s);\r\n if (signalMethod) return signalMethod[1]?.trim() || null;\r\n\r\n const eventProperty = connected.match(/^(.*)\\.[A-Za-z_][A-Za-z0-9_]*$/s);\r\n return eventProperty?.[1]?.trim() || null;\r\n}\r\n\r\nfunction declarationExpressions(node: SyntaxNode): SyntaxNode[] {\r\n if (node.type !== \"variable_declaration\") return [];\r\n const assignment = node.namedChildren.find((child) => child.type === \"assignment_statement\");\r\n const expressionList = assignment?.namedChildren.find((child) => child.type === \"expression_list\");\r\n return expressionList?.namedChildren ?? [];\r\n}\r\n\r\nfunction initializerCreatesInstance(initializer: SyntaxNode | undefined, context: RuleContext): boolean {\r\n if (!initializer) return false;\r\n for (const candidate of context.walk(initializer)) {\r\n if (candidate.type !== \"function_call\") continue;\r\n if (context.resolveCallPath(context.getCallPath(candidate) ?? \"\") === \"Instance.new\") return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction bodyDeclaresInstanceBefore(\r\n body: SyntaxNode | null,\r\n beforeIndex: number,\r\n expression: string,\r\n context: RuleContext,\r\n): boolean {\r\n if (!body) return false;\r\n for (const child of body.namedChildren) {\r\n if (child.startIndex >= beforeIndex) break;\r\n if (child.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(child);\r\n const index = names.indexOf(expression);\r\n if (index === -1) continue;\r\n if (initializerCreatesInstance(declarationExpressions(child)[index], context)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction isProvenInstanceExpression(\r\n expression: string | null,\r\n call: SyntaxNode,\r\n context: RuleContext,\r\n callback: FunctionInfo,\r\n): boolean {\r\n if (!expression || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(expression)) return false;\r\n const callbackInstances = context.model.instanceVariablesByFunction.get(callback.node.id);\r\n if (callbackInstances?.has(expression)) return true;\r\n if (bodyDeclaresInstanceBefore(callback.body, call.startIndex, expression, context)) return true;\r\n\r\n const effectOwner = context.nearestFunction(callback.node);\r\n if (effectOwner) {\r\n const ownerInstances = context.model.instanceVariablesByFunction.get(effectOwner.node.id);\r\n if (ownerInstances?.has(expression)) return true;\r\n }\r\n return Boolean(effectOwner && bodyDeclaresInstanceBefore(effectOwner.body, callback.node.startIndex, expression, context));\r\n}\r\n\r\nfunction cleanupDestroysExpression(cleanupText: string, expression: string): boolean {\r\n return new RegExp(`(?:^|[^A-Za-z0-9_])${escapeRegExp(expression)}\\\\s*:\\\\s*Destroy\\\\s*\\\\(`, \"s\").test(cleanupText);\r\n}\r\n\r\nfunction assignedVariableName(call: SyntaxNode, callback: FunctionInfo): string | null {\r\n let current = call.parent;\r\n while (current && !sameNode(current, callback.node)) {\r\n if (current.type === \"variable_declaration\") {\r\n const names = declarationNames(current);\r\n const expressions = declarationExpressions(current);\r\n const index = expressions.findIndex((expression) => expression.startIndex <= call.startIndex && expression.endIndex >= call.endIndex);\r\n if (index >= 0) return names[index] ?? names[0] ?? null;\r\n return names[0] ?? null;\r\n }\r\n if (current.type === \"assignment_statement\") {\r\n const beforeCall = current.text.slice(0, Math.max(0, call.startIndex - current.startIndex));\r\n const match = beforeCall.match(/^\\s*([A-Za-z_][A-Za-z0-9_]*(?:\\s*\\[[^\\]]+\\]|\\s*\\.[A-Za-z_][A-Za-z0-9_]*)*)\\s*=\\s*$/s);\r\n const target = match?.[1]?.replace(/\\s+/g, \"\") ?? \"\";\r\n const root = target.match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\r\n if (root) return root;\r\n // A call can be nested inside a conditional/table initializer. In that case\r\n // keep walking so the surrounding variable declaration can own the resource.\r\n }\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") return null;\r\n current = current.parent;\r\n }\r\n return null;\r\n}\r\n\r\nfunction cleanupIteratesAndDisconnects(cleanupText: string, collection: string): boolean {\r\n const escaped = escapeRegExp(collection);\r\n const loops = new RegExp(\r\n `for\\\\s+[^\\\\n]*?([A-Za-z_][A-Za-z0-9_]*)\\\\s+in\\\\s+${escaped}\\\\s+do([\\\\s\\\\S]*?)end`,\r\n \"g\",\r\n );\r\n for (const match of cleanupText.matchAll(loops)) {\r\n const item = match[1];\r\n const body = match[2] ?? \"\";\r\n if (new RegExp(`\\\\b${escapeRegExp(item)}\\\\s*:\\\\s*Disconnect\\\\s*\\\\(`).test(body)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction cleanupCallsDisposer(cleanupText: string, variable: string): boolean {\r\n return new RegExp(`(?:^|[^A-Za-z0-9_.:])${escapeRegExp(variable)}\\\\s*\\\\(`, \"s\").test(cleanupText);\r\n}\r\n\r\nfunction isManagedByCleanupContainer(call: SyntaxNode, context: RuleContext, callback: FunctionInfo): boolean {\r\n let current = call.parent;\r\n while (current && !sameNode(current, callback.node)) {\r\n if (current.type === \"function_call\") {\r\n const path = context.getCallPath(current) ?? \"\";\r\n if (ALWAYS_MANAGED_METHOD.test(path)) return true;\r\n if (GENERIC_MANAGER_METHOD.test(path)) {\r\n const receiver = path.split(\":\", 1)[0] ?? \"\";\r\n if (MANAGER_ROOT.test(receiver)) return true;\r\n }\r\n }\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") return false;\r\n current = current.parent;\r\n }\r\n return false;\r\n}\r\n\r\nfunction localFunctionByName(callback: FunctionInfo, name: string, context: RuleContext): SyntaxNode | null {\r\n if (!callback.body) return null;\r\n for (const child of callback.body.namedChildren) {\r\n if (child.type === \"function_declaration\" && child.childForFieldName(\"name\")?.text === name) return child;\r\n if (child.type !== \"variable_declaration\") continue;\r\n const match = child.text.match(new RegExp(`^\\\\s*local\\\\s+${escapeRegExp(name)}\\\\s*=\\\\s*function\\\\b`, \"s\"));\r\n if (!match) continue;\r\n return [...context.walk(child)].find((node) => node.type === \"function_definition\") ?? null;\r\n }\r\n return null;\r\n}\r\n\r\nfunction cleanupTexts(callback: FunctionInfo, context: RuleContext): string[] {\r\n if (!callback.body) return [];\r\n const texts: string[] = [];\r\n\r\n for (const node of context.walk(callback.body)) {\r\n if (node.type !== \"return_statement\") continue;\r\n if (context.nearestFunction(node) !== callback) continue;\r\n const expressionList = node.namedChildren.find((child) => child.type === \"expression_list\");\r\n const returned = expressionList?.namedChildren[0];\r\n if (!returned) continue;\r\n if (returned.type === \"function_definition\") {\r\n texts.push(returned.text);\r\n continue;\r\n }\r\n if (returned.type === \"identifier\") {\r\n const localFunction = localFunctionByName(callback, returned.text, context);\r\n if (localFunction) texts.push(localFunction.text);\r\n }\r\n }\r\n\r\n return texts;\r\n}\r\n\r\nfunction taskCallbackNode(call: SyntaxNode, context: RuleContext, callback: FunctionInfo): SyntaxNode | null {\r\n const args = context.callArguments(call);\r\n const candidate = args.find((arg) => arg.type === \"function_definition\");\r\n if (candidate) return candidate;\r\n const named = args[0];\r\n if (named?.type === \"identifier\") return localFunctionByName(callback, named.text, context);\r\n return null;\r\n}\r\n\r\nfunction cancellationFlagMatches(taskCallback: SyntaxNode | null, cleanupText: string, callback: FunctionInfo): boolean {\r\n if (!taskCallback || !callback.body) return false;\r\n const beforeTask = callback.body.text.slice(0, Math.max(0, taskCallback.startIndex - callback.body.startIndex));\r\n const declarations = [...beforeTask.matchAll(/\\blocal\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*false\\b/g)].map((match) => match[1]);\r\n\r\n for (const name of declarations) {\r\n const escaped = escapeRegExp(name);\r\n if (!new RegExp(`\\\\b${escaped}\\\\s*=\\\\s*true\\\\b`).test(cleanupText)) continue;\r\n const taskText = taskCallback.text;\r\n const observesCancellation = new RegExp(`(?:if\\\\s+${escaped}\\\\s+then[\\\\s\\\\S]{0,120}?return|if\\\\s+not\\\\s+${escaped}\\\\s+then|while\\\\s+not\\\\s+${escaped}\\\\b|until\\\\s+${escaped}\\\\b)`, \"s\").test(taskText);\r\n if (observesCancellation) return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction connectionResource(call: SyntaxNode, variable: string | null, label = \"RBXScriptConnection\"): Resource {\r\n return {\r\n call,\r\n label,\r\n variable,\r\n cleanupMatches(text, name) {\r\n return Boolean(\r\n name\r\n && (new RegExp(`\\\\b${escapeRegExp(name)}\\\\s*:\\\\s*Disconnect\\\\s*\\\\(`).test(text)\r\n || cleanupIteratesAndDisconnects(text, name)),\r\n );\r\n },\r\n };\r\n}\r\n\r\nfunction numericTaskDelay(call: SyntaxNode, context: RuleContext): number | null {\r\n const first = context.callArguments(call)[0]?.text.trim();\r\n if (!first || !/^-?\\d+(?:\\.\\d+)?$/.test(first)) return null;\r\n const value = Number(first);\r\n return Number.isFinite(value) ? value : null;\r\n}\r\n\r\nfunction isCleanupOnlyTask(callbackNode: SyntaxNode | null, context: RuleContext): boolean {\r\n if (!callbackNode) return false;\r\n const info = functionInfoForNode(context, callbackNode);\r\n if (!info?.body) return false;\r\n const calls = [...context.walk(info.body)].filter((node) => node.type === \"function_call\" && context.nearestFunction(node) === info);\r\n if (calls.length === 0) return false;\r\n return calls.every((call) => /:(?:Destroy|Disconnect)$/.test(context.getCallPath(call) ?? \"\"));\r\n}\r\n\r\nfunction taskSeverity(path: string, call: SyntaxNode, taskCallback: SyntaxNode | null, yieldPoint: unknown, context: RuleContext): Severity {\r\n if (path === \"task.defer\" && !yieldPoint) return \"suggestion\";\r\n if (path === \"task.delay\" && !yieldPoint) {\r\n if (isCleanupOnlyTask(taskCallback, context)) return \"suggestion\";\r\n const delay = numericTaskDelay(call, context);\r\n if (delay !== null && delay <= 0.25) return \"suggestion\";\r\n }\r\n return \"warning\";\r\n}\r\n\r\nfunction cleanupHelp(resources: Resource[], details: string[]): string {\r\n const labels = new Set(resources.map((resource) => resource.label));\r\n let action: string;\r\n\r\n if (resources.every((resource) => resource.label.includes(\"task\"))) {\r\n action = \"Cancel the task in returned cleanup if it must stop with the effect.\";\r\n } else if (labels.size === 1 && labels.has(\"connection/subscription\")) {\r\n action = \"Disconnect the connection in returned cleanup, or hand it to a cleanup manager.\";\r\n } else if (labels.size === 1 && [...labels][0]?.endsWith(\" connection\")) {\r\n action = \"Disconnect the returned connection in cleanup.\";\r\n } else if (labels.size === 1 && labels.has(\"RenderStep binding\")) {\r\n action = \"Call UnbindFromRenderStep with the same binding name in cleanup.\";\r\n } else if (labels.size === 1 && labels.has(\"ContextAction binding\")) {\r\n action = \"Call UnbindAction with the same action name in cleanup.\";\r\n } else if (labels.size === 1 && labels.has(\"ContextAction activation binding\")) {\r\n action = \"Call UnbindActivate with the same input type in cleanup.\";\r\n } else if (labels.size === 1 && labels.has(\"React root\")) {\r\n action = \"Unmount the root in cleanup.\";\r\n } else {\r\n action = \"Release the owned resources in returned cleanup.\";\r\n }\r\n\r\n return `${details.length > 0 ? `${details.join(\" \")} ` : \"\"}${action}`;\r\n}\r\n\r\nfunction cleanupFixPreview(resources: Resource[], context: RuleContext): FixPreview | undefined {\r\n const labels = new Set(resources.map((resource) => resource.label));\r\n const first = resources[0];\r\n if (!first) return undefined;\r\n\r\n if (labels.size === 1 && labels.has(\"RenderStep binding\")) {\r\n const bindingName = context.callArguments(first.call)[0]?.text.trim() ?? '\"RenderStepName\"';\r\n return {\r\n kind: \"pattern\",\r\n before: `RunService:BindToRenderStep(${bindingName}, priority, onStep)`,\r\n after: `RunService:BindToRenderStep(${bindingName}, priority, onStep)\r\n\r\nreturn function()\r\n\tRunService:UnbindFromRenderStep(${bindingName})\r\nend`,\r\n note: \"Unbind the same RenderStep name when the effect reruns or unmounts.\",\r\n };\r\n }\r\n\r\n if ([...labels].every((label) => label.includes(\"task\"))) {\r\n const path = context.resolveCallPath(context.getCallPath(first.call) ?? \"task.delay\");\r\n const taskCall = path === \"task.defer\"\r\n ? `task.defer(function()\r\n\tdoWork()\r\nend)`\r\n : path === \"task.spawn\"\r\n ? `task.spawn(function()\r\n\tdoWork()\r\nend)`\r\n : `task.delay(delaySeconds, function()\r\n\tdoWork()\r\nend)`;\r\n return {\r\n kind: \"pattern\",\r\n before: taskCall,\r\n after: `local thread = ${taskCall}\r\n\r\nreturn function()\r\n\ttask.cancel(thread)\r\nend`,\r\n note: \"Cancel scheduled work only when it must not outlive this effect. Short fire-and-forget work may intentionally remain uncancelled.\",\r\n };\r\n }\r\n\r\n if (labels.size === 1 && labels.has(\"ContextAction binding\")) {\r\n return {\r\n kind: \"pattern\",\r\n before: `ContextActionService:BindAction(actionName, onAction, false, inputType)`,\r\n after: `ContextActionService:BindAction(actionName, onAction, false, inputType)\r\n\r\nreturn function()\r\n\tContextActionService:UnbindAction(actionName)\r\nend`,\r\n note: \"Unbind the same action name in the effect cleanup.\",\r\n };\r\n }\r\n\r\n if (labels.size === 1 && labels.has(\"React root\")) {\r\n return {\r\n kind: \"pattern\",\r\n before: `local root = ReactRoblox.createRoot(container)`,\r\n after: `local root = ReactRoblox.createRoot(container)\r\n\r\nreturn function()\r\n\troot:unmount()\r\nend`,\r\n note: \"Unmount roots created by the effect when ownership ends.\",\r\n };\r\n }\r\n\r\n return {\r\n kind: \"pattern\",\r\n before: `local connection = signal:Connect(onChanged)`,\r\n after: `local connection = signal:Connect(onChanged)\r\n\r\nreturn function()\r\n\tconnection:Disconnect()\r\nend`,\r\n note: \"Return cleanup from the same effect that acquires the resource.\",\r\n };\r\n}\r\n\r\nfunction classifyResource(call: SyntaxNode, context: RuleContext, callback: FunctionInfo): Resource | null {\r\n const rawPath = context.getCallPath(call) ?? \"\";\r\n const path = context.resolveCallPath(rawPath);\r\n const variable = assignedVariableName(call, callback);\r\n const finalMember = path.split(/[.:]/).at(-1) ?? path;\r\n\r\n if (/:Connect$/.test(rawPath)) {\r\n const ownerExpression = connectionOwnerExpression(rawPath);\r\n const ownerIsInstance = isProvenInstanceExpression(ownerExpression, call, context, callback);\r\n return {\r\n call,\r\n label: \"connection/subscription\",\r\n variable,\r\n cleanupMatches(text, name) {\r\n if (name && new RegExp(`\\\\b${escapeRegExp(name)}\\\\s*:\\\\s*Disconnect\\\\s*\\\\(`).test(text)) return true;\r\n if (name && cleanupIteratesAndDisconnects(text, name)) return true;\r\n // Custom Signal/Iris-style Connect APIs may return a disposer function instead of RBXScriptConnection.\r\n if (name && cleanupCallsDisposer(text, name)) return true;\r\n return Boolean(ownerIsInstance && ownerExpression && cleanupDestroysExpression(text, ownerExpression));\r\n },\r\n };\r\n }\r\n\r\n if (CONNECTION_RETURNING_METHODS.has(finalMember)) {\r\n return connectionResource(call, variable, `${finalMember} connection`);\r\n }\r\n\r\n if (/BindToRenderStep$/.test(rawPath)) {\r\n const bindingName = context.callArguments(call)[0]?.text.trim();\r\n return {\r\n call,\r\n label: \"RenderStep binding\",\r\n variable,\r\n cleanupMatches(text) {\r\n if (!/UnbindFromRenderStep\\s*\\(/.test(text)) return false;\r\n if (!bindingName) return true;\r\n return new RegExp(`UnbindFromRenderStep\\\\s*\\\\(\\\\s*${escapeRegExp(bindingName)}\\\\s*\\\\)`).test(text);\r\n },\r\n };\r\n }\r\n\r\n if (/:BindAction(?:AtPriority)?$/.test(rawPath)) {\r\n const actionName = context.callArguments(call)[0]?.text.trim();\r\n return {\r\n call,\r\n label: \"ContextAction binding\",\r\n variable,\r\n cleanupMatches(text) {\r\n if (/:UnbindAllActions\\s*\\(/.test(text)) return true;\r\n if (!/:UnbindAction\\s*\\(/.test(text)) return false;\r\n if (!actionName) return true;\r\n return new RegExp(`:UnbindAction\\\\s*\\\\(\\\\s*${escapeRegExp(actionName)}\\\\s*\\\\)`).test(text);\r\n },\r\n };\r\n }\r\n\r\n if (/:BindActivate$/.test(rawPath)) {\r\n const inputType = context.callArguments(call)[0]?.text.trim();\r\n return {\r\n call,\r\n label: \"ContextAction activation binding\",\r\n variable,\r\n cleanupMatches(text) {\r\n if (!/:UnbindActivate\\s*\\(/.test(text)) return false;\r\n if (!inputType) return true;\r\n return new RegExp(`:UnbindActivate\\\\s*\\\\(\\\\s*${escapeRegExp(inputType)}(?:\\\\s*,|\\\\s*\\\\))`).test(text);\r\n },\r\n };\r\n }\r\n\r\n if (path === \"ReactRoblox.createRoot\") {\r\n return {\r\n call,\r\n label: \"React root\",\r\n variable,\r\n cleanupMatches(text, name) {\r\n return Boolean(name && new RegExp(`\\\\b${escapeRegExp(name)}\\\\s*:\\\\s*unmount\\\\s*\\\\(`, \"i\").test(text));\r\n },\r\n };\r\n }\r\n\r\n if (path === \"task.delay\" || path === \"task.defer\" || path === \"task.spawn\") {\r\n const taskCallback = taskCallbackNode(call, context, callback);\r\n const yieldPoint = taskCallback ? functionYieldPoint(taskCallback, context) : null;\r\n const outlivesEffect = path !== \"task.spawn\" || Boolean(yieldPoint);\r\n if (!outlivesEffect) return null;\r\n\r\n return {\r\n call,\r\n label: path === \"task.spawn\" ? \"yielding spawned task\" : path === \"task.defer\" ? \"deferred task\" : \"delayed task\",\r\n detail: yieldPoint ? `The task can outlive the effect because it yields at ${yieldPoint.reason}.` : \"The task is scheduled to run after the effect callback can finish.\",\r\n severity: taskSeverity(path, call, taskCallback, yieldPoint, context),\r\n variable,\r\n cleanupMatches(text, name) {\r\n if (name) {\r\n const escaped = escapeRegExp(name);\r\n if (new RegExp(`task\\\\.cancel\\\\s*\\\\(\\\\s*${escaped}\\\\s*\\\\)`).test(text)) return true;\r\n if (new RegExp(`p?call\\\\s*\\\\(\\\\s*task\\\\.cancel\\\\s*,\\\\s*${escaped}\\\\s*\\\\)`).test(text)) return true;\r\n }\r\n return cancellationFlagMatches(taskCallback, text, callback);\r\n },\r\n };\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport const effectNeedsCleanup: RuleDefinition = {\r\n id: \"react-luau/effect-needs-cleanup\",\r\n category: \"Effects\",\r\n severity: \"warning\",\r\n description: \"Effects that create owned resources or outliving tasks should return matching cleanup.\",\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const rawPath = context.getCallPath(call);\r\n if (!rawPath) continue;\r\n const path = context.resolveCallPath(rawPath);\r\n if (path !== \"React.useEffect\" && path !== \"React.useLayoutEffect\") continue;\r\n\r\n const callbackNode = firstFunctionArgument(context, call);\r\n const callback = functionInfoForNode(context, callbackNode);\r\n if (!callbackNode || !callback) continue;\r\n const cleanup = cleanupTexts(callback, context);\r\n const missing: Resource[] = [];\r\n\r\n for (const candidate of context.walk(callbackNode)) {\r\n if (candidate.type !== \"function_call\") continue;\r\n if (context.nearestFunction(candidate) !== callback) continue;\r\n if (isManagedByCleanupContainer(candidate, context, callback)) continue;\r\n const resource = classifyResource(candidate, context, callback);\r\n if (!resource) continue;\r\n if (cleanup.some((text) => resource.cleanupMatches(text, resource.variable, resource.call))) continue;\r\n missing.push(resource);\r\n }\r\n\r\n if (missing.length === 0) continue;\r\n const labels = [...new Set(missing.map((resource) => resource.label))];\r\n const details = [...new Set(missing.map((resource) => resource.detail).filter((detail): detail is string => Boolean(detail)))];\r\n const severityRank: Record<Severity, number> = { suggestion: 0, warning: 1, error: 2 };\r\n const severity = missing.reduce<Severity>(\r\n (highest, resource) => severityRank[resource.severity ?? \"warning\"] > severityRank[highest] ? resource.severity ?? \"warning\" : highest,\r\n \"suggestion\",\r\n );\r\n const highlights = missing.map((resource) => callNameNode(resource.call));\r\n diagnostics.push({\r\n node: highlights[0],\r\n highlights,\r\n severity,\r\n message: `Effect creates ${labels.join(\", \")} without matching returned cleanup.`,\r\n help: cleanupHelp(missing, details),\r\n fixPreview: cleanupFixPreview(missing, context),\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
19
|
-
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { FunctionInfo, RuleContext, RuleDefinition } from \"../types\";\r\nimport { nodeKey, rootIdentifier } from \"../ast/walk\";\r\n\r\nimport {\r\n callNameNode,\r\n containsUnshadowedIdentifier,\r\n dependencyExpressions,\r\n functionInfoForNode,\r\n isEffectPath,\r\n parseDependencyRoots,\r\n stateBindingsFor,\r\n} from \"./helpers\";\r\n\r\nconst HOOKS_WITH_DEPS = new Set([\r\n \"React.useEffect\",\r\n \"React.useLayoutEffect\",\r\n \"React.useMemo\",\r\n \"React.useCallback\",\r\n \"React.useImperativeHandle\",\r\n]);\r\n\r\nfunction ownerForHook(\r\n context: RuleContext,\r\n call: SyntaxNode,\r\n): FunctionInfo | null {\r\n const owner = context.nearestFunction(call);\r\n\r\n return owner && (owner.isComponent || owner.isHook) ? owner : null;\r\n}\r\n\r\nfunction effectCallbackWithoutDeps(\r\n context: RuleContext,\r\n call: SyntaxNode,\r\n): SyntaxNode | null {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!isEffectPath(path)) return null;\r\n\r\n const args = context.callArguments(call);\r\n const callback = args[0];\r\n\r\n if (callback?.type !== \"function_definition\") return null;\r\n\r\n if (args.length < 2 || args[1]?.type === \"nil\") return callback;\r\n\r\n return null;\r\n}\r\n\r\nfunction callbackAndDeps(\r\n context: RuleContext,\r\n call: SyntaxNode,\r\n): { callback: SyntaxNode; deps: SyntaxNode } | null {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n const args = context.callArguments(call);\r\n\r\n if (path === \"React.useImperativeHandle\") {\r\n const callback = args[1];\r\n const deps = args[2];\r\n\r\n if (\r\n callback?.type === \"function_definition\" &&\r\n deps?.type === \"table_constructor\"\r\n )\r\n return { callback, deps };\r\n\r\n return null;\r\n }\r\n\r\n const callback = args[0];\r\n const deps = args[1];\r\n\r\n if (\r\n callback?.type === \"function_definition\" &&\r\n deps?.type === \"table_constructor\"\r\n )\r\n return { callback, deps };\r\n\r\n return null;\r\n}\r\n\r\nfunction directTopLevelCalls(\r\n context: RuleContext,\r\n callback: SyntaxNode,\r\n): SyntaxNode[] {\r\n const info = functionInfoForNode(context, callback);\r\n\r\n if (!info?.body) return [];\r\n\r\n return info.body.namedChildren.filter(\r\n (child) => child.type === \"function_call\",\r\n );\r\n}\r\n\r\nfunction hasCall(node: SyntaxNode, context: RuleContext): boolean {\r\n for (const child of context.walk(node)) {\r\n if (child.type === \"function_call\") return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction hasExternalSubscription(\r\n node: SyntaxNode,\r\n context: RuleContext,\r\n): boolean {\r\n for (const child of context.walk(node)) {\r\n if (child.type !== \"function_call\") continue;\r\n\r\n const path = context.getCallPath(child) ?? \"\";\r\n\r\n if (\r\n /:Connect$/.test(path) ||\r\n /BindToRenderStep$/.test(path) ||\r\n /:BindAction(?:AtPriority)?$/.test(path)\r\n )\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction directLocalInitializer(\r\n owner: FunctionInfo,\r\n name: string,\r\n): SyntaxNode | null {\r\n if (!owner.body) return null;\r\n\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n\r\n const assignment = statement.namedChildren.find(\r\n (child) => child.type === \"assignment_statement\",\r\n );\r\n\r\n const variableList = assignment?.namedChildren.find(\r\n (child) => child.type === \"variable_list\",\r\n );\r\n\r\n const expressionList = assignment?.namedChildren.find(\r\n (child) => child.type === \"expression_list\",\r\n );\r\n\r\n const names =\r\n variableList?.namedChildren.filter(\r\n (child) => child.type === \"identifier\",\r\n ) ?? [];\r\n\r\n const expressions = expressionList?.namedChildren ?? [];\r\n const index = names.findIndex((child) => child.text === name);\r\n\r\n if (index >= 0) return expressions[index] ?? expressions[0] ?? null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction setterCalledOutsideCallback(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n callback: SyntaxNode,\r\n setterName: string,\r\n): boolean {\r\n if (!owner.body) return false;\r\n\r\n for (const node of context.walk(owner.body)) {\r\n if (\r\n node.type !== \"function_call\" ||\r\n context.getCallPath(node) !== setterName\r\n )\r\n continue;\r\n\r\n if (\r\n node.startIndex >= callback.startIndex &&\r\n node.endIndex <= callback.endIndex\r\n )\r\n continue;\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction guaranteedRepeatedStateChange(\r\n argument: SyntaxNode,\r\n stateName: string,\r\n context: RuleContext,\r\n): boolean {\r\n if (argument.type === \"table_constructor\") return true;\r\n\r\n if (argument.type === \"function_definition\") {\r\n const updater = functionInfoForNode(context, argument);\r\n const previousName = updater?.parameters[0];\r\n\r\n const returnStatement = updater?.body?.namedChildren.find(\r\n (child) => child.type === \"return_statement\",\r\n );\r\n\r\n const returnValue = returnStatement?.namedChildren[0];\r\n\r\n if (\r\n previousName &&\r\n returnValue &&\r\n guaranteedRepeatedStateChange(returnValue, previousName, context)\r\n )\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n const text = argument.text.trim();\r\n const escaped = stateName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\n if (new RegExp(`^not\\\\s+${escaped}$`).test(text)) return true;\r\n\r\n if (\r\n new RegExp(\r\n `^${escaped}\\\\s*[+-]\\\\s*(?:[1-9]\\\\d*(?:\\\\.\\\\d+)?|0?\\\\.\\\\d*[1-9]\\\\d*)$`,\r\n ).test(text)\r\n )\r\n return true;\r\n\r\n if (\r\n new RegExp(\r\n `^(?:[1-9]\\\\d*(?:\\\\.\\\\d+)?|0?\\\\.\\\\d*[1-9]\\\\d*)\\\\s*\\\\+\\\\s*${escaped}$`,\r\n ).test(text)\r\n )\r\n return true;\r\n\r\n if (argument.type === \"function_call\") {\r\n const path = context.resolveCallPath(context.getCallPath(argument) ?? \"\");\r\n\r\n if (\r\n path === \"table.clone\" ||\r\n path === \"table.create\" ||\r\n path === \"table.pack\"\r\n )\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction freshDependencyKind(\r\n node: SyntaxNode,\r\n owner: FunctionInfo,\r\n): string | null {\r\n if (node.type === \"table_constructor\") return \"table\";\r\n\r\n if (node.type === \"function_definition\") return \"function\";\r\n\r\n if (node.type === \"identifier\") {\r\n const initializer = directLocalInitializer(owner, node.text);\r\n\r\n if (initializer?.type === \"table_constructor\") return \"table\";\r\n\r\n if (initializer?.type === \"function_definition\") return \"function\";\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport const noDerivedStateEffect: RuleDefinition = {\r\n id: \"react-luau/no-derived-state-effect\",\r\n category: \"Effects\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Avoid copying render-known derived values into state from an effect.\",\r\n\r\n guidance: {\r\n help: \"Calculate the value during render and remove the state setter. Keep the effect only if it does other work. Keep state if the delay is intentional.\",\r\n },\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!isEffectPath(path)) continue;\r\n\r\n const owner = ownerForHook(context, call);\r\n const parts = callbackAndDeps(context, call);\r\n\r\n if (!owner || !parts) continue;\r\n\r\n if (hasExternalSubscription(parts.callback, context)) continue;\r\n\r\n const available =\r\n context.model.componentLocals.get(nodeKey(owner.node)) ??\r\n new Set(owner.parameters);\r\n\r\n const bindings = stateBindingsFor(context, owner);\r\n\r\n const setterToValue = new Map(\r\n bindings.map((binding) => [binding.setterName, binding.valueName]),\r\n );\r\n\r\n for (const setterCall of directTopLevelCalls(context, parts.callback)) {\r\n const setter = context.getCallPath(setterCall) ?? \"\";\r\n const targetState = setterToValue.get(setter);\r\n\r\n if (!targetState) continue;\r\n\r\n // If the setter is also used by handlers or other effects, the state has independent\r\n // ownership and is not merely a render-known derived copy.\r\n if (setterCalledOutsideCallback(context, owner, parts.callback, setter))\r\n continue;\r\n\r\n const argument = context.callArguments(setterCall)[0];\r\n\r\n if (\r\n !argument ||\r\n argument.type === \"function_definition\" ||\r\n hasCall(argument, context)\r\n )\r\n continue;\r\n\r\n const sourceNames = [...available].filter(\r\n (name) =>\r\n name !== targetState &&\r\n containsUnshadowedIdentifier(argument, name, context, owner),\r\n );\r\n\r\n if (sourceNames.length === 0) continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(setterCall),\r\n message: `${setter}() stores a value derived from ${sourceNames.slice(0, 3).join(\", \")} inside an effect.`,\r\n summary: `${targetState} can be calculated during render.`,\r\n explanation: `${setter} copies a value derived from ${sourceNames.slice(0, 3).join(\", \")} into state after render.`,\r\n help: \"Compute the value during render when it is fully derived from render-known inputs.\",\r\n\r\n fixPreview: {\r\n kind: \"pattern\" as const,\r\n before: setterCall.text,\r\n after: `local ${targetState} = ${argument.text}`,\r\n note: \"Remove the state pair and the setter call if the effect has no other work. Keep state when the delay is intentional.\",\r\n },\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const noSelfUpdatingEffect: RuleDefinition = {\r\n id: \"react-luau/no-self-updating-effect\",\r\n category: \"Effects\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Effects should not unconditionally update state in a way that schedules themselves again.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!isEffectPath(path)) continue;\r\n\r\n const owner = ownerForHook(context, call);\r\n\r\n if (!owner) continue;\r\n\r\n const parts = callbackAndDeps(context, call);\r\n\r\n if (parts) {\r\n const deps = parseDependencyRoots(parts.deps);\r\n\r\n for (const binding of stateBindingsFor(context, owner)) {\r\n if (!deps.has(binding.valueName)) continue;\r\n\r\n for (const setterCall of directTopLevelCalls(\r\n context,\r\n parts.callback,\r\n )) {\r\n if (context.getCallPath(setterCall) !== binding.setterName)\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(setterCall),\r\n message: `${binding.setterName}() updates ${binding.valueName}, which is also in this effect's dependency table.`,\r\n help: \"Guard the update so it converges, move it to the originating event, or derive the value during render.\",\r\n });\r\n }\r\n }\r\n\r\n continue;\r\n }\r\n\r\n const callback = effectCallbackWithoutDeps(context, call);\r\n\r\n if (!callback) continue;\r\n\r\n for (const binding of stateBindingsFor(context, owner)) {\r\n for (const setterCall of directTopLevelCalls(context, callback)) {\r\n if (context.getCallPath(setterCall) !== binding.setterName) continue;\r\n\r\n const argument = context.callArguments(setterCall)[0];\r\n\r\n if (\r\n !argument ||\r\n !guaranteedRepeatedStateChange(argument, binding.valueName, context)\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(setterCall),\r\n message: `${binding.setterName}() unconditionally changes ${binding.valueName} in an effect that runs after every render.`,\r\n help: \"Add a dependency table or convergence guard, move the update to the event that owns it, or derive the value during render.\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const noEffectWithFreshDeps: RuleDefinition = {\r\n id: \"react-luau/no-effect-with-fresh-deps\",\r\n category: \"Hooks\",\r\n severity: \"error\",\r\n\r\n description:\r\n \"Dependency tables should not contain tables or functions recreated on every render.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!HOOKS_WITH_DEPS.has(path)) continue;\r\n\r\n const owner = ownerForHook(context, call);\r\n const parts = callbackAndDeps(context, call);\r\n\r\n if (!owner || !parts) continue;\r\n\r\n for (const dependency of dependencyExpressions(parts.deps)) {\r\n const kind = freshDependencyKind(dependency, owner);\r\n\r\n if (!kind) continue;\r\n\r\n const label =\r\n dependency.type === \"identifier\" ? ` ${dependency.text}` : \"\";\r\n\r\n diagnostics.push({\r\n node: dependency,\r\n message: `${path} depends on${label || \" an inline value\"} that is a new ${kind} on every render.`,\r\n help: \"Move the value inside the hook callback and depend on its simple inputs, or intentionally stabilize the value with useMemo/useCallback when identity is part of the contract.\",\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const noMutableInDeps: RuleDefinition = {\r\n id: \"react-luau/no-mutable-in-deps\",\r\n category: \"Hooks\",\r\n severity: \"error\",\r\n\r\n description:\r\n \"Mutable ref.current values do not belong in hook dependency tables.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!HOOKS_WITH_DEPS.has(path)) continue;\r\n\r\n const owner = ownerForHook(context, call);\r\n const parts = callbackAndDeps(context, call);\r\n\r\n if (!owner || !parts) continue;\r\n\r\n const refs =\r\n context.model.refVariablesByFunction.get(nodeKey(owner.node)) ??\r\n new Set<string>();\r\n\r\n for (const dependency of dependencyExpressions(parts.deps)) {\r\n const root = rootIdentifier(dependency.text);\r\n\r\n if (!root || !refs.has(root)) continue;\r\n\r\n if (\r\n !new RegExp(\r\n `^${root.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}\\\\s*\\\\.\\\\s*current\\\\b`,\r\n ).test(dependency.text.trim())\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: dependency,\r\n message: `${dependency.text.trim()} is mutable ref state and will not itself trigger a React render when it changes.`,\r\n help: \"Read ref.current inside the hook body. Depend on reactive inputs that actually cause renders instead of listing the mutable current value.\",\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
19
|
+
"import type { SyntaxNode } from \"./syntax\";\nimport type { RuleContext } from \"./types\";\nimport {\n isUnboundIdentifier,\n localValueBinding,\n unwrapExpression,\n} from \"./ast/local-values\";\n\nexport interface ApiFunctionReference {\n returnType: string;\n allocation: \"new\" | \"argument\";\n equality: \"reference\" | \"value\" | \"unknown\";\n argumentIndex?: number;\n}\n\n// Return types alone do not describe equality or allocation\n// Keep these reviewed facts offline so editor diagnostics are deterministic\n// Sources: https://github.com/Roblox/creator-docs/tree/main/content/en-us/reference/engine\n// https://github.com/Roblox/react-luau/blob/main/modules/shared/src/objectIs.lua\nconst functions = new Map<string, ApiFunctionReference>();\n\nfunction register(\n namespace: string,\n members: string[],\n reference: ApiFunctionReference,\n): void {\n for (const member of members)\n functions.set(`${namespace}.${member}`, reference);\n}\n\nfor (const type of [\n \"Instance\",\n \"Random\",\n \"RaycastParams\",\n \"OverlapParams\",\n \"CatalogSearchParams\",\n \"SharedTable\",\n]) {\n register(type, [\"new\"], {\n returnType: type,\n allocation: \"new\",\n equality: \"reference\",\n });\n}\n\nregister(\"table\", [\"clone\", \"create\", \"pack\"], {\n returnType: \"table\",\n allocation: \"new\",\n equality: \"reference\",\n});\nregister(\"SharedTable\", [\"clone\", \"cloneAndFreeze\"], {\n returnType: \"SharedTable\",\n allocation: \"new\",\n equality: \"reference\",\n});\nregister(\"string\", [\"split\"], {\n returnType: \"table\",\n allocation: \"new\",\n equality: \"reference\",\n});\nregister(\"buffer\", [\"create\", \"fromstring\"], {\n returnType: \"buffer\",\n allocation: \"new\",\n equality: \"reference\",\n});\nregister(\"coroutine\", [\"create\"], {\n returnType: \"thread\",\n allocation: \"new\",\n equality: \"reference\",\n});\nregister(\"coroutine\", [\"wrap\"], {\n returnType: \"function\",\n allocation: \"new\",\n equality: \"reference\",\n});\nregister(\"table\", [\"freeze\"], {\n returnType: \"table\",\n allocation: \"argument\",\n equality: \"reference\",\n argumentIndex: 0,\n});\n\nfor (const [type, members] of Object.entries({\n Color3: [\"new\", \"fromRGB\", \"fromHSV\", \"fromHex\"],\n ColorSequence: [\"new\"],\n ColorSequenceKeypoint: [\"new\"],\n NumberSequence: [\"new\"],\n NumberSequenceKeypoint: [\"new\"],\n NumberRange: [\"new\"],\n UDim: [\"new\"],\n UDim2: [\"new\", \"fromScale\", \"fromOffset\"],\n Vector2: [\"new\"],\n Vector3: [\"new\", \"fromNormalId\", \"fromAxis\"],\n CFrame: [\n \"new\",\n \"Angles\",\n \"fromEulerAnglesXYZ\",\n \"fromEulerAnglesYXZ\",\n \"fromOrientation\",\n \"fromAxisAngle\",\n \"fromMatrix\",\n \"lookAt\",\n \"lookAlong\",\n ],\n Rect: [\"new\"],\n BrickColor: [\"new\", \"palette\"],\n})) {\n register(type, members, {\n returnType: type,\n allocation: \"new\",\n equality: \"value\",\n });\n}\n\nconst instanceMethods = new Map<string, ApiFunctionReference>([\n ...[\"GetChildren\", \"GetDescendants\", \"GetAttributes\", \"GetTags\"].map(\n (member): [string, ApiFunctionReference] => [\n member,\n { returnType: \"table\", allocation: \"new\", equality: \"reference\" },\n ],\n ),\n [\n \"Clone\",\n { returnType: \"Instance\", allocation: \"new\", equality: \"reference\" },\n ],\n]);\n\nexport function apiFunctionReference(\n path: string,\n): ApiFunctionReference | null {\n return functions.get(path) ?? null;\n}\n\nfunction globalPath(\n context: RuleContext,\n expression: SyntaxNode,\n seen = new Set<number>(),\n): string | null {\n const node = unwrapExpression(expression);\n\n if (seen.has(node.id)) return null;\n\n seen.add(node.id);\n\n if (node.type === \"identifier\") {\n if (isUnboundIdentifier(context, node)) return node.text;\n\n const binding = localValueBinding(context, node);\n\n return binding?.returnIndex === 0\n ? globalPath(context, binding.value, seen)\n : null;\n }\n\n if (node.type !== \"dot_index_expression\") return null;\n\n const namespace = node.childForFieldName(\"table\");\n const member = node.childForFieldName(\"field\");\n const path = namespace && globalPath(context, namespace, seen);\n\n return path && member ? `${path}.${member.text}` : null;\n}\n\nfunction isInstanceReceiver(\n context: RuleContext,\n expression: SyntaxNode,\n seen = new Set<number>(),\n): boolean {\n const node = unwrapExpression(expression);\n\n if (seen.has(node.id)) return false;\n\n seen.add(node.id);\n\n if (node.type === \"identifier\") {\n if (isUnboundIdentifier(context, node))\n return [\"game\", \"workspace\", \"script\"].includes(node.text);\n\n const binding = localValueBinding(context, node);\n\n return (\n binding?.returnIndex === 0 &&\n isInstanceReceiver(context, binding.value, seen)\n );\n }\n\n if (node.type === \"dot_index_expression\") {\n const receiver = node.childForFieldName(\"table\");\n\n return Boolean(receiver && isInstanceReceiver(context, receiver, seen));\n }\n\n if (node.type !== \"function_call\") return false;\n\n const name = node.childForFieldName(\"name\");\n\n if (!name) return false;\n\n if (globalPath(context, name) === \"Instance.new\") return true;\n\n if (name.type !== \"method_index_expression\") return false;\n\n const receiver = name.childForFieldName(\"table\");\n const member = name.childForFieldName(\"method\")?.text;\n\n return Boolean(\n receiver &&\n member &&\n [\n \"GetService\",\n \"WaitForChild\",\n \"FindFirstChild\",\n \"FindFirstAncestor\",\n \"Clone\",\n ].includes(member) &&\n isInstanceReceiver(context, receiver, seen),\n );\n}\n\nexport function apiReferenceForCall(\n context: RuleContext,\n call: SyntaxNode,\n): ApiFunctionReference | null {\n const name = call.childForFieldName(\"name\");\n\n if (!name) return null;\n\n const path = globalPath(context, name);\n\n if (path) return apiFunctionReference(path);\n\n if (name.type !== \"method_index_expression\") return null;\n\n const receiver = name.childForFieldName(\"table\");\n const member = name.childForFieldName(\"method\")?.text;\n\n return receiver && member && isInstanceReceiver(context, receiver)\n ? (instanceMethods.get(member) ?? null)\n : null;\n}\n",
|
|
20
|
+
"import type { SyntaxNode } from \"../syntax\";\nimport type { FunctionInfo, RuleContext } from \"../types\";\nimport { apiReferenceForCall } from \"../api-reference\";\nimport {\n resolveLocalFunction,\n resolveLocalValue,\n unwrapExpression,\n} from \"./local-values\";\n\nexport type FreshValueKind = \"table\" | \"function\" | \"object\";\n\n// Follow result expressions only: a fresh argument does not make its call result fresh\n// The lifetime changes when inspecting a factory, but module values stay stable\nexport function freshValueKind(\n context: RuleContext,\n expression: SyntaxNode | null,\n lifetime: FunctionInfo,\n seen = new Set<number>(),\n returnIndex = 0,\n lifetimes = new Set([lifetime]),\n): FreshValueKind | null {\n if (!expression) return null;\n\n const node = unwrapExpression(expression);\n\n if (seen.has(node.id) || seen.size >= 64) return null;\n\n const visited = new Set(seen).add(node.id);\n\n const analyze = (\n value: SyntaxNode | null,\n owner = lifetime,\n index = 0,\n ): FreshValueKind | null =>\n freshValueKind(\n context,\n value,\n owner,\n visited,\n index,\n new Set(lifetimes).add(owner),\n );\n\n if (node.type === \"identifier\") {\n const binding = resolveLocalValue(context, node);\n const owner = binding && context.nearestFunction(binding.value);\n\n if (!binding || !owner || !lifetimes.has(owner)) return null;\n\n return analyze(binding.value, lifetime, binding.returnIndex);\n }\n\n if (returnIndex === 0) {\n if (node.type === \"table_constructor\") return \"table\";\n\n if (\n node.type === \"function_definition\" ||\n node.type === \"function_declaration\"\n )\n return \"function\";\n\n if (node.type === \"binary_expression\") {\n const operator = node.children.find((child) =>\n [\"and\", \"or\"].includes(child.type),\n )?.type;\n\n if (operator === \"and\") return analyze(node.childForFieldName(\"right\"));\n\n if (operator === \"or\")\n return (\n analyze(node.childForFieldName(\"left\")) ??\n analyze(node.childForFieldName(\"right\"))\n );\n }\n\n if (node.type === \"if_expression\") {\n for (const branch of [\n node,\n ...node.namedChildren.filter((child) =>\n [\"elseif_clause\", \"else_clause\"].includes(child.type),\n ),\n ]) {\n const kind = analyze(branch.childForFieldName(\"consequence\"));\n\n if (kind) return kind;\n }\n }\n }\n\n if (node.type !== \"function_call\") return null;\n\n const api = apiReferenceForCall(context, node);\n\n if (api && returnIndex === 0) {\n if (api.allocation === \"argument\")\n return analyze(\n context.callArguments(node)[api.argumentIndex ?? 0] ?? null,\n );\n\n if (api.equality !== \"reference\") return null;\n\n return api.returnType === \"table\" || api.returnType === \"function\"\n ? api.returnType\n : \"object\";\n }\n\n const name = node.childForFieldName(\"name\");\n const factory = name && resolveLocalFunction(context, name);\n\n if (!factory?.body) return null;\n\n for (const statement of context.walk(factory.body)) {\n if (\n statement.type !== \"return_statement\" ||\n context.nearestFunction(statement) !== factory\n )\n continue;\n\n const values =\n statement.namedChildren.find((child) => child.type === \"expression_list\")\n ?.namedChildren ?? [];\n const value = values[returnIndex] ?? values.at(-1);\n\n if (!value) continue;\n\n const index = Math.max(0, returnIndex - values.length + 1);\n\n if (index > 0 && value.type !== \"function_call\") continue;\n\n const kind = analyze(value, factory, index);\n\n if (kind) return kind;\n }\n\n return null;\n}\n",
|
|
21
|
+
"import type { SyntaxNode } from \"../syntax\";\nimport type { FunctionInfo, RuleContext, RuleDefinition } from \"../types\";\nimport { nodeKey, rootIdentifier } from \"../ast/walk\";\nimport { freshValueKind } from \"../ast/value-identity\";\n\nimport {\n callNameNode,\n containsUnshadowedIdentifier,\n dependencyExpressions,\n functionInfoForNode,\n isEffectPath,\n parseDependencyRoots,\n stateBindingsFor,\n} from \"./helpers\";\n\nconst HOOKS_WITH_DEPS = new Set([\n \"React.useEffect\",\n \"React.useLayoutEffect\",\n \"React.useMemo\",\n \"React.useCallback\",\n \"React.useImperativeHandle\",\n]);\n\nfunction ownerForHook(\n context: RuleContext,\n call: SyntaxNode,\n): FunctionInfo | null {\n const owner = context.nearestFunction(call);\n\n return owner && (owner.isComponent || owner.isHook) ? owner : null;\n}\n\nfunction effectCallbackWithoutDeps(\n context: RuleContext,\n call: SyntaxNode,\n): SyntaxNode | null {\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!isEffectPath(path)) return null;\n\n const args = context.callArguments(call);\n const callback = args[0];\n\n if (callback?.type !== \"function_definition\") return null;\n\n if (args.length < 2 || args[1]?.type === \"nil\") return callback;\n\n return null;\n}\n\nfunction callbackAndDeps(\n context: RuleContext,\n call: SyntaxNode,\n): { callback: SyntaxNode; deps: SyntaxNode } | null {\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n const args = context.callArguments(call);\n\n if (path === \"React.useImperativeHandle\") {\n const callback = args[1];\n const deps = args[2];\n\n if (\n callback?.type === \"function_definition\" &&\n deps?.type === \"table_constructor\"\n )\n return { callback, deps };\n\n return null;\n }\n\n const callback = args[0];\n const deps = args[1];\n\n if (\n callback?.type === \"function_definition\" &&\n deps?.type === \"table_constructor\"\n )\n return { callback, deps };\n\n return null;\n}\n\nfunction directTopLevelCalls(\n context: RuleContext,\n callback: SyntaxNode,\n): SyntaxNode[] {\n const info = functionInfoForNode(context, callback);\n\n if (!info?.body) return [];\n\n return info.body.namedChildren.filter(\n (child) => child.type === \"function_call\",\n );\n}\n\nfunction hasCall(node: SyntaxNode, context: RuleContext): boolean {\n for (const child of context.walk(node)) {\n if (child.type === \"function_call\") return true;\n }\n\n return false;\n}\n\nfunction hasExternalSubscription(\n node: SyntaxNode,\n context: RuleContext,\n): boolean {\n for (const child of context.walk(node)) {\n if (child.type !== \"function_call\") continue;\n\n const path = context.getCallPath(child) ?? \"\";\n\n if (\n /:Connect$/.test(path) ||\n /BindToRenderStep$/.test(path) ||\n /:BindAction(?:AtPriority)?$/.test(path)\n )\n return true;\n }\n\n return false;\n}\n\nfunction setterCalledOutsideCallback(\n context: RuleContext,\n owner: FunctionInfo,\n callback: SyntaxNode,\n setterName: string,\n): boolean {\n if (!owner.body) return false;\n\n for (const node of context.walk(owner.body)) {\n if (\n node.type !== \"function_call\" ||\n context.getCallPath(node) !== setterName\n )\n continue;\n\n if (\n node.startIndex >= callback.startIndex &&\n node.endIndex <= callback.endIndex\n )\n continue;\n\n return true;\n }\n\n return false;\n}\n\nfunction guaranteedRepeatedStateChange(\n argument: SyntaxNode,\n stateName: string,\n context: RuleContext,\n): boolean {\n if (argument.type === \"table_constructor\") return true;\n\n if (argument.type === \"function_definition\") {\n const updater = functionInfoForNode(context, argument);\n const previousName = updater?.parameters[0];\n\n const returnStatement = updater?.body?.namedChildren.find(\n (child) => child.type === \"return_statement\",\n );\n\n const returnValue = returnStatement?.namedChildren[0];\n\n if (\n previousName &&\n returnValue &&\n guaranteedRepeatedStateChange(returnValue, previousName, context)\n )\n return true;\n\n return false;\n }\n\n const text = argument.text.trim();\n const escaped = stateName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n if (new RegExp(`^not\\\\s+${escaped}$`).test(text)) return true;\n\n if (\n new RegExp(\n `^${escaped}\\\\s*[+-]\\\\s*(?:[1-9]\\\\d*(?:\\\\.\\\\d+)?|0?\\\\.\\\\d*[1-9]\\\\d*)$`,\n ).test(text)\n )\n return true;\n\n if (\n new RegExp(\n `^(?:[1-9]\\\\d*(?:\\\\.\\\\d+)?|0?\\\\.\\\\d*[1-9]\\\\d*)\\\\s*\\\\+\\\\s*${escaped}$`,\n ).test(text)\n )\n return true;\n\n if (argument.type === \"function_call\") {\n const path = context.resolveCallPath(context.getCallPath(argument) ?? \"\");\n\n if (\n path === \"table.clone\" ||\n path === \"table.create\" ||\n path === \"table.pack\"\n )\n return true;\n }\n\n return false;\n}\n\nexport const noDerivedStateEffect: RuleDefinition = {\n id: \"react-luau/no-derived-state-effect\",\n category: \"Effects\",\n severity: \"warning\",\n\n description:\n \"Avoid copying render-known derived values into state from an effect.\",\n\n guidance: {\n help: \"Calculate the value during render and remove the state setter. Keep the effect only if it does other work. Keep state if the delay is intentional.\",\n },\n\n run(context) {\n const diagnostics = [];\n\n for (const call of context.findCalls()) {\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!isEffectPath(path)) continue;\n\n const owner = ownerForHook(context, call);\n const parts = callbackAndDeps(context, call);\n\n if (!owner || !parts) continue;\n\n if (hasExternalSubscription(parts.callback, context)) continue;\n\n const available =\n context.model.componentLocals.get(nodeKey(owner.node)) ??\n new Set(owner.parameters);\n\n const bindings = stateBindingsFor(context, owner);\n\n const setterToValue = new Map(\n bindings.map((binding) => [binding.setterName, binding.valueName]),\n );\n\n for (const setterCall of directTopLevelCalls(context, parts.callback)) {\n const setter = context.getCallPath(setterCall) ?? \"\";\n const targetState = setterToValue.get(setter);\n\n if (!targetState) continue;\n\n // If the setter is also used by handlers or other effects, the state has independent\n // ownership and is not merely a render-known derived copy.\n if (setterCalledOutsideCallback(context, owner, parts.callback, setter))\n continue;\n\n const argument = context.callArguments(setterCall)[0];\n\n if (\n !argument ||\n argument.type === \"function_definition\" ||\n hasCall(argument, context)\n )\n continue;\n\n const sourceNames = [...available].filter(\n (name) =>\n name !== targetState &&\n containsUnshadowedIdentifier(argument, name, context, owner),\n );\n\n if (sourceNames.length === 0) continue;\n\n diagnostics.push({\n node: callNameNode(setterCall),\n message: `${setter}() stores a value derived from ${sourceNames.slice(0, 3).join(\", \")} inside an effect.`,\n summary: `${targetState} can be calculated during render.`,\n explanation: `${setter} copies a value derived from ${sourceNames.slice(0, 3).join(\", \")} into state after render.`,\n help: \"Compute the value during render when it is fully derived from render-known inputs.\",\n\n fixPreview: {\n kind: \"pattern\" as const,\n before: setterCall.text,\n after: `local ${targetState} = ${argument.text}`,\n note: \"Remove the state pair and the setter call if the effect has no other work. Keep state when the delay is intentional.\",\n },\n });\n }\n }\n\n return diagnostics;\n },\n};\n\nexport const noSelfUpdatingEffect: RuleDefinition = {\n id: \"react-luau/no-self-updating-effect\",\n category: \"Effects\",\n severity: \"warning\",\n\n description:\n \"Effects should not unconditionally update state in a way that schedules themselves again.\",\n\n run(context) {\n const diagnostics = [];\n\n for (const call of context.findCalls()) {\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!isEffectPath(path)) continue;\n\n const owner = ownerForHook(context, call);\n\n if (!owner) continue;\n\n const parts = callbackAndDeps(context, call);\n\n if (parts) {\n const deps = parseDependencyRoots(parts.deps);\n\n for (const binding of stateBindingsFor(context, owner)) {\n if (!deps.has(binding.valueName)) continue;\n\n for (const setterCall of directTopLevelCalls(\n context,\n parts.callback,\n )) {\n if (context.getCallPath(setterCall) !== binding.setterName)\n continue;\n\n diagnostics.push({\n node: callNameNode(setterCall),\n message: `${binding.setterName}() updates ${binding.valueName}, which is also in this effect's dependency table.`,\n help: \"Guard the update so it converges, move it to the originating event, or derive the value during render.\",\n });\n }\n }\n\n continue;\n }\n\n const callback = effectCallbackWithoutDeps(context, call);\n\n if (!callback) continue;\n\n for (const binding of stateBindingsFor(context, owner)) {\n for (const setterCall of directTopLevelCalls(context, callback)) {\n if (context.getCallPath(setterCall) !== binding.setterName) continue;\n\n const argument = context.callArguments(setterCall)[0];\n\n if (\n !argument ||\n !guaranteedRepeatedStateChange(argument, binding.valueName, context)\n )\n continue;\n\n diagnostics.push({\n node: callNameNode(setterCall),\n message: `${binding.setterName}() unconditionally changes ${binding.valueName} in an effect that runs after every render.`,\n help: \"Add a dependency table or convergence guard, move the update to the event that owns it, or derive the value during render.\",\n });\n }\n }\n }\n\n return diagnostics;\n },\n};\n\nexport const noEffectWithFreshDeps: RuleDefinition = {\n id: \"react-luau/no-effect-with-fresh-deps\",\n category: \"Hooks\",\n severity: \"error\",\n\n description:\n \"Dependency tables should not contain reference values recreated during render\",\n\n run(context) {\n const diagnostics = [];\n\n for (const call of context.findCalls()) {\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!HOOKS_WITH_DEPS.has(path)) continue;\n\n const owner = ownerForHook(context, call);\n const parts = callbackAndDeps(context, call);\n\n if (!owner || !parts) continue;\n\n for (const dependency of dependencyExpressions(parts.deps)) {\n const kind = freshValueKind(context, dependency, owner);\n\n if (!kind) continue;\n\n const label =\n dependency.type === \"identifier\" ? ` ${dependency.text}` : \"\";\n\n diagnostics.push({\n node: dependency,\n message: `${path} depends on${label || \" an inline value\"} that can be a new ${kind} when the component renders`,\n help: \"Move the value inside the hook callback and depend on its simple inputs, or intentionally stabilize the value with useMemo/useCallback when identity is part of the contract\",\n });\n }\n }\n\n return diagnostics;\n },\n};\n\nexport const noMutableInDeps: RuleDefinition = {\n id: \"react-luau/no-mutable-in-deps\",\n category: \"Hooks\",\n severity: \"error\",\n\n description:\n \"Mutable ref.current values do not belong in hook dependency tables.\",\n\n run(context) {\n const diagnostics = [];\n\n for (const call of context.findCalls()) {\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!HOOKS_WITH_DEPS.has(path)) continue;\n\n const owner = ownerForHook(context, call);\n const parts = callbackAndDeps(context, call);\n\n if (!owner || !parts) continue;\n\n const refs =\n context.model.refVariablesByFunction.get(nodeKey(owner.node)) ??\n new Set<string>();\n\n for (const dependency of dependencyExpressions(parts.deps)) {\n const root = rootIdentifier(dependency.text);\n\n if (!root || !refs.has(root)) continue;\n\n if (\n !new RegExp(\n `^${root.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}\\\\s*\\\\.\\\\s*current\\\\b`,\n ).test(dependency.text.trim())\n )\n continue;\n\n diagnostics.push({\n node: dependency,\n message: `${dependency.text.trim()} is mutable ref state and will not itself trigger a React render when it changes.`,\n help: \"Read ref.current inside the hook body. Depend on reactive inputs that actually cause renders instead of listing the mutable current value.\",\n });\n }\n }\n\n return diagnostics;\n },\n};\n",
|
|
20
22
|
"import {\n reactApiPath,\n resolveLocalValue,\n unwrapExpression,\n} from \"../ast/local-values\";\nimport type { SyntaxNode } from \"../syntax\";\nimport type { RuleContext } from \"../types\";\n\nexport const HOOK_ARGUMENTS = new Map<\n string,\n { callbackIndex: number; depsIndex: number }\n>([\n [\"React.useEffect\", { callbackIndex: 0, depsIndex: 1 }],\n [\"React.useLayoutEffect\", { callbackIndex: 0, depsIndex: 1 }],\n [\"React.useMemo\", { callbackIndex: 0, depsIndex: 1 }],\n [\"React.useCallback\", { callbackIndex: 0, depsIndex: 1 }],\n [\"React.useImperativeHandle\", { callbackIndex: 1, depsIndex: 2 }],\n]);\n\nconst tableCache = new WeakMap<RuleContext, Map<number, SyntaxNode | null>>();\n\nexport function resolveDependencyTable(\n context: RuleContext,\n expression: SyntaxNode | undefined,\n): SyntaxNode | null {\n if (!expression) return null;\n\n const resolved = resolveLocalValue(context, expression);\n\n if (\n !resolved ||\n resolved.returnIndex !== 0 ||\n resolved.value.type !== \"table_constructor\"\n )\n return null;\n\n const table = resolved.value;\n\n if (unwrapExpression(expression).id === table.id) return table;\n\n let cache = tableCache.get(context);\n\n if (!cache) {\n cache = new Map();\n tableCache.set(context, cache);\n }\n\n if (cache.has(expression.id)) return cache.get(expression.id) ?? null;\n\n const refersToTable = (node: SyntaxNode) =>\n resolveLocalValue(context, node)?.value.id === table.id;\n let result: SyntaxNode | null = table;\n\n // Resolving a local proves its initial value, not that its contents stayed unchanged\n for (const node of context.walk()) {\n if (\n node.startIndex <= table.endIndex ||\n node.startIndex >= expression.startIndex\n )\n continue;\n\n if (\n node.type === \"assignment_statement\" ||\n node.type === \"update_statement\"\n ) {\n const targets =\n node.namedChildren.find((child) => child.type === \"variable_list\")\n ?.namedChildren ?? [];\n\n if (\n targets.some(\n (target) =>\n [\"dot_index_expression\", \"bracket_index_expression\"].includes(\n target.type,\n ) &&\n target.namedChildren[0] &&\n refersToTable(target.namedChildren[0]),\n )\n ) {\n result = null;\n break;\n }\n }\n\n if (node.type !== \"function_call\") continue;\n\n const name = node.childForFieldName(\"name\");\n const receiver =\n name?.type === \"method_index_expression\" ? name.namedChildren[0] : null;\n const shape = HOOK_ARGUMENTS.get(reactApiPath(context, node) ?? \"\");\n const args = context.callArguments(node);\n\n if (\n (receiver && refersToTable(receiver)) ||\n args.some(\n (arg, index) => refersToTable(arg) && index !== shape?.depsIndex,\n )\n ) {\n result = null;\n break;\n }\n }\n\n cache.set(expression.id, result);\n\n return result;\n}\n",
|
|
21
23
|
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { DiagnosticInput, FunctionInfo, RuleContext, RuleDefinition } from \"../types\";\r\nimport { nodeKey, normalizeExpressionText, parameterBindingNames, rootIdentifier, sameNode } from \"../ast/walk\";\r\nimport { mutableDependencyBase } from \"../roblox-semantics\";\r\nimport { declarationNames, dependencyExpressions, tableStartNode } from \"./helpers\";\r\nimport { HOOK_ARGUMENTS, resolveDependencyTable } from \"./dependency-tables\";\r\nimport { resolveLocalValue } from \"../ast/local-values\";\r\n\r\nconst GLOBALS = new Set([\r\n \"game\", \"workspace\", \"script\", \"shared\", \"Enum\", \"Instance\", \"task\", \"coroutine\", \"debug\", \"os\", \"utf8\", \"buffer\", \"bit32\",\r\n \"math\", \"string\", \"table\", \"pairs\", \"ipairs\", \"next\", \"pcall\", \"xpcall\", \"print\", \"warn\", \"error\", \"assert\", \"type\", \"typeof\",\r\n \"tonumber\", \"tostring\", \"select\", \"unpack\", \"rawget\", \"rawset\", \"rawequal\", \"setmetatable\", \"getmetatable\", \"Vector2\", \"Vector3\", \"UDim\",\r\n \"UDim2\", \"CFrame\", \"Color3\", \"BrickColor\", \"Rect\", \"Region3\", \"Ray\", \"TweenInfo\", \"NumberRange\", \"NumberSequence\", \"ColorSequence\",\r\n \"DateTime\", \"Random\", \"Axes\", \"Faces\", \"PhysicalProperties\", \"RaycastParams\", \"OverlapParams\", \"DockWidgetPluginGuiInfo\",\r\n]);\r\n\r\nfunction parameterNames(functionNode: SyntaxNode): Set<string> {\r\n return new Set(parameterBindingNames(functionNode.childForFieldName(\"parameters\")));\r\n}\r\n\r\nfunction* descendants(node: SyntaxNode): Iterable<SyntaxNode> {\r\n yield node;\r\n for (const child of node.namedChildren) yield* descendants(child);\r\n}\r\n\r\nconst TYPE_ONLY_NODES = new Set([\r\n \"type_definition\",\r\n \"type_annotation\",\r\n \"type_parameters\",\r\n \"generic_type_list\",\r\n \"generic_type\",\r\n \"function_type\",\r\n \"optional_type\",\r\n \"object_type\",\r\n \"union_type\",\r\n \"intersection_type\",\r\n \"tuple_type\",\r\n \"singleton_type\",\r\n \"variadic_type\",\r\n \"variadic_type_pack\",\r\n]);\r\n\r\nfunction isTypeOnlyChild(parent: SyntaxNode, child: SyntaxNode): boolean {\r\n if (TYPE_ONLY_NODES.has(child.type)) return true;\r\n if (TYPE_ONLY_NODES.has(parent.type)) return true;\r\n\r\n if (parent.type === \"parameter\") {\r\n return !sameNode(parent.namedChildren.find((candidate) => candidate.type === \"identifier\"), child);\r\n }\r\n\r\n if (parent.type === \"cast_expression\" || parent.type === \"type_cast_expression\") {\r\n return !sameNode(parent.namedChildren[0], child);\r\n }\r\n\r\n if (parent.type === \"function_definition\" || parent.type === \"function_declaration\") {\r\n const name = parent.childForFieldName(\"name\");\r\n const parameters = parent.childForFieldName(\"parameters\");\r\n const body = parent.childForFieldName(\"body\");\r\n if (sameNode(child, name) || sameNode(child, parameters) || sameNode(child, body)) return false;\r\n return true;\r\n }\r\n\r\n if (parent.type === \"variable_list\" && parent.parent?.parent?.type === \"variable_declaration\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction* runtimeDescendants(node: SyntaxNode): Iterable<SyntaxNode> {\r\n yield node;\r\n for (const child of node.namedChildren) {\r\n if (isTypeOnlyChild(node, child)) continue;\r\n yield* runtimeDescendants(child);\r\n }\r\n}\r\n\r\nfunction directBlockBindingNames(block: SyntaxNode, beforeIndex: number): Set<string> {\r\n const names = new Set<string>();\r\n for (const child of block.namedChildren) {\r\n if (child.startIndex >= beforeIndex) continue;\r\n if (child.type === \"variable_declaration\") {\r\n for (const name of declarationNames(child)) names.add(name);\r\n } else if (child.type === \"function_declaration\") {\r\n const name = child.childForFieldName(\"name\")?.text;\r\n if (name && /^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) names.add(name);\r\n }\r\n }\r\n return names;\r\n}\r\n\r\nfunction loopBindingNames(loop: SyntaxNode): Set<string> {\r\n const names = new Set<string>();\r\n const header = loop.text.split(/\\bdo\\b/s, 1)[0] ?? \"\";\r\n const numeric = header.match(/^\\s*for\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=/s);\r\n if (numeric) names.add(numeric[1]);\r\n const generic = header.match(/^\\s*for\\s+(.+?)\\s+in\\b/s);\r\n if (generic) {\r\n for (const part of generic[1].split(\",\")) {\r\n const name = part.trim().match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\r\n if (name) names.add(name);\r\n }\r\n }\r\n return names;\r\n}\r\n\r\nfunction isLocallyBoundOccurrence(identifier: SyntaxNode, callback: SyntaxNode, name: string): boolean {\r\n if (parameterNames(callback).has(name)) return true;\r\n\r\n let current = identifier.parent;\r\n while (current && !sameNode(current, callback)) {\r\n if ((current.type === \"function_definition\" || current.type === \"function_declaration\") && parameterNames(current).has(name)) {\r\n return true;\r\n }\r\n if (current.type === \"block\" && directBlockBindingNames(current, identifier.startIndex).has(name)) return true;\r\n if (current.type === \"for_statement\" && loopBindingNames(current).has(name)) return true;\r\n current = current.parent;\r\n }\r\n return false;\r\n}\r\n\r\nfunction isPropertyName(node: SyntaxNode): boolean {\r\n const parent = node.parent;\r\n if (!parent) return false;\r\n if (parent.type === \"dot_index_expression\") return sameNode(parent.childForFieldName(\"field\"), node);\r\n if (parent.type === \"method_index_expression\") return sameNode(parent.childForFieldName(\"method\"), node) || sameNode(parent.namedChildren.at(-1), node);\r\n // `fieldName = value` uses fieldName as a table key, not as a captured value.\r\n // Without this, a coincidentally named component local can create a fake dep.\r\n if (parent.type === \"field\" && !parent.text.trim().startsWith(\"[\")) {\r\n return sameNode(parent.childForFieldName(\"name\"), node);\r\n }\r\n return false;\r\n}\r\n\r\nfunction outermostDotPath(node: SyntaxNode): boolean {\r\n const parent = node.parent;\r\n return !(parent?.type === \"dot_index_expression\" && sameNode(parent.namedChildren[0], node));\r\n}\r\n\r\nfunction rootIdentifierNode(node: SyntaxNode, root: string): SyntaxNode | null {\r\n for (const candidate of descendants(node)) {\r\n if (candidate.type !== \"identifier\" || candidate.text !== root) continue;\r\n if (isPropertyName(candidate)) continue;\r\n return candidate;\r\n }\r\n return null;\r\n}\r\n\r\nfunction normalizeCapturedPath(\r\n path: string,\r\n stableVariables: Set<string>,\r\n externallyMutableRoots: Set<string>,\r\n): string | null {\r\n const normalized = normalizeExpressionText(path);\r\n const root = rootIdentifier(normalized);\r\n if (!root) return normalized;\r\n\r\n const mutableBase = mutableDependencyBase(normalized, externallyMutableRoots);\r\n if (mutableBase === \"\") return null;\r\n if (mutableBase) {\r\n const baseRoot = rootIdentifier(mutableBase);\r\n if (baseRoot && stableVariables.has(baseRoot)) return null;\r\n return mutableBase;\r\n }\r\n\r\n return normalized;\r\n}\r\n\r\nfunction capturedDependencyPaths(\r\n callback: SyntaxNode,\r\n available: Set<string>,\r\n stableVariables: Set<string>,\r\n externallyMutableRoots: Set<string>,\r\n context: RuleContext,\r\n): Set<string> {\r\n const captured = new Set<string>();\r\n const owner = context.nearestFunction(callback);\r\n\r\n const isRenderBinding = (identifier: SyntaxNode): boolean => {\r\n const resolved = resolveLocalValue(context, identifier);\r\n\r\n return !resolved || context.nearestFunction(resolved.value) === owner;\r\n };\r\n\r\n for (const node of runtimeDescendants(callback)) {\r\n if (node.type === \"dot_index_expression\" && outermostDotPath(node)) {\r\n const root = rootIdentifier(node.text);\r\n if (!root || !available.has(root) || GLOBALS.has(root) || stableVariables.has(root)) continue;\r\n const rootNode = rootIdentifierNode(node, root);\r\n if (!rootNode || isLocallyBoundOccurrence(rootNode, callback, root)) continue;\r\n if (!isRenderBinding(rootNode)) continue;\r\n const capture = normalizeCapturedPath(node.text, stableVariables, externallyMutableRoots);\r\n if (capture) captured.add(capture);\r\n continue;\r\n }\r\n\r\n if (node.type !== \"identifier\" || isPropertyName(node)) continue;\r\n const parent = node.parent;\r\n if (parent?.type === \"dot_index_expression\" && sameNode(parent.namedChildren[0], node)) continue;\r\n const name = node.text;\r\n if (!available.has(name) || GLOBALS.has(name) || stableVariables.has(name)) continue;\r\n if (isLocallyBoundOccurrence(node, callback, name)) continue;\r\n if (!isRenderBinding(node)) continue;\r\n captured.add(name);\r\n }\r\n\r\n return captured;\r\n}\r\n\r\nfunction localFunctionNode(owner: FunctionInfo, name: string, context: RuleContext): SyntaxNode | null {\r\n if (!owner.body) return null;\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type === \"function_declaration\" && statement.childForFieldName(\"name\")?.text === name) return statement;\r\n if (statement.type !== \"variable_declaration\" || !declarationNames(statement).includes(name)) continue;\r\n const prefix = statement.text.split(\"=\", 1)[0] ?? \"\";\r\n if (!new RegExp(`\\b${name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}\\b`).test(prefix)) continue;\r\n const fn = [...context.walk(statement)].find((node) => node.type === \"function_definition\");\r\n if (fn) return fn;\r\n }\r\n return null;\r\n}\r\n\r\nfunction expandLocalFunctionCaptures(\r\n captured: Set<string>,\r\n owner: FunctionInfo,\r\n available: Set<string>,\r\n stableVariables: Set<string>,\r\n externallyMutableRoots: Set<string>,\r\n context: RuleContext,\r\n): Set<string> {\r\n const result = new Set<string>();\r\n const visiting = new Set<string>();\r\n\r\n const addCapture = (capture: string): void => {\r\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(capture)) {\r\n result.add(capture);\r\n return;\r\n }\r\n const fn = localFunctionNode(owner, capture, context);\r\n if (visiting.has(capture)) return;\r\n if (!fn) {\r\n result.add(capture);\r\n return;\r\n }\r\n\r\n visiting.add(capture);\r\n const inner = capturedDependencyPaths(fn, available, stableVariables, externallyMutableRoots, context);\r\n for (const dependency of inner) addCapture(dependency);\r\n visiting.delete(capture);\r\n };\r\n\r\n for (const capture of captured) addCapture(capture);\r\n return result;\r\n}\r\n\r\nfunction dependencyCoveragePath(node: SyntaxNode): string {\r\n if (node.type === \"cast_expression\" || node.type === \"type_cast_expression\" || node.type === \"parenthesized_expression\") {\r\n const expression = node.namedChildren[0];\r\n if (expression) return dependencyCoveragePath(expression);\r\n }\r\n\r\n if (node.type === \"binary_expression\") {\r\n const left = node.childForFieldName(\"left\") ?? node.namedChildren[0];\r\n const right = node.childForFieldName(\"right\") ?? node.namedChildren[1];\r\n const isOr = node.children.some((child) => child.type === \"or\");\r\n if (isOr && left && right?.type === \"false\") return dependencyCoveragePath(left);\r\n }\r\n\r\n return normalizeExpressionText(node.text);\r\n}\r\n\r\nfunction dependencyPaths(node: SyntaxNode): Set<string> {\r\n return new Set(dependencyExpressions(node).map(dependencyCoveragePath));\r\n}\r\n\r\nfunction transparentAliasPath(node: SyntaxNode): string | null {\r\n if (node.type === \"cast_expression\" || node.type === \"type_cast_expression\" || node.type === \"parenthesized_expression\") {\r\n const expression = node.namedChildren[0];\r\n return expression ? transparentAliasPath(expression) : null;\r\n }\r\n\r\n if (node.type !== \"identifier\" && node.type !== \"dot_index_expression\") return null;\r\n return normalizeExpressionText(node.text);\r\n}\r\n\r\nfunction immutableTransparentAliases(owner: FunctionInfo, context: RuleContext): Map<string, string> {\r\n const aliases = new Map<string, string>();\r\n if (!owner.body) return aliases;\r\n const mutated = mutatedOwnerLocals(owner, context);\r\n\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(statement);\r\n const expressions = declarationExpressions(statement);\r\n\r\n for (let index = 0; index < names.length; index += 1) {\r\n const name = names[index];\r\n const expression = expressions[index];\r\n if (!expression || mutated.has(name)) continue;\r\n const source = transparentAliasPath(expression);\r\n if (!source || source === name) continue;\r\n const sourceRoot = rootIdentifier(source);\r\n if (!sourceRoot || mutated.has(sourceRoot)) continue;\r\n aliases.set(name, source);\r\n }\r\n }\r\n\r\n return aliases;\r\n}\r\n\r\nfunction resolveAliasPath(path: string, aliases: Map<string, string>): string {\r\n let current = path;\r\n const visiting = new Set<string>();\r\n\r\n while (true) {\r\n const root = rootIdentifier(current);\r\n if (!root || visiting.has(root)) return current;\r\n const source = aliases.get(root);\r\n if (!source) return current;\r\n visiting.add(root);\r\n current = `${source}${current.slice(root.length)}`;\r\n }\r\n}\r\n\r\nfunction dependencyPathsWithAliases(\r\n node: SyntaxNode,\r\n aliases: Map<string, string>,\r\n): Set<string> {\r\n const dependencies = dependencyPaths(node);\r\n for (const dependency of [...dependencies]) {\r\n const resolved = resolveAliasPath(dependency, aliases);\r\n if (resolved !== dependency) dependencies.add(resolved);\r\n }\r\n return dependencies;\r\n}\r\n\r\nconst PURE_DERIVED_CALL = /^(?:math\\.(?!random(?:seed)?$)[A-Za-z_][A-Za-z0-9_]*|string\\.[A-Za-z_][A-Za-z0-9_]*|table\\.(?:find|concat|clone|create|isfrozen)|(?:Color3|Vector2|Vector3|UDim|UDim2|CFrame|BrickColor|Rect|NumberRange|NumberSequence|ColorSequence|TweenInfo|Font|Ray|Region3|PhysicalProperties)\\.[A-Za-z_][A-Za-z0-9_]*|[^:]+:(?:ToHSV|Lerp|Dot|Cross|FuzzyEq|Inverse|ToObjectSpace|ToWorldSpace))$/;\r\n\r\nfunction isPureDerivedExpression(node: SyntaxNode, context: RuleContext): boolean {\r\n for (const candidate of context.walk(node)) {\r\n if (candidate !== node && (candidate.type === \"function_definition\" || candidate.type === \"function_declaration\")) return false;\r\n if (candidate.type !== \"function_call\") continue;\r\n const rawPath = context.getCallPath(candidate);\r\n if (!rawPath) return false;\r\n const path = normalizeExpressionText(context.resolveCallPath(rawPath));\r\n if (!PURE_DERIVED_CALL.test(path)) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction mutatedOwnerLocals(owner: FunctionInfo, context: RuleContext): Set<string> {\r\n const mutated = new Set<string>();\r\n if (!owner.body) return mutated;\r\n\r\n for (const node of context.walk(owner.body)) {\r\n if (node.type !== \"assignment_statement\" && node.type !== \"update_statement\") continue;\r\n if (node.parent?.type === \"variable_declaration\") continue;\r\n const variables = node.namedChildren.find((child) => child.type === \"variable_list\");\r\n if (!variables) continue;\r\n for (const variable of variables.namedChildren) {\r\n const root = rootIdentifier(normalizeExpressionText(variable.text));\r\n if (root) mutated.add(root);\r\n }\r\n }\r\n\r\n return mutated;\r\n}\r\n\r\nfunction derivedLocalDependencies(\r\n owner: FunctionInfo,\r\n available: Set<string>,\r\n stableVariables: Set<string>,\r\n externallyMutableRoots: Set<string>,\r\n context: RuleContext,\r\n): Map<string, Set<string>> {\r\n const derived = new Map<string, Set<string>>();\r\n if (!owner.body) return derived;\r\n const mutated = mutatedOwnerLocals(owner, context);\r\n\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(statement);\r\n const expressions = declarationExpressions(statement);\r\n if (names.length === 0 || expressions.length === 0) continue;\r\n\r\n for (let index = 0; index < names.length; index += 1) {\r\n const name = names[index];\r\n const expression = expressions[index] ?? expressions[0];\r\n if (!expression || mutated.has(name) || !isPureDerivedExpression(expression, context)) continue;\r\n derived.set(name, capturedDependencyPaths(expression, available, stableVariables, externallyMutableRoots, context));\r\n }\r\n }\r\n\r\n return derived;\r\n}\r\n\r\nfunction expandDerivedLocalCaptures(\r\n captured: Set<string>,\r\n derived: Map<string, Set<string>>,\r\n dependencies: Set<string>,\r\n): Set<string> {\r\n const result = new Set<string>();\r\n const visiting = new Set<string>();\r\n\r\n const addCapture = (capture: string): void => {\r\n if (dependencySatisfies(capture, dependencies)) {\r\n result.add(capture);\r\n return;\r\n }\r\n const root = rootIdentifier(capture);\r\n if (!root || !derived.has(root)) {\r\n result.add(capture);\r\n return;\r\n }\r\n if (visiting.has(root)) return;\r\n\r\n visiting.add(root);\r\n for (const dependency of derived.get(root) ?? []) addCapture(dependency);\r\n visiting.delete(root);\r\n };\r\n\r\n for (const capture of captured) addCapture(capture);\r\n return result;\r\n}\r\n\r\nfunction hasDynamicUnpackDependencies(node: SyntaxNode, context: RuleContext): boolean {\r\n for (const dependency of dependencyExpressions(node)) {\r\n for (const candidate of context.walk(dependency)) {\r\n if (candidate.type !== \"function_call\") continue;\r\n const rawPath = context.getCallPath(candidate);\r\n if (!rawPath) continue;\r\n const path = normalizeExpressionText(context.resolveCallPath(rawPath));\r\n if (path === \"unpack\" || path === \"table.unpack\") return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction memoizedProducerDependencies(owner: FunctionInfo, context: RuleContext): Map<string, Set<string>> {\r\n const producers = new Map<string, Set<string>>();\r\n if (!owner.body) return producers;\r\n\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(statement);\r\n const expressions = declarationExpressions(statement);\r\n if (names.length === 0 || expressions.length === 0) continue;\r\n\r\n for (let index = 0; index < names.length; index += 1) {\r\n const name = names[index];\r\n const expression = expressions[index] ?? expressions[0];\r\n if (!expression || expression.type !== \"function_call\") continue;\r\n const rawPath = context.getCallPath(expression);\r\n if (!rawPath) continue;\r\n const path = context.resolveCallPath(rawPath);\r\n if (path !== \"React.useMemo\" && path !== \"React.useCallback\") continue;\r\n const args = context.callArguments(expression);\r\n const deps = resolveDependencyTable(context, args[1]);\r\n if (!deps || hasDynamicUnpackDependencies(deps, context)) continue;\r\n producers.set(name, dependencyPaths(deps));\r\n }\r\n }\r\n\r\n return producers;\r\n}\r\n\r\nfunction isTransitivelyCoveredMemoizedValue(\r\n dependency: string,\r\n producers: Map<string, Set<string>>,\r\n dependencies: Set<string>,\r\n): boolean {\r\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(dependency)) return false;\r\n const producerDependencies = producers.get(dependency);\r\n if (!producerDependencies) return false;\r\n return [...producerDependencies].every((producerDependency) => dependencySatisfies(producerDependency, dependencies));\r\n}\r\n\r\nfunction dependencySatisfies(captured: string, dependencies: Set<string>): boolean {\r\n for (const dependency of dependencies) {\r\n if (captured === dependency) return true;\r\n if (captured.startsWith(`${dependency}.`) || captured.startsWith(`${dependency}[`)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction minimalMissingDependencies(captured: Set<string>, dependencies: Set<string>): string[] {\r\n const missing = [...captured]\r\n .filter((name) => !dependencySatisfies(name, dependencies))\r\n .sort((left, right) => left.length - right.length || left.localeCompare(right));\r\n const result: string[] = [];\r\n for (const candidate of missing) {\r\n if (dependencySatisfies(candidate, new Set(result))) continue;\r\n result.push(candidate);\r\n }\r\n return result.sort();\r\n}\r\n\r\nfunction declarationExpressions(node: SyntaxNode): SyntaxNode[] {\r\n if (node.type !== \"variable_declaration\") return [];\r\n const assignment = node.namedChildren.find((child) => child.type === \"assignment_statement\");\r\n const expressionList = assignment?.namedChildren.find((child) => child.type === \"expression_list\");\r\n return expressionList?.namedChildren ?? [];\r\n}\r\n\r\nfunction directCallsInExpression(node: SyntaxNode): SyntaxNode[] {\r\n const calls: SyntaxNode[] = [];\r\n const pending = [node];\r\n while (pending.length > 0) {\r\n const current = pending.pop()!;\r\n if (current !== node && (current.type === \"function_definition\" || current.type === \"function_declaration\")) continue;\r\n if (current.type === \"function_call\") calls.push(current);\r\n pending.push(...current.namedChildren);\r\n }\r\n return calls;\r\n}\r\n\r\nfunction isCustomHookCall(call: SyntaxNode, context: RuleContext): boolean {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n const final = path.split(/[.:]/).at(-1) ?? \"\";\r\n return !path.startsWith(\"React.\") && /^use[A-Z0-9_]/.test(final);\r\n}\r\n\r\ninterface CustomHookDependencyHints {\r\n memberHandleRoots: Set<string>;\r\n likelyHandleRoots: Set<string>;\r\n compositeHandleRoots: Set<string>;\r\n}\r\n\r\nconst HANDLE_VALUE_NAME = /(?:ref|binding|tween|spring|motion|animation|controller|handle|connection|signal)$/i;\r\nconst HANDLE_HOOK_NAME = /(?:Tween|Spring|Binding|Motion|Animated|Animation|Sound)$/i;\r\n\r\nfunction isCalledAsFunction(owner: FunctionInfo, name: string, context: RuleContext): boolean {\r\n if (!owner.body) return false;\r\n for (const call of context.walk(owner.body)) {\r\n if (call.type !== \"function_call\") continue;\r\n const path = normalizeExpressionText(context.getCallPath(call) ?? \"\");\r\n if (path === name) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction customHookDependencyHints(owner: FunctionInfo, context: RuleContext): CustomHookDependencyHints {\r\n const hints: CustomHookDependencyHints = {\r\n memberHandleRoots: new Set<string>(),\r\n likelyHandleRoots: new Set<string>(),\r\n compositeHandleRoots: new Set<string>(),\r\n };\r\n if (!owner.body) return hints;\r\n\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(statement);\r\n const expressions = declarationExpressions(statement);\r\n if (names.length === 0 || expressions.length === 0) continue;\r\n\r\n for (let index = 0; index < names.length; index += 1) {\r\n const name = names[index];\r\n const expression = expressions[index] ?? expressions[0];\r\n if (!expression) continue;\r\n const calls = directCallsInExpression(expression);\r\n if (calls.length === 0) continue;\r\n\r\n const directHook = calls.find((call) => isCustomHookCall(call, context));\r\n if (directHook && expression.type === \"function_call\") {\r\n const path = context.resolveCallPath(context.getCallPath(directHook) ?? \"\");\r\n const final = path.split(/[.:]/).at(-1) ?? \"\";\r\n const likelyHandle = HANDLE_VALUE_NAME.test(name) || HANDLE_HOOK_NAME.test(final) || isCalledAsFunction(owner, name, context);\r\n if (likelyHandle) {\r\n hints.memberHandleRoots.add(name);\r\n hints.likelyHandleRoots.add(name);\r\n }\r\n continue;\r\n }\r\n\r\n if (expression.type === \"table_constructor\") {\r\n const meaningfulCalls = calls.filter((call) => {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n return !/^(?:Color3|Vector2|Vector3|UDim|UDim2|CFrame|TweenInfo|NumberSequence|ColorSequence)\\./.test(path);\r\n });\r\n const allHandleHooks = meaningfulCalls.length > 0 && meaningfulCalls.every((call) => {\r\n if (!isCustomHookCall(call, context)) return false;\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n const final = path.split(/[.:]/).at(-1) ?? \"\";\r\n return HANDLE_HOOK_NAME.test(final);\r\n });\r\n if (allHandleHooks) hints.compositeHandleRoots.add(name);\r\n }\r\n }\r\n }\r\n\r\n return hints;\r\n}\r\n\r\nfunction isAmbiguousCustomHookHandle(dependency: string, hints: CustomHookDependencyHints): boolean {\r\n const root = rootIdentifier(dependency);\r\n if (!root) return false;\r\n if (hints.compositeHandleRoots.has(root)) return true;\r\n if (hints.likelyHandleRoots.has(root)) return true;\r\n return hints.memberHandleRoots.has(root) && dependency !== root;\r\n}\r\n\r\n\r\nexport const exhaustiveDeps: RuleDefinition = {\r\n id: \"react-luau/exhaustive-deps\",\r\n category: \"Hooks\",\r\n severity: \"warning\",\r\n description: \"React hook dependency tables should include captured reactive render values.\",\r\n run(context: RuleContext) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n const derivedDependenciesByOwner = new Map<number, Map<string, Set<string>>>();\r\n const dependencyHintsByOwner = new Map<number, CustomHookDependencyHints>();\r\n const memoizedProducersByOwner = new Map<number, Map<string, Set<string>>>();\r\n const transparentAliasesByOwner = new Map<number, Map<string, string>>();\r\n\r\n for (const call of context.findCalls()) {\r\n const rawPath = context.getCallPath(call);\r\n if (!rawPath) continue;\r\n const path = context.resolveCallPath(rawPath);\r\n const shape = HOOK_ARGUMENTS.get(path);\r\n if (!shape) continue;\r\n\r\n const args = context.callArguments(call);\r\n const callback = args[shape.callbackIndex];\r\n const depsArgument = args[shape.depsIndex];\r\n const deps = resolveDependencyTable(context, depsArgument);\r\n if (!callback || callback.type !== \"function_definition\" || !deps || !depsArgument) continue;\r\n const depsNode = tableStartNode(depsArgument);\r\n\r\n const owner = context.nearestFunction(call);\r\n if (!owner || (!owner.isComponent && !owner.isHook)) continue;\r\n const ownerKey = nodeKey(owner.node);\r\n const available = context.model.componentLocals.get(ownerKey) ?? new Set<string>();\r\n const stableVariables = context.model.stableVariablesByFunction.get(ownerKey) ?? new Set<string>();\r\n const externallyMutableRoots = context.model.externalMutableVariablesByFunction.get(ownerKey) ?? new Set<string>();\r\n const functionExpandedCaptures = expandLocalFunctionCaptures(\r\n capturedDependencyPaths(callback, available, stableVariables, externallyMutableRoots, context),\r\n owner,\r\n available,\r\n stableVariables,\r\n externallyMutableRoots,\r\n context,\r\n );\r\n let transparentAliases = transparentAliasesByOwner.get(ownerKey);\r\n if (!transparentAliases) {\r\n transparentAliases = immutableTransparentAliases(owner, context);\r\n transparentAliasesByOwner.set(ownerKey, transparentAliases);\r\n }\r\n const dependencies = dependencyPathsWithAliases(deps, transparentAliases);\r\n let derivedDependencies = derivedDependenciesByOwner.get(ownerKey);\r\n if (!derivedDependencies) {\r\n derivedDependencies = derivedLocalDependencies(owner, available, stableVariables, externallyMutableRoots, context);\r\n derivedDependenciesByOwner.set(ownerKey, derivedDependencies);\r\n }\r\n const captured = expandDerivedLocalCaptures(\r\n functionExpandedCaptures,\r\n derivedDependencies,\r\n dependencies,\r\n );\r\n const missing = minimalMissingDependencies(captured, dependencies);\r\n if (missing.length === 0) continue;\r\n\r\n if (hasDynamicUnpackDependencies(deps, context)) {\r\n diagnostics.push({\r\n node: depsNode,\r\n severity: \"suggestion\",\r\n message: `${path} uses dynamic unpack(...) dependencies, so exhaustive dependency analysis is partial.`,\r\n help: \"The analyzer cannot prove which values unpack(...) contributes. Review the explicit dependencies and the custom hook contract.\",\r\n });\r\n continue;\r\n }\r\n\r\n let hints = dependencyHintsByOwner.get(ownerKey);\r\n if (!hints) {\r\n hints = customHookDependencyHints(owner, context);\r\n dependencyHintsByOwner.set(ownerKey, hints);\r\n }\r\n let memoizedProducers = memoizedProducersByOwner.get(ownerKey);\r\n if (!memoizedProducers) {\r\n memoizedProducers = memoizedProducerDependencies(owner, context);\r\n memoizedProducersByOwner.set(ownerKey, memoizedProducers);\r\n }\r\n const uncertainHandles = missing.filter((dependency) => isAmbiguousCustomHookHandle(dependency, hints));\r\n const transitivelyCoveredMemoized = missing.filter((dependency) =>\r\n !isAmbiguousCustomHookHandle(dependency, hints)\r\n && isTransitivelyCoveredMemoizedValue(dependency, memoizedProducers, dependencies)\r\n );\r\n const reactiveMissing = missing.filter((dependency) =>\r\n !isAmbiguousCustomHookHandle(dependency, hints)\r\n && !isTransitivelyCoveredMemoizedValue(dependency, memoizedProducers, dependencies)\r\n );\r\n\r\n if (reactiveMissing.length > 0) {\r\n diagnostics.push({\r\n node: depsNode,\r\n message: `${path} dependency table is missing ${reactiveMissing.join(\", \")}.`,\r\n help: `Add ${reactiveMissing.join(\", \")} to the dependency table, or stop capturing ${reactiveMissing.length === 1 ? \"that value\" : \"those values\"} in the callback.`,\r\n });\r\n }\r\n\r\n if (transitivelyCoveredMemoized.length > 0) {\r\n diagnostics.push({\r\n node: depsNode,\r\n severity: \"suggestion\",\r\n message: `${path} captures memoized value ${transitivelyCoveredMemoized.join(\", \")} without listing ${transitivelyCoveredMemoized.length === 1 ? \"it directly\" : \"them directly\"}, but ${transitivelyCoveredMemoized.length === 1 ? \"its memo dependencies are\" : \"their memo dependencies are\"} already covered.`,\r\n help: \"The producing memo dependencies are already covered. Listing the memoized value directly can make the dependency relationship clearer.\",\r\n });\r\n }\r\n\r\n if (uncertainHandles.length > 0) {\r\n diagnostics.push({\r\n node: depsNode,\r\n severity: \"suggestion\",\r\n message: `${path} captures custom-hook handle ${uncertainHandles.join(\", \")} without listing ${uncertainHandles.length === 1 ? \"it as a dependency\" : \"them as dependencies\"}.`,\r\n help: \"The analyzer cannot prove this custom-hook return is stable. Check the hook contract before changing the dependency table.\",\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
22
24
|
"interface BracketDepth {\n parentheses: number;\n brackets: number;\n braces: number;\n}\n\ninterface Range {\n start: number;\n end: number;\n}\n\nfunction scanTypeLine(text: string, depth: BracketDepth): void {\n let quote: string | null = null;\n let escaped = false;\n\n for (let index = 0; index < text.length; index += 1) {\n const char = text[index];\n const next = text[index + 1];\n\n if (quote) {\n if (escaped) escaped = false;\n else if (char === \"\\\\\") escaped = true;\n else if (char === quote) quote = null;\n\n continue;\n }\n\n if (char === '\"' || char === \"'\") {\n quote = char;\n continue;\n }\n\n if (char === \"-\" && next === \"-\") break;\n\n if (char === \"(\") depth.parentheses += 1;\n else if (char === \")\")\n depth.parentheses = Math.max(0, depth.parentheses - 1);\n else if (char === \"[\") depth.brackets += 1;\n else if (char === \"]\") depth.brackets = Math.max(0, depth.brackets - 1);\n else if (char === \"{\") depth.braces += 1;\n else if (char === \"}\") depth.braces = Math.max(0, depth.braces - 1);\n }\n}\n\nfunction depthIsZero(depth: BracketDepth): boolean {\n return depth.parentheses === 0 && depth.brackets === 0 && depth.braces === 0;\n}\n\nfunction lineData(source: string): { lines: string[]; offsets: number[] } {\n const lines = source\n .match(/[^\\n]*(?:\\n|$)/g)\n ?.filter(\n (line, index, all) => line.length > 0 || index < all.length - 1,\n ) ?? [source];\n const offsets: number[] = [];\n let offset = 0;\n\n for (const line of lines) {\n offsets.push(offset);\n offset += line.length;\n }\n\n return { lines, offsets };\n}\n\nfunction longBracketEquals(source: string, start: number): number | null {\n if (source[start] !== \"[\") return null;\n\n let index = start + 1;\n\n while (source[index] === \"=\") index += 1;\n\n return source[index] === \"[\" ? index - start - 1 : null;\n}\n\nfunction longBracketEnd(source: string, start: number, equals: number): number {\n const closer = `]${\"=\".repeat(equals)}]`;\n const end = source.indexOf(closer, start + equals + 2);\n\n return end < 0 ? source.length : end + closer.length;\n}\n\n/**\n * Masks comments and optionally strings so syntax compatibility rewrites\n * never alter text that merely contains a keyword\n */\nfunction codeMask(source: string, maskStrings = true): Uint8Array {\n const mask = new Uint8Array(source.length);\n mask.fill(1);\n\n let index = 0;\n\n while (index < source.length) {\n const char = source[index];\n\n if (char === \"'\" || char === '\"') {\n const quote = char;\n let cursor = index;\n let escaped = false;\n\n while (cursor < source.length) {\n if (maskStrings) mask[cursor] = 0;\n\n const current = source[cursor];\n cursor += 1;\n\n if (cursor - 1 === index) continue;\n\n if (escaped) escaped = false;\n else if (current === \"\\\\\") escaped = true;\n else if (current === quote) break;\n }\n\n index = cursor;\n continue;\n }\n\n if (char === \"`\") {\n let cursor = index;\n let escaped = false;\n\n while (cursor < source.length) {\n if (maskStrings) mask[cursor] = 0;\n\n const current = source[cursor];\n cursor += 1;\n\n if (cursor - 1 === index) continue;\n\n if (escaped) escaped = false;\n else if (current === \"\\\\\") escaped = true;\n else if (current === \"`\") break;\n }\n\n index = cursor;\n continue;\n }\n\n if (char === \"-\" && source[index + 1] === \"-\") {\n const longEquals = longBracketEquals(source, index + 2);\n const end =\n longEquals === null\n ? source.indexOf(\"\\n\", index + 2)\n : longBracketEnd(source, index + 2, longEquals);\n const stop = end < 0 ? source.length : end;\n mask.fill(0, index, stop);\n index = stop;\n continue;\n }\n\n if (char === \"[\") {\n const equals = longBracketEquals(source, index);\n\n if (equals !== null) {\n const end = longBracketEnd(source, index, equals);\n\n if (maskStrings) mask.fill(0, index, end);\n\n index = end;\n continue;\n }\n }\n\n index += 1;\n }\n\n return mask;\n}\n\nexport function sourceWithoutComments(source: string): string {\n const mask = codeMask(source, false);\n const parts: string[] = [];\n let start = 0;\n\n for (\n let comment = mask.indexOf(0);\n comment !== -1;\n comment = mask.indexOf(0, start)\n ) {\n parts.push(source.slice(start, comment));\n const nextCode = mask.indexOf(1, comment);\n start = nextCode === -1 ? source.length : nextCode;\n parts.push(source.slice(comment, start).replace(/[^\\r\\n]/g, \" \"));\n }\n\n return parts.length === 0 ? source : parts.join(\"\") + source.slice(start);\n}\n\nfunction isCode(mask: Uint8Array, start: number, end = start + 1): boolean {\n for (let index = start; index < end; index += 1) {\n if (mask[index] !== 1) return false;\n }\n\n return true;\n}\n\nfunction matchingCodeDelimiterEnd(\n source: string,\n mask: Uint8Array,\n start: number,\n opener: string,\n closer: string,\n): number | null {\n if (source[start] !== opener || !isCode(mask, start)) return null;\n\n let depth = 0;\n\n for (let cursor = start; cursor < source.length; cursor += 1) {\n if (!isCode(mask, cursor)) continue;\n\n if (source[cursor] === opener) depth += 1;\n else if (source[cursor] === closer) {\n depth -= 1;\n\n if (depth === 0) return cursor + 1;\n }\n }\n\n return null;\n}\n\nfunction maskTypeAliases(source: string, mask: Uint8Array): Range[] {\n const { lines, offsets } = lineData(source);\n const ranges: Range[] = [];\n const typeStart =\n /^(\\s*)(?:export\\s+)?type\\s+[A-Za-z_][A-Za-z0-9_]*(?:<[^>]*>)?\\s*=/;\n\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex += 1) {\n const line = lines[lineIndex].replace(/\\r?\\n$/, \"\");\n const match = line.match(typeStart);\n\n if (\n !match ||\n !isCode(\n mask,\n offsets[lineIndex] + match.index!,\n offsets[lineIndex] + match.index! + match[0].trimStart().length,\n )\n )\n continue;\n\n const depth: BracketDepth = { parentheses: 0, brackets: 0, braces: 0 };\n let sawExpression = false;\n let endLine = lineIndex;\n\n for (let current = lineIndex; current < lines.length; current += 1) {\n const currentLine = lines[current].replace(/\\r?\\n$/, \"\");\n const segment =\n current === lineIndex\n ? currentLine.slice(match[0].length)\n : currentLine;\n\n if (segment.trim().length > 0) sawExpression = true;\n\n scanTypeLine(segment, depth);\n endLine = current;\n\n if (!sawExpression || !depthIsZero(depth)) continue;\n\n const trimmed = segment.trimEnd();\n\n if (/[|&=,]$/.test(trimmed)) continue;\n\n let nextNonEmpty = \"\";\n\n for (\n let lookahead = current + 1;\n lookahead < lines.length;\n lookahead += 1\n ) {\n nextNonEmpty = lines[lookahead].trim();\n\n if (nextNonEmpty.length > 0) break;\n }\n\n if (/^[|&]/.test(nextNonEmpty)) continue;\n\n break;\n }\n\n ranges.push({\n start: offsets[lineIndex],\n end: offsets[endLine] + lines[endLine].length,\n });\n\n lineIndex = endLine;\n }\n\n return ranges;\n}\n\n/** Simple aliases retained for conservative syntax-based type hints. */\nexport function simpleTypeAliases(\n source: string,\n): Array<{ name: string; type: string; startIndex: number }> {\n const mask = codeMask(source);\n const result = [];\n\n for (const range of maskTypeAliases(source, mask)) {\n // Ignore comments and string contents when interpreting type syntax.\n const text = source\n .slice(range.start, range.end)\n .split(\"\")\n .map((char, index) => (mask[range.start + index] ? char : \" \"))\n .join(\"\");\n\n const match = text.match(\n /^\\s*(?:export\\s+)?type\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*([\\s\\S]*?)\\s*;?\\s*$/,\n );\n\n if (match)\n result.push({\n name: match[1],\n type: match[2],\n startIndex: Buffer.byteLength(source.slice(0, range.start)),\n });\n }\n\n return result;\n}\n\nfunction maskTypeLevelBlocks(source: string, mask: Uint8Array): Range[] {\n const { lines, offsets } = lineData(source);\n const ranges: Range[] = [];\n const declarationStart =\n /^(\\s*)(?:(?:export\\s+)?type\\s+function\\b|declare\\s+(?:extern\\s+type|class|global)\\b)/;\n\n for (let lineIndex = 0; lineIndex < lines.length; lineIndex += 1) {\n const line = lines[lineIndex].replace(/\\r?\\n$/, \"\");\n const match = line.match(declarationStart);\n\n if (!match) continue;\n\n const firstToken = offsets[lineIndex] + match[1].length;\n\n if (!isCode(mask, firstToken)) continue;\n\n const indentation = match[1].replace(/\\t/g, \" \").length;\n let endLine = lineIndex;\n const afterStart = line.slice(match[0].length);\n\n if (!/\\bend\\b/.test(afterStart)) {\n for (let current = lineIndex + 1; current < lines.length; current += 1) {\n const currentLine = lines[current].replace(/\\r?\\n$/, \"\");\n const trimmed = currentLine.trim();\n\n if (!trimmed) continue;\n\n const currentIndent =\n currentLine.match(/^\\s*/)?.[0].replace(/\\t/g, \" \").length ?? 0;\n\n if (\n trimmed === \"end\" &&\n currentIndent <= indentation &&\n isCode(\n mask,\n offsets[current] + currentLine.indexOf(\"end\"),\n offsets[current] + currentLine.indexOf(\"end\") + 3,\n )\n ) {\n endLine = current;\n break;\n }\n }\n }\n\n ranges.push({\n start: offsets[lineIndex],\n end: offsets[endLine] + lines[endLine].length,\n });\n lineIndex = endLine;\n }\n\n return ranges;\n}\n\nfunction attributeRanges(source: string, mask: Uint8Array): Range[] {\n const ranges: Range[] = [];\n\n for (let index = 0; index < source.length; index += 1) {\n if (source[index] !== \"@\" || !isCode(mask, index)) continue;\n\n if (source[index + 1] === \"[\") {\n let depth = 0;\n let cursor = index + 1;\n\n while (cursor < source.length) {\n if (isCode(mask, cursor)) {\n if (source[cursor] === \"[\") depth += 1;\n else if (source[cursor] === \"]\") {\n depth -= 1;\n\n if (depth === 0) {\n cursor += 1;\n break;\n }\n }\n }\n\n cursor += 1;\n }\n\n ranges.push({ start: index, end: cursor });\n index = cursor - 1;\n continue;\n }\n\n const match = source.slice(index + 1).match(/^[A-Za-z_][A-Za-z0-9_]*/);\n\n if (match && isCode(mask, index + 1, index + 1 + match[0].length)) {\n ranges.push({ start: index, end: index + 1 + match[0].length });\n index += match[0].length;\n }\n }\n\n return ranges;\n}\n\nfunction explicitTypeArgumentRanges(source: string, mask: Uint8Array): Range[] {\n const ranges: Range[] = [];\n\n for (let index = 0; index < source.length - 1; index += 1) {\n if (\n source[index] !== \"<\" ||\n source[index + 1] !== \"<\" ||\n !isCode(mask, index, index + 2)\n )\n continue;\n\n let depth = 2;\n let cursor = index + 2;\n\n while (cursor < source.length && depth > 0) {\n if (isCode(mask, cursor)) {\n if (source[cursor] === \"<\") depth += 1;\n else if (source[cursor] === \">\") depth -= 1;\n }\n\n cursor += 1;\n }\n\n if (depth === 0) {\n ranges.push({ start: index, end: cursor });\n index = cursor - 1;\n }\n }\n\n return ranges;\n}\n\nfunction mergeRanges(ranges: Range[]): Range[] {\n const sorted = ranges\n .filter((range) => range.end > range.start)\n .sort((a, b) => a.start - b.start || a.end - b.end);\n const merged: Range[] = [];\n\n for (const range of sorted) {\n const previous = merged.at(-1);\n\n if (previous && range.start <= previous.end)\n previous.end = Math.max(previous.end, range.end);\n else merged.push({ ...range });\n }\n\n return merged;\n}\n\nfunction blankPreservingUtf8Bytes(value: string): string {\n let result = \"\";\n\n for (const char of value) {\n if (char === \"\\n\" || char === \"\\r\") result += char;\n else result += \" \".repeat(new TextEncoder().encode(char).length);\n }\n\n return result;\n}\n\nfunction applyMasks(source: string, ranges: Range[]): string {\n let output = source;\n\n for (const range of mergeRanges(ranges).sort((a, b) => b.start - a.start)) {\n output = `${output.slice(0, range.start)}${blankPreservingUtf8Bytes(output.slice(range.start, range.end))}${output.slice(range.end)}`;\n }\n\n return output;\n}\n\nfunction genericFunctionParameterRanges(\n source: string,\n mask: Uint8Array,\n): Range[] {\n const ranges: Range[] = [];\n const functionPattern = /\\bfunction\\b/g;\n\n for (const match of source.matchAll(functionPattern)) {\n const start = match.index;\n\n if (!isCode(mask, start, start + match[0].length)) continue;\n\n let cursor = start + match[0].length;\n\n while (cursor < source.length) {\n const char = source[cursor];\n\n if (/\\s/.test(char)) {\n cursor += 1;\n continue;\n }\n\n if (char === \"(\") break;\n\n if (char === \"<\") {\n let depth = 0;\n const rangeStart = cursor;\n\n while (cursor < source.length) {\n if (isCode(mask, cursor)) {\n if (source[cursor] === \"<\") depth += 1;\n else if (source[cursor] === \">\") {\n depth -= 1;\n\n if (depth === 0) {\n cursor += 1;\n ranges.push({ start: rangeStart, end: cursor });\n break;\n }\n }\n }\n\n cursor += 1;\n }\n\n break;\n }\n\n if (/[A-Za-z0-9_.:]/.test(char)) {\n cursor += 1;\n continue;\n }\n\n break;\n }\n }\n\n return ranges;\n}\n\nfunction genericFunctionReturnPrefixRanges(\n source: string,\n mask: Uint8Array,\n): Range[] {\n const ranges: Range[] = [];\n const functionPattern = /\\bfunction\\b/g;\n\n for (const match of source.matchAll(functionPattern)) {\n const start = match.index;\n\n if (!isCode(mask, start, start + match[0].length)) continue;\n\n let cursor = start + match[0].length;\n let genericDepth = 0;\n\n while (cursor < source.length) {\n if (!isCode(mask, cursor)) {\n cursor += 1;\n continue;\n }\n\n if (source[cursor] === \"<\") genericDepth += 1;\n else if (source[cursor] === \">\" && genericDepth > 0) genericDepth -= 1;\n else if (source[cursor] === \"(\" && genericDepth === 0) break;\n\n cursor += 1;\n }\n\n if (source[cursor] !== \"(\") continue;\n\n const parameterEnd = matchingCodeDelimiterEnd(\n source,\n mask,\n cursor,\n \"(\",\n \")\",\n );\n\n if (parameterEnd === null) continue;\n\n cursor = parameterEnd;\n\n while (cursor < source.length && /\\s/.test(source[cursor])) cursor += 1;\n\n if (source[cursor] !== \":\" || !isCode(mask, cursor)) continue;\n\n cursor += 1;\n\n while (cursor < source.length && /\\s/.test(source[cursor])) cursor += 1;\n\n if (source[cursor] !== \"<\") continue;\n\n const rangeStart = cursor;\n const genericEnd = matchingCodeDelimiterEnd(source, mask, cursor, \"<\", \">\");\n\n if (genericEnd === null) continue;\n\n cursor = genericEnd;\n\n while (cursor < source.length && /\\s/.test(source[cursor])) cursor += 1;\n\n const typeParametersEnd = matchingCodeDelimiterEnd(\n source,\n mask,\n cursor,\n \"(\",\n \")\",\n );\n\n if (typeParametersEnd === null) continue;\n\n cursor = typeParametersEnd;\n\n while (cursor < source.length && /\\s/.test(source[cursor])) cursor += 1;\n\n if (\n source.slice(cursor, cursor + 2) !== \"->\" ||\n !isCode(mask, cursor, cursor + 2)\n )\n continue;\n\n cursor += 2;\n\n while (cursor < source.length && /[ \\t]/.test(source[cursor])) cursor += 1;\n\n ranges.push({ start: rangeStart, end: cursor });\n }\n\n return ranges;\n}\n\nfunction normalizeLocalTypeofAnnotations(\n source: string,\n mask: Uint8Array,\n): string {\n const replacements: Array<{ start: number; end: number; value: string }> = [];\n const pattern = /\\blocal\\s+[A-Za-z_][A-Za-z0-9_]*\\s*:\\s*typeof\\s*\\(/g;\n\n for (const match of source.matchAll(pattern)) {\n const matchStart = match.index;\n\n if (!isCode(mask, matchStart, matchStart + match[0].length)) continue;\n\n const typeofStart = matchStart + match[0].lastIndexOf(\"typeof\");\n const open = source.indexOf(\"(\", typeofStart + 6);\n\n if (open < 0) continue;\n\n const end = matchingCodeDelimiterEnd(source, mask, open, \"(\", \")\");\n\n if (end === null) continue;\n\n const original = source.slice(typeofStart, end);\n const padding = blankPreservingUtf8Bytes(original).slice(3);\n replacements.push({ start: typeofStart, end, value: `any${padding}` });\n }\n\n let output = source;\n\n for (const replacement of replacements.sort((a, b) => b.start - a.start)) {\n output = `${output.slice(0, replacement.start)}${replacement.value}${output.slice(replacement.end)}`;\n }\n\n return output;\n}\n\n// The bundled grammar understands variadic types (`...T`) but not generic\n// type-pack references (`T...`). Reorder only pack uses outside a function's\n// generic declaration so Tree-sitter sees an equal-width type node.\nfunction normalizeGenericTypePackUses(\n source: string,\n mask: Uint8Array,\n): string {\n const declarationRanges = genericFunctionParameterRanges(source, mask);\n const replacements: Array<{ start: number; end: number; value: string }> = [];\n const packPattern = /\\b[A-Za-z_][A-Za-z0-9_]*\\.\\.\\./g;\n\n for (const match of source.matchAll(packPattern)) {\n const start = match.index;\n const end = start + match[0].length;\n\n if (!isCode(mask, start, end)) continue;\n\n if (\n declarationRanges.some(\n (range) => start >= range.start && end <= range.end,\n )\n )\n continue;\n\n const name = match[0].slice(0, -3);\n replacements.push({ start, end, value: `...${name}` });\n }\n\n let output = source;\n\n for (const replacement of replacements.sort((a, b) => b.start - a.start)) {\n output = `${output.slice(0, replacement.start)}${replacement.value}${output.slice(replacement.end)}`;\n }\n\n return output;\n}\n\nfunction normalizeIntegerLiteralSuffixes(\n source: string,\n mask: Uint8Array,\n): string {\n const suffixes: number[] = [];\n const integerPattern =\n /\\b(?:0[xX][0-9A-Fa-f_]+|0[bB][01_]+|[0-9][0-9_]*)i\\b/g;\n\n for (const match of source.matchAll(integerPattern)) {\n const start = match.index;\n const suffix = start + match[0].length - 1;\n\n if (isCode(mask, start, suffix + 1)) suffixes.push(suffix);\n }\n\n let output = source;\n\n for (const suffix of suffixes.sort((a, b) => b - a)) {\n output = `${output.slice(0, suffix)} ${output.slice(suffix + 1)}`;\n }\n\n return output;\n}\n\nfunction replaceContextualKeywords(source: string, mask: Uint8Array): string {\n const replacements: Array<{ start: number; end: number; value: string }> = [];\n\n const constPattern =\n /\\bconst\\b(?=\\s+(?:function\\b|[A-Za-z_][A-Za-z0-9_]*\\s*(?::|,|=)))/g;\n\n for (const match of source.matchAll(constPattern)) {\n const start = match.index;\n\n if (isCode(mask, start, start + 5))\n replacements.push({ start, end: start + 5, value: \"local\" });\n }\n\n const exportPattern = /\\bexport\\b(?=\\s+(?:local\\b|const\\b|function\\b))/g;\n\n for (const match of source.matchAll(exportPattern)) {\n const start = match.index;\n\n if (isCode(mask, start, start + 6))\n replacements.push({ start, end: start + 6, value: \" \" });\n }\n\n let output = source;\n\n for (const replacement of replacements.sort((a, b) => b.start - a.start)) {\n output = `${output.slice(0, replacement.start)}${replacement.value}${output.slice(replacement.end)}`;\n }\n\n return output;\n}\n\n/**\n * Adapts syntax added after the bundled Tree-sitter grammar without moving any\n * UTF-8 byte offsets. Runtime declarations are normalized to older equivalent\n * syntax; type-only syntax and attributes are blanked because React analysis\n * does not need their AST nodes.\n */\nexport function parserCompatibleSource(source: string): string {\n const mask = codeMask(source);\n const keywordCompatible = replaceContextualKeywords(source, mask);\n const literalCompatible = normalizeIntegerLiteralSuffixes(\n keywordCompatible,\n mask,\n );\n const packCompatible = normalizeGenericTypePackUses(literalCompatible, mask);\n const typeofCompatible = normalizeLocalTypeofAnnotations(\n packCompatible,\n mask,\n );\n\n const ranges = [\n ...maskTypeAliases(source, mask),\n ...maskTypeLevelBlocks(source, mask),\n ...attributeRanges(source, mask),\n ...explicitTypeArgumentRanges(source, mask),\n ...genericFunctionReturnPrefixRanges(source, mask),\n ];\n\n const masked = applyMasks(typeofCompatible, ranges);\n\n // tree-sitter-luau 1.2.0 treats a statement-level assignment to the valid\n // Luau identifier `type` as a malformed type alias. Replace only that token\n // with an equal-width identifier so syntax locations remain aligned.\n return masked.replace(\n /^(\\s*)type(?=\\s*(?:\\+=|-=|\\*=|\\/=|%=|\\^=|\\.\\.=|=(?!=)))/gm,\n \"$1_typ\",\n );\n}\n",
|
|
@@ -29,14 +31,14 @@
|
|
|
29
31
|
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { RuleContext, RuleDefinition } from \"../types\";\r\nimport { fieldName, fieldValue } from \"./helpers\";\r\n\r\nconst FRESH_CALLS = [\r\n /^math\\.random$/,\r\n /^Random\\.new$/,\r\n /:GenerateGUID$/,\r\n /^DateTime\\.now$/,\r\n /^os\\.clock$/,\r\n /^tick$/,\r\n /^time$/,\r\n /:GetServerTimeNow$/,\r\n /:NextInteger$/,\r\n /:NextNumber$/,\r\n];\r\n\r\nfunction freshDescription(node: SyntaxNode, context: RuleContext): string | null {\r\n for (const child of context.walk(node)) {\r\n if (child.type !== \"function_call\") continue;\r\n const path = context.getCallPath(child) ?? \"\";\r\n if (FRESH_CALLS.some((pattern) => pattern.test(path)) || /Random\\.new\\s*\\([^)]*\\)\\s*:\\s*Next(?:Integer|Number)/s.test(child.text)) {\r\n return `${path || \"fresh-value call\"}()`;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction isCreateElementCall(node: SyntaxNode | undefined, context: RuleContext): boolean {\r\n if (!node || node.type !== \"function_call\") return false;\r\n return context.resolveCallPath(context.getCallPath(node) ?? \"\") === \"React.createElement\";\r\n}\r\n\r\nexport const noRandomKey: RuleDefinition = {\r\n id: \"react-luau/no-random-key\",\r\n category: \"Correctness\",\r\n severity: \"error\",\r\n description: \"React child keys must not be regenerated on each render.\",\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const field of context.walk()) {\r\n if (field.type !== \"field\") continue;\r\n const name = field.childForFieldName(\"name\");\r\n let keyExpression: SyntaxNode | null = null;\r\n\r\n if (fieldName(field) === \"key\") {\r\n keyExpression = fieldValue(field);\r\n } else if (field.text.trim().startsWith(\"[\") && name) {\r\n const value = field.namedChildren.find((child) => child.startIndex > name.endIndex);\r\n if (isCreateElementCall(value, context)) keyExpression = name;\r\n }\r\n\r\n if (!keyExpression) continue;\r\n const description = freshDescription(keyExpression, context);\r\n if (!description) continue;\r\n\r\n diagnostics.push({\r\n node: keyExpression,\r\n message: `React key is created from ${description}, so its identity can change every render.`,\r\n help: \"Use stable identity from the item itself, such as UserId, an immutable record ID, or another persistent key. Changing keys remounts children and breaks preserved state or exit-animation identity.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
30
32
|
"import type { RuleDefinition } from \"../types\";\r\nimport { reactApiPath, resolveLocalValue } from \"../ast/local-values\";\r\n\r\nimport { callNameNode, isUnconditionallyExecutedInFunction } from \"./helpers\";\r\n\r\nexport const noSetStateInRender: RuleDefinition = {\r\n id: \"react-luau/no-set-state-in-render\",\r\n category: \"Correctness\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Do not call a component's state setter unconditionally during render\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const component = context.nearestFunction(call);\r\n\r\n if (!component?.isComponent) continue;\r\n\r\n const name = call.childForFieldName(\"name\");\r\n const setter = name && resolveLocalValue(context, name);\r\n\r\n if (\r\n !setter ||\r\n setter.returnIndex !== 1 ||\r\n reactApiPath(context, setter.value) !== \"React.useState\" ||\r\n context.nearestFunction(setter.value) !== component ||\r\n !isUnconditionallyExecutedInFunction(context, call, component)\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: `${name!.text}() is called unconditionally during component render`,\r\n summary: `${name!.text} runs during render and can loop`,\r\n help: \"Move the update to the event or effect that owns it, or derive the value during render — an unconditional render-phase state update can continuously trigger new renders\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
31
33
|
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { RuleDefinition } from \"../types\";\r\n\r\nconst REQUIRED_CLOSERS = new Map<string, string>([\r\n [\"parameters\", \")\"],\r\n [\"arguments\", \")\"],\r\n [\"table_constructor\", \"}\"],\r\n]);\r\n\r\nconst TYPE_SYNTAX_ANCESTORS = new Set([\r\n \"type_definition\",\r\n \"type_annotation\",\r\n \"type_parameters\",\r\n \"generic_type\",\r\n \"function_type\",\r\n \"optional_type\",\r\n \"object_type\",\r\n \"union_type\",\r\n \"intersection_type\",\r\n \"tuple_type\",\r\n \"singleton_type\",\r\n \"variadic_type\",\r\n \"variadic_type_pack\",\r\n]);\r\n\r\nfunction incompleteDelimitedNode(node: SyntaxNode): string | null {\r\n const closer = REQUIRED_CLOSERS.get(node.type);\r\n if (!closer) return null;\r\n return node.text.trimEnd().endsWith(closer) ? null : closer;\r\n}\r\n\r\nfunction isBundledGrammarTypeGap(node: SyntaxNode): boolean {\r\n let current: SyntaxNode | null = node;\r\n while (current) {\r\n if (TYPE_SYNTAX_ANCESTORS.has(current.type)) {\r\n if (current.type !== \"type_definition\") return true;\r\n if (/^\\s*(?:export\\s+)?type\\s+[A-Za-z_][A-Za-z0-9_]*/s.test(current.text)) return true;\r\n }\r\n current = current.parent;\r\n }\r\n return false;\r\n}\r\n\r\nexport const parseErrors: RuleDefinition = {\r\n id: \"react-luau/parse-error\",\r\n category: \"Correctness\",\r\n severity: \"error\",\r\n lspEnabled: false,\r\n description: \"Report executable Luau syntax that the bundled parser cannot form into a complete syntax tree.\",\r\n run(context) {\r\n const diagnostics = [];\r\n const covered: Array<{ start: number; end: number }> = [];\r\n\r\n for (const node of context.walk()) {\r\n const missingCloser = incompleteDelimitedNode(node);\r\n if (!node.isError && !node.isMissing && !missingCloser) continue;\r\n if (isBundledGrammarTypeGap(node)) continue;\r\n if (covered.some((range) => node.startIndex >= range.start && node.endIndex <= range.end)) continue;\r\n covered.push({ start: node.startIndex, end: node.endIndex });\r\n\r\n let message = \"Luau syntax could not be parsed cleanly at this location.\";\r\n if (node.isMissing) message = `Luau syntax is missing ${node.type}.`;\r\n else if (missingCloser) message = `Luau syntax is missing closing ${missingCloser}.`;\r\n\r\n diagnostics.push({\r\n node,\r\n message,\r\n help: \"Fix the syntax error before relying on downstream React-Luau diagnostics in this file.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
32
|
-
"import {\r\n normalizeRequireTarget,\r\n resolveModuleReference,\r\n} from \"../module-resolution\";\r\n\r\nimport type { SyntaxNode } from \"../syntax\";\r\n\r\nimport type {\r\n DiagnosticInput,\r\n FunctionInfo,\r\n RuleContext,\r\n RuleDefinition,\r\n StateBinding,\r\n} from \"../types\";\r\n\r\nimport { normalizeExpressionText, sameNode } from \"../ast/walk\";\r\nimport { isHighFrequencyRunServiceCall } from \"../roblox-semantics\";\r\n\r\nimport {\r\n callNameNode,\r\n declarationNames,\r\n identifierNode,\r\n fieldName,\r\n fieldNameNode,\r\n fieldValue,\r\n isBindingShadowedBetween,\r\n stateBindingsFor,\r\n} from \"./helpers\";\r\n\r\nconst STATIC_DISCOVERY = /(?::|\\.)(GetChildren|GetDescendants)$/;\r\n\r\nconst PURE_TRIVIAL_CALLS =\r\n /^(?:tostring|tonumber|type|typeof|math\\.[A-Za-z_][A-Za-z0-9_]*|string\\.(?:lower|upper|format|len)|Color3\\.(?:new|fromRGB|fromHSV)|Vector[23]\\.new|UDim2?\\.(?:new|fromOffset|fromScale)|CFrame\\.new)$/;\r\n\r\nfunction declarationForCall(call: SyntaxNode): SyntaxNode | null {\r\n let current: SyntaxNode | null = call.parent;\r\n\r\n while (current) {\r\n if (current.type === \"variable_declaration\") return current;\r\n\r\n if (\r\n current.type === \"function_definition\" ||\r\n current.type === \"function_declaration\"\r\n )\r\n return null;\r\n\r\n current = current.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction declaredNameForCall(call: SyntaxNode): string | null {\r\n const declaration = declarationForCall(call);\r\n\r\n return declaration ? (declarationNames(declaration)[0] ?? null) : null;\r\n}\r\n\r\nfunction isIdentifierPropertyName(node: SyntaxNode): boolean {\r\n const parent = node.parent;\r\n\r\n if (parent?.type === \"dot_index_expression\")\r\n return sameNode(parent.childForFieldName(\"field\"), node);\r\n\r\n if (parent?.type === \"method_index_expression\") {\r\n return (\r\n sameNode(parent.childForFieldName(\"method\"), node) ||\r\n sameNode(parent.namedChildren.at(-1), node)\r\n );\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction identifierReferences(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n name: string,\r\n declaration: SyntaxNode | null,\r\n): SyntaxNode[] {\r\n if (!owner.body) return [];\r\n\r\n const result: SyntaxNode[] = [];\r\n\r\n for (const node of context.walk(owner.body)) {\r\n if (node.type !== \"identifier\" || node.text !== name) continue;\r\n\r\n if (\r\n declaration &&\r\n node.startIndex >= declaration.startIndex &&\r\n node.endIndex <= declaration.endIndex\r\n )\r\n continue;\r\n\r\n if (isIdentifierPropertyName(node)) continue;\r\n\r\n if (isBindingShadowedBetween(node, owner, name, declaration)) continue;\r\n\r\n result.push(node);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction nearestAncestor(\r\n node: SyntaxNode,\r\n stop: SyntaxNode,\r\n type: string,\r\n): SyntaxNode | null {\r\n let current = node.parent;\r\n\r\n while (current && !sameNode(current, stop)) {\r\n if (current.type === type) return current;\r\n\r\n current = current.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction highFrequencyCallback(\r\n node: SyntaxNode,\r\n context: RuleContext,\r\n): SyntaxNode | null {\r\n let current = node.parent;\r\n\r\n while (current) {\r\n if (current.type === \"function_definition\") {\r\n const argumentsNode = current.parent;\r\n\r\n const call =\r\n argumentsNode?.type === \"arguments\" ? argumentsNode.parent : null;\r\n\r\n if (\r\n call?.type === \"function_call\" &&\r\n isHighFrequencyRunServiceCall(call, context)\r\n )\r\n return current;\r\n }\r\n\r\n current = current.parent;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction setterIsNoChangeGuarded(\r\n call: SyntaxNode,\r\n callback: SyntaxNode,\r\n binding: StateBinding,\r\n): boolean {\r\n let current = call.parent;\r\n\r\n while (current && !sameNode(current, callback)) {\r\n if (current.type === \"if_statement\" || current.type === \"if_expression\") {\r\n const header = current.text.split(/\\bthen\\b/s, 1)[0] ?? \"\";\r\n const escaped = binding.valueName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\n if (\r\n new RegExp(\r\n `\\\\b${escaped}\\\\b[^\\\\n]*(?:~=|==)|(?:~=|==)[^\\\\n]*\\\\b${escaped}\\\\b`,\r\n ).test(header)\r\n )\r\n return true;\r\n }\r\n\r\n current = current.parent;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction setterIsOneShotGuarded(\r\n call: SyntaxNode,\r\n callback: SyntaxNode,\r\n): boolean {\r\n let current = call.parent;\r\n\r\n while (current && !sameNode(current, callback)) {\r\n if (current.type === \"if_statement\") {\r\n const header = current.text.split(/\\bthen\\b/s, 1)[0] ?? \"\";\r\n\r\n const candidates = [\r\n ...header.matchAll(/\\bnot\\s+([A-Za-z_][A-Za-z0-9_]*)\\b/g),\r\n ...header.matchAll(/\\b([A-Za-z_][A-Za-z0-9_]*)\\s*==\\s*false\\b/g),\r\n ].map((match) => match[1]);\r\n\r\n for (const guard of candidates) {\r\n const escaped = guard.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\n if (!new RegExp(`\\\\b${escaped}\\\\s*=\\\\s*true\\\\b`).test(current.text))\r\n continue;\r\n\r\n if (new RegExp(`\\\\b${escaped}\\\\s*=\\\\s*false\\\\b`).test(callback.text))\r\n continue;\r\n\r\n return true;\r\n }\r\n }\r\n\r\n current = current.parent;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction componentRenderCost(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n): string[] {\r\n if (!owner.body) return [];\r\n\r\n let clones = 0;\r\n let loops = 0;\r\n let discovery = 0;\r\n\r\n for (const node of context.walk(owner.body)) {\r\n if (context.nearestFunction(node) !== owner) continue;\r\n\r\n if (\r\n node.type === \"for_statement\" ||\r\n node.type === \"while_statement\" ||\r\n node.type === \"repeat_statement\"\r\n )\r\n loops += 1;\r\n\r\n if (node.type !== \"function_call\") continue;\r\n\r\n const path = context.resolveCallPath(context.getCallPath(node) ?? \"\");\r\n\r\n if (path === \"table.clone\") clones += 1;\r\n\r\n if (STATIC_DISCOVERY.test(path) || /:GetTagged$/.test(path)) discovery += 1;\r\n }\r\n\r\n const parts: string[] = [];\r\n\r\n if (clones > 0) parts.push(`${clones} table clone${clones === 1 ? \"\" : \"s\"}`);\r\n\r\n if (loops > 1) parts.push(`${loops} collection/loop passes`);\r\n\r\n if (discovery > 0)\r\n parts.push(\r\n `${discovery} Instance discovery call${discovery === 1 ? \"\" : \"s\"}`,\r\n );\r\n\r\n return parts;\r\n}\r\n\r\nfunction memoizedImports(\r\n context: RuleContext,\r\n): Map<string, \"shallow\" | \"custom\"> {\r\n const result = new Map<string, \"shallow\" | \"custom\">();\r\n\r\n for (const node of context.walk(context.root)) {\r\n if (node.type !== \"variable_declaration\") continue;\r\n\r\n const match = node.text.match(\r\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\r\n );\r\n\r\n if (!match) continue;\r\n\r\n const localName = match[1];\r\n\r\n const memoKind = resolveModuleReference(\r\n normalizeRequireTarget(match[2]),\r\n context.project.memoizedModules,\r\n );\r\n\r\n if (memoKind) result.set(localName, memoKind);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction fieldLabel(field: SyntaxNode): string {\r\n return fieldName(field) ?? field.childForFieldName(\"name\")?.text ?? \"prop\";\r\n}\r\n\r\nfunction isInlineFreshValue(node: SyntaxNode | null): boolean {\r\n return (\r\n node?.type === \"table_constructor\" || node?.type === \"function_definition\"\r\n );\r\n}\r\n\r\nexport const rerenderUnstableMemoProps: RuleDefinition = {\r\n id: \"react-luau/rerender-unstable-memo-props\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Warn when fresh table or function props defeat shallow React.memo comparisons.\",\r\n\r\n guidance: {\r\n explanation:\r\n \"A new function or table has a new identity, so a shallow memo comparison cannot skip this child.\",\r\n\r\n help: \"Stabilize props that change each render if this child is expensive, move construction into the child, or remove ineffective memoization.\",\r\n },\r\n\r\n run(context) {\r\n const imports = memoizedImports(context);\r\n\r\n if (imports.size === 0) return [];\r\n\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const call of context.findCalls()) {\r\n if (\r\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\r\n \"React.createElement\"\r\n )\r\n continue;\r\n\r\n const component = context.containingComponent(call);\r\n\r\n if (!component || context.nearestFunction(call) !== component) continue;\r\n\r\n const args = context.callArguments(call);\r\n const childName = args[0]?.text.trim() ?? \"\";\r\n\r\n if (imports.get(childName) !== \"shallow\") continue;\r\n\r\n const props = args[1];\r\n\r\n if (!props || props.type !== \"table_constructor\") continue;\r\n\r\n const unstableFields = props.namedChildren\r\n .filter((node) => node.type === \"field\")\r\n .filter((field) => isInlineFreshValue(fieldValue(field)));\r\n\r\n if (unstableFields.length === 0) continue;\r\n\r\n const unstable = unstableFields.map(fieldLabel);\r\n const highlights = unstableFields.map(fieldNameNode);\r\n\r\n diagnostics.push({\r\n node: highlights[0],\r\n highlights,\r\n severity: \"warning\",\r\n message: `Memoized ${childName} receives fresh ${unstable.join(\", \")} prop${unstable.length === 1 ? \"\" : \"s\"} on every parent render.`,\r\n summary: `${childName} gets ${unstable.length} fresh ${unstable.length === 1 ? \"prop\" : \"props\"} each render. Memoization cannot skip it.`,\r\n\r\n editorRanges: highlights.map((node, index) => ({\r\n node,\r\n summary: `${childName} gets a fresh ${unstable[index]} prop each render. Memoization cannot skip it.`,\r\n })),\r\n\r\n help: \"Fresh table or function identity prevents the shallow memo comparison from skipping this child. Stabilize the prop only when the parent rerenders frequently, move construction into the child, or remove ineffective memoization.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const rerenderHighFrequencyState: RuleDefinition = {\r\n id: \"react-luau/rerender-high-frequency-state\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Find state updates from frame callbacks that can rerender expensive component trees continuously.\",\r\n\r\n guidance: {\r\n explanation:\r\n \"Doctor found a state setter on a high-frequency callback path. Calling a setter every frame still has overhead, and any changed value can schedule React reconciliation. This rule now suppresses simple one-shot guards it can prove.\",\r\n\r\n caveat:\r\n \"A same-value state update can be bailed out by React, so this finding does not prove that the component actually rerenders every frame. It flags the per-frame setter path and is suppressed when Doctor can prove a simple one-shot or direct no-change guard.\",\r\n },\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n const seen = new Set<string>();\r\n\r\n for (const call of context.findCalls()) {\r\n const callback = highFrequencyCallback(call, context);\r\n\r\n if (!callback) continue;\r\n\r\n const component = context.containingComponent(call);\r\n\r\n if (!component) continue;\r\n\r\n const setter = context.getCallPath(call) ?? \"\";\r\n\r\n const binding = context.model.stateBindings.find(\r\n (candidate) =>\r\n candidate.owner === component && candidate.setterName === setter,\r\n );\r\n\r\n if (\r\n !binding ||\r\n setterIsNoChangeGuarded(call, callback, binding) ||\r\n setterIsOneShotGuarded(call, callback)\r\n )\r\n continue;\r\n\r\n const key = `${callback.startIndex}:${setter}`;\r\n\r\n if (seen.has(key)) continue;\r\n\r\n seen.add(key);\r\n\r\n const renderCost = componentRenderCost(context, component);\r\n\r\n diagnostics.push({\r\n node: callNameNode(binding.call),\r\n severity: \"warning\",\r\n message: `${binding.valueName} has a state setter called from a per-frame callback and may cause frequent rerenders when its value changes.`,\r\n\r\n help:\r\n renderCost.length > 0\r\n ? `This render also performs ${renderCost.join(\" and \")}. Isolate or throttle the high-frequency state, or use Bindings for host-property-only updates.`\r\n : \"Isolate or throttle the high-frequency state. Use React.useBinding when the value only drives host Instance properties.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nfunction singleReturnExpression(\r\n callback: SyntaxNode | undefined,\r\n): SyntaxNode | null {\r\n if (!callback || callback.type !== \"function_definition\") return null;\r\n\r\n const body = callback.childForFieldName(\"body\");\r\n\r\n if (!body || body.namedChildren.length !== 1) return null;\r\n\r\n const statement = body.namedChildren[0];\r\n\r\n if (statement.type !== \"return_statement\") return null;\r\n\r\n const expressionList = statement.namedChildren.find(\r\n (child) => child.type === \"expression_list\",\r\n );\r\n\r\n if (!expressionList || expressionList.namedChildren.length !== 1) return null;\r\n\r\n return expressionList.namedChildren[0] ?? null;\r\n}\r\n\r\nfunction isTrivialMemoExpression(\r\n expression: SyntaxNode,\r\n context: RuleContext,\r\n): boolean {\r\n if (\r\n expression.type === \"table_constructor\" ||\r\n expression.type === \"function_definition\"\r\n )\r\n return false;\r\n\r\n let calls = 0;\r\n\r\n for (const node of context.walk(expression)) {\r\n if (\r\n node.type === \"for_statement\" ||\r\n node.type === \"while_statement\" ||\r\n node.type === \"repeat_statement\"\r\n )\r\n return false;\r\n\r\n if (node.type !== \"function_call\") continue;\r\n\r\n calls += 1;\r\n const path = context.resolveCallPath(context.getCallPath(node) ?? \"\");\r\n\r\n if (/random|GenerateGUID|GetServerTimeNow|tick|time|clock/i.test(path))\r\n return false;\r\n\r\n if (!PURE_TRIVIAL_CALLS.test(path)) return false;\r\n }\r\n\r\n return calls <= 2 && expression.text.length <= 180;\r\n}\r\n\r\nfunction valueIdentityIsObservedByHook(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n name: string,\r\n declaration: SyntaxNode,\r\n): boolean {\r\n if (!owner.body) return false;\r\n\r\n for (const call of context.walk(owner.body)) {\r\n if (call.type !== \"function_call\") continue;\r\n\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!/^React\\.use(?:Effect|LayoutEffect|Memo|Callback)$/.test(path))\r\n continue;\r\n\r\n const dependencies = context.callArguments(call)[1];\r\n\r\n if (!dependencies) continue;\r\n\r\n for (const reference of identifierReferences(\r\n context,\r\n owner,\r\n name,\r\n declaration,\r\n )) {\r\n if (\r\n reference.startIndex >= dependencies.startIndex &&\r\n reference.endIndex <= dependencies.endIndex\r\n )\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isEmptyDependencyTable(node: SyntaxNode | undefined): boolean {\r\n return Boolean(\r\n node &&\r\n node.type === \"table_constructor\" &&\r\n node.namedChildren.length === 0,\r\n );\r\n}\r\n\r\nexport const rerenderUnnecessaryUseMemo: RuleDefinition = {\r\n id: \"react-luau/rerender-unnecessary-usememo\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Find trivial derived values that cost more to memoize than to compute directly.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const call of context.findCalls()) {\r\n if (\r\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\r\n \"React.useMemo\"\r\n )\r\n continue;\r\n\r\n const owner =\r\n context.containingComponent(call) ?? context.nearestFunction(call);\r\n\r\n const declaration = declarationForCall(call);\r\n const name = declaredNameForCall(call);\r\n const argumentsList = context.callArguments(call);\r\n const expression = singleReturnExpression(argumentsList[0]);\r\n\r\n if (isEmptyDependencyTable(argumentsList[1])) continue;\r\n\r\n if (\r\n !owner ||\r\n !declaration ||\r\n !name ||\r\n !expression ||\r\n !isTrivialMemoExpression(expression, context)\r\n )\r\n continue;\r\n\r\n if (valueIdentityIsObservedByHook(context, owner, name, declaration))\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: \"useMemo caches a trivial derived value.\",\r\n help: \"Compute the value directly unless stable identity or a genuinely expensive calculation is required.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nfunction isOnlyDirectFunctionCallReference(\r\n node: SyntaxNode,\r\n name: string,\r\n): boolean {\r\n const parent = node.parent;\r\n\r\n return (\r\n parent?.type === \"function_call\" &&\r\n sameNode(parent.childForFieldName(\"name\"), node) &&\r\n (parent.childForFieldName(\"name\")?.text.trim() ?? \"\") === name\r\n );\r\n}\r\n\r\nexport const rerenderUnnecessaryUseCallback: RuleDefinition = {\r\n id: \"react-luau/rerender-unnecessary-usecallback\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Find useCallback values whose stable function identity is never observed.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const call of context.findCalls()) {\r\n if (\r\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\r\n \"React.useCallback\"\r\n )\r\n continue;\r\n\r\n const owner =\r\n context.containingComponent(call) ?? context.nearestFunction(call);\r\n\r\n const declaration = declarationForCall(call);\r\n const name = declaredNameForCall(call);\r\n\r\n if (!owner || !declaration || !name) continue;\r\n\r\n const references = identifierReferences(\r\n context,\r\n owner,\r\n name,\r\n declaration,\r\n );\r\n\r\n if (\r\n references.length === 0 ||\r\n references.some(\r\n (node) => !isOnlyDirectFunctionCallReference(node, name),\r\n )\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: `${name} is wrapped in useCallback, but its identity is never observed.`,\r\n help: \"Use a normal local function. Keep useCallback when the function is passed to a memoized child, retained by another hook, or otherwise compared by identity.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nfunction staticDiscoveryPath(path: string): boolean {\r\n if (/:GetTagged$/.test(path)) return true;\r\n\r\n if (!STATIC_DISCOVERY.test(path)) return false;\r\n\r\n const receiver = path.replace(/(?::|\\.)(?:GetChildren|GetDescendants)$/, \"\");\r\n\r\n return /^(?:ReplicatedStorage|ServerStorage|ServerScriptService|StarterGui|StarterPlayer|script)(?:\\.|:|$)/.test(\r\n receiver,\r\n );\r\n}\r\n\r\nexport const rerenderStaticDiscoveryInRender: RuleDefinition = {\r\n id: \"react-luau/rerender-static-discovery-in-render\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Find static Instance/module discovery repeated during component render.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const component = context.containingComponent(call);\r\n\r\n if (!component || context.nearestFunction(call) !== component) continue;\r\n\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (!staticDiscoveryPath(path)) continue;\r\n\r\n const loop = nearestAncestor(call, component.node, \"for_statement\");\r\n const body = loop?.childForFieldName(\"body\");\r\n\r\n const requiresModules = Boolean(\r\n body &&\r\n [...context.walk(body)].some(\r\n (node) =>\r\n node.type === \"function_call\" &&\r\n context.getCallPath(node) === \"require\",\r\n ),\r\n );\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n severity: \"warning\",\r\n message: `${path} runs during component render${requiresModules ? \" and feeds module requires\" : \"\"}.`,\r\n\r\n help: requiresModules\r\n ? \"Discover and require static modules once outside the component, or cache the derived catalog by the inputs that can actually change.\"\r\n : \"Move static discovery outside the component or memoize the derived result when the source can change.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nfunction genericLoopCollection(loop: SyntaxNode): string | null {\r\n const clause = loop.namedChildren.find(\r\n (child) => child.type === \"for_generic_clause\",\r\n );\r\n\r\n if (!clause) return null;\r\n\r\n const match = clause.text.match(/\\bin\\s+(.+)$/s);\r\n\r\n if (!match) return null;\r\n\r\n const expression = normalizeExpressionText(match[1]);\r\n\r\n if (!expression || expression.length > 160) return null;\r\n\r\n return expression;\r\n}\r\n\r\nexport const rerenderRepeatedCollectionScan: RuleDefinition = {\r\n id: \"react-luau/rerender-repeated-collection-scan\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Find repeated direct render passes over the same collection expression.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const component of context.model.functions) {\r\n if (!component.isComponent || !component.body) continue;\r\n\r\n const groups = new Map<\r\n string,\r\n { display: string; loops: SyntaxNode[] }\r\n >();\r\n\r\n for (const node of context.walk(component.body)) {\r\n if (\r\n node.type !== \"for_statement\" ||\r\n context.nearestFunction(node) !== component\r\n )\r\n continue;\r\n\r\n const collection = genericLoopCollection(node);\r\n\r\n if (!collection || collection === \"{}\") continue;\r\n\r\n const clause = node.namedChildren.find(\r\n (child) => child.type === \"for_generic_clause\",\r\n );\r\n\r\n const display =\r\n clause?.text\r\n .match(/\\bin\\s+(.+)$/s)?.[1]\r\n ?.trim()\r\n .replace(/\\s+/g, \" \") ?? collection;\r\n\r\n const group = groups.get(collection) ?? { display, loops: [] };\r\n group.loops.push(node);\r\n groups.set(collection, group);\r\n }\r\n\r\n for (const { display, loops } of groups.values()) {\r\n if (loops.length < 2) continue;\r\n\r\n const repeatedCollections = loops.map((loop) => {\r\n const clause = loop.namedChildren.find(\r\n (child) => child.type === \"for_generic_clause\",\r\n );\r\n\r\n return clause?.namedChildren.at(-1) ?? clause ?? loop;\r\n });\r\n\r\n diagnostics.push({\r\n node: repeatedCollections[1],\r\n highlights: repeatedCollections,\r\n message: `${display} is scanned ${loops.length} times during this render.`,\r\n help: \"Consider combining the passes or deriving a lookup when the collection is large or the component rerenders frequently.\",\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const rerenderStaticState: RuleDefinition = {\r\n id: \"react-luau/rerender-static-state\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Find React state whose setter is never used and therefore cannot change.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const component of context.model.functions) {\r\n if (!component.isComponent || !component.body) continue;\r\n\r\n for (const binding of stateBindingsFor(context, component)) {\r\n if (binding.setterName === \"_\" || binding.setterName.startsWith(\"_\"))\r\n continue;\r\n\r\n const setterRefs = identifierReferences(\r\n context,\r\n component,\r\n binding.setterName,\r\n binding.declaration,\r\n );\r\n\r\n if (setterRefs.length > 0) continue;\r\n\r\n const valueRefs = identifierReferences(\r\n context,\r\n component,\r\n binding.valueName,\r\n binding.declaration,\r\n );\r\n\r\n if (valueRefs.length === 0) continue;\r\n\r\n diagnostics.push({\r\n node:\r\n identifierNode(binding.declaration, binding.setterName) ??\r\n binding.declaration,\r\n\r\n message: `${binding.valueName} cannot change because ${binding.setterName} is never used.`,\r\n help: \"Use a normal derived value. If the initial value must be captured once for the component lifetime, use a ref.\",\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nfunction memoReturnsCurrentCell(\r\n call: SyntaxNode,\r\n context: RuleContext,\r\n): boolean {\r\n const args = context.callArguments(call);\r\n const callback = args[0];\r\n const deps = args[1];\r\n\r\n if (\r\n !callback ||\r\n callback.type !== \"function_definition\" ||\r\n deps?.type !== \"table_constructor\" ||\r\n deps.namedChildren.length > 0\r\n )\r\n return false;\r\n\r\n const expression = singleReturnExpression(callback);\r\n\r\n if (!expression || expression.type !== \"table_constructor\") return false;\r\n\r\n const fields = expression.namedChildren.filter(\r\n (node) => node.type === \"field\",\r\n );\r\n\r\n return fields.length === 1 && fieldName(fields[0]) === \"current\";\r\n}\r\n\r\nexport const preferUseRefForMutableCell: RuleDefinition = {\r\n id: \"react-luau/prefer-use-ref-for-mutable-cell\",\r\n category: \"Hooks\",\r\n severity: \"suggestion\",\r\n\r\n description:\r\n \"Prefer useRef over useMemo-created tables that only emulate a mutable current cell.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const call of context.findCalls()) {\r\n if (\r\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\r\n \"React.useMemo\"\r\n )\r\n continue;\r\n\r\n if (!memoReturnsCurrentCell(call, context)) continue;\r\n\r\n const name = declaredNameForCall(call) ?? \"This value\";\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: `${name} uses useMemo to create a { current = ... } mutable cell.`,\r\n help: \"Use React.useRef(initialValue) to express the same lifetime and mutable-cell intent directly.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
34
|
+
"import {\n normalizeRequireTarget,\n resolveModuleReference,\n} from \"../module-resolution\";\n\nimport type { SyntaxNode } from \"../syntax\";\n\nimport type {\n DiagnosticInput,\n FunctionInfo,\n RuleContext,\n RuleDefinition,\n StateBinding,\n} from \"../types\";\n\nimport { normalizeExpressionText, sameNode } from \"../ast/walk\";\nimport { reactApiPath, resolveLocalValue } from \"../ast/local-values\";\nimport { freshValueKind } from \"../ast/value-identity\";\nimport { isHighFrequencyRunServiceCall } from \"../roblox-semantics\";\n\nimport {\n callNameNode,\n declarationNames,\n identifierNode,\n fieldName,\n fieldNameNode,\n fieldValue,\n isBindingShadowedBetween,\n stateBindingsFor,\n} from \"./helpers\";\n\nconst STATIC_DISCOVERY = /(?::|\\.)(GetChildren|GetDescendants)$/;\n\nconst PURE_TRIVIAL_CALLS =\n /^(?:tostring|tonumber|type|typeof|math\\.[A-Za-z_][A-Za-z0-9_]*|string\\.(?:lower|upper|format|len)|Color3\\.(?:new|fromRGB|fromHSV)|Vector[23]\\.new|UDim2?\\.(?:new|fromOffset|fromScale)|CFrame\\.new)$/;\n\nfunction declarationForCall(call: SyntaxNode): SyntaxNode | null {\n let current: SyntaxNode | null = call.parent;\n\n while (current) {\n if (current.type === \"variable_declaration\") return current;\n\n if (\n current.type === \"function_definition\" ||\n current.type === \"function_declaration\"\n )\n return null;\n\n current = current.parent;\n }\n\n return null;\n}\n\nfunction declaredNameForCall(call: SyntaxNode): string | null {\n const declaration = declarationForCall(call);\n\n return declaration ? (declarationNames(declaration)[0] ?? null) : null;\n}\n\nfunction isIdentifierPropertyName(node: SyntaxNode): boolean {\n const parent = node.parent;\n\n if (parent?.type === \"dot_index_expression\")\n return sameNode(parent.childForFieldName(\"field\"), node);\n\n if (parent?.type === \"method_index_expression\") {\n return (\n sameNode(parent.childForFieldName(\"method\"), node) ||\n sameNode(parent.namedChildren.at(-1), node)\n );\n }\n\n return false;\n}\n\nfunction identifierReferences(\n context: RuleContext,\n owner: FunctionInfo,\n name: string,\n declaration: SyntaxNode | null,\n): SyntaxNode[] {\n if (!owner.body) return [];\n\n const result: SyntaxNode[] = [];\n\n for (const node of context.walk(owner.body)) {\n if (node.type !== \"identifier\" || node.text !== name) continue;\n\n if (\n declaration &&\n node.startIndex >= declaration.startIndex &&\n node.endIndex <= declaration.endIndex\n )\n continue;\n\n if (isIdentifierPropertyName(node)) continue;\n\n if (isBindingShadowedBetween(node, owner, name, declaration)) continue;\n\n result.push(node);\n }\n\n return result;\n}\n\nfunction nearestAncestor(\n node: SyntaxNode,\n stop: SyntaxNode,\n type: string,\n): SyntaxNode | null {\n let current = node.parent;\n\n while (current && !sameNode(current, stop)) {\n if (current.type === type) return current;\n\n current = current.parent;\n }\n\n return null;\n}\n\nfunction highFrequencyCallback(\n node: SyntaxNode,\n context: RuleContext,\n): SyntaxNode | null {\n let current = node.parent;\n\n while (current) {\n if (current.type === \"function_definition\") {\n const argumentsNode = current.parent;\n\n const call =\n argumentsNode?.type === \"arguments\" ? argumentsNode.parent : null;\n\n if (\n call?.type === \"function_call\" &&\n isHighFrequencyRunServiceCall(call, context)\n )\n return current;\n }\n\n current = current.parent;\n }\n\n return null;\n}\n\nfunction setterIsNoChangeGuarded(\n call: SyntaxNode,\n callback: SyntaxNode,\n binding: StateBinding,\n): boolean {\n let current = call.parent;\n\n while (current && !sameNode(current, callback)) {\n if (current.type === \"if_statement\" || current.type === \"if_expression\") {\n const header = current.text.split(/\\bthen\\b/s, 1)[0] ?? \"\";\n const escaped = binding.valueName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n if (\n new RegExp(\n `\\\\b${escaped}\\\\b[^\\\\n]*(?:~=|==)|(?:~=|==)[^\\\\n]*\\\\b${escaped}\\\\b`,\n ).test(header)\n )\n return true;\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\nfunction setterIsOneShotGuarded(\n call: SyntaxNode,\n callback: SyntaxNode,\n): boolean {\n let current = call.parent;\n\n while (current && !sameNode(current, callback)) {\n if (current.type === \"if_statement\") {\n const header = current.text.split(/\\bthen\\b/s, 1)[0] ?? \"\";\n\n const candidates = [\n ...header.matchAll(/\\bnot\\s+([A-Za-z_][A-Za-z0-9_]*)\\b/g),\n ...header.matchAll(/\\b([A-Za-z_][A-Za-z0-9_]*)\\s*==\\s*false\\b/g),\n ].map((match) => match[1]);\n\n for (const guard of candidates) {\n const escaped = guard.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n if (!new RegExp(`\\\\b${escaped}\\\\s*=\\\\s*true\\\\b`).test(current.text))\n continue;\n\n if (new RegExp(`\\\\b${escaped}\\\\s*=\\\\s*false\\\\b`).test(callback.text))\n continue;\n\n return true;\n }\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\nfunction componentRenderCost(\n context: RuleContext,\n owner: FunctionInfo,\n): string[] {\n if (!owner.body) return [];\n\n let clones = 0;\n let loops = 0;\n let discovery = 0;\n\n for (const node of context.walk(owner.body)) {\n if (context.nearestFunction(node) !== owner) continue;\n\n if (\n node.type === \"for_statement\" ||\n node.type === \"while_statement\" ||\n node.type === \"repeat_statement\"\n )\n loops += 1;\n\n if (node.type !== \"function_call\") continue;\n\n const path = context.resolveCallPath(context.getCallPath(node) ?? \"\");\n\n if (path === \"table.clone\") clones += 1;\n\n if (STATIC_DISCOVERY.test(path) || /:GetTagged$/.test(path)) discovery += 1;\n }\n\n const parts: string[] = [];\n\n if (clones > 0) parts.push(`${clones} table clone${clones === 1 ? \"\" : \"s\"}`);\n\n if (loops > 1) parts.push(`${loops} collection/loop passes`);\n\n if (discovery > 0)\n parts.push(\n `${discovery} Instance discovery call${discovery === 1 ? \"\" : \"s\"}`,\n );\n\n return parts;\n}\n\nfunction memoizedComponentKind(\n context: RuleContext,\n expression: SyntaxNode,\n): \"shallow\" | \"custom\" | null {\n const binding = resolveLocalValue(context, expression);\n\n if (\n !binding ||\n binding.returnIndex !== 0 ||\n binding.value.type !== \"function_call\"\n )\n return null;\n\n const call = binding.value;\n\n if (reactApiPath(context, call) === \"React.memo\") {\n return context.callArguments(call).length > 1 ? \"custom\" : \"shallow\";\n }\n\n const target = context.callArguments(call)[0];\n\n if (context.getCallPath(call) !== \"require\" || !target) return null;\n\n return (\n resolveModuleReference(\n normalizeRequireTarget(target.text),\n context.project.memoizedModules,\n ) ?? null\n );\n}\n\nfunction fieldLabel(field: SyntaxNode): string {\n return fieldName(field) ?? field.childForFieldName(\"name\")?.text ?? \"prop\";\n}\n\nexport const rerenderUnstableMemoProps: RuleDefinition = {\n id: \"react-luau/rerender-unstable-memo-props\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Warn when props created during render can defeat shallow React.memo comparisons\",\n\n guidance: {\n explanation:\n \"New tables, functions, and reference objects compare unequal even when their contents match\",\n\n help: \"Stabilize props that change each render if this child is expensive, move construction into the child, or remove ineffective memoization\",\n },\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const call of context.findCalls()) {\n if (\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\n \"React.createElement\"\n )\n continue;\n\n const component = context.containingComponent(call);\n\n if (!component || context.nearestFunction(call) !== component) continue;\n\n const args = context.callArguments(call);\n const childName = args[0]?.text.trim() ?? \"\";\n\n if (!args[0] || memoizedComponentKind(context, args[0]) !== \"shallow\")\n continue;\n\n const propsBinding = args[1] && resolveLocalValue(context, args[1]);\n const props = propsBinding?.returnIndex === 0 ? propsBinding.value : null;\n\n if (\n !props ||\n props.type !== \"table_constructor\" ||\n context.nearestFunction(props) !== component\n )\n continue;\n\n const unstableFields = props.namedChildren\n .filter((node) => node.type === \"field\")\n .filter((field) =>\n freshValueKind(context, fieldValue(field), component),\n );\n\n if (unstableFields.length === 0) continue;\n\n const unstable = unstableFields.map(fieldLabel);\n const highlights = unstableFields.map(fieldNameNode);\n\n diagnostics.push({\n node: highlights[0],\n highlights,\n severity: \"warning\",\n message: `Memoized ${childName} can receive fresh ${unstable.join(\", \")} prop${unstable.length === 1 ? \"\" : \"s\"} when its parent renders`,\n summary: `${childName} gets ${unstable.length} ${unstable.length === 1 ? \"prop\" : \"props\"} created during render that can prevent memoization from skipping it`,\n\n editorRanges: highlights.map((node, index) => ({\n node,\n summary: `${childName} gets a ${unstable[index]} prop created during render that can prevent memoization from skipping it`,\n })),\n\n help: \"Fresh reference identity can prevent the shallow memo comparison from skipping this child. Stabilize the prop when the parent rerenders frequently, move construction into the child, or remove ineffective memoization\",\n });\n }\n\n return diagnostics;\n },\n};\n\nexport const rerenderHighFrequencyState: RuleDefinition = {\n id: \"react-luau/rerender-high-frequency-state\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Find state updates from frame callbacks that can rerender expensive component trees continuously.\",\n\n guidance: {\n explanation:\n \"Doctor found a state setter on a high-frequency callback path. Calling a setter every frame still has overhead, and any changed value can schedule React reconciliation. This rule now suppresses simple one-shot guards it can prove.\",\n\n caveat:\n \"A same-value state update can be bailed out by React, so this finding does not prove that the component actually rerenders every frame. It flags the per-frame setter path and is suppressed when Doctor can prove a simple one-shot or direct no-change guard.\",\n },\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n const seen = new Set<string>();\n\n for (const call of context.findCalls()) {\n const callback = highFrequencyCallback(call, context);\n\n if (!callback) continue;\n\n const component = context.containingComponent(call);\n\n if (!component) continue;\n\n const setter = context.getCallPath(call) ?? \"\";\n\n const binding = context.model.stateBindings.find(\n (candidate) =>\n candidate.owner === component && candidate.setterName === setter,\n );\n\n if (\n !binding ||\n setterIsNoChangeGuarded(call, callback, binding) ||\n setterIsOneShotGuarded(call, callback)\n )\n continue;\n\n const key = `${callback.startIndex}:${setter}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n const renderCost = componentRenderCost(context, component);\n\n diagnostics.push({\n node: callNameNode(binding.call),\n severity: \"warning\",\n message: `${binding.valueName} has a state setter called from a per-frame callback and may cause frequent rerenders when its value changes.`,\n\n help:\n renderCost.length > 0\n ? `This render also performs ${renderCost.join(\" and \")}. Isolate or throttle the high-frequency state, or use Bindings for host-property-only updates.`\n : \"Isolate or throttle the high-frequency state. Use React.useBinding when the value only drives host Instance properties.\",\n });\n }\n\n return diagnostics;\n },\n};\n\nfunction singleReturnExpression(\n callback: SyntaxNode | undefined,\n): SyntaxNode | null {\n if (!callback || callback.type !== \"function_definition\") return null;\n\n const body = callback.childForFieldName(\"body\");\n\n if (!body || body.namedChildren.length !== 1) return null;\n\n const statement = body.namedChildren[0];\n\n if (statement.type !== \"return_statement\") return null;\n\n const expressionList = statement.namedChildren.find(\n (child) => child.type === \"expression_list\",\n );\n\n if (!expressionList || expressionList.namedChildren.length !== 1) return null;\n\n return expressionList.namedChildren[0] ?? null;\n}\n\nfunction isTrivialMemoExpression(\n expression: SyntaxNode,\n context: RuleContext,\n): boolean {\n if (\n expression.type === \"table_constructor\" ||\n expression.type === \"function_definition\"\n )\n return false;\n\n let calls = 0;\n\n for (const node of context.walk(expression)) {\n if (\n node.type === \"for_statement\" ||\n node.type === \"while_statement\" ||\n node.type === \"repeat_statement\"\n )\n return false;\n\n if (node.type !== \"function_call\") continue;\n\n calls += 1;\n const path = context.resolveCallPath(context.getCallPath(node) ?? \"\");\n\n if (/random|GenerateGUID|GetServerTimeNow|tick|time|clock/i.test(path))\n return false;\n\n if (!PURE_TRIVIAL_CALLS.test(path)) return false;\n }\n\n return calls <= 2 && expression.text.length <= 180;\n}\n\nfunction valueIdentityIsObservedByHook(\n context: RuleContext,\n owner: FunctionInfo,\n name: string,\n declaration: SyntaxNode,\n): boolean {\n if (!owner.body) return false;\n\n for (const call of context.walk(owner.body)) {\n if (call.type !== \"function_call\") continue;\n\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!/^React\\.use(?:Effect|LayoutEffect|Memo|Callback)$/.test(path))\n continue;\n\n const dependencies = context.callArguments(call)[1];\n\n if (!dependencies) continue;\n\n for (const reference of identifierReferences(\n context,\n owner,\n name,\n declaration,\n )) {\n if (\n reference.startIndex >= dependencies.startIndex &&\n reference.endIndex <= dependencies.endIndex\n )\n return true;\n }\n }\n\n return false;\n}\n\nfunction isEmptyDependencyTable(node: SyntaxNode | undefined): boolean {\n return Boolean(\n node &&\n node.type === \"table_constructor\" &&\n node.namedChildren.length === 0,\n );\n}\n\nexport const rerenderUnnecessaryUseMemo: RuleDefinition = {\n id: \"react-luau/rerender-unnecessary-usememo\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Find trivial derived values that cost more to memoize than to compute directly.\",\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const call of context.findCalls()) {\n if (\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\n \"React.useMemo\"\n )\n continue;\n\n const owner =\n context.containingComponent(call) ?? context.nearestFunction(call);\n\n const declaration = declarationForCall(call);\n const name = declaredNameForCall(call);\n const argumentsList = context.callArguments(call);\n const expression = singleReturnExpression(argumentsList[0]);\n\n if (isEmptyDependencyTable(argumentsList[1])) continue;\n\n if (\n !owner ||\n !declaration ||\n !name ||\n !expression ||\n !isTrivialMemoExpression(expression, context)\n )\n continue;\n\n if (valueIdentityIsObservedByHook(context, owner, name, declaration))\n continue;\n\n diagnostics.push({\n node: callNameNode(call),\n message: \"useMemo caches a trivial derived value.\",\n help: \"Compute the value directly unless stable identity or a genuinely expensive calculation is required.\",\n });\n }\n\n return diagnostics;\n },\n};\n\nfunction isOnlyDirectFunctionCallReference(\n node: SyntaxNode,\n name: string,\n): boolean {\n const parent = node.parent;\n\n return (\n parent?.type === \"function_call\" &&\n sameNode(parent.childForFieldName(\"name\"), node) &&\n (parent.childForFieldName(\"name\")?.text.trim() ?? \"\") === name\n );\n}\n\nexport const rerenderUnnecessaryUseCallback: RuleDefinition = {\n id: \"react-luau/rerender-unnecessary-usecallback\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Find useCallback values whose stable function identity is never observed.\",\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const call of context.findCalls()) {\n if (\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\n \"React.useCallback\"\n )\n continue;\n\n const owner =\n context.containingComponent(call) ?? context.nearestFunction(call);\n\n const declaration = declarationForCall(call);\n const name = declaredNameForCall(call);\n\n if (!owner || !declaration || !name) continue;\n\n const references = identifierReferences(\n context,\n owner,\n name,\n declaration,\n );\n\n if (\n references.length === 0 ||\n references.some(\n (node) => !isOnlyDirectFunctionCallReference(node, name),\n )\n )\n continue;\n\n diagnostics.push({\n node: callNameNode(call),\n message: `${name} is wrapped in useCallback, but its identity is never observed.`,\n help: \"Use a normal local function. Keep useCallback when the function is passed to a memoized child, retained by another hook, or otherwise compared by identity.\",\n });\n }\n\n return diagnostics;\n },\n};\n\nfunction staticDiscoveryPath(path: string): boolean {\n if (/:GetTagged$/.test(path)) return true;\n\n if (!STATIC_DISCOVERY.test(path)) return false;\n\n const receiver = path.replace(/(?::|\\.)(?:GetChildren|GetDescendants)$/, \"\");\n\n return /^(?:ReplicatedStorage|ServerStorage|ServerScriptService|StarterGui|StarterPlayer|script)(?:\\.|:|$)/.test(\n receiver,\n );\n}\n\nexport const rerenderStaticDiscoveryInRender: RuleDefinition = {\n id: \"react-luau/rerender-static-discovery-in-render\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Find static Instance/module discovery repeated during component render.\",\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const call of context.findCalls()) {\n const component = context.containingComponent(call);\n\n if (!component || context.nearestFunction(call) !== component) continue;\n\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (!staticDiscoveryPath(path)) continue;\n\n const loop = nearestAncestor(call, component.node, \"for_statement\");\n const body = loop?.childForFieldName(\"body\");\n\n const requiresModules = Boolean(\n body &&\n [...context.walk(body)].some(\n (node) =>\n node.type === \"function_call\" &&\n context.getCallPath(node) === \"require\",\n ),\n );\n\n diagnostics.push({\n node: callNameNode(call),\n severity: \"warning\",\n message: `${path} runs during component render${requiresModules ? \" and feeds module requires\" : \"\"}.`,\n\n help: requiresModules\n ? \"Discover and require static modules once outside the component, or cache the derived catalog by the inputs that can actually change.\"\n : \"Move static discovery outside the component or memoize the derived result when the source can change.\",\n });\n }\n\n return diagnostics;\n },\n};\n\nfunction genericLoopCollection(loop: SyntaxNode): string | null {\n const clause = loop.namedChildren.find(\n (child) => child.type === \"for_generic_clause\",\n );\n\n if (!clause) return null;\n\n const match = clause.text.match(/\\bin\\s+(.+)$/s);\n\n if (!match) return null;\n\n const expression = normalizeExpressionText(match[1]);\n\n if (!expression || expression.length > 160) return null;\n\n return expression;\n}\n\nexport const rerenderRepeatedCollectionScan: RuleDefinition = {\n id: \"react-luau/rerender-repeated-collection-scan\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Find repeated direct render passes over the same collection expression.\",\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const component of context.model.functions) {\n if (!component.isComponent || !component.body) continue;\n\n const groups = new Map<\n string,\n { display: string; loops: SyntaxNode[] }\n >();\n\n for (const node of context.walk(component.body)) {\n if (\n node.type !== \"for_statement\" ||\n context.nearestFunction(node) !== component\n )\n continue;\n\n const collection = genericLoopCollection(node);\n\n if (!collection || collection === \"{}\") continue;\n\n const clause = node.namedChildren.find(\n (child) => child.type === \"for_generic_clause\",\n );\n\n const display =\n clause?.text\n .match(/\\bin\\s+(.+)$/s)?.[1]\n ?.trim()\n .replace(/\\s+/g, \" \") ?? collection;\n\n const group = groups.get(collection) ?? { display, loops: [] };\n group.loops.push(node);\n groups.set(collection, group);\n }\n\n for (const { display, loops } of groups.values()) {\n if (loops.length < 2) continue;\n\n const repeatedCollections = loops.map((loop) => {\n const clause = loop.namedChildren.find(\n (child) => child.type === \"for_generic_clause\",\n );\n\n return clause?.namedChildren.at(-1) ?? clause ?? loop;\n });\n\n diagnostics.push({\n node: repeatedCollections[1],\n highlights: repeatedCollections,\n message: `${display} is scanned ${loops.length} times during this render.`,\n help: \"Consider combining the passes or deriving a lookup when the collection is large or the component rerenders frequently.\",\n });\n }\n }\n\n return diagnostics;\n },\n};\n\nexport const rerenderStaticState: RuleDefinition = {\n id: \"react-luau/rerender-static-state\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Find React state whose setter is never used and therefore cannot change.\",\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const component of context.model.functions) {\n if (!component.isComponent || !component.body) continue;\n\n for (const binding of stateBindingsFor(context, component)) {\n if (binding.setterName === \"_\" || binding.setterName.startsWith(\"_\"))\n continue;\n\n const setterRefs = identifierReferences(\n context,\n component,\n binding.setterName,\n binding.declaration,\n );\n\n if (setterRefs.length > 0) continue;\n\n const valueRefs = identifierReferences(\n context,\n component,\n binding.valueName,\n binding.declaration,\n );\n\n if (valueRefs.length === 0) continue;\n\n diagnostics.push({\n node:\n identifierNode(binding.declaration, binding.setterName) ??\n binding.declaration,\n\n message: `${binding.valueName} cannot change because ${binding.setterName} is never used.`,\n help: \"Use a normal derived value. If the initial value must be captured once for the component lifetime, use a ref.\",\n });\n }\n }\n\n return diagnostics;\n },\n};\n\nfunction memoReturnsCurrentCell(\n call: SyntaxNode,\n context: RuleContext,\n): boolean {\n const args = context.callArguments(call);\n const callback = args[0];\n const deps = args[1];\n\n if (\n !callback ||\n callback.type !== \"function_definition\" ||\n deps?.type !== \"table_constructor\" ||\n deps.namedChildren.length > 0\n )\n return false;\n\n const expression = singleReturnExpression(callback);\n\n if (!expression || expression.type !== \"table_constructor\") return false;\n\n const fields = expression.namedChildren.filter(\n (node) => node.type === \"field\",\n );\n\n return fields.length === 1 && fieldName(fields[0]) === \"current\";\n}\n\nexport const preferUseRefForMutableCell: RuleDefinition = {\n id: \"react-luau/prefer-use-ref-for-mutable-cell\",\n category: \"Hooks\",\n severity: \"suggestion\",\n\n description:\n \"Prefer useRef over useMemo-created tables that only emulate a mutable current cell.\",\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n for (const call of context.findCalls()) {\n if (\n context.resolveCallPath(context.getCallPath(call) ?? \"\") !==\n \"React.useMemo\"\n )\n continue;\n\n if (!memoReturnsCurrentCell(call, context)) continue;\n\n const name = declaredNameForCall(call) ?? \"This value\";\n\n diagnostics.push({\n node: callNameNode(call),\n message: `${name} uses useMemo to create a { current = ... } mutable cell.`,\n help: \"Use React.useRef(initialValue) to express the same lifetime and mutable-cell intent directly.\",\n });\n }\n\n return diagnostics;\n },\n};\n",
|
|
33
35
|
"import type { SyntaxNode } from \"../syntax\";\n\nimport {\n normalizeRequireTarget,\n resolveModuleReference,\n} from \"../module-resolution\";\n\nimport type {\n BindingCandidateHookSummary,\n ExternalCallbackFunctionSummary,\n FixPreview,\n FunctionInfo,\n RuleContext,\n RuleDefinition,\n StateBinding,\n} from \"../types\";\n\nimport { sameNode } from \"../ast/walk\";\n\nimport {\n isHighFrequencyRobloxCall,\n isHighFrequencyRobloxExpression,\n} from \"../roblox-semantics\";\n\nimport {\n callNameNode,\n declarationNames,\n fieldName,\n fieldValue,\n isBindingShadowedBetween,\n} from \"./helpers\";\n\nconst EXTERNAL_CALLBACK =\n /(?:^|[.:])(?:Connect|Subscribe|Observe|Listen|Watch|onStep|onUpdate|onChange|onChanged)$/i;\n\nconst PERSISTENT_MIRROR_CALLBACK =\n /(?:^|[.:])(?:Connect|Subscribe|Observe|Listen|Watch|onStep|onUpdate|onChange|onChanged)$/i;\n\nconst LIKELY_CONTINUOUS_CALLBACK = /(?:^|[.:])onStep$/i;\nconst NON_BINDABLE_HOST_FIELDS = new Set([\"ref\", \"key\", \"children\"]);\n\nfunction replaceWithinNode(\n container: SyntaxNode,\n target: SyntaxNode,\n replacement: string,\n): string | null {\n const start = target.startIndex - container.startIndex;\n const end = target.endIndex - container.startIndex;\n\n if (start < 0 || end < start || end > container.text.length) return null;\n\n return `${container.text.slice(0, start)}${replacement}${container.text.slice(end)}`;\n}\n\nfunction bindingModeFixPreview(\n summary: BindingCandidateHookSummary,\n call: SyntaxNode,\n context: RuleContext,\n directlySubstitutable: boolean,\n): FixPreview | undefined {\n const parameterIndex = summary.bindingModeParameterIndex;\n\n if (parameterIndex === undefined || summary.bindingWhenTruthy === undefined)\n return undefined;\n\n const desired = summary.bindingWhenTruthy ? \"true\" : \"false\";\n const args = context.callArguments(call);\n\n const derivationNote = directlySubstitutable\n ? \"\"\n : \" Also convert visual derivations of the returned value to Binding:map (or React.joinBindings for multiple Bindings); changing this argument alone is not a complete fix.\";\n\n if (parameterIndex < args.length) {\n const after = replaceWithinNode(call, args[parameterIndex], desired);\n\n if (!after || after === call.text) return undefined;\n\n return {\n kind: directlySubstitutable ? \"exact\" : \"pattern\",\n before: call.text,\n after,\n\n note:\n (summary.bindingModeParameterName\n ? `Switch the ${summary.bindingModeParameterName} parameter to the hook's Binding mode.`\n : \"Switch this call to the hook's Binding mode.\") + derivationNote,\n };\n }\n\n if (parameterIndex >= args.length) {\n const close = call.text.lastIndexOf(\")\");\n\n if (close < 0) return undefined;\n\n // Omitted Lua/Luau arguments are nil. Fill any skipped optional parameters\n // explicitly so the inferred Binding-mode argument lands in the right slot.\n const skipped = Array.from(\n { length: parameterIndex - args.length },\n () => \"nil\",\n );\n\n const appended = [...skipped, desired].join(\", \");\n const insertion = `${args.length > 0 ? \", \" : \"\"}${appended}`;\n\n return {\n kind: directlySubstitutable ? \"exact\" : \"pattern\",\n before: call.text,\n after: `${call.text.slice(0, close)}${insertion}${call.text.slice(close)}`,\n\n note:\n (summary.bindingModeParameterName\n ? `Enable the hook's Binding mode through the ${summary.bindingModeParameterName} parameter without changing omitted optional arguments.`\n : \"Enable the hook's Binding mode without changing omitted optional arguments.\") +\n derivationNote,\n };\n }\n\n return undefined;\n}\n\nfunction callMemberFixPreview(\n call: SyntaxNode,\n replacement: string,\n): FixPreview | undefined {\n const name = callNameNode(call);\n const path = name.text;\n const separator = Math.max(path.lastIndexOf(\".\"), path.lastIndexOf(\":\"));\n const member = separator >= 0 ? path.slice(separator + 1) : path;\n\n const replacementName =\n separator >= 0\n ? `${path.slice(0, separator + 1)}${replacement}`\n : replacement;\n\n const after = replaceWithinNode(call, name, replacementName);\n\n if (!after || member === replacement) return undefined;\n\n return { kind: \"exact\", before: call.text, after };\n}\n\nfunction useBindingFixPreview(call: SyntaxNode): FixPreview | undefined {\n const name = callNameNode(call);\n const current = name.text;\n\n const afterName = current.replace(/(?:^|\\.)useState$/, (match) =>\n match.replace(\"useState\", \"useBinding\"),\n );\n\n if (afterName === current) return undefined;\n\n const after = replaceWithinNode(call, name, afterName);\n\n return after ? { kind: \"exact\", before: call.text, after } : undefined;\n}\n\ninterface ImportedBindingSummaries {\n hooks: Map<string, BindingCandidateHookSummary>;\n callbacks: Map<string, ExternalCallbackFunctionSummary>;\n compatibleProps: Map<string, Set<string>>;\n}\n\nconst importedBindingSummariesCache = new WeakMap<\n RuleContext,\n ImportedBindingSummaries\n>();\n\nfunction importedBindingSummaries(\n context: RuleContext,\n): ImportedBindingSummaries {\n const cached = importedBindingSummariesCache.get(context);\n\n if (cached) return cached;\n\n const result: ImportedBindingSummaries = {\n hooks: new Map(),\n callbacks: new Map(),\n compatibleProps: new Map(),\n };\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match) continue;\n\n const [, localName, target] = match;\n const normalizedTarget = normalizeRequireTarget(target);\n\n const hook = resolveModuleReference(\n normalizedTarget,\n context.project.bindingCandidateHooks,\n );\n\n if (hook) result.hooks.set(localName, hook);\n\n const callback = resolveModuleReference(\n normalizedTarget,\n context.project.externalCallbackModules,\n );\n\n if (callback) result.callbacks.set(localName, callback);\n\n const compatibleProps = resolveModuleReference(\n normalizedTarget,\n context.project.bindingCompatibleComponentProps,\n );\n\n if (compatibleProps) result.compatibleProps.set(localName, compatibleProps);\n }\n\n importedBindingSummariesCache.set(context, result);\n\n return result;\n}\n\nfunction importedBindingCandidateHooks(\n context: RuleContext,\n): Map<string, BindingCandidateHookSummary> {\n return importedBindingSummaries(context).hooks;\n}\n\nfunction importedExternalCallbackFunctions(\n context: RuleContext,\n): Map<string, ExternalCallbackFunctionSummary> {\n return importedBindingSummaries(context).callbacks;\n}\n\nfunction importedBindingCompatibleComponentProps(\n context: RuleContext,\n): Map<string, Set<string>> {\n return importedBindingSummaries(context).compatibleProps;\n}\n\nfunction declarationForCall(call: SyntaxNode): SyntaxNode | null {\n let current: SyntaxNode | null = call.parent;\n\n while (current) {\n if (current.type === \"variable_declaration\") return current;\n\n if (\n current.type === \"function_definition\" ||\n current.type === \"function_declaration\"\n )\n return null;\n\n current = current.parent;\n }\n\n return null;\n}\n\nconst TRANSPARENT_PARENTS = new Set([\n \"binary_expression\",\n \"unary_expression\",\n \"parenthesized_expression\",\n \"cast_expression\",\n \"type_cast_expression\",\n \"interpolated_string\",\n \"string_interpolation\",\n \"expression_list\",\n \"assignment_statement\",\n \"dot_index_expression\",\n \"method_index_expression\",\n \"table_constructor\",\n \"field\",\n]);\n\nconst PURE_BINDING_DERIVATION_CALL =\n /^(?:tostring|tonumber|type|typeof|math\\.[A-Za-z_][A-Za-z0-9_]*|string\\.[A-Za-z_][A-Za-z0-9_]*|utf8\\.[A-Za-z_][A-Za-z0-9_]*|bit32\\.[A-Za-z_][A-Za-z0-9_]*|(?:UDim|UDim2|Vector2|Vector3|Color3|CFrame|Rect|NumberRange|NumberSequence|ColorSequence|BrickColor|Font)\\.[A-Za-z_][A-Za-z0-9_]*)$/;\n\nconst HOST_FEEDBACK_PROPERTIES = new Set([\n \"AbsoluteSize\",\n \"AbsolutePosition\",\n \"AbsoluteRotation\",\n \"AbsoluteContentSize\",\n \"AbsoluteCanvasSize\",\n \"AbsoluteCellSize\",\n \"AbsoluteCellCount\",\n \"TextBounds\",\n \"CanvasPosition\",\n]);\n\nconst LIKELY_CONTINUOUS_PROPERTIES = new Set([\n \"CFrame\",\n \"WorldCFrame\",\n \"Position\",\n \"WorldPosition\",\n \"Rotation\",\n \"Orientation\",\n \"CanvasPosition\",\n \"PlaybackLoudness\",\n \"TimePosition\",\n]);\n\nconst SEMANTIC_SNAPSHOT_EXPRESSION =\n /\\b(?:getState|getSnapshot|snapshot|selector|select|table\\s*\\.\\s*(?:clone|freeze|move))\\b|(?:\\.|\\[\\s*[\"'])State(?:\\b|[\"']\\s*\\])/i;\n\nfunction isBindingMapSafeCall(call: SyntaxNode, context: RuleContext): boolean {\n if (call.type !== \"function_call\") return false;\n\n const path = context\n .resolveCallPath(context.getCallPath(call) ?? \"\")\n .replace(/\\s+/g, \"\");\n\n return PURE_BINDING_DERIVATION_CALL.test(path);\n}\n\nfunction isTransparentParent(\n parent: SyntaxNode,\n context: RuleContext,\n): boolean {\n if (parent.type === \"function_call\")\n return isBindingMapSafeCall(parent, context);\n\n if (parent.type === \"arguments\") {\n return (\n parent.parent?.type === \"function_call\" &&\n isBindingMapSafeCall(parent.parent, context)\n );\n }\n\n return TRANSPARENT_PARENTS.has(parent.type);\n}\n\nfunction stringLiteralValue(node: SyntaxNode | undefined): string | null {\n if (!node) return null;\n\n return node.text.trim().match(/^[\"']([^\"']+)[\"']$/)?.[1] ?? null;\n}\n\nfunction observedPropertyForCall(\n summary: BindingCandidateHookSummary,\n call: SyntaxNode,\n context: RuleContext,\n): string | null {\n if (summary.observedPropertyName) return summary.observedPropertyName;\n\n if (summary.observedPropertyParameterIndex === undefined) return null;\n\n return stringLiteralValue(\n context.callArguments(call)[summary.observedPropertyParameterIndex],\n );\n}\n\nfunction isStrongHostFeedbackProperty(\n property: string | null | undefined,\n): boolean {\n return Boolean(property && HOST_FEEDBACK_PROPERTIES.has(property));\n}\n\nfunction isInside(node: SyntaxNode, ancestor: SyntaxNode): boolean {\n let current: SyntaxNode | null = node;\n\n while (current) {\n if (sameNode(current, ancestor)) return true;\n\n current = current.parent;\n }\n\n return false;\n}\n\nfunction isIdentifierPropertyName(node: SyntaxNode): boolean {\n const parent = node.parent;\n\n if (parent?.type === \"dot_index_expression\")\n return sameNode(parent.childForFieldName(\"field\"), node);\n\n if (parent?.type === \"method_index_expression\")\n return (\n sameNode(parent.childForFieldName(\"method\"), node) ||\n sameNode(parent.namedChildren.at(-1), node)\n );\n\n return false;\n}\n\nfunction isReadNode(\n node: SyntaxNode,\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n): boolean {\n if (node.type !== \"identifier\" || node.text !== valueName) return false;\n\n if (isInside(node, declaration)) return false;\n\n if (isIdentifierPropertyName(node)) return false;\n\n if (isBindingShadowedBetween(node, owner, valueName, declaration))\n return false;\n\n const parent = node.parent;\n\n if (parent?.type === \"variable_list\" || parent?.type === \"typed_identifier\")\n return false;\n\n if (\n parent?.type === \"field\" &&\n !sameNode(fieldValue(parent), node) &&\n /^[A-Za-z_][A-Za-z0-9_]*\\s*=/.test(parent.text.trim())\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction hasAnyRead(\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n): boolean {\n if (!owner.body) return false;\n\n return [...context.walk(owner.body)].some((node) =>\n isReadNode(node, valueName, owner, declaration),\n );\n}\n\nfunction isCreateElementCall(call: SyntaxNode, context: RuleContext): boolean {\n return (\n call.type === \"function_call\" &&\n context.resolveCallPath(context.getCallPath(call) ?? \"\") ===\n \"React.createElement\"\n );\n}\n\nfunction isHostCreateElementCall(\n call: SyntaxNode,\n context: RuleContext,\n): boolean {\n if (!isCreateElementCall(call, context)) return false;\n\n const args = context.callArguments(call);\n const host = args[0]?.text.trim() ?? \"\";\n\n return /^(?:\"[^\"]+\"|'[^']+')$/.test(host);\n}\n\nfunction isTransparentUsage(\n node: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): boolean {\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) return false;\n\n if (parent.type === \"field\") {\n const value = fieldValue(parent);\n\n if (!value || !sameNode(value, current)) return false;\n\n const property = fieldName(parent);\n\n if (!property || NON_BINDABLE_HOST_FIELDS.has(property)) return false;\n\n const table = parent.parent;\n\n if (table?.type !== \"table_constructor\") return false;\n\n const args = table.parent;\n\n if (args?.type !== \"arguments\") return false;\n\n const call = args.parent;\n\n if (!call || !isCreateElementCall(call, context)) return false;\n\n if (!sameNode(context.callArguments(call)[1], table)) return false;\n\n if (isHostCreateElementCall(call, context)) return true;\n\n const component = context.callArguments(call)[0]?.text.trim() ?? \"\";\n\n return compatibleComponentProps.get(component)?.has(property) ?? false;\n }\n\n if (\n parent.type === \"if_statement\" ||\n parent.type === \"elseif_clause\" ||\n parent.type === \"while_statement\" ||\n parent.type === \"repeat_statement\" ||\n parent.type === \"return_statement\"\n ) {\n return false;\n }\n\n if (\n parent.type === \"function_definition\" ||\n parent.type === \"function_declaration\"\n )\n return false;\n\n if (!isTransparentParent(parent, context)) return false;\n\n current = parent;\n }\n\n return false;\n}\n\nfunction isDirectBindingValueUsage(\n node: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): boolean {\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) return false;\n\n if (\n parent.type === \"parenthesized_expression\" ||\n parent.type === \"cast_expression\" ||\n parent.type === \"type_cast_expression\"\n ) {\n current = parent;\n continue;\n }\n\n if (parent.type !== \"field\") return false;\n\n const value = fieldValue(parent);\n\n if (!value || !sameNode(value, current)) return false;\n\n const property = fieldName(parent);\n\n if (!property || NON_BINDABLE_HOST_FIELDS.has(property)) return false;\n\n const table = parent.parent;\n const args = table?.parent;\n const call = args?.parent;\n\n if (\n table?.type !== \"table_constructor\" ||\n args?.type !== \"arguments\" ||\n !call ||\n !isCreateElementCall(call, context)\n ) {\n return false;\n }\n\n if (!sameNode(context.callArguments(call)[1], table)) return false;\n\n if (isHostCreateElementCall(call, context)) return true;\n\n const component = context.callArguments(call)[0]?.text.trim() ?? \"\";\n\n return compatibleComponentProps.get(component)?.has(property) ?? false;\n }\n\n return false;\n}\n\nfunction allReadsDirectlyBindingSubstitutable(\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): boolean {\n if (!owner.body) return false;\n\n let reads = 0;\n\n for (const node of context.walk(owner.body)) {\n if (!isReadNode(node, valueName, owner, declaration)) continue;\n\n reads += 1;\n\n if (!isDirectBindingValueUsage(node, context, compatibleComponentProps))\n return false;\n }\n\n return reads > 0;\n}\n\nfunction isSimpleBindingDerivation(\n node: SyntaxNode,\n valueName: string,\n context: RuleContext,\n): boolean {\n if (node.type === \"identifier\") return node.text === valueName;\n\n if ([\"number\", \"string\", \"true\", \"false\", \"nil\"].includes(node.type))\n return true;\n\n if (node.type === \"dot_index_expression\") {\n const base = node.namedChildren[0];\n\n return Boolean(base && isSimpleBindingDerivation(base, valueName, context));\n }\n\n if (node.type === \"function_call\") {\n const path = context.getCallPath(node);\n\n if (path === \"math.random\" || path === \"math.randomseed\") return false;\n\n const root = path?.split(/[.:]/)[0];\n\n if (\n !root ||\n context.model.functions.some(\n (fn) => fn.parameters.includes(root) || fn.name === root,\n ) ||\n context.model.allNodes.some(\n (candidate) =>\n candidate.type === \"variable_declaration\" &&\n declarationNames(candidate).includes(root),\n )\n )\n return false;\n\n return (\n isBindingMapSafeCall(node, context) &&\n context\n .callArguments(node)\n .every((arg) => isSimpleBindingDerivation(arg, valueName, context))\n );\n }\n\n if (\n [\n \"binary_expression\",\n \"unary_expression\",\n \"parenthesized_expression\",\n ].includes(node.type)\n ) {\n return node.namedChildren.every((child) =>\n isSimpleBindingDerivation(child, valueName, context),\n );\n }\n\n return false;\n}\n\nfunction importedHookFixPreview(\n summary: BindingCandidateHookSummary,\n call: SyntaxNode,\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): FixPreview | undefined {\n const directlySubstitutable = allReadsDirectlyBindingSubstitutable(\n valueName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n );\n\n const preview = bindingModeFixPreview(\n summary,\n call,\n context,\n directlySubstitutable,\n );\n\n if (!preview || directlySubstitutable || !owner.body) return preview;\n\n if ((declaration.text.split(\"=\")[0] ?? \"\").includes(\":\")) return preview;\n\n const edits = new Map<number, { node: SyntaxNode; after: string }>();\n const sourceLines = context.source.split(/\\r?\\n/);\n\n edits.set(call.startIndex, { node: call, after: preview.after });\n\n for (const read of context.walk(owner.body)) {\n if (!isReadNode(read, valueName, owner, declaration)) continue;\n\n if (isDirectBindingValueUsage(read, context, compatibleComponentProps))\n continue;\n\n if (!isTransparentUsage(read, context, compatibleComponentProps))\n return preview;\n\n let field: SyntaxNode | null = read.parent;\n\n while (field && field.type !== \"field\") field = field.parent;\n\n if (!field) return preview;\n\n const expression = fieldValue(field);\n\n if (\n !expression ||\n !isSimpleBindingDerivation(expression, valueName, context)\n )\n return preview;\n\n if (edits.has(expression.startIndex)) continue;\n\n let mapped = expression.text;\n\n const reads = [...context.walk(expression)].filter((node) =>\n isReadNode(node, valueName, owner, declaration),\n );\n\n for (const node of reads.sort((a, b) => b.startIndex - a.startIndex)) {\n const start = node.startIndex - expression.startIndex;\n const end = node.endIndex - expression.startIndex;\n\n mapped = `${mapped.slice(0, start)}value${mapped.slice(end)}`;\n }\n\n const line = sourceLines[field.startPosition.row] ?? \"\";\n const indent = line.match(/^\\s*/)?.[0] ?? \"\";\n const unit = indent.includes(\"\\t\") ? \"\\t\" : \" \";\n\n edits.set(expression.startIndex, {\n node: expression,\n after: `${valueName}:map(function(value)\\n${indent}${unit}return ${mapped}\\n${indent}end)`,\n });\n }\n\n if (edits.size === 1) return preview;\n\n let after = owner.node.text;\n\n for (const edit of [...edits.values()].sort(\n (a, b) => b.node.startIndex - a.node.startIndex,\n )) {\n const start = edit.node.startIndex - owner.node.startIndex;\n const end = edit.node.endIndex - owner.node.startIndex;\n\n if (start < 0 || after.slice(start, end) !== edit.node.text) return preview;\n\n after = `${after.slice(0, start)}${edit.after}${after.slice(end)}`;\n }\n\n return {\n kind: \"exact\",\n before: owner.node.text,\n after,\n note: \"Enable the hook's Binding mode and map the derived visual properties from the returned Binding.\",\n };\n}\n\nfunction derivedLocalDeclarationForRead(\n node: SyntaxNode,\n context: RuleContext,\n): SyntaxNode | null {\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) return null;\n\n if (parent.type === \"variable_declaration\") return parent;\n\n if (\n parent.type === \"function_definition\" ||\n parent.type === \"function_declaration\"\n )\n return null;\n\n if (!isTransparentParent(parent, context)) return null;\n\n current = parent;\n }\n\n return null;\n}\n\nfunction opaqueDerivedLocalDeclarationForRead(\n node: SyntaxNode,\n context: RuleContext,\n): SyntaxNode | null {\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) return null;\n\n if (parent.type === \"variable_declaration\") return parent;\n\n if (\n parent.type === \"function_definition\" ||\n parent.type === \"function_declaration\"\n )\n return null;\n\n if (\n parent.type === \"if_statement\" ||\n parent.type === \"elseif_clause\" ||\n parent.type === \"while_statement\" ||\n parent.type === \"repeat_statement\" ||\n parent.type === \"for_statement\" ||\n parent.type === \"for_in_statement\" ||\n parent.type === \"return_statement\"\n )\n return null;\n\n if (parent.type === \"function_call\") {\n const path = context.resolveCallPath(context.getCallPath(parent) ?? \"\");\n\n // Values captured by React memo/effect hooks still rely on reconciliation\n // to recompute or re-run that hook. Do not treat the hook's result as an\n // opaque Binding derivation just because its dependency table mentions\n // the value.\n if (/^React\\.use(?:Memo|Callback|Effect|LayoutEffect)$/.test(path))\n return null;\n }\n\n if (\n !TRANSPARENT_PARENTS.has(parent.type) &&\n parent.type !== \"arguments\" &&\n parent.type !== \"function_call\"\n )\n return null;\n\n current = parent;\n }\n\n return null;\n}\n\nfunction stateReadsAreBindingCompatible(\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n visited = new Set<string>(),\n): boolean {\n if (!owner.body) return false;\n\n const visitKey = `${declaration.startIndex}:${valueName}`;\n\n if (visited.has(visitKey)) return false;\n\n visited.add(visitKey);\n\n let reads = 0;\n\n for (const node of context.walk(owner.body)) {\n if (!isReadNode(node, valueName, owner, declaration)) continue;\n\n reads += 1;\n\n if (isTransparentUsage(node, context, compatibleComponentProps)) continue;\n\n const derivedDeclaration = derivedLocalDeclarationForRead(node, context);\n\n const derivedNames = derivedDeclaration\n ? declarationNames(derivedDeclaration)\n : [];\n\n if (derivedDeclaration && derivedNames.length === 1) {\n if (\n stateReadsAreBindingCompatible(\n derivedNames[0],\n owner,\n derivedDeclaration,\n context,\n compatibleComponentProps,\n new Set(visited),\n )\n )\n continue;\n }\n\n return false;\n }\n\n return reads > 0;\n}\n\ninterface CallbackSourceEvidence {\n highFrequency: boolean;\n external: boolean;\n hostFeedbackProperties: Set<string>;\n genericExternal: boolean;\n}\n\ntype MirrorConfidence = \"strong\" | \"possible\" | \"none\";\n\ninterface BindingUpdateEvidence extends CallbackSourceEvidence {\n mirrorConfidence: MirrorConfidence;\n}\n\nfunction propertyChangedSignalProperty(text: string): string | null {\n return (\n text.match(/GetPropertyChangedSignal\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/)?.[1] ??\n null\n );\n}\n\nfunction reactChangePropertyForCallback(node: SyntaxNode): string | null {\n let current: SyntaxNode | null = node.parent;\n\n while (\n current &&\n current.type !== \"function_definition\" &&\n current.type !== \"function_declaration\"\n ) {\n if (current.type === \"field\") {\n return (\n current.text.match(\n /React\\s*\\.\\s*Change\\s*\\.\\s*([A-Za-z_][A-Za-z0-9_]*)/,\n )?.[1] ?? null\n );\n }\n\n current = current.parent;\n }\n\n return null;\n}\n\nfunction evidenceForExternalSource(\n highFrequency: boolean,\n hostFeedbackProperty?: string | null,\n): CallbackSourceEvidence {\n const hostFeedbackProperties = new Set<string>();\n\n if (hostFeedbackProperty) hostFeedbackProperties.add(hostFeedbackProperty);\n\n return {\n highFrequency,\n external: true,\n hostFeedbackProperties,\n genericExternal: !highFrequency && !hostFeedbackProperty,\n };\n}\n\nfunction mergeSourceEvidence(\n target: CallbackSourceEvidence,\n source: CallbackSourceEvidence,\n): void {\n target.highFrequency ||= source.highFrequency;\n target.external ||= source.external;\n target.genericExternal ||= source.genericExternal;\n\n for (const property of source.hostFeedbackProperties)\n target.hostFeedbackProperties.add(property);\n}\n\nfunction callbackSource(\n call: SyntaxNode,\n context: RuleContext,\n): CallbackSourceEvidence | null {\n const normalized = (context.getCallPath(call) ?? \"\").replace(/\\s+/g, \"\");\n\n const highFrequency =\n isHighFrequencyRobloxCall(call, context) ||\n LIKELY_CONTINUOUS_CALLBACK.test(normalized);\n\n const hostFeedbackProperty = propertyChangedSignalProperty(call.text);\n const final = normalized.split(/[.:]/).at(-1) ?? normalized;\n\n const external =\n highFrequency ||\n Boolean(hostFeedbackProperty) ||\n EXTERNAL_CALLBACK.test(normalized) ||\n EXTERNAL_CALLBACK.test(final);\n\n if (!external) return null;\n\n return evidenceForExternalSource(highFrequency, hostFeedbackProperty);\n}\n\nfunction importedCallbackSource(\n call: SyntaxNode,\n callbackArgument: SyntaxNode,\n importedCallbacks: Map<string, ExternalCallbackFunctionSummary>,\n context: RuleContext,\n): CallbackSourceEvidence | null {\n const path = context.getCallPath(call) ?? \"\";\n const summary = importedCallbacks.get(path);\n\n if (!summary) return null;\n\n const args = context.callArguments(call);\n\n const callbackIndex = args.findIndex((arg) =>\n sameNode(arg, callbackArgument),\n );\n\n if (\n callbackIndex < 0 ||\n !summary.callbackParameterIndexes.includes(callbackIndex)\n )\n return null;\n\n const highFrequency =\n summary.highFrequency ||\n args.some((arg) => isHighFrequencyRobloxExpression(arg, context));\n\n const hostFeedbackProperty = args\n .map((arg) => propertyChangedSignalProperty(arg.text))\n .find((property): property is string => Boolean(property));\n\n return evidenceForExternalSource(highFrequency, hostFeedbackProperty);\n}\n\nfunction directCallbackSource(\n node: SyntaxNode,\n importedCallbacks: Map<string, ExternalCallbackFunctionSummary>,\n context: RuleContext,\n): CallbackSourceEvidence | null {\n const reactChangeProperty = reactChangePropertyForCallback(node);\n\n if (reactChangeProperty)\n return evidenceForExternalSource(false, reactChangeProperty);\n\n const parent = node.parent;\n\n if (parent?.type !== \"arguments\" || parent.parent?.type !== \"function_call\")\n return null;\n\n const call = parent.parent;\n\n const imported = importedCallbackSource(\n call,\n node,\n importedCallbacks,\n context,\n );\n\n if (imported) return imported;\n\n return callbackSource(call, context);\n}\n\nfunction namedFunctionCallbackSource(\n fn: FunctionInfo,\n owner: FunctionInfo,\n importedCallbacks: Map<string, ExternalCallbackFunctionSummary>,\n context: RuleContext,\n): CallbackSourceEvidence | null {\n if (!fn.name || !owner.body) return null;\n\n const result: CallbackSourceEvidence = {\n highFrequency: false,\n external: false,\n hostFeedbackProperties: new Set(),\n genericExternal: false,\n };\n\n for (const call of context.walk(owner.body)) {\n if (call.type !== \"function_call\") continue;\n\n const args = context.callArguments(call);\n\n const callbackArg = args.find(\n (arg) => arg.type === \"identifier\" && arg.text === fn.name,\n );\n\n if (!callbackArg) continue;\n\n const source =\n importedCallbackSource(call, callbackArg, importedCallbacks, context) ??\n callbackSource(call, context);\n\n if (!source) continue;\n\n mergeSourceEvidence(result, source);\n }\n\n return result.external ? result : null;\n}\n\nfunction setterCallbackSource(\n call: SyntaxNode,\n binding: StateBinding,\n importedCallbacks: Map<string, ExternalCallbackFunctionSummary>,\n context: RuleContext,\n): CallbackSourceEvidence | null {\n const owner = binding.owner;\n\n if (!owner) return null;\n\n const nearest = context.nearestFunction(call);\n\n if (!nearest || nearest === owner) return null;\n\n const direct = directCallbackSource(nearest.node, importedCallbacks, context);\n\n if (direct) return direct;\n\n return namedFunctionCallbackSource(\n nearest,\n owner,\n importedCallbacks,\n context,\n );\n}\n\nfunction mirrorConfidenceRank(confidence: MirrorConfidence): number {\n if (confidence === \"strong\") return 2;\n\n if (confidence === \"possible\") return 1;\n\n return 0;\n}\n\nfunction mergeMirrorConfidence(\n a: MirrorConfidence,\n b: MirrorConfidence,\n): MirrorConfidence {\n return mirrorConfidenceRank(b) > mirrorConfidenceRank(a) ? b : a;\n}\n\nfunction isLiteralStateTransition(node: SyntaxNode | undefined): boolean {\n if (!node) return true;\n\n const text = node.text.trim();\n\n return /^(?:true|false|nil|[-+]?\\d+(?:\\.\\d+)?|[\"'][^\"']*[\"'])$/.test(text);\n}\n\nfunction isSemanticSnapshotExpression(node: SyntaxNode | undefined): boolean {\n return Boolean(node && SEMANTIC_SNAPSHOT_EXPRESSION.test(node.text));\n}\n\nfunction expressionReferencesCallbackParameter(\n expression: SyntaxNode,\n callback: FunctionInfo,\n context: RuleContext,\n): boolean {\n if (callback.parameters.length === 0) return false;\n\n const parameters = new Set(callback.parameters);\n\n return [...context.walk(expression)].some(\n (node) => node.type === \"identifier\" && parameters.has(node.text),\n );\n}\n\nconst PURE_EXPRESSION_ROOTS = new Set([\n \"math\",\n \"string\",\n \"utf8\",\n \"bit32\",\n \"UDim\",\n \"UDim2\",\n \"Vector2\",\n \"Vector3\",\n \"Color3\",\n \"CFrame\",\n \"Rect\",\n \"NumberRange\",\n \"NumberSequence\",\n \"ColorSequence\",\n \"BrickColor\",\n \"Font\",\n \"Enum\",\n \"tostring\",\n \"tonumber\",\n \"type\",\n \"typeof\",\n]);\n\nfunction callbackLocalNamesBefore(\n callback: FunctionInfo,\n before: SyntaxNode,\n context: RuleContext,\n): Set<string> {\n const names = new Set<string>();\n\n if (!callback.body) return names;\n\n for (const node of context.walk(callback.body)) {\n if (node.startIndex >= before.startIndex) continue;\n\n if (\n context.nearestFunction(node) !== callback ||\n node.type !== \"variable_declaration\"\n )\n continue;\n\n for (const name of declarationNames(node)) names.add(name);\n }\n\n return names;\n}\n\nfunction expressionHasExternalInput(\n expression: SyntaxNode,\n callback: FunctionInfo,\n setterCall: SyntaxNode,\n context: RuleContext,\n): boolean {\n const callbackLocals = callbackLocalNamesBefore(\n callback,\n setterCall,\n context,\n );\n\n const callbackParameters = new Set(callback.parameters);\n\n for (const node of context.walk(expression)) {\n if (node.type !== \"identifier\" || isIdentifierPropertyName(node)) continue;\n\n const name = node.text;\n\n if (callbackParameters.has(name)) return true;\n\n if (callbackLocals.has(name)) continue;\n\n if (context.model.stateValues.has(name)) continue;\n\n if (PURE_EXPRESSION_ROOTS.has(name)) continue;\n\n return true;\n }\n\n return false;\n}\n\nfunction setterHasDistinctValuesInCallback(\n call: SyntaxNode,\n callback: FunctionInfo,\n context: RuleContext,\n): boolean {\n if (!callback.body) return false;\n\n const setterPath = context.getCallPath(call);\n const distinctValues = new Set<string>();\n\n for (const sibling of context.walk(callback.body)) {\n if (\n sibling.type !== \"function_call\" ||\n context.nearestFunction(sibling) !== callback\n )\n continue;\n\n if (context.getCallPath(sibling) !== setterPath) continue;\n\n const argument = context.callArguments(sibling)[0];\n\n if (argument) distinctValues.add(argument.text.trim());\n }\n\n return distinctValues.size > 1;\n}\n\nfunction setterCallMirrorConfidence(\n call: SyntaxNode,\n callback: FunctionInfo,\n source: CallbackSourceEvidence,\n context: RuleContext,\n): MirrorConfidence {\n const value = context.callArguments(call)[0];\n\n if (!value || value.type === \"function_definition\") return \"none\";\n\n if (isLiteralStateTransition(value)) {\n return source.highFrequency &&\n setterHasDistinctValuesInCallback(call, callback, context)\n ? \"strong\"\n : \"none\";\n }\n\n if (isSemanticSnapshotExpression(value)) return \"none\";\n\n if (expressionReferencesCallbackParameter(value, callback, context))\n return \"strong\";\n\n if (source.hostFeedbackProperties.size > 0) {\n const text = value.text;\n\n if (\n [...source.hostFeedbackProperties].some((property) =>\n new RegExp(\n `(?:\\\\.|[\"'])${property.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}\\\\b`,\n ).test(text),\n )\n ) {\n return \"strong\";\n }\n }\n\n if (!expressionHasExternalInput(value, callback, call, context)) {\n return source.highFrequency &&\n setterHasDistinctValuesInCallback(call, callback, context)\n ? \"strong\"\n : \"none\";\n }\n\n // Some subscriptions do not provide the changing value as a callback\n // parameter (mouse.Move and many custom signals are common examples). A\n // non-semantic expression read inside a proven hot callback is still strong\n // mirror evidence; for an unknown-rate callback keep it as a candidate only.\n if (source.highFrequency) return \"strong\";\n\n return source.genericExternal ? \"possible\" : \"strong\";\n}\n\nfunction mergeBindingUpdateEvidence(\n target: BindingUpdateEvidence,\n source: CallbackSourceEvidence,\n mirrorConfidence: MirrorConfidence,\n): void {\n if (mirrorConfidence === \"none\") return;\n\n mergeSourceEvidence(target, source);\n\n target.mirrorConfidence = mergeMirrorConfidence(\n target.mirrorConfidence,\n mirrorConfidence,\n );\n}\n\nfunction bindingUpdateEvidence(\n binding: StateBinding,\n importedCallbacks: Map<string, ExternalCallbackFunctionSummary>,\n context: RuleContext,\n): BindingUpdateEvidence | null {\n const owner = binding.owner;\n\n if (!owner?.body) return null;\n\n const result: BindingUpdateEvidence = {\n highFrequency: false,\n external: false,\n hostFeedbackProperties: new Set(),\n genericExternal: false,\n mirrorConfidence: \"none\",\n };\n\n for (const node of context.walk(owner.body)) {\n if (node.type !== \"function_call\") continue;\n\n const path = context.getCallPath(node);\n\n if (path === binding.setterName) {\n const source = setterCallbackSource(\n node,\n binding,\n importedCallbacks,\n context,\n );\n\n const callback = context.nearestFunction(node);\n\n if (!source || !callback || callback === owner) continue;\n\n mergeBindingUpdateEvidence(\n result,\n source,\n setterCallMirrorConfidence(node, callback, source, context),\n );\n\n continue;\n }\n\n // Also catch the very common `signal:Connect(setValue)` shape, where the\n // setter itself is the subscription callback and therefore never appears\n // as a function_call node.\n const args = context.callArguments(node);\n\n const setterArg = args.find(\n (arg) => arg.type === \"identifier\" && arg.text === binding.setterName,\n );\n\n if (!setterArg) continue;\n\n const normalized = (context.getCallPath(node) ?? \"\").replace(/\\s+/g, \"\");\n\n const imported = importedCallbackSource(\n node,\n setterArg,\n importedCallbacks,\n context,\n );\n\n const source =\n imported ??\n (PERSISTENT_MIRROR_CALLBACK.test(normalized)\n ? callbackSource(node, context)\n : null);\n\n if (!source) continue;\n\n mergeBindingUpdateEvidence(result, source, \"strong\");\n }\n\n return result.external && result.mirrorConfidence !== \"none\" ? result : null;\n}\n\nfunction hasStrongHostFeedbackEvidence(\n source: CallbackSourceEvidence,\n): boolean {\n if (source.genericExternal || source.hostFeedbackProperties.size === 0)\n return false;\n\n return [...source.hostFeedbackProperties].every((property) =>\n isStrongHostFeedbackProperty(property),\n );\n}\n\nfunction hasLikelyContinuousPropertyEvidence(\n source: CallbackSourceEvidence,\n): boolean {\n if (source.hostFeedbackProperties.size === 0) return false;\n\n return [...source.hostFeedbackProperties].every((property) =>\n LIKELY_CONTINUOUS_PROPERTIES.has(property),\n );\n}\n\nfunction returnedHookValues(\n binding: StateBinding,\n context: RuleContext,\n): Array<{ exportName: string; node: SyntaxNode }> {\n const owner = binding.owner;\n\n if (!owner?.body || !owner.isHook) return [];\n\n const results: Array<{ exportName: string; node: SyntaxNode }> = [];\n\n for (const node of context.walk(owner.body)) {\n if (node.type !== \"return_statement\") continue;\n\n if (context.nearestFunction(node) !== owner) continue;\n\n for (const returned of node.namedChildren.flatMap((child) =>\n child.type === \"expression_list\" ? child.namedChildren : [child],\n )) {\n if (\n returned.type === \"identifier\" &&\n returned.text === binding.valueName\n ) {\n results.push({ exportName: binding.valueName, node: returned });\n } else if (returned.type === \"table_constructor\") {\n for (const field of returned.namedChildren.filter(\n (child) => child.type === \"field\",\n )) {\n const value = fieldValue(field);\n const name = fieldName(field);\n\n if (\n value?.type === \"identifier\" &&\n value.text === binding.valueName &&\n name\n ) {\n results.push({ exportName: name, node: value });\n }\n }\n }\n }\n }\n\n return results;\n}\n\nfunction hookCallSitesAreBindingCompatible(\n binding: StateBinding,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): boolean {\n const owner = binding.owner;\n\n if (!owner?.isHook || !owner.name) return false;\n\n const returned = returnedHookValues(binding, context);\n\n if (returned.length === 0) return false;\n\n let callSites = 0;\n\n for (const call of context.findCalls()) {\n const path = context.getCallPath(call);\n\n if (path !== owner.name) continue;\n\n const declaration = declarationForCall(call);\n\n if (!declaration) continue;\n\n const localName = declarationNames(declaration)[0] ?? null;\n\n const caller =\n context.containingComponent(call) ?? context.nearestFunction(call);\n\n if (!localName || !caller) continue;\n\n if (returned.length === 1 && returned[0].exportName === binding.valueName) {\n if (\n !stateReadsAreBindingCompatible(\n localName,\n caller,\n declaration,\n context,\n compatibleComponentProps,\n )\n )\n return false;\n\n callSites += 1;\n continue;\n }\n }\n\n return callSites > 0;\n}\n\nfunction selectorFieldName(\n call: SyntaxNode,\n context: RuleContext,\n): string | null {\n const selector = context.callArguments(call)[0];\n\n if (!selector || selector.type !== \"function_definition\") return null;\n\n const text = selector.text;\n\n return (\n text.match(\n /\\breturn\\s+[A-Za-z_][A-Za-z0-9_]*\\.([A-Za-z_][A-Za-z0-9_]*)\\b/,\n )?.[1] ??\n text.match(\n /\\breturn\\s+[A-Za-z_][A-Za-z0-9_]*\\[\\s*[\"']([^\"']+)[\"']\\s*\\]/,\n )?.[1] ??\n null\n );\n}\n\nfunction callDefinitelyUsesBindingMode(\n summary: BindingCandidateHookSummary,\n call: SyntaxNode,\n context: RuleContext,\n): boolean {\n const parameterIndex = summary.bindingModeParameterIndex;\n\n if (parameterIndex === undefined || summary.bindingWhenTruthy === undefined)\n return false;\n\n const argument = context.callArguments(call)[parameterIndex];\n const value = argument?.text.trim() ?? \"nil\";\n let truthy: boolean | null = null;\n\n if (value === \"true\") truthy = true;\n else if (value === \"false\" || value === \"nil\") truthy = false;\n\n if (truthy === null) return false;\n\n return truthy === summary.bindingWhenTruthy;\n}\n\ntype BindingRecommendation = \"warning\" | \"candidate\" | null;\n\nfunction hasExplicitBindingMode(summary: BindingCandidateHookSummary): boolean {\n return (\n summary.bindingModeParameterIndex !== undefined &&\n summary.bindingWhenTruthy !== undefined\n );\n}\n\ntype BindingUsageKind =\n \"compatible\" | \"custom-component\" | \"effect\" | \"structural\" | \"unknown\";\n\ninterface BindingUsageSummary {\n reads: number;\n compatible: number;\n customComponent: number;\n visualCustomComponent: number;\n effect: number;\n structural: number;\n unknown: number;\n}\n\nconst LIKELY_VISUAL_PROP =\n /(?:position|size|rotation|transparency|opacity|color|image|text|anchor|visible|enabled|layout|scale|offset|zindex|canvas|viewport|cframe|width|height|radius|stroke|padding|spacing|angle|alpha|progress)/i;\n\nfunction createElementPropUsage(\n node: SyntaxNode,\n context: RuleContext,\n): { component: string; property: string } | null {\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) return null;\n\n if (parent.type === \"field\") {\n const value = fieldValue(parent);\n\n if (!value || !sameNode(value, current)) return null;\n\n const property = fieldName(parent);\n const table = parent.parent;\n const args = table?.parent;\n const call = args?.parent;\n\n if (\n !property ||\n table?.type !== \"table_constructor\" ||\n args?.type !== \"arguments\" ||\n !call ||\n !isCreateElementCall(call, context)\n ) {\n return null;\n }\n\n if (!sameNode(context.callArguments(call)[1], table)) return null;\n\n const component = context.callArguments(call)[0]?.text.trim() ?? \"\";\n\n if (!component || /^(?:\"[^\"]+\"|'[^']+')$/.test(component)) return null;\n\n return { component, property };\n }\n\n if (\n parent.type === \"function_definition\" ||\n parent.type === \"function_declaration\"\n )\n return null;\n\n if (!isTransparentParent(parent, context)) return null;\n\n current = parent;\n }\n\n return null;\n}\n\nfunction isEffectUsage(node: SyntaxNode, context: RuleContext): boolean {\n const nearest = context.nearestFunction(node);\n\n if (nearest) {\n const parent = nearest.node.parent;\n\n if (\n parent?.type === \"arguments\" &&\n parent.parent?.type === \"function_call\"\n ) {\n const path = context.resolveCallPath(\n context.getCallPath(parent.parent) ?? \"\",\n );\n\n if (/^React\\.use(?:Effect|LayoutEffect)$/.test(path)) return true;\n }\n }\n\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) break;\n\n if (\n parent.type === \"arguments\" &&\n parent.parent?.type === \"function_call\"\n ) {\n const path = context.resolveCallPath(\n context.getCallPath(parent.parent) ?? \"\",\n );\n\n if (/^React\\.use(?:Effect|LayoutEffect)$/.test(path)) return true;\n }\n\n if (\n parent.type === \"function_definition\" ||\n parent.type === \"function_declaration\"\n )\n break;\n\n current = parent;\n }\n\n return false;\n}\n\nfunction isStructuralUsage(node: SyntaxNode, context: RuleContext): boolean {\n let current: SyntaxNode | null = node;\n\n while (current) {\n const parent: SyntaxNode | null = current.parent;\n\n if (!parent) return false;\n\n if (\n parent.type === \"if_statement\" ||\n parent.type === \"elseif_clause\" ||\n parent.type === \"while_statement\" ||\n parent.type === \"repeat_statement\" ||\n parent.type === \"for_statement\" ||\n parent.type === \"for_in_statement\" ||\n parent.type === \"return_statement\"\n )\n return true;\n\n if (\n parent.type === \"function_definition\" ||\n parent.type === \"function_declaration\"\n )\n return false;\n\n if (!isTransparentParent(parent, context)) return false;\n\n current = parent;\n }\n\n return false;\n}\n\nfunction classifyBindingUsage(\n node: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): BindingUsageKind {\n if (isTransparentUsage(node, context, compatibleComponentProps))\n return \"compatible\";\n\n if (createElementPropUsage(node, context)) return \"custom-component\";\n\n if (isEffectUsage(node, context)) return \"effect\";\n\n if (isStructuralUsage(node, context)) return \"structural\";\n\n return \"unknown\";\n}\n\nfunction bindingUsageSummary(\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n visited = new Set<string>(),\n): BindingUsageSummary {\n const summary: BindingUsageSummary = {\n reads: 0,\n compatible: 0,\n customComponent: 0,\n visualCustomComponent: 0,\n effect: 0,\n structural: 0,\n unknown: 0,\n };\n\n if (!owner.body) return summary;\n\n const visitKey = `${declaration.startIndex}:${valueName}`;\n\n if (visited.has(visitKey)) return summary;\n\n visited.add(visitKey);\n\n for (const node of context.walk(owner.body)) {\n if (!isReadNode(node, valueName, owner, declaration)) continue;\n\n if (!isTransparentUsage(node, context, compatibleComponentProps)) {\n const derivedDeclaration = derivedLocalDeclarationForRead(node, context);\n\n const derivedNames = derivedDeclaration\n ? declarationNames(derivedDeclaration)\n : [];\n\n if (derivedDeclaration && derivedNames.length === 1) {\n const derived = bindingUsageSummary(\n derivedNames[0],\n owner,\n derivedDeclaration,\n context,\n compatibleComponentProps,\n new Set(visited),\n );\n\n if (derived.reads > 0) {\n summary.reads += derived.reads;\n summary.compatible += derived.compatible;\n summary.customComponent += derived.customComponent;\n summary.visualCustomComponent += derived.visualCustomComponent;\n summary.effect += derived.effect;\n summary.structural += derived.structural;\n summary.unknown += derived.unknown;\n continue;\n }\n }\n\n const opaqueDeclaration = opaqueDerivedLocalDeclarationForRead(\n node,\n context,\n );\n\n const opaqueNames = opaqueDeclaration\n ? declarationNames(opaqueDeclaration)\n : [];\n\n if (opaqueDeclaration && opaqueNames.length === 1) {\n const derived = bindingUsageSummary(\n opaqueNames[0],\n owner,\n opaqueDeclaration,\n context,\n compatibleComponentProps,\n new Set(visited),\n );\n\n if (derived.reads > 0) {\n summary.reads += derived.reads + 1;\n summary.compatible += derived.compatible;\n summary.customComponent += derived.customComponent;\n summary.visualCustomComponent += derived.visualCustomComponent;\n summary.effect += derived.effect;\n summary.structural += derived.structural;\n summary.unknown += derived.unknown + 1;\n continue;\n }\n }\n }\n\n summary.reads += 1;\n const customComponentUsage = createElementPropUsage(node, context);\n const kind = classifyBindingUsage(node, context, compatibleComponentProps);\n\n if (kind === \"compatible\") summary.compatible += 1;\n else if (kind === \"custom-component\") {\n summary.customComponent += 1;\n\n if (\n customComponentUsage &&\n !compatibleComponentProps.has(customComponentUsage.component) &&\n LIKELY_VISUAL_PROP.test(customComponentUsage.property)\n ) {\n summary.visualCustomComponent += 1;\n }\n } else if (kind === \"effect\") summary.effect += 1;\n else if (kind === \"structural\") summary.structural += 1;\n else summary.unknown += 1;\n }\n\n return summary;\n}\n\nfunction hasCandidatePresentationEvidence(\n summary: BindingUsageSummary,\n): boolean {\n return summary.compatible > 0 || summary.visualCustomComponent > 0;\n}\n\nfunction isPresentationOnly(summary: BindingUsageSummary): boolean {\n return summary.reads > 0 && summary.compatible === summary.reads;\n}\n\nfunction stateBindingForSetter(\n setterName: string,\n context: RuleContext,\n): StateBinding | null {\n const valueName = context.model.stateSetters.get(setterName);\n\n if (!valueName) return null;\n\n return (\n context.model.stateBindings.find(\n (binding) =>\n binding.setterName === setterName && binding.valueName === valueName,\n ) ?? null\n );\n}\n\nfunction effectOnlyDerivesPresentation(\n valueName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): boolean {\n if (!owner.body) return false;\n\n let foundRelevantEffect = false;\n\n for (const call of context.walk(owner.body)) {\n if (\n call.type !== \"function_call\" ||\n context.nearestFunction(call) !== owner\n )\n continue;\n\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (path !== \"React.useEffect\" && path !== \"React.useLayoutEffect\")\n continue;\n\n const callbackNode = context.callArguments(call)[0];\n\n if (callbackNode?.type !== \"function_definition\") continue;\n\n const callback = context.model.functionByNode.get(callbackNode.id);\n\n if (!callback?.body) continue;\n\n const usesValue = [...context.walk(callback.body)].some(\n (node) =>\n context.nearestFunction(node) === callback &&\n isReadNode(node, valueName, owner, declaration),\n );\n\n if (!usesValue) continue;\n\n foundRelevantEffect = true;\n\n let presentationSetter = false;\n\n for (const nested of context.walk(callback.body)) {\n if (\n nested.type !== \"function_call\" ||\n context.nearestFunction(nested) !== callback\n )\n continue;\n\n if (isBindingMapSafeCall(nested, context)) continue;\n\n const nestedPath = context.resolveCallPath(\n context.getCallPath(nested) ?? \"\",\n );\n\n if (\n nestedPath === \"debug.profilebegin\" ||\n nestedPath === \"debug.profileend\"\n )\n continue;\n\n if (context.model.bindingSetters.has(nestedPath)) {\n presentationSetter = true;\n continue;\n }\n\n const target = stateBindingForSetter(nestedPath, context);\n\n if (\n target?.owner &&\n stateReadsAreBindingCompatible(\n target.valueName,\n target.owner,\n target.declaration,\n context,\n compatibleComponentProps,\n )\n ) {\n presentationSetter = true;\n continue;\n }\n\n // An effect that performs any other call is doing behavior Doctor cannot\n // safely reproduce with Binding:map/joinBindings. Keep normal React state.\n return false;\n }\n\n if (!presentationSetter) return false;\n }\n\n return foundRelevantEffect;\n}\n\nfunction importedHookRecommendation(\n summary: BindingCandidateHookSummary,\n call: SyntaxNode,\n localName: string,\n owner: FunctionInfo,\n declaration: SyntaxNode,\n context: RuleContext,\n compatibleComponentProps: Map<string, Set<string>>,\n): BindingRecommendation {\n if (\n !summary.external ||\n callDefinitelyUsesBindingMode(summary, call, context)\n )\n return null;\n\n const usage = bindingUsageSummary(\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n );\n\n if (usage.reads === 0) return null;\n\n const presentationOnly = isPresentationOnly(usage);\n const explicitBindingMode = hasExplicitBindingMode(summary);\n const observedProperty = observedPropertyForCall(summary, call, context);\n\n const strongHostFeedback =\n summary.sourceKind === \"instance-property\" &&\n isStrongHostFeedbackProperty(observedProperty);\n\n const likelyContinuousProperty =\n summary.sourceKind === \"instance-property\" &&\n Boolean(\n observedProperty && LIKELY_CONTINUOUS_PROPERTIES.has(observedProperty),\n );\n\n const mirrorsExternalValue = summary.mirrorConfidence !== \"none\";\n\n if (presentationOnly && (summary.highFrequency || likelyContinuousProperty))\n return \"warning\";\n\n if (presentationOnly && strongHostFeedback && explicitBindingMode)\n return \"warning\";\n\n if (\n presentationOnly &&\n (explicitBindingMode || strongHostFeedback || mirrorsExternalValue)\n )\n return \"candidate\";\n\n if (\n strongHostFeedback &&\n usage.effect > 0 &&\n effectOnlyDerivesPresentation(\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n )\n ) {\n return \"candidate\";\n }\n\n if (!hasCandidatePresentationEvidence(usage)) return null;\n\n if (summary.highFrequency || likelyContinuousProperty) return \"candidate\";\n\n if (strongHostFeedback && explicitBindingMode && usage.effect === 0)\n return \"candidate\";\n\n return null;\n}\n\nexport const preferBindingOverState: RuleDefinition = {\n id: \"react-luau/prefer-binding-over-state\",\n category: \"Performance\",\n severity: \"warning\",\n\n description:\n \"Prefer React.useBinding when proven external presentation streams do not need React reconciliation.\",\n\n guidance: {\n explanation:\n \"A Binding can update these values without rerendering the component, and every use of the value only needs that kind of update. React state is therefore doing extra reconciliation work here.\",\n\n caveat:\n \"Keep React state if changing the value must rebuild component structure rather than only update Roblox Instance properties or other Binding-aware consumers.\",\n },\n\n run(context) {\n const diagnostics = [];\n const seen = new Set<string>();\n\n const importedHooks = importedBindingCandidateHooks(context);\n const importedCallbacks = importedExternalCallbackFunctions(context);\n\n const compatibleComponentProps =\n importedBindingCompatibleComponentProps(context);\n\n for (const call of context.findCalls()) {\n const path = context.getCallPath(call) ?? \"\";\n const summary = importedHooks.get(path);\n\n if (!summary) continue;\n\n const declaration = declarationForCall(call);\n\n const localName = declaration\n ? (declarationNames(declaration)[0] ?? null)\n : null;\n\n const owner =\n context.containingComponent(call) ?? context.nearestFunction(call);\n\n if (!declaration || !localName || !owner) continue;\n\n if (\n importedHookRecommendation(\n summary,\n call,\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n ) !== \"warning\"\n )\n continue;\n\n const key = `imported:${call.startIndex}:${call.endIndex}:${localName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n const hasBindingMode = hasExplicitBindingMode(summary);\n const observedProperty = observedPropertyForCall(summary, call, context);\n\n const hostFeedback =\n summary.sourceKind === \"instance-property\" &&\n isStrongHostFeedbackProperty(observedProperty);\n\n const likelyContinuousProperty =\n summary.sourceKind === \"instance-property\" &&\n Boolean(\n observedProperty &&\n LIKELY_CONTINUOUS_PROPERTIES.has(observedProperty),\n );\n\n const message = hostFeedback\n ? `${path} mirrors ${observedProperty} through React state even though every analyzed use is presentation-only, so the measurement rerenders this consumer without needing reconciliation.`\n : likelyContinuousProperty\n ? `${path} mirrors continuously mutable ${observedProperty} through React state, and ${localName} only feeds presentation updates that do not need reconciliation.`\n : `${path} returns state updated from a high-frequency source, and ${localName} only feeds presentation updates that do not need React reconciliation.`;\n\n const help = hasBindingMode\n ? `Use the hook's Binding-returning mode${summary.bindingModeParameterName ? ` by passing ${summary.bindingWhenTruthy ? \"true\" : \"false\"} for ${summary.bindingModeParameterName}` : \"\"}. Binding:map can keep pure visual derivations outside the render cycle.`\n : \"Prefer a Binding-returning hook API so continuous presentation updates can reach host properties without rerendering the consumer.\";\n\n diagnostics.push({\n node: callNameNode(call),\n message,\n help,\n\n fixPreview: hasBindingMode\n ? importedHookFixPreview(\n summary,\n call,\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n )\n : undefined,\n });\n }\n\n for (const binding of context.model.stateBindings) {\n const owner = binding.owner;\n\n if (!owner || (!owner.isComponent && !owner.isHook)) continue;\n\n const update = bindingUpdateEvidence(binding, importedCallbacks, context);\n\n if (!update) continue;\n\n const localCompatible = stateReadsAreBindingCompatible(\n binding.valueName,\n owner,\n binding.declaration,\n context,\n compatibleComponentProps,\n );\n\n const hookCompatible = owner.isHook\n ? hookCallSitesAreBindingCompatible(\n binding,\n context,\n compatibleComponentProps,\n )\n : false;\n\n const strongHostFeedback = hasStrongHostFeedbackEvidence(update);\n\n const likelyContinuousProperty =\n hasLikelyContinuousPropertyEvidence(update);\n\n const shouldWarn = owner.isHook\n ? hookCompatible && (update.highFrequency || likelyContinuousProperty)\n : localCompatible &&\n (update.highFrequency ||\n strongHostFeedback ||\n likelyContinuousProperty);\n\n if (!shouldWarn) continue;\n\n const key = `${binding.call.startIndex}:${binding.call.endIndex}:${binding.valueName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n if (owner.isHook && hookCompatible) {\n const properties = likelyContinuousProperty\n ? [...update.hostFeedbackProperties].sort().join(\", \")\n : \"\";\n\n diagnostics.push({\n node: callNameNode(binding.call),\n\n message:\n likelyContinuousProperty && !update.highFrequency\n ? `Hook state ${binding.valueName} mirrors continuously mutable ${properties} and is only consumed by presentation properties at analyzed call sites.`\n : `Hook state ${binding.valueName} is updated from a high-frequency source and is only consumed by presentation properties at analyzed call sites.`,\n\n help: \"Consider returning a Binding, or adding a Binding-returning variant of this hook, so continuous presentation updates do not rerender every consumer.\",\n });\n } else if (strongHostFeedback && !update.highFrequency) {\n const properties = [...update.hostFeedbackProperties].sort().join(\", \");\n\n diagnostics.push({\n node: callNameNode(binding.call),\n message: `State ${binding.valueName} mirrors ${properties} and only feeds presentation updates, so React reconciliation is acting as an unnecessary host-property feedback step.`,\n help: \"Prefer React.useBinding for this host feedback path. Use Binding:map for pure visual derivations and keep React state only when a change needs to affect component structure or React effects.\",\n\n fixPreview: allReadsDirectlyBindingSubstitutable(\n binding.valueName,\n owner,\n binding.declaration,\n context,\n compatibleComponentProps,\n )\n ? useBindingFixPreview(binding.call)\n : undefined,\n });\n } else if (likelyContinuousProperty && !update.highFrequency) {\n const properties = [...update.hostFeedbackProperties].sort().join(\", \");\n\n diagnostics.push({\n node: callNameNode(binding.call),\n message: `State ${binding.valueName} mirrors continuously mutable ${properties} and only feeds presentation updates that do not need React reconciliation.`,\n help: \"Prefer React.useBinding so external visual property changes can reach presentation without routing every update through component state.\",\n\n fixPreview: allReadsDirectlyBindingSubstitutable(\n binding.valueName,\n owner,\n binding.declaration,\n context,\n compatibleComponentProps,\n )\n ? useBindingFixPreview(binding.call)\n : undefined,\n });\n } else {\n diagnostics.push({\n node: callNameNode(binding.call),\n message: `State ${binding.valueName} is updated from a high-frequency callback and only feeds presentation updates that do not need React reconciliation.`,\n help: \"Prefer React.useBinding so continuous visual updates can reach host properties without rerendering the component.\",\n\n fixPreview: allReadsDirectlyBindingSubstitutable(\n binding.valueName,\n owner,\n binding.declaration,\n context,\n compatibleComponentProps,\n )\n ? useBindingFixPreview(binding.call)\n : undefined,\n });\n }\n }\n\n return diagnostics;\n },\n};\n\nexport const preferBindingOverStateCandidate: RuleDefinition = {\n id: \"react-luau/prefer-binding-over-state-candidate\",\n category: \"Performance\",\n severity: \"suggestion\",\n\n description:\n \"Surface lower-confidence state-to-Binding opportunities that need developer review.\",\n\n guidance: {\n explanation:\n \"A Binding can update visual values without rerendering the component. Doctor found an external reactive mirror or presentation branch, but it cannot fully prove the source's update pressure, conversion safety, or that every consumer can leave React state.\",\n\n caveat:\n \"Keep React state when the external event represents semantic UI state, changes component structure, drives hook/effect behavior, or is infrequent enough that a Binding would only make the code harder to follow. Mixed cases can split visual Binding updates from the smaller value that truly needs reconciliation.\",\n },\n\n run(context) {\n const diagnostics = [];\n const seen = new Set<string>();\n const importedHooks = importedBindingCandidateHooks(context);\n const importedCallbacks = importedExternalCallbackFunctions(context);\n\n const compatibleComponentProps =\n importedBindingCompatibleComponentProps(context);\n\n for (const call of context.findCalls()) {\n const path = context.getCallPath(call) ?? \"\";\n const summary = importedHooks.get(path);\n\n if (!summary) continue;\n\n const declaration = declarationForCall(call);\n\n const localName = declaration\n ? (declarationNames(declaration)[0] ?? null)\n : null;\n\n const owner =\n context.containingComponent(call) ?? context.nearestFunction(call);\n\n if (!declaration || !localName || !owner) continue;\n\n if (\n importedHookRecommendation(\n summary,\n call,\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n ) !== \"candidate\"\n )\n continue;\n\n const usage = bindingUsageSummary(\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n );\n\n const presentationOnly = isPresentationOnly(usage);\n const observedProperty = observedPropertyForCall(summary, call, context);\n\n const strongHostFeedback =\n summary.sourceKind === \"instance-property\" &&\n isStrongHostFeedbackProperty(observedProperty);\n\n const hasBindingMode = hasExplicitBindingMode(summary);\n const mirrorsExternalValue = summary.mirrorConfidence !== \"none\";\n\n const visualEffectBridge =\n strongHostFeedback &&\n usage.effect > 0 &&\n effectOnlyDerivesPresentation(\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n );\n\n const key = `imported:${call.startIndex}:${call.endIndex}:${localName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n let message: string;\n let help: string;\n\n if (presentationOnly && hasBindingMode) {\n message = `${path} has a Binding-returning mode and ${localName} is only used for presentation, but Doctor cannot prove the updates are frequent enough to make the Binding version clearly preferable.`;\n\n help =\n \"Consider the Binding mode when this value changes often enough that avoiding reconciliation matters. Ordinary React state may be clearer for infrequent semantic updates.\";\n } else if (presentationOnly && strongHostFeedback) {\n message = `${path} mirrors ${observedProperty} through React state only for presentation, but the hook does not expose a proven low-friction Binding mode.`;\n\n help =\n \"Consider a Binding-returning variant if this host feedback path is performance-sensitive. Keep state when the simpler API is more valuable than avoiding occasional rerenders.\";\n } else if (presentationOnly && mirrorsExternalValue) {\n message = `${path} mirrors an external reactive value through React state, and ${localName} is only used for presentation.`;\n\n help =\n \"Consider a Binding-returning hook API if this source changes often enough that rerendering is unnecessary. Doctor cannot prove the source's update pressure, so ordinary state may still be the clearer choice.\";\n } else if (visualEffectBridge) {\n message = `${path} mirrors ${observedProperty} through React state, and the dependent React effect only derives presentation state or Bindings from ${localName}.`;\n\n help = hasBindingMode\n ? \"Consider the hook's Binding mode and move the visual derivation into Binding:map/joinBindings so the measurement does not need an intermediate React rerender.\"\n : \"Consider a Binding-returning hook variant if this visual feedback path is performance-sensitive; the current effect appears to use React state only as an intermediate presentation step.\";\n } else {\n message = `${path} updates ${localName} through React state and some consumers are presentation-only, but other consumers may still require React reconciliation.`;\n\n help =\n \"Inspect whether the presentation branch can move to a Binding while structural or effect-driven consumers keep React state. Avoid replacing the value wholesale when React still needs to react to it.\";\n }\n\n diagnostics.push({\n node: callNameNode(call),\n message,\n help,\n\n fixPreview:\n presentationOnly && hasBindingMode\n ? importedHookFixPreview(\n summary,\n call,\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n )\n : undefined,\n });\n }\n\n for (const call of context.findCalls()) {\n const path = context.getCallPath(call) ?? \"\";\n const member = path.split(/[.:]/).at(-1) ?? path;\n\n const bindingAlternative =\n context.project.bindingApiAlternatives.get(member);\n\n if (!bindingAlternative) continue;\n\n const declaration = declarationForCall(call);\n\n const localName = declaration\n ? (declarationNames(declaration)[0] ?? null)\n : null;\n\n const owner =\n context.containingComponent(call) ?? context.nearestFunction(call);\n\n if (\n !declaration ||\n !localName ||\n !owner ||\n !hasAnyRead(localName, owner, declaration, context)\n )\n continue;\n\n const usage = bindingUsageSummary(\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n );\n\n const presentationOnly = isPresentationOnly(usage);\n\n // A sibling Binding API is not enough to justify suggesting a split for\n // ordinary semantic/store state. Without independent high-frequency\n // evidence, only surface this when every analyzed consumer can stay on\n // the presentation path.\n if (!presentationOnly) continue;\n\n const field = selectorFieldName(call, context);\n const key = `state-api:${call.startIndex}:${call.endIndex}:${localName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n diagnostics.push({\n node: callNameNode(call),\n message: `${path} subscribes ${localName} through React state${field ? ` for ${field}` : \"\"}, while ${bindingAlternative} is also available and every analyzed consumer is presentation-only.`,\n help: `Consider ${bindingAlternative} when this value updates frequently enough that avoiding reconciliation matters; state remains reasonable for ordinary semantic store updates.`,\n\n fixPreview: allReadsDirectlyBindingSubstitutable(\n localName,\n owner,\n declaration,\n context,\n compatibleComponentProps,\n )\n ? callMemberFixPreview(call, bindingAlternative)\n : undefined,\n });\n }\n\n for (const binding of context.model.stateBindings) {\n const owner = binding.owner;\n\n if (!owner || (!owner.isComponent && !owner.isHook) || !owner.body)\n continue;\n\n const update = bindingUpdateEvidence(binding, importedCallbacks, context);\n\n if (!update) continue;\n\n const localCompatible = stateReadsAreBindingCompatible(\n binding.valueName,\n owner,\n binding.declaration,\n context,\n compatibleComponentProps,\n );\n\n const hookCompatible = owner.isHook\n ? hookCallSitesAreBindingCompatible(\n binding,\n context,\n compatibleComponentProps,\n )\n : false;\n\n const strongHostFeedback = hasStrongHostFeedbackEvidence(update);\n\n const likelyContinuousProperty =\n hasLikelyContinuousPropertyEvidence(update);\n\n const mirrorsExternalValue = update.mirrorConfidence !== \"none\";\n\n if (owner.isHook) {\n if (\n hookCompatible &&\n (update.highFrequency || likelyContinuousProperty)\n )\n continue;\n\n if (!(hookCompatible && (strongHostFeedback || mirrorsExternalValue)))\n continue;\n\n const key = `hook-state:${binding.call.startIndex}:${binding.call.endIndex}:${binding.valueName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n const measurement = strongHostFeedback\n ? \"a presentation measurement\"\n : \"an external reactive value\";\n\n diagnostics.push({\n node: callNameNode(binding.call),\n message: `Hook state ${binding.valueName} mirrors ${measurement} and is only consumed by presentation properties at analyzed call sites, but converting it requires changing the hook API.`,\n help: \"Consider adding a Binding-returning variant when this reactive path updates often enough that avoiding reconciliation matters; keeping the state API is reasonable when ordinary React state is simpler.\",\n });\n\n continue;\n }\n\n const usage = bindingUsageSummary(\n binding.valueName,\n owner,\n binding.declaration,\n context,\n compatibleComponentProps,\n );\n\n if (!hasCandidatePresentationEvidence(usage)) continue;\n\n if (\n localCompatible &&\n (update.highFrequency || strongHostFeedback || likelyContinuousProperty)\n )\n continue;\n\n if (localCompatible && mirrorsExternalValue) {\n const key = `state:${binding.call.startIndex}:${binding.call.endIndex}:${binding.valueName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n diagnostics.push({\n node: callNameNode(binding.call),\n message: `State ${binding.valueName} mirrors an external reactive value and only feeds presentation updates, but Doctor cannot prove the source changes frequently enough for Binding to be clearly preferable.`,\n help: \"Consider React.useBinding when this source is a stream of presentation values rather than semantic React state. Keep useState when the external event represents an infrequent UI state transition.\",\n });\n\n continue;\n }\n\n const mixedHighFrequency =\n update.highFrequency || likelyContinuousProperty;\n\n const mixedHostFeedback =\n strongHostFeedback && usage.structural > 0 && usage.effect === 0;\n\n if (!mixedHighFrequency && !mixedHostFeedback) continue;\n\n const key = `state:${binding.call.startIndex}:${binding.call.endIndex}:${binding.valueName}`;\n\n if (seen.has(key)) continue;\n\n seen.add(key);\n\n diagnostics.push({\n node: callNameNode(binding.call),\n message: `State ${binding.valueName} has presentation-oriented consumers, but other uses still appear to need React reconciliation.`,\n help: \"Inspect whether the presentation branch can move to React.useBinding while structural consumers keep a smaller semantic state value. Splitting the responsibilities can remove hot-path rerenders without forcing Binding semantics onto the whole value.\",\n });\n }\n\n return diagnostics;\n },\n};\n",
|
|
34
36
|
"import type { RuleDefinition } from \"../types\";\r\nimport { callNameNode } from \"./helpers\";\r\n\r\nexport const noCreateRootInRender: RuleDefinition = {\r\n id: \"react-luau/no-create-root-in-render\",\r\n category: \"Roblox\",\r\n severity: \"error\",\r\n description: \"Do not create ReactRoblox roots during component render.\",\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n if (path !== \"ReactRoblox.createRoot\") continue;\r\n const owner = context.containingComponent(call);\r\n if (!owner || !context.isDirectlyExecutedInFunction(call, owner)) continue;\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: \"ReactRoblox.createRoot() is called during component render.\",\r\n help: \"Own top-level roots outside component render. When a component intentionally creates a separate root, create it in an effect and unmount that exact root in cleanup.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
35
37
|
"import type { SyntaxNode } from \"../syntax\";\r\nimport type { DiagnosticInput, FunctionInfo, RuleContext, RuleDefinition } from \"../types\";\r\nimport { normalizeExpressionText, sameNode } from \"../ast/walk\";\r\nimport { assignmentLeft, assignmentTargetNode, declarationNames, isBindingShadowedBetween } from \"./helpers\";\r\n\r\nfunction refRootFromTarget(target: string, refs: Set<string>): string | null {\r\n const match = target.trim().match(/^([A-Za-z_][A-Za-z0-9_]*)\\s*\\.\\s*current\\b/);\r\n if (!match || !refs.has(match[1])) return null;\r\n return match[1];\r\n}\r\n\r\nfunction isNilGuardedLazyInit(node: SyntaxNode, refName: string): boolean {\r\n let current = node.parent;\r\n while (current) {\r\n if (current.type === \"if_statement\") {\r\n const condition = current.childForFieldName(\"condition\")?.text.replace(/\\s+/g, \"\") ?? \"\";\r\n const escaped = refName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n if (new RegExp(`^(?:${escaped}\\.current==nil|nil==${escaped}\\.current)$`).test(condition)) return true;\r\n return false;\r\n }\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") return false;\r\n current = current.parent;\r\n }\r\n return false;\r\n}\r\n\r\nfunction assignmentRight(text: string): string | null {\r\n const match = text.match(/^(?:.*?)(?:\\+=|-=|\\*=|\\/=|%=|\\^=|\\.\\.=|=)\\s*(.+)$/s);\r\n return match?.[1]?.trim() ?? null;\r\n}\r\n\r\nfunction refDeclaration(owner: FunctionInfo, refName: string, context: RuleContext): SyntaxNode | null {\r\n if (!owner.body) return null;\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(statement);\r\n const index = names.indexOf(refName);\r\n if (index === -1) continue;\r\n const assignment = statement.namedChildren.find((child) => child.type === \"assignment_statement\");\r\n const expressions = assignment?.namedChildren.find((child) => child.type === \"expression_list\")?.namedChildren ?? [];\r\n const expression = expressions[index] ?? expressions[0];\r\n if (!expression || expression.type !== \"function_call\") continue;\r\n if (context.resolveCallPath(context.getCallPath(expression) ?? \"\") === \"React.useRef\") return statement;\r\n }\r\n return null;\r\n}\r\n\r\nfunction refInitializer(owner: FunctionInfo, refName: string, context: RuleContext): string | null {\r\n if (!owner.body) return null;\r\n for (const statement of owner.body.namedChildren) {\r\n if (statement.type !== \"variable_declaration\") continue;\r\n const names = declarationNames(statement);\r\n const index = names.indexOf(refName);\r\n if (index === -1) continue;\r\n const assignment = statement.namedChildren.find((child) => child.type === \"assignment_statement\");\r\n const expressions = assignment?.namedChildren.find((child) => child.type === \"expression_list\")?.namedChildren ?? [];\r\n const expression = expressions[index] ?? expressions[0];\r\n if (!expression || expression.type !== \"function_call\") return null;\r\n const path = context.resolveCallPath(context.getCallPath(expression) ?? \"\");\r\n if (path !== \"React.useRef\") return null;\r\n return context.callArguments(expression)[0]?.text.trim() ?? \"nil\";\r\n }\r\n return null;\r\n}\r\n\r\nfunction isTopLevelOwnerStatement(node: SyntaxNode, owner: FunctionInfo): boolean {\r\n let current = node.parent;\r\n while (current && !sameNode(current, owner.node)) {\r\n if (current.type === \"if_statement\" || current.type === \"for_statement\" || current.type === \"while_statement\" || current.type === \"repeat_statement\") {\r\n return false;\r\n }\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") return false;\r\n current = current.parent;\r\n }\r\n return Boolean(current);\r\n}\r\n\r\n\r\nfunction exactRefCurrentTarget(node: SyntaxNode, refName: string): boolean {\r\n return normalizeExpressionText(assignmentLeft(node.text)) === `${refName}.current`;\r\n}\r\n\r\nfunction hasDirectRenderRead(owner: FunctionInfo, refName: string, context: RuleContext): boolean {\r\n if (!owner.body) return false;\r\n const target = `${refName}.current`;\r\n\r\n for (const candidate of context.walk(owner.body)) {\r\n if (candidate.type !== \"dot_index_expression\" || normalizeExpressionText(candidate.text) !== target) continue;\r\n if (!context.isDirectlyExecutedInFunction(candidate, owner)) continue;\r\n\r\n let current: SyntaxNode | null = candidate.parent;\r\n let isWrite = false;\r\n while (current && !sameNode(current, owner.node)) {\r\n if (current.type === \"assignment_statement\" || current.type === \"update_statement\") {\r\n isWrite = exactRefCurrentTarget(current, refName);\r\n break;\r\n }\r\n if (current.type === \"function_definition\" || current.type === \"function_declaration\") break;\r\n current = current.parent;\r\n }\r\n if (!isWrite) return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isLatestValueMirror(node: SyntaxNode, owner: FunctionInfo, refName: string, context: RuleContext): boolean {\r\n if (node.type !== \"assignment_statement\" || !exactRefCurrentTarget(node, refName)) return false;\r\n const right = assignmentRight(node.text);\r\n if (!right) return false;\r\n\r\n const initializer = refInitializer(owner, refName, context);\r\n if (initializer !== null && normalizeExpressionText(right) === normalizeExpressionText(initializer)) return true;\r\n\r\n // A direct top-level `ref.current = renderValue` is the common use-latest\r\n // mirror pattern even when the ref used a neutral initial value such as false.\r\n // Nested writes remain warnings because they are usually imperative render work.\r\n if (isTopLevelOwnerStatement(node, owner)) {\r\n return /^[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*$/.test(normalizeExpressionText(right));\r\n }\r\n\r\n // A render-computed ref that is only written during render and read later by\r\n // effects/events is another use-latest mirror shape. The conditional/looped\r\n // write can still observe a pre-commit render, so keep it visible as a\r\n // suggestion rather than treating it as fully safe.\r\n return !hasDirectRenderRead(owner, refName, context);\r\n}\r\n\r\nexport const noRefCurrentInRender: RuleDefinition = {\r\n id: \"react-luau/no-ref-current-in-render\",\r\n category: \"Correctness\",\r\n severity: \"warning\",\r\n description: \"Avoid mutating ref.current during render except for predictable initialization or deliberate latest-value mirrors.\",\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const node of context.walk()) {\r\n if (node.type !== \"assignment_statement\" && node.type !== \"update_statement\") continue;\r\n const owner = context.nearestFunction(node);\r\n if (!owner || (!owner.isComponent && !owner.isHook)) continue;\r\n if (!context.isDirectlyExecutedInFunction(node, owner)) continue;\r\n const refs = context.model.refVariablesByFunction.get(owner.node.id) ?? new Set<string>();\r\n const target = assignmentLeft(node.text);\r\n const refName = refRootFromTarget(target, refs);\r\n if (!refName || isNilGuardedLazyInit(node, refName)) continue;\r\n const declaration = refDeclaration(owner, refName, context);\r\n if (isBindingShadowedBetween(node, owner, refName, declaration)) continue;\r\n\r\n const latestValueMirror = isLatestValueMirror(node, owner, refName, context);\r\n diagnostics.push({\r\n node: assignmentTargetNode(node),\r\n severity: latestValueMirror ? \"suggestion\" : \"warning\",\r\n message: latestValueMirror\r\n ? `${refName}.current mirrors its latest render value during render.`\r\n : `${refName}.current is mutated during ${owner.isHook ? \"hook\" : \"component\"} render.`,\r\n help: latestValueMirror\r\n ? \"A latest-value ref can expose an uncommitted render value to imperative callbacks. Update it after commit when that distinction matters.\"\r\n : \"Move ref writes into the event, effect, or ref callback that owns the mutation. A nil-guarded one-time lazy initialization pattern remains allowed for pure construction.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
36
38
|
"import type { SyntaxNode } from \"../syntax\";\r\n\r\nimport type {\r\n RuleContext,\r\n RuleDefinition,\r\n SourceEffectModuleSummary,\r\n} from \"../types\";\r\n\r\nimport {\r\n normalizeRequireTarget,\r\n resolveModuleReference,\r\n} from \"../module-resolution\";\r\n\r\nimport { knownYieldReason } from \"../roblox-semantics\";\r\nimport { callNameNode } from \"./helpers\";\r\n\r\ninterface SourceBinding<T> {\r\n declaration: SyntaxNode;\r\n value: T | null;\r\n}\r\n\r\ntype SourceBindings<T> = Map<string, SourceBinding<T>[]>;\r\n\r\ninterface EffectInstance {\r\n summary: SourceEffectModuleSummary;\r\n persistent: boolean;\r\n}\r\n\r\nfunction declarationParts(node: SyntaxNode): {\r\n names: string[];\r\n expressions: SyntaxNode[];\r\n} {\r\n if (node.type !== \"variable_declaration\")\r\n return { names: [], expressions: [] };\r\n\r\n const assignment = node.namedChildren.find(\r\n (child) => child.type === \"assignment_statement\",\r\n );\r\n\r\n const variables =\r\n assignment?.namedChildren.find((child) => child.type === \"variable_list\") ??\r\n node.namedChildren.find((child) => child.type === \"variable_list\");\r\n\r\n const expressions = assignment?.namedChildren.find(\r\n (child) => child.type === \"expression_list\",\r\n );\r\n\r\n return {\r\n names:\r\n variables?.namedChildren\r\n .filter((child) => child.type === \"identifier\")\r\n .map((child) => child.text) ?? [],\r\n\r\n expressions: expressions?.namedChildren ?? [],\r\n };\r\n}\r\n\r\nfunction assignmentParts(node: SyntaxNode): {\r\n names: string[];\r\n expressions: SyntaxNode[];\r\n} {\r\n if (\r\n node.type !== \"assignment_statement\" ||\r\n node.parent?.type === \"variable_declaration\"\r\n )\r\n return { names: [], expressions: [] };\r\n\r\n const variables = node.namedChildren.find(\r\n (child) => child.type === \"variable_list\",\r\n );\r\n\r\n const expressions = node.namedChildren.find(\r\n (child) => child.type === \"expression_list\",\r\n );\r\n\r\n return {\r\n names:\r\n variables?.namedChildren\r\n .filter((child) => child.type === \"identifier\")\r\n .map((child) => child.text) ?? [],\r\n\r\n expressions: expressions?.namedChildren ?? [],\r\n };\r\n}\r\n\r\nfunction bindingParts(node: SyntaxNode): {\r\n names: string[];\r\n expressions: SyntaxNode[];\r\n} {\r\n return node.type === \"variable_declaration\"\r\n ? declarationParts(node)\r\n : assignmentParts(node);\r\n}\r\n\r\nfunction addSourceBinding<T>(\r\n bindings: SourceBindings<T>,\r\n name: string,\r\n declaration: SyntaxNode,\r\n value: T | null,\r\n): void {\r\n const existing = bindings.get(name) ?? [];\r\n existing.push({ declaration, value });\r\n bindings.set(name, existing);\r\n}\r\n\r\nfunction nearestScopeContainer(\r\n node: SyntaxNode,\r\n context: RuleContext,\r\n): SyntaxNode {\r\n const owner = context.nearestFunction(node);\r\n let current = node.parent;\r\n\r\n while (current) {\r\n if (current.type === \"block\") return current;\r\n\r\n if (owner && current.id === owner.node.id) return owner.body ?? owner.node;\r\n\r\n current = current.parent;\r\n }\r\n\r\n return context.root;\r\n}\r\n\r\nfunction declarationVisibleAt(\r\n declaration: SyntaxNode,\r\n node: SyntaxNode,\r\n context: RuleContext,\r\n): boolean {\r\n if (declaration.startIndex >= node.startIndex) return false;\r\n\r\n const container = nearestScopeContainer(declaration, context);\r\n\r\n return (\r\n node.startIndex >= container.startIndex &&\r\n node.endIndex <= container.endIndex\r\n );\r\n}\r\n\r\nfunction functionParameterNames(node: SyntaxNode): Set<string> {\r\n const result = new Set<string>();\r\n\r\n const parameters =\r\n node.childForFieldName(\"parameters\") ??\r\n node.namedChildren.find((child) => child.type === \"parameters\");\r\n\r\n for (const parameter of parameters?.namedChildren ?? []) {\r\n if (parameter.type === \"identifier\") result.add(parameter.text);\r\n\r\n for (const child of parameter.namedChildren) {\r\n if (child.type === \"identifier\") result.add(child.text);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction loopBindsName(node: SyntaxNode, name: string): boolean {\r\n if (node.type !== \"for_statement\") return false;\r\n\r\n const header = node.text.split(/\\bdo\\b/s, 1)[0] ?? \"\";\r\n const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\n return new RegExp(\r\n `^\\\\s*for\\\\s+(?:${escaped}\\\\s*=|[^\\\\n]*\\\\b${escaped}\\\\b[^\\\\n]*\\\\bin\\\\b)`,\r\n \"s\",\r\n ).test(header);\r\n}\r\n\r\nfunction bindingShadowedAfterDeclaration(\r\n declaration: SyntaxNode,\r\n node: SyntaxNode,\r\n name: string,\r\n): boolean {\r\n let current = node.parent;\r\n\r\n while (current) {\r\n // Once we reach a scope that already contains the source binding, binders\r\n // outside that scope cannot shadow the binding at this use site.\r\n if (\r\n declaration.startIndex >= current.startIndex &&\r\n declaration.endIndex <= current.endIndex\r\n )\r\n return false;\r\n\r\n if (\r\n (current.type === \"function_definition\" ||\r\n current.type === \"function_declaration\") &&\r\n functionParameterNames(current).has(name)\r\n )\r\n return true;\r\n\r\n if (loopBindsName(current, name)) return true;\r\n\r\n current = current.parent;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction resolveSourceBinding<T>(\r\n bindings: SourceBindings<T>,\r\n name: string,\r\n node: SyntaxNode,\r\n context: RuleContext,\r\n): T | null {\r\n const candidates = bindings.get(name);\r\n\r\n if (!candidates) return null;\r\n\r\n for (let index = candidates.length - 1; index >= 0; index -= 1) {\r\n const candidate = candidates[index];\r\n\r\n if (!declarationVisibleAt(candidate.declaration, node, context)) continue;\r\n\r\n if (bindingShadowedAfterDeclaration(candidate.declaration, node, name))\r\n return null;\r\n\r\n return candidate.value;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction sourceEffectImports(\r\n context: RuleContext,\r\n): SourceBindings<SourceEffectModuleSummary> {\r\n const result: SourceBindings<SourceEffectModuleSummary> = new Map();\r\n\r\n for (const node of context.walk(context.root)) {\r\n if (\r\n node.type !== \"variable_declaration\" &&\r\n node.type !== \"assignment_statement\"\r\n )\r\n continue;\r\n\r\n if (\r\n node.type === \"assignment_statement\" &&\r\n node.parent?.type === \"variable_declaration\"\r\n )\r\n continue;\r\n\r\n const { names, expressions } = bindingParts(node);\r\n\r\n for (let index = 0; index < names.length; index += 1) {\r\n const expression = expressions[index] ?? expressions[0];\r\n\r\n const requireMatch =\r\n expression?.type === \"function_call\"\r\n ? expression.text.match(/^\\s*require\\s*\\((.*?)\\)\\s*$/s)\r\n : null;\r\n\r\n const summary = requireMatch\r\n ? resolveModuleReference(\r\n normalizeRequireTarget(requireMatch[1]),\r\n context.project.sourceEffects,\r\n )\r\n : null;\r\n\r\n addSourceBinding(result, names[index], node, summary);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction factorySummaryFromCall(\r\n call: SyntaxNode,\r\n context: RuleContext,\r\n imports: SourceBindings<SourceEffectModuleSummary>,\r\n): SourceEffectModuleSummary | null {\r\n const path = context.getCallPath(call)?.replace(/\\s+/g, \"\") ?? \"\";\r\n\r\n const match = path.match(\r\n /^([A-Za-z_][A-Za-z0-9_]*)[.:]([A-Za-z_][A-Za-z0-9_]*)$/,\r\n );\r\n\r\n if (!match) return null;\r\n\r\n const summary = resolveSourceBinding(imports, match[1], call, context);\r\n\r\n if (!summary?.instanceFactories.has(match[2])) return null;\r\n\r\n return summary;\r\n}\r\n\r\nfunction returnedFactorySummary(\r\n callback: SyntaxNode,\r\n context: RuleContext,\r\n imports: SourceBindings<SourceEffectModuleSummary>,\r\n): SourceEffectModuleSummary | null {\r\n for (const node of context.walk(callback)) {\r\n if (\r\n node !== callback &&\r\n (node.type === \"function_definition\" ||\r\n node.type === \"function_declaration\")\r\n )\r\n continue;\r\n\r\n if (node.type !== \"return_statement\") continue;\r\n\r\n const expressions = node.namedChildren.find(\r\n (child) => child.type === \"expression_list\",\r\n );\r\n\r\n const value = expressions?.namedChildren[0];\r\n\r\n if (value?.type === \"function_call\")\r\n return factorySummaryFromCall(value, context, imports);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction sourceEffectInstances(\r\n context: RuleContext,\r\n imports: SourceBindings<SourceEffectModuleSummary>,\r\n): SourceBindings<EffectInstance> {\r\n const result: SourceBindings<EffectInstance> = new Map();\r\n\r\n for (const node of context.walk(context.root)) {\r\n if (\r\n node.type !== \"variable_declaration\" &&\r\n node.type !== \"assignment_statement\"\r\n )\r\n continue;\r\n\r\n if (\r\n node.type === \"assignment_statement\" &&\r\n node.parent?.type === \"variable_declaration\"\r\n )\r\n continue;\r\n\r\n const { names, expressions } = bindingParts(node);\r\n\r\n for (let index = 0; index < names.length; index += 1) {\r\n const expression = expressions[index] ?? expressions[0];\r\n let instance: EffectInstance | null = null;\r\n\r\n if (expression?.type === \"function_call\") {\r\n const directFactory = factorySummaryFromCall(\r\n expression,\r\n context,\r\n imports,\r\n );\r\n\r\n if (directFactory) {\r\n // An instance created at module scope persists across renders. A fresh\r\n // factory result created inside render is local to that render and\r\n // receiver-only mutation is not externally observable by itself.\r\n instance = {\r\n summary: directFactory,\r\n persistent: context.nearestFunction(node) === null,\r\n };\r\n } else if (\r\n context.resolveCallPath(context.getCallPath(expression) ?? \"\") ===\r\n \"React.useMemo\"\r\n ) {\r\n const callback = context.callArguments(expression)[0];\r\n\r\n if (callback?.type === \"function_definition\") {\r\n const memoizedFactory = returnedFactorySummary(\r\n callback,\r\n context,\r\n imports,\r\n );\r\n\r\n if (memoizedFactory)\r\n instance = { summary: memoizedFactory, persistent: true };\r\n }\r\n }\r\n } else if (expression?.type === \"identifier\") {\r\n instance = resolveSourceBinding(\r\n result,\r\n expression.text,\r\n expression,\r\n context,\r\n );\r\n }\r\n\r\n addSourceBinding(result, names[index], node, instance);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction sourceInferredEffectCall(\r\n call: SyntaxNode,\r\n context: RuleContext,\r\n imports: SourceBindings<SourceEffectModuleSummary>,\r\n instances: SourceBindings<EffectInstance>,\r\n): boolean {\r\n const path = context.getCallPath(call)?.replace(/\\s+/g, \"\") ?? \"\";\r\n\r\n if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(path)) {\r\n const direct = resolveSourceBinding(imports, path, call, context);\r\n\r\n if (direct?.effectfulExport) return true;\r\n }\r\n\r\n const member = path.match(\r\n /^([A-Za-z_][A-Za-z0-9_]*)[.:]([A-Za-z_][A-Za-z0-9_]*)$/,\r\n );\r\n\r\n if (!member) return false;\r\n\r\n const instance = resolveSourceBinding(instances, member[1], call, context);\r\n\r\n if (instance) {\r\n if (instance.summary.effectfulMembers.has(member[2])) return true;\r\n\r\n return (\r\n instance.persistent && instance.summary.mutatingMembers.has(member[2])\r\n );\r\n }\r\n\r\n const imported = resolveSourceBinding(imports, member[1], call, context);\r\n\r\n if (!imported) return false;\r\n\r\n // The imported module table is itself persistent project state, so a method\r\n // that mutates its receiver is observable even if it has no other effects.\r\n return (\r\n imported.effectfulMembers.has(member[2]) ||\r\n imported.mutatingMembers.has(member[2])\r\n );\r\n}\r\n\r\nconst RENDER_EFFECT_PATTERNS = [\r\n /^Instance\\.new$/,\r\n /tween[^:]*:(?:Create|Play)$/i,\r\n /:Connect$/,\r\n /:BindAction$/,\r\n /:BindActionAtPriority$/,\r\n /:BindActivate$/,\r\n /BindToRenderStep$/,\r\n /BindToSimulation$/,\r\n /:Destroy$/,\r\n /:unmount$/,\r\n];\r\n\r\nfunction hasNestedKnownRenderSideEffect(\r\n call: SyntaxNode,\r\n context: RuleContext,\r\n): boolean {\r\n for (const node of context.walk(call)) {\r\n if (node.startIndex === call.startIndex && node.endIndex === call.endIndex)\r\n continue;\r\n\r\n if (node.type !== \"function_call\") continue;\r\n\r\n const path = context.resolveCallPath(context.getCallPath(node) ?? \"\");\r\n\r\n if (path === \"task.spawn\" || path === \"task.defer\" || path === \"task.delay\")\r\n return true;\r\n\r\n if (\r\n knownYieldReason(path, node, context) ||\r\n RENDER_EFFECT_PATTERNS.some((pattern) => pattern.test(path))\r\n )\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nexport const noYieldInRender: RuleDefinition = {\r\n id: \"react-luau/no-yield-in-render\",\r\n category: \"Correctness\",\r\n severity: \"error\",\r\n description: \"React render functions must not yield.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const component = context.containingComponent(call);\r\n\r\n if (!component || !context.isDirectlyExecutedInFunction(call, component))\r\n continue;\r\n\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n const reason = knownYieldReason(path, call, context);\r\n\r\n if (!reason) continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: `${path} can yield during component render.`,\r\n help: `Move yielding work outside render, usually into an effect or an external data-loading boundary. The bundled Roblox yield metadata recognizes ${reason} as a yielding API.`,\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const noTaskSpawnInRender: RuleDefinition = {\r\n id: \"react-luau/no-task-spawn-in-render\",\r\n category: \"Correctness\",\r\n severity: \"error\",\r\n description: \"Do not schedule asynchronous work during render.\",\r\n\r\n guidance: {\r\n explanation:\r\n \"Work started during render can continue even if React abandons that render.\",\r\n\r\n help: \"Start the task from the event that requests it, or from an effect if it belongs to the mounted component. Cancel effect-owned work in cleanup.\",\r\n },\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const component = context.containingComponent(call);\r\n\r\n if (!component || !context.isDirectlyExecutedInFunction(call, component))\r\n continue;\r\n\r\n const path = context.getCallPath(call);\r\n\r\n if (\r\n path !== \"task.spawn\" &&\r\n path !== \"task.defer\" &&\r\n path !== \"task.delay\"\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n message: `${path} schedules work during component render.`,\r\n summary: `${path} schedules work during render.`,\r\n help: \"Move the scheduled work into an effect or the event that actually owns the side effect.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const noSideEffectsInRender: RuleDefinition = {\r\n id: \"react-luau/no-side-effects-in-render\",\r\n category: \"Correctness\",\r\n severity: \"error\",\r\n\r\n description:\r\n \"Do not create Instances, start tweens, subscribe, or perform other externally observable side effects during component render.\",\r\n\r\n guidance: {\r\n help: \"Move this work to an event handler or an effect. Clean up resources started by an effect.\",\r\n },\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n const effectImports = sourceEffectImports(context);\r\n const effectInstances = sourceEffectInstances(context, effectImports);\r\n\r\n for (const call of context.findCalls()) {\r\n const component = context.containingComponent(call);\r\n\r\n if (!component || !context.isDirectlyExecutedInFunction(call, component))\r\n continue;\r\n\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n const knownPattern = RENDER_EFFECT_PATTERNS.some((pattern) =>\r\n pattern.test(path),\r\n );\r\n\r\n let inferredFromSource = sourceInferredEffectCall(\r\n call,\r\n context,\r\n effectImports,\r\n effectInstances,\r\n );\r\n\r\n // Report the inner operation rather than duplicating it on an inferred wrapper.\r\n if (inferredFromSource && hasNestedKnownRenderSideEffect(call, context))\r\n inferredFromSource = false;\r\n\r\n if (!knownPattern && !inferredFromSource) continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n\r\n message:\r\n inferredFromSource && !knownPattern\r\n ? `${path} runs during render, and code it calls eventually changes state outside the current render.`\r\n : `${path} performs a side effect directly during component render.`,\r\n\r\n summary: `${path} has side effects during render.`,\r\n\r\n explanation:\r\n inferredFromSource && !knownPattern\r\n ? \"Doctor is not judging this call by its name. It followed the code behind the call and found a mutation that can affect existing state outside this render. That means the call can change the app even if React later abandons this render.\"\r\n : `${path} performs work outside React's render calculation.`,\r\n\r\n help:\r\n inferredFromSource && !knownPattern\r\n ? \"Move this call into an effect, event handler, or another committed lifecycle boundary so an abandoned render cannot still change application state.\"\r\n : \"Move imperative work into an effect or event handler with explicit ownership and cleanup. Use React.createElement for React-owned Instances. Destroy imperative Instances, cancel tweens, and disconnect subscriptions when their owner is cleaned up.\",\r\n\r\n fixPreview:\r\n inferredFromSource && !knownPattern\r\n ? {\r\n kind: \"pattern\" as const,\r\n before: call.text,\r\n after: `local function handleChange()\\n\\t${call.text}\\nend`,\r\n note: \"Connect this handler to the event that causes the change. Use an effect instead when a prop or state change should trigger it.\",\r\n }\r\n : undefined,\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
37
|
-
"import {\n moduleKeys,\n normalizeRequireTarget,\n resolveModuleReference,\n} from \"../module-resolution\";\n\nimport type { SyntaxNode } from \"../syntax\";\n\nimport type {\n ConditionalHookModeSummary,\n DiagnosticInput,\n FixPreview,\n FunctionInfo,\n RuleContext,\n RuleDefinition,\n} from \"../types\";\n\nimport { nodeKey } from \"../ast/walk\";\n\nimport {\n callNameNode,\n CONDITIONAL_TYPES,\n declarationNames,\n findAncestorBetween,\n isHookPath,\n isNestedInsideFunction,\n} from \"./helpers\";\n\ntype HookModeStability = \"stable\" | \"unknown\" | \"unstable\";\n\nfunction staticIterationImports(\n context: RuleContext,\n): Map<string, Set<string>> {\n const result = new Map<string, Set<string>>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match) continue;\n\n const summary = resolveModuleReference(\n normalizeRequireTarget(match[2]),\n context.project.staticIterationTables,\n );\n\n if (summary) result.set(match[1], summary);\n }\n\n return result;\n}\n\nfunction nonReactHookImports(context: RuleContext): Set<string> {\n const result = new Set<string>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match || !/^use[A-Z0-9_]/.test(match[1])) continue;\n\n const kind = resolveModuleReference(\n normalizeRequireTarget(match[2]),\n context.project.reactHookModules,\n );\n\n if (kind === false) result.add(match[1]);\n }\n\n return result;\n}\n\nfunction conditionalHookModeImports(\n context: RuleContext,\n): Map<string, ConditionalHookModeSummary> {\n const result = new Map<string, ConditionalHookModeSummary>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match) continue;\n\n const summary = resolveModuleReference(\n normalizeRequireTarget(match[2]),\n context.project.conditionalHookModes,\n );\n\n if (summary) result.set(match[1], summary);\n }\n\n return result;\n}\n\nfunction currentConditionalHookMode(\n context: RuleContext,\n): ConditionalHookModeSummary | null {\n for (const key of moduleKeys(context.relativePath)) {\n const summary = context.project.conditionalHookModes.get(key);\n\n if (summary) return summary;\n }\n\n return null;\n}\n\nfunction controlledParameterIndex(\n controlFlow: SyntaxNode,\n fn: FunctionInfo,\n summary: ConditionalHookModeSummary,\n): number | null {\n if (controlFlow.type !== \"if_statement\") return null;\n\n const header = (controlFlow.text.split(/\\bthen\\b/s, 1)[0] ?? \"\").trim();\n\n for (const [conditionName, index] of Object.entries(\n summary.conditionVariables,\n )) {\n const escaped = conditionName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n const patterns = [\n new RegExp(`^if\\\\s+${escaped}\\\\s*$`),\n new RegExp(`^if\\\\s+not\\\\s+${escaped}\\\\s*$`),\n new RegExp(`^if\\\\s+${escaped}\\\\s*(?:==|~=)\\\\s*(?:true|false|nil)\\\\s*$`),\n new RegExp(`^if\\\\s+(?:true|false|nil)\\\\s*(?:==|~=)\\\\s*${escaped}\\\\s*$`),\n ];\n\n if (patterns.some((pattern) => pattern.test(header))) return index;\n }\n\n // Keep a direct parameter fallback for older or externally constructed summaries.\n for (const index of summary.parameterIndexes) {\n const name = fn.parameters[index];\n\n if (!name) continue;\n\n const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n if (new RegExp(`^if\\\\s+(?:not\\\\s+)?${escaped}\\\\s*$`).test(header))\n return index;\n }\n\n return null;\n}\n\nfunction dynamicHookModeFixPreview(\n hookName: string,\n argumentText: string,\n): FixPreview {\n return {\n kind: \"pattern\",\n before: `local value = ${hookName}(${argumentText})`,\n after: `local value = ${hookName}(${argumentText}) -- keep the hook-topology mode stable for this instance`,\n note: \"A custom hook may choose different internal hooks only when the value controlling that choice stays stable for the lifetime of the component instance.\",\n };\n}\n\nfunction unwrapIteratorExpression(text: string): string {\n let current = text.trim();\n const wrapper = current.match(/^(?:pairs|ipairs)\\s*\\((.*)\\)$/s);\n\n if (wrapper) current = wrapper[1].trim();\n\n return current;\n}\n\nfunction declarationExpressions(node: SyntaxNode): SyntaxNode[] {\n if (node.type !== \"variable_declaration\") return [];\n\n const assignment = node.namedChildren.find(\n (child) => child.type === \"assignment_statement\",\n );\n\n const expressionList = assignment?.namedChildren.find(\n (child) => child.type === \"expression_list\",\n );\n\n return expressionList?.namedChildren ?? [];\n}\n\nfunction isEmptyTable(node: SyntaxNode | undefined): boolean {\n return Boolean(\n node?.type === \"table_constructor\" &&\n node.namedChildren.every((child) => child.type !== \"field\"),\n );\n}\n\nfunction tableConstructorHasStableArity(node: SyntaxNode): boolean {\n if (node.type !== \"table_constructor\") return false;\n\n const fields = node.namedChildren.filter((child) => child.type === \"field\");\n\n if (fields.length === 0) return true;\n\n // Luau varargs, and a function call in the final list field, can contribute a\n // render-varying number of array entries. `{...}` is the real-world Jecs case\n // that motivated this distinction.\n if (\n fields.some((field) =>\n [...field.namedChildren].some(\n (child) => child.type === \"vararg_expression\",\n ),\n )\n )\n return false;\n\n const last = fields.at(-1);\n\n return !last?.namedChildren.some((child) => child.type === \"function_call\");\n}\n\nfunction stableShapeVariablesByFunction(\n context: RuleContext,\n): Map<number, Set<string>> {\n const stable = new Map<number, Set<string>>();\n const functionsByName = new Map<string, FunctionInfo>();\n\n for (const fn of context.model.functions) {\n stable.set(nodeKey(fn.node), new Set<string>());\n\n if (fn.name && /^[A-Za-z_][A-Za-z0-9_]*$/.test(fn.name))\n functionsByName.set(fn.name, fn);\n }\n\n const namesFor = (fn: FunctionInfo): Set<string> => {\n const key = nodeKey(fn.node);\n const names = stable.get(key) ?? new Set<string>();\n stable.set(key, names);\n\n return names;\n };\n\n // A table constructed in the function has a fixed literal shape. More importantly for\n // React code, an empty-dependency useMemo explicitly captures one value for the entire\n // component lifetime. If that captured value is later iterated to create hooks, the\n // iteration source itself does not change between renders unless user code mutates it.\n for (const declaration of context.walk(context.root)) {\n if (declaration.type !== \"variable_declaration\") continue;\n\n const owner = context.nearestFunction(declaration);\n\n if (!owner) continue;\n\n const names = declarationNames(declaration);\n const expressions = declarationExpressions(declaration);\n\n for (let index = 0; index < names.length; index += 1) {\n const expression = expressions[index] ?? expressions[0];\n\n if (!expression) continue;\n\n if (\n expression.type === \"table_constructor\" &&\n tableConstructorHasStableArity(expression)\n ) {\n namesFor(owner).add(names[index]);\n continue;\n }\n\n if (expression.type !== \"function_call\") continue;\n\n const rawPath = context.getCallPath(expression);\n\n if (!rawPath || context.resolveCallPath(rawPath) !== \"React.useMemo\")\n continue;\n\n const args = context.callArguments(expression);\n\n if (isEmptyTable(args[1])) namesFor(owner).add(names[index]);\n }\n }\n\n const callsByLocalFunction = new Map<string, SyntaxNode[]>();\n\n for (const call of context.findCalls()) {\n const rawPath = context.getCallPath(call);\n\n if (!rawPath || !functionsByName.has(rawPath)) continue;\n\n const calls = callsByLocalFunction.get(rawPath) ?? [];\n calls.push(call);\n callsByLocalFunction.set(rawPath, calls);\n }\n\n const expressionIsStableShape = (\n expression: SyntaxNode | undefined,\n owner: FunctionInfo | null,\n ): boolean => {\n if (!expression) return false;\n\n if (expression.type === \"table_constructor\")\n return tableConstructorHasStableArity(expression);\n\n const text = expression.text.trim();\n\n if (!owner || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(text)) return false;\n\n return namesFor(owner).has(text);\n };\n\n let changed = true;\n\n while (changed) {\n changed = false;\n\n // Preserve stable-shape aliases such as `local copy = capturedDefaults`.\n for (const declaration of context.walk(context.root)) {\n if (declaration.type !== \"variable_declaration\") continue;\n\n const owner = context.nearestFunction(declaration);\n\n if (!owner) continue;\n\n const names = declarationNames(declaration);\n const expressions = declarationExpressions(declaration);\n\n for (let index = 0; index < names.length; index += 1) {\n const expression = expressions[index] ?? expressions[0];\n\n if (!expressionIsStableShape(expression, owner)) continue;\n\n const target = names[index];\n const ownerNames = namesFor(owner);\n\n if (!ownerNames.has(target)) {\n ownerNames.add(target);\n changed = true;\n }\n }\n }\n\n // Propagate the guarantee through local helpers only when every known call to that\n // helper supplies a stable-shape argument for the parameter. This is what makes a\n // pattern such as `getStateContainer(capturedDefaults)` safe without exempting all\n // parameter-driven loops.\n for (const [name, fn] of functionsByName) {\n const calls = callsByLocalFunction.get(name) ?? [];\n\n if (calls.length === 0) continue;\n\n for (let index = 0; index < fn.parameters.length; index += 1) {\n const allStable = calls.every((call) => {\n const caller = context.nearestFunction(call);\n\n return expressionIsStableShape(\n context.callArguments(call)[index],\n caller,\n );\n });\n\n if (!allStable) continue;\n\n const parameter = fn.parameters[index];\n\n if (!parameter) continue;\n\n const fnNames = namesFor(fn);\n\n if (!fnNames.has(parameter)) {\n fnNames.add(parameter);\n changed = true;\n }\n }\n }\n }\n\n return stable;\n}\n\nfunction moduleInvariantVariables(context: RuleContext): Set<string> {\n const declarations = new Map<string, SyntaxNode>();\n const reassigned = new Set<string>();\n\n for (const node of context.walk(context.root)) {\n if (\n node.type === \"variable_declaration\" &&\n !context.nearestFunction(node)\n ) {\n for (const name of declarationNames(node)) declarations.set(name, node);\n\n continue;\n }\n\n if (\n node.type !== \"assignment_statement\" ||\n node.parent?.type === \"variable_declaration\"\n )\n continue;\n\n const variableList = node.namedChildren.find(\n (child) => child.type === \"variable_list\",\n );\n\n for (const target of variableList?.namedChildren ?? []) {\n if (target.type === \"identifier\") reassigned.add(target.text);\n }\n }\n\n return new Set(\n [...declarations.keys()].filter((name) => !reassigned.has(name)),\n );\n}\n\nfunction staticModuleTables(context: RuleContext): Set<string> {\n const candidates = new Set<string>();\n const declarations = new Set<string>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\" || context.nearestFunction(node))\n continue;\n\n const names = declarationNames(node);\n const expressions = declarationExpressions(node);\n names.forEach((name, index) => {\n if (declarations.has(name)) {\n candidates.delete(name);\n return;\n }\n declarations.add(name);\n const expression = expressions[index];\n if (expression && tableConstructorHasStableArity(expression))\n candidates.add(name);\n });\n }\n\n // Only accept private literals whose uses cannot mutate or leak the table.\n // Aliases, writes, unknown calls, and shadowing conservatively invalidate it.\n for (const node of context.walk(context.root)) {\n if (node.type !== \"identifier\" || !candidates.has(node.text)) continue;\n const parent = node.parent;\n if (\n parent?.type === \"variable_list\" &&\n parent.parent?.parent?.type === \"variable_declaration\" &&\n !context.nearestFunction(node)\n ) continue;\n if (parent?.type === \"unary_expression\" && parent.text.trim().startsWith(\"#\"))\n continue;\n if (\n parent?.type === \"expression_list\" &&\n parent.parent?.type === \"for_generic_clause\"\n ) continue;\n if (parent?.type === \"arguments\" && parent.namedChildren.length === 1) {\n const call = parent.parent;\n const path = call && context.getCallPath(call);\n if (path === \"pairs\" || path === \"ipairs\") continue;\n }\n candidates.delete(node.text);\n }\n\n return candidates;\n}\n\nfunction simpleConditionRoot(controlFlow: SyntaxNode): string | null {\n if (\n controlFlow.type !== \"if_statement\" &&\n controlFlow.type !== \"if_expression\"\n )\n return null;\n\n const condition = controlFlow.namedChildren[0];\n\n if (!condition) return null;\n\n const text = condition.text.trim();\n\n const match = text.match(\n /^(?:not\\s+)?([A-Za-z_][A-Za-z0-9_]*)(?:\\s*(?:==|~=)\\s*(?:true|false|nil))?$/,\n );\n\n return match?.[1] ?? null;\n}\n\nfunction conditionIsProvablyInvariant(\n controlFlow: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n moduleInvariants: Set<string>,\n): boolean {\n const condition = controlFlow.namedChildren[0];\n\n if (!condition) return false;\n\n if ([\"true\", \"false\", \"nil\", \"number\", \"string\"].includes(condition.type))\n return true;\n\n const root = simpleConditionRoot(controlFlow);\n\n if (!root) return false;\n\n if (moduleInvariants.has(root)) return true;\n\n return Boolean(\n context.model.stableVariablesByFunction.get(nodeKey(fn.node))?.has(root),\n );\n}\n\nfunction branchHookSequence(\n branch: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n): string[] | null {\n const hooks: string[] = [];\n\n for (const node of context.walk(branch)) {\n if (node.type !== \"function_call\") continue;\n\n if (context.nearestFunction(node) !== fn) continue;\n\n const rawPath = context.getCallPath(node);\n\n if (!rawPath) continue;\n\n const path = context.resolveCallPath(rawPath);\n\n if (!isHookPath(path)) continue;\n\n // Nested control flow inside a branch needs its own stability proof, so do\n // not call the outer branches equivalent merely because their flattened\n // hook names happen to match.\n const nestedControl = findAncestorBetween(node, branch, (ancestor) =>\n CONDITIONAL_TYPES.has(ancestor.type),\n );\n\n if (nestedControl) return null;\n\n hooks.push(path);\n }\n\n return hooks;\n}\n\nfunction ifBranchesHaveEquivalentBuiltInTopology(\n controlFlow: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n): boolean {\n if (controlFlow.type !== \"if_statement\") return false;\n\n const thenBlock = controlFlow.namedChildren.find(\n (child) => child.type === \"block\",\n );\n\n const elseStatement = controlFlow.namedChildren.find(\n (child) => child.type === \"else_statement\",\n );\n\n const elseBlock = elseStatement?.namedChildren.find(\n (child) => child.type === \"block\",\n );\n\n if (!thenBlock || !elseBlock) return false;\n\n const thenHooks = branchHookSequence(thenBlock, fn, context);\n const elseHooks = branchHookSequence(elseBlock, fn, context);\n\n if (!thenHooks || !elseHooks || thenHooks.length !== elseHooks.length)\n return false;\n\n if (!thenHooks.every((path, index) => path === elseHooks[index]))\n return false;\n\n // Built-in React hooks have topology that is independent of their arguments.\n // For custom hooks, identical call names can still select different internal\n // hooks based on different arguments, so keep those conservative.\n return thenHooks.every((path) => path.startsWith(\"React.\"));\n}\n\nfunction stateModeStability(\n name: string,\n owner: FunctionInfo,\n context: RuleContext,\n): HookModeStability | null {\n const binding = context.model.stateBindings.find(\n (candidate) => candidate.owner === owner && candidate.valueName === name,\n );\n\n if (!binding || !owner.body) return null;\n\n const initializerText = binding.initializer?.text.trim() ?? \"nil\";\n\n const stableLiteral =\n /^(?:true|false|nil|-?\\d+(?:\\.\\d+)?|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')$/;\n\n let sawIndirectSetterReference = false;\n\n for (const node of context.walk(owner.body)) {\n if (\n node.type === \"function_call\" &&\n context.getCallPath(node) === binding.setterName\n ) {\n const argument = context.callArguments(node)[0];\n\n if (\n !argument ||\n !stableLiteral.test(initializerText) ||\n argument.text.trim() !== initializerText\n )\n return \"unstable\";\n\n continue;\n }\n\n if (node.type !== \"identifier\" || node.text !== binding.setterName)\n continue;\n\n if (\n node.startIndex >= binding.declaration.startIndex &&\n node.endIndex <= binding.declaration.endIndex\n )\n continue;\n\n if (node.parent?.type === \"function_call\") continue;\n\n sawIndirectSetterReference = true;\n }\n\n if (sawIndirectSetterReference) return \"unknown\";\n\n return \"stable\";\n}\n\nfunction localAliasExpression(\n name: string,\n owner: FunctionInfo,\n context: RuleContext,\n): SyntaxNode | null {\n if (!owner.body) return null;\n\n let result: SyntaxNode | null = null;\n\n for (const node of context.walk(owner.body)) {\n if (\n node.type !== \"variable_declaration\" ||\n context.nearestFunction(node) !== owner\n )\n continue;\n\n const names = declarationNames(node);\n const index = names.indexOf(name);\n\n if (index < 0) continue;\n\n const expressions = declarationExpressions(node);\n const expression = expressions[index] ?? expressions[0] ?? null;\n\n if (result) return null;\n\n result = expression;\n }\n\n return result;\n}\n\nfunction modeValueStability(\n node: SyntaxNode | undefined,\n owner: FunctionInfo,\n context: RuleContext,\n moduleInvariants: Set<string>,\n depth = 0,\n): HookModeStability {\n if (!node) return \"stable\";\n\n if (depth > 4) return \"unknown\";\n\n const text = node.text.trim();\n\n if ([\"true\", \"false\", \"nil\"].includes(text)) return \"stable\";\n\n if (\n [\"number\", \"string\", \"string_content\", \"function_definition\"].includes(\n node.type,\n )\n )\n return \"stable\";\n\n const root = text.match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\n\n if (!root) return \"unknown\";\n\n const stateStability = stateModeStability(root, owner, context);\n\n if (stateStability) return stateStability;\n\n if (moduleInvariants.has(root)) return \"stable\";\n\n if (\n context.model.stableVariablesByFunction.get(nodeKey(owner.node))?.has(root)\n )\n return \"stable\";\n\n if (text === root) {\n const alias = localAliasExpression(root, owner, context);\n\n if (alias && alias.text.trim() !== root)\n return modeValueStability(\n alias,\n owner,\n context,\n moduleInvariants,\n depth + 1,\n );\n }\n\n return \"unknown\";\n}\n\nfunction tableFieldValue(\n table: SyntaxNode | undefined,\n accessPath: string,\n): SyntaxNode | undefined {\n if (!table || accessPath === \"\") return table;\n\n if (table.type !== \"table_constructor\") return undefined;\n\n let current: SyntaxNode | undefined = table;\n\n for (const part of accessPath.split(\".\")) {\n if (!current || current.type !== \"table_constructor\") return undefined;\n\n const field: SyntaxNode | undefined = current.namedChildren.find(\n (child) => {\n if (child.type !== \"field\") return false;\n\n return (\n child.namedChildren[0]?.type === \"identifier\" &&\n child.namedChildren[0]?.text === part\n );\n },\n );\n\n if (!field) return undefined;\n\n current = field.namedChildren[1];\n }\n\n return current;\n}\n\nfunction controlledAccessPaths(\n summary: ConditionalHookModeSummary,\n parameterIndex: number,\n): string[] {\n const paths = new Set<string>();\n\n for (const [conditionName, index] of Object.entries(\n summary.conditionVariables,\n )) {\n if (index !== parameterIndex) continue;\n\n paths.add(summary.conditionAccessPaths?.[conditionName] ?? \"\");\n }\n\n if (paths.size === 0) paths.add(\"\");\n\n return [...paths];\n}\n\nfunction loopIterationIsProvablyStable(\n loop: SyntaxNode,\n imports: Map<string, Set<string>>,\n owner: FunctionInfo,\n stableShapes: Map<number, Set<string>>,\n moduleTables: Set<string>,\n): boolean {\n const numeric = loop.namedChildren.find(\n (child) => child.type === \"for_numeric_clause\",\n );\n\n if (numeric) {\n const text = numeric.text;\n\n const bounds = text.match(\n /^\\s*[A-Za-z_][A-Za-z0-9_]*\\s*=\\s*([^,]+)\\s*,\\s*([^,]+)(?:\\s*,\\s*([^,]+))?\\s*$/s,\n );\n\n if (\n bounds &&\n bounds\n .slice(1)\n .filter(Boolean)\n .every((value) => /^-?\\d+(?:\\.\\d+)?$/.test(value!.trim()))\n )\n return true;\n }\n\n const clause = loop.namedChildren.find(\n (child) => child.type === \"for_generic_clause\",\n );\n\n const match = clause?.text.match(/\\bin\\s+(.+)$/s);\n\n if (!match) return false;\n\n const expression = unwrapIteratorExpression(match[1]);\n\n const path = expression.match(\n /^([A-Za-z_][A-Za-z0-9_]*)(?:\\.([A-Za-z_][A-Za-z0-9_.]*))?$/,\n );\n\n if (!path) return false;\n\n if (!path[2] && stableShapes.get(nodeKey(owner.node))?.has(path[1]))\n return true;\n\n if (!path[2] && moduleTables.has(path[1])) return true;\n\n const fields = imports.get(path[1]);\n\n if (!fields) return false;\n\n const propertyPath = path[2] ?? \"\";\n\n return fields.has(propertyPath);\n}\n\nfunction functionParameterTypes(fn: FunctionInfo): Map<string, string> {\n if (!fn.body) return new Map();\n\n const headerLength = Math.max(0, fn.body.startIndex - fn.node.startIndex);\n const header = fn.node.text.slice(0, headerLength);\n const result = new Map<string, string>();\n\n for (const match of header.matchAll(\n /\\b([A-Za-z_][A-Za-z0-9_]*)\\s*:\\s*([^,\\n)]+)/g,\n )) {\n result.set(match[1], match[2].trim());\n }\n\n return result;\n}\n\nfunction isNonOptionalParameterType(typeText: string | undefined): boolean {\n if (!typeText) return false;\n\n return !typeText.includes(\"?\") && !/(?:^|[| ])nil(?:$|[| ])/i.test(typeText);\n}\n\nfunction impossibleNilGuardReturn(\n node: SyntaxNode,\n fn: FunctionInfo,\n parameterTypes: Map<string, string>,\n): boolean {\n let current = node.parent;\n\n while (current && current !== fn.node) {\n if (current.type === \"if_statement\") {\n const header = (current.text.split(/\\bthen\\b/s, 1)[0] ?? \"\").trim();\n\n const patterns = [\n /\\bif\\s+not\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*$/,\n /\\bif\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*==\\s*nil\\s*$/,\n /\\bif\\s+nil\\s*==\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*$/,\n ];\n\n for (const pattern of patterns) {\n const match = header.match(pattern);\n\n if (match && isNonOptionalParameterType(parameterTypes.get(match[1])))\n return true;\n }\n\n return false;\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\nfunction reachableReturnsBefore(\n call: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n cache: Map<number, SyntaxNode[]>,\n): SyntaxNode[] {\n if (!fn.body) return [];\n\n const key = nodeKey(fn.node);\n let returns = cache.get(key);\n\n if (!returns) {\n const parameterTypes = functionParameterTypes(fn);\n\n returns = [...context.walk(fn.body)].filter(\n (node) =>\n node.type === \"return_statement\" &&\n !isNestedInsideFunction(node, fn.node) &&\n !impossibleNilGuardReturn(node, fn, parameterTypes),\n );\n\n cache.set(key, returns);\n }\n\n return returns.filter((node) => node.endIndex <= call.startIndex);\n}\n\nfunction returnIsControlledByStableTopologyMode(\n node: SyntaxNode,\n fn: FunctionInfo,\n summary: ConditionalHookModeSummary | null,\n context: RuleContext,\n moduleInvariants: Set<string>,\n): boolean {\n let current = node.parent;\n\n while (current && current !== fn.node) {\n if (current.type === \"if_statement\" || current.type === \"if_expression\") {\n if (summary && controlledParameterIndex(current, fn, summary) !== null)\n return true;\n\n if (conditionIsProvablyInvariant(current, fn, context, moduleInvariants))\n return true;\n\n return false;\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\nfunction conditionalFixPreview(kind: string, hookName: string): FixPreview {\n if (hookName === \"React.useEffect\" && kind === \"if statement\") {\n return {\n kind: \"pattern\",\n before: `if enabled then\\n\\tReact.useEffect(function()\\n\\t\\tperformWork()\\n\\tend, {})\\nend`,\n after: `React.useEffect(function()\\n\\tif enabled then\\n\\t\\tperformWork()\\n\\tend\\nend, { enabled })`,\n note: \"Call the hook every render and put the condition inside its callback.\",\n };\n }\n\n if (kind === \"for statement\") {\n return {\n kind: \"pattern\",\n before: `for _, item in items do\\n\\tlocal value = ${hookName}(item)\\nend`,\n after: `local function Item(props)\\n\\tlocal value = ${hookName}(props.item)\\n\\treturn renderItem(value)\\nend\\n\\nfor _, item in items do\\n\\tchildren[item.id] = React.createElement(Item, {\\n\\t\\titem = item,\\n\\t})\\nend`,\n note: \"When collection size can change, move the hook into a child component so each component instance owns a fixed hook sequence.\",\n };\n }\n\n if (kind === \"while statement\" || kind === \"repeat statement\") {\n return {\n kind: \"pattern\",\n before: `while condition do\\n\\tlocal value = ${hookName}()\\nend`,\n after: `local value = ${hookName}()\\n\\nwhile condition do\\n\\t-- use value without creating another hook call\\nend`,\n note: \"Hook count must not depend on how many times a runtime loop executes.\",\n };\n }\n\n return {\n kind: \"pattern\",\n before: `if enabled then\\n\\tlocal value = ${hookName}()\\nend`,\n after: `local value = ${hookName}()\\n\\nif enabled then\\n\\t-- use value here\\nend`,\n note: \"Keep the hook call unconditional, then branch on its result.\",\n };\n}\n\nfunction earlyReturnFixPreview(hookName: string): FixPreview {\n return {\n kind: \"pattern\",\n before: `if not ready then\\n\\treturn nil\\nend\\n\\nlocal value = ${hookName}()`,\n after: `local value = ${hookName}()\\n\\nif not ready then\\n\\treturn nil\\nend`,\n note: \"Call hooks before any reachable early return so every render executes the same hook sequence.\",\n };\n}\n\nexport const rulesOfHooks: RuleDefinition = {\n id: \"react-luau/rules-of-hooks\",\n category: \"Hooks\",\n severity: \"error\",\n\n description:\n \"Hooks must run in the same order on every render of a React component or custom hook.\",\n\n guidance: {\n summary: \"Hook calls must stay in the same order between renders.\",\n help: \"Call hooks at the top level of a component or custom hook, before conditional returns.\",\n },\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n if (!context.model.isReactFile) return diagnostics;\n\n const staticImports = staticIterationImports(context);\n const stableShapes = stableShapeVariablesByFunction(context);\n const moduleTables = staticModuleTables(context);\n const moduleInvariants = moduleInvariantVariables(context);\n const modeImports = conditionalHookModeImports(context);\n const ignoredHookImports = nonReactHookImports(context);\n const currentModeSummary = currentConditionalHookMode(context);\n const reachableReturns = new Map<number, SyntaxNode[]>();\n\n for (const call of context.findCalls()) {\n const rawPath = context.getCallPath(call);\n\n if (!rawPath) continue;\n\n if (ignoredHookImports.has(rawPath)) continue;\n\n const path = context.resolveCallPath(rawPath);\n\n if (!isHookPath(path)) continue;\n\n const fn = context.nearestFunction(call);\n\n if (!fn || (!fn.isComponent && !fn.isHook)) {\n diagnostics.push({\n node: callNameNode(call),\n message: `Hook ${path} is called outside a React component or custom hook.`,\n help: \"Move the hook into a component or a custom hook whose name starts with use.\",\n\n fixPreview: {\n kind: \"pattern\",\n before: `local value = ${path}()\\n\\nlocal function helper()\\n\\treturn value\\nend`,\n after: `local function useHelper()\\n\\tlocal value = ${path}()\\n\\treturn value\\nend`,\n note: \"Hooks need a React-owned component or custom-hook call stack.\",\n },\n });\n\n continue;\n }\n\n const importedMode = modeImports.get(rawPath);\n\n if (importedMode) {\n const args = context.callArguments(call);\n\n const unstableControls = importedMode.parameterIndexes.flatMap(\n (index) =>\n controlledAccessPaths(importedMode, index)\n .map((accessPath) => {\n const argument = args[index];\n const value = tableFieldValue(argument, accessPath);\n\n const stability =\n accessPath !== \"\"\n ? argument?.type === \"table_constructor\"\n ? value\n ? modeValueStability(\n value,\n fn,\n context,\n moduleInvariants,\n )\n : \"stable\"\n : \"unknown\"\n : modeValueStability(\n argument,\n fn,\n context,\n moduleInvariants,\n );\n\n return { index, accessPath, argument, value, stability };\n })\n .filter((control) => control.stability === \"unstable\"),\n );\n\n if (unstableControls.length > 0) {\n const first = unstableControls[0];\n const firstIndex = first.index;\n const argument = first.argument;\n\n const parameterOffset =\n importedMode.parameterIndexes.indexOf(firstIndex);\n\n const baseParameterName =\n importedMode.parameterNames[parameterOffset] ??\n `argument ${firstIndex + 1}`;\n\n const parameterName = first.accessPath\n ? `${baseParameterName}.${first.accessPath}`\n : baseParameterName;\n\n const argumentText =\n first.value?.text.trim() || argument?.text.trim() || \"<omitted>\";\n\n diagnostics.push({\n node: first.value ?? argument ?? callNameNode(call),\n\n highlights: unstableControls\n .map((control) => control.value ?? control.argument)\n .filter((node): node is SyntaxNode => Boolean(node)),\n\n message: `Hook ${rawPath} receives hook-topology mode ${parameterName} from ${argumentText}, which is updated between renders and can make the custom hook execute a different hook sequence.`,\n help: `Keep ${parameterName} stable for this hook instance, or refactor ${rawPath} so it always calls the same hooks regardless of that mode.`,\n fixPreview: dynamicHookModeFixPreview(rawPath, argumentText),\n });\n }\n }\n\n const controlFlow = findAncestorBetween(call, fn.node, (node) =>\n CONDITIONAL_TYPES.has(node.type),\n );\n\n if (controlFlow) {\n if (\n currentModeSummary &&\n controlledParameterIndex(controlFlow, fn, currentModeSummary) !== null\n )\n continue;\n\n if (\n conditionIsProvablyInvariant(\n controlFlow,\n fn,\n context,\n moduleInvariants,\n )\n )\n continue;\n\n if (ifBranchesHaveEquivalentBuiltInTopology(controlFlow, fn, context))\n continue;\n\n if (\n controlFlow.type === \"for_statement\" &&\n loopIterationIsProvablyStable(\n controlFlow,\n staticImports,\n fn,\n stableShapes,\n moduleTables,\n )\n )\n continue;\n\n const kind = controlFlow.type.replaceAll(\"_\", \" \");\n\n const loopLike =\n controlFlow.type === \"for_statement\" ||\n controlFlow.type === \"while_statement\" ||\n controlFlow.type === \"repeat_statement\";\n\n diagnostics.push({\n node: callNameNode(call),\n\n message: loopLike\n ? `Hook ${path} is called inside ${kind} whose size or iteration order may change between renders. If that happens, React will see a different hook sequence.`\n : `Hook ${path} is called inside ${kind}, so the hook may be skipped on some renders.`,\n\n summary: loopLike\n ? `${path} may run a different number of times between renders.`\n : `${path} may be skipped on some renders.`,\n\n explanation: loopLike\n ? `This ${kind} may change how many times ${path} is called.`\n : `This ${kind} can skip ${path} on some renders.`,\n\n help: loopLike\n ? \"Keep hook count independent of runtime collection size or loop iterations. A common fix is to render a child component per item and call the hook inside that child.\"\n : \"Call the hook unconditionally at the top level, then branch on the returned value.\",\n\n fixPreview: conditionalFixPreview(kind, path),\n });\n\n continue;\n }\n\n const earlierReturns = reachableReturnsBefore(\n call,\n fn,\n context,\n reachableReturns,\n );\n\n if (\n earlierReturns.length > 0 &&\n !earlierReturns.every((node) =>\n returnIsControlledByStableTopologyMode(\n node,\n fn,\n currentModeSummary,\n context,\n moduleInvariants,\n ),\n )\n ) {\n diagnostics.push({\n node: callNameNode(call),\n message: `Hook ${path} may run after an earlier reachable return, so some renders can execute fewer hooks.`,\n help: \"Move the hook before reachable early returns so hook order cannot change between renders.\",\n fixPreview: earlyReturnFixPreview(path),\n });\n }\n }\n\n return diagnostics;\n },\n};\n",
|
|
39
|
+
"import {\n moduleKeys,\n normalizeRequireTarget,\n resolveModuleReference,\n} from \"../module-resolution\";\n\nimport type { SyntaxNode } from \"../syntax\";\n\nimport type {\n ConditionalHookModeSummary,\n DiagnosticInput,\n FixPreview,\n FunctionInfo,\n RuleContext,\n RuleDefinition,\n} from \"../types\";\n\nimport { nodeKey } from \"../ast/walk\";\nimport { reactApiPath, resolveLocalFunction, unwrapExpression } from \"../ast/local-values\";\n\nimport {\n callNameNode,\n CONDITIONAL_TYPES,\n declarationNames,\n findAncestorBetween,\n isBindingShadowedBetween,\n isHookPath,\n isNameShadowedBetween,\n isNestedInsideFunction,\n} from \"./helpers\";\n\ntype HookModeStability = \"stable\" | \"unknown\" | \"unstable\";\n\nfunction staticIterationImports(\n context: RuleContext,\n): Map<string, Set<string>> {\n const result = new Map<string, Set<string>>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match) continue;\n\n const summary = resolveModuleReference(\n normalizeRequireTarget(match[2]),\n context.project.staticIterationTables,\n );\n\n if (summary) result.set(match[1], summary);\n }\n\n return result;\n}\n\nfunction nonReactHookImports(context: RuleContext): Set<string> {\n const result = new Set<string>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match || !/^use[A-Z0-9_]/.test(match[1])) continue;\n\n const kind = resolveModuleReference(\n normalizeRequireTarget(match[2]),\n context.project.reactHookModules,\n );\n\n if (kind === false) result.add(match[1]);\n }\n\n return result;\n}\n\nfunction conditionalHookModeImports(\n context: RuleContext,\n): Map<string, ConditionalHookModeSummary> {\n const result = new Map<string, ConditionalHookModeSummary>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\") continue;\n\n const match = node.text.match(\n /^\\s*local\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*=\\s*require\\s*\\((.*?)\\)\\s*$/s,\n );\n\n if (!match) continue;\n\n const summary = resolveModuleReference(\n normalizeRequireTarget(match[2]),\n context.project.conditionalHookModes,\n );\n\n if (summary) result.set(match[1], summary);\n }\n\n return result;\n}\n\nfunction currentConditionalHookMode(\n context: RuleContext,\n): ConditionalHookModeSummary | null {\n for (const key of moduleKeys(context.relativePath)) {\n const summary = context.project.conditionalHookModes.get(key);\n\n if (summary) return summary;\n }\n\n return null;\n}\n\nfunction controlledParameterIndex(\n controlFlow: SyntaxNode,\n fn: FunctionInfo,\n summary: ConditionalHookModeSummary,\n node: SyntaxNode,\n): number | null {\n if (controlFlow.type !== \"if_statement\") return null;\n\n const conditions = guardConditions(controlFlow, node);\n if (conditions.length === 0) return null;\n\n const variables = { ...summary.conditionVariables };\n // Keep a direct parameter fallback for older or externally constructed summaries\n for (const index of summary.parameterIndexes) {\n const name = fn.parameters[index];\n if (name) variables[name] ??= index;\n }\n\n const indexes = conditions.map((condition) => {\n for (const [name, index] of Object.entries(variables)) {\n const escaped = name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const patterns = [\n new RegExp(`^(?:not\\\\s+)?${escaped}\\\\s*$`),\n new RegExp(`^${escaped}\\\\s*(?:==|~=)\\\\s*(?:true|false|nil)\\\\s*$`),\n new RegExp(`^(?:true|false|nil)\\\\s*(?:==|~=)\\\\s*${escaped}\\\\s*$`),\n ];\n if (patterns.some((pattern) => pattern.test(condition.text.trim())))\n return index;\n }\n return null;\n });\n\n return indexes.every((index) => index !== null) ? indexes[0] : null;\n}\n\nfunction dynamicHookModeFixPreview(\n hookName: string,\n argumentText: string,\n): FixPreview {\n return {\n kind: \"pattern\",\n before: `local value = ${hookName}(${argumentText})`,\n after: `local value = ${hookName}(${argumentText}) -- keep the hook-topology mode stable for this instance`,\n note: \"A custom hook may choose different internal hooks only when the value controlling that choice stays stable for the lifetime of the component instance.\",\n };\n}\n\nfunction unwrapIteratorExpression(text: string): string {\n let current = text.trim();\n const wrapper = current.match(/^(?:pairs|ipairs)\\s*\\((.*)\\)$/s);\n\n if (wrapper) current = wrapper[1].trim();\n\n return current;\n}\n\nfunction declarationExpressions(node: SyntaxNode): SyntaxNode[] {\n if (node.type !== \"variable_declaration\") return [];\n\n const assignment = node.namedChildren.find(\n (child) => child.type === \"assignment_statement\",\n );\n\n const expressionList = assignment?.namedChildren.find(\n (child) => child.type === \"expression_list\",\n );\n\n return expressionList?.namedChildren ?? [];\n}\n\nfunction isEmptyTable(node: SyntaxNode | undefined): boolean {\n return Boolean(\n node?.type === \"table_constructor\" &&\n node.namedChildren.every((child) => child.type !== \"field\"),\n );\n}\n\nfunction tableConstructorHasStableArity(node: SyntaxNode): boolean {\n if (node.type !== \"table_constructor\") return false;\n\n const fields = node.namedChildren.filter((child) => child.type === \"field\");\n\n if (fields.length === 0) return true;\n\n // Luau varargs, and a function call in the final list field, can contribute a\n // render-varying number of array entries. `{...}` is the real-world Jecs case\n // that motivated this distinction.\n if (\n fields.some((field) =>\n [...field.namedChildren].some(\n (child) => child.type === \"vararg_expression\",\n ),\n )\n )\n return false;\n\n const last = fields.at(-1);\n\n return !last?.namedChildren.some((child) => child.type === \"function_call\");\n}\n\nfunction stableShapeVariablesByFunction(\n context: RuleContext,\n): Map<number, Set<string>> {\n const stable = new Map<number, Set<string>>();\n const functionsByName = new Map<string, FunctionInfo>();\n\n for (const fn of context.model.functions) {\n stable.set(nodeKey(fn.node), new Set<string>());\n\n if (fn.name && /^[A-Za-z_][A-Za-z0-9_]*$/.test(fn.name))\n functionsByName.set(fn.name, fn);\n }\n\n const namesFor = (fn: FunctionInfo): Set<string> => {\n const key = nodeKey(fn.node);\n const names = stable.get(key) ?? new Set<string>();\n stable.set(key, names);\n\n return names;\n };\n\n // A table constructed in the function has a fixed literal shape. More importantly for\n // React code, an empty-dependency useMemo explicitly captures one value for the entire\n // component lifetime. If that captured value is later iterated to create hooks, the\n // iteration source itself does not change between renders unless user code mutates it.\n for (const declaration of context.walk(context.root)) {\n if (declaration.type !== \"variable_declaration\") continue;\n\n const owner = context.nearestFunction(declaration);\n\n if (!owner) continue;\n\n const names = declarationNames(declaration);\n const expressions = declarationExpressions(declaration);\n\n for (let index = 0; index < names.length; index += 1) {\n const expression = expressions[index] ?? expressions[0];\n\n if (!expression) continue;\n\n if (\n expression.type === \"table_constructor\" &&\n tableConstructorHasStableArity(expression)\n ) {\n namesFor(owner).add(names[index]);\n continue;\n }\n\n if (expression.type !== \"function_call\") continue;\n\n const rawPath = context.getCallPath(expression);\n\n if (!rawPath || context.resolveCallPath(rawPath) !== \"React.useMemo\")\n continue;\n\n const args = context.callArguments(expression);\n\n if (isEmptyTable(args[1])) namesFor(owner).add(names[index]);\n }\n }\n\n const callsByLocalFunction = new Map<string, SyntaxNode[]>();\n\n for (const call of context.findCalls()) {\n const rawPath = context.getCallPath(call);\n\n if (!rawPath || !functionsByName.has(rawPath)) continue;\n\n const calls = callsByLocalFunction.get(rawPath) ?? [];\n calls.push(call);\n callsByLocalFunction.set(rawPath, calls);\n }\n\n const expressionIsStableShape = (\n expression: SyntaxNode | undefined,\n owner: FunctionInfo | null,\n ): boolean => {\n if (!expression) return false;\n\n if (expression.type === \"table_constructor\")\n return tableConstructorHasStableArity(expression);\n\n const text = expression.text.trim();\n\n if (!owner || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(text)) return false;\n\n return namesFor(owner).has(text);\n };\n\n let changed = true;\n\n while (changed) {\n changed = false;\n\n // Preserve stable-shape aliases such as `local copy = capturedDefaults`.\n for (const declaration of context.walk(context.root)) {\n if (declaration.type !== \"variable_declaration\") continue;\n\n const owner = context.nearestFunction(declaration);\n\n if (!owner) continue;\n\n const names = declarationNames(declaration);\n const expressions = declarationExpressions(declaration);\n\n for (let index = 0; index < names.length; index += 1) {\n const expression = expressions[index] ?? expressions[0];\n\n if (!expressionIsStableShape(expression, owner)) continue;\n\n const target = names[index];\n const ownerNames = namesFor(owner);\n\n if (!ownerNames.has(target)) {\n ownerNames.add(target);\n changed = true;\n }\n }\n }\n\n // Propagate the guarantee through local helpers only when every known call to that\n // helper supplies a stable-shape argument for the parameter. This is what makes a\n // pattern such as `getStateContainer(capturedDefaults)` safe without exempting all\n // parameter-driven loops.\n for (const [name, fn] of functionsByName) {\n const calls = callsByLocalFunction.get(name) ?? [];\n\n if (calls.length === 0) continue;\n\n for (let index = 0; index < fn.parameters.length; index += 1) {\n const allStable = calls.every((call) => {\n const caller = context.nearestFunction(call);\n\n return expressionIsStableShape(\n context.callArguments(call)[index],\n caller,\n );\n });\n\n if (!allStable) continue;\n\n const parameter = fn.parameters[index];\n\n if (!parameter) continue;\n\n const fnNames = namesFor(fn);\n\n if (!fnNames.has(parameter)) {\n fnNames.add(parameter);\n changed = true;\n }\n }\n }\n }\n\n return stable;\n}\n\nfunction moduleInvariantVariables(context: RuleContext): Set<string> {\n const declarations = new Map<string, SyntaxNode>();\n const reassigned = new Set<string>();\n\n for (const node of context.walk(context.root)) {\n if (\n node.type === \"variable_declaration\" &&\n !context.nearestFunction(node)\n ) {\n for (const name of declarationNames(node)) declarations.set(name, node);\n\n continue;\n }\n\n if (\n node.type !== \"assignment_statement\" ||\n node.parent?.type === \"variable_declaration\"\n )\n continue;\n\n const variableList = node.namedChildren.find(\n (child) => child.type === \"variable_list\",\n );\n\n for (const target of variableList?.namedChildren ?? []) {\n if (target.type === \"identifier\") reassigned.add(target.text);\n }\n }\n\n return new Set(\n [...declarations.keys()].filter((name) => !reassigned.has(name)),\n );\n}\n\nfunction staticModuleTables(context: RuleContext): Set<string> {\n const candidates = new Set<string>();\n const declarations = new Set<string>();\n\n for (const node of context.walk(context.root)) {\n if (node.type !== \"variable_declaration\" || context.nearestFunction(node))\n continue;\n\n const names = declarationNames(node);\n const expressions = declarationExpressions(node);\n names.forEach((name, index) => {\n if (declarations.has(name)) {\n candidates.delete(name);\n return;\n }\n declarations.add(name);\n const expression = expressions[index];\n if (expression && tableConstructorHasStableArity(expression))\n candidates.add(name);\n });\n }\n\n // Only accept private literals whose uses cannot mutate or leak the table.\n // Aliases, writes, unknown calls, and shadowing conservatively invalidate it.\n for (const node of context.walk(context.root)) {\n if (node.type !== \"identifier\" || !candidates.has(node.text)) continue;\n const parent = node.parent;\n if (\n parent?.type === \"variable_list\" &&\n parent.parent?.parent?.type === \"variable_declaration\" &&\n !context.nearestFunction(node)\n ) continue;\n if (parent?.type === \"unary_expression\" && parent.text.trim().startsWith(\"#\"))\n continue;\n if (\n parent?.type === \"expression_list\" &&\n parent.parent?.type === \"for_generic_clause\"\n ) continue;\n if (parent?.type === \"arguments\" && parent.namedChildren.length === 1) {\n const call = parent.parent;\n const path = call && context.getCallPath(call);\n if (path === \"pairs\" || path === \"ipairs\") continue;\n }\n candidates.delete(node.text);\n }\n\n return candidates;\n}\n\nfunction containsNode(container: SyntaxNode, node: SyntaxNode): boolean {\n return (\n node.startIndex >= container.startIndex &&\n node.endIndex <= container.endIndex\n );\n}\n\nfunction branchContaining(\n controlFlow: SyntaxNode,\n node: SyntaxNode,\n): SyntaxNode | null {\n return controlFlow.namedChildren.find((child) => containsNode(child, node)) ?? null;\n}\n\nfunction guardConditions(controlFlow: SyntaxNode, node: SyntaxNode): SyntaxNode[] {\n const condition = controlFlow.namedChildren[0];\n if (!condition) return [];\n\n if (controlFlow.type !== \"if_statement\" && controlFlow.type !== \"if_expression\")\n return [condition];\n\n if (containsNode(condition, node)) return [];\n\n const conditions = [condition];\n for (const clause of controlFlow.namedChildren.slice(1)) {\n if (clause.startIndex > node.startIndex) break;\n if (clause.type !== \"elseif_statement\" && clause.type !== \"elseif_clause\")\n continue;\n const clauseCondition = clause.namedChildren[0];\n if (clauseCondition && !containsNode(clauseCondition, node))\n conditions.push(clauseCondition);\n }\n return conditions;\n}\n\nfunction conditionallyContains(controlFlow: SyntaxNode, node: SyntaxNode): boolean {\n if (\n controlFlow.type === \"if_statement\" ||\n controlFlow.type === \"if_expression\"\n )\n return guardConditions(controlFlow, node).length > 0;\n\n if (controlFlow.type === \"for_statement\")\n return controlFlow.namedChildren.some(\n (child) => child.type === \"block\" && containsNode(child, node),\n );\n\n if (CONDITIONAL_TYPES.has(controlFlow.type)) return true;\n\n if (\n controlFlow.type !== \"binary_expression\" ||\n !controlFlow.children.some(\n (child) => child.type === \"and\" || child.type === \"or\",\n )\n )\n return false;\n\n const right =\n controlFlow.childForFieldName(\"right\") ?? controlFlow.namedChildren[1];\n\n return Boolean(right && containsNode(right, node));\n}\n\nfunction simpleConditionRoot(condition: SyntaxNode): string | null {\n const text = condition.text.trim();\n\n const match = text.match(\n /^(?:not\\s+)?([A-Za-z_][A-Za-z0-9_]*)(?:\\s*(?:==|~=)\\s*(?:true|false|nil))?$/,\n );\n\n return match?.[1] ?? null;\n}\n\nconst unstableLocalNamesCache = new WeakMap<FunctionInfo, Set<string>>();\n\nfunction unstableLocalNames(fn: FunctionInfo, context: RuleContext): Set<string> {\n const cached = unstableLocalNamesCache.get(fn);\n if (cached) return cached;\n\n // The model stores stability by name, so redeclarations and writes invalidate that proof\n const declared = new Set<string>();\n const unstable = new Set<string>();\n for (const node of context.walk(fn.node)) {\n if (\n node.type === \"variable_declaration\" &&\n context.nearestFunction(node) === fn\n ) {\n for (const name of declarationNames(node)) {\n if (declared.has(name)) unstable.add(name);\n declared.add(name);\n }\n }\n if (\n node.type !== \"assignment_statement\" ||\n node.parent?.type === \"variable_declaration\"\n )\n continue;\n const variables = node.namedChildren.find(\n (child) => child.type === \"variable_list\",\n );\n for (const target of variables?.namedChildren ?? []) {\n if (target.type === \"identifier\") unstable.add(target.text);\n }\n }\n unstableLocalNamesCache.set(fn, unstable);\n return unstable;\n}\n\nfunction moduleNameIsUnshadowed(\n name: string,\n node: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n): boolean {\n let owner: FunctionInfo | null = fn;\n while (owner) {\n if (\n owner.parameters.includes(name) ||\n isBindingShadowedBetween(node, owner, name)\n )\n return false;\n owner = context.nearestFunction(owner.node);\n }\n return true;\n}\n\nfunction conditionIsProvablyInvariant(\n controlFlow: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n moduleInvariants: Set<string>,\n node: SyntaxNode = controlFlow,\n): boolean {\n if (![\"if_statement\", \"if_expression\", \"binary_expression\"].includes(controlFlow.type))\n return false;\n\n const conditions = guardConditions(controlFlow, node);\n if (conditions.length === 0) return false;\n\n return conditions.every((condition) => {\n if ([\"true\", \"false\", \"nil\", \"number\", \"string\"].includes(condition.type))\n return true;\n\n const root = simpleConditionRoot(condition);\n\n if (!root) return false;\n\n if (moduleInvariants.has(root) && moduleNameIsUnshadowed(root, condition, fn, context))\n return true;\n\n if (isNameShadowedBetween(condition, fn, root)) return false;\n if (unstableLocalNames(fn, context).has(root)) return false;\n\n return Boolean(\n context.model.stableVariablesByFunction.get(nodeKey(fn.node))?.has(root),\n );\n });\n}\n\nfunction branchHookSequence(\n branch: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n): string[] | null {\n const hooks: string[] = [];\n\n for (const node of context.walk(branch)) {\n if (node.type !== \"function_call\") continue;\n\n if (context.nearestFunction(node) !== fn) continue;\n\n const rawPath = context.getCallPath(node);\n\n if (!rawPath) continue;\n\n const path = context.resolveCallPath(rawPath);\n\n if (!isHookPath(path)) continue;\n\n // Nested control flow inside a branch needs its own stability proof, so do\n // not call the outer branches equivalent merely because their flattened\n // hook names happen to match.\n const nestedControl = node.id === branch.id\n ? null\n : findAncestorBetween(node, branch, (ancestor) =>\n conditionallyContains(ancestor, node),\n );\n\n if (nestedControl || conditionallyContains(branch, node)) return null;\n\n hooks.push(path);\n }\n\n return hooks;\n}\n\nfunction ifBranchesHaveEquivalentBuiltInTopology(\n controlFlow: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n): boolean {\n const isStatement = controlFlow.type === \"if_statement\";\n if (!isStatement && controlFlow.type !== \"if_expression\")\n return false;\n\n const firstBranch = isStatement\n ? controlFlow.namedChildren.find((child) => child.type === \"block\")\n : controlFlow.namedChildren[1];\n const elseClause = controlFlow.namedChildren.find(\n (child) => child.type === \"else_statement\" || child.type === \"else_clause\",\n );\n const lastBranch = isStatement\n ? elseClause?.namedChildren.find((child) => child.type === \"block\")\n : elseClause?.namedChildren[0];\n if (!firstBranch || !lastBranch) return false;\n\n const branches = [firstBranch];\n for (const clause of controlFlow.namedChildren) {\n if (clause.type !== \"elseif_statement\" && clause.type !== \"elseif_clause\")\n continue;\n const condition = clause.namedChildren[0];\n if (!condition) return false;\n const conditionHooks = branchHookSequence(condition, fn, context);\n if (!conditionHooks || conditionHooks.length > 0) return false;\n const branch = isStatement\n ? clause.namedChildren.find((child) => child.type === \"block\")\n : clause.namedChildren[1];\n if (!branch) return false;\n branches.push(branch);\n }\n branches.push(lastBranch);\n\n const sequences = branches.map((branch) =>\n branchHookSequence(branch, fn, context),\n );\n const first = sequences[0];\n if (!first) return false;\n\n if (\n !sequences.every((sequence) =>\n sequence &&\n sequence.length === first.length &&\n sequence.every((path, index) => path === first[index]),\n )\n )\n return false;\n\n // Built-in React hooks have topology that is independent of their arguments.\n // For custom hooks, identical call names can still select different internal\n // hooks based on different arguments, so keep those conservative.\n return first.every((path) => path.startsWith(\"React.\"));\n}\n\nfunction stateModeStability(\n name: string,\n owner: FunctionInfo,\n context: RuleContext,\n): HookModeStability | null {\n const binding = context.model.stateBindings.find(\n (candidate) => candidate.owner === owner && candidate.valueName === name,\n );\n\n if (!binding || !owner.body) return null;\n\n const initializerText = binding.initializer?.text.trim() ?? \"nil\";\n\n const stableLiteral =\n /^(?:true|false|nil|-?\\d+(?:\\.\\d+)?|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')$/;\n\n let sawIndirectSetterReference = false;\n\n for (const node of context.walk(owner.body)) {\n if (\n node.type === \"function_call\" &&\n context.getCallPath(node) === binding.setterName\n ) {\n const argument = context.callArguments(node)[0];\n\n if (\n !argument ||\n !stableLiteral.test(initializerText) ||\n argument.text.trim() !== initializerText\n )\n return \"unstable\";\n\n continue;\n }\n\n if (node.type !== \"identifier\" || node.text !== binding.setterName)\n continue;\n\n if (\n node.startIndex >= binding.declaration.startIndex &&\n node.endIndex <= binding.declaration.endIndex\n )\n continue;\n\n if (node.parent?.type === \"function_call\") continue;\n\n sawIndirectSetterReference = true;\n }\n\n if (sawIndirectSetterReference) return \"unknown\";\n\n return \"stable\";\n}\n\nfunction localAliasExpression(\n name: string,\n owner: FunctionInfo,\n context: RuleContext,\n): SyntaxNode | null {\n if (!owner.body) return null;\n\n let result: SyntaxNode | null = null;\n\n for (const node of context.walk(owner.body)) {\n if (\n node.type !== \"variable_declaration\" ||\n context.nearestFunction(node) !== owner\n )\n continue;\n\n const names = declarationNames(node);\n const index = names.indexOf(name);\n\n if (index < 0) continue;\n\n const expressions = declarationExpressions(node);\n const expression = expressions[index] ?? expressions[0] ?? null;\n\n if (result) return null;\n\n result = expression;\n }\n\n return result;\n}\n\nfunction modeValueStability(\n node: SyntaxNode | undefined,\n owner: FunctionInfo,\n context: RuleContext,\n moduleInvariants: Set<string>,\n depth = 0,\n): HookModeStability {\n if (!node) return \"stable\";\n\n if (depth > 4) return \"unknown\";\n\n const text = node.text.trim();\n\n if ([\"true\", \"false\", \"nil\"].includes(text)) return \"stable\";\n\n if (\n [\"number\", \"string\", \"string_content\", \"function_definition\"].includes(\n node.type,\n )\n )\n return \"stable\";\n\n const root = text.match(/^([A-Za-z_][A-Za-z0-9_]*)/)?.[1];\n\n if (!root) return \"unknown\";\n\n const stateStability = stateModeStability(root, owner, context);\n\n if (stateStability) return stateStability;\n\n if (moduleInvariants.has(root)) return \"stable\";\n\n if (\n context.model.stableVariablesByFunction.get(nodeKey(owner.node))?.has(root)\n )\n return \"stable\";\n\n if (text === root) {\n const alias = localAliasExpression(root, owner, context);\n\n if (alias && alias.text.trim() !== root)\n return modeValueStability(\n alias,\n owner,\n context,\n moduleInvariants,\n depth + 1,\n );\n }\n\n return \"unknown\";\n}\n\nfunction tableFieldValue(\n table: SyntaxNode | undefined,\n accessPath: string,\n): SyntaxNode | undefined {\n if (!table || accessPath === \"\") return table;\n\n if (table.type !== \"table_constructor\") return undefined;\n\n let current: SyntaxNode | undefined = table;\n\n for (const part of accessPath.split(\".\")) {\n if (!current || current.type !== \"table_constructor\") return undefined;\n\n const field: SyntaxNode | undefined = current.namedChildren.find(\n (child) => {\n if (child.type !== \"field\") return false;\n\n return (\n child.namedChildren[0]?.type === \"identifier\" &&\n child.namedChildren[0]?.text === part\n );\n },\n );\n\n if (!field) return undefined;\n\n current = field.namedChildren[1];\n }\n\n return current;\n}\n\nfunction controlledAccessPaths(\n summary: ConditionalHookModeSummary,\n parameterIndex: number,\n): string[] {\n const paths = new Set<string>();\n\n for (const [conditionName, index] of Object.entries(\n summary.conditionVariables,\n )) {\n if (index !== parameterIndex) continue;\n\n paths.add(summary.conditionAccessPaths?.[conditionName] ?? \"\");\n }\n\n if (paths.size === 0) paths.add(\"\");\n\n return [...paths];\n}\n\nfunction loopIterationIsProvablyStable(\n loop: SyntaxNode,\n imports: Map<string, Set<string>>,\n owner: FunctionInfo,\n stableShapes: Map<number, Set<string>>,\n moduleTables: Set<string>,\n context: RuleContext,\n moduleInvariants: Set<string>,\n): boolean {\n // A fixed collection does not fix hook count when iterations can exit or skip hooks\n for (const node of context.walk(loop)) {\n if (\n ![\"break_statement\", \"continue_statement\", \"return_statement\"].includes(\n node.type,\n )\n )\n continue;\n if (context.nearestFunction(node) !== owner) continue;\n\n if (node.type !== \"return_statement\") {\n const targetLoop = findAncestorBetween(node, owner.node, (ancestor) =>\n [\"for_statement\", \"while_statement\", \"repeat_statement\"].includes(ancestor.type),\n );\n if (targetLoop?.id !== loop.id) continue;\n }\n\n const dynamicGuard = findAncestorBetween(node, loop, (ancestor) =>\n conditionallyContains(ancestor, node) &&\n !conditionIsProvablyInvariant(ancestor, owner, context, moduleInvariants, node),\n );\n if (dynamicGuard) return false;\n }\n\n const numeric = loop.namedChildren.find(\n (child) => child.type === \"for_numeric_clause\",\n );\n\n if (numeric) {\n const text = numeric.text;\n\n const bounds = text.match(\n /^\\s*[A-Za-z_][A-Za-z0-9_]*\\s*=\\s*([^,]+)\\s*,\\s*([^,]+)(?:\\s*,\\s*([^,]+))?\\s*$/s,\n );\n\n if (\n bounds &&\n bounds\n .slice(1)\n .filter(Boolean)\n .every((value) => /^-?\\d+(?:\\.\\d+)?$/.test(value!.trim()))\n )\n return true;\n }\n\n const clause = loop.namedChildren.find(\n (child) => child.type === \"for_generic_clause\",\n );\n\n const match = clause?.text.match(/\\bin\\s+(.+)$/s);\n\n if (!match) return false;\n\n const expression = unwrapIteratorExpression(match[1]);\n\n const path = expression.match(\n /^([A-Za-z_][A-Za-z0-9_]*)(?:\\.([A-Za-z_][A-Za-z0-9_.]*))?$/,\n );\n\n if (!path) return false;\n\n if (!path[2] && stableShapes.get(nodeKey(owner.node))?.has(path[1]))\n return true;\n\n if (!path[2] && moduleTables.has(path[1])) return true;\n\n const fields = imports.get(path[1]);\n\n if (!fields) return false;\n\n const propertyPath = path[2] ?? \"\";\n\n return fields.has(propertyPath);\n}\n\nfunction functionParameterTypes(fn: FunctionInfo): Map<string, string> {\n if (!fn.body) return new Map();\n\n const headerLength = Math.max(0, fn.body.startIndex - fn.node.startIndex);\n const header = fn.node.text.slice(0, headerLength);\n const result = new Map<string, string>();\n\n for (const match of header.matchAll(\n /\\b([A-Za-z_][A-Za-z0-9_]*)\\s*:\\s*([^,\\n)]+)/g,\n )) {\n result.set(match[1], match[2].trim());\n }\n\n return result;\n}\n\nfunction isNonOptionalParameterType(typeText: string | undefined): boolean {\n if (!typeText) return false;\n\n return !typeText.includes(\"?\") && !/(?:^|[| ])nil(?:$|[| ])/i.test(typeText);\n}\n\nfunction impossibleNilGuardReturn(\n node: SyntaxNode,\n fn: FunctionInfo,\n parameterTypes: Map<string, string>,\n): boolean {\n let current = node.parent;\n\n while (current && current !== fn.node) {\n if (current.type === \"if_statement\") {\n const header = (current.text.split(/\\bthen\\b/s, 1)[0] ?? \"\").trim();\n\n const patterns = [\n /\\bif\\s+not\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*$/,\n /\\bif\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*==\\s*nil\\s*$/,\n /\\bif\\s+nil\\s*==\\s*([A-Za-z_][A-Za-z0-9_]*)\\s*$/,\n ];\n\n for (const pattern of patterns) {\n const match = header.match(pattern);\n\n if (match && isNonOptionalParameterType(parameterTypes.get(match[1])))\n return true;\n }\n\n return false;\n }\n\n current = current.parent;\n }\n\n return false;\n}\n\nfunction reachableReturnsBefore(\n call: SyntaxNode,\n fn: FunctionInfo,\n context: RuleContext,\n cache: Map<number, SyntaxNode[]>,\n): SyntaxNode[] {\n if (!fn.body) return [];\n\n const key = nodeKey(fn.node);\n let returns = cache.get(key);\n\n if (!returns) {\n const parameterTypes = functionParameterTypes(fn);\n\n returns = [...context.walk(fn.body)].filter(\n (node) =>\n node.type === \"return_statement\" &&\n !isNestedInsideFunction(node, fn.node) &&\n !impossibleNilGuardReturn(node, fn, parameterTypes),\n );\n\n cache.set(key, returns);\n }\n\n return returns.filter((node) => {\n if (node.endIndex > call.startIndex) return false;\n\n // Returns from sibling branches cannot precede this hook on the same execution path\n return !findAncestorBetween(node, fn.node, (ancestor) => {\n if (ancestor.type !== \"if_statement\") return false;\n const returnBranch = branchContaining(ancestor, node);\n const callBranch = branchContaining(ancestor, call);\n return Boolean(returnBranch && callBranch && returnBranch.id !== callBranch.id);\n });\n });\n}\n\nfunction returnIsControlledByStableTopologyMode(\n node: SyntaxNode,\n fn: FunctionInfo,\n summary: ConditionalHookModeSummary | null,\n context: RuleContext,\n moduleInvariants: Set<string>,\n): boolean {\n let current = node.parent;\n let sawStableGuard = false;\n\n while (current && current !== fn.node) {\n if ([\"for_statement\", \"while_statement\", \"repeat_statement\"].includes(current.type))\n return false;\n\n if (current.type === \"if_statement\" || current.type === \"if_expression\") {\n if (summary && controlledParameterIndex(current, fn, summary, node) !== null)\n sawStableGuard = true;\n else if (\n conditionIsProvablyInvariant(current, fn, context, moduleInvariants, node)\n )\n sawStableGuard = true;\n else return false;\n }\n\n current = current.parent;\n }\n\n return sawStableGuard;\n}\n\nfunction conditionalFixPreview(kind: string, hookName: string): FixPreview {\n if (kind === \"short-circuit expression\") {\n return {\n kind: \"pattern\",\n before: `local result = enabled and renderChild(${hookName}())`,\n after: `local value = ${hookName}()\\nlocal result = enabled and renderChild(value)`,\n note: \"Call the hook before the short-circuit expression, then branch on its result\",\n };\n }\n\n if (hookName === \"React.useEffect\" && kind === \"if statement\") {\n return {\n kind: \"pattern\",\n before: `if enabled then\\n\\tReact.useEffect(function()\\n\\t\\tperformWork()\\n\\tend, {})\\nend`,\n after: `React.useEffect(function()\\n\\tif enabled then\\n\\t\\tperformWork()\\n\\tend\\nend, { enabled })`,\n note: \"Call the hook every render and put the condition inside its callback.\",\n };\n }\n\n if (kind === \"for statement\") {\n return {\n kind: \"pattern\",\n before: `for _, item in items do\\n\\tlocal value = ${hookName}(item)\\nend`,\n after: `local function Item(props)\\n\\tlocal value = ${hookName}(props.item)\\n\\treturn renderItem(value)\\nend\\n\\nfor _, item in items do\\n\\tchildren[item.id] = React.createElement(Item, {\\n\\t\\titem = item,\\n\\t})\\nend`,\n note: \"When collection size can change, move the hook into a child component so each component instance owns a fixed hook sequence.\",\n };\n }\n\n if (kind === \"while statement\" || kind === \"repeat statement\") {\n return {\n kind: \"pattern\",\n before: `while condition do\\n\\tlocal value = ${hookName}()\\nend`,\n after: `local value = ${hookName}()\\n\\nwhile condition do\\n\\t-- use value without creating another hook call\\nend`,\n note: \"Hook count must not depend on how many times a runtime loop executes.\",\n };\n }\n\n return {\n kind: \"pattern\",\n before: `if enabled then\\n\\tlocal value = ${hookName}()\\nend`,\n after: `local value = ${hookName}()\\n\\nif enabled then\\n\\t-- use value here\\nend`,\n note: \"Keep the hook call unconditional, then branch on its result.\",\n };\n}\n\nfunction earlyReturnFixPreview(hookName: string): FixPreview {\n return {\n kind: \"pattern\",\n before: `if not ready then\\n\\treturn nil\\nend\\n\\nlocal value = ${hookName}()`,\n after: `local value = ${hookName}()\\n\\nif not ready then\\n\\treturn nil\\nend`,\n note: \"Call hooks before any reachable early return so every render executes the same hook sequence.\",\n };\n}\n\nfunction callbackFunctions(context: RuleContext): Set<number> {\n const callbacks = new Set<number>();\n const addCallback = (expression: SyntaxNode) => {\n const fn = resolveLocalFunction(context, expression);\n if (fn) callbacks.add(fn.node.id);\n };\n\n for (const call of context.findCalls()) {\n const path = reactApiPath(context, call);\n const args = context.callArguments(call);\n for (const [index, argument] of args.entries()) {\n if (\n index === 0 &&\n [\"React.memo\", \"React.forwardRef\", \"React.createElement\"].includes(\n path ?? \"\",\n )\n )\n continue;\n if (\n path?.startsWith(\"React.use\") ||\n path === \"React.memo\" ||\n unwrapExpression(argument).type === \"function_definition\"\n )\n addCallback(argument);\n }\n\n // Custom component props may carry component types rather than callbacks\n if (\n path !== \"React.createElement\" ||\n args[0]?.type !== \"string\" ||\n args[1]?.type !== \"table_constructor\"\n )\n continue;\n for (const field of args[1].namedChildren) {\n if (field.type !== \"field\") continue;\n const value = field.namedChildren.at(-1);\n if (value) addCallback(value);\n }\n }\n return callbacks;\n}\n\nexport const rulesOfHooks: RuleDefinition = {\n id: \"react-luau/rules-of-hooks\",\n category: \"Hooks\",\n severity: \"error\",\n\n description:\n \"Hooks must run in the same order on every render of a React component or custom hook.\",\n\n guidance: {\n summary: \"Hook calls must stay in the same order between renders.\",\n help: \"Call hooks at the top level of a component or custom hook, before conditional returns.\",\n },\n\n run(context) {\n const diagnostics: DiagnosticInput[] = [];\n\n if (!context.model.isReactFile) return diagnostics;\n\n const staticImports = staticIterationImports(context);\n const stableShapes = stableShapeVariablesByFunction(context);\n const moduleTables = staticModuleTables(context);\n const moduleInvariants = moduleInvariantVariables(context);\n const modeImports = conditionalHookModeImports(context);\n const ignoredHookImports = nonReactHookImports(context);\n const currentModeSummary = currentConditionalHookMode(context);\n const callbacks = callbackFunctions(context);\n const reachableReturns = new Map<number, SyntaxNode[]>();\n\n for (const call of context.findCalls()) {\n const rawPath = context.getCallPath(call);\n\n if (!rawPath) continue;\n\n if (ignoredHookImports.has(rawPath)) continue;\n\n const path = context.resolveCallPath(rawPath);\n\n if (!isHookPath(path)) continue;\n\n const fn = context.nearestFunction(call);\n\n if (\n !fn ||\n (!fn.isComponent && !fn.isHook) ||\n callbacks.has(fn.node.id)\n ) {\n diagnostics.push({\n node: callNameNode(call),\n message: `Hook ${path} is called outside a React component or custom hook`,\n help: \"Move the hook into a component or a custom hook whose name starts with use\",\n\n fixPreview: {\n kind: \"pattern\",\n before: `local value = ${path}()\\n\\nlocal function helper()\\n\\treturn value\\nend`,\n after: `local function useHelper()\\n\\tlocal value = ${path}()\\n\\treturn value\\nend`,\n note: \"Hooks need a React-owned component or custom-hook call stack\",\n },\n });\n\n continue;\n }\n\n const importedMode = modeImports.get(rawPath);\n\n if (importedMode) {\n const args = context.callArguments(call);\n\n const unstableControls = importedMode.parameterIndexes.flatMap(\n (index) =>\n controlledAccessPaths(importedMode, index)\n .map((accessPath) => {\n const argument = args[index];\n const value = tableFieldValue(argument, accessPath);\n\n const stability =\n accessPath !== \"\"\n ? argument?.type === \"table_constructor\"\n ? value\n ? modeValueStability(\n value,\n fn,\n context,\n moduleInvariants,\n )\n : \"stable\"\n : \"unknown\"\n : modeValueStability(\n argument,\n fn,\n context,\n moduleInvariants,\n );\n\n return { index, accessPath, argument, value, stability };\n })\n .filter((control) => control.stability === \"unstable\"),\n );\n\n if (unstableControls.length > 0) {\n const first = unstableControls[0];\n const firstIndex = first.index;\n const argument = first.argument;\n\n const parameterOffset =\n importedMode.parameterIndexes.indexOf(firstIndex);\n\n const baseParameterName =\n importedMode.parameterNames[parameterOffset] ??\n `argument ${firstIndex + 1}`;\n\n const parameterName = first.accessPath\n ? `${baseParameterName}.${first.accessPath}`\n : baseParameterName;\n\n const argumentText =\n first.value?.text.trim() || argument?.text.trim() || \"<omitted>\";\n\n diagnostics.push({\n node: first.value ?? argument ?? callNameNode(call),\n\n highlights: unstableControls\n .map((control) => control.value ?? control.argument)\n .filter((node): node is SyntaxNode => Boolean(node)),\n\n message: `Hook ${rawPath} receives hook-topology mode ${parameterName} from ${argumentText}, which is updated between renders and can make the custom hook execute a different hook sequence.`,\n help: `Keep ${parameterName} stable for this hook instance, or refactor ${rawPath} so it always calls the same hooks regardless of that mode.`,\n fixPreview: dynamicHookModeFixPreview(rawPath, argumentText),\n });\n }\n }\n\n const controlFlow = findAncestorBetween(call, fn.node, (node) => {\n if (!conditionallyContains(node, call)) return false;\n\n if (\n currentModeSummary &&\n controlledParameterIndex(node, fn, currentModeSummary, call) !== null\n )\n return false;\n\n if (\n conditionIsProvablyInvariant(\n node,\n fn,\n context,\n moduleInvariants,\n call,\n )\n )\n return false;\n\n if (ifBranchesHaveEquivalentBuiltInTopology(node, fn, context))\n return false;\n\n if (\n node.type === \"for_statement\" &&\n loopIterationIsProvablyStable(\n node,\n staticImports,\n fn,\n stableShapes,\n moduleTables,\n context,\n moduleInvariants,\n )\n )\n return false;\n\n return true;\n });\n\n if (controlFlow) {\n const kind = controlFlow.type === \"binary_expression\"\n ? \"short-circuit expression\"\n : controlFlow.type.replaceAll(\"_\", \" \");\n\n const loopLike =\n controlFlow.type === \"for_statement\" ||\n controlFlow.type === \"while_statement\" ||\n controlFlow.type === \"repeat_statement\";\n\n diagnostics.push({\n node: callNameNode(call),\n\n message: loopLike\n ? `Hook ${path} is called inside ${kind} whose size or iteration order may change between renders. If that happens, React will see a different hook sequence`\n : `Hook ${path} is called inside ${kind}, so the hook may be skipped on some renders`,\n\n summary: loopLike\n ? `${path} may run a different number of times between renders`\n : `${path} may be skipped on some renders`,\n\n explanation: loopLike\n ? `This ${kind} may change how many times ${path} is called`\n : `This ${kind} can skip ${path} on some renders`,\n\n help: loopLike\n ? \"Keep hook count independent of runtime collection size or loop iterations. A common fix is to render a child component per item and call the hook inside that child\"\n : \"Call the hook unconditionally at the top level, then branch on the returned value\",\n\n fixPreview: conditionalFixPreview(kind, path),\n });\n\n continue;\n }\n\n const earlierReturns = reachableReturnsBefore(\n call,\n fn,\n context,\n reachableReturns,\n );\n\n if (\n earlierReturns.length > 0 &&\n !earlierReturns.every((node) =>\n returnIsControlledByStableTopologyMode(\n node,\n fn,\n currentModeSummary,\n context,\n moduleInvariants,\n ),\n )\n ) {\n diagnostics.push({\n node: callNameNode(call),\n message: `Hook ${path} may run after an earlier reachable return, so some renders can execute fewer hooks.`,\n help: \"Move the hook before reachable early returns so hook order cannot change between renders.\",\n fixPreview: earlyReturnFixPreview(path),\n });\n }\n }\n\n return diagnostics;\n },\n};\n",
|
|
38
40
|
"import type { SyntaxNode } from \"../syntax\";\r\n\r\nimport type {\r\n DiagnosticInput,\r\n FunctionInfo,\r\n RuleContext,\r\n RuleDefinition,\r\n StateBinding,\r\n} from \"../types\";\r\n\r\nimport { sameNode } from \"../ast/walk\";\r\n\r\nimport {\r\n assignmentTargetNode,\r\n callNameNode,\r\n containsUnshadowedIdentifier,\r\n identifierNode,\r\n isBindingShadowedBetween,\r\n stateBindingsFor,\r\n} from \"./helpers\";\r\n\r\nimport {\r\n mightMutateParameters,\r\n mutatedParameterIndexesForCall,\r\n mutationOriginForExpression,\r\n} from \"./parameter-mutations\";\r\n\r\nconst TRIVIAL_INITIALIZER_PATHS = new Set([\r\n \"tostring\",\r\n \"tonumber\",\r\n \"type\",\r\n \"typeof\",\r\n \"math.abs\",\r\n \"math.ceil\",\r\n \"math.floor\",\r\n \"math.max\",\r\n \"math.min\",\r\n \"math.round\",\r\n \"string.lower\",\r\n \"string.upper\",\r\n \"string.format\",\r\n \"table.pack\",\r\n \"Vector2.new\",\r\n \"Vector3.new\",\r\n \"Vector2int16.new\",\r\n \"Vector3int16.new\",\r\n \"UDim.new\",\r\n \"UDim2.new\",\r\n \"UDim2.fromOffset\",\r\n \"UDim2.fromScale\",\r\n \"CFrame.new\",\r\n \"Color3.new\",\r\n \"Color3.fromRGB\",\r\n \"Color3.fromHSV\",\r\n \"Rect.new\",\r\n \"NumberRange.new\",\r\n \"TweenInfo.new\",\r\n]);\r\n\r\nfunction isTrivialInitializerPath(path: string): boolean {\r\n return (\r\n TRIVIAL_INITIALIZER_PATHS.has(path) || /(?:^|[.:])getValue$/i.test(path)\r\n );\r\n}\r\n\r\nfunction isNestedFunctionFromOwner(\r\n context: RuleContext,\r\n node: SyntaxNode,\r\n owner: FunctionInfo,\r\n): boolean {\r\n const nearest = context.nearestFunction(node);\r\n\r\n return Boolean(nearest && nearest !== owner);\r\n}\r\n\r\nfunction callsSetter(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n setterName: string,\r\n): boolean {\r\n if (!owner.body) return false;\r\n\r\n for (const call of context.walk(owner.body)) {\r\n if (\r\n call.type === \"function_call\" &&\r\n context.getCallPath(call) === setterName\r\n )\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isIdentifierRead(node: SyntaxNode, name: string): boolean {\r\n if (node.type !== \"identifier\" || node.text !== name) return false;\r\n\r\n const parent = node.parent;\r\n\r\n if (\r\n parent?.type === \"dot_index_expression\" &&\r\n sameNode(parent.childForFieldName(\"field\"), node)\r\n )\r\n return false;\r\n\r\n if (\r\n parent?.type === \"method_index_expression\" &&\r\n sameNode(parent.namedChildren.at(-1), node)\r\n )\r\n return false;\r\n\r\n return true;\r\n}\r\n\r\nfunction renderReachableNestedFunctions(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n): Set<FunctionInfo> {\r\n const reachable = new Set<FunctionInfo>();\r\n\r\n if (!owner.body) return reachable;\r\n\r\n const byName = new Map<string, FunctionInfo>();\r\n\r\n for (const fn of context.model.functions) {\r\n if (!fn.name || fn === owner) continue;\r\n\r\n let current = fn.node.parent;\r\n\r\n while (current) {\r\n const parentInfo = context.model.functionByNode.get(current.id);\r\n\r\n if (parentInfo) {\r\n if (parentInfo === owner) byName.set(fn.name, fn);\r\n\r\n break;\r\n }\r\n\r\n current = current.parent;\r\n }\r\n }\r\n\r\n const pending: FunctionInfo[] = [];\r\n\r\n const addByName = (name: string | undefined) => {\r\n if (!name) return;\r\n\r\n const fn = byName.get(name);\r\n\r\n if (!fn || reachable.has(fn)) return;\r\n\r\n reachable.add(fn);\r\n pending.push(fn);\r\n };\r\n\r\n for (const call of context.walk(owner.body)) {\r\n if (\r\n call.type !== \"function_call\" ||\r\n context.nearestFunction(call) !== owner\r\n )\r\n continue;\r\n\r\n const path = context.getCallPath(call) ?? \"\";\r\n const resolved = context.resolveCallPath(path);\r\n\r\n if (resolved === \"React.createElement\")\r\n addByName(context.callArguments(call)[0]?.text.trim());\r\n else addByName(path);\r\n }\r\n\r\n while (pending.length > 0) {\r\n const fn = pending.pop()!;\r\n\r\n if (!fn.body) continue;\r\n\r\n for (const call of context.walk(fn.body)) {\r\n if (call.type !== \"function_call\" || context.nearestFunction(call) !== fn)\r\n continue;\r\n\r\n const path = context.getCallPath(call) ?? \"\";\r\n const resolved = context.resolveCallPath(path);\r\n\r\n if (resolved === \"React.createElement\")\r\n addByName(context.callArguments(call)[0]?.text.trim());\r\n else addByName(path);\r\n }\r\n }\r\n\r\n return reachable;\r\n}\r\n\r\nfunction directlyReadsValue(\r\n context: RuleContext,\r\n owner: FunctionInfo,\r\n binding: StateBinding,\r\n): boolean {\r\n if (!owner.body) return false;\r\n\r\n for (const node of context.walk(owner.body)) {\r\n if (!isIdentifierRead(node, binding.valueName)) continue;\r\n\r\n if (\r\n node.startIndex >= binding.declaration.startIndex &&\r\n node.endIndex <= binding.declaration.endIndex\r\n )\r\n continue;\r\n\r\n if (isNestedFunctionFromOwner(context, node, owner)) continue;\r\n\r\n if (\r\n isBindingShadowedBetween(\r\n node,\r\n owner,\r\n binding.valueName,\r\n binding.declaration,\r\n )\r\n )\r\n continue;\r\n\r\n return true;\r\n }\r\n\r\n for (const fn of renderReachableNestedFunctions(context, owner)) {\r\n if (!fn.body) continue;\r\n\r\n for (const node of context.walk(fn.body)) {\r\n if (\r\n isIdentifierRead(node, binding.valueName) &&\r\n !isBindingShadowedBetween(\r\n node,\r\n owner,\r\n binding.valueName,\r\n binding.declaration,\r\n )\r\n )\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction isPlainTableState(\r\n binding: StateBinding,\r\n context: RuleContext,\r\n): boolean {\r\n const initializer = binding.initializer;\r\n\r\n if (!initializer) return true;\r\n\r\n if (initializer.type === \"table_constructor\") return true;\r\n\r\n if (initializer.type !== \"function_call\") return false;\r\n\r\n const path = context.getCallPath(initializer) ?? \"\";\r\n\r\n return (\r\n path === \"table.clone\" || path === \"table.create\" || path === \"table.pack\"\r\n );\r\n}\r\n\r\ntype CallbackLifetime =\r\n \"long-lived\" | \"custom-hook\" | \"render-handler\" | \"unknown\";\r\n\r\nfunction callbackLifetime(\r\n context: RuleContext,\r\n call: SyntaxNode,\r\n owner: FunctionInfo,\r\n): CallbackLifetime {\r\n const callback = context.nearestFunction(call);\r\n\r\n if (!callback || callback === owner) return \"unknown\";\r\n\r\n let current: SyntaxNode | null = callback.node;\r\n\r\n while (\r\n current &&\r\n current.startIndex >= owner.node.startIndex &&\r\n current.endIndex <= owner.node.endIndex\r\n ) {\r\n if (current.type === \"function_call\") {\r\n const path = context.resolveCallPath(context.getCallPath(current) ?? \"\");\r\n\r\n if (\r\n path === \"React.useEffect\" ||\r\n path === \"React.useLayoutEffect\" ||\r\n path === \"task.spawn\" ||\r\n path === \"task.defer\" ||\r\n path === \"task.delay\" ||\r\n /:Connect$/.test(path) ||\r\n /BindToRenderStep$/.test(path) ||\r\n /:BindAction(?:AtPriority)?$/.test(path) ||\r\n /:BindActivate$/.test(path)\r\n ) {\r\n return \"long-lived\";\r\n }\r\n\r\n if (path === \"React.createElement\") return \"render-handler\";\r\n\r\n const final = path.split(/[.:]/).at(-1) ?? \"\";\r\n\r\n if (/^use[A-Z0-9_]/.test(final)) return \"custom-hook\";\r\n }\r\n\r\n if (\r\n current.type === \"function_definition\" ||\r\n current.type === \"function_declaration\"\r\n ) {\r\n if (\r\n current.startIndex !== callback.node.startIndex ||\r\n current.endIndex !== callback.node.endIndex\r\n )\r\n break;\r\n }\r\n\r\n current = current.parent;\r\n }\r\n\r\n return \"unknown\";\r\n}\r\n\r\nexport const rerenderFunctionalSetstate: RuleDefinition = {\r\n id: \"react-luau/rerender-functional-setstate\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Use the functional state setter form when deferred callbacks update from the previous state value.\",\r\n\r\n run(context) {\r\n const diagnostics: DiagnosticInput[] = [];\r\n\r\n for (const binding of context.model.stateBindings) {\r\n const owner = binding.owner;\r\n\r\n if (!owner?.body) continue;\r\n\r\n for (const call of context.walk(owner.body)) {\r\n if (\r\n call.type !== \"function_call\" ||\r\n context.getCallPath(call) !== binding.setterName\r\n )\r\n continue;\r\n\r\n if (!isNestedFunctionFromOwner(context, call, owner)) continue;\r\n\r\n const argument = context.callArguments(call)[0];\r\n\r\n if (!argument || argument.type === \"function_definition\") continue;\r\n\r\n if (\r\n !containsUnshadowedIdentifier(\r\n argument,\r\n binding.valueName,\r\n context,\r\n owner,\r\n )\r\n )\r\n continue;\r\n\r\n const lifetime = callbackLifetime(context, call, owner);\r\n\r\n if (lifetime === \"render-handler\" || lifetime === \"unknown\") continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(call),\r\n severity: lifetime === \"custom-hook\" ? \"suggestion\" : \"warning\",\r\n message: `${binding.setterName}() reads ${binding.valueName} from a captured callback value.`,\r\n\r\n help:\r\n lifetime === \"custom-hook\"\r\n ? `Use ${binding.setterName}(function(previous) return ... end) if the custom hook can retain this callback across renders.`\r\n : `Use ${binding.setterName}(function(previous) return ... end) when the next value depends on previous state.`,\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const rerenderLazyStateInit: RuleDefinition = {\r\n id: \"react-luau/rerender-lazy-state-init\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Expensive useState initializers should use React's lazy initializer form.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (path !== \"React.useState\") continue;\r\n\r\n const initializer = context.callArguments(call)[0];\r\n\r\n if (!initializer || initializer.type === \"function_definition\") continue;\r\n\r\n const eagerCall = [...context.walk(initializer)].find(\r\n (node) => node.type === \"function_call\",\r\n );\r\n\r\n if (!eagerCall) continue;\r\n\r\n const eagerPath = context.resolveCallPath(\r\n context.getCallPath(eagerCall) ?? \"\",\r\n );\r\n\r\n if (\r\n isTrivialInitializerPath(eagerPath) ||\r\n /^React\\.use[A-Z0-9_]/.test(eagerPath)\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(eagerCall),\r\n message: `${eagerPath || \"This initializer call\"} is evaluated every render before useState can reuse the existing state.`,\r\n summary: `${eagerPath || \"This initializer\"} runs every render. Pass an initializer function to useState.`,\r\n help: \"Wrap expensive initial state creation in function() ... end so it only runs when the state is first initialized.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const rerenderLazyRefInit: RuleDefinition = {\r\n id: \"react-luau/rerender-lazy-ref-init\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"Avoid eagerly rebuilding expensive values passed to useRef on every render.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const call of context.findCalls()) {\r\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\r\n\r\n if (path !== \"React.useRef\") continue;\r\n\r\n const initializer = context.callArguments(call)[0];\r\n\r\n if (!initializer || initializer.type !== \"function_call\") continue;\r\n\r\n const eagerPath = context.resolveCallPath(\r\n context.getCallPath(initializer) ?? \"\",\r\n );\r\n\r\n if (\r\n isTrivialInitializerPath(eagerPath) ||\r\n /^React\\.use[A-Z0-9_]/.test(eagerPath)\r\n )\r\n continue;\r\n\r\n diagnostics.push({\r\n node: callNameNode(initializer),\r\n message: `${eagerPath || \"This initializer call\"} is rebuilt before useRef returns the existing ref on every render.`,\r\n help: \"Initialize the ref from a predictable nil-guarded render pattern when construction is pure, or create owned resources in an effect with cleanup. Do not put side-effectful resource creation into useRef just to silence this warning.\",\r\n });\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const rerenderStateOnlyInHandlers: RuleDefinition = {\r\n id: \"react-luau/rerender-state-only-in-handlers\",\r\n category: \"Performance\",\r\n severity: \"warning\",\r\n\r\n description:\r\n \"State that is only read from callbacks may be mutable data rather than rendered state.\",\r\n\r\n guidance: {\r\n explanation:\r\n \"This state is written, but the component does not read it while rendering or preparing hooks.\",\r\n\r\n help: \"Use a ref when callbacks need the latest value without rerendering. Keep state if a write must update the UI or an effect dependency.\",\r\n },\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n\r\n for (const owner of context.model.functions) {\r\n if (!owner.isComponent) continue;\r\n\r\n for (const binding of stateBindingsFor(context, owner)) {\r\n if (binding.valueName === \"_\" || binding.valueName.startsWith(\"_\"))\r\n continue;\r\n\r\n if (\r\n /^(set)?(?:TriggerRender|ForceUpdate|Rerender|ForceRender|Tick|Bump|BumpVersion|InvalidateRender|Refresh|Repaint)$/i.test(\r\n binding.setterName,\r\n )\r\n )\r\n continue;\r\n\r\n if (!callsSetter(context, owner, binding.setterName)) continue;\r\n\r\n if (directlyReadsValue(context, owner, binding)) continue;\r\n\r\n diagnostics.push({\r\n node:\r\n identifierNode(binding.declaration, binding.valueName) ??\r\n binding.declaration,\r\n\r\n message: `${binding.valueName} is updated as React state but is never read by the component's render path or hook arguments.`,\r\n summary: `${binding.valueName} isn't read during render. Use a ref if updates needn't rerender.`,\r\n help: \"When a value is only read by event or signal callbacks, consider useRef so updates do not rerender the component. Keep useState when the update intentionally invalidates rendering or feeds a hook dependency.\",\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n\r\nexport const noDirectStateMutation: RuleDefinition = {\r\n id: \"react-luau/no-direct-state-mutation\",\r\n category: \"Correctness\",\r\n severity: \"warning\",\r\n description: \"Do not mutate table state in place.\",\r\n\r\n run(context) {\r\n const diagnostics = [];\r\n const seen = new Set<string>();\r\n\r\n for (const binding of context.model.stateBindings) {\r\n const owner = binding.owner;\r\n\r\n if (!owner?.body || !isPlainTableState(binding, context)) continue;\r\n\r\n const escaped = binding.valueName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\n for (const node of context.walk(owner.body)) {\r\n if (\r\n node.startIndex >= binding.declaration.startIndex &&\r\n node.endIndex <= binding.declaration.endIndex\r\n )\r\n continue;\r\n\r\n let mutates = false;\r\n\r\n if (\r\n node.type === \"assignment_statement\" ||\r\n node.type === \"update_statement\"\r\n ) {\r\n mutates = new RegExp(`^\\\\s*${escaped}\\\\s*(?:\\\\.|\\\\[)`).test(\r\n node.text,\r\n );\r\n } else if (\r\n node.type === \"function_call\" &&\r\n mightMutateParameters(context, node)\r\n ) {\r\n const arguments_ = context.callArguments(node);\r\n\r\n for (const index of mutatedParameterIndexesForCall(\r\n context,\r\n node,\r\n owner,\r\n )) {\r\n const argument = arguments_[index];\r\n\r\n if (!argument) continue;\r\n\r\n const origin = mutationOriginForExpression(\r\n context,\r\n argument,\r\n owner,\r\n );\r\n\r\n if (origin.kind === \"state\" && origin.binding === binding) {\r\n mutates = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (\r\n !mutates ||\r\n isBindingShadowedBetween(\r\n node,\r\n owner,\r\n binding.valueName,\r\n binding.declaration,\r\n )\r\n )\r\n continue;\r\n\r\n const key = `${node.startIndex}:${binding.valueName}`;\r\n\r\n if (seen.has(key)) continue;\r\n\r\n seen.add(key);\r\n\r\n diagnostics.push({\r\n node:\r\n node.type === \"function_call\"\r\n ? callNameNode(node)\r\n : assignmentTargetNode(node),\r\n\r\n message: `${binding.valueName} is React state backed by a table and is mutated in place.`,\r\n summary: `${binding.valueName} is mutated in place. Create a new table before updating state.`,\r\n help: `Create a new table and pass the new identity to ${binding.setterName}. In-place mutation can leave React with the same state identity and makes update ordering harder to reason about.`,\r\n });\r\n }\r\n }\r\n\r\n return diagnostics;\r\n },\r\n};\r\n",
|
|
39
|
-
"import type { RuleDefinition } from \"../types\";\
|
|
41
|
+
"import type { RuleDefinition } from \"../types\";\nimport { fieldName, fieldNameNode, fieldValue } from \"./helpers\";\nimport { freshValueKind } from \"../ast/value-identity\";\n\nexport const unstableContextValue: RuleDefinition = {\n id: \"react-luau/unstable-context-value\",\n category: \"Performance\",\n severity: \"warning\",\n description:\n \"Avoid recreating context reference values during render when identity matters\",\n\n run(context) {\n const diagnostics = [];\n\n for (const call of context.findCalls()) {\n const component = context.containingComponent(call);\n\n if (!component || !context.isDirectlyExecutedInFunction(call, component))\n continue;\n\n const path = context.resolveCallPath(context.getCallPath(call) ?? \"\");\n\n if (path !== \"React.createElement\") continue;\n\n const args = context.callArguments(call);\n const element = args[0]?.text ?? \"\";\n const props = args[1];\n\n if (\n !/\\.Provider$/.test(element) ||\n !props ||\n props.type !== \"table_constructor\"\n )\n continue;\n\n const valueField = props.namedChildren.find(\n (field) =>\n field.type === \"field\" &&\n fieldName(field) === \"value\" &&\n freshValueKind(context, fieldValue(field), component),\n );\n\n if (!valueField) continue;\n\n diagnostics.push({\n node: fieldNameNode(valueField),\n message:\n \"Context Provider can receive a new reference value when the component renders\",\n help: \"Memoize the provider value from its real dependencies when consumer updates depend on object identity\",\n });\n }\n\n return diagnostics;\n },\n};\n",
|
|
40
42
|
"import type { RuleDefinition } from \"../types\";\nimport {\n noBindingGetValueInRender,\n noCreateBindingInRender,\n} from \"./binding-rules\";\nimport { noCallComponentAsFunction } from \"./no-call-component-as-function\";\nimport { noMutatingStateUpdater } from \"./no-mutating-state-updater\";\nimport { useMemoMustReturn } from \"./usememo-must-return\";\nimport { fixExampleForRule } from \"./examples\";\nimport { effectNeedsCleanup } from \"./effect-needs-cleanup\";\n\nimport {\n noDerivedStateEffect,\n noEffectWithFreshDeps,\n noMutableInDeps,\n noSelfUpdatingEffect,\n} from \"./effect-state-rules\";\n\nimport { exhaustiveDeps } from \"./exhaustive-deps\";\nimport { noArrayIndexAsKey } from \"./no-array-index-as-key\";\nimport { noCreateContextInRender } from \"./no-create-context-in-render\";\nimport { noNestedComponentDefinition } from \"./no-nested-component-definition\";\nimport { noPropMutation } from \"./no-prop-mutation\";\nimport { noStaticNameProp } from \"./no-static-name-prop\";\nimport { noRandomKey } from \"./no-random-key\";\nimport { noSetStateInRender } from \"./no-set-state-in-render\";\nimport { parseErrors } from \"./parse-errors\";\n\nimport {\n preferUseRefForMutableCell,\n rerenderHighFrequencyState,\n rerenderRepeatedCollectionScan,\n rerenderStaticDiscoveryInRender,\n rerenderStaticState,\n rerenderUnnecessaryUseCallback,\n rerenderUnnecessaryUseMemo,\n rerenderUnstableMemoProps,\n} from \"./performance-rules\";\n\nimport {\n preferBindingOverState,\n preferBindingOverStateCandidate,\n} from \"./prefer-binding-over-state\";\n\nimport { noCreateRootInRender } from \"./react-roblox-lifecycle\";\nimport { noRefCurrentInRender } from \"./ref-rules\";\n\nimport {\n noSideEffectsInRender,\n noTaskSpawnInRender,\n noYieldInRender,\n} from \"./render-side-effects\";\n\nimport { rulesOfHooks } from \"./rules-of-hooks\";\n\nimport {\n noDirectStateMutation,\n rerenderFunctionalSetstate,\n rerenderLazyRefInit,\n rerenderLazyStateInit,\n rerenderStateOnlyInHandlers,\n} from \"./state-performance\";\n\nimport { unstableContextValue } from \"./unstable-context-value\";\n\nconst definitions: RuleDefinition[] = [\n parseErrors,\n rulesOfHooks,\n exhaustiveDeps,\n effectNeedsCleanup,\n noDerivedStateEffect,\n noSelfUpdatingEffect,\n noEffectWithFreshDeps,\n noMutableInDeps,\n preferBindingOverState,\n preferBindingOverStateCandidate,\n rerenderUnstableMemoProps,\n rerenderHighFrequencyState,\n rerenderUnnecessaryUseMemo,\n rerenderUnnecessaryUseCallback,\n rerenderStaticDiscoveryInRender,\n rerenderRepeatedCollectionScan,\n rerenderStaticState,\n preferUseRefForMutableCell,\n rerenderFunctionalSetstate,\n rerenderLazyStateInit,\n rerenderLazyRefInit,\n rerenderStateOnlyInHandlers,\n noSetStateInRender,\n noMutatingStateUpdater,\n noCallComponentAsFunction,\n noCreateBindingInRender,\n noBindingGetValueInRender,\n useMemoMustReturn,\n noDirectStateMutation,\n noRefCurrentInRender,\n noCreateContextInRender,\n noNestedComponentDefinition,\n noRandomKey,\n noYieldInRender,\n noTaskSpawnInRender,\n noSideEffectsInRender,\n noCreateRootInRender,\n noPropMutation,\n noStaticNameProp,\n noArrayIndexAsKey,\n unstableContextValue,\n];\n\nexport const rules: RuleDefinition[] = definitions.map((rule) => ({\n ...rule,\n\n guidance: {\n ...rule.guidance,\n example: rule.guidance?.example ?? fixExampleForRule(rule.id),\n },\n}));\n\nexport const rulesById = new Map(rules.map((rule) => [rule.id, rule]));\n",
|
|
41
43
|
"import { spawnSync } from \"node:child_process\";\r\nimport { createHash } from \"node:crypto\";\r\nimport fs from \"node:fs\";\r\nimport path from \"node:path\";\r\nimport readline from \"node:readline/promises\";\r\nimport { stdin as input, stdout as output } from \"node:process\";\r\nimport { isSelectedLuauPath } from \"./files\";\r\nimport { loadConfigWithSource } from \"./config\";\r\nimport { createGitScopePlan, findGitRoot } from \"./git\";\r\nimport type { LineRange } from \"./git\";\r\nimport { renderAnnotations, renderTextReport } from \"./reporter\";\r\nimport { aggregateReports, scanProjectWithScope } from \"./scope\";\r\nimport { scanPath } from \"./scanner\";\r\nimport type { BlockingLevel, Diagnostic, ScanReport, ScanScope } from \"./types\";\r\nimport packageJson from \"../package.json\";\r\n\r\nexport type CiProvider = \"github\" | \"gitlab\";\r\n\r\ninterface CiSettings {\r\n provider: CiProvider;\r\n blocking: BlockingLevel;\r\n scope: ScanScope;\r\n comment: boolean;\r\n reviewComments: boolean;\r\n commitStatus: boolean;\r\n directory: string;\r\n project: string;\r\n}\r\n\r\ninterface CiManageOptions extends Partial<CiSettings> {\r\n cwd: string;\r\n yes: boolean;\r\n pr: boolean;\r\n}\r\n\r\ninterface GitHubEvent {\r\n action?: string;\r\n before?: string;\r\n pull_request?: {\r\n number: number;\r\n base: { sha: string; ref: string };\r\n head: { sha: string; ref: string };\r\n };\r\n repository?: { full_name?: string };\r\n}\r\n\r\nconst DEFAULT_SETTINGS: CiSettings = {\r\n provider: \"github\",\r\n blocking: \"none\",\r\n scope: \"changed\",\r\n comment: true,\r\n reviewComments: true,\r\n commitStatus: true,\r\n directory: \".\",\r\n project: \"*\",\r\n};\r\n\r\nconst GITHUB_WORKFLOW = path.join(\".github\", \"workflows\", \"react-luau-doctor.yml\");\r\nconst GITLAB_WORKFLOW = \".gitlab-ci.yml\";\r\nconst SUMMARY_MARKER = \"<!-- react-luau-doctor:summary -->\";\r\nconst REVIEW_MARKER = \"<!-- react-luau-doctor:review -->\";\r\nconst MAX_REVIEW_COMMENTS = 20;\r\nconst MAX_GITHUB_RETRIES = 2;\r\nconst MAX_RATE_LIMIT_WAIT_MS = 60_000;\r\nconst PACKAGE_SPEC = `${packageJson.name}@${packageJson.version}`;\r\nfunction yamlString(value: string): string {\r\n return JSON.stringify(value);\r\n}\r\n\r\nexport function renderGitHubWorkflow(settings: CiSettings): string {\r\n return `name: React-Luau Doctor\r\non:\r\n pull_request:\r\n types: [opened, synchronize, reopened, ready_for_review]\r\n push:\r\n branches: [main]\r\n\r\npermissions:\r\n contents: read\r\n pull-requests: write\r\n statuses: write\r\n\r\nconcurrency:\r\n group: react-luau-doctor-\\${{ github.event.pull_request.number || github.ref }}\r\n cancel-in-progress: true\r\n\r\njobs:\r\n react-luau-doctor:\r\n runs-on: ubuntu-latest\r\n steps:\r\n - uses: actions/checkout@v5\r\n with:\r\n fetch-depth: 0\r\n - uses: oven-sh/setup-bun@v2\r\n with:\r\n bun-version: \"1.4.0\"\r\n - id: doctor\r\n env:\r\n GITHUB_TOKEN: \\${{ github.token }}\r\n DOCTOR_DIRECTORY: ${yamlString(settings.directory)}\r\n DOCTOR_PROJECT: ${yamlString(settings.project)}\r\n DOCTOR_BLOCKING: ${settings.blocking}\r\n DOCTOR_SCOPE: ${settings.scope}\r\n run: >-\r\n bunx --bun ${PACKAGE_SPEC} ci run\r\n --directory \"$DOCTOR_DIRECTORY\"\r\n --project \"$DOCTOR_PROJECT\"\r\n --blocking \"$DOCTOR_BLOCKING\"\r\n --scope \"$DOCTOR_SCOPE\"\r\n ${settings.comment ? \"--comment\" : \"--no-comment\"}\r\n ${settings.reviewComments ? \"--review-comments\" : \"--no-review-comments\"}\r\n ${settings.commitStatus ? \"--commit-status\" : \"--no-commit-status\"}\r\n`;\r\n}\r\n\r\nexport function renderGitLabWorkflow(settings: CiSettings): string {\r\n return `stages:\r\n - test\r\n\r\nreact-luau-doctor:\r\n stage: test\r\n image: oven/bun:1.4.0\r\n variables:\r\n GIT_DEPTH: \"0\"\r\n DOCTOR_DIRECTORY: ${yamlString(settings.directory)}\r\n DOCTOR_SCOPE: ${yamlString(settings.scope)}\r\n DOCTOR_BLOCKING: ${yamlString(settings.blocking)}\r\n script:\r\n - 'bunx --bun ${PACKAGE_SPEC} \"$DOCTOR_DIRECTORY\" --scope \"$DOCTOR_SCOPE\" --blocking \"$DOCTOR_BLOCKING\" --no-color'\r\n`;\r\n}\r\n\r\nfunction parseBoolean(value: string, name: string): boolean {\r\n if (value === \"true\") return true;\r\n if (value === \"false\") return false;\r\n throw new Error(`${name} must be true or false`);\r\n}\r\n\r\nfunction parseBlocking(value: string): BlockingLevel {\r\n if (value !== \"error\" && value !== \"warning\" && value !== \"none\") throw new Error(\"--blocking must be error, warning, or none\");\r\n return value;\r\n}\r\n\r\nfunction parseScope(value: string): ScanScope {\r\n if (value !== \"full\" && value !== \"files\" && value !== \"changed\" && value !== \"lines\") {\r\n throw new Error(\"--scope must be full, files, changed, or lines\");\r\n }\r\n return value;\r\n}\r\n\r\nfunction parseProvider(value: string): CiProvider {\r\n if (value !== \"github\" && value !== \"gitlab\") throw new Error(\"--provider must be github or gitlab\");\r\n return value;\r\n}\r\n\r\nfunction nextValue(argv: string[], index: number, flag: string): { value: string; nextIndex: number } {\r\n const value = argv[index + 1];\r\n if (!value || value.startsWith(\"--\")) throw new Error(`${flag} requires a value`);\r\n return { value, nextIndex: index + 1 };\r\n}\r\n\r\nfunction parseCiManageOptions(argv: string[], action: \"install\" | \"config\" | \"upgrade\"): CiManageOptions {\r\n const options: CiManageOptions = { cwd: process.cwd(), yes: false, pr: false };\r\n for (let index = 0; index < argv.length; index += 1) {\r\n const arg = argv[index];\r\n if (arg === \"--yes\" || arg === \"-y\") options.yes = true;\r\n else if (arg === \"--pr\") {\r\n if (action === \"config\") throw new Error(\"ci config does not accept --pr\");\r\n options.pr = true;\r\n } else if (arg === \"--cwd\") {\r\n const parsed = nextValue(argv, index, arg);\r\n options.cwd = path.resolve(parsed.value);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--provider\") {\r\n const parsed = nextValue(argv, index, arg);\r\n options.provider = parseProvider(parsed.value);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--blocking\") {\r\n const parsed = nextValue(argv, index, arg);\r\n options.blocking = parseBlocking(parsed.value);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--scope\") {\r\n const parsed = nextValue(argv, index, arg);\r\n options.scope = parseScope(parsed.value);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--comment\") options.comment = true;\r\n else if (arg === \"--no-comment\") options.comment = false;\r\n else if (arg === \"--review-comments\") options.reviewComments = true;\r\n else if (arg === \"--no-review-comments\") options.reviewComments = false;\r\n else if (arg === \"--commit-status\") options.commitStatus = true;\r\n else if (arg === \"--no-commit-status\") options.commitStatus = false;\r\n else throw new Error(`Unknown ci ${action} option: ${arg}`);\r\n }\r\n return options;\r\n}\r\n\r\nfunction parseManagedWorkflowSettings(filename: string): Partial<CiSettings> {\r\n if (!fs.existsSync(filename)) return {};\r\n const text = fs.readFileSync(filename, \"utf8\");\r\n const match = (name: string): string | undefined => text.match(new RegExp(`^\\\\s*${name}:\\\\s*(.+?)\\\\s*$`, \"m\"))?.[1]?.replace(/^['\"]|['\"]$/g, \"\");\r\n const result: Partial<CiSettings> = { provider: filename.endsWith(\".gitlab-ci.yml\") ? \"gitlab\" : \"github\" };\r\n const blocking = match(\"DOCTOR_BLOCKING\") ?? match(\"blocking\");\r\n const scope = match(\"DOCTOR_SCOPE\") ?? match(\"scope\");\r\n const project = match(\"DOCTOR_PROJECT\") ?? match(\"project\");\r\n const directory = match(\"DOCTOR_DIRECTORY\") ?? match(\"directory\");\r\n const flag = (enabled: string, disabled: string): boolean | undefined => {\r\n if (text.includes(disabled)) return false;\r\n if (text.includes(enabled)) return true;\r\n return undefined;\r\n };\r\n const comment = match(\"comment\") ?? flag(\"--comment\", \"--no-comment\")?.toString();\r\n const reviewComments = match(\"review-comments\") ?? flag(\"--review-comments\", \"--no-review-comments\")?.toString();\r\n const commitStatus = match(\"commit-status\") ?? flag(\"--commit-status\", \"--no-commit-status\")?.toString();\r\n if (blocking) result.blocking = parseBlocking(blocking);\r\n if (scope) result.scope = parseScope(scope);\r\n if (comment) result.comment = parseBoolean(comment, \"comment\");\r\n if (reviewComments) result.reviewComments = parseBoolean(reviewComments, \"review-comments\");\r\n if (commitStatus) result.commitStatus = parseBoolean(commitStatus, \"commit-status\");\r\n if (project) result.project = project;\r\n if (directory) result.directory = directory;\r\n return result;\r\n}\r\n\r\nfunction existingProvider(cwd: string): CiProvider | null {\r\n if (fs.existsSync(path.join(cwd, GITHUB_WORKFLOW))) return \"github\";\r\n if (fs.existsSync(path.join(cwd, GITLAB_WORKFLOW))) return \"gitlab\";\r\n return null;\r\n}\r\n\r\nasync function askChoice(question: string, choices: string[], fallback: string): Promise<string> {\r\n const rl = readline.createInterface({ input, output });\r\n try {\r\n const answer = (await rl.question(`${question} (${choices.join(\"/\")}) [${fallback}]: `)).trim();\r\n return answer || fallback;\r\n } finally {\r\n rl.close();\r\n }\r\n}\r\n\r\nasync function completeSettings(options: CiManageOptions, current: Partial<CiSettings>, action: \"install\" | \"config\" | \"upgrade\"): Promise<CiSettings> {\r\n const settings: CiSettings = { ...DEFAULT_SETTINGS, ...current, ...options };\r\n if (options.yes || action === \"upgrade\") return settings;\r\n\r\n settings.provider = parseProvider(await askChoice(\"CI provider\", [\"github\", \"gitlab\"], settings.provider));\r\n settings.blocking = parseBlocking(await askChoice(\"Blocking level\", [\"none\", \"error\", \"warning\"], settings.blocking));\r\n settings.scope = parseScope(await askChoice(\"Pull request scan scope\", [\"changed\", \"files\", \"lines\", \"full\"], settings.scope));\r\n if (settings.provider === \"github\") {\r\n settings.comment = parseBoolean(await askChoice(\"Sticky PR summary comment\", [\"true\", \"false\"], String(settings.comment)), \"comment\");\r\n settings.reviewComments = parseBoolean(await askChoice(\"Inline review comments\", [\"true\", \"false\"], String(settings.reviewComments)), \"review-comments\");\r\n settings.commitStatus = parseBoolean(await askChoice(\"Commit status\", [\"true\", \"false\"], String(settings.commitStatus)), \"commit-status\");\r\n }\r\n return settings;\r\n}\r\n\r\nfunction writeManagedCi(cwd: string, settings: CiSettings): string[] {\r\n if (settings.provider === \"github\") {\r\n const workflow = path.join(cwd, GITHUB_WORKFLOW);\r\n fs.mkdirSync(path.dirname(workflow), { recursive: true });\r\n fs.writeFileSync(workflow, renderGitHubWorkflow(settings));\r\n return [workflow];\r\n }\r\n\r\n const workflow = path.join(cwd, GITLAB_WORKFLOW);\r\n if (fs.existsSync(workflow) && !fs.readFileSync(workflow, \"utf8\").includes(\"react-luau-doctor\")) {\r\n throw new Error(\".gitlab-ci.yml already exists and is not managed by React-Luau Doctor; add the generated job manually instead of overwriting it\");\r\n }\r\n fs.writeFileSync(workflow, renderGitLabWorkflow(settings));\r\n return [workflow];\r\n}\r\n\r\nfunction runCommand(cwd: string, command: string, args: string[], allowFailure = false): string {\r\n const result = spawnSync(command, args, { cwd, encoding: \"utf8\", windowsHide: true });\r\n if (result.error) {\r\n if (allowFailure) return \"\";\r\n throw new Error(`${command} failed: ${result.error.message}`);\r\n }\r\n if ((result.status ?? 1) !== 0) {\r\n if (allowFailure) return \"\";\r\n throw new Error(`${command} ${args.join(\" \")} failed: ${(result.stderr || result.stdout || \"unknown error\").trim()}`);\r\n }\r\n return (result.stdout ?? \"\").trim();\r\n}\r\n\r\nfunction openPullRequest(cwd: string, files: string[], action: \"install\" | \"upgrade\"): void {\r\n findGitRoot(cwd);\r\n if (!runCommand(cwd, \"gh\", [\"--version\"], true)) throw new Error(\"--pr requires the GitHub CLI (gh) to be installed and authenticated\");\r\n const branch = action === \"install\" ? \"chore/add-react-luau-doctor-ci\" : \"chore/upgrade-react-luau-doctor-ci\";\r\n const title = action === \"install\" ? \"Add React-Luau Doctor CI\" : \"Upgrade React-Luau Doctor CI\";\r\n runCommand(cwd, \"git\", [\"switch\", \"-c\", branch]);\r\n runCommand(cwd, \"git\", [\"add\", \"--\", ...files.map((file) => path.relative(cwd, file))]);\r\n runCommand(cwd, \"git\", [\"commit\", \"-m\", title]);\r\n runCommand(cwd, \"git\", [\"push\", \"-u\", \"origin\", branch]);\r\n const url = runCommand(cwd, \"gh\", [\"pr\", \"create\", \"--title\", title, \"--body\", \"Adds React-Luau Doctor pull request analysis.\"]);\r\n process.stdout.write(`${url}\\n`);\r\n}\r\n\r\nasync function runCiManage(action: \"install\" | \"config\" | \"upgrade\", argv: string[]): Promise<void> {\r\n const options = parseCiManageOptions(argv, action);\r\n const provider = options.provider ?? existingProvider(options.cwd) ?? DEFAULT_SETTINGS.provider;\r\n const workflowPath = path.join(options.cwd, provider === \"github\" ? GITHUB_WORKFLOW : GITLAB_WORKFLOW);\r\n const current = parseManagedWorkflowSettings(workflowPath);\r\n const settings = await completeSettings({ ...options, provider }, current, action);\r\n\r\n if (action === \"install\" && fs.existsSync(workflowPath) && !options.yes) {\r\n const overwrite = await askChoice(`${path.relative(options.cwd, workflowPath)} already exists. Replace it`, [\"true\", \"false\"], \"false\");\r\n if (overwrite !== \"true\") return;\r\n }\r\n\r\n const files = writeManagedCi(options.cwd, settings);\r\n for (const filename of files) process.stdout.write(`${action === \"install\" ? \"Installed\" : action === \"config\" ? \"Updated\" : \"Upgraded\"} ${path.relative(options.cwd, filename)}\\n`);\r\n if (options.pr) openPullRequest(options.cwd, files, action === \"install\" ? \"install\" : \"upgrade\");\r\n}\r\n\r\nfunction diagnosticFingerprint(diagnostic: Diagnostic): string {\r\n return `${diagnostic.file}\\0${diagnostic.rule}\\0${diagnostic.severity}\\0${diagnostic.message}`;\r\n}\r\n\r\nfunction countDifference(left: Diagnostic[], right: Diagnostic[]): number {\r\n const counts = new Map<string, number>();\r\n for (const diagnostic of right) {\r\n const key = diagnosticFingerprint(diagnostic);\r\n counts.set(key, (counts.get(key) ?? 0) + 1);\r\n }\r\n let difference = 0;\r\n for (const diagnostic of left) {\r\n const key = diagnosticFingerprint(diagnostic);\r\n const remaining = counts.get(key) ?? 0;\r\n if (remaining > 0) counts.set(key, remaining - 1);\r\n else difference += 1;\r\n }\r\n return difference;\r\n}\r\n\r\nasync function fixedIssueCount(directory: string, base: string): Promise<number> {\r\n const plan = createGitScopePlan(directory, { scope: \"changed\", base });\r\n if (plan.currentFiles.length === 0 && plan.baselineFiles.length === 0) return 0;\r\n const config = loadConfigWithSource(directory).config;\r\n const selected = (file: { relativePath?: string }) => isSelectedLuauPath(file.relativePath ?? \"\", config);\r\n const current = await scanPath(directory, { files: plan.currentFiles.filter(selected), config, categories: config.categories });\r\n const baseline = await scanPath(directory, { files: plan.baselineFiles.filter(selected), config, categories: config.categories });\r\n return countDifference(baseline.diagnostics, current.diagnostics);\r\n}\r\n\r\nfunction resolveCiProjectRoots(directory: string, project: string): string[] {\r\n if (!project || project === \"*\") return [directory];\r\n return project.split(\",\").map((entry) => {\r\n const resolved = path.resolve(directory, entry.trim());\r\n if (!fs.existsSync(resolved) || !fs.statSync(resolved).isDirectory()) throw new Error(`Could not find project: ${entry}`);\r\n return resolved;\r\n });\r\n}\r\n\r\nasync function scanForCi(settings: CiSettings, eventName: string, base?: string, onFixed?: (count: number) => void): Promise<ScanReport> {\r\n const directory = path.resolve(process.cwd(), settings.directory);\r\n const isPullRequest = eventName === \"pull_request\";\r\n const scope: ScanScope = isPullRequest ? settings.scope : \"full\";\r\n const roots = resolveCiProjectRoots(directory, settings.project);\r\n const reports: Array<{ projectRoot: string; report: ScanReport }> = [];\r\n for (const projectRoot of roots) {\r\n const config = loadConfigWithSource(projectRoot).config;\r\n const report = await scanProjectWithScope(projectRoot, {\r\n scope,\r\n base,\r\n minSeverity: \"suggestion\",\r\n categories: config.categories,\r\n respectInlineDisables: config.respectInlineDisables ?? true,\r\n onDelta: onFixed ? (current, baseline) => onFixed(countDifference(baseline, current)) : undefined,\r\n });\r\n reports.push({ projectRoot, report });\r\n }\r\n return roots.length === 1 && roots[0] === directory ? reports[0].report : aggregateReports(directory, reports);\r\n}\r\n\r\ninterface ReviewChanges {\r\n diagnostics: Diagnostic[];\r\n base?: string;\r\n}\r\n\r\nasync function findNewReviewDiagnostics(\r\n settings: CiSettings,\r\n eventName: string,\r\n event: GitHubEvent,\r\n currentReport: ScanReport,\r\n): Promise<ReviewChanges> {\r\n if (event.action === \"synchronize\" && event.before) {\r\n const report = await scanForCi({ ...settings, scope: \"changed\" }, eventName, event.before);\r\n return { diagnostics: report.diagnostics, base: event.before };\r\n }\r\n if (event.action && event.action !== \"opened\") return { diagnostics: [] };\r\n return { diagnostics: currentReport.diagnostics };\r\n}\r\n\r\nfunction shouldBlock(report: ScanReport, level: BlockingLevel): boolean {\r\n if (level === \"none\") return false;\r\n if (level === \"warning\") return report.counts.error > 0 || report.counts.warning > 0;\r\n return report.counts.error > 0;\r\n}\r\n\r\nfunction affectedFiles(report: ScanReport): number {\r\n return new Set(report.diagnostics.map((diagnostic) => diagnostic.file)).size;\r\n}\r\n\r\nfunction writeOutput(name: string, value: string | number): void {\r\n const outputFile = process.env.GITHUB_OUTPUT;\r\n if (!outputFile) return;\r\n fs.appendFileSync(outputFile, `${name}=${value}\\n`);\r\n}\r\n\r\nfunction githubEvent(): GitHubEvent {\r\n const filename = process.env.GITHUB_EVENT_PATH;\r\n if (!filename || !fs.existsSync(filename)) return {};\r\n return JSON.parse(fs.readFileSync(filename, \"utf8\")) as GitHubEvent;\r\n}\r\n\r\nfunction githubRepo(event: GitHubEvent): string | null {\r\n return process.env.GITHUB_REPOSITORY ?? event.repository?.full_name ?? null;\r\n}\r\n\r\nfunction githubRunUrl(): string | null {\r\n const server = process.env.GITHUB_SERVER_URL;\r\n const repository = process.env.GITHUB_REPOSITORY;\r\n const runId = process.env.GITHUB_RUN_ID;\r\n return server && repository && runId ? `${server}/${repository}/actions/runs/${runId}` : null;\r\n}\r\n\r\nfunction wait(milliseconds: number): Promise<void> {\r\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\r\n}\r\n\r\nfunction errorMessage(error: unknown): string {\r\n return error instanceof Error ? error.message : String(error);\r\n}\r\n\r\nfunction githubRetryDelay(response: Response, responseText: string, attempt: number): number | null {\r\n const remaining = response.headers.get(\"x-ratelimit-remaining\");\r\n const rateLimited = response.status === 429\r\n || (response.status === 403 && (remaining === \"0\" || /rate limit|rate_limit|abuse detection/i.test(responseText)))\r\n || (response.status === 200 && /\"errors\"\\s*:/.test(responseText) && /rate limit|rate_limit/i.test(responseText));\r\n if (!rateLimited) return null;\r\n\r\n const retryAfter = response.headers.get(\"retry-after\");\r\n if (retryAfter) {\r\n const seconds = Number(retryAfter);\r\n if (Number.isFinite(seconds) && seconds >= 0) return seconds * 1000;\r\n const date = Date.parse(retryAfter);\r\n if (Number.isFinite(date)) return Math.max(0, date - Date.now());\r\n }\r\n\r\n if (remaining === \"0\") {\r\n const reset = Number(response.headers.get(\"x-ratelimit-reset\"));\r\n if (Number.isFinite(reset)) return Math.max(0, reset * 1000 - Date.now() + 1000);\r\n }\r\n\r\n return 60_000 * (2 ** attempt);\r\n}\r\n\r\nasync function githubRequest<T>(url: string, options: { method?: string; body?: unknown } = {}): Promise<T> {\r\n const token = process.env.GITHUB_TOKEN;\r\n if (!token) throw new Error(\"GITHUB_TOKEN is unavailable\");\r\n for (let attempt = 0; ; attempt += 1) {\r\n const response = await fetch(url, {\r\n method: options.method ?? \"GET\",\r\n headers: {\r\n Accept: \"application/vnd.github+json\",\r\n Authorization: `Bearer ${token}`,\r\n \"X-GitHub-Api-Version\": \"2022-11-28\",\r\n \"User-Agent\": \"react-luau-doctor\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\r\n });\r\n const responseText = response.status === 204 ? \"\" : await response.text();\r\n const delay = githubRetryDelay(response, responseText, attempt);\r\n if (response.ok && delay === null) return responseText ? JSON.parse(responseText) as T : undefined as T;\r\n if (delay === null || attempt >= MAX_GITHUB_RETRIES || delay > MAX_RATE_LIMIT_WAIT_MS) {\r\n const retryDetail = delay !== null && delay > MAX_RATE_LIMIT_WAIT_MS\r\n ? ` Retry after ${Math.ceil(delay / 1000)} seconds.`\r\n : \"\";\r\n throw new Error(`GitHub API ${response.status}: ${responseText}${retryDetail}`);\r\n }\r\n process.stderr.write(`react-luau-doctor: GitHub API ${response.status}; retrying in ${Math.ceil(delay / 1000)} seconds\\n`);\r\n await wait(delay);\r\n }\r\n}\r\n\r\nasync function githubApi<T>(repo: string, endpoint: string, options: { method?: string; body?: unknown } = {}): Promise<T> {\r\n const apiBase = (process.env.GITHUB_API_URL ?? \"https://api.github.com\").replace(/\\/$/, \"\");\r\n return githubRequest<T>(`${apiBase}/repos/${repo}${endpoint}`, options);\r\n}\r\n\r\nfunction repoRelativeDiagnosticPath(directory: string, diagnosticFile: string): string {\r\n const absoluteDirectory = path.resolve(directory);\r\n const repoRoot = findGitRoot(absoluteDirectory);\r\n const prefix = path.relative(repoRoot, absoluteDirectory).split(path.sep).join(\"/\");\r\n return prefix && prefix !== \".\" ? path.posix.join(prefix, diagnosticFile) : diagnosticFile;\r\n}\r\n\r\nfunction githubFileUrl(repo: string, sha: string, diagnostic: Diagnostic, directory: string): string {\r\n const server = process.env.GITHUB_SERVER_URL ?? \"https://github.com\";\r\n const repoPath = repoRelativeDiagnosticPath(directory, diagnostic.file);\r\n const encoded = repoPath.split(\"/\").map(encodeURIComponent).join(\"/\");\r\n return `${server}/${repo}/blob/${sha}/${encoded}#L${diagnostic.location.line}`;\r\n}\r\n\r\nfunction renderSummaryComment(report: ScanReport, repo: string, sha: string, fixed: number, skipped: boolean, directory: string): string {\r\n if (skipped) {\r\n return `${SUMMARY_MARKER}\\n## React-Luau Doctor\\n\\nNo eligible React-Luau files changed in this pull request, so the scan was skipped.\\n`;\r\n }\r\n\r\n const lines = [\r\n SUMMARY_MARKER,\r\n \"## React-Luau Doctor\",\r\n \"\",\r\n `**${report.counts.error} errors · ${report.counts.warning} warnings · ${report.counts.suggestion} suggestions · Score ${report.score}/100**`,\r\n \"\",\r\n `${report.diagnostics.length} ${report.scope === \"changed\" ? \"introduced finding\" : \"reported finding\"}${report.diagnostics.length === 1 ? \"\" : \"s\"} · ${fixed} fixed`,\r\n ];\r\n\r\n const errors = report.diagnostics.filter((diagnostic) => diagnostic.severity === \"error\").slice(0, 20);\r\n if (errors.length > 0) {\r\n lines.push(\"\", \"### Errors\");\r\n for (const diagnostic of errors) {\r\n lines.push(`- [\\`${diagnostic.file}:${diagnostic.location.line}\\`](${githubFileUrl(repo, sha, diagnostic, directory)}) **${diagnostic.rule}**: ${diagnostic.message}`);\r\n }\r\n }\r\n\r\n const warningsByFile = new Map<string, Diagnostic[]>();\r\n for (const diagnostic of report.diagnostics.filter((entry) => entry.severity === \"warning\").slice(0, 50)) {\r\n const entries = warningsByFile.get(diagnostic.file) ?? [];\r\n entries.push(diagnostic);\r\n warningsByFile.set(diagnostic.file, entries);\r\n }\r\n if (warningsByFile.size > 0) {\r\n lines.push(\"\", \"### Warnings\");\r\n for (const [file, diagnostics] of warningsByFile) {\r\n lines.push(`- **${file}**`);\r\n for (const diagnostic of diagnostics) lines.push(` - [line ${diagnostic.location.line}](${githubFileUrl(repo, sha, diagnostic, directory)}): ${diagnostic.message}`);\r\n }\r\n }\r\n\r\n if (report.diagnostics.length > errors.length + [...warningsByFile.values()].reduce((sum, entries) => sum + entries.length, 0)) {\r\n lines.push(\"\", \"Additional findings are available in the workflow logs.\");\r\n }\r\n const runUrl = githubRunUrl();\r\n if (runUrl) lines.push(\"\", `[View full workflow run](${runUrl})`);\r\n lines.push(\"\", `<sub>Reviewed commit \\`${sha.slice(0, 7)}\\`</sub>`);\r\n return `${lines.join(\"\\n\")}\\n`;\r\n}\r\n\r\ninterface GitHubComment { id: number; body?: string; user?: { type?: string; login?: string } }\r\n\r\nasync function listComments(repo: string, endpoint: string): Promise<GitHubComment[]> {\r\n const comments: GitHubComment[] = [];\r\n for (let page = 1; ; page += 1) {\r\n const batch = await githubApi<GitHubComment[]>(repo, `${endpoint}?per_page=100&page=${page}`);\r\n comments.push(...batch);\r\n if (batch.length < 100) return comments;\r\n }\r\n}\r\n\r\nfunction isDoctorComment(comment: GitHubComment, marker: string): boolean {\r\n return comment.user?.type === \"Bot\" && comment.body?.startsWith(marker) === true;\r\n}\r\n\r\nasync function updateStickyComment(repo: string, pullNumber: number, body: string, createIfMissing = true): Promise<void> {\r\n const comments = await listComments(repo, `/issues/${pullNumber}/comments`);\r\n const previous = comments.find((comment) => isDoctorComment(comment, SUMMARY_MARKER));\r\n if (previous) await githubApi(repo, `/issues/comments/${previous.id}`, { method: \"PATCH\", body: { body } });\r\n else if (createIfMissing) await githubApi(repo, `/issues/${pullNumber}/comments`, { method: \"POST\", body: { body } });\r\n}\r\n\r\nfunction changedLineMap(directory: string, base: string): Map<string, LineRange[]> {\r\n return createGitScopePlan(directory, { scope: \"lines\", base }).changedLines;\r\n}\r\n\r\nfunction touchesChangedLine(diagnostic: Diagnostic, ranges: LineRange[]): boolean {\r\n return ranges.some((range) => diagnostic.location.line >= range.start && diagnostic.location.line <= range.end);\r\n}\r\n\r\nfunction reviewFingerprint(pathname: string, rule: string, severity: string, message: string): string {\r\n // Line numbers move as a PR changes. Keep the original thread when the finding itself is unchanged.\r\n return createHash(\"sha256\").update(`${pathname}\\0${rule}\\0${severity}\\0${message}`).digest(\"hex\").slice(0, 32);\r\n}\r\n\r\nfunction diagnosticReviewFingerprint(directory: string, diagnostic: Diagnostic): string {\r\n return reviewFingerprint(\r\n repoRelativeDiagnosticPath(directory, diagnostic.file),\r\n diagnostic.rule,\r\n diagnostic.severity,\r\n diagnostic.message,\r\n );\r\n}\r\n\r\nfunction fingerprintFromReviewBody(body: string, pathname: string): string | null {\r\n const marker = body.match(/<!-- react-luau-doctor:fingerprint:([a-f0-9]{32}) -->/i);\r\n if (marker) return marker[1].toLowerCase();\r\n\r\n const legacy = body.match(/\\*\\*React-Luau Doctor\\*\\* · `([^`]+)` \\((error|warning|suggestion)\\)\\n\\n([^\\n]+)/);\r\n return legacy ? reviewFingerprint(pathname, legacy[1], legacy[2], legacy[3]) : null;\r\n}\r\n\r\nfunction reviewCommentBody(directory: string, diagnostic: Diagnostic): string {\r\n const fingerprint = diagnosticReviewFingerprint(directory, diagnostic);\r\n return `${REVIEW_MARKER}\\n<!-- react-luau-doctor:fingerprint:${fingerprint} -->\\n**React-Luau Doctor** · \\`${diagnostic.rule}\\` (${diagnostic.severity})\\n\\n${diagnostic.message}${diagnostic.help ? `\\n\\n${diagnostic.help}` : \"\"}`;\r\n}\r\n\r\ninterface GitHubReviewComment {\r\n id: number;\r\n pull_request_review_id: number;\r\n path: string;\r\n position: number | null;\r\n body: string;\r\n user: { type?: string } | null;\r\n}\r\n\r\ninterface GitHubReview {\r\n id: number;\r\n body: string | null;\r\n user: { type?: string } | null;\r\n}\r\n\r\nconst ARCHIVED_REVIEW_BODY = \"✅ React-Luau Doctor: findings from this review are no longer current. Active findings, if any, are shown in newer reviews.\";\r\n\r\nasync function listReviewComments(repo: string, pullNumber: number): Promise<GitHubReviewComment[]> {\r\n const comments: GitHubReviewComment[] = [];\r\n for (let page = 1; ; page += 1) {\r\n const batch = await githubApi<GitHubReviewComment[]>(repo, `/pulls/${pullNumber}/comments?per_page=100&page=${page}`);\r\n comments.push(...batch);\r\n if (batch.length < 100) return comments;\r\n }\r\n}\r\n\r\nasync function listReviews(repo: string, pullNumber: number): Promise<GitHubReview[]> {\r\n const reviews: GitHubReview[] = [];\r\n for (let page = 1; ; page += 1) {\r\n const batch = await githubApi<GitHubReview[]>(repo, `/pulls/${pullNumber}/reviews?per_page=100&page=${page}`);\r\n reviews.push(...batch);\r\n if (batch.length < 100) return reviews;\r\n }\r\n}\r\n\r\nfunction isDoctorReview(review: GitHubReview): boolean {\r\n return review.user?.type === \"Bot\" && (review.body?.includes(\"React-Luau Doctor\") ?? false);\r\n}\r\n\r\nfunction doctorReviewCommentFingerprint(comment: GitHubReviewComment): string | null {\r\n if (comment.user?.type !== \"Bot\" || !comment.body.startsWith(REVIEW_MARKER)) return null;\r\n return fingerprintFromReviewBody(comment.body, comment.path);\r\n}\r\n\r\nfunction takeCount(counts: Map<string, number>, key: string): boolean {\r\n const count = counts.get(key) ?? 0;\r\n if (count === 0) return false;\r\n counts.set(key, count - 1);\r\n return true;\r\n}\r\n\r\nfunction incrementCount(counts: Map<string, number>, key: string): void {\r\n counts.set(key, (counts.get(key) ?? 0) + 1);\r\n}\r\n\r\nasync function manageReviewComments(\r\n repo: string,\r\n pullNumber: number,\r\n currentReport: ScanReport,\r\n newDiagnostics: Diagnostic[],\r\n directory: string,\r\n newBase: string,\r\n pullBase: string,\r\n): Promise<void> {\r\n const [allReviewComments, reviews] = await Promise.all([\r\n listReviewComments(repo, pullNumber),\r\n listReviews(repo, pullNumber),\r\n ]);\r\n const reviewComments = allReviewComments\r\n .map((comment) => ({ comment, fingerprint: doctorReviewCommentFingerprint(comment) }))\r\n .filter((entry): entry is { comment: GitHubReviewComment; fingerprint: string } => entry.fingerprint !== null);\r\n\r\n const activeCounts = new Map<string, number>();\r\n for (const diagnostic of currentReport.diagnostics) incrementCount(activeCounts, diagnosticReviewFingerprint(directory, diagnostic));\r\n\r\n const newCounts = new Map<string, number>();\r\n for (const diagnostic of newDiagnostics) incrementCount(newCounts, diagnosticReviewFingerprint(directory, diagnostic));\r\n\r\n interface StaleComment {\r\n comment: GitHubReviewComment;\r\n fingerprint: string;\r\n needsReplacement: boolean;\r\n }\r\n\r\n const replacementCounts = new Map<string, number>();\r\n const staleComments: StaleComment[] = [];\r\n\r\n // Prefer live comments when duplicate fingerprints exist. Outdated comments\r\n // have position=null in GitHub's REST API and should never suppress a current\r\n // inline comment for the same finding.\r\n const orderedComments = reviewComments.slice().sort((left, right) =>\r\n Number(left.comment.position === null) - Number(right.comment.position === null));\r\n\r\n for (const { comment, fingerprint } of orderedComments) {\r\n if (comment.position !== null && takeCount(activeCounts, fingerprint)) {\r\n // A live existing comment represents this finding. Consume the introduced\r\n // occurrence too so workflow reruns do not create duplicates.\r\n takeCount(newCounts, fingerprint);\r\n continue;\r\n }\r\n\r\n const needsReplacement = takeCount(activeCounts, fingerprint);\r\n if (needsReplacement) {\r\n incrementCount(replacementCounts, fingerprint);\r\n // Replacing an outdated comment also satisfies a newly introduced copy of\r\n // the same finding, if this push reintroduced it.\r\n takeCount(newCounts, fingerprint);\r\n }\r\n staleComments.push({ comment, fingerprint, needsReplacement });\r\n }\r\n\r\n const newLineMap = newCounts.size > 0 || (newBase === pullBase && replacementCounts.size > 0)\r\n ? changedLineMap(directory, newBase)\r\n : new Map<string, LineRange[]>();\r\n const pullLineMap = newBase === pullBase\r\n ? newLineMap\r\n : replacementCounts.size > 0\r\n ? changedLineMap(directory, pullBase)\r\n : new Map<string, LineRange[]>();\r\n const candidates: Array<{ diagnostic: Diagnostic; replacement: boolean }> = [];\r\n\r\n for (const diagnostic of newDiagnostics) {\r\n if (!touchesChangedLine(diagnostic, newLineMap.get(diagnostic.file) ?? [])) continue;\r\n const fingerprint = diagnosticReviewFingerprint(directory, diagnostic);\r\n if (!takeCount(newCounts, fingerprint)) continue;\r\n candidates.push({ diagnostic, replacement: false });\r\n }\r\n\r\n for (const diagnostic of currentReport.diagnostics) {\r\n if (!touchesChangedLine(diagnostic, pullLineMap.get(diagnostic.file) ?? [])) continue;\r\n const fingerprint = diagnosticReviewFingerprint(directory, diagnostic);\r\n if (!takeCount(replacementCounts, fingerprint)) continue;\r\n candidates.push({ diagnostic, replacement: true });\r\n }\r\n\r\n const selected = candidates.slice(0, MAX_REVIEW_COMMENTS);\r\n const comments = selected.map(({ diagnostic }) => ({\r\n path: repoRelativeDiagnosticPath(directory, diagnostic.file),\r\n line: diagnostic.location.line,\r\n side: \"RIGHT\",\r\n body: reviewCommentBody(directory, diagnostic),\r\n }));\r\n\r\n const failures: string[] = [];\r\n let postedNewComments = true;\r\n if (comments.length > 0) {\r\n try {\r\n await githubApi(repo, `/pulls/${pullNumber}/reviews`, {\r\n method: \"POST\",\r\n body: { event: \"COMMENT\", body: \"React-Luau Doctor found new issues\", comments },\r\n });\r\n } catch (error) {\r\n postedNewComments = false;\r\n failures.push(`could not create new review comments: ${errorMessage(error)}`);\r\n }\r\n }\r\n\r\n // Do not remove old feedback if a replacement review failed to post. Fixed\r\n // findings can be deleted immediately when there was nothing new to publish.\r\n if (postedNewComments) {\r\n const postedReplacementCounts = new Map<string, number>();\r\n for (const candidate of selected) {\r\n if (candidate.replacement) incrementCount(postedReplacementCounts, diagnosticReviewFingerprint(directory, candidate.diagnostic));\r\n }\r\n\r\n const remainingByReview = new Map<number, number>();\r\n for (const { comment } of reviewComments) {\r\n remainingByReview.set(comment.pull_request_review_id, (remainingByReview.get(comment.pull_request_review_id) ?? 0) + 1);\r\n }\r\n for (const stale of staleComments) {\r\n if (stale.needsReplacement && !takeCount(postedReplacementCounts, stale.fingerprint)) continue;\r\n try {\r\n await githubApi<void>(repo, `/pulls/comments/${stale.comment.id}`, { method: \"DELETE\" });\r\n const reviewId = stale.comment.pull_request_review_id;\r\n const remaining = Math.max(0, (remainingByReview.get(reviewId) ?? 1) - 1);\r\n remainingByReview.set(reviewId, remaining);\r\n } catch (error) {\r\n failures.push(`could not delete stale review comment ${stale.comment.id}: ${errorMessage(error)}`);\r\n }\r\n }\r\n\r\n // Submitted reviews themselves cannot be deleted. Rewrite any old Doctor\r\n // review that no longer has Doctor comments so the PR timeline does not\r\n // accumulate blank review cards. This also cleans up blank reviews created\r\n // by older Doctor versions on the next run.\r\n for (const review of reviews) {\r\n if (!isDoctorReview(review) || review.body === ARCHIVED_REVIEW_BODY) continue;\r\n if ((remainingByReview.get(review.id) ?? 0) > 0) continue;\r\n try {\r\n await githubApi(repo, `/pulls/${pullNumber}/reviews/${review.id}`, {\r\n method: \"PUT\",\r\n body: { body: ARCHIVED_REVIEW_BODY },\r\n });\r\n } catch (error) {\r\n failures.push(`could not archive empty review ${review.id}: ${errorMessage(error)}`);\r\n }\r\n }\r\n }\r\n\r\n if (failures.length > 0) throw new Error(failures.join(\"; \"));\r\n}\r\n\r\nasync function publishCommitStatus(repo: string, sha: string, report: ScanReport, blocking: BlockingLevel): Promise<void> {\r\n const blocked = shouldBlock(report, blocking);\r\n await githubApi(repo, `/statuses/${sha}`, {\r\n method: \"POST\",\r\n body: {\r\n state: blocked ? \"failure\" : \"success\",\r\n context: \"React-Luau Doctor\",\r\n description: `Score ${report.score}/100 · ${report.counts.error} errors · ${report.counts.warning} warnings`,\r\n target_url: githubRunUrl() ?? undefined,\r\n },\r\n });\r\n}\r\n\r\ninterface CiRunOptions extends CiSettings {}\r\n\r\nfunction parseCiRunOptions(argv: string[]): CiRunOptions {\r\n const settings = { ...DEFAULT_SETTINGS };\r\n for (let index = 0; index < argv.length; index += 1) {\r\n const arg = argv[index];\r\n if (arg === \"--directory\") {\r\n const parsed = nextValue(argv, index, arg);\r\n settings.directory = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--project\") {\r\n const parsed = nextValue(argv, index, arg);\r\n settings.project = parsed.value;\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--blocking\") {\r\n const parsed = nextValue(argv, index, arg);\r\n settings.blocking = parseBlocking(parsed.value);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--scope\") {\r\n const parsed = nextValue(argv, index, arg);\r\n settings.scope = parseScope(parsed.value);\r\n index = parsed.nextIndex;\r\n } else if (arg === \"--comment\") settings.comment = true;\r\n else if (arg === \"--no-comment\") settings.comment = false;\r\n else if (arg === \"--review-comments\") settings.reviewComments = true;\r\n else if (arg === \"--no-review-comments\") settings.reviewComments = false;\r\n else if (arg === \"--commit-status\") settings.commitStatus = true;\r\n else if (arg === \"--no-commit-status\") settings.commitStatus = false;\r\n else throw new Error(`Unknown ci run option: ${arg}`);\r\n }\r\n return settings;\r\n}\r\n\r\nasync function runCiJob(argv: string[]): Promise<void> {\r\n const settings = parseCiRunOptions(argv);\r\n const eventName = process.env.GITHUB_EVENT_NAME ?? \"\";\r\n const event = githubEvent();\r\n const isPullRequest = eventName === \"pull_request\" && event.pull_request !== undefined;\r\n const base = isPullRequest ? event.pull_request!.base.sha : undefined;\r\n const head = isPullRequest ? event.pull_request!.head.sha : process.env.GITHUB_SHA ?? \"HEAD\";\r\n let fixedFromScan: number | undefined;\r\n const report = await scanForCi(settings, eventName, base, (count) => {\r\n fixedFromScan = (fixedFromScan ?? 0) + count;\r\n });\r\n const reviewChanges: ReviewChanges = isPullRequest\r\n ? await findNewReviewDiagnostics(settings, eventName, event, report)\r\n : { diagnostics: [] };\r\n const fixed = isPullRequest && base\r\n ? (fixedFromScan ?? (await Promise.all(resolveCiProjectRoots(path.resolve(settings.directory), settings.project).map(root => fixedIssueCount(root, base)))).reduce((sum, count) => sum + count, 0))\r\n : 0;\r\n const skipped = isPullRequest && report.scannedFiles === 0 && fixed === 0;\r\n const effectiveBlocking = isPullRequest ? settings.blocking : \"none\";\r\n\r\n process.stdout.write(`${renderTextReport(report, true, false, false, process.stdout.columns ?? 120)}\\n`);\r\n const annotations = renderAnnotations(report);\r\n if (annotations) process.stdout.write(`${annotations}\\n`);\r\n\r\n writeOutput(\"score\", report.score);\r\n writeOutput(\"total-issues\", report.diagnostics.length);\r\n writeOutput(\"fixed-issues\", fixed);\r\n writeOutput(\"error-count\", report.counts.error);\r\n writeOutput(\"warning-count\", report.counts.warning);\r\n writeOutput(\"affected-files\", affectedFiles(report));\r\n\r\n const repo = githubRepo(event);\r\n if (repo && isPullRequest) {\r\n const pullNumber = event.pull_request!.number;\r\n if (settings.comment) {\r\n try {\r\n await updateStickyComment(repo, pullNumber, renderSummaryComment(report, repo, head, fixed, skipped, settings.directory), !skipped);\r\n } catch (error) {\r\n process.stderr.write(`react-luau-doctor: could not update the sticky PR comment: ${errorMessage(error)}\\n`);\r\n }\r\n }\r\n if (settings.reviewComments && base) {\r\n try {\r\n await manageReviewComments(\r\n repo,\r\n pullNumber,\r\n report,\r\n reviewChanges.diagnostics,\r\n path.resolve(settings.directory),\r\n reviewChanges.base ?? base,\r\n base,\r\n );\r\n } catch (error) {\r\n process.stderr.write(`react-luau-doctor: could not update inline review comments: ${errorMessage(error)}\\n`);\r\n }\r\n }\r\n }\r\n\r\n if (repo && settings.commitStatus) {\r\n try {\r\n await publishCommitStatus(repo, head, report, effectiveBlocking);\r\n } catch (error) {\r\n process.stderr.write(`react-luau-doctor: could not publish the commit status: ${errorMessage(error)}\\n`);\r\n }\r\n }\r\n\r\n if (shouldBlock(report, effectiveBlocking)) process.exitCode = 1;\r\n}\r\n\r\nexport async function runCiCommand(argv: string[]): Promise<void> {\r\n const action = argv[0];\r\n if (action === \"install\" || action === \"config\" || action === \"upgrade\") {\r\n await runCiManage(action, argv.slice(1));\r\n return;\r\n }\r\n if (action === \"run\") {\r\n await runCiJob(argv.slice(1));\r\n return;\r\n }\r\n throw new Error(\"ci requires install, config, or upgrade\");\r\n}\r\n",
|
|
42
44
|
"import fs from \"node:fs\";\r\nimport path from \"node:path\";\r\nimport type { DoctorConfig } from \"./types\";\r\n\r\nconst DEFAULT_IGNORES = new Set([\r\n \".git\",\r\n \"node_modules\",\r\n \"Packages\",\r\n \"DevPackages\",\r\n \"ServerPackages\",\r\n \"build\",\r\n \"dist\",\r\n \"out\",\r\n \"vendor\",\r\n \"coverage\",\r\n]);\r\n\r\nfunction normalize(value: string): string {\r\n return value.split(path.sep).join(\"/\");\r\n}\r\n\r\nfunction wildcardToRegex(pattern: string): RegExp {\r\n const normalized = normalize(pattern);\r\n let source = \"\";\r\n\r\n for (let index = 0; index < normalized.length; index += 1) {\r\n const char = normalized[index];\r\n const next = normalized[index + 1];\r\n const afterNext = normalized[index + 2];\r\n\r\n if (char === \"*\" && next === \"*\" && afterNext === \"/\") {\r\n source += \"(?:.*/)?\";\r\n index += 2;\r\n continue;\r\n }\r\n if (char === \"*\" && next === \"*\") {\r\n source += \".*\";\r\n index += 1;\r\n continue;\r\n }\r\n if (char === \"*\") {\r\n source += \"[^/]*\";\r\n continue;\r\n }\r\n if (char === \"?\") {\r\n source += \"[^/]\";\r\n continue;\r\n }\r\n\r\n source += /[.+^${}()|[\\]\\\\]/.test(char) ? `\\\\${char}` : char;\r\n }\r\n\r\n return new RegExp(`^${source}$`);\r\n}\r\n\r\nfunction matchesAny(relative: string, patterns: string[] | undefined): boolean {\r\n if (!patterns || patterns.length === 0) return false;\r\n const normalized = normalize(relative);\r\n return patterns.some((pattern) => wildcardToRegex(pattern).test(normalized));\r\n}\r\n\r\nfunction isLuauFile(filename: string): boolean {\r\n return filename.endsWith(\".lua\") || filename.endsWith(\".luau\");\r\n}\r\n\r\n/**\r\n * Apply the same include/ignore selection used by directory discovery to a\r\n * project-root-relative file path. Git scopes supply explicit file inputs, so\r\n * they must call this instead of relying on discoverLuauFiles to filter them.\r\n */\r\nexport function isSelectedLuauPath(relativePath: string, config: DoctorConfig): boolean {\r\n const normalized = normalize(relativePath).replace(/^\\.\\//, \"\");\r\n if (!isLuauFile(normalized)) return false;\r\n\r\n const segments = normalized.split(\"/\");\r\n let directory = \"\";\r\n for (const segment of segments.slice(0, -1)) {\r\n if (DEFAULT_IGNORES.has(segment)) return false;\r\n directory = directory ? `${directory}/${segment}` : segment;\r\n if (matchesAny(`${directory}/`, config.ignore)) return false;\r\n }\r\n\r\n if (matchesAny(normalized, config.ignore)) return false;\r\n if (config.include && config.include.length > 0 && !matchesAny(normalized, config.include)) return false;\r\n return true;\r\n}\r\n\r\nexport function discoverLuauFiles(root: string, config: DoctorConfig, patternRoot = root): string[] {\r\n const targetStat = fs.statSync(root);\r\n if (targetStat.isFile()) {\r\n return isLuauFile(root) ? [root] : [];\r\n }\r\n if (!targetStat.isDirectory()) return [];\r\n\r\n const results: string[] = [];\r\n\r\n const visit = (directory: string): void => {\r\n for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {\r\n const absolute = path.join(directory, entry.name);\r\n const relative = path.relative(patternRoot, absolute);\r\n\r\n if (entry.isDirectory()) {\r\n if (DEFAULT_IGNORES.has(entry.name) || matchesAny(`${normalize(relative)}/`, config.ignore)) continue;\r\n visit(absolute);\r\n continue;\r\n }\r\n\r\n if (!entry.isFile() || !isLuauFile(entry.name)) continue;\r\n if (!isSelectedLuauPath(relative, config)) continue;\r\n results.push(absolute);\r\n }\r\n };\r\n\r\n visit(root);\r\n return results.sort();\r\n}\r\n",
|
|
@@ -60,7 +62,7 @@
|
|
|
60
62
|
"import { presentationFor } from \"./presentation\";\r\nimport { compactFixPreview, previewLineMatches } from \"./fix-preview\";\r\nimport { rulesById } from \"./rules\";\r\nimport type { Diagnostic, Severity } from \"./types\";\r\n\r\nexport const WHY_ANSI = {\r\n reset: \"\\u001b[0m\",\r\n bold: \"\\u001b[1m\",\r\n dim: \"\\u001b[2m\",\r\n red: \"\\u001b[31m\",\r\n yellow: \"\\u001b[33m\",\r\n magenta: \"\\u001b[35m\",\r\n};\r\n\r\nfunction whyRgb(red: number, green: number, blue: number): string {\r\n return `\\u001b[38;2;${red};${green};${blue}m`;\r\n}\r\n\r\nfunction whyBgRgb(red: number, green: number, blue: number): string {\r\n return `\\u001b[48;2;${red};${green};${blue}m`;\r\n}\r\n\r\n// Close to VS Code's Dark+ semantic-token palette. Truecolor ANSI is supported by\r\n// Windows Terminal, modern PowerShell terminals, and the terminals most people use\r\n// to run the Doctor\r\nexport const WHY_THEME = {\r\n foreground: whyRgb(212, 212, 212),\r\n variable: whyRgb(156, 220, 254),\r\n function: whyRgb(220, 220, 170),\r\n string: whyRgb(206, 145, 120),\r\n number: whyRgb(181, 206, 168),\r\n comment: whyRgb(106, 153, 85),\r\n type: whyRgb(78, 201, 176),\r\n keyword: whyRgb(197, 134, 192),\r\n declarationKeyword: whyRgb(86, 156, 214),\r\n literal: whyRgb(86, 156, 214),\r\n property: whyRgb(156, 220, 254),\r\n section: whyRgb(78, 201, 176),\r\n category: whyRgb(79, 193, 255),\r\n gutter: whyRgb(96, 96, 96),\r\n activeGutter: whyRgb(244, 71, 71),\r\n addedBackground: whyBgRgb(36, 72, 48),\r\n removedBackground: whyBgRgb(82, 43, 47),\r\n addedLabelBackground: whyBgRgb(28, 83, 50),\r\n removedLabelBackground: whyBgRgb(103, 45, 50),\r\n};\r\n\r\nexport function whyPaint(enabled: boolean, value: string, ...codes: string[]): string {\r\n if (!enabled || codes.length === 0) return value;\r\n\r\n return `${codes.join(\"\")}${value}${WHY_ANSI.reset}`;\r\n}\r\n\r\nfunction whySeverityPaint(\r\n enabled: boolean,\r\n severity: Severity,\r\n value: string,\r\n): string {\r\n if (severity === \"error\")\r\n return whyPaint(enabled, value, WHY_ANSI.bold, WHY_ANSI.red);\r\n\r\n if (severity === \"warning\")\r\n return whyPaint(enabled, value, WHY_ANSI.bold, WHY_ANSI.yellow);\r\n\r\n return whyPaint(enabled, value, WHY_ANSI.bold, WHY_ANSI.magenta);\r\n}\r\n\r\nexport function whySectionTitle(enabled: boolean, value: string): string {\r\n return whyPaint(enabled, value, WHY_ANSI.bold, WHY_THEME.section);\r\n}\r\n\r\nconst LUAU_CONTROL_KEYWORDS = new Set([\r\n \"and\",\r\n \"break\",\r\n \"continue\",\r\n \"do\",\r\n \"else\",\r\n \"elseif\",\r\n \"end\",\r\n \"for\",\r\n \"if\",\r\n \"in\",\r\n \"not\",\r\n \"or\",\r\n \"repeat\",\r\n \"return\",\r\n \"then\",\r\n \"until\",\r\n \"while\",\r\n]);\r\n\r\nconst LUAU_DECLARATION_KEYWORDS = new Set([\r\n \"export\",\r\n \"function\",\r\n \"local\",\r\n \"type\",\r\n]);\r\n\r\nconst LUAU_LITERAL_KEYWORDS = new Set([\"false\", \"nil\", \"true\"]);\r\n\r\ntype WhyLuauTokenKind =\r\n \"whitespace\" | \"comment\" | \"string\" | \"number\" | \"identifier\" | \"operator\";\r\n\r\ninterface WhyLuauToken {\r\n kind: WhyLuauTokenKind;\r\n text: string;\r\n start: number;\r\n end: number;\r\n}\r\n\r\ninterface WhyCharacterRange {\r\n start: number;\r\n end: number;\r\n}\r\n\r\nfunction tokenizeWhyLuauLine(line: string): WhyLuauToken[] {\r\n const tokens: WhyLuauToken[] = [];\r\n let index = 0;\r\n\r\n const push = (kind: WhyLuauTokenKind, value: string, start: number): void => {\r\n tokens.push({ kind, text: value, start, end: start + value.length });\r\n };\r\n\r\n while (index < line.length) {\r\n const rest = line.slice(index);\r\n const ch = line[index];\r\n\r\n const whitespace = /^\\s+/.exec(rest);\r\n\r\n if (whitespace) {\r\n push(\"whitespace\", whitespace[0], index);\r\n index += whitespace[0].length;\r\n continue;\r\n }\r\n\r\n if (rest.startsWith(\"--\")) {\r\n push(\"comment\", rest, index);\r\n break;\r\n }\r\n\r\n if (ch === '\"' || ch === \"'\" || ch === \"`\") {\r\n let tokenEnd = index + 1;\r\n\r\n while (tokenEnd < line.length) {\r\n if (line.charCodeAt(tokenEnd) === 92) {\r\n tokenEnd += 2;\r\n continue;\r\n }\r\n\r\n if (line[tokenEnd] === ch) {\r\n tokenEnd += 1;\r\n break;\r\n }\r\n\r\n tokenEnd += 1;\r\n }\r\n\r\n push(\"string\", line.slice(index, tokenEnd), index);\r\n index = tokenEnd;\r\n continue;\r\n }\r\n\r\n if (rest.startsWith(\"[[\")) {\r\n const close = line.indexOf(\"]]\", index + 2);\r\n const tokenEnd = close >= 0 ? close + 2 : line.length;\r\n push(\"string\", line.slice(index, tokenEnd), index);\r\n index = tokenEnd;\r\n continue;\r\n }\r\n\r\n const number =\r\n /^(?:0[xX][0-9a-fA-F_]+|0[bB][01_]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[eE][+-]?\\d[\\d_]*)?)/.exec(\r\n rest,\r\n );\r\n\r\n if (number) {\r\n push(\"number\", number[0], index);\r\n index += number[0].length;\r\n continue;\r\n }\r\n\r\n const identifier = /^[A-Za-z_][A-Za-z0-9_]*/.exec(rest);\r\n\r\n if (identifier) {\r\n push(\"identifier\", identifier[0], index);\r\n index += identifier[0].length;\r\n continue;\r\n }\r\n\r\n const operator =\r\n /^(?:\\.\\.\\.|\\.\\.|==|~=|<=|>=|::|->|\\+=|-=|\\*=|\\/=|%=|\\^=|[+\\-*\\/%^#=<>:.,;()[\\]{}])/.exec(\r\n rest,\r\n );\r\n\r\n const token = operator?.[0] ?? ch;\r\n push(\"operator\", token, index);\r\n index += token.length;\r\n }\r\n\r\n return tokens;\r\n}\r\n\r\nfunction previousWhyToken(\r\n tokens: WhyLuauToken[],\r\n index: number,\r\n): WhyLuauToken | undefined {\r\n for (let cursor = index - 1; cursor >= 0; cursor -= 1) {\r\n if (tokens[cursor].kind !== \"whitespace\") return tokens[cursor];\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction nextWhyToken(\r\n tokens: WhyLuauToken[],\r\n index: number,\r\n): WhyLuauToken | undefined {\r\n for (let cursor = index + 1; cursor < tokens.length; cursor += 1) {\r\n if (tokens[cursor].kind !== \"whitespace\") return tokens[cursor];\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction whyIdentifierCodes(tokens: WhyLuauToken[], index: number): string[] {\r\n const value = tokens[index].text;\r\n\r\n if (LUAU_CONTROL_KEYWORDS.has(value))\r\n return [WHY_ANSI.bold, WHY_THEME.keyword];\r\n\r\n if (LUAU_DECLARATION_KEYWORDS.has(value))\r\n return [WHY_ANSI.bold, WHY_THEME.declarationKeyword];\r\n\r\n if (LUAU_LITERAL_KEYWORDS.has(value))\r\n return [WHY_ANSI.bold, WHY_THEME.literal];\r\n\r\n const previous = previousWhyToken(tokens, index);\r\n const next = nextWhyToken(tokens, index);\r\n const previousText = previous?.text;\r\n const nextText = next?.text;\r\n\r\n if (previousText === \"function\" || nextText === \"(\")\r\n return [WHY_THEME.function];\r\n\r\n if ((previousText === \".\" || previousText === \":\") && nextText === \"(\")\r\n return [WHY_THEME.function];\r\n\r\n if (previousText === \"type\" || (previousText === \":\" && nextText !== \"(\"))\r\n return [WHY_THEME.type];\r\n\r\n if (previousText === \".\" || previousText === \":\") return [WHY_THEME.property];\r\n\r\n if (/^[A-Z]/.test(value) && (nextText === \".\" || nextText === \"<\"))\r\n return [WHY_THEME.type];\r\n\r\n if (nextText === \"=\" && previousText !== \"local\") return [WHY_THEME.property];\r\n\r\n return [WHY_THEME.variable];\r\n}\r\n\r\nfunction whyTokenCodes(tokens: WhyLuauToken[], index: number): string[] {\r\n const token = tokens[index];\r\n\r\n if (token.kind === \"comment\") return [WHY_THEME.comment];\r\n\r\n if (token.kind === \"string\") return [WHY_THEME.string];\r\n\r\n if (token.kind === \"number\") return [WHY_THEME.number];\r\n\r\n if (token.kind === \"identifier\") return whyIdentifierCodes(tokens, index);\r\n\r\n if (token.kind === \"operator\") return [WHY_THEME.foreground];\r\n\r\n return [];\r\n}\r\n\r\nfunction whyRangeContains(\r\n ranges: WhyCharacterRange[],\r\n position: number,\r\n): boolean {\r\n return ranges.some(\r\n (range) => position >= range.start && position < range.end,\r\n );\r\n}\r\n\r\nfunction highlightLuauLine(\r\n line: string,\r\n colorized: boolean,\r\n backgroundRanges: WhyCharacterRange[] = [],\r\n backgroundCode?: string,\r\n): string {\r\n if (!colorized || !line) return line;\r\n\r\n const tokens = tokenizeWhyLuauLine(line);\r\n\r\n return tokens\r\n .map((token, index) => {\r\n const foreground = whyTokenCodes(tokens, index);\r\n const cuts = new Set<number>([token.start, token.end]);\r\n\r\n for (const range of backgroundRanges) {\r\n if (range.end <= token.start || range.start >= token.end) continue;\r\n\r\n cuts.add(Math.max(token.start, range.start));\r\n cuts.add(Math.min(token.end, range.end));\r\n }\r\n\r\n const points = [...cuts].sort((a, b) => a - b);\r\n const segments: string[] = [];\r\n\r\n for (let point = 0; point < points.length - 1; point += 1) {\r\n const segmentStart = points[point];\r\n const segmentEnd = points[point + 1];\r\n const value = line.slice(segmentStart, segmentEnd);\r\n\r\n const changed =\r\n Boolean(backgroundCode) &&\r\n whyRangeContains(backgroundRanges, segmentStart);\r\n\r\n if (foreground.length === 0 && !changed) segments.push(value);\r\n else\r\n segments.push(\r\n whyPaint(\r\n true,\r\n value,\r\n ...foreground,\r\n ...(changed && backgroundCode ? [backgroundCode] : []),\r\n ),\r\n );\r\n }\r\n\r\n return segments.join(\"\");\r\n })\r\n .join(\"\");\r\n}\r\n\r\nfunction changedCharacterRanges(\r\n before: string,\r\n after: string,\r\n): { before: WhyCharacterRange[]; after: WhyCharacterRange[] } {\r\n if (before === after) return { before: [], after: [] };\r\n\r\n let prefix = 0;\r\n\r\n while (\r\n prefix < before.length &&\r\n prefix < after.length &&\r\n before[prefix] === after[prefix]\r\n )\r\n prefix += 1;\r\n\r\n let suffix = 0;\r\n\r\n while (\r\n suffix < before.length - prefix &&\r\n suffix < after.length - prefix &&\r\n before[before.length - 1 - suffix] === after[after.length - 1 - suffix]\r\n )\r\n suffix += 1;\r\n\r\n return {\r\n before:\r\n before.length - suffix > prefix\r\n ? [{ start: prefix, end: before.length - suffix }]\r\n : [],\r\n\r\n after:\r\n after.length - suffix > prefix\r\n ? [{ start: prefix, end: after.length - suffix }]\r\n : [],\r\n };\r\n}\r\n\r\ninterface WhyPreviewDiff {\r\n beforeRanges: WhyCharacterRange[][];\r\n afterRanges: WhyCharacterRange[][];\r\n}\r\n\r\nfunction whyPreviewDiff(\r\n beforeLines: string[],\r\n afterLines: string[],\r\n): WhyPreviewDiff {\r\n const matches = previewLineMatches(beforeLines, afterLines);\r\n\r\n const beforeRanges = beforeLines.map(() => [] as WhyCharacterRange[]);\r\n const afterRanges = afterLines.map(() => [] as WhyCharacterRange[]);\r\n\r\n const sentinels: Array<[number, number]> = [\r\n [-1, -1],\r\n ...matches,\r\n [beforeLines.length, afterLines.length],\r\n ];\r\n\r\n for (let matchIndex = 0; matchIndex < sentinels.length - 1; matchIndex += 1) {\r\n const [previousBefore, previousAfter] = sentinels[matchIndex];\r\n const [nextBefore, nextAfter] = sentinels[matchIndex + 1];\r\n const beforeStart = previousBefore + 1;\r\n const afterStart = previousAfter + 1;\r\n const beforeCount = nextBefore - beforeStart;\r\n const afterCount = nextAfter - afterStart;\r\n const paired = Math.min(beforeCount, afterCount);\r\n\r\n for (let offset = 0; offset < paired; offset += 1) {\r\n const left = beforeStart + offset;\r\n const right = afterStart + offset;\r\n\r\n const ranges = changedCharacterRanges(\r\n beforeLines[left],\r\n afterLines[right],\r\n );\r\n\r\n beforeRanges[left] = ranges.before;\r\n afterRanges[right] = ranges.after;\r\n }\r\n\r\n for (let offset = paired; offset < beforeCount; offset += 1) {\r\n const line = beforeStart + offset;\r\n\r\n beforeRanges[line] = [\r\n { start: 0, end: Math.max(1, beforeLines[line].length) },\r\n ];\r\n }\r\n\r\n for (let offset = paired; offset < afterCount; offset += 1) {\r\n const line = afterStart + offset;\r\n\r\n afterRanges[line] = [\r\n { start: 0, end: Math.max(1, afterLines[line].length) },\r\n ];\r\n }\r\n }\r\n\r\n return { beforeRanges, afterRanges };\r\n}\r\n\r\nfunction normalizeWhyPreviewLines(value: string): string[] {\r\n const lines = value.split(/\\r?\\n/).map((line) => expandWhyTabs(line));\r\n\r\n while (lines.length > 1 && lines[0].trim().length === 0) lines.shift();\r\n\r\n while (lines.length > 1 && lines.at(-1)?.trim().length === 0) lines.pop();\r\n\r\n if (lines.length <= 1) return lines;\r\n\r\n const indentation = (line: string): number =>\r\n line.match(/^ */)?.[0].length ?? 0;\r\n\r\n const nonBlank = lines\r\n .map((line, index) => ({ line, index }))\r\n .filter(({ line }) => line.trim().length > 0);\r\n\r\n if (nonBlank.length === 0) return lines;\r\n\r\n const firstIndent = indentation(nonBlank[0].line);\r\n\r\n if (firstIndent > 0) {\r\n const commonIndent = Math.min(\r\n ...nonBlank.map(({ line }) => indentation(line)),\r\n );\r\n\r\n return lines.map((line) =>\r\n line.trim().length === 0\r\n ? \"\"\r\n : line.slice(Math.min(commonIndent, indentation(line))),\r\n );\r\n }\r\n\r\n // Syntax-node text begins at the expression itself, so the first line has no\r\n // file indentation while continuation lines still include the source file's\r\n // tabs/spaces. Remove the continuation baseline, but preserve indentation\r\n // relative to that baseline for nested code inside the expression\r\n const continuation = nonBlank.filter(\r\n ({ index }) => index > nonBlank[0].index,\r\n );\r\n\r\n if (continuation.length === 0) return lines;\r\n\r\n const continuationBaseline = Math.min(\r\n ...continuation.map(({ line }) => indentation(line)),\r\n );\r\n\r\n if (continuationBaseline <= 0) return lines;\r\n\r\n return lines.map((line, index) => {\r\n if (index <= nonBlank[0].index || line.trim().length === 0) return line;\r\n\r\n return line.slice(Math.min(continuationBaseline, indentation(line)));\r\n });\r\n}\r\n\r\nexport function renderWhyFixPreview(\r\n preview: { before: string; after: string; note?: string },\r\n colorized: boolean,\r\n textWidth: number,\r\n): string[] {\r\n preview = compactFixPreview({\r\n ...preview,\r\n before: preview.before.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g, \"?\"),\r\n after: preview.after.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g, \"?\"),\r\n });\r\n\r\n const beforeLines = normalizeWhyPreviewLines(preview.before);\r\n const afterLines = normalizeWhyPreviewLines(preview.after);\r\n const diff = whyPreviewDiff(beforeLines, afterLines);\r\n\r\n const currentLabel = colorized\r\n ? whyPaint(\r\n true,\r\n \" CURRENT \",\r\n WHY_ANSI.bold,\r\n WHY_THEME.foreground,\r\n WHY_THEME.removedLabelBackground,\r\n )\r\n : \"CURRENT\";\r\n\r\n const suggestedLabel = colorized\r\n ? whyPaint(\r\n true,\r\n \" SUGGESTED \",\r\n WHY_ANSI.bold,\r\n WHY_THEME.foreground,\r\n WHY_THEME.addedLabelBackground,\r\n )\r\n : \"SUGGESTED\";\r\n\r\n const lines: string[] = [currentLabel];\r\n\r\n beforeLines.forEach((line, index) => {\r\n lines.push(\r\n ` ${highlightLuauLine(line, colorized, diff.beforeRanges[index], WHY_THEME.removedBackground)}`,\r\n );\r\n });\r\n\r\n lines.push(\"\", suggestedLabel);\r\n\r\n afterLines.forEach((line, index) => {\r\n lines.push(\r\n ` ${highlightLuauLine(line, colorized, diff.afterRanges[index], WHY_THEME.addedBackground)}`,\r\n );\r\n });\r\n\r\n if (preview.note) {\r\n lines.push(\r\n \"\",\r\n ...wrapWhyWords(preview.note, textWidth).map((line) =>\r\n whyPaint(colorized, line, WHY_ANSI.dim),\r\n ),\r\n );\r\n }\r\n\r\n return lines;\r\n}\r\n\r\nexport function wrapWhyWords(value: string, width: number): string[] {\r\n const safeWidth = Math.max(32, width);\r\n const paragraphs = value.split(/\\r?\\n/);\r\n const lines: string[] = [];\r\n\r\n for (\r\n let paragraphIndex = 0;\r\n paragraphIndex < paragraphs.length;\r\n paragraphIndex += 1\r\n ) {\r\n const paragraph = paragraphs[paragraphIndex].trim().replace(/\\s+/g, \" \");\r\n\r\n if (!paragraph) {\r\n lines.push(\"\");\r\n continue;\r\n }\r\n\r\n let line = \"\";\r\n\r\n for (const word of paragraph.split(\" \")) {\r\n if (!line) {\r\n line = word;\r\n continue;\r\n }\r\n\r\n if (line.length + 1 + word.length <= safeWidth) {\r\n line += ` ${word}`;\r\n continue;\r\n }\r\n\r\n lines.push(line);\r\n line = word;\r\n }\r\n\r\n if (line) lines.push(line);\r\n\r\n if (\r\n paragraphIndex < paragraphs.length - 1 &&\r\n paragraphs[paragraphIndex + 1].trim()\r\n )\r\n lines.push(\"\");\r\n }\r\n\r\n return lines.length > 0 ? lines : [\"\"];\r\n}\r\n\r\nfunction whyDiagnosticRanges(diagnostic: Diagnostic): Diagnostic[\"location\"][] {\r\n return diagnostic.highlights && diagnostic.highlights.length > 0\r\n ? diagnostic.highlights\r\n : [diagnostic.location];\r\n}\r\n\r\nfunction expandWhyTabs(value: string, tabWidth = 4): string {\r\n let result = \"\";\r\n let column = 0;\r\n\r\n for (const character of value) {\r\n if (character === \"\\t\") {\r\n const spaces = tabWidth - (column % tabWidth);\r\n result += \" \".repeat(spaces);\r\n column += spaces;\r\n } else {\r\n result += character;\r\n column += 1;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction whyVisualColumn(line: string, column: number): number {\r\n return expandWhyTabs(line.slice(0, Math.max(0, column - 1))).length + 1;\r\n}\r\n\r\nfunction whyFrameIntervals(\r\n ranges: Diagnostic[\"location\"][],\r\n sourceLength: number,\r\n): Array<{ start: number; end: number }> {\r\n const intervals = ranges\r\n .map((range) => ({\r\n start: Math.max(1, range.line - 2),\r\n end: Math.min(sourceLength, range.endLine + 2),\r\n }))\r\n .sort((a, b) => a.start - b.start || a.end - b.end);\r\n\r\n const merged: Array<{ start: number; end: number }> = [];\r\n\r\n for (const interval of intervals) {\r\n const previous = merged.at(-1);\r\n\r\n if (previous && interval.start <= previous.end + 1)\r\n previous.end = Math.max(previous.end, interval.end);\r\n else merged.push({ ...interval });\r\n }\r\n\r\n return merged;\r\n}\r\n\r\nfunction whyCaretForLine(\r\n sourceLine: string,\r\n line: number,\r\n ranges: Diagnostic[\"location\"][],\r\n): string | null {\r\n const expanded = expandWhyTabs(sourceLine);\r\n\r\n const marks = Array.from(\r\n { length: Math.max(1, expanded.length + 1) },\r\n () => false,\r\n );\r\n\r\n let hasMark = false;\r\n\r\n for (const range of ranges) {\r\n if (line < range.line || line > range.endLine) continue;\r\n\r\n const rawStart = line === range.line ? range.column : 1;\r\n\r\n const rawEnd =\r\n line === range.endLine ? range.endColumn : sourceLine.length + 1;\r\n\r\n const start = Math.max(1, whyVisualColumn(sourceLine, rawStart));\r\n const end = Math.max(start + 1, whyVisualColumn(sourceLine, rawEnd));\r\n\r\n for (\r\n let column = start - 1;\r\n column < Math.min(marks.length, end - 1);\r\n column += 1\r\n ) {\r\n marks[column] = true;\r\n hasMark = true;\r\n }\r\n }\r\n\r\n if (!hasMark) return null;\r\n\r\n let value = marks\r\n .map((marked) => (marked ? \"^\" : \" \"))\r\n .join(\"\")\r\n .replace(/\\s+$/, \"\");\r\n\r\n if (!value) value = \"^\";\r\n\r\n return value;\r\n}\r\n\r\nfunction renderWhyCodeFrame(\r\n sourceText: string,\r\n diagnostic: Diagnostic,\r\n colorized: boolean,\r\n): string {\r\n const source = sourceText.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g, \"?\").split(/\\r?\\n/);\r\n const ranges = whyDiagnosticRanges(diagnostic);\r\n const intervals = whyFrameIntervals(ranges, source.length);\r\n\r\n const width = String(\r\n Math.max(...intervals.map((interval) => interval.end), 1),\r\n ).length;\r\n\r\n const lines: string[] = [];\r\n\r\n intervals.forEach((interval, intervalIndex) => {\r\n if (intervalIndex > 0) {\r\n lines.push(\r\n `${whyPaint(colorized, \"…\", WHY_ANSI.dim, WHY_THEME.gutter)} ${\" \".repeat(width)} ${whyPaint(colorized, \"|\", WHY_ANSI.dim, WHY_THEME.gutter)} ${whyPaint(colorized, \"…\", WHY_ANSI.dim, WHY_THEME.gutter)}`,\r\n );\r\n }\r\n\r\n for (let line = interval.start; line <= interval.end; line += 1) {\r\n const sourceLine = source[line - 1] ?? \"\";\r\n const caretText = whyCaretForLine(sourceLine, line, ranges);\r\n const active = caretText !== null;\r\n\r\n const marker = active\r\n ? whyPaint(colorized, \">\", WHY_ANSI.bold, WHY_ANSI.red)\r\n : whyPaint(colorized, \"|\", WHY_ANSI.dim, WHY_THEME.gutter);\r\n\r\n const number = whyPaint(\r\n colorized,\r\n String(line).padStart(width),\r\n active ? WHY_ANSI.bold : WHY_ANSI.dim,\r\n active ? WHY_THEME.activeGutter : WHY_THEME.gutter,\r\n );\r\n\r\n const code = highlightLuauLine(expandWhyTabs(sourceLine), colorized);\r\n\r\n lines.push(\r\n `${marker} ${number} ${whyPaint(colorized, \"|\", WHY_ANSI.dim, WHY_THEME.gutter)} ${code}`,\r\n );\r\n\r\n if (caretText) {\r\n const caret = whyPaint(\r\n colorized,\r\n caretText,\r\n WHY_ANSI.bold,\r\n WHY_ANSI.red,\r\n );\r\n\r\n lines.push(\r\n ` ${\" \".repeat(width)} ${whyPaint(colorized, \"|\", WHY_ANSI.dim, WHY_THEME.gutter)} ${caret}`,\r\n );\r\n }\r\n }\r\n });\r\n\r\n return lines.join(\"\\n\");\r\n}\r\n\r\nfunction whySeverityMeaning(severity: Severity): string {\r\n if (severity === \"error\")\r\n return \"This can cause incorrect behavior or violate React's rules and should normally be fixed\";\r\n\r\n if (severity === \"warning\")\r\n return \"This pattern is very likely to be a real issue in the code shown and is normally worth fixing\";\r\n\r\n return \"This may be intentional. Doctor found a plausible improvement, but the right choice depends on how this value or pattern is meant to affect rendering\";\r\n}\r\n\r\nexport function renderWhyDiagnostic(\r\n sourceText: string,\r\n diagnostic: Diagnostic,\r\n colorized: boolean,\r\n textWidth = 118,\r\n): string {\r\n const rule = rulesById.get(diagnostic.rule);\r\n if (!rule) throw new Error(`Unknown rule: ${diagnostic.rule}`);\r\n const presentation = presentationFor(diagnostic);\r\n\r\n const lines: string[] = [\r\n whyPaint(colorized, diagnostic.rule, WHY_ANSI.bold, WHY_ANSI.magenta),\r\n whyPaint(\r\n colorized,\r\n `${diagnostic.file}:${diagnostic.location.line}:${diagnostic.location.column}`,\r\n WHY_ANSI.bold,\r\n ),\r\n [\r\n `${whyPaint(colorized, \"Severity\", WHY_ANSI.bold)}: ${whySeverityPaint(colorized, diagnostic.severity, diagnostic.severity)}`,\r\n `${whyPaint(colorized, \"Category\", WHY_ANSI.bold)}: ${whyPaint(colorized, diagnostic.category, WHY_ANSI.bold, WHY_THEME.category)}`,\r\n ].join(whyPaint(colorized, \" | \", WHY_ANSI.dim)),\r\n \"\",\r\n renderWhyCodeFrame(sourceText, diagnostic, colorized),\r\n \"\",\r\n whySectionTitle(colorized, \"Why this fired\"),\r\n ...wrapWhyWords(diagnostic.message, textWidth),\r\n ];\r\n\r\n if (\r\n presentation.explanation !== diagnostic.message &&\r\n presentation.explanation !== rule.description\r\n ) {\r\n lines.push(\"\", ...wrapWhyWords(presentation.explanation, textWidth));\r\n }\r\n\r\n lines.push(\r\n \"\",\r\n whySectionTitle(colorized, \"What the rule checks\"),\r\n ...wrapWhyWords(rule.description, textWidth),\r\n \"\",\r\n whySectionTitle(colorized, \"Confidence\"),\r\n ...wrapWhyWords(whySeverityMeaning(diagnostic.severity), textWidth),\r\n );\r\n\r\n if (presentation.help) {\r\n lines.push(\r\n \"\",\r\n whySectionTitle(colorized, \"How to fix\"),\r\n ...wrapWhyWords(presentation.help, textWidth),\r\n );\r\n }\r\n\r\n const fixPreview = presentation.example;\r\n\r\n if (fixPreview) {\r\n const previewTitle =\r\n fixPreview.kind === \"exact\" ? \"Suggested change\" : \"Example pattern\";\r\n\r\n lines.push(\r\n \"\",\r\n whySectionTitle(colorized, previewTitle),\r\n ...renderWhyFixPreview(fixPreview, colorized, textWidth),\r\n );\r\n }\r\n\r\n if (presentation.caveat) {\r\n lines.push(\r\n \"\",\r\n whySectionTitle(\r\n colorized,\r\n \"When the current approach may be intentional\",\r\n ),\r\n ...wrapWhyWords(presentation.caveat, textWidth),\r\n );\r\n }\r\n\r\n return `${lines.join(\"\\n\")}\\n`;\r\n}\r\n",
|
|
61
63
|
"import type { ScanProgress } from \"./types\";\r\n\r\nconst ANSI = {\r\n reset: \"\\u001b[0m\",\r\n dim: \"\\u001b[2m\",\r\n magenta: \"\\u001b[35m\",\r\n green: \"\\u001b[32m\",\r\n};\r\n\r\nfunction paint(value: string, code: string): string {\r\n return `${code}${value}${ANSI.reset}`;\r\n}\r\n\r\nfunction visibleLength(value: string): number {\r\n return value.replace(/\\u001b\\[[0-9;]*m/g, \"\").length;\r\n}\r\n\r\nfunction truncateMiddle(value: string, width: number): string {\r\n if (width <= 0) return \"\";\r\n if (value.length <= width) return value;\r\n if (width <= 3) return value.slice(0, width);\r\n const left = Math.ceil((width - 1) / 2);\r\n const right = Math.floor((width - 1) / 2);\r\n return `${value.slice(0, left)}…${value.slice(value.length - right)}`;\r\n}\r\n\r\nexport function formatScanProgress(progress: ScanProgress, terminalWidth = 120, colorized = false): string {\r\n const total = Math.max(0, progress.total);\r\n const current = Math.max(0, Math.min(progress.current, total || progress.current));\r\n const ratio = total === 0 ? 1 : current / total;\r\n const percent = Math.round(ratio * 100);\r\n const counter = `${current}/${total}`;\r\n const prefix = `${progress.label ?? `Scanning${progress.phase ? ` ${progress.phase}` : \"\"}`} `;\r\n const suffix = `${percent.toString().padStart(3)}% ${counter}`;\r\n const fileBudget = Math.max(0, terminalWidth - prefix.length - suffix.length - 38);\r\n const file = progress.file && fileBudget >= 8 ? ` ${truncateMiddle(progress.file, fileBudget)}` : \"\";\r\n const barWidth = Math.max(12, Math.min(28, terminalWidth - prefix.length - suffix.length - file.length - 8));\r\n const filled = Math.max(0, Math.min(barWidth, Math.round(ratio * barWidth)));\r\n const active = \"█\".repeat(filled);\r\n const remaining = \"░\".repeat(barWidth - filled);\r\n const coloredActive = active ? paint(active, progress.partial ? ANSI.magenta : current >= total ? ANSI.green : ANSI.magenta) : \"\";\r\n const coloredRemaining = remaining ? paint(remaining, ANSI.dim) : \"\";\r\n const bar = colorized ? `${coloredActive}${coloredRemaining}` : `${active}${remaining}`;\r\n const line = `${prefix}[${bar}] ${suffix}${file}`;\r\n return visibleLength(line) <= terminalWidth ? line : `${prefix}[${bar}] ${suffix}`;\r\n}\r\n\r\ninterface ProgressStream {\r\n isTTY?: boolean;\r\n columns?: number;\r\n write(value: string): unknown;\r\n}\r\n\r\nexport interface ProgressRenderer {\r\n update(progress: ScanProgress): void;\r\n clear(): void;\r\n}\r\n\r\nexport function createProgressRenderer(options: {\r\n stream?: ProgressStream;\r\n enabled?: boolean;\r\n colorized?: boolean;\r\n throttleMs?: number;\r\n} = {}): ProgressRenderer {\r\n const stream = options.stream ?? process.stdout;\r\n const enabled = options.enabled ?? Boolean(stream.isTTY && !process.env.CI);\r\n const colorized = options.colorized ?? false;\r\n const throttleMs = options.throttleMs ?? 40;\r\n let lastWriteAt = 0;\r\n let lastProgress: ScanProgress | null = null;\r\n let visible = false;\r\n\r\n function render(progress: ScanProgress, force = false): void {\r\n if (!enabled) return;\r\n lastProgress = progress;\r\n const now = performance.now();\r\n if (!force && progress.current < progress.total && now - lastWriteAt < throttleMs) return;\r\n lastWriteAt = now;\r\n const line = formatScanProgress(progress, stream.columns || 120, colorized);\r\n stream.write(`\\r\\u001b[2K${line}`);\r\n visible = true;\r\n }\r\n\r\n return {\r\n update(progress) {\r\n const phaseChanged = lastProgress?.phase !== progress.phase || lastProgress?.label !== progress.label;\r\n render(progress, phaseChanged || progress.current >= progress.total || Boolean(progress.partial));\r\n },\r\n clear() {\r\n if (!enabled || !visible) return;\r\n stream.write(\"\\r\\u001b[2K\");\r\n visible = false;\r\n },\r\n };\r\n}\r\n"
|
|
62
64
|
],
|
|
63
|
-
"mappings": "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",
|
|
64
|
-
"debugId": "
|
|
65
|
+
"mappings": "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",
|
|
66
|
+
"debugId": "3EFE794093E582F464756E2164756E21",
|
|
65
67
|
"names": []
|
|
66
68
|
}
|