{"record":{"id":"620d71995970cd0d","repo":"garrytan/gstack","slug":"invalid-css-property-name-property-only-lette","errorCode":null,"errorMessage":"Invalid CSS property name: ${property}. Only letters and hyphens allowed.","messagePattern":"Invalid CSS property name: (.+?)\\. Only letters and hyphens allowed\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"browse/src/cdp-inspector.ts","lineNumber":503,"sourceCode":"    matchedRules,\n    inlineStyles,\n    pseudoElements,\n  };\n}\n\n/**\n * Modify a CSS property on an element.\n * Uses CSS.setStyleTexts in headed mode, falls back to inline style in headless.\n */\nexport async function modifyStyle(\n  page: Page,\n  selector: string,\n  property: string,\n  value: string\n): Promise<StyleModification> {\n  // Validate CSS property name\n  if (!/^[a-zA-Z-]+$/.test(property)) {\n    throw new Error(`Invalid CSS property name: ${property}. Only letters and hyphens allowed.`);\n  }\n\n  // Validate CSS value — block data exfiltration patterns\n  const DANGEROUS_CSS = /url\\s*\\(|expression\\s*\\(|@import|javascript:|data:/i;\n  if (DANGEROUS_CSS.test(value)) {\n    throw new Error('CSS value rejected: contains potentially dangerous pattern.');\n  }\n\n  let oldValue = '';\n  let source = 'inline';\n  let sourceLine = 0;\n  let method: 'setStyleTexts' | 'inline' = 'inline';\n\n  try {\n    // Try CDP approach first\n    const session = await getOrCreateSession(page);\n    const result = await inspectElement(page, selector);\n    oldValue = result.computedStyles[property] || '';","sourceCodeStart":485,"sourceCodeEnd":521,"githubUrl":"https://github.com/garrytan/gstack/blob/94993f74012782fd94416dd44b8314f6363a13a4/browse/src/cdp-inspector.ts#L485-L521","documentation":"Error \"Invalid CSS property name: ${property}. Only letters and hyphens allowed.\" thrown in garrytan/gstack.","triggerScenarios":"Thrown at browse/src/cdp-inspector.ts:503 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"94993f74012782fd94416dd44b8314f6363a13a4","analyzedAt":"2026-08-12T04:06:23.140Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}