@react-native/codegen 0.74.0 → 0.75.0-nightly-20240221-a1171f79f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/lib/CodegenSchema.d.ts +10 -1
  2. package/lib/CodegenSchema.js.flow +2 -1
  3. package/lib/SchemaValidator.js.flow +2 -2
  4. package/lib/cli/combine/combine-js-to-schema-cli.js +59 -40
  5. package/lib/cli/combine/combine-js-to-schema-cli.js.flow +23 -39
  6. package/lib/cli/combine/combine-js-to-schema.js +49 -1
  7. package/lib/cli/combine/combine-js-to-schema.js.flow +59 -1
  8. package/lib/cli/combine/combine-schemas-cli.js +77 -0
  9. package/lib/cli/combine/combine-schemas-cli.js.flow +87 -0
  10. package/lib/cli/combine/combine-utils.js +3 -65
  11. package/lib/cli/combine/combine-utils.js.flow +7 -28
  12. package/lib/cli/parser/parser.js +1 -1
  13. package/lib/cli/parser/parser.js.flow +1 -1
  14. package/lib/generators/RNCodegen.d.ts +1 -0
  15. package/lib/generators/RNCodegen.js +58 -31
  16. package/lib/generators/RNCodegen.js.flow +52 -32
  17. package/lib/generators/TypeUtils/Cxx/index.js +17 -0
  18. package/lib/generators/TypeUtils/Cxx/index.js.flow +18 -0
  19. package/lib/generators/TypeUtils/Java/index.js +31 -0
  20. package/lib/generators/TypeUtils/Java/index.js.flow +27 -0
  21. package/lib/generators/TypeUtils/Objective-C/index.js +17 -0
  22. package/lib/generators/TypeUtils/Objective-C/index.js.flow +18 -0
  23. package/lib/generators/components/ComponentsGeneratorUtils.js +7 -7
  24. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +8 -10
  25. package/lib/generators/components/ComponentsProviderUtils.js +55 -0
  26. package/lib/generators/components/ComponentsProviderUtils.js.flow +60 -0
  27. package/lib/generators/components/CppHelpers.js +7 -0
  28. package/lib/generators/components/CppHelpers.js.flow +14 -0
  29. package/lib/generators/components/GenerateComponentDescriptorCpp.js +89 -0
  30. package/lib/generators/components/GenerateComponentDescriptorCpp.js.flow +101 -0
  31. package/lib/generators/components/GenerateComponentDescriptorH.js +28 -12
  32. package/lib/generators/components/GenerateComponentDescriptorH.js.flow +20 -12
  33. package/lib/generators/components/GenerateComponentHObjCpp.js +15 -1
  34. package/lib/generators/components/GenerateComponentHObjCpp.js.flow +11 -2
  35. package/lib/generators/components/GenerateEventEmitterCpp.js +28 -15
  36. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +16 -17
  37. package/lib/generators/components/GenerateEventEmitterH.js +20 -13
  38. package/lib/generators/components/GenerateEventEmitterH.js.flow +13 -15
  39. package/lib/generators/components/GeneratePropsCpp.js +17 -8
  40. package/lib/generators/components/GeneratePropsCpp.js.flow +13 -9
  41. package/lib/generators/components/GeneratePropsH.js +23 -16
  42. package/lib/generators/components/GeneratePropsH.js.flow +12 -16
  43. package/lib/generators/components/GeneratePropsJavaDelegate.js +11 -3
  44. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +7 -4
  45. package/lib/generators/components/GeneratePropsJavaInterface.js +11 -3
  46. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +6 -3
  47. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +6 -6
  48. package/lib/generators/components/GeneratePropsJavaPojo/index.js +1 -1
  49. package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +1 -1
  50. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +1 -0
  51. package/lib/generators/components/GenerateShadowNodeCpp.js +19 -8
  52. package/lib/generators/components/GenerateShadowNodeCpp.js.flow +9 -8
  53. package/lib/generators/components/GenerateShadowNodeH.js +27 -11
  54. package/lib/generators/components/GenerateShadowNodeH.js.flow +11 -14
  55. package/lib/generators/components/GenerateStateCpp.js +19 -8
  56. package/lib/generators/components/GenerateStateCpp.js.flow +9 -8
  57. package/lib/generators/components/GenerateStateH.js +9 -5
  58. package/lib/generators/components/GenerateStateH.js.flow +3 -4
  59. package/lib/generators/components/GenerateTests.js +11 -5
  60. package/lib/generators/components/GenerateTests.js.flow +2 -2
  61. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +16 -3
  62. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +18 -3
  63. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +18 -3
  64. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +21 -3
  65. package/lib/generators/components/GenerateViewConfigJs.js +2 -2
  66. package/lib/generators/components/GenerateViewConfigJs.js.flow +2 -2
  67. package/lib/generators/components/JavaHelpers.js +8 -0
  68. package/lib/generators/components/JavaHelpers.js.flow +9 -0
  69. package/lib/generators/components/__test_fixtures__/fixtures.js +22 -0
  70. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +22 -0
  71. package/lib/generators/modules/GenerateModuleCpp.js +14 -10
  72. package/lib/generators/modules/GenerateModuleCpp.js.flow +9 -10
  73. package/lib/generators/modules/GenerateModuleH.js +198 -72
  74. package/lib/generators/modules/GenerateModuleH.js.flow +186 -71
  75. package/lib/generators/modules/GenerateModuleJavaSpec.js +50 -57
  76. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +45 -50
  77. package/lib/generators/modules/GenerateModuleJniCpp.js +16 -12
  78. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +11 -12
  79. package/lib/generators/modules/GenerateModuleJniH.js +12 -5
  80. package/lib/generators/modules/GenerateModuleJniH.js.flow +8 -6
  81. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +5 -5
  82. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +11 -12
  83. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +23 -21
  84. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +19 -18
  85. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +23 -21
  86. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +19 -18
  87. package/lib/generators/modules/GenerateModuleObjCpp/index.js +18 -20
  88. package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +11 -14
  89. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +40 -42
  90. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +38 -44
  91. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +25 -27
  92. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +26 -28
  93. package/lib/generators/modules/Utils.js +98 -0
  94. package/lib/generators/modules/Utils.js.flow +34 -2
  95. package/lib/generators/modules/__test_fixtures__/fixtures.js +685 -64
  96. package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +686 -64
  97. package/lib/parsers/error-utils.js +17 -17
  98. package/lib/parsers/error-utils.js.flow +10 -10
  99. package/lib/parsers/errors.js +10 -0
  100. package/lib/parsers/errors.js.flow +15 -1
  101. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +7 -1
  102. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +7 -1
  103. package/lib/parsers/flow/components/commands.js +24 -0
  104. package/lib/parsers/flow/components/commands.js.flow +45 -3
  105. package/lib/parsers/flow/components/componentsUtils.js +5 -4
  106. package/lib/parsers/flow/components/componentsUtils.js.flow +4 -3
  107. package/lib/parsers/flow/components/events.js +7 -7
  108. package/lib/parsers/flow/components/events.js.flow +7 -7
  109. package/lib/parsers/flow/components/index.js +8 -8
  110. package/lib/parsers/flow/components/index.js.flow +3 -3
  111. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +13 -0
  112. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +13 -0
  113. package/lib/parsers/flow/modules/index.js +20 -19
  114. package/lib/parsers/flow/modules/index.js.flow +10 -11
  115. package/lib/parsers/flow/parseFlowAndThrowErrors.js +105 -0
  116. package/lib/parsers/flow/parseFlowAndThrowErrors.js.flow +41 -0
  117. package/lib/parsers/flow/parser.js +24 -25
  118. package/lib/parsers/flow/parser.js.flow +27 -36
  119. package/lib/parsers/flow/utils.js.flow +1 -1
  120. package/lib/parsers/parser.js.flow +12 -10
  121. package/lib/parsers/parserMock.js +11 -12
  122. package/lib/parsers/parserMock.js.flow +25 -28
  123. package/lib/parsers/parsers-commons.js +85 -36
  124. package/lib/parsers/parsers-commons.js.flow +71 -37
  125. package/lib/parsers/parsers-primitives.js +17 -17
  126. package/lib/parsers/parsers-primitives.js.flow +14 -16
  127. package/lib/parsers/schema.js.flow +3 -3
  128. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +8 -1
  129. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +8 -1
  130. package/lib/parsers/typescript/components/commands.js +23 -15
  131. package/lib/parsers/typescript/components/commands.js.flow +24 -16
  132. package/lib/parsers/typescript/components/componentsUtils.js +34 -20
  133. package/lib/parsers/typescript/components/componentsUtils.js.flow +36 -19
  134. package/lib/parsers/typescript/components/events.js +22 -22
  135. package/lib/parsers/typescript/components/events.js.flow +11 -10
  136. package/lib/parsers/typescript/components/extends.js.flow +1 -0
  137. package/lib/parsers/typescript/components/index.js +10 -10
  138. package/lib/parsers/typescript/components/index.js.flow +4 -4
  139. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +13 -0
  140. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +13 -0
  141. package/lib/parsers/typescript/modules/index.js +25 -20
  142. package/lib/parsers/typescript/modules/index.js.flow +16 -14
  143. package/lib/parsers/typescript/parser.js +25 -26
  144. package/lib/parsers/typescript/parser.js.flow +23 -27
  145. package/lib/parsers/utils.js +5 -0
  146. package/lib/parsers/utils.js.flow +6 -1
  147. package/package.json +8 -6
@@ -10,15 +10,18 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ const _require = require('../Utils'),
14
+ indent = _require.indent,
15
+ toSafeCppString = _require.toSafeCppString;
16
+ const _require2 = require('./CppHelpers'),
17
+ generateEventStructName = _require2.generateEventStructName,
18
+ getCppArrayTypeForAnnotation = _require2.getCppArrayTypeForAnnotation,
19
+ getCppTypeForAnnotation = _require2.getCppTypeForAnnotation,
20
+ getImports = _require2.getImports;
13
21
  const nullthrows = require('nullthrows');
14
- const _require = require('./CppHelpers'),
15
- getImports = _require.getImports,
16
- getCppArrayTypeForAnnotation = _require.getCppArrayTypeForAnnotation,
17
- getCppTypeForAnnotation = _require.getCppTypeForAnnotation,
18
- generateEventStructName = _require.generateEventStructName;
19
- const _require2 = require('../Utils'),
20
- indent = _require2.indent,
21
- toSafeCppString = _require2.toSafeCppString;
22
+
23
+ // File path -> contents
24
+
22
25
  const FileTemplate = ({componentEmitters, extraIncludes}) => `
23
26
  /**
24
27
  * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
@@ -33,11 +36,9 @@ const FileTemplate = ({componentEmitters, extraIncludes}) => `
33
36
  #include <react/renderer/components/view/ViewEventEmitter.h>
34
37
  ${[...extraIncludes].join('\n')}
35
38
 
36
- namespace facebook {
37
- namespace react {
39
+ namespace facebook::react {
38
40
  ${componentEmitters}
39
- } // namespace react
40
- } // namespace facebook
41
+ } // namespace facebook::react
41
42
  `;
42
43
  const ComponentTemplate = ({className, structs, events}) =>
43
44
  `
@@ -226,7 +227,13 @@ function generateEvents(componentName, component) {
226
227
  .join('\n\n' + ' ');
227
228
  }
228
229
  module.exports = {
229
- generate(libraryName, schema, packageName, assumeNonnull = false) {
230
+ generate(
231
+ libraryName,
232
+ schema,
233
+ packageName,
234
+ assumeNonnull = false,
235
+ headerPrefix,
236
+ ) {
230
237
  const moduleComponents = Object.keys(schema.modules)
231
238
  .map(moduleName => {
232
239
  const module = schema.modules[moduleName];
@@ -10,24 +10,23 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const nullthrows = require('nullthrows');
14
-
15
- const {
16
- getImports,
17
- getCppArrayTypeForAnnotation,
18
- getCppTypeForAnnotation,
19
- generateEventStructName,
20
- } = require('./CppHelpers');
21
- const {indent, toSafeCppString} = require('../Utils');
22
-
23
13
  import type {
24
14
  ComponentShape,
15
+ EventTypeAnnotation,
25
16
  EventTypeShape,
26
17
  NamedShape,
27
- EventTypeAnnotation,
28
18
  SchemaType,
29
19
  } from '../../CodegenSchema';
30
20
 
21
+ const {indent, toSafeCppString} = require('../Utils');
22
+ const {
23
+ generateEventStructName,
24
+ getCppArrayTypeForAnnotation,
25
+ getCppTypeForAnnotation,
26
+ getImports,
27
+ } = require('./CppHelpers');
28
+ const nullthrows = require('nullthrows');
29
+
31
30
  // File path -> contents
32
31
  type FilesOutput = Map<string, string>;
33
32
  type StructsMap = Map<string, string>;
@@ -57,11 +56,9 @@ const FileTemplate = ({
57
56
  #include <react/renderer/components/view/ViewEventEmitter.h>
58
57
  ${[...extraIncludes].join('\n')}
59
58
 
60
- namespace facebook {
61
- namespace react {
59
+ namespace facebook::react {
62
60
  ${componentEmitters}
63
- } // namespace react
64
- } // namespace facebook
61
+ } // namespace facebook::react
65
62
  `;
66
63
 
67
64
  const ComponentTemplate = ({
@@ -314,6 +311,7 @@ module.exports = {
314
311
  schema: SchemaType,
315
312
  packageName?: string,
316
313
  assumeNonnull: boolean = false,
314
+ headerPrefix?: string,
317
315
  ): FilesOutput {
318
316
  const moduleComponents: ComponentCollection = Object.keys(schema.modules)
319
317
  .map(moduleName => {
@@ -11,12 +11,13 @@
11
11
  'use strict';
12
12
 
13
13
  const _require = require('./CppHelpers'),
14
+ IncludeTemplate = _require.IncludeTemplate,
14
15
  convertDefaultTypeToString = _require.convertDefaultTypeToString,
15
16
  getImports = _require.getImports;
16
17
 
17
18
  // File path -> contents
18
19
 
19
- const FileTemplate = ({libraryName, imports, componentClasses}) => `
20
+ const FileTemplate = ({imports, componentClasses, headerPrefix}) => `
20
21
  /**
21
22
  * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
22
23
  *
@@ -26,16 +27,17 @@ const FileTemplate = ({libraryName, imports, componentClasses}) => `
26
27
  * ${'@'}generated by codegen project: GeneratePropsCpp.js
27
28
  */
28
29
 
29
- #include <react/renderer/components/${libraryName}/Props.h>
30
+ ${IncludeTemplate({
31
+ headerPrefix,
32
+ file: 'Props.h',
33
+ })}
30
34
  ${imports}
31
35
 
32
- namespace facebook {
33
- namespace react {
36
+ namespace facebook::react {
34
37
 
35
38
  ${componentClasses}
36
39
 
37
- } // namespace react
38
- } // namespace facebook
40
+ } // namespace facebook::react
39
41
  `;
40
42
  const ComponentTemplate = ({className, extendClasses, props}) =>
41
43
  `
@@ -79,7 +81,13 @@ function getClassExtendString(component) {
79
81
  return extendString;
80
82
  }
81
83
  module.exports = {
82
- generate(libraryName, schema, packageName, assumeNonnull = false) {
84
+ generate(
85
+ libraryName,
86
+ schema,
87
+ packageName,
88
+ assumeNonnull = false,
89
+ headerPrefix,
90
+ ) {
83
91
  const fileName = 'Props.cpp';
84
92
  const allImports = new Set([
85
93
  '#include <react/renderer/core/propsConversions.h>',
@@ -118,8 +126,9 @@ module.exports = {
118
126
  .join('\n');
119
127
  const replacedTemplate = FileTemplate({
120
128
  componentClasses: componentProps,
121
- libraryName,
122
129
  imports: Array.from(allImports).sort().join('\n').trim(),
130
+ headerPrefix:
131
+ headerPrefix !== null && headerPrefix !== void 0 ? headerPrefix : '',
123
132
  });
124
133
  return new Map([[fileName, replacedTemplate]]);
125
134
  },
@@ -11,19 +11,24 @@
11
11
  'use strict';
12
12
 
13
13
  import type {ComponentShape, SchemaType} from '../../CodegenSchema';
14
- const {convertDefaultTypeToString, getImports} = require('./CppHelpers');
14
+
15
+ const {
16
+ IncludeTemplate,
17
+ convertDefaultTypeToString,
18
+ getImports,
19
+ } = require('./CppHelpers');
15
20
 
16
21
  // File path -> contents
17
22
  type FilesOutput = Map<string, string>;
18
23
 
19
24
  const FileTemplate = ({
20
- libraryName,
21
25
  imports,
22
26
  componentClasses,
27
+ headerPrefix,
23
28
  }: {
24
- libraryName: string,
25
29
  imports: string,
26
30
  componentClasses: string,
31
+ headerPrefix: string,
27
32
  }) => `
28
33
  /**
29
34
  * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
@@ -34,16 +39,14 @@ const FileTemplate = ({
34
39
  * ${'@'}generated by codegen project: GeneratePropsCpp.js
35
40
  */
36
41
 
37
- #include <react/renderer/components/${libraryName}/Props.h>
42
+ ${IncludeTemplate({headerPrefix, file: 'Props.h'})}
38
43
  ${imports}
39
44
 
40
- namespace facebook {
41
- namespace react {
45
+ namespace facebook::react {
42
46
 
43
47
  ${componentClasses}
44
48
 
45
- } // namespace react
46
- } // namespace facebook
49
+ } // namespace facebook::react
47
50
  `;
48
51
 
49
52
  const ComponentTemplate = ({
@@ -105,6 +108,7 @@ module.exports = {
105
108
  schema: SchemaType,
106
109
  packageName?: string,
107
110
  assumeNonnull: boolean = false,
111
+ headerPrefix?: string,
108
112
  ): FilesOutput {
109
113
  const fileName = 'Props.cpp';
110
114
  const allImports: Set<string> = new Set([
@@ -152,8 +156,8 @@ module.exports = {
152
156
 
153
157
  const replacedTemplate = FileTemplate({
154
158
  componentClasses: componentProps,
155
- libraryName,
156
159
  imports: Array.from(allImports).sort().join('\n').trim(),
160
+ headerPrefix: headerPrefix ?? '',
157
161
  });
158
162
 
159
163
  return new Map([[fileName, replacedTemplate]]);
@@ -10,17 +10,20 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const _require = require('./ComponentsGeneratorUtils.js'),
14
- getNativeTypeFromAnnotation = _require.getNativeTypeFromAnnotation,
15
- getLocalImports = _require.getLocalImports;
16
- const _require2 = require('./CppHelpers.js'),
17
- convertDefaultTypeToString = _require2.convertDefaultTypeToString,
18
- getEnumMaskName = _require2.getEnumMaskName,
19
- generateStructName = _require2.generateStructName,
20
- toIntEnumValueName = _require2.toIntEnumValueName;
21
- const _require3 = require('../Utils'),
22
- getEnumName = _require3.getEnumName,
23
- toSafeCppString = _require3.toSafeCppString;
13
+ const _require = require('../Utils'),
14
+ getEnumName = _require.getEnumName,
15
+ toSafeCppString = _require.toSafeCppString;
16
+ const _require2 = require('./ComponentsGeneratorUtils.js'),
17
+ getLocalImports = _require2.getLocalImports,
18
+ getNativeTypeFromAnnotation = _require2.getNativeTypeFromAnnotation;
19
+ const _require3 = require('./CppHelpers.js'),
20
+ convertDefaultTypeToString = _require3.convertDefaultTypeToString,
21
+ generateStructName = _require3.generateStructName,
22
+ getEnumMaskName = _require3.getEnumMaskName,
23
+ toIntEnumValueName = _require3.toIntEnumValueName;
24
+
25
+ // File path -> contents
26
+
24
27
  const FileTemplate = ({imports, componentClasses}) => `
25
28
  /**
26
29
  * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
@@ -34,13 +37,11 @@ const FileTemplate = ({imports, componentClasses}) => `
34
37
 
35
38
  ${imports}
36
39
 
37
- namespace facebook {
38
- namespace react {
40
+ namespace facebook::react {
39
41
 
40
42
  ${componentClasses}
41
43
 
42
- } // namespace react
43
- } // namespace facebook
44
+ } // namespace facebook::react
44
45
  `;
45
46
  const ClassTemplate = ({enums, structs, className, props, extendClasses}) =>
46
47
  `
@@ -549,7 +550,13 @@ function generateStruct(structs, componentName, nameParts, properties) {
549
550
  );
550
551
  }
551
552
  module.exports = {
552
- generate(libraryName, schema, packageName, assumeNonnull = false) {
553
+ generate(
554
+ libraryName,
555
+ schema,
556
+ packageName,
557
+ assumeNonnull = false,
558
+ headerPrefix,
559
+ ) {
553
560
  const fileName = 'Props.h';
554
561
  const allImports = new Set();
555
562
  const componentClasses = Object.keys(schema.modules)
@@ -10,28 +10,25 @@
10
10
 
11
11
  'use strict';
12
12
  import type {ComponentShape} from '../../CodegenSchema';
13
+ import type {
14
+ ExtendsPropsShape,
15
+ NamedShape,
16
+ PropTypeAnnotation,
17
+ SchemaType,
18
+ } from '../../CodegenSchema';
13
19
 
20
+ const {getEnumName, toSafeCppString} = require('../Utils');
14
21
  const {
15
- getNativeTypeFromAnnotation,
16
22
  getLocalImports,
23
+ getNativeTypeFromAnnotation,
17
24
  } = require('./ComponentsGeneratorUtils.js');
18
-
19
25
  const {
20
26
  convertDefaultTypeToString,
21
- getEnumMaskName,
22
27
  generateStructName,
28
+ getEnumMaskName,
23
29
  toIntEnumValueName,
24
30
  } = require('./CppHelpers.js');
25
31
 
26
- const {getEnumName, toSafeCppString} = require('../Utils');
27
-
28
- import type {
29
- ExtendsPropsShape,
30
- NamedShape,
31
- PropTypeAnnotation,
32
- SchemaType,
33
- } from '../../CodegenSchema';
34
-
35
32
  // File path -> contents
36
33
  type FilesOutput = Map<string, string>;
37
34
  type StructsMap = Map<string, string>;
@@ -55,13 +52,11 @@ const FileTemplate = ({
55
52
 
56
53
  ${imports}
57
54
 
58
- namespace facebook {
59
- namespace react {
55
+ namespace facebook::react {
60
56
 
61
57
  ${componentClasses}
62
58
 
63
- } // namespace react
64
- } // namespace facebook
59
+ } // namespace facebook::react
65
60
  `;
66
61
 
67
62
  const ClassTemplate = ({
@@ -711,6 +706,7 @@ module.exports = {
711
706
  schema: SchemaType,
712
707
  packageName?: string,
713
708
  assumeNonnull: boolean = false,
709
+ headerPrefix?: string,
714
710
  ): FilesOutput {
715
711
  const fileName = 'Props.h';
716
712
 
@@ -11,10 +11,10 @@
11
11
  'use strict';
12
12
 
13
13
  const _require = require('./JavaHelpers'),
14
+ getDelegateJavaClassName = _require.getDelegateJavaClassName,
14
15
  getImports = _require.getImports,
15
- toSafeJavaString = _require.toSafeJavaString,
16
16
  getInterfaceJavaClassName = _require.getInterfaceJavaClassName,
17
- getDelegateJavaClassName = _require.getDelegateJavaClassName;
17
+ toSafeJavaString = _require.toSafeJavaString;
18
18
 
19
19
  // File path -> contents
20
20
 
@@ -167,6 +167,8 @@ function getCommandArgJavaType(param, index) {
167
167
  return `args.getInt(${index})`;
168
168
  case 'StringTypeAnnotation':
169
169
  return `args.getString(${index})`;
170
+ case 'ArrayTypeAnnotation':
171
+ return `args.getArray(${index})`;
170
172
  default:
171
173
  typeAnnotation.type;
172
174
  throw new Error(`Receieved invalid type: ${typeAnnotation.type}`);
@@ -241,7 +243,13 @@ function generateMethods(propsString, commandsString) {
241
243
  .trimRight();
242
244
  }
243
245
  module.exports = {
244
- generate(libraryName, schema, packageName, assumeNonnull = false) {
246
+ generate(
247
+ libraryName,
248
+ schema,
249
+ packageName,
250
+ assumeNonnull = false,
251
+ headerPrefix,
252
+ ) {
245
253
  // TODO: This doesn't support custom package name yet.
246
254
  const normalizedPackageName = 'com.facebook.react.viewmanagers';
247
255
  const outputDir = `java/${normalizedPackageName.replace(/\./g, '/')}`;
@@ -10,19 +10,19 @@
10
10
 
11
11
  'use strict';
12
12
  import type {CommandParamTypeAnnotation} from '../../CodegenSchema';
13
-
14
13
  import type {
15
- NamedShape,
16
14
  CommandTypeAnnotation,
17
15
  ComponentShape,
16
+ NamedShape,
18
17
  PropTypeAnnotation,
19
18
  SchemaType,
20
19
  } from '../../CodegenSchema';
20
+
21
21
  const {
22
+ getDelegateJavaClassName,
22
23
  getImports,
23
- toSafeJavaString,
24
24
  getInterfaceJavaClassName,
25
- getDelegateJavaClassName,
25
+ toSafeJavaString,
26
26
  } = require('./JavaHelpers');
27
27
 
28
28
  // File path -> contents
@@ -202,6 +202,8 @@ function getCommandArgJavaType(
202
202
  return `args.getInt(${index})`;
203
203
  case 'StringTypeAnnotation':
204
204
  return `args.getString(${index})`;
205
+ case 'ArrayTypeAnnotation':
206
+ return `args.getArray(${index})`;
205
207
  default:
206
208
  (typeAnnotation.type: empty);
207
209
  throw new Error(`Receieved invalid type: ${typeAnnotation.type}`);
@@ -295,6 +297,7 @@ module.exports = {
295
297
  schema: SchemaType,
296
298
  packageName?: string,
297
299
  assumeNonnull: boolean = false,
300
+ headerPrefix?: string,
298
301
  ): FilesOutput {
299
302
  // TODO: This doesn't support custom package name yet.
300
303
  const normalizedPackageName = 'com.facebook.react.viewmanagers';
@@ -12,8 +12,8 @@
12
12
 
13
13
  const _require = require('./JavaHelpers'),
14
14
  getImports = _require.getImports,
15
- toSafeJavaString = _require.toSafeJavaString,
16
- getInterfaceJavaClassName = _require.getInterfaceJavaClassName;
15
+ getInterfaceJavaClassName = _require.getInterfaceJavaClassName,
16
+ toSafeJavaString = _require.toSafeJavaString;
17
17
 
18
18
  // File path -> contents
19
19
 
@@ -145,6 +145,8 @@ function getCommandArgJavaType(param) {
145
145
  return 'int';
146
146
  case 'StringTypeAnnotation':
147
147
  return 'String';
148
+ case 'ArrayTypeAnnotation':
149
+ return 'ReadableArray';
148
150
  default:
149
151
  typeAnnotation.type;
150
152
  throw new Error('Receieved invalid typeAnnotation');
@@ -191,7 +193,13 @@ function getClassExtendString(component) {
191
193
  return extendString;
192
194
  }
193
195
  module.exports = {
194
- generate(libraryName, schema, packageName, assumeNonnull = false) {
196
+ generate(
197
+ libraryName,
198
+ schema,
199
+ packageName,
200
+ assumeNonnull = false,
201
+ headerPrefix,
202
+ ) {
195
203
  // TODO: This doesn't support custom package name yet.
196
204
  const normalizedPackageName = 'com.facebook.react.viewmanagers';
197
205
  const outputDir = `java/${normalizedPackageName.replace(/\./g, '/')}`;
@@ -10,18 +10,18 @@
10
10
 
11
11
  'use strict';
12
12
  import type {CommandParamTypeAnnotation} from '../../CodegenSchema';
13
-
14
13
  import type {
15
- NamedShape,
16
14
  CommandTypeAnnotation,
17
15
  ComponentShape,
16
+ NamedShape,
18
17
  PropTypeAnnotation,
19
18
  SchemaType,
20
19
  } from '../../CodegenSchema';
20
+
21
21
  const {
22
22
  getImports,
23
- toSafeJavaString,
24
23
  getInterfaceJavaClassName,
24
+ toSafeJavaString,
25
25
  } = require('./JavaHelpers');
26
26
 
27
27
  // File path -> contents
@@ -171,6 +171,8 @@ function getCommandArgJavaType(param: NamedShape<CommandParamTypeAnnotation>) {
171
171
  return 'int';
172
172
  case 'StringTypeAnnotation':
173
173
  return 'String';
174
+ case 'ArrayTypeAnnotation':
175
+ return 'ReadableArray';
174
176
  default:
175
177
  (typeAnnotation.type: empty);
176
178
  throw new Error('Receieved invalid typeAnnotation');
@@ -235,6 +237,7 @@ module.exports = {
235
237
  schema: SchemaType,
236
238
  packageName?: string,
237
239
  assumeNonnull: boolean = false,
240
+ headerPrefix?: string,
238
241
  ): FilesOutput {
239
242
  // TODO: This doesn't support custom package name yet.
240
243
  const normalizedPackageName = 'com.facebook.react.viewmanagers';
@@ -11,17 +11,17 @@
11
11
  'use strict';
12
12
 
13
13
  import type {
14
- ReservedPropTypeAnnotation,
15
- NamedShape,
16
- ObjectTypeAnnotation,
14
+ ArrayTypeAnnotation,
17
15
  BooleanTypeAnnotation,
18
- StringTypeAnnotation,
19
16
  DoubleTypeAnnotation,
20
17
  FloatTypeAnnotation,
21
18
  Int32TypeAnnotation,
22
- PropTypeAnnotation,
23
19
  MixedTypeAnnotation,
24
- ArrayTypeAnnotation,
20
+ NamedShape,
21
+ ObjectTypeAnnotation,
22
+ PropTypeAnnotation,
23
+ ReservedPropTypeAnnotation,
24
+ StringTypeAnnotation,
25
25
  } from '../../../CodegenSchema';
26
26
 
27
27
  const {capitalize} = require('../../Utils');
@@ -10,9 +10,9 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- const PojoCollector = require('./PojoCollector');
14
13
  const _require = require('../../Utils'),
15
14
  capitalize = _require.capitalize;
15
+ const PojoCollector = require('./PojoCollector');
16
16
  const _require2 = require('./serializePojo'),
17
17
  serializePojo = _require2.serializePojo;
18
18
  module.exports = {
@@ -12,8 +12,8 @@
12
12
 
13
13
  import type {SchemaType} from '../../../CodegenSchema';
14
14
 
15
- const PojoCollector = require('./PojoCollector');
16
15
  const {capitalize} = require('../../Utils');
16
+ const PojoCollector = require('./PojoCollector');
17
17
  const {serializePojo} = require('./serializePojo');
18
18
 
19
19
  type FilesOutput = Map<string, string>;
@@ -11,6 +11,7 @@
11
11
  'use strict';
12
12
 
13
13
  import type {Pojo, PojoProperty, PojoTypeAnnotation} from './PojoCollector';
14
+
14
15
  const {capitalize} = require('../../Utils');
15
16
 
16
17
  type ImportCollector = ($import: string) => void;
@@ -10,9 +10,12 @@
10
10
 
11
11
  'use strict';
12
12
 
13
+ const _require = require('./CppHelpers'),
14
+ IncludeTemplate = _require.IncludeTemplate;
15
+
13
16
  // File path -> contents
14
17
 
15
- const FileTemplate = ({libraryName, componentNames}) => `
18
+ const FileTemplate = ({componentNames, headerPrefix}) => `
16
19
  /**
17
20
  * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
18
21
  *
@@ -22,22 +25,29 @@ const FileTemplate = ({libraryName, componentNames}) => `
22
25
  * ${'@'}generated by codegen project: GenerateShadowNodeCpp.js
23
26
  */
24
27
 
25
- #include <react/renderer/components/${libraryName}/ShadowNodes.h>
28
+ ${IncludeTemplate({
29
+ headerPrefix,
30
+ file: 'ShadowNodes.h',
31
+ })}
26
32
 
27
- namespace facebook {
28
- namespace react {
33
+ namespace facebook::react {
29
34
 
30
35
  ${componentNames}
31
36
 
32
- } // namespace react
33
- } // namespace facebook
37
+ } // namespace facebook::react
34
38
  `;
35
39
  const ComponentTemplate = ({className}) =>
36
40
  `
37
41
  extern const char ${className}ComponentName[] = "${className}";
38
42
  `.trim();
39
43
  module.exports = {
40
- generate(libraryName, schema, packageName, assumeNonnull = false) {
44
+ generate(
45
+ libraryName,
46
+ schema,
47
+ packageName,
48
+ assumeNonnull = false,
49
+ headerPrefix,
50
+ ) {
41
51
  const fileName = 'ShadowNodes.cpp';
42
52
  const componentNames = Object.keys(schema.modules)
43
53
  .map(moduleName => {
@@ -66,7 +76,8 @@ module.exports = {
66
76
  .join('\n');
67
77
  const replacedTemplate = FileTemplate({
68
78
  componentNames,
69
- libraryName,
79
+ headerPrefix:
80
+ headerPrefix !== null && headerPrefix !== void 0 ? headerPrefix : '',
70
81
  });
71
82
  return new Map([[fileName, replacedTemplate]]);
72
83
  },