MCPcopy Index your code
hub / github.com/SeleniumHQ/selenium / parseLeafDef

Function parseLeafDef

javascript/selenium-webdriver/generate_bidi.mjs:510–535  ·  view source on GitHub ↗

Extract {domain, methodStr, operationName, paramsCddl} from a command/event leaf def.

(def)

Source from the content-addressed store, hash-verified

508
509/** Extract {domain, methodStr, operationName, paramsCddl} from a command/event leaf def. */
510function parseLeafDef(def) {
511 const flatProps = (def.Properties ?? []).flatMap((p) => (Array.isArray(p) ? p : [p]))
512
513 const methodProp = flatProps.find((p) => p.Name === 'method')
514 const paramsProp = flatProps.find((p) => p.Name === 'params')
515 if (!methodProp || !paramsProp) return null
516
517 const methodLiteral = Array.isArray(methodProp.Type) ? methodProp.Type : [methodProp.Type]
518 if (methodLiteral[0]?.Type !== 'literal') return null
519
520 const methodStr = methodLiteral[0].Value // e.g. "browser.createUserContext"
521 const dotIdx = methodStr.indexOf('.')
522 if (dotIdx === -1) return null
523
524 const domainRaw = methodStr.slice(0, dotIdx)
525 const operationName = methodStr.slice(dotIdx + 1)
526 const domain = METHOD_DOMAIN_MAP[domainRaw] ?? 'common'
527
528 const paramsTypeEntries = Array.isArray(paramsProp.Type) ? paramsProp.Type : [paramsProp.Type]
529 let paramsCddl = null
530 if (paramsTypeEntries[0]?.Type === 'group' && paramsTypeEntries[0]?.Value) {
531 paramsCddl = paramsTypeEntries[0].Value
532 }
533
534 return { domain, methodStr, operationName, paramsCddl }
535}
536
537/**
538 * Collect all leaf command/event names from every XxxCommand / XxxEvent

Callers 2

extractCommandsFunction · 0.85
extractEventsFunction · 0.85

Calls 1

findMethod · 0.80

Tested by

no test coverage detected