in packages/rulesets/src/native/utilities/swagger-workspace.ts [51:74]
export function getProperty(schema: EnhancedSchema, propertyName: string, inventory: ISwaggerInventory): EnhancedSchema | undefined {
let source = schema
const visited = new Set<any>()
while (source.value && source.value.$ref && !visited.has(source.value)) {
visited.add(source.value)
source = resolveRef(source, inventory)!
}
if (!source || !source.value) {
return undefined
}
const model = source.value
if (model.properties && model.properties[propertyName]) {
return resolveRef(createEnhancedSchema(model.properties[propertyName], source.file), inventory!)
}
if (model.allOf) {
for (const element of model.allOf) {
const property: any = getProperty({ file: source.file, value: element }, propertyName, inventory)
if (property) {
return property
}
}
}
return undefined
}