UNPKG

@react-native/codegen

Version:
57 lines (48 loc) 1.42 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict * @format */ 'use strict'; import type {Parser} from '../../parser'; import type {ComponentSchemaBuilderConfig} from '../../schema.js'; const { findComponentConfig, getCommandProperties, getOptions, } = require('../../parsers-commons'); const {getCommands} = require('./commands'); const {getEvents} = require('./events'); // $FlowFixMe[signature-verification-failure] there's no flowtype for AST function buildComponentSchema( ast: $FlowFixMe, parser: Parser, ): ComponentSchemaBuilderConfig { const {componentName, propsTypeName, optionsExpression} = findComponentConfig( ast, parser, ); const types = parser.getTypes(ast); const propProperties = parser.getProperties(propsTypeName, types); const commandProperties = getCommandProperties(ast, parser); const {extendsProps, props} = parser.getProps(propProperties, types); const options = getOptions(optionsExpression); const events = getEvents(propProperties, types, parser); const commands = getCommands(commandProperties, types, parser); return { filename: componentName, componentName, options, extendsProps, events, props, commands, }; } module.exports = { buildComponentSchema, };