@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,1672 @@
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 NO_PROPS_NO_EVENTS: SchemaType = {
16
+ modules: {
17
+ NoPropsNoEvents: {
18
+ type: 'Component',
19
+ components: {
20
+ NoPropsNoEventsComponent: {
21
+ extendsProps: [
22
+ {
23
+ type: 'ReactNativeBuiltInType',
24
+ knownTypeName: 'ReactNativeCoreViewProps',
25
+ },
26
+ ],
27
+ events: [],
28
+ props: [],
29
+ commands: [],
30
+ },
31
+ },
32
+ },
33
+ },
34
+ };
35
+
36
+ const INTERFACE_ONLY: SchemaType = {
37
+ modules: {
38
+ Switch: {
39
+ type: 'Component',
40
+ components: {
41
+ InterfaceOnlyComponent: {
42
+ interfaceOnly: true,
43
+ paperComponentName: 'RCTInterfaceOnlyComponent',
44
+ extendsProps: [
45
+ {
46
+ type: 'ReactNativeBuiltInType',
47
+ knownTypeName: 'ReactNativeCoreViewProps',
48
+ },
49
+ ],
50
+ events: [
51
+ {
52
+ name: 'onChange',
53
+ optional: true,
54
+ bubblingType: 'bubble',
55
+ typeAnnotation: {
56
+ type: 'EventTypeAnnotation',
57
+ argument: {
58
+ type: 'ObjectTypeAnnotation',
59
+ properties: [
60
+ {
61
+ name: 'value',
62
+ optional: false,
63
+ typeAnnotation: {
64
+ type: 'BooleanTypeAnnotation',
65
+ },
66
+ },
67
+ ],
68
+ },
69
+ },
70
+ },
71
+ ],
72
+ props: [
73
+ {
74
+ name: 'accessibilityHint',
75
+ optional: true,
76
+ typeAnnotation: {
77
+ type: 'StringTypeAnnotation',
78
+ default: '',
79
+ },
80
+ },
81
+ ],
82
+ commands: [],
83
+ },
84
+ },
85
+ },
86
+ },
87
+ };
88
+
89
+ const EVENTS_WITH_PAPER_NAME: SchemaType = {
90
+ modules: {
91
+ Switch: {
92
+ type: 'Component',
93
+ components: {
94
+ InterfaceOnlyComponent: {
95
+ interfaceOnly: true,
96
+ paperComponentName: 'RCTInterfaceOnlyComponent',
97
+ extendsProps: [
98
+ {
99
+ type: 'ReactNativeBuiltInType',
100
+ knownTypeName: 'ReactNativeCoreViewProps',
101
+ },
102
+ ],
103
+ events: [
104
+ {
105
+ name: 'onChange',
106
+ paperTopLevelNameDeprecated: 'paperChange',
107
+ optional: true,
108
+ bubblingType: 'bubble',
109
+ typeAnnotation: {
110
+ type: 'EventTypeAnnotation',
111
+ argument: {
112
+ type: 'ObjectTypeAnnotation',
113
+ properties: [
114
+ {
115
+ name: 'value',
116
+ optional: false,
117
+ typeAnnotation: {
118
+ type: 'BooleanTypeAnnotation',
119
+ },
120
+ },
121
+ ],
122
+ },
123
+ },
124
+ },
125
+ {
126
+ name: 'onDire tChange',
127
+ paperTopLevelNameDeprecated: 'paperDirectChange',
128
+ optional: true,
129
+ bubblingType: 'direct',
130
+ typeAnnotation: {
131
+ type: 'EventTypeAnnotation',
132
+ argument: {
133
+ type: 'ObjectTypeAnnotation',
134
+ properties: [
135
+ {
136
+ name: 'value',
137
+ optional: false,
138
+ typeAnnotation: {
139
+ type: 'BooleanTypeAnnotation',
140
+ },
141
+ },
142
+ ],
143
+ },
144
+ },
145
+ },
146
+ ],
147
+ props: [],
148
+ commands: [],
149
+ },
150
+ },
151
+ },
152
+ },
153
+ };
154
+
155
+ const BOOLEAN_PROP: SchemaType = {
156
+ modules: {
157
+ Switch: {
158
+ type: 'Component',
159
+ components: {
160
+ BooleanPropNativeComponent: {
161
+ extendsProps: [
162
+ {
163
+ type: 'ReactNativeBuiltInType',
164
+ knownTypeName: 'ReactNativeCoreViewProps',
165
+ },
166
+ ],
167
+ events: [],
168
+ props: [
169
+ {
170
+ name: 'disabled',
171
+ optional: true,
172
+ typeAnnotation: {
173
+ type: 'BooleanTypeAnnotation',
174
+ default: false,
175
+ },
176
+ },
177
+ ],
178
+ commands: [],
179
+ },
180
+ },
181
+ },
182
+ },
183
+ };
184
+
185
+ const STRING_PROP: SchemaType = {
186
+ modules: {
187
+ Switch: {
188
+ type: 'Component',
189
+ components: {
190
+ StringPropComponent: {
191
+ extendsProps: [
192
+ {
193
+ type: 'ReactNativeBuiltInType',
194
+ knownTypeName: 'ReactNativeCoreViewProps',
195
+ },
196
+ ],
197
+ events: [],
198
+ props: [
199
+ {
200
+ name: 'accessibilityHint',
201
+ optional: true,
202
+ typeAnnotation: {
203
+ type: 'StringTypeAnnotation',
204
+ default: '',
205
+ },
206
+ },
207
+ {
208
+ name: 'accessibilityRole',
209
+ optional: true,
210
+ typeAnnotation: {
211
+ type: 'StringTypeAnnotation',
212
+ default: null,
213
+ },
214
+ },
215
+ ],
216
+ commands: [],
217
+ },
218
+ },
219
+ },
220
+ },
221
+ };
222
+
223
+ const INTEGER_PROPS: SchemaType = {
224
+ modules: {
225
+ Switch: {
226
+ type: 'Component',
227
+ components: {
228
+ IntegerPropNativeComponent: {
229
+ extendsProps: [
230
+ {
231
+ type: 'ReactNativeBuiltInType',
232
+ knownTypeName: 'ReactNativeCoreViewProps',
233
+ },
234
+ ],
235
+ events: [],
236
+ props: [
237
+ {
238
+ name: 'progress1',
239
+ optional: true,
240
+ typeAnnotation: {
241
+ type: 'Int32TypeAnnotation',
242
+ default: 0,
243
+ },
244
+ },
245
+ {
246
+ name: 'progress2',
247
+ optional: true,
248
+ typeAnnotation: {
249
+ type: 'Int32TypeAnnotation',
250
+ default: -1,
251
+ },
252
+ },
253
+ {
254
+ name: 'progress3',
255
+ optional: true,
256
+ typeAnnotation: {
257
+ type: 'Int32TypeAnnotation',
258
+ default: 10,
259
+ },
260
+ },
261
+ ],
262
+ commands: [],
263
+ },
264
+ },
265
+ },
266
+ },
267
+ };
268
+
269
+ const FLOAT_PROPS: SchemaType = {
270
+ modules: {
271
+ Switch: {
272
+ type: 'Component',
273
+ components: {
274
+ FloatPropNativeComponent: {
275
+ extendsProps: [
276
+ {
277
+ type: 'ReactNativeBuiltInType',
278
+ knownTypeName: 'ReactNativeCoreViewProps',
279
+ },
280
+ ],
281
+ events: [],
282
+ props: [
283
+ {
284
+ name: 'blurRadius',
285
+ optional: false,
286
+ typeAnnotation: {
287
+ type: 'FloatTypeAnnotation',
288
+ default: 0.0,
289
+ },
290
+ },
291
+ {
292
+ name: 'blurRadius2',
293
+ optional: true,
294
+ typeAnnotation: {
295
+ type: 'FloatTypeAnnotation',
296
+ default: 0.001,
297
+ },
298
+ },
299
+ {
300
+ name: 'blurRadius3',
301
+ optional: true,
302
+ typeAnnotation: {
303
+ type: 'FloatTypeAnnotation',
304
+ default: 2.1,
305
+ },
306
+ },
307
+ {
308
+ name: 'blurRadius4',
309
+ optional: true,
310
+ typeAnnotation: {
311
+ type: 'FloatTypeAnnotation',
312
+ default: 0,
313
+ },
314
+ },
315
+ {
316
+ name: 'blurRadius5',
317
+ optional: true,
318
+ typeAnnotation: {
319
+ type: 'FloatTypeAnnotation',
320
+ default: 1,
321
+ },
322
+ },
323
+ {
324
+ name: 'blurRadius6',
325
+ optional: true,
326
+ typeAnnotation: {
327
+ type: 'FloatTypeAnnotation',
328
+ default: -0.0,
329
+ },
330
+ },
331
+ ],
332
+ commands: [],
333
+ },
334
+ },
335
+ },
336
+ },
337
+ };
338
+
339
+ const DOUBLE_PROPS: SchemaType = {
340
+ modules: {
341
+ Switch: {
342
+ type: 'Component',
343
+ components: {
344
+ DoublePropNativeComponent: {
345
+ extendsProps: [
346
+ {
347
+ type: 'ReactNativeBuiltInType',
348
+ knownTypeName: 'ReactNativeCoreViewProps',
349
+ },
350
+ ],
351
+ events: [],
352
+ props: [
353
+ {
354
+ name: 'blurRadius',
355
+ optional: false,
356
+ typeAnnotation: {
357
+ type: 'DoubleTypeAnnotation',
358
+ default: 0.0,
359
+ },
360
+ },
361
+ {
362
+ name: 'blurRadius2',
363
+ optional: true,
364
+ typeAnnotation: {
365
+ type: 'DoubleTypeAnnotation',
366
+ default: 0.001,
367
+ },
368
+ },
369
+ {
370
+ name: 'blurRadius3',
371
+ optional: true,
372
+ typeAnnotation: {
373
+ type: 'DoubleTypeAnnotation',
374
+ default: 2.1,
375
+ },
376
+ },
377
+ {
378
+ name: 'blurRadius4',
379
+ optional: true,
380
+ typeAnnotation: {
381
+ type: 'DoubleTypeAnnotation',
382
+ default: 0,
383
+ },
384
+ },
385
+ {
386
+ name: 'blurRadius5',
387
+ optional: true,
388
+ typeAnnotation: {
389
+ type: 'DoubleTypeAnnotation',
390
+ default: 1,
391
+ },
392
+ },
393
+ {
394
+ name: 'blurRadius6',
395
+ optional: true,
396
+ typeAnnotation: {
397
+ type: 'DoubleTypeAnnotation',
398
+ default: -0.0,
399
+ },
400
+ },
401
+ ],
402
+ commands: [],
403
+ },
404
+ },
405
+ },
406
+ },
407
+ };
408
+
409
+ const COLOR_PROP: SchemaType = {
410
+ modules: {
411
+ Switch: {
412
+ type: 'Component',
413
+ components: {
414
+ ColorPropNativeComponent: {
415
+ extendsProps: [
416
+ {
417
+ type: 'ReactNativeBuiltInType',
418
+ knownTypeName: 'ReactNativeCoreViewProps',
419
+ },
420
+ ],
421
+ events: [],
422
+ props: [
423
+ {
424
+ name: 'tintColor',
425
+ optional: true,
426
+ typeAnnotation: {
427
+ type: 'ReservedPropTypeAnnotation',
428
+ name: 'ColorPrimitive',
429
+ },
430
+ },
431
+ ],
432
+ commands: [],
433
+ },
434
+ },
435
+ },
436
+ },
437
+ };
438
+
439
+ const IMAGE_PROP: SchemaType = {
440
+ modules: {
441
+ Slider: {
442
+ type: 'Component',
443
+ components: {
444
+ ImagePropNativeComponent: {
445
+ extendsProps: [
446
+ {
447
+ type: 'ReactNativeBuiltInType',
448
+ knownTypeName: 'ReactNativeCoreViewProps',
449
+ },
450
+ ],
451
+ events: [],
452
+ props: [
453
+ {
454
+ name: 'thumbImage',
455
+ optional: true,
456
+ typeAnnotation: {
457
+ type: 'ReservedPropTypeAnnotation',
458
+ name: 'ImageSourcePrimitive',
459
+ },
460
+ },
461
+ ],
462
+ commands: [],
463
+ },
464
+ },
465
+ },
466
+ },
467
+ };
468
+
469
+ const POINT_PROP: SchemaType = {
470
+ modules: {
471
+ Switch: {
472
+ type: 'Component',
473
+ components: {
474
+ PointPropNativeComponent: {
475
+ extendsProps: [
476
+ {
477
+ type: 'ReactNativeBuiltInType',
478
+ knownTypeName: 'ReactNativeCoreViewProps',
479
+ },
480
+ ],
481
+ events: [],
482
+ props: [
483
+ {
484
+ name: 'startPoint',
485
+ optional: true,
486
+ typeAnnotation: {
487
+ type: 'ReservedPropTypeAnnotation',
488
+ name: 'PointPrimitive',
489
+ },
490
+ },
491
+ ],
492
+ commands: [],
493
+ },
494
+ },
495
+ },
496
+ },
497
+ };
498
+
499
+ const INSETS_PROP: SchemaType = {
500
+ modules: {
501
+ ScrollView: {
502
+ type: 'Component',
503
+ components: {
504
+ InsetsPropNativeComponent: {
505
+ extendsProps: [
506
+ {
507
+ type: 'ReactNativeBuiltInType',
508
+ knownTypeName: 'ReactNativeCoreViewProps',
509
+ },
510
+ ],
511
+ events: [],
512
+ props: [
513
+ {
514
+ name: 'contentInset',
515
+ optional: true,
516
+ typeAnnotation: {
517
+ type: 'ReservedPropTypeAnnotation',
518
+ name: 'EdgeInsetsPrimitive',
519
+ },
520
+ },
521
+ ],
522
+ commands: [],
523
+ },
524
+ },
525
+ },
526
+ },
527
+ };
528
+
529
+ const ARRAY_PROPS: SchemaType = {
530
+ modules: {
531
+ Slider: {
532
+ type: 'Component',
533
+ components: {
534
+ ArrayPropsNativeComponent: {
535
+ extendsProps: [
536
+ {
537
+ type: 'ReactNativeBuiltInType',
538
+ knownTypeName: 'ReactNativeCoreViewProps',
539
+ },
540
+ ],
541
+ events: [],
542
+ props: [
543
+ {
544
+ name: 'names',
545
+ optional: true,
546
+ typeAnnotation: {
547
+ type: 'ArrayTypeAnnotation',
548
+ elementType: {
549
+ type: 'StringTypeAnnotation',
550
+ },
551
+ },
552
+ },
553
+ {
554
+ name: 'disableds',
555
+ optional: true,
556
+ typeAnnotation: {
557
+ type: 'ArrayTypeAnnotation',
558
+ elementType: {
559
+ type: 'BooleanTypeAnnotation',
560
+ },
561
+ },
562
+ },
563
+ {
564
+ name: 'progress',
565
+ optional: true,
566
+ typeAnnotation: {
567
+ type: 'ArrayTypeAnnotation',
568
+ elementType: {
569
+ type: 'Int32TypeAnnotation',
570
+ },
571
+ },
572
+ },
573
+ {
574
+ name: 'radii',
575
+ optional: true,
576
+ typeAnnotation: {
577
+ type: 'ArrayTypeAnnotation',
578
+ elementType: {
579
+ type: 'FloatTypeAnnotation',
580
+ },
581
+ },
582
+ },
583
+ {
584
+ name: 'colors',
585
+ optional: true,
586
+ typeAnnotation: {
587
+ type: 'ArrayTypeAnnotation',
588
+ elementType: {
589
+ type: 'ReservedPropTypeAnnotation',
590
+ name: 'ColorPrimitive',
591
+ },
592
+ },
593
+ },
594
+ {
595
+ name: 'srcs',
596
+ optional: true,
597
+ typeAnnotation: {
598
+ type: 'ArrayTypeAnnotation',
599
+ elementType: {
600
+ type: 'ReservedPropTypeAnnotation',
601
+ name: 'ImageSourcePrimitive',
602
+ },
603
+ },
604
+ },
605
+ {
606
+ name: 'points',
607
+ optional: true,
608
+ typeAnnotation: {
609
+ type: 'ArrayTypeAnnotation',
610
+ elementType: {
611
+ type: 'ReservedPropTypeAnnotation',
612
+ name: 'PointPrimitive',
613
+ },
614
+ },
615
+ },
616
+ {
617
+ name: 'sizes',
618
+ optional: true,
619
+ typeAnnotation: {
620
+ type: 'ArrayTypeAnnotation',
621
+ elementType: {
622
+ type: 'StringEnumTypeAnnotation',
623
+ default: 'small',
624
+ options: ['small', 'large'],
625
+ },
626
+ },
627
+ },
628
+ {
629
+ name: 'object',
630
+ optional: true,
631
+ typeAnnotation: {
632
+ type: 'ArrayTypeAnnotation',
633
+ elementType: {
634
+ type: 'ObjectTypeAnnotation',
635
+ properties: [
636
+ {
637
+ name: 'stringProp',
638
+ optional: true,
639
+ typeAnnotation: {
640
+ type: 'StringTypeAnnotation',
641
+ default: '',
642
+ },
643
+ },
644
+ ],
645
+ },
646
+ },
647
+ },
648
+ {
649
+ name: 'array',
650
+ optional: true,
651
+ typeAnnotation: {
652
+ type: 'ArrayTypeAnnotation',
653
+ elementType: {
654
+ type: 'ObjectTypeAnnotation',
655
+ properties: [
656
+ {
657
+ // This needs to stay the same as the object above
658
+ // to confirm that the structs are generated
659
+ // with unique non-colliding names
660
+ name: 'object',
661
+ optional: true,
662
+ typeAnnotation: {
663
+ type: 'ArrayTypeAnnotation',
664
+ elementType: {
665
+ type: 'ObjectTypeAnnotation',
666
+ properties: [
667
+ {
668
+ name: 'stringProp',
669
+ optional: true,
670
+ typeAnnotation: {
671
+ type: 'StringTypeAnnotation',
672
+ default: '',
673
+ },
674
+ },
675
+ ],
676
+ },
677
+ },
678
+ },
679
+ ],
680
+ },
681
+ },
682
+ },
683
+ {
684
+ name: 'arrayOfArrayOfObject',
685
+ optional: true,
686
+ typeAnnotation: {
687
+ type: 'ArrayTypeAnnotation',
688
+ elementType: {
689
+ type: 'ArrayTypeAnnotation',
690
+ elementType: {
691
+ type: 'ObjectTypeAnnotation',
692
+ properties: [
693
+ {
694
+ name: 'stringProp',
695
+ optional: true,
696
+ typeAnnotation: {
697
+ type: 'StringTypeAnnotation',
698
+ default: '',
699
+ },
700
+ },
701
+ ],
702
+ },
703
+ },
704
+ },
705
+ },
706
+ ],
707
+ commands: [],
708
+ },
709
+ },
710
+ },
711
+ },
712
+ };
713
+
714
+ const ARRAY_PROPS_WITH_NESTED_OBJECT: SchemaType = {
715
+ modules: {
716
+ Slider: {
717
+ type: 'Component',
718
+ components: {
719
+ ArrayPropsNativeComponent: {
720
+ extendsProps: [
721
+ {
722
+ type: 'ReactNativeBuiltInType',
723
+ knownTypeName: 'ReactNativeCoreViewProps',
724
+ },
725
+ ],
726
+ events: [],
727
+ props: [
728
+ {
729
+ name: 'nativePrimitives',
730
+ optional: true,
731
+ typeAnnotation: {
732
+ type: 'ArrayTypeAnnotation',
733
+ elementType: {
734
+ type: 'ObjectTypeAnnotation',
735
+ properties: [
736
+ {
737
+ name: 'colors',
738
+ optional: true,
739
+ typeAnnotation: {
740
+ type: 'ArrayTypeAnnotation',
741
+ elementType: {
742
+ type: 'ReservedPropTypeAnnotation',
743
+ name: 'ColorPrimitive',
744
+ },
745
+ },
746
+ },
747
+ {
748
+ name: 'srcs',
749
+ optional: true,
750
+ typeAnnotation: {
751
+ type: 'ArrayTypeAnnotation',
752
+ elementType: {
753
+ type: 'ReservedPropTypeAnnotation',
754
+ name: 'ImageSourcePrimitive',
755
+ },
756
+ },
757
+ },
758
+ {
759
+ name: 'points',
760
+ optional: true,
761
+ typeAnnotation: {
762
+ type: 'ArrayTypeAnnotation',
763
+ elementType: {
764
+ type: 'ReservedPropTypeAnnotation',
765
+ name: 'PointPrimitive',
766
+ },
767
+ },
768
+ },
769
+ ],
770
+ },
771
+ },
772
+ },
773
+ ],
774
+ commands: [],
775
+ },
776
+ },
777
+ },
778
+ },
779
+ };
780
+
781
+ const OBJECT_PROPS: SchemaType = {
782
+ modules: {
783
+ ObjectPropsNativeComponent: {
784
+ type: 'Component',
785
+ components: {
786
+ ObjectProps: {
787
+ extendsProps: [
788
+ {
789
+ type: 'ReactNativeBuiltInType',
790
+ knownTypeName: 'ReactNativeCoreViewProps',
791
+ },
792
+ ],
793
+ events: [],
794
+ props: [
795
+ {
796
+ name: 'objectProp',
797
+ optional: true,
798
+ typeAnnotation: {
799
+ type: 'ObjectTypeAnnotation',
800
+ properties: [
801
+ {
802
+ name: 'stringProp',
803
+ optional: true,
804
+ typeAnnotation: {
805
+ type: 'StringTypeAnnotation',
806
+ default: '',
807
+ },
808
+ },
809
+ {
810
+ name: 'booleanProp',
811
+ optional: true,
812
+ typeAnnotation: {
813
+ type: 'BooleanTypeAnnotation',
814
+ default: false,
815
+ },
816
+ },
817
+ {
818
+ name: 'floatProp',
819
+ optional: true,
820
+ typeAnnotation: {
821
+ type: 'FloatTypeAnnotation',
822
+ default: 0.0,
823
+ },
824
+ },
825
+ {
826
+ name: 'intProp',
827
+ optional: true,
828
+ typeAnnotation: {
829
+ type: 'Int32TypeAnnotation',
830
+ default: 0,
831
+ },
832
+ },
833
+ {
834
+ name: 'stringEnumProp',
835
+ optional: true,
836
+ typeAnnotation: {
837
+ type: 'StringEnumTypeAnnotation',
838
+ default: 'option1',
839
+ options: ['option1'],
840
+ },
841
+ },
842
+ {
843
+ name: 'intEnumProp',
844
+ optional: true,
845
+ typeAnnotation: {
846
+ type: 'Int32EnumTypeAnnotation',
847
+ default: 0,
848
+ options: [0],
849
+ },
850
+ },
851
+ {
852
+ name: 'objectArrayProp',
853
+ optional: false,
854
+ typeAnnotation: {
855
+ type: 'ObjectTypeAnnotation',
856
+ properties: [
857
+ {
858
+ name: 'array',
859
+ optional: true,
860
+ typeAnnotation: {
861
+ type: 'ArrayTypeAnnotation',
862
+ elementType: {
863
+ type: 'StringTypeAnnotation',
864
+ },
865
+ },
866
+ },
867
+ ],
868
+ },
869
+ },
870
+ {
871
+ name: 'objectPrimitiveRequiredProp',
872
+ optional: false,
873
+ typeAnnotation: {
874
+ type: 'ObjectTypeAnnotation',
875
+ properties: [
876
+ {
877
+ name: 'image',
878
+ optional: true,
879
+ typeAnnotation: {
880
+ type: 'ReservedPropTypeAnnotation',
881
+ name: 'ImageSourcePrimitive',
882
+ },
883
+ },
884
+ {
885
+ name: 'color',
886
+ optional: true,
887
+ typeAnnotation: {
888
+ type: 'ReservedPropTypeAnnotation',
889
+ name: 'ColorPrimitive',
890
+ },
891
+ },
892
+ {
893
+ name: 'point',
894
+ optional: true,
895
+ typeAnnotation: {
896
+ type: 'ReservedPropTypeAnnotation',
897
+ name: 'PointPrimitive',
898
+ },
899
+ },
900
+ ],
901
+ },
902
+ },
903
+ {
904
+ name: 'nestedPropA',
905
+ optional: false,
906
+ typeAnnotation: {
907
+ type: 'ObjectTypeAnnotation',
908
+ properties: [
909
+ {
910
+ name: 'nestedPropB',
911
+ optional: false,
912
+ typeAnnotation: {
913
+ type: 'ObjectTypeAnnotation',
914
+ properties: [
915
+ {
916
+ name: 'nestedPropC',
917
+ optional: true,
918
+ typeAnnotation: {
919
+ type: 'StringTypeAnnotation',
920
+ default: '',
921
+ },
922
+ },
923
+ ],
924
+ },
925
+ },
926
+ ],
927
+ },
928
+ },
929
+ {
930
+ name: 'nestedArrayAsProperty',
931
+ optional: false,
932
+ typeAnnotation: {
933
+ type: 'ObjectTypeAnnotation',
934
+ properties: [
935
+ {
936
+ name: 'arrayProp',
937
+ optional: false,
938
+ typeAnnotation: {
939
+ type: 'ArrayTypeAnnotation',
940
+ elementType: {
941
+ type: 'ObjectTypeAnnotation',
942
+ properties: [
943
+ {
944
+ name: 'stringProp',
945
+ optional: false,
946
+ typeAnnotation: {
947
+ type: 'StringTypeAnnotation',
948
+ default: '',
949
+ },
950
+ },
951
+ ],
952
+ },
953
+ },
954
+ },
955
+ ],
956
+ },
957
+ },
958
+ ],
959
+ },
960
+ },
961
+ ],
962
+ commands: [],
963
+ },
964
+ },
965
+ },
966
+ },
967
+ };
968
+
969
+ const MULTI_NATIVE_PROP: SchemaType = {
970
+ modules: {
971
+ Slider: {
972
+ type: 'Component',
973
+ components: {
974
+ ImageColorPropNativeComponent: {
975
+ extendsProps: [
976
+ {
977
+ type: 'ReactNativeBuiltInType',
978
+ knownTypeName: 'ReactNativeCoreViewProps',
979
+ },
980
+ ],
981
+ events: [],
982
+ props: [
983
+ {
984
+ name: 'thumbImage',
985
+ optional: true,
986
+ typeAnnotation: {
987
+ type: 'ReservedPropTypeAnnotation',
988
+ name: 'ImageSourcePrimitive',
989
+ },
990
+ },
991
+ {
992
+ name: 'color',
993
+ optional: true,
994
+ typeAnnotation: {
995
+ type: 'ReservedPropTypeAnnotation',
996
+ name: 'ColorPrimitive',
997
+ },
998
+ },
999
+ {
1000
+ name: 'thumbTintColor',
1001
+ optional: true,
1002
+ typeAnnotation: {
1003
+ type: 'ReservedPropTypeAnnotation',
1004
+ name: 'ColorPrimitive',
1005
+ },
1006
+ },
1007
+ {
1008
+ name: 'point',
1009
+ optional: true,
1010
+ typeAnnotation: {
1011
+ type: 'ReservedPropTypeAnnotation',
1012
+ name: 'PointPrimitive',
1013
+ },
1014
+ },
1015
+ ],
1016
+ commands: [],
1017
+ },
1018
+ },
1019
+ },
1020
+ },
1021
+ };
1022
+
1023
+ const STRING_ENUM_PROP: SchemaType = {
1024
+ modules: {
1025
+ Switch: {
1026
+ type: 'Component',
1027
+ components: {
1028
+ StringEnumPropsNativeComponent: {
1029
+ extendsProps: [
1030
+ {
1031
+ type: 'ReactNativeBuiltInType',
1032
+ knownTypeName: 'ReactNativeCoreViewProps',
1033
+ },
1034
+ ],
1035
+ events: [],
1036
+ props: [
1037
+ {
1038
+ name: 'alignment',
1039
+ optional: true,
1040
+ typeAnnotation: {
1041
+ type: 'StringEnumTypeAnnotation',
1042
+ default: 'center',
1043
+ options: ['top', 'center', 'bottom-right'],
1044
+ },
1045
+ },
1046
+ ],
1047
+ commands: [],
1048
+ },
1049
+ },
1050
+ },
1051
+ },
1052
+ };
1053
+
1054
+ const INT32_ENUM_PROP: SchemaType = {
1055
+ modules: {
1056
+ Switch: {
1057
+ type: 'Component',
1058
+ components: {
1059
+ Int32EnumPropsNativeComponent: {
1060
+ extendsProps: [
1061
+ {
1062
+ type: 'ReactNativeBuiltInType',
1063
+ knownTypeName: 'ReactNativeCoreViewProps',
1064
+ },
1065
+ ],
1066
+ events: [],
1067
+ props: [
1068
+ {
1069
+ name: 'maxInterval',
1070
+ optional: true,
1071
+ typeAnnotation: {
1072
+ type: 'Int32EnumTypeAnnotation',
1073
+ default: 0,
1074
+ options: [0, 1, 2],
1075
+ },
1076
+ },
1077
+ ],
1078
+ commands: [],
1079
+ },
1080
+ },
1081
+ },
1082
+ },
1083
+ };
1084
+
1085
+ const EVENT_PROPS: SchemaType = {
1086
+ modules: {
1087
+ Switch: {
1088
+ type: 'Component',
1089
+ components: {
1090
+ EventsNativeComponent: {
1091
+ extendsProps: [
1092
+ {
1093
+ type: 'ReactNativeBuiltInType',
1094
+ knownTypeName: 'ReactNativeCoreViewProps',
1095
+ },
1096
+ ],
1097
+ events: [
1098
+ {
1099
+ name: 'onChange',
1100
+ optional: true,
1101
+ bubblingType: 'bubble',
1102
+ typeAnnotation: {
1103
+ type: 'EventTypeAnnotation',
1104
+ argument: {
1105
+ type: 'ObjectTypeAnnotation',
1106
+ properties: [
1107
+ {
1108
+ name: 'value',
1109
+ optional: false,
1110
+ typeAnnotation: {
1111
+ type: 'BooleanTypeAnnotation',
1112
+ },
1113
+ },
1114
+ {
1115
+ name: 'source',
1116
+ optional: true,
1117
+ typeAnnotation: {
1118
+ type: 'StringTypeAnnotation',
1119
+ },
1120
+ },
1121
+ {
1122
+ name: 'progress',
1123
+ optional: true,
1124
+ typeAnnotation: {
1125
+ type: 'Int32TypeAnnotation',
1126
+ },
1127
+ },
1128
+ {
1129
+ name: 'scale',
1130
+ optional: true,
1131
+ typeAnnotation: {
1132
+ type: 'FloatTypeAnnotation',
1133
+ },
1134
+ },
1135
+ ],
1136
+ },
1137
+ },
1138
+ },
1139
+ {
1140
+ name: 'onEventDirect',
1141
+ optional: true,
1142
+ bubblingType: 'direct',
1143
+ typeAnnotation: {
1144
+ type: 'EventTypeAnnotation',
1145
+ argument: {
1146
+ type: 'ObjectTypeAnnotation',
1147
+ properties: [
1148
+ {
1149
+ name: 'value',
1150
+ optional: false,
1151
+ typeAnnotation: {
1152
+ type: 'BooleanTypeAnnotation',
1153
+ },
1154
+ },
1155
+ ],
1156
+ },
1157
+ },
1158
+ },
1159
+ {
1160
+ name: 'onOrientationChange',
1161
+ optional: true,
1162
+ bubblingType: 'direct',
1163
+ typeAnnotation: {
1164
+ type: 'EventTypeAnnotation',
1165
+ argument: {
1166
+ type: 'ObjectTypeAnnotation',
1167
+ properties: [
1168
+ {
1169
+ name: 'orientation',
1170
+ optional: false,
1171
+ typeAnnotation: {
1172
+ type: 'StringEnumTypeAnnotation',
1173
+ options: ['landscape', 'portrait'],
1174
+ },
1175
+ },
1176
+ ],
1177
+ },
1178
+ },
1179
+ },
1180
+ {
1181
+ name: 'onEnd',
1182
+ optional: true,
1183
+ bubblingType: 'bubble',
1184
+ typeAnnotation: {
1185
+ type: 'EventTypeAnnotation',
1186
+ },
1187
+ },
1188
+ ],
1189
+ props: [
1190
+ {
1191
+ name: 'disabled',
1192
+ optional: true,
1193
+ typeAnnotation: {
1194
+ type: 'BooleanTypeAnnotation',
1195
+ default: false,
1196
+ },
1197
+ },
1198
+ ],
1199
+ commands: [],
1200
+ },
1201
+ },
1202
+ },
1203
+ },
1204
+ };
1205
+
1206
+ const EVENT_NESTED_OBJECT_PROPS: SchemaType = {
1207
+ modules: {
1208
+ Switch: {
1209
+ type: 'Component',
1210
+ components: {
1211
+ EventsNestedObjectNativeComponent: {
1212
+ extendsProps: [
1213
+ {
1214
+ type: 'ReactNativeBuiltInType',
1215
+ knownTypeName: 'ReactNativeCoreViewProps',
1216
+ },
1217
+ ],
1218
+ events: [
1219
+ {
1220
+ name: 'onChange',
1221
+ optional: true,
1222
+ bubblingType: 'bubble',
1223
+ typeAnnotation: {
1224
+ type: 'EventTypeAnnotation',
1225
+ argument: {
1226
+ type: 'ObjectTypeAnnotation',
1227
+ properties: [
1228
+ {
1229
+ name: 'location',
1230
+ optional: false,
1231
+ typeAnnotation: {
1232
+ type: 'ObjectTypeAnnotation',
1233
+ properties: [
1234
+ {
1235
+ name: 'source',
1236
+ optional: false,
1237
+ typeAnnotation: {
1238
+ type: 'ObjectTypeAnnotation',
1239
+ properties: [
1240
+ {
1241
+ name: 'url',
1242
+ optional: false,
1243
+ typeAnnotation: {
1244
+ type: 'StringTypeAnnotation',
1245
+ },
1246
+ },
1247
+ ],
1248
+ },
1249
+ },
1250
+ {
1251
+ name: 'x',
1252
+ optional: false,
1253
+ typeAnnotation: {
1254
+ type: 'Int32TypeAnnotation',
1255
+ },
1256
+ },
1257
+ {
1258
+ name: 'y',
1259
+ optional: false,
1260
+ typeAnnotation: {
1261
+ type: 'Int32TypeAnnotation',
1262
+ },
1263
+ },
1264
+ ],
1265
+ },
1266
+ },
1267
+ ],
1268
+ },
1269
+ },
1270
+ },
1271
+ ],
1272
+ props: [
1273
+ {
1274
+ name: 'disabled',
1275
+ optional: true,
1276
+ typeAnnotation: {
1277
+ type: 'BooleanTypeAnnotation',
1278
+ default: false,
1279
+ },
1280
+ },
1281
+ ],
1282
+ commands: [],
1283
+ },
1284
+ },
1285
+ },
1286
+ },
1287
+ };
1288
+
1289
+ const TWO_COMPONENTS_SAME_FILE: SchemaType = {
1290
+ modules: {
1291
+ MyComponents: {
1292
+ type: 'Component',
1293
+ components: {
1294
+ MultiComponent1NativeComponent: {
1295
+ extendsProps: [
1296
+ {
1297
+ type: 'ReactNativeBuiltInType',
1298
+ knownTypeName: 'ReactNativeCoreViewProps',
1299
+ },
1300
+ ],
1301
+ events: [],
1302
+ props: [
1303
+ {
1304
+ name: 'disabled',
1305
+ optional: true,
1306
+ typeAnnotation: {
1307
+ type: 'BooleanTypeAnnotation',
1308
+ default: false,
1309
+ },
1310
+ },
1311
+ ],
1312
+ commands: [],
1313
+ },
1314
+
1315
+ MultiComponent2NativeComponent: {
1316
+ extendsProps: [
1317
+ {
1318
+ type: 'ReactNativeBuiltInType',
1319
+ knownTypeName: 'ReactNativeCoreViewProps',
1320
+ },
1321
+ ],
1322
+ events: [],
1323
+ props: [
1324
+ {
1325
+ name: 'disabled',
1326
+ optional: true,
1327
+ typeAnnotation: {
1328
+ type: 'BooleanTypeAnnotation',
1329
+ default: true,
1330
+ },
1331
+ },
1332
+ ],
1333
+ commands: [],
1334
+ },
1335
+ },
1336
+ },
1337
+ },
1338
+ };
1339
+
1340
+ const TWO_COMPONENTS_DIFFERENT_FILES: SchemaType = {
1341
+ modules: {
1342
+ ComponentFile1: {
1343
+ type: 'Component',
1344
+ components: {
1345
+ MultiFile1NativeComponent: {
1346
+ extendsProps: [
1347
+ {
1348
+ type: 'ReactNativeBuiltInType',
1349
+ knownTypeName: 'ReactNativeCoreViewProps',
1350
+ },
1351
+ ],
1352
+ events: [],
1353
+ props: [
1354
+ {
1355
+ name: 'disabled',
1356
+ optional: true,
1357
+ typeAnnotation: {
1358
+ type: 'BooleanTypeAnnotation',
1359
+ default: false,
1360
+ },
1361
+ },
1362
+ ],
1363
+ commands: [],
1364
+ },
1365
+ },
1366
+ },
1367
+
1368
+ ComponentFile2: {
1369
+ type: 'Component',
1370
+ components: {
1371
+ MultiFile2NativeComponent: {
1372
+ extendsProps: [
1373
+ {
1374
+ type: 'ReactNativeBuiltInType',
1375
+ knownTypeName: 'ReactNativeCoreViewProps',
1376
+ },
1377
+ ],
1378
+ events: [],
1379
+ props: [
1380
+ {
1381
+ name: 'disabled',
1382
+ optional: true,
1383
+ typeAnnotation: {
1384
+ type: 'BooleanTypeAnnotation',
1385
+ default: true,
1386
+ },
1387
+ },
1388
+ ],
1389
+ commands: [],
1390
+ },
1391
+ },
1392
+ },
1393
+ },
1394
+ };
1395
+
1396
+ const COMMANDS: SchemaType = {
1397
+ modules: {
1398
+ Switch: {
1399
+ type: 'Component',
1400
+ components: {
1401
+ CommandNativeComponent: {
1402
+ extendsProps: [
1403
+ {
1404
+ type: 'ReactNativeBuiltInType',
1405
+ knownTypeName: 'ReactNativeCoreViewProps',
1406
+ },
1407
+ ],
1408
+ events: [],
1409
+ props: [],
1410
+ commands: [
1411
+ {
1412
+ name: 'flashScrollIndicators',
1413
+ optional: false,
1414
+ typeAnnotation: {
1415
+ type: 'FunctionTypeAnnotation',
1416
+ params: [],
1417
+ returnTypeAnnotation: {
1418
+ type: 'VoidTypeAnnotation',
1419
+ },
1420
+ },
1421
+ },
1422
+ {
1423
+ name: 'allTypes',
1424
+ optional: false,
1425
+ typeAnnotation: {
1426
+ type: 'FunctionTypeAnnotation',
1427
+ params: [
1428
+ {
1429
+ name: 'x',
1430
+ optional: false,
1431
+ typeAnnotation: {
1432
+ type: 'Int32TypeAnnotation',
1433
+ },
1434
+ },
1435
+ {
1436
+ name: 'y',
1437
+ optional: false,
1438
+ typeAnnotation: {
1439
+ type: 'FloatTypeAnnotation',
1440
+ },
1441
+ },
1442
+ {
1443
+ name: 'z',
1444
+ optional: false,
1445
+ typeAnnotation: {
1446
+ type: 'DoubleTypeAnnotation',
1447
+ },
1448
+ },
1449
+ {
1450
+ name: 'message',
1451
+ optional: false,
1452
+ typeAnnotation: {
1453
+ type: 'StringTypeAnnotation',
1454
+ },
1455
+ },
1456
+ {
1457
+ name: 'animated',
1458
+ optional: false,
1459
+ typeAnnotation: {
1460
+ type: 'BooleanTypeAnnotation',
1461
+ },
1462
+ },
1463
+ ],
1464
+ returnTypeAnnotation: {
1465
+ type: 'VoidTypeAnnotation',
1466
+ },
1467
+ },
1468
+ },
1469
+ ],
1470
+ },
1471
+ },
1472
+ },
1473
+ },
1474
+ };
1475
+
1476
+ const COMMANDS_AND_PROPS: SchemaType = {
1477
+ modules: {
1478
+ Switch: {
1479
+ type: 'Component',
1480
+ components: {
1481
+ CommandNativeComponent: {
1482
+ extendsProps: [
1483
+ {
1484
+ type: 'ReactNativeBuiltInType',
1485
+ knownTypeName: 'ReactNativeCoreViewProps',
1486
+ },
1487
+ ],
1488
+ events: [],
1489
+ props: [
1490
+ {
1491
+ name: 'accessibilityHint',
1492
+ optional: true,
1493
+ typeAnnotation: {
1494
+ type: 'StringTypeAnnotation',
1495
+ default: '',
1496
+ },
1497
+ },
1498
+ ],
1499
+ commands: [
1500
+ {
1501
+ name: 'handleRootTag',
1502
+ optional: false,
1503
+ typeAnnotation: {
1504
+ type: 'FunctionTypeAnnotation',
1505
+ params: [
1506
+ {
1507
+ name: 'rootTag',
1508
+ optional: false,
1509
+ typeAnnotation: {
1510
+ type: 'ReservedTypeAnnotation',
1511
+ name: 'RootTag',
1512
+ },
1513
+ },
1514
+ ],
1515
+ returnTypeAnnotation: {
1516
+ type: 'VoidTypeAnnotation',
1517
+ },
1518
+ },
1519
+ },
1520
+ {
1521
+ name: 'hotspotUpdate',
1522
+ optional: false,
1523
+ typeAnnotation: {
1524
+ type: 'FunctionTypeAnnotation',
1525
+ params: [
1526
+ {
1527
+ name: 'x',
1528
+ optional: false,
1529
+ typeAnnotation: {
1530
+ type: 'Int32TypeAnnotation',
1531
+ },
1532
+ },
1533
+ {
1534
+ name: 'y',
1535
+ optional: false,
1536
+ typeAnnotation: {
1537
+ type: 'Int32TypeAnnotation',
1538
+ },
1539
+ },
1540
+ ],
1541
+ returnTypeAnnotation: {
1542
+ type: 'VoidTypeAnnotation',
1543
+ },
1544
+ },
1545
+ },
1546
+ ],
1547
+ },
1548
+ },
1549
+ },
1550
+ },
1551
+ };
1552
+
1553
+ const EXCLUDE_ANDROID: SchemaType = {
1554
+ modules: {
1555
+ ExcludedAndroid: {
1556
+ type: 'Component',
1557
+ components: {
1558
+ ExcludedAndroidComponent: {
1559
+ excludedPlatforms: ['android'],
1560
+ extendsProps: [
1561
+ {
1562
+ type: 'ReactNativeBuiltInType',
1563
+ knownTypeName: 'ReactNativeCoreViewProps',
1564
+ },
1565
+ ],
1566
+ events: [],
1567
+ props: [],
1568
+ commands: [],
1569
+ },
1570
+ },
1571
+ },
1572
+ },
1573
+ };
1574
+
1575
+ const EXCLUDE_ANDROID_IOS: SchemaType = {
1576
+ modules: {
1577
+ ExcludedAndroidIos: {
1578
+ type: 'Component',
1579
+ components: {
1580
+ ExcludedAndroidIosComponent: {
1581
+ excludedPlatforms: ['android', 'iOS'],
1582
+ extendsProps: [
1583
+ {
1584
+ type: 'ReactNativeBuiltInType',
1585
+ knownTypeName: 'ReactNativeCoreViewProps',
1586
+ },
1587
+ ],
1588
+ events: [],
1589
+ props: [],
1590
+ commands: [],
1591
+ },
1592
+ },
1593
+ },
1594
+ },
1595
+ };
1596
+
1597
+ const EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES: SchemaType = {
1598
+ modules: {
1599
+ ComponentFile1: {
1600
+ type: 'Component',
1601
+ components: {
1602
+ ExcludedIosComponent: {
1603
+ excludedPlatforms: ['iOS'],
1604
+ extendsProps: [
1605
+ {
1606
+ type: 'ReactNativeBuiltInType',
1607
+ knownTypeName: 'ReactNativeCoreViewProps',
1608
+ },
1609
+ ],
1610
+ events: [],
1611
+ props: [],
1612
+ commands: [],
1613
+ },
1614
+ },
1615
+ },
1616
+ ComponentFile2: {
1617
+ type: 'Component',
1618
+ components: {
1619
+ MultiFileIncludedNativeComponent: {
1620
+ extendsProps: [
1621
+ {
1622
+ type: 'ReactNativeBuiltInType',
1623
+ knownTypeName: 'ReactNativeCoreViewProps',
1624
+ },
1625
+ ],
1626
+ events: [],
1627
+ props: [
1628
+ {
1629
+ name: 'disabled',
1630
+ optional: true,
1631
+ typeAnnotation: {
1632
+ type: 'BooleanTypeAnnotation',
1633
+ default: true,
1634
+ },
1635
+ },
1636
+ ],
1637
+ commands: [],
1638
+ },
1639
+ },
1640
+ },
1641
+ },
1642
+ };
1643
+
1644
+ module.exports = {
1645
+ NO_PROPS_NO_EVENTS,
1646
+ INTERFACE_ONLY,
1647
+ BOOLEAN_PROP,
1648
+ STRING_PROP,
1649
+ INTEGER_PROPS,
1650
+ DOUBLE_PROPS,
1651
+ FLOAT_PROPS,
1652
+ COLOR_PROP,
1653
+ IMAGE_PROP,
1654
+ POINT_PROP,
1655
+ INSETS_PROP,
1656
+ ARRAY_PROPS,
1657
+ ARRAY_PROPS_WITH_NESTED_OBJECT,
1658
+ OBJECT_PROPS,
1659
+ MULTI_NATIVE_PROP,
1660
+ STRING_ENUM_PROP,
1661
+ INT32_ENUM_PROP,
1662
+ EVENT_PROPS,
1663
+ EVENTS_WITH_PAPER_NAME,
1664
+ EVENT_NESTED_OBJECT_PROPS,
1665
+ TWO_COMPONENTS_SAME_FILE,
1666
+ TWO_COMPONENTS_DIFFERENT_FILES,
1667
+ COMMANDS,
1668
+ COMMANDS_AND_PROPS,
1669
+ EXCLUDE_ANDROID,
1670
+ EXCLUDE_ANDROID_IOS,
1671
+ EXCLUDE_IOS_TWO_COMPONENTS_DIFFERENT_FILES,
1672
+ };