1111'use strict' ;
1212
1313import type { SchemaType } from '../../CodegenSchema.js' ;
14- import type { Parser } from '../parser' ;
1514
16- // $FlowFixMe[untyped-import] Use flow-types for @babel/parser
17- const babelParser = require ( '@babel/parser' ) ;
1815const fs = require ( 'fs' ) ;
19- const {
20- buildSchemaFromConfigType,
21- getConfigType,
22- isModuleRegistryCall,
23- } = require ( '../utils' ) ;
24- const { buildComponentSchema} = require ( './components' ) ;
25- const { wrapComponentSchema} = require ( './components/schema' ) ;
26- const { buildModuleSchema} = require ( './modules' ) ;
16+ const { buildSchema} = require ( './utils' ) ;
2717const { TypeScriptParser} = require ( './parser' ) ;
2818
2919const parser = new TypeScriptParser ( ) ;
3020
31- function Visitor ( infoMap : { isComponent : boolean , isModule : boolean } ) {
32- return {
33- CallExpression ( node : $FlowFixMe ) {
34- if (
35- node . callee . type === 'Identifier' &&
36- node . callee . name === 'codegenNativeComponent'
37- ) {
38- infoMap . isComponent = true ;
39- }
40-
41- if ( isModuleRegistryCall ( node ) ) {
42- infoMap . isModule = true ;
43- }
44- } ,
45-
46- TSInterfaceDeclaration ( node : $FlowFixMe ) {
47- if (
48- Array . isArray ( node . extends ) &&
49- node . extends . some (
50- extension => extension . expression . name === 'TurboModule' ,
51- )
52- ) {
53- infoMap . isModule = true ;
54- }
55- } ,
56- } ;
57- }
58-
59- function buildSchema (
60- contents : string ,
61- filename : ?string ,
62- parser : Parser ,
63- ) : SchemaType {
64- // Early return for non-Spec JavaScript files
65- if (
66- ! contents . includes ( 'codegenNativeComponent' ) &&
67- ! contents . includes ( 'TurboModule' )
68- ) {
69- return { modules : { } } ;
70- }
71-
72- const ast = babelParser . parse ( contents , {
73- sourceType : 'module' ,
74- plugins : [ 'typescript' ] ,
75- } ) . program ;
76-
77- const configType = getConfigType ( ast , Visitor ) ;
78-
79- return buildSchemaFromConfigType (
80- configType ,
81- filename ,
82- ast ,
83- wrapComponentSchema ,
84- buildComponentSchema ,
85- buildModuleSchema ,
86- parser ,
87- ) ;
88- }
89-
9021function parseModuleFixture ( filename : string ) : SchemaType {
9122 const contents = fs . readFileSync ( filename , 'utf8' ) ;
9223
@@ -98,7 +29,6 @@ function parseString(contents: string, filename: ?string): SchemaType {
9829}
9930
10031module . exports = {
101- buildSchema,
10232 parseModuleFixture,
10333 parseString,
10434} ;
0 commit comments