@react-native/codegen 0.72.1

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 (186) hide show
  1. package/README.md +21 -0
  2. package/lib/CodegenSchema.js +11 -0
  3. package/lib/CodegenSchema.js.flow +351 -0
  4. package/lib/SchemaValidator.js +54 -0
  5. package/lib/SchemaValidator.js.flow +67 -0
  6. package/lib/cli/combine/combine-js-to-schema-cli.js +50 -0
  7. package/lib/cli/combine/combine-js-to-schema-cli.js.flow +49 -0
  8. package/lib/cli/combine/combine-js-to-schema.js +110 -0
  9. package/lib/cli/combine/combine-js-to-schema.js.flow +48 -0
  10. package/lib/cli/combine/combine-utils.js +118 -0
  11. package/lib/cli/combine/combine-utils.js.flow +85 -0
  12. package/lib/cli/generators/generate-all.js +65 -0
  13. package/lib/cli/generators/generate-all.js.flow +66 -0
  14. package/lib/cli/parser/parser-cli.js +55 -0
  15. package/lib/cli/parser/parser-cli.js.flow +18 -0
  16. package/lib/cli/parser/parser.js +35 -0
  17. package/lib/cli/parser/parser.js.flow +37 -0
  18. package/lib/cli/parser/parser.sh +15 -0
  19. package/lib/generators/RNCodegen.js +207 -0
  20. package/lib/generators/RNCodegen.js.flow +284 -0
  21. package/lib/generators/Utils.js +31 -0
  22. package/lib/generators/Utils.js.flow +33 -0
  23. package/lib/generators/__test_fixtures__/fixtures.js +79 -0
  24. package/lib/generators/__test_fixtures__/fixtures.js.flow +82 -0
  25. package/lib/generators/components/ComponentsGeneratorUtils.js +217 -0
  26. package/lib/generators/components/ComponentsGeneratorUtils.js.flow +304 -0
  27. package/lib/generators/components/CppHelpers.js +188 -0
  28. package/lib/generators/components/CppHelpers.js.flow +228 -0
  29. package/lib/generators/components/GenerateComponentDescriptorH.js +75 -0
  30. package/lib/generators/components/GenerateComponentDescriptorH.js.flow +95 -0
  31. package/lib/generators/components/GenerateComponentHObjCpp.js +327 -0
  32. package/lib/generators/components/GenerateComponentHObjCpp.js.flow +418 -0
  33. package/lib/generators/components/GenerateEventEmitterCpp.js +199 -0
  34. package/lib/generators/components/GenerateEventEmitterCpp.js.flow +273 -0
  35. package/lib/generators/components/GenerateEventEmitterH.js +224 -0
  36. package/lib/generators/components/GenerateEventEmitterH.js.flow +315 -0
  37. package/lib/generators/components/GeneratePropsCpp.js +126 -0
  38. package/lib/generators/components/GeneratePropsCpp.js.flow +161 -0
  39. package/lib/generators/components/GeneratePropsH.js +606 -0
  40. package/lib/generators/components/GeneratePropsH.js.flow +778 -0
  41. package/lib/generators/components/GeneratePropsJavaDelegate.js +287 -0
  42. package/lib/generators/components/GeneratePropsJavaDelegate.js.flow +348 -0
  43. package/lib/generators/components/GeneratePropsJavaInterface.js +237 -0
  44. package/lib/generators/components/GeneratePropsJavaInterface.js.flow +288 -0
  45. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js +157 -0
  46. package/lib/generators/components/GeneratePropsJavaPojo/PojoCollector.js.flow +187 -0
  47. package/lib/generators/components/GeneratePropsJavaPojo/index.js +66 -0
  48. package/lib/generators/components/GeneratePropsJavaPojo/index.js.flow +80 -0
  49. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js +273 -0
  50. package/lib/generators/components/GeneratePropsJavaPojo/serializePojo.js.flow +296 -0
  51. package/lib/generators/components/GenerateShadowNodeCpp.js +73 -0
  52. package/lib/generators/components/GenerateShadowNodeCpp.js.flow +95 -0
  53. package/lib/generators/components/GenerateShadowNodeH.js +91 -0
  54. package/lib/generators/components/GenerateShadowNodeH.js.flow +124 -0
  55. package/lib/generators/components/GenerateStateCpp.js +70 -0
  56. package/lib/generators/components/GenerateStateCpp.js.flow +92 -0
  57. package/lib/generators/components/GenerateStateH.js +93 -0
  58. package/lib/generators/components/GenerateStateH.js.flow +111 -0
  59. package/lib/generators/components/GenerateTests.js +165 -0
  60. package/lib/generators/components/GenerateTests.js.flow +219 -0
  61. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js +91 -0
  62. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderH.js.flow +107 -0
  63. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js +89 -0
  64. package/lib/generators/components/GenerateThirdPartyFabricComponentsProviderObjCpp.js.flow +105 -0
  65. package/lib/generators/components/GenerateViewConfigJs.js +410 -0
  66. package/lib/generators/components/GenerateViewConfigJs.js.flow +484 -0
  67. package/lib/generators/components/JavaHelpers.js +87 -0
  68. package/lib/generators/components/JavaHelpers.js.flow +119 -0
  69. package/lib/generators/components/__test_fixtures__/fixtures.js +1641 -0
  70. package/lib/generators/components/__test_fixtures__/fixtures.js.flow +1672 -0
  71. package/lib/generators/modules/GenerateModuleCpp.js +299 -0
  72. package/lib/generators/modules/GenerateModuleCpp.js.flow +278 -0
  73. package/lib/generators/modules/GenerateModuleH.js +373 -0
  74. package/lib/generators/modules/GenerateModuleH.js.flow +355 -0
  75. package/lib/generators/modules/GenerateModuleJavaSpec.js +571 -0
  76. package/lib/generators/modules/GenerateModuleJavaSpec.js.flow +553 -0
  77. package/lib/generators/modules/GenerateModuleJniCpp.js +505 -0
  78. package/lib/generators/modules/GenerateModuleJniCpp.js.flow +523 -0
  79. package/lib/generators/modules/GenerateModuleJniH.js +138 -0
  80. package/lib/generators/modules/GenerateModuleJniH.js.flow +148 -0
  81. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js +262 -0
  82. package/lib/generators/modules/GenerateModuleObjCpp/StructCollector.js.flow +208 -0
  83. package/lib/generators/modules/GenerateModuleObjCpp/Utils.js +25 -0
  84. package/lib/generators/modules/GenerateModuleObjCpp/Utils.js.flow +32 -0
  85. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js +337 -0
  86. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeConstantsStruct.js.flow +288 -0
  87. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js +330 -0
  88. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeRegularStruct.js.flow +279 -0
  89. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js +25 -0
  90. package/lib/generators/modules/GenerateModuleObjCpp/header/serializeStruct.js.flow +35 -0
  91. package/lib/generators/modules/GenerateModuleObjCpp/index.js +185 -0
  92. package/lib/generators/modules/GenerateModuleObjCpp/index.js.flow +219 -0
  93. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js +529 -0
  94. package/lib/generators/modules/GenerateModuleObjCpp/serializeMethod.js.flow +510 -0
  95. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js +96 -0
  96. package/lib/generators/modules/GenerateModuleObjCpp/source/serializeModule.js.flow +121 -0
  97. package/lib/generators/modules/Utils.js +34 -0
  98. package/lib/generators/modules/Utils.js.flow +53 -0
  99. package/lib/generators/modules/__test_fixtures__/fixtures.js +1658 -0
  100. package/lib/generators/modules/__test_fixtures__/fixtures.js.flow +1669 -0
  101. package/lib/parsers/consistency/compareSnaps.js +84 -0
  102. package/lib/parsers/error-utils.js +284 -0
  103. package/lib/parsers/error-utils.js.flow +295 -0
  104. package/lib/parsers/errors.js +350 -0
  105. package/lib/parsers/errors.js.flow +439 -0
  106. package/lib/parsers/flow/components/__test_fixtures__/failures.js +583 -0
  107. package/lib/parsers/flow/components/__test_fixtures__/failures.js.flow +600 -0
  108. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js +1001 -0
  109. package/lib/parsers/flow/components/__test_fixtures__/fixtures.js.flow +1016 -0
  110. package/lib/parsers/flow/components/commands.js +104 -0
  111. package/lib/parsers/flow/components/commands.js.flow +123 -0
  112. package/lib/parsers/flow/components/componentsUtils.js +446 -0
  113. package/lib/parsers/flow/components/componentsUtils.js.flow +496 -0
  114. package/lib/parsers/flow/components/events.js +233 -0
  115. package/lib/parsers/flow/components/events.js.flow +262 -0
  116. package/lib/parsers/flow/components/extends.js +52 -0
  117. package/lib/parsers/flow/components/extends.js.flow +66 -0
  118. package/lib/parsers/flow/components/index.js +267 -0
  119. package/lib/parsers/flow/components/index.js.flow +226 -0
  120. package/lib/parsers/flow/components/options.js +72 -0
  121. package/lib/parsers/flow/components/options.js.flow +87 -0
  122. package/lib/parsers/flow/components/props.js +47 -0
  123. package/lib/parsers/flow/components/props.js.flow +60 -0
  124. package/lib/parsers/flow/components/schema.js +106 -0
  125. package/lib/parsers/flow/components/schema.js.flow +62 -0
  126. package/lib/parsers/flow/index.js +80 -0
  127. package/lib/parsers/flow/index.js.flow +85 -0
  128. package/lib/parsers/flow/modules/__test_fixtures__/failures.js +215 -0
  129. package/lib/parsers/flow/modules/__test_fixtures__/failures.js.flow +223 -0
  130. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js +724 -0
  131. package/lib/parsers/flow/modules/__test_fixtures__/fixtures.js.flow +747 -0
  132. package/lib/parsers/flow/modules/index.js +528 -0
  133. package/lib/parsers/flow/modules/index.js.flow +420 -0
  134. package/lib/parsers/flow/parser.js +109 -0
  135. package/lib/parsers/flow/parser.js.flow +83 -0
  136. package/lib/parsers/flow/utils.js +108 -0
  137. package/lib/parsers/flow/utils.js.flow +123 -0
  138. package/lib/parsers/parser.js +11 -0
  139. package/lib/parsers/parser.js.flow +70 -0
  140. package/lib/parsers/parserMock.js +96 -0
  141. package/lib/parsers/parserMock.js.flow +68 -0
  142. package/lib/parsers/parsers-commons.js +448 -0
  143. package/lib/parsers/parsers-commons.js.flow +447 -0
  144. package/lib/parsers/parsers-primitives.js +387 -0
  145. package/lib/parsers/parsers-primitives.js.flow +383 -0
  146. package/lib/parsers/parsers-utils.js +18 -0
  147. package/lib/parsers/parsers-utils.js.flow +19 -0
  148. package/lib/parsers/schema/index.js +23 -0
  149. package/lib/parsers/schema/index.js.flow +26 -0
  150. package/lib/parsers/typescript/components/__test_fixtures__/failures.js +489 -0
  151. package/lib/parsers/typescript/components/__test_fixtures__/failures.js.flow +505 -0
  152. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js +1151 -0
  153. package/lib/parsers/typescript/components/__test_fixtures__/fixtures.js.flow +1168 -0
  154. package/lib/parsers/typescript/components/commands.js +132 -0
  155. package/lib/parsers/typescript/components/commands.js.flow +151 -0
  156. package/lib/parsers/typescript/components/componentsUtils.js +471 -0
  157. package/lib/parsers/typescript/components/componentsUtils.js.flow +521 -0
  158. package/lib/parsers/typescript/components/events.js +240 -0
  159. package/lib/parsers/typescript/components/events.js.flow +262 -0
  160. package/lib/parsers/typescript/components/extends.js +88 -0
  161. package/lib/parsers/typescript/components/extends.js.flow +103 -0
  162. package/lib/parsers/typescript/components/index.js +277 -0
  163. package/lib/parsers/typescript/components/index.js.flow +239 -0
  164. package/lib/parsers/typescript/components/options.js +72 -0
  165. package/lib/parsers/typescript/components/options.js.flow +87 -0
  166. package/lib/parsers/typescript/components/props.js +39 -0
  167. package/lib/parsers/typescript/components/props.js.flow +48 -0
  168. package/lib/parsers/typescript/components/schema.js +106 -0
  169. package/lib/parsers/typescript/components/schema.js.flow +62 -0
  170. package/lib/parsers/typescript/index.js +85 -0
  171. package/lib/parsers/typescript/index.js.flow +94 -0
  172. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js +160 -0
  173. package/lib/parsers/typescript/modules/__test_fixtures__/failures.js.flow +167 -0
  174. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js +701 -0
  175. package/lib/parsers/typescript/modules/__test_fixtures__/fixtures.js.flow +727 -0
  176. package/lib/parsers/typescript/modules/index.js +543 -0
  177. package/lib/parsers/typescript/modules/index.js.flow +435 -0
  178. package/lib/parsers/typescript/parseTopLevelType.js +203 -0
  179. package/lib/parsers/typescript/parseTopLevelType.js.flow +243 -0
  180. package/lib/parsers/typescript/parser.js +105 -0
  181. package/lib/parsers/typescript/parser.js.flow +87 -0
  182. package/lib/parsers/typescript/utils.js +101 -0
  183. package/lib/parsers/typescript/utils.js.flow +115 -0
  184. package/lib/parsers/utils.js +273 -0
  185. package/lib/parsers/utils.js.flow +266 -0
  186. package/package.json +45 -0
@@ -0,0 +1,1669 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {SchemaType} from '../../../CodegenSchema.js';
14
+
15
+ const EMPTY_NATIVE_MODULES: SchemaType = {
16
+ modules: {
17
+ NativeSampleTurboModule: {
18
+ type: 'NativeModule',
19
+ aliases: {},
20
+ spec: {
21
+ properties: [],
22
+ },
23
+ moduleName: 'SampleTurboModule',
24
+ },
25
+ },
26
+ };
27
+
28
+ const SIMPLE_NATIVE_MODULES: SchemaType = {
29
+ modules: {
30
+ NativeSampleTurboModule: {
31
+ type: 'NativeModule',
32
+ aliases: {},
33
+ spec: {
34
+ properties: [
35
+ {
36
+ name: 'getConstants',
37
+ optional: false,
38
+ typeAnnotation: {
39
+ type: 'FunctionTypeAnnotation',
40
+ returnTypeAnnotation: {
41
+ type: 'ObjectTypeAnnotation',
42
+ properties: [
43
+ {
44
+ optional: false,
45
+ name: 'const1',
46
+ typeAnnotation: {
47
+ type: 'BooleanTypeAnnotation',
48
+ },
49
+ },
50
+ {
51
+ optional: false,
52
+ name: 'const2',
53
+ typeAnnotation: {
54
+ type: 'NumberTypeAnnotation',
55
+ },
56
+ },
57
+ {
58
+ optional: false,
59
+ name: 'const3',
60
+ typeAnnotation: {
61
+ type: 'StringTypeAnnotation',
62
+ },
63
+ },
64
+ ],
65
+ },
66
+ params: [],
67
+ },
68
+ },
69
+ {
70
+ name: 'voidFunc',
71
+ optional: false,
72
+ typeAnnotation: {
73
+ type: 'FunctionTypeAnnotation',
74
+ returnTypeAnnotation: {
75
+ type: 'VoidTypeAnnotation',
76
+ },
77
+ params: [],
78
+ },
79
+ },
80
+ {
81
+ name: 'getBool',
82
+ optional: false,
83
+ typeAnnotation: {
84
+ type: 'FunctionTypeAnnotation',
85
+ returnTypeAnnotation: {
86
+ type: 'BooleanTypeAnnotation',
87
+ },
88
+ params: [
89
+ {
90
+ optional: false,
91
+ name: 'arg',
92
+ typeAnnotation: {
93
+ type: 'BooleanTypeAnnotation',
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ },
99
+ {
100
+ name: 'getNumber',
101
+ optional: false,
102
+ typeAnnotation: {
103
+ type: 'FunctionTypeAnnotation',
104
+ returnTypeAnnotation: {
105
+ type: 'NumberTypeAnnotation',
106
+ },
107
+ params: [
108
+ {
109
+ optional: false,
110
+ name: 'arg',
111
+ typeAnnotation: {
112
+ type: 'NumberTypeAnnotation',
113
+ },
114
+ },
115
+ ],
116
+ },
117
+ },
118
+ {
119
+ name: 'getString',
120
+ optional: false,
121
+ typeAnnotation: {
122
+ type: 'FunctionTypeAnnotation',
123
+ returnTypeAnnotation: {
124
+ type: 'StringTypeAnnotation',
125
+ },
126
+ params: [
127
+ {
128
+ optional: false,
129
+ name: 'arg',
130
+ typeAnnotation: {
131
+ type: 'StringTypeAnnotation',
132
+ },
133
+ },
134
+ ],
135
+ },
136
+ },
137
+ {
138
+ name: 'getArray',
139
+ optional: false,
140
+ typeAnnotation: {
141
+ type: 'FunctionTypeAnnotation',
142
+ returnTypeAnnotation: {
143
+ type: 'ArrayTypeAnnotation',
144
+ elementType: {
145
+ type: 'GenericObjectTypeAnnotation',
146
+ },
147
+ },
148
+ params: [
149
+ {
150
+ name: 'arg',
151
+ optional: false,
152
+ typeAnnotation: {
153
+ type: 'ArrayTypeAnnotation',
154
+
155
+ elementType: {
156
+ type: 'GenericObjectTypeAnnotation',
157
+ },
158
+ },
159
+ },
160
+ ],
161
+ },
162
+ },
163
+ {
164
+ name: 'getObject',
165
+ optional: false,
166
+ typeAnnotation: {
167
+ type: 'FunctionTypeAnnotation',
168
+ returnTypeAnnotation: {
169
+ type: 'GenericObjectTypeAnnotation',
170
+ },
171
+ params: [
172
+ {
173
+ optional: false,
174
+ name: 'arg',
175
+ typeAnnotation: {
176
+ type: 'GenericObjectTypeAnnotation',
177
+ },
178
+ },
179
+ ],
180
+ },
181
+ },
182
+ {
183
+ name: 'getRootTag',
184
+ optional: false,
185
+ typeAnnotation: {
186
+ type: 'FunctionTypeAnnotation',
187
+ returnTypeAnnotation: {
188
+ type: 'ReservedTypeAnnotation',
189
+ name: 'RootTag',
190
+ },
191
+ params: [
192
+ {
193
+ optional: false,
194
+ name: 'arg',
195
+ typeAnnotation: {
196
+ type: 'ReservedTypeAnnotation',
197
+ name: 'RootTag',
198
+ },
199
+ },
200
+ ],
201
+ },
202
+ },
203
+ {
204
+ name: 'getValue',
205
+ optional: false,
206
+ typeAnnotation: {
207
+ type: 'FunctionTypeAnnotation',
208
+ returnTypeAnnotation: {
209
+ type: 'GenericObjectTypeAnnotation',
210
+ },
211
+ params: [
212
+ {
213
+ optional: false,
214
+ name: 'x',
215
+ typeAnnotation: {
216
+ type: 'NumberTypeAnnotation',
217
+ },
218
+ },
219
+ {
220
+ optional: false,
221
+ name: 'y',
222
+ typeAnnotation: {
223
+ type: 'StringTypeAnnotation',
224
+ },
225
+ },
226
+ {
227
+ optional: false,
228
+ name: 'z',
229
+ typeAnnotation: {
230
+ type: 'GenericObjectTypeAnnotation',
231
+ },
232
+ },
233
+ ],
234
+ },
235
+ },
236
+ {
237
+ name: 'getValueWithCallback',
238
+ optional: false,
239
+ typeAnnotation: {
240
+ type: 'FunctionTypeAnnotation',
241
+ returnTypeAnnotation: {
242
+ type: 'VoidTypeAnnotation',
243
+ },
244
+ params: [
245
+ {
246
+ name: 'callback',
247
+ optional: false,
248
+ typeAnnotation: {
249
+ type: 'FunctionTypeAnnotation',
250
+ params: [],
251
+ returnTypeAnnotation: {
252
+ type: 'VoidTypeAnnotation',
253
+ },
254
+ },
255
+ },
256
+ ],
257
+ },
258
+ },
259
+ {
260
+ name: 'getValueWithPromise',
261
+ optional: false,
262
+ typeAnnotation: {
263
+ type: 'FunctionTypeAnnotation',
264
+ returnTypeAnnotation: {
265
+ type: 'PromiseTypeAnnotation',
266
+ },
267
+ params: [
268
+ {
269
+ optional: false,
270
+ name: 'error',
271
+ typeAnnotation: {
272
+ type: 'BooleanTypeAnnotation',
273
+ },
274
+ },
275
+ ],
276
+ },
277
+ },
278
+ {
279
+ name: 'getValueWithOptionalArg',
280
+ optional: false,
281
+ typeAnnotation: {
282
+ type: 'FunctionTypeAnnotation',
283
+ returnTypeAnnotation: {
284
+ type: 'PromiseTypeAnnotation',
285
+ },
286
+ params: [
287
+ {
288
+ optional: true,
289
+ name: 'parameter',
290
+ typeAnnotation: {
291
+ type: 'GenericObjectTypeAnnotation',
292
+ },
293
+ },
294
+ ],
295
+ },
296
+ },
297
+ {
298
+ name: 'getEnums',
299
+ optional: false,
300
+ typeAnnotation: {
301
+ type: 'FunctionTypeAnnotation',
302
+ returnTypeAnnotation: {
303
+ type: 'StringTypeAnnotation',
304
+ },
305
+ params: [
306
+ {
307
+ name: 'enumInt',
308
+ optional: false,
309
+ typeAnnotation: {
310
+ type: 'EnumDeclaration',
311
+ memberType: 'NumberTypeAnnotation',
312
+ },
313
+ },
314
+ {
315
+ name: 'enumFloat',
316
+ optional: false,
317
+ typeAnnotation: {
318
+ type: 'EnumDeclaration',
319
+ memberType: 'NumberTypeAnnotation',
320
+ },
321
+ },
322
+ {
323
+ name: 'enumString',
324
+ optional: false,
325
+ typeAnnotation: {
326
+ type: 'EnumDeclaration',
327
+ memberType: 'StringTypeAnnotation',
328
+ },
329
+ },
330
+ ],
331
+ },
332
+ },
333
+ ],
334
+ },
335
+ moduleName: 'SampleTurboModule',
336
+ },
337
+ },
338
+ };
339
+
340
+ const TWO_MODULES_DIFFERENT_FILES: SchemaType = {
341
+ modules: {
342
+ NativeSampleTurboModule: {
343
+ type: 'NativeModule',
344
+ aliases: {},
345
+ spec: {
346
+ properties: [
347
+ {
348
+ name: 'voidFunc',
349
+ optional: false,
350
+ typeAnnotation: {
351
+ type: 'FunctionTypeAnnotation',
352
+ returnTypeAnnotation: {
353
+ type: 'VoidTypeAnnotation',
354
+ },
355
+ params: [],
356
+ },
357
+ },
358
+ ],
359
+ },
360
+ moduleName: 'SampleTurboModule',
361
+ },
362
+ NativeSampleTurboModule2: {
363
+ type: 'NativeModule',
364
+ aliases: {},
365
+ spec: {
366
+ properties: [
367
+ {
368
+ name: 'getConstants',
369
+ optional: false,
370
+ typeAnnotation: {
371
+ type: 'FunctionTypeAnnotation',
372
+ returnTypeAnnotation: {
373
+ type: 'ObjectTypeAnnotation',
374
+ properties: [],
375
+ },
376
+ params: [],
377
+ },
378
+ },
379
+ {
380
+ name: 'voidFunc',
381
+ optional: false,
382
+ typeAnnotation: {
383
+ type: 'FunctionTypeAnnotation',
384
+ returnTypeAnnotation: {
385
+ type: 'VoidTypeAnnotation',
386
+ },
387
+ params: [],
388
+ },
389
+ },
390
+ ],
391
+ },
392
+ moduleName: 'SampleTurboModule2',
393
+ },
394
+ },
395
+ };
396
+
397
+ const COMPLEX_OBJECTS: SchemaType = {
398
+ modules: {
399
+ NativeSampleTurboModule: {
400
+ type: 'NativeModule',
401
+ aliases: {},
402
+ spec: {
403
+ properties: [
404
+ {
405
+ name: 'difficult',
406
+ optional: false,
407
+ typeAnnotation: {
408
+ type: 'FunctionTypeAnnotation',
409
+ returnTypeAnnotation: {
410
+ type: 'ObjectTypeAnnotation',
411
+ properties: [
412
+ {
413
+ optional: false,
414
+ name: 'D',
415
+ typeAnnotation: {
416
+ type: 'BooleanTypeAnnotation',
417
+ },
418
+ },
419
+ {
420
+ optional: false,
421
+ name: 'E',
422
+ typeAnnotation: {
423
+ type: 'NumberTypeAnnotation',
424
+ },
425
+ },
426
+ {
427
+ optional: false,
428
+ name: 'F',
429
+ typeAnnotation: {
430
+ type: 'StringTypeAnnotation',
431
+ },
432
+ },
433
+ ],
434
+ },
435
+ params: [
436
+ {
437
+ optional: false,
438
+ name: 'A',
439
+ typeAnnotation: {
440
+ type: 'ObjectTypeAnnotation',
441
+ properties: [
442
+ {
443
+ optional: false,
444
+ name: 'D',
445
+ typeAnnotation: {
446
+ type: 'BooleanTypeAnnotation',
447
+ },
448
+ },
449
+ {
450
+ optional: false,
451
+ name: 'E',
452
+ typeAnnotation: {
453
+ type: 'ObjectTypeAnnotation',
454
+ properties: [
455
+ {
456
+ optional: false,
457
+ name: 'D',
458
+ typeAnnotation: {
459
+ type: 'BooleanTypeAnnotation',
460
+ },
461
+ },
462
+ {
463
+ optional: false,
464
+ name: 'E',
465
+ typeAnnotation: {
466
+ type: 'NumberTypeAnnotation',
467
+ },
468
+ },
469
+ {
470
+ optional: false,
471
+ name: 'F',
472
+ typeAnnotation: {
473
+ type: 'StringTypeAnnotation',
474
+ },
475
+ },
476
+ {
477
+ optional: false,
478
+ name: 'id',
479
+ typeAnnotation: {
480
+ type: 'NumberTypeAnnotation',
481
+ },
482
+ },
483
+ ],
484
+ },
485
+ },
486
+ {
487
+ optional: false,
488
+ name: 'F',
489
+ typeAnnotation: {
490
+ type: 'StringTypeAnnotation',
491
+ },
492
+ },
493
+ ],
494
+ },
495
+ },
496
+ ],
497
+ },
498
+ },
499
+ {
500
+ name: 'optionals',
501
+ optional: false,
502
+ typeAnnotation: {
503
+ type: 'FunctionTypeAnnotation',
504
+ returnTypeAnnotation: {
505
+ type: 'VoidTypeAnnotation',
506
+ },
507
+ params: [
508
+ {
509
+ optional: false,
510
+ name: 'A',
511
+ typeAnnotation: {
512
+ type: 'ObjectTypeAnnotation',
513
+ properties: [
514
+ {
515
+ optional: true,
516
+ name: 'optionalNumberProperty',
517
+ typeAnnotation: {
518
+ type: 'NumberTypeAnnotation',
519
+ },
520
+ },
521
+ {
522
+ optional: true,
523
+ name: 'optionalArrayProperty',
524
+ typeAnnotation: {
525
+ type: 'ArrayTypeAnnotation',
526
+ elementType: {
527
+ type: 'NumberTypeAnnotation',
528
+ },
529
+ },
530
+ },
531
+ {
532
+ optional: true,
533
+ name: 'optionalObjectProperty',
534
+ typeAnnotation: {
535
+ type: 'ObjectTypeAnnotation',
536
+ properties: [
537
+ {
538
+ optional: false,
539
+ name: 'x',
540
+ typeAnnotation: {
541
+ type: 'NumberTypeAnnotation',
542
+ },
543
+ },
544
+ {
545
+ optional: false,
546
+ name: 'y',
547
+ typeAnnotation: {
548
+ type: 'NumberTypeAnnotation',
549
+ },
550
+ },
551
+ ],
552
+ },
553
+ },
554
+ {
555
+ optional: true,
556
+ name: 'optionalGenericObjectProperty',
557
+ typeAnnotation: {
558
+ type: 'GenericObjectTypeAnnotation',
559
+ },
560
+ },
561
+ {
562
+ optional: true,
563
+ name: 'optionalBooleanTypeProperty',
564
+ typeAnnotation: {
565
+ type: 'BooleanTypeAnnotation',
566
+ },
567
+ },
568
+ ],
569
+ },
570
+ },
571
+ ],
572
+ },
573
+ },
574
+ {
575
+ name: 'optionalMethod',
576
+ optional: true,
577
+ typeAnnotation: {
578
+ type: 'NullableTypeAnnotation',
579
+ typeAnnotation: {
580
+ type: 'FunctionTypeAnnotation',
581
+ returnTypeAnnotation: {
582
+ type: 'VoidTypeAnnotation',
583
+ },
584
+ params: [
585
+ {
586
+ optional: false,
587
+ name: 'options',
588
+ typeAnnotation: {
589
+ type: 'GenericObjectTypeAnnotation',
590
+ },
591
+ },
592
+ {
593
+ name: 'callback',
594
+ optional: false,
595
+ typeAnnotation: {
596
+ type: 'FunctionTypeAnnotation',
597
+ params: [],
598
+ returnTypeAnnotation: {
599
+ type: 'VoidTypeAnnotation',
600
+ },
601
+ },
602
+ },
603
+ {
604
+ name: 'extras',
605
+ optional: true,
606
+ typeAnnotation: {
607
+ type: 'ArrayTypeAnnotation',
608
+ elementType: {
609
+ type: 'ObjectTypeAnnotation',
610
+ properties: [
611
+ {
612
+ optional: false,
613
+ name: 'key',
614
+ typeAnnotation: {
615
+ type: 'StringTypeAnnotation',
616
+ },
617
+ },
618
+ {
619
+ optional: false,
620
+ name: 'value',
621
+ typeAnnotation: {
622
+ type: 'GenericObjectTypeAnnotation',
623
+ },
624
+ },
625
+ ],
626
+ },
627
+ },
628
+ },
629
+ ],
630
+ },
631
+ },
632
+ },
633
+ {
634
+ name: 'getArrays',
635
+ optional: false,
636
+ typeAnnotation: {
637
+ type: 'FunctionTypeAnnotation',
638
+ returnTypeAnnotation: {
639
+ type: 'VoidTypeAnnotation',
640
+ },
641
+ params: [
642
+ {
643
+ optional: false,
644
+ name: 'options',
645
+ typeAnnotation: {
646
+ type: 'ObjectTypeAnnotation',
647
+ properties: [
648
+ {
649
+ optional: false,
650
+ name: 'arrayOfNumbers',
651
+ typeAnnotation: {
652
+ type: 'ArrayTypeAnnotation',
653
+ elementType: {
654
+ type: 'NumberTypeAnnotation',
655
+ },
656
+ },
657
+ },
658
+ {
659
+ optional: true,
660
+ name: 'optionalArrayOfNumbers',
661
+ typeAnnotation: {
662
+ type: 'ArrayTypeAnnotation',
663
+ elementType: {
664
+ type: 'NumberTypeAnnotation',
665
+ },
666
+ },
667
+ },
668
+ {
669
+ optional: false,
670
+ name: 'arrayOfStrings',
671
+ typeAnnotation: {
672
+ type: 'ArrayTypeAnnotation',
673
+ elementType: {
674
+ type: 'StringTypeAnnotation',
675
+ },
676
+ },
677
+ },
678
+ {
679
+ optional: true,
680
+ name: 'optionalArrayOfStrings',
681
+ typeAnnotation: {
682
+ type: 'ArrayTypeAnnotation',
683
+ elementType: {
684
+ type: 'StringTypeAnnotation',
685
+ },
686
+ },
687
+ },
688
+ {
689
+ optional: false,
690
+ name: 'arrayOfObjects',
691
+ typeAnnotation: {
692
+ type: 'ArrayTypeAnnotation',
693
+ elementType: {
694
+ type: 'ObjectTypeAnnotation',
695
+ properties: [
696
+ {
697
+ optional: false,
698
+ name: 'numberProperty',
699
+ typeAnnotation: {
700
+ type: 'NumberTypeAnnotation',
701
+ },
702
+ },
703
+ ],
704
+ },
705
+ },
706
+ },
707
+ ],
708
+ },
709
+ },
710
+ ],
711
+ },
712
+ },
713
+ {
714
+ name: 'getNullableObject',
715
+ optional: false,
716
+ typeAnnotation: {
717
+ type: 'FunctionTypeAnnotation',
718
+ returnTypeAnnotation: {
719
+ type: 'NullableTypeAnnotation',
720
+ typeAnnotation: {
721
+ type: 'ObjectTypeAnnotation',
722
+ properties: [],
723
+ },
724
+ },
725
+ params: [],
726
+ },
727
+ },
728
+ {
729
+ name: 'getNullableGenericObject',
730
+ optional: false,
731
+ typeAnnotation: {
732
+ type: 'FunctionTypeAnnotation',
733
+ returnTypeAnnotation: {
734
+ type: 'NullableTypeAnnotation',
735
+ typeAnnotation: {
736
+ type: 'GenericObjectTypeAnnotation',
737
+ },
738
+ },
739
+ params: [],
740
+ },
741
+ },
742
+ {
743
+ name: 'getNullableArray',
744
+ optional: false,
745
+ typeAnnotation: {
746
+ type: 'FunctionTypeAnnotation',
747
+ returnTypeAnnotation: {
748
+ type: 'NullableTypeAnnotation',
749
+ typeAnnotation: {
750
+ type: 'ArrayTypeAnnotation',
751
+ },
752
+ },
753
+ params: [],
754
+ },
755
+ },
756
+ ],
757
+ },
758
+ moduleName: 'SampleTurboModule',
759
+ },
760
+ },
761
+ };
762
+
763
+ const NATIVE_MODULES_WITH_TYPE_ALIASES: SchemaType = {
764
+ modules: {
765
+ AliasTurboModule: {
766
+ type: 'NativeModule',
767
+ aliases: {
768
+ Options: {
769
+ type: 'ObjectTypeAnnotation',
770
+ properties: [
771
+ {
772
+ optional: false,
773
+ name: 'offset',
774
+ typeAnnotation: {
775
+ type: 'ObjectTypeAnnotation',
776
+ properties: [
777
+ {
778
+ optional: false,
779
+ name: 'x',
780
+ typeAnnotation: {
781
+ type: 'NumberTypeAnnotation',
782
+ },
783
+ },
784
+ {
785
+ optional: false,
786
+ name: 'y',
787
+ typeAnnotation: {
788
+ type: 'NumberTypeAnnotation',
789
+ },
790
+ },
791
+ ],
792
+ },
793
+ },
794
+ {
795
+ optional: false,
796
+ name: 'size',
797
+ typeAnnotation: {
798
+ type: 'ObjectTypeAnnotation',
799
+ properties: [
800
+ {
801
+ optional: false,
802
+ name: 'width',
803
+ typeAnnotation: {
804
+ type: 'NumberTypeAnnotation',
805
+ },
806
+ },
807
+ {
808
+ optional: false,
809
+ name: 'height',
810
+ typeAnnotation: {
811
+ type: 'NumberTypeAnnotation',
812
+ },
813
+ },
814
+ ],
815
+ },
816
+ },
817
+ {
818
+ optional: true,
819
+ name: 'displaySize',
820
+ typeAnnotation: {
821
+ type: 'ObjectTypeAnnotation',
822
+ properties: [
823
+ {
824
+ optional: false,
825
+ name: 'width',
826
+ typeAnnotation: {
827
+ type: 'NumberTypeAnnotation',
828
+ },
829
+ },
830
+ {
831
+ optional: false,
832
+ name: 'height',
833
+ typeAnnotation: {
834
+ type: 'NumberTypeAnnotation',
835
+ },
836
+ },
837
+ ],
838
+ },
839
+ },
840
+ {
841
+ optional: true,
842
+ name: 'resizeMode',
843
+ typeAnnotation: {
844
+ type: 'StringTypeAnnotation',
845
+ },
846
+ },
847
+ {
848
+ optional: true,
849
+ name: 'allowExternalStorage',
850
+ typeAnnotation: {
851
+ type: 'BooleanTypeAnnotation',
852
+ },
853
+ },
854
+ ],
855
+ },
856
+ },
857
+ spec: {
858
+ properties: [
859
+ {
860
+ name: 'getConstants',
861
+ optional: false,
862
+ typeAnnotation: {
863
+ type: 'FunctionTypeAnnotation',
864
+ returnTypeAnnotation: {
865
+ type: 'ObjectTypeAnnotation',
866
+ properties: [],
867
+ },
868
+ params: [],
869
+ },
870
+ },
871
+ {
872
+ name: 'cropImage',
873
+ optional: false,
874
+ typeAnnotation: {
875
+ type: 'FunctionTypeAnnotation',
876
+ returnTypeAnnotation: {
877
+ type: 'VoidTypeAnnotation',
878
+ },
879
+ params: [
880
+ {
881
+ optional: false,
882
+ name: 'cropData',
883
+ typeAnnotation: {
884
+ type: 'TypeAliasTypeAnnotation',
885
+ name: 'Options',
886
+ },
887
+ },
888
+ ],
889
+ },
890
+ },
891
+ ],
892
+ },
893
+ moduleName: 'AliasTurboModule',
894
+ },
895
+ },
896
+ };
897
+
898
+ const REAL_MODULE_EXAMPLE: SchemaType = {
899
+ modules: {
900
+ NativeCameraRollManager: {
901
+ type: 'NativeModule',
902
+ aliases: {
903
+ PhotoIdentifierImage: {
904
+ type: 'ObjectTypeAnnotation',
905
+ properties: [
906
+ {
907
+ optional: false,
908
+ name: 'uri',
909
+ typeAnnotation: {
910
+ type: 'StringTypeAnnotation',
911
+ },
912
+ },
913
+ {
914
+ optional: false,
915
+ name: 'playableDuration',
916
+ typeAnnotation: {
917
+ type: 'NumberTypeAnnotation',
918
+ },
919
+ },
920
+ {
921
+ optional: false,
922
+ name: 'width',
923
+ typeAnnotation: {
924
+ type: 'NumberTypeAnnotation',
925
+ },
926
+ },
927
+ {
928
+ optional: false,
929
+ name: 'height',
930
+ typeAnnotation: {
931
+ type: 'NumberTypeAnnotation',
932
+ },
933
+ },
934
+ {
935
+ optional: true,
936
+ name: 'isStored',
937
+ typeAnnotation: {
938
+ type: 'BooleanTypeAnnotation',
939
+ },
940
+ },
941
+ {
942
+ optional: false,
943
+ name: 'filename',
944
+ typeAnnotation: {
945
+ type: 'StringTypeAnnotation',
946
+ },
947
+ },
948
+ ],
949
+ },
950
+ PhotoIdentifier: {
951
+ type: 'ObjectTypeAnnotation',
952
+ properties: [
953
+ {
954
+ optional: false,
955
+ name: 'node',
956
+ typeAnnotation: {
957
+ type: 'ObjectTypeAnnotation',
958
+ properties: [
959
+ {
960
+ optional: false,
961
+ name: 'image',
962
+ typeAnnotation: {
963
+ type: 'TypeAliasTypeAnnotation',
964
+ name: 'PhotoIdentifierImage',
965
+ },
966
+ },
967
+ {
968
+ optional: false,
969
+ name: 'type',
970
+ typeAnnotation: {
971
+ type: 'StringTypeAnnotation',
972
+ },
973
+ },
974
+ {
975
+ optional: false,
976
+ name: 'group_name',
977
+ typeAnnotation: {
978
+ type: 'StringTypeAnnotation',
979
+ },
980
+ },
981
+ {
982
+ optional: false,
983
+ name: 'timestamp',
984
+ typeAnnotation: {
985
+ type: 'NumberTypeAnnotation',
986
+ },
987
+ },
988
+ {
989
+ optional: false,
990
+ name: 'location',
991
+ typeAnnotation: {
992
+ type: 'ObjectTypeAnnotation',
993
+ properties: [
994
+ {
995
+ optional: false,
996
+ name: 'longitude',
997
+ typeAnnotation: {
998
+ type: 'NumberTypeAnnotation',
999
+ },
1000
+ },
1001
+ {
1002
+ optional: false,
1003
+ name: 'latitude',
1004
+ typeAnnotation: {
1005
+ type: 'NumberTypeAnnotation',
1006
+ },
1007
+ },
1008
+ {
1009
+ optional: true,
1010
+ name: 'altitude',
1011
+ typeAnnotation: {
1012
+ type: 'NumberTypeAnnotation',
1013
+ },
1014
+ },
1015
+ {
1016
+ optional: true,
1017
+ name: 'heading',
1018
+ typeAnnotation: {
1019
+ type: 'NumberTypeAnnotation',
1020
+ },
1021
+ },
1022
+ {
1023
+ optional: true,
1024
+ name: 'speed',
1025
+ typeAnnotation: {
1026
+ type: 'NumberTypeAnnotation',
1027
+ },
1028
+ },
1029
+ ],
1030
+ },
1031
+ },
1032
+ ],
1033
+ },
1034
+ },
1035
+ ],
1036
+ },
1037
+ PhotoIdentifiersPage: {
1038
+ type: 'ObjectTypeAnnotation',
1039
+ properties: [
1040
+ {
1041
+ optional: false,
1042
+ name: 'edges',
1043
+ typeAnnotation: {
1044
+ type: 'ArrayTypeAnnotation',
1045
+ elementType: {
1046
+ type: 'TypeAliasTypeAnnotation',
1047
+ name: 'PhotoIdentifier',
1048
+ },
1049
+ },
1050
+ },
1051
+ {
1052
+ optional: false,
1053
+ name: 'page_info',
1054
+ typeAnnotation: {
1055
+ type: 'ObjectTypeAnnotation',
1056
+ properties: [
1057
+ {
1058
+ optional: false,
1059
+ name: 'has_next_page',
1060
+ typeAnnotation: {
1061
+ type: 'BooleanTypeAnnotation',
1062
+ },
1063
+ },
1064
+ {
1065
+ optional: true,
1066
+ name: 'start_cursor',
1067
+ typeAnnotation: {
1068
+ type: 'StringTypeAnnotation',
1069
+ },
1070
+ },
1071
+ {
1072
+ optional: true,
1073
+ name: 'end_cursor',
1074
+ typeAnnotation: {
1075
+ type: 'StringTypeAnnotation',
1076
+ },
1077
+ },
1078
+ ],
1079
+ },
1080
+ },
1081
+ ],
1082
+ },
1083
+ GetPhotosParams: {
1084
+ type: 'ObjectTypeAnnotation',
1085
+ properties: [
1086
+ {
1087
+ optional: false,
1088
+ name: 'first',
1089
+ typeAnnotation: {
1090
+ type: 'NumberTypeAnnotation',
1091
+ },
1092
+ },
1093
+ {
1094
+ optional: true,
1095
+ name: 'after',
1096
+ typeAnnotation: {
1097
+ type: 'StringTypeAnnotation',
1098
+ },
1099
+ },
1100
+ {
1101
+ optional: true,
1102
+ name: 'groupName',
1103
+ typeAnnotation: {
1104
+ type: 'StringTypeAnnotation',
1105
+ },
1106
+ },
1107
+ {
1108
+ optional: true,
1109
+ name: 'groupTypes',
1110
+ typeAnnotation: {
1111
+ type: 'StringTypeAnnotation',
1112
+ },
1113
+ },
1114
+ {
1115
+ optional: true,
1116
+ name: 'assetType',
1117
+ typeAnnotation: {
1118
+ type: 'StringTypeAnnotation',
1119
+ },
1120
+ },
1121
+ {
1122
+ optional: true,
1123
+ name: 'maxSize',
1124
+ typeAnnotation: {
1125
+ type: 'NumberTypeAnnotation',
1126
+ },
1127
+ },
1128
+ {
1129
+ optional: true,
1130
+ name: 'mimeTypes',
1131
+ typeAnnotation: {
1132
+ type: 'ArrayTypeAnnotation',
1133
+ elementType: {
1134
+ type: 'StringTypeAnnotation',
1135
+ },
1136
+ },
1137
+ },
1138
+ ],
1139
+ },
1140
+ },
1141
+ spec: {
1142
+ properties: [
1143
+ {
1144
+ name: 'getConstants',
1145
+ optional: false,
1146
+ typeAnnotation: {
1147
+ type: 'FunctionTypeAnnotation',
1148
+ returnTypeAnnotation: {
1149
+ type: 'ObjectTypeAnnotation',
1150
+ properties: [],
1151
+ },
1152
+ params: [],
1153
+ },
1154
+ },
1155
+ {
1156
+ name: 'getPhotos',
1157
+ optional: false,
1158
+ typeAnnotation: {
1159
+ type: 'FunctionTypeAnnotation',
1160
+ returnTypeAnnotation: {
1161
+ type: 'PromiseTypeAnnotation',
1162
+ },
1163
+ params: [
1164
+ {
1165
+ optional: false,
1166
+ name: 'params',
1167
+ typeAnnotation: {
1168
+ type: 'TypeAliasTypeAnnotation',
1169
+ name: 'GetPhotosParams',
1170
+ },
1171
+ },
1172
+ ],
1173
+ },
1174
+ },
1175
+ {
1176
+ name: 'saveToCameraRoll',
1177
+ optional: false,
1178
+ typeAnnotation: {
1179
+ type: 'FunctionTypeAnnotation',
1180
+ returnTypeAnnotation: {
1181
+ type: 'PromiseTypeAnnotation',
1182
+ },
1183
+ params: [
1184
+ {
1185
+ optional: false,
1186
+ name: 'uri',
1187
+ typeAnnotation: {
1188
+ type: 'StringTypeAnnotation',
1189
+ },
1190
+ },
1191
+ {
1192
+ optional: false,
1193
+ name: 'type',
1194
+ typeAnnotation: {
1195
+ type: 'StringTypeAnnotation',
1196
+ },
1197
+ },
1198
+ ],
1199
+ },
1200
+ },
1201
+ {
1202
+ name: 'deletePhotos',
1203
+ optional: false,
1204
+ typeAnnotation: {
1205
+ type: 'FunctionTypeAnnotation',
1206
+ returnTypeAnnotation: {
1207
+ type: 'PromiseTypeAnnotation',
1208
+ },
1209
+ params: [
1210
+ {
1211
+ name: 'assets',
1212
+ optional: false,
1213
+ typeAnnotation: {
1214
+ type: 'ArrayTypeAnnotation',
1215
+ elementType: {
1216
+ type: 'StringTypeAnnotation',
1217
+ },
1218
+ },
1219
+ },
1220
+ ],
1221
+ },
1222
+ },
1223
+ ],
1224
+ },
1225
+ moduleName: 'CameraRollManager',
1226
+ },
1227
+ NativeExceptionsManager: {
1228
+ type: 'NativeModule',
1229
+ aliases: {
1230
+ StackFrame: {
1231
+ properties: [
1232
+ {
1233
+ optional: true,
1234
+ name: 'column',
1235
+ typeAnnotation: {
1236
+ type: 'NumberTypeAnnotation',
1237
+ },
1238
+ },
1239
+ {
1240
+ optional: false,
1241
+ name: 'file',
1242
+ typeAnnotation: {
1243
+ type: 'StringTypeAnnotation',
1244
+ },
1245
+ },
1246
+ {
1247
+ optional: true,
1248
+ name: 'lineNumber',
1249
+ typeAnnotation: {
1250
+ type: 'NumberTypeAnnotation',
1251
+ },
1252
+ },
1253
+ {
1254
+ optional: false,
1255
+ name: 'methodName',
1256
+ typeAnnotation: {
1257
+ type: 'StringTypeAnnotation',
1258
+ },
1259
+ },
1260
+ {
1261
+ optional: true,
1262
+ name: 'collapse',
1263
+ typeAnnotation: {
1264
+ type: 'BooleanTypeAnnotation',
1265
+ },
1266
+ },
1267
+ ],
1268
+ type: 'ObjectTypeAnnotation',
1269
+ },
1270
+ ExceptionData: {
1271
+ properties: [
1272
+ {
1273
+ optional: false,
1274
+ name: 'message',
1275
+ typeAnnotation: {
1276
+ type: 'StringTypeAnnotation',
1277
+ },
1278
+ },
1279
+ {
1280
+ optional: false,
1281
+ name: 'originalMessage',
1282
+ typeAnnotation: {
1283
+ type: 'StringTypeAnnotation',
1284
+ },
1285
+ },
1286
+ {
1287
+ optional: false,
1288
+ name: 'name',
1289
+ typeAnnotation: {
1290
+ type: 'StringTypeAnnotation',
1291
+ },
1292
+ },
1293
+ {
1294
+ optional: false,
1295
+ name: 'componentStack',
1296
+ typeAnnotation: {
1297
+ type: 'StringTypeAnnotation',
1298
+ },
1299
+ },
1300
+ {
1301
+ optional: false,
1302
+ name: 'stack',
1303
+ typeAnnotation: {
1304
+ type: 'ArrayTypeAnnotation',
1305
+ elementType: {
1306
+ type: 'TypeAliasTypeAnnotation',
1307
+ name: 'StackFrame',
1308
+ },
1309
+ },
1310
+ },
1311
+ {
1312
+ optional: false,
1313
+ name: 'id',
1314
+ typeAnnotation: {
1315
+ type: 'NumberTypeAnnotation',
1316
+ },
1317
+ },
1318
+ {
1319
+ optional: false,
1320
+ name: 'isFatal',
1321
+ typeAnnotation: {
1322
+ type: 'BooleanTypeAnnotation',
1323
+ },
1324
+ },
1325
+ {
1326
+ optional: true,
1327
+ name: 'extraData',
1328
+ typeAnnotation: {
1329
+ type: 'GenericObjectTypeAnnotation',
1330
+ },
1331
+ },
1332
+ ],
1333
+ type: 'ObjectTypeAnnotation',
1334
+ },
1335
+ },
1336
+ spec: {
1337
+ properties: [
1338
+ {
1339
+ name: 'reportFatalException',
1340
+ optional: false,
1341
+ typeAnnotation: {
1342
+ type: 'FunctionTypeAnnotation',
1343
+ returnTypeAnnotation: {
1344
+ type: 'VoidTypeAnnotation',
1345
+ },
1346
+ params: [
1347
+ {
1348
+ optional: false,
1349
+ name: 'message',
1350
+ typeAnnotation: {
1351
+ type: 'StringTypeAnnotation',
1352
+ },
1353
+ },
1354
+ {
1355
+ name: 'stack',
1356
+ optional: false,
1357
+ typeAnnotation: {
1358
+ type: 'ArrayTypeAnnotation',
1359
+ elementType: {
1360
+ type: 'TypeAliasTypeAnnotation',
1361
+ name: 'StackFrame',
1362
+ },
1363
+ },
1364
+ },
1365
+ {
1366
+ optional: false,
1367
+ name: 'exceptionId',
1368
+ typeAnnotation: {
1369
+ type: 'NumberTypeAnnotation',
1370
+ },
1371
+ },
1372
+ ],
1373
+ },
1374
+ },
1375
+ {
1376
+ name: 'reportSoftException',
1377
+ optional: false,
1378
+ typeAnnotation: {
1379
+ type: 'FunctionTypeAnnotation',
1380
+ returnTypeAnnotation: {
1381
+ type: 'VoidTypeAnnotation',
1382
+ },
1383
+ params: [
1384
+ {
1385
+ optional: false,
1386
+ name: 'message',
1387
+ typeAnnotation: {
1388
+ type: 'StringTypeAnnotation',
1389
+ },
1390
+ },
1391
+ {
1392
+ name: 'stack',
1393
+ optional: false,
1394
+ typeAnnotation: {
1395
+ type: 'ArrayTypeAnnotation',
1396
+ elementType: {
1397
+ type: 'TypeAliasTypeAnnotation',
1398
+ name: 'StackFrame',
1399
+ },
1400
+ },
1401
+ },
1402
+ {
1403
+ optional: false,
1404
+ name: 'exceptionId',
1405
+ typeAnnotation: {
1406
+ type: 'NumberTypeAnnotation',
1407
+ },
1408
+ },
1409
+ ],
1410
+ },
1411
+ },
1412
+ {
1413
+ name: 'reportException',
1414
+ optional: true,
1415
+ typeAnnotation: {
1416
+ type: 'NullableTypeAnnotation',
1417
+ typeAnnotation: {
1418
+ type: 'FunctionTypeAnnotation',
1419
+ returnTypeAnnotation: {
1420
+ type: 'VoidTypeAnnotation',
1421
+ },
1422
+ params: [
1423
+ {
1424
+ optional: false,
1425
+ name: 'data',
1426
+ typeAnnotation: {
1427
+ type: 'TypeAliasTypeAnnotation',
1428
+ name: 'ExceptionData',
1429
+ },
1430
+ },
1431
+ ],
1432
+ },
1433
+ },
1434
+ },
1435
+ {
1436
+ name: 'updateExceptionMessage',
1437
+ optional: false,
1438
+ typeAnnotation: {
1439
+ type: 'FunctionTypeAnnotation',
1440
+ returnTypeAnnotation: {
1441
+ type: 'VoidTypeAnnotation',
1442
+ },
1443
+ params: [
1444
+ {
1445
+ optional: false,
1446
+ name: 'message',
1447
+ typeAnnotation: {
1448
+ type: 'StringTypeAnnotation',
1449
+ },
1450
+ },
1451
+ {
1452
+ name: 'stack',
1453
+ optional: false,
1454
+ typeAnnotation: {
1455
+ type: 'ArrayTypeAnnotation',
1456
+ elementType: {
1457
+ type: 'TypeAliasTypeAnnotation',
1458
+ name: 'StackFrame',
1459
+ },
1460
+ },
1461
+ },
1462
+ {
1463
+ optional: false,
1464
+ name: 'exceptionId',
1465
+ typeAnnotation: {
1466
+ type: 'NumberTypeAnnotation',
1467
+ },
1468
+ },
1469
+ ],
1470
+ },
1471
+ },
1472
+ {
1473
+ name: 'dismissRedbox',
1474
+ optional: true,
1475
+ typeAnnotation: {
1476
+ type: 'NullableTypeAnnotation',
1477
+ typeAnnotation: {
1478
+ type: 'FunctionTypeAnnotation',
1479
+ returnTypeAnnotation: {
1480
+ type: 'VoidTypeAnnotation',
1481
+ },
1482
+ params: [],
1483
+ },
1484
+ },
1485
+ },
1486
+ ],
1487
+ },
1488
+ moduleName: 'ExceptionsManager',
1489
+ },
1490
+ },
1491
+ };
1492
+
1493
+ const CXX_ONLY_NATIVE_MODULES: SchemaType = {
1494
+ modules: {
1495
+ NativeSampleTurboModule: {
1496
+ type: 'NativeModule',
1497
+ aliases: {
1498
+ ObjectAlias: {
1499
+ type: 'ObjectTypeAnnotation',
1500
+ properties: [
1501
+ {
1502
+ name: 'x',
1503
+ optional: false,
1504
+ typeAnnotation: {
1505
+ type: 'NumberTypeAnnotation',
1506
+ },
1507
+ },
1508
+ ],
1509
+ },
1510
+ },
1511
+ spec: {
1512
+ properties: [
1513
+ {
1514
+ name: 'getMixed',
1515
+ optional: false,
1516
+ typeAnnotation: {
1517
+ type: 'FunctionTypeAnnotation',
1518
+ returnTypeAnnotation: {
1519
+ type: 'MixedTypeAnnotation',
1520
+ },
1521
+ params: [
1522
+ {
1523
+ name: 'arg',
1524
+ optional: false,
1525
+ typeAnnotation: {
1526
+ type: 'MixedTypeAnnotation',
1527
+ },
1528
+ },
1529
+ ],
1530
+ },
1531
+ },
1532
+ {
1533
+ name: 'getNullableNumberFromNullableAlias',
1534
+ optional: false,
1535
+ typeAnnotation: {
1536
+ type: 'FunctionTypeAnnotation',
1537
+ returnTypeAnnotation: {
1538
+ type: 'NullableTypeAnnotation',
1539
+ typeAnnotation: {
1540
+ type: 'NumberTypeAnnotation',
1541
+ },
1542
+ },
1543
+ params: [
1544
+ {
1545
+ name: 'a',
1546
+ optional: false,
1547
+ typeAnnotation: {
1548
+ type: 'NullableTypeAnnotation',
1549
+ typeAnnotation: {
1550
+ type: 'TypeAliasTypeAnnotation',
1551
+ name: 'ObjectAlias',
1552
+ },
1553
+ },
1554
+ },
1555
+ ],
1556
+ },
1557
+ },
1558
+ {
1559
+ name: 'getEnums',
1560
+ optional: false,
1561
+ typeAnnotation: {
1562
+ type: 'FunctionTypeAnnotation',
1563
+ returnTypeAnnotation: {
1564
+ type: 'StringTypeAnnotation',
1565
+ },
1566
+ params: [
1567
+ {
1568
+ name: 'enumInt',
1569
+ optional: false,
1570
+ typeAnnotation: {
1571
+ type: 'EnumDeclaration',
1572
+ memberType: 'NumberTypeAnnotation',
1573
+ },
1574
+ },
1575
+ {
1576
+ name: 'enumFloat',
1577
+ optional: false,
1578
+ typeAnnotation: {
1579
+ type: 'EnumDeclaration',
1580
+ memberType: 'NumberTypeAnnotation',
1581
+ },
1582
+ },
1583
+ {
1584
+ name: 'enumString',
1585
+ optional: false,
1586
+ typeAnnotation: {
1587
+ type: 'EnumDeclaration',
1588
+ memberType: 'StringTypeAnnotation',
1589
+ },
1590
+ },
1591
+ ],
1592
+ },
1593
+ },
1594
+ {
1595
+ name: 'getUnion',
1596
+ optional: false,
1597
+ typeAnnotation: {
1598
+ type: 'FunctionTypeAnnotation',
1599
+ returnTypeAnnotation: {
1600
+ type: 'UnionTypeAnnotation',
1601
+ memberType: 'ObjectTypeAnnotation',
1602
+ },
1603
+ params: [
1604
+ {
1605
+ name: 'chooseInt',
1606
+ optional: false,
1607
+ typeAnnotation: {
1608
+ type: 'UnionTypeAnnotation',
1609
+ memberType: 'NumberTypeAnnotation',
1610
+ },
1611
+ },
1612
+ {
1613
+ name: 'chooseFloat',
1614
+ optional: false,
1615
+ typeAnnotation: {
1616
+ type: 'UnionTypeAnnotation',
1617
+ memberType: 'NumberTypeAnnotation',
1618
+ },
1619
+ },
1620
+ {
1621
+ name: 'chooseObject',
1622
+ optional: false,
1623
+ typeAnnotation: {
1624
+ type: 'UnionTypeAnnotation',
1625
+ memberType: 'ObjectTypeAnnotation',
1626
+ },
1627
+ },
1628
+ {
1629
+ name: 'chooseString',
1630
+ optional: false,
1631
+ typeAnnotation: {
1632
+ type: 'UnionTypeAnnotation',
1633
+ memberType: 'StringTypeAnnotation',
1634
+ },
1635
+ },
1636
+ ],
1637
+ },
1638
+ },
1639
+ ],
1640
+ },
1641
+ moduleName: 'SampleTurboModuleCxx',
1642
+ excludedPlatforms: ['iOS', 'android'],
1643
+ },
1644
+ },
1645
+ };
1646
+
1647
+ const SAMPLE_WITH_UPPERCASE_NAME: SchemaType = {
1648
+ modules: {
1649
+ NativeSampleTurboModule: {
1650
+ type: 'NativeModule',
1651
+ aliases: {},
1652
+ spec: {
1653
+ properties: [],
1654
+ },
1655
+ moduleName: 'SampleTurboModule',
1656
+ },
1657
+ },
1658
+ };
1659
+
1660
+ module.exports = {
1661
+ complex_objects: COMPLEX_OBJECTS,
1662
+ two_modules_different_files: TWO_MODULES_DIFFERENT_FILES,
1663
+ empty_native_modules: EMPTY_NATIVE_MODULES,
1664
+ simple_native_modules: SIMPLE_NATIVE_MODULES,
1665
+ native_modules_with_type_aliases: NATIVE_MODULES_WITH_TYPE_ALIASES,
1666
+ real_module_example: REAL_MODULE_EXAMPLE,
1667
+ cxx_only_native_modules: CXX_ONLY_NATIVE_MODULES,
1668
+ SampleWithUppercaseName: SAMPLE_WITH_UPPERCASE_NAME,
1669
+ };