{"record":{"id":"486b64b265b8487b","repo":"chenglou/pretext","slug":"invalid-value-for-name-raw-486b64","errorCode":null,"errorMessage":"Invalid value for --${name}: ${raw}","messagePattern":"Invalid value for --(.+?): (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/letter-spacing-check.ts","lineNumber":102,"sourceCode":"  requestId?: string\n  results?: Array<{\n    label: string\n    report: ProbeReport\n  }>\n  message?: string\n}\n\nfunction parseStringFlag(name: string): string | null {\n  const prefix = `--${name}=`\n  const arg = process.argv.find(value => value.startsWith(prefix))\n  return arg === undefined ? null : arg.slice(prefix.length)\n}\n\nfunction parseNumberFlag(name: string, fallback: number): number {\n  const raw = parseStringFlag(name)\n  if (raw === null) return fallback\n  const parsed = Number.parseInt(raw, 10)\n  if (!Number.isFinite(parsed)) throw new Error(`Invalid value for --${name}: ${raw}`)\n  return parsed\n}\n\nfunction parseBrowsers(value: string | null): AutomationBrowserKind[] {\n  const raw = (value ?? 'chrome,safari').trim()\n  if (raw.length === 0) return ['chrome', 'safari']\n\n  const browsers = raw\n    .split(',')\n    .map(part => part.trim().toLowerCase())\n    .filter(Boolean)\n\n  for (const browser of browsers) {\n    if (browser !== 'chrome' && browser !== 'safari' && browser !== 'firefox') {\n      throw new Error(`Unsupported browser ${browser}`)\n    }\n  }\n","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/chenglou/pretext/blob/ac49b09b7d83ede19581fa94a8b892b07d309baf/scripts/letter-spacing-check.ts#L84-L120","documentation":"parseNumberFlag() in letter-spacing-check.ts mirrors the same helper in keep-all-check.ts: it parses a `--<name>=<value>` numeric flag and throws when Number.parseInt yields a non-finite value. It guards the port/timeout flags for the letter-spacing oracle runner.","triggerScenarios":"Running `bun run letter-spacing-check -- --port=abc`, `--timeout=` (empty), or any value where base-10 parseInt is NaN.","commonSituations":"Typo in a wrapper script, an unexpanded shell variable, or a stale flag value.","solutions":["Supply an integer for the named flag, e.g. `--port=3210` / `--timeout=60000`.","Omit the flag to accept the fallback default.","Confirm the flag name in the message is one actually consumed by letter-spacing-check.ts."],"exampleFix":"# before\nbun run letter-spacing-check -- --timeout=fast\n\n# after\nbun run letter-spacing-check -- --timeout=60000","handlingStrategy":"validation","validationCode":"function readNumberFlag(name: string, fallback: number): number {\n  const prefix = `--${name}=`\n  const arg = process.argv.find(v => v.startsWith(prefix))\n  if (arg === undefined) return fallback\n  const raw = arg.slice(prefix.length)\n  const n = Number.parseInt(raw, 10)\n  if (!Number.isFinite(n)) {\n    console.error(`--${name} expects an integer, got: ${JSON.stringify(raw)}`)\n    process.exit(2)\n  }\n  return n\n}","typeGuard":"const isIntegerString = (v: string): boolean => /^-?\\d+$/.test(v.trim())","tryCatchPattern":null,"preventionTips":["Pass integers explicitly for port/timeout; avoid empty `--flag=`.","Validate all numeric CLI args through one shared helper."],"tags":["cli","argument-parsing"],"backgroundTag":null,"analyzedSha":"ac49b09b7d83ede19581fa94a8b892b07d309baf","analyzedAt":"2026-08-12T17:03:16.263Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}