Skip to content

Commit 376ffac

Browse files
gabrieldonadelfacebook-github-bot
authored andcommitted
chore: Export codegen parseFile function (#35000)
Summary: This PR export the content of the `parseFile` into a parseFile function accepting a callback to buildSchema properly in `parsers/utils.js` as requested on #34872. ## Changelog [Internal] [Changed] - Export ` parseFile` in to a `parseFile` function in `parsers/utils.js` Pull Request resolved: #35000 Test Plan: Run `yarn jest react-native-codegen` and ensure CI is green ![image](https://user-images.githubusercontent.com/11707729/196051689-1b61838c-477c-4be5-8df0-9f5969fcf90d.png) Reviewed By: cortinico Differential Revision: D40424857 Pulled By: cipolleschi fbshipit-source-id: a700033d674b8be8e1af942dedf73155ea3ca025
1 parent 8f484c3 commit 376ffac

19 files changed

+101
-49
lines changed

packages/react-native-codegen/e2e/__tests__/components/GenerateComponentDescriptorH-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateComponentDescriptorH');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GenerateComponentDescriptorH can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GenerateComponentHObjCpp-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateComponentHObjCpp');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GenerateComponentHObjCpp can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GenerateEventEmitterCpp-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateEventEmitterCpp');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GenerateEventEmitterCpp can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GenerateEventEmitterH-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateEventEmitterH');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GenerateEventEmitterH can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GeneratePropsCpp-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GeneratePropsCpp');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GeneratePropsCpp can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GeneratePropsH-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GeneratePropsH');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GeneratePropsH can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GeneratePropsJavaDelegate-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GeneratePropsJavaDelegate');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GeneratePropsJavaDelegate can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(Object.fromEntries(output)).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/components/GeneratePropsJavaInterface-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GeneratePropsJavaInterface');
1617
const fs = require('fs');
1718

@@ -21,7 +22,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2122
fixtures.forEach(fixture => {
2223
it(`GeneratePropsJavaInterface can generate for '${fixture}'`, () => {
2324
const libName = 'RNCodegenModuleFixtures';
24-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
25+
const schema = parseFile(
26+
`${FIXTURE_DIR}/${fixture}`,
27+
FlowParser.buildSchema,
28+
);
2529
const output = generator.generate(libName, schema, undefined, false);
2630
expect(Object.fromEntries(output)).toMatchSnapshot();
2731
});

packages/react-native-codegen/e2e/__tests__/components/GenerateShadowNodeCpp-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateShadowNodeCpp');
1617
const fs = require('fs');
1718

@@ -21,7 +22,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2122
fixtures.forEach(fixture => {
2223
it(`GenerateShadowNodeCpp can generate for '${fixture}'`, () => {
2324
const libName = 'RNCodegenModuleFixtures';
24-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
25+
const schema = parseFile(
26+
`${FIXTURE_DIR}/${fixture}`,
27+
FlowParser.buildSchema,
28+
);
2529
const output = generator.generate(libName, schema, undefined, false);
2630
expect(Object.fromEntries(output)).toMatchSnapshot();
2731
});

packages/react-native-codegen/e2e/__tests__/components/GenerateShadowNodeH-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateShadowNodeH');
1617
const fs = require('fs');
1718

@@ -21,7 +22,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2122
fixtures.forEach(fixture => {
2223
it(`GenerateShadowNodeH can generate for '${fixture}'`, () => {
2324
const libName = 'RNCodegenModuleFixtures';
24-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
25+
const schema = parseFile(
26+
`${FIXTURE_DIR}/${fixture}`,
27+
FlowParser.buildSchema,
28+
);
2529
const output = generator.generate(libName, schema, undefined, false);
2630
expect(Object.fromEntries(output)).toMatchSnapshot();
2731
});

packages/react-native-codegen/e2e/__tests__/components/GenerateViewConfigJs-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/components/GenerateViewConfigJs');
1617
const fs = require('fs');
1718

@@ -22,7 +23,10 @@ const fixtures = fs.readdirSync(FIXTURE_DIR);
2223
fixtures.forEach(fixture => {
2324
it(`GenerateViewConfigJs can generate for '${fixture}'`, () => {
2425
const libName = 'RNCodegenModuleFixtures';
25-
const schema = parser.parseFile(`${FIXTURE_DIR}/${fixture}`);
26+
const schema = parseFile(
27+
`${FIXTURE_DIR}/${fixture}`,
28+
FlowParser.buildSchema,
29+
);
2630
const output = generator.generate(libName, schema);
2731
expect(output).toMatchSnapshot();
2832
});

packages/react-native-codegen/e2e/__tests__/modules/GenerateModuleObjCpp-test.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
'use strict';
1313

14-
const parser = require('../../../src/parsers/flow');
14+
const {parseFile} = require('../../../src/parsers/utils');
15+
const FlowParser = require('../../../src/parsers/flow');
1516
const generator = require('../../../src/generators/modules/GenerateModuleObjCpp');
1617
const fs = require('fs');
1718

@@ -23,7 +24,10 @@ function getModules(): SchemaType {
2324
const filenames: Array<string> = fs.readdirSync(FIXTURE_DIR);
2425
return filenames.reduce<SchemaType>(
2526
(accumulator, file) => {
26-
const schema = parser.parseFile(`${FIXTURE_DIR}/${file}`);
27+
const schema = parseFile(
28+
`${FIXTURE_DIR}/${file}`,
29+
FlowParser.buildSchema,
30+
);
2731
return {
2832
modules: {
2933
...accumulator.modules,

packages/react-native-codegen/src/cli/combine/combine-js-to-schema.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
'use strict';
1212
import type {SchemaType} from '../../CodegenSchema.js';
1313

14+
const {parseFile} = require('../../parsers/utils');
1415
const FlowParser = require('../../parsers/flow');
1516
const TypeScriptParser = require('../../parsers/typescript');
1617
const fs = require('fs');
@@ -29,9 +30,10 @@ function combineSchemas(files: Array<string>): SchemaType {
2930
const isTypeScript =
3031
path.extname(filename) === '.ts' || path.extname(filename) === '.tsx';
3132

32-
const schema = isTypeScript
33-
? TypeScriptParser.parseFile(filename)
34-
: FlowParser.parseFile(filename);
33+
const schema = parseFile(
34+
filename,
35+
isTypeScript ? TypeScriptParser.buildSchema : FlowParser.buildSchema,
36+
);
3537

3638
if (schema && schema.modules) {
3739
merged.modules = {...merged.modules, ...schema.modules};

packages/react-native-codegen/src/cli/parser/parser.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
'use strict';
1212

1313
const path = require('path');
14+
const {parseFile} = require('../../parsers/utils');
1415
const FlowParser = require('../../parsers/flow');
1516
const TypeScriptParser = require('../../parsers/typescript');
1617

@@ -22,9 +23,10 @@ function parseFiles(files: Array<string>) {
2223
console.log(
2324
filename,
2425
JSON.stringify(
25-
isTypeScript
26-
? TypeScriptParser.parseFile(filename)
27-
: FlowParser.parseFile(filename),
26+
parseFile(
27+
filename,
28+
isTypeScript ? TypeScriptParser.buildSchema : FlowParser.buildSchema,
29+
),
2830
null,
2931
2,
3032
),

packages/react-native-codegen/src/parsers/flow/components/__tests__/component-parser-test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
'use strict';
1313

1414
const FlowParser = require('../../index.js');
15+
const {parseFile} = require('../../../utils.js');
1516
const fixtures = require('../__test_fixtures__/fixtures.js');
1617
const failureFixtures = require('../__test_fixtures__/failures.js');
1718
jest.mock('fs', () => ({
@@ -30,7 +31,7 @@ describe('RN Codegen Flow Parser', () => {
3031
.sort()
3132
.forEach(fixtureName => {
3233
it(`can generate fixture ${fixtureName}`, () => {
33-
const schema = FlowParser.parseFile(fixtureName);
34+
const schema = parseFile(fixtureName, FlowParser.buildSchema);
3435
const serializedSchema = JSON.stringify(schema, null, 2).replace(
3536
/"/g,
3637
"'",
@@ -44,7 +45,7 @@ describe('RN Codegen Flow Parser', () => {
4445
.forEach(fixtureName => {
4546
it(`Fails with error message ${fixtureName}`, () => {
4647
expect(() => {
47-
FlowParser.parseFile(fixtureName);
48+
parseFile(fixtureName, FlowParser.buildSchema);
4849
}).toThrowErrorMatchingSnapshot();
4950
});
5051
});

packages/react-native-codegen/src/parsers/flow/index.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,6 @@ function buildSchema(contents: string, filename: ?string): SchemaType {
8585
);
8686
}
8787

88-
function parseFile(filename: string): SchemaType {
89-
const contents = fs.readFileSync(filename, 'utf8');
90-
91-
return buildSchema(contents, filename);
92-
}
93-
9488
function parseModuleFixture(filename: string): SchemaType {
9589
const contents = fs.readFileSync(filename, 'utf8');
9690

@@ -102,7 +96,7 @@ function parseString(contents: string, filename: ?string): SchemaType {
10296
}
10397

10498
module.exports = {
105-
parseFile,
99+
buildSchema,
106100
parseModuleFixture,
107101
parseString,
108102
};

packages/react-native-codegen/src/parsers/typescript/components/__tests__/typescript-component-parser-test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
'use strict';
1313

1414
const TypeScriptParser = require('../../index.js');
15+
const {parseFile} = require('../../../utils.js');
1516
const fixtures = require('../__test_fixtures__/fixtures.js');
1617
const failureFixtures = require('../__test_fixtures__/failures.js');
1718
jest.mock('fs', () => ({
@@ -30,7 +31,7 @@ describe('RN Codegen TypeScript Parser', () => {
3031
.sort()
3132
.forEach(fixtureName => {
3233
it(`can generate fixture ${fixtureName}`, () => {
33-
const schema = TypeScriptParser.parseFile(fixtureName);
34+
const schema = parseFile(fixtureName, TypeScriptParser.buildSchema);
3435
const serializedSchema = JSON.stringify(schema, null, 2).replace(
3536
/"/g,
3637
"'",
@@ -44,7 +45,7 @@ describe('RN Codegen TypeScript Parser', () => {
4445
.forEach(fixtureName => {
4546
it(`Fails with error message ${fixtureName}`, () => {
4647
expect(() => {
47-
TypeScriptParser.parseFile(fixtureName);
48+
parseFile(fixtureName, TypeScriptParser.buildSchema);
4849
}).toThrowErrorMatchingSnapshot();
4950
});
5051
});

0 commit comments

Comments
 (0)