@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,724 @@
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
+ *
8
+ * @format
9
+ */
10
+
11
+ // @licenselint-loose-mode
12
+
13
+ 'use strict';
14
+
15
+ const EMPTY_NATIVE_MODULE = `
16
+ /**
17
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
18
+ *
19
+ * This source code is licensed under the MIT license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ *
22
+ * @flow strict-local
23
+ * @format
24
+ */
25
+
26
+ 'use strict';
27
+
28
+ import type {TurboModule} from '../RCTExport';
29
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
30
+
31
+ export interface Spec extends TurboModule {
32
+ // no methods
33
+ }
34
+
35
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
36
+
37
+ `;
38
+ const NATIVE_MODULE_WITH_COMPLEX_OBJECTS = `
39
+ /**
40
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
41
+ *
42
+ * This source code is licensed under the MIT license found in the
43
+ * LICENSE file in the root directory of this source tree.
44
+ *
45
+ * @flow strict-local
46
+ * @format
47
+ */
48
+
49
+ 'use strict';
50
+
51
+ import type {TurboModule} from '../RCTExport';
52
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
53
+
54
+ export type String = string;
55
+
56
+ export interface Spec extends TurboModule {
57
+ // Exported methods.
58
+ +getObject: (arg: {|const1: {|const1: boolean|}|}) => {|
59
+ const1: {|const1: boolean|},
60
+ |};
61
+ +getReadOnlyObject: (arg: $ReadOnly<{|const1: $ReadOnly<{|const1: boolean|}>|}>) => $ReadOnly<{|
62
+ const1: {|const1: boolean|},
63
+ |}>;
64
+ +getObject2: (arg: { a: String }) => Object;
65
+ +getObjectInArray: (arg: {const1: {|const1: boolean|}}) => Array<{|
66
+ const1: {const1: boolean},
67
+ |}>;
68
+ }
69
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
70
+
71
+ `;
72
+ const NATIVE_MODULE_WITH_COMPLEX_OBJECTS_WITH_NULLABLE_KEY = `
73
+ /**
74
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
75
+ *
76
+ * This source code is licensed under the MIT license found in the
77
+ * LICENSE file in the root directory of this source tree.
78
+ *
79
+ * @flow strict-local
80
+ * @format
81
+ */
82
+
83
+ 'use strict';
84
+
85
+ import type {TurboModule} from '../RCTExport';
86
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
87
+
88
+ export interface Spec extends TurboModule {
89
+ +getConstants: () => {|
90
+ isTesting: boolean,
91
+ reactNativeVersion: {|
92
+ major: number,
93
+ minor: number,
94
+ patch?: number,
95
+ prerelease: ?number,
96
+ |},
97
+ forceTouchAvailable: boolean,
98
+ osVersion: string,
99
+ systemName: string,
100
+ interfaceIdiom: string,
101
+ |};
102
+ }
103
+
104
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
105
+
106
+ `;
107
+ const NATIVE_MODULE_WITH_BASIC_PARAM_TYPES = `
108
+ /**
109
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
110
+ *
111
+ * This source code is licensed under the MIT license found in the
112
+ * LICENSE file in the root directory of this source tree.
113
+ *
114
+ * @flow strict-local
115
+ * @format
116
+ */
117
+
118
+ 'use strict';
119
+
120
+ import type {TurboModule} from '../RCTExport';
121
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
122
+
123
+ export interface Spec extends TurboModule {
124
+ +passBool?: (arg: boolean) => void;
125
+ +passNumber: (arg: number) => void;
126
+ +passString: (arg: string) => void;
127
+ +passStringish: (arg: Stringish) => void;
128
+ }
129
+
130
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
131
+
132
+ `;
133
+ const NATIVE_MODULE_WITH_ALIASES = `
134
+ /**
135
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
136
+ *
137
+ * This source code is licensed under the MIT license found in the
138
+ * LICENSE file in the root directory of this source tree.
139
+ *
140
+ * @flow strict-local
141
+ * @format
142
+ */
143
+
144
+ 'use strict';
145
+
146
+ import type {TurboModule} from '../RCTExport';
147
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
148
+
149
+ type NumNum = number;
150
+ export type Num = (arg: NumNum) => void;
151
+ type Num2 = Num;
152
+ export type Void = void;
153
+ export type A = number;
154
+ export type B = number;
155
+ export type ObjectAlias = {|
156
+ x: number,
157
+ y: number,
158
+ label: string,
159
+ truthy: boolean,
160
+ |};
161
+ export type ReadOnlyAlias = $ReadOnly<ObjectAlias>;
162
+
163
+ export interface Spec extends TurboModule {
164
+ // Exported methods.
165
+ +getNumber: Num2;
166
+ +getVoid: () => Void;
167
+ +getArray: (a: Array<A>) => {| a: B |};
168
+ +getStringFromAlias: (a: ObjectAlias) => string;
169
+ +getStringFromNullableAlias: (a: ?ObjectAlias) => string;
170
+ +getStringFromReadOnlyAlias: (a: ReadOnlyAlias) => string;
171
+ +getStringFromNullableReadOnlyAlias: (a: ?ReadOnlyAlias) => string;
172
+ }
173
+
174
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
175
+
176
+ `;
177
+ const NATIVE_MODULE_WITH_NESTED_ALIASES = `
178
+ /**
179
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
180
+ *
181
+ * This source code is licensed under the MIT license found in the
182
+ * LICENSE file in the root directory of this source tree.
183
+ *
184
+ * @flow strict-local
185
+ * @format
186
+ */
187
+
188
+ 'use strict';
189
+
190
+ import type {TurboModule} from '../RCTExport';
191
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
192
+
193
+ type Bar = {|
194
+ z: number
195
+ |};
196
+
197
+ type Foo = {|
198
+ bar1: Bar,
199
+ bar2: Bar,
200
+ |};
201
+
202
+ export interface Spec extends TurboModule {
203
+ // Exported methods.
204
+ foo1: (x: Foo) => Foo;
205
+ foo2: (x: Foo) => void;
206
+ }
207
+
208
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
209
+
210
+ `;
211
+ const NATIVE_MODULE_WITH_FLOAT_AND_INT32 = `
212
+ /**
213
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
214
+ *
215
+ * This source code is licensed under the MIT license found in the
216
+ * LICENSE file in the root directory of this source tree.
217
+ *
218
+ * @flow strict-local
219
+ * @format
220
+ */
221
+
222
+ 'use strict';
223
+
224
+ import type {TurboModule} from '../RCTExport';
225
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
226
+ import type {Int32, Float} from 'react-native/Libraries/Types/CodegenTypes';
227
+
228
+ export interface Spec extends TurboModule {
229
+ +getInt: (arg: Int32) => Int32;
230
+ +getFloat: (arg: Float) => Float;
231
+ }
232
+
233
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
234
+ `;
235
+ const NATIVE_MODULE_WITH_SIMPLE_OBJECT = `
236
+ /**
237
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
238
+ *
239
+ * This source code is licensed under the MIT license found in the
240
+ * LICENSE file in the root directory of this source tree.
241
+ *
242
+ * @flow strict-local
243
+ * @format
244
+ */
245
+
246
+ 'use strict';
247
+
248
+ import type {TurboModule} from '../RCTExport';
249
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
250
+
251
+ export interface Spec extends TurboModule {
252
+ +getObject: (o: Object) => Object,
253
+ }
254
+
255
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
256
+
257
+ `;
258
+ const NATIVE_MODULE_WITH_UNSAFE_OBJECT = `
259
+ /**
260
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
261
+ *
262
+ * This source code is licensed under the MIT license found in the
263
+ * LICENSE file in the root directory of this source tree.
264
+ *
265
+ * @flow strict
266
+ * @format
267
+ */
268
+
269
+ 'use strict';
270
+
271
+ import type {TurboModule} from '../RCTExport';
272
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
273
+ import type {UnsafeObject} from 'react-native/Libraries/Types/CodegenTypes';
274
+
275
+ export interface Spec extends TurboModule {
276
+ +getUnsafeObject: (o: UnsafeObject) => UnsafeObject,
277
+ }
278
+
279
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
280
+
281
+ `;
282
+ const NATIVE_MODULE_WITH_ROOT_TAG = `
283
+ /**
284
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
285
+ *
286
+ * This source code is licensed under the MIT license found in the
287
+ * LICENSE file in the root directory of this source tree.
288
+ *
289
+ * @flow strict-local
290
+ * @format
291
+ */
292
+
293
+ 'use strict';
294
+
295
+ import type {RootTag, TurboModule} from '../RCTExport';
296
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
297
+
298
+ export interface Spec extends TurboModule {
299
+ +getRootTag: (rootTag: RootTag) => RootTag,
300
+ }
301
+
302
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
303
+
304
+ `;
305
+ const NATIVE_MODULE_WITH_NULLABLE_PARAM = `
306
+ /**
307
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
308
+ *
309
+ * This source code is licensed under the MIT license found in the
310
+ * LICENSE file in the root directory of this source tree.
311
+ *
312
+ * @flow strict-local
313
+ * @format
314
+ */
315
+
316
+ 'use strict';
317
+
318
+ import type {TurboModule} from '../RCTExport';
319
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
320
+
321
+ export interface Spec extends TurboModule {
322
+ // Exported methods.
323
+ +voidFunc: (arg: ?string) => void;
324
+ }
325
+
326
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
327
+
328
+ `;
329
+ const NATIVE_MODULE_WITH_BASIC_ARRAY = `
330
+ /**
331
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
332
+ *
333
+ * This source code is licensed under the MIT license found in the
334
+ * LICENSE file in the root directory of this source tree.
335
+ *
336
+ * @flow strict-local
337
+ * @format
338
+ */
339
+
340
+ 'use strict';
341
+
342
+ import type {TurboModule} from '../RCTExport';
343
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
344
+
345
+ export interface Spec extends TurboModule {
346
+ +getArray: (arg: Array<string>) => Array<string>;
347
+ +getArray: (arg: $ReadOnlyArray<string>) => $ReadOnlyArray<string>;
348
+ }
349
+
350
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
351
+
352
+ `;
353
+ const NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEFINED_IN_FILE_AS_PROPERTY = `
354
+ /**
355
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
356
+ *
357
+ * This source code is licensed under the MIT license found in the
358
+ * LICENSE file in the root directory of this source tree.
359
+ *
360
+ * @flow strict-local
361
+ * @format
362
+ */
363
+
364
+ 'use strict';
365
+
366
+ import type {TurboModule} from '../RCTExport';
367
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
368
+
369
+ type DisplayMetricsAndroid = {|
370
+ width: number,
371
+ |};
372
+
373
+ export interface Spec extends TurboModule {
374
+ +getConstants: () => {|
375
+ +Dimensions: {
376
+ windowPhysicalPixels: DisplayMetricsAndroid,
377
+ },
378
+ |};
379
+ +getConstants2: () => $ReadOnly<{|
380
+ +Dimensions: {
381
+ windowPhysicalPixels: DisplayMetricsAndroid,
382
+ },
383
+ |}>;
384
+ }
385
+
386
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
387
+
388
+ `;
389
+ const NATIVE_MODULE_WITH_ARRAY_WITH_UNION_AND_TOUPLE = `
390
+ /**
391
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
392
+ *
393
+ * This source code is licensed under the MIT license found in the
394
+ * LICENSE file in the root directory of this source tree.
395
+ *
396
+ * @flow strict-local
397
+ * @format
398
+ */
399
+
400
+ 'use strict';
401
+
402
+ import type {TurboModule} from '../RCTExport';
403
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
404
+
405
+ export interface Spec extends TurboModule {
406
+ +getArray: (arg: Array<[string, string]>) => Array<string | number | boolean>;
407
+ }
408
+
409
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
410
+
411
+ `;
412
+ const NATIVE_MODULE_WITH_ARRAY_WITH_ALIAS = `
413
+ /**
414
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
415
+ *
416
+ * This source code is licensed under the MIT license found in the
417
+ * LICENSE file in the root directory of this source tree.
418
+ *
419
+ * @flow strict-local
420
+ * @format
421
+ */
422
+
423
+ 'use strict';
424
+
425
+ import type {TurboModule} from '../RCTExport';
426
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
427
+
428
+ export type SomeString = string;
429
+
430
+ export interface Spec extends TurboModule {
431
+ +getArray: (arg: Array<SomeString>) => Array<string>;
432
+ }
433
+
434
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
435
+
436
+ `;
437
+ const NATIVE_MODULE_WITH_COMPLEX_ARRAY = `
438
+ /**
439
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
440
+ *
441
+ * This source code is licensed under the MIT license found in the
442
+ * LICENSE file in the root directory of this source tree.
443
+ *
444
+ * @flow strict-local
445
+ * @format
446
+ */
447
+
448
+ 'use strict';
449
+
450
+ import type {TurboModule} from '../RCTExport';
451
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
452
+
453
+ export interface Spec extends TurboModule {
454
+ +getArray: (arg: Array<Array<Array<Array<Array<string>>>>>) => Array<Array<Array<string>>>;
455
+ }
456
+
457
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
458
+
459
+ `;
460
+ const NATIVE_MODULE_WITH_PROMISE = `
461
+ /**
462
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
463
+ *
464
+ * This source code is licensed under the MIT license found in the
465
+ * LICENSE file in the root directory of this source tree.
466
+ *
467
+ * @flow strict-local
468
+ * @format
469
+ */
470
+
471
+ 'use strict';
472
+
473
+ import type {TurboModule} from '../RCTExport';
474
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
475
+
476
+ export type String = string;
477
+ export type SomeObj = {| a: string |};
478
+
479
+ export interface Spec extends TurboModule {
480
+ +getValueWithPromise: () => Promise<string>;
481
+ +getValueWithPromiseDefinedSomewhereElse: () => Promise<String>;
482
+ +getValueWithPromiseObjDefinedSomewhereElse: () => Promise<SomeObj>;
483
+ }
484
+
485
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
486
+
487
+ `;
488
+ const NATIVE_MODULE_WITH_CALLBACK = `
489
+ /**
490
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
491
+ *
492
+ * This source code is licensed under the MIT license found in the
493
+ * LICENSE file in the root directory of this source tree.
494
+ *
495
+ * @flow strict-local
496
+ * @format
497
+ */
498
+
499
+ 'use strict';
500
+
501
+ import type {TurboModule} from '../RCTExport';
502
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
503
+
504
+ export interface Spec extends TurboModule {
505
+ // Exported methods.
506
+ +getValueWithCallback: (
507
+ callback: (value: string, arr: Array<Array<string>>) => void,
508
+ ) => void;
509
+ }
510
+
511
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
512
+
513
+ `;
514
+ const NATIVE_MODULE_WITH_UNION = `
515
+ /**
516
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
517
+ *
518
+ * This source code is licensed under the MIT license found in the
519
+ * LICENSE file in the root directory of this source tree.
520
+ *
521
+ * @flow strict-local
522
+ * @format
523
+ */
524
+
525
+ 'use strict';
526
+
527
+ import type {TurboModule} from '../RCTExport';
528
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
529
+
530
+ export type ChooseInt = 1 | 2 | 3;
531
+ export type ChooseFloat = 1.44 | 2.88 | 5.76;
532
+ export type ChooseObject = {} | {low: string};
533
+ export type ChooseString = 'One' | 'Two' | 'Three';
534
+
535
+ export interface Spec extends TurboModule {
536
+ +getUnion: (chooseInt: ChooseInt, chooseFloat: ChooseFloat, chooseObject: ChooseObject, chooseString: ChooseString) => ChooseObject;
537
+ }
538
+
539
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
540
+
541
+ `;
542
+ const ANDROID_ONLY_NATIVE_MODULE = `
543
+ /**
544
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
545
+ *
546
+ * This source code is licensed under the MIT license found in the
547
+ * LICENSE file in the root directory of this source tree.
548
+ *
549
+ * @flow strict-local
550
+ * @format
551
+ */
552
+
553
+ 'use strict';
554
+
555
+ import type {TurboModule} from '../RCTExport';
556
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
557
+
558
+ export interface Spec extends TurboModule {
559
+ // no methods
560
+ }
561
+
562
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModuleAndroid');
563
+
564
+ `;
565
+ const IOS_ONLY_NATIVE_MODULE = `
566
+ /**
567
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
568
+ *
569
+ * This source code is licensed under the MIT license found in the
570
+ * LICENSE file in the root directory of this source tree.
571
+ *
572
+ * @flow strict-local
573
+ * @format
574
+ */
575
+
576
+ 'use strict';
577
+
578
+ import type {TurboModule} from '../RCTExport';
579
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
580
+
581
+ export enum Quality {
582
+ SD,
583
+ HD,
584
+ }
585
+
586
+ export enum Resolution {
587
+ Low = 720,
588
+ High = 1080,
589
+ }
590
+
591
+ export enum Floppy {
592
+ LowDensity = 0.72,
593
+ HighDensity = 1.44,
594
+ }
595
+
596
+ export enum StringOptions {
597
+ One = 'one',
598
+ Two = 'two',
599
+ Three = 'three',
600
+ }
601
+
602
+ export interface Spec extends TurboModule {
603
+ getEnums(quality: Quality, resolution?: Resolution, floppy: Floppy, stringOptions: StringOptions): string;
604
+ }
605
+
606
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModuleIOS');
607
+
608
+ `;
609
+ const CXX_ONLY_NATIVE_MODULE = `
610
+ /**
611
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
612
+ *
613
+ * This source code is licensed under the MIT license found in the
614
+ * LICENSE file in the root directory of this source tree.
615
+ *
616
+ * @flow strict-local
617
+ * @format
618
+ */
619
+
620
+ 'use strict';
621
+
622
+ import type {TurboModule} from '../RCTExport';
623
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
624
+
625
+ export type ChooseInt = 1 | 2 | 3;
626
+ export type ChooseFloat = 1.44 | 2.88 | 5.76;
627
+ export type ChooseObject = {} | {low: string};
628
+ export type ChooseString = 'One' | 'Two' | 'Three';
629
+
630
+ export enum Quality {
631
+ SD,
632
+ HD,
633
+ }
634
+
635
+ export enum Resolution {
636
+ Low = 720,
637
+ High = 1080,
638
+ }
639
+
640
+ export enum Floppy {
641
+ LowDensity = 0.72,
642
+ HighDensity = 1.44,
643
+ }
644
+
645
+ export enum StringOptions {
646
+ One = 'one',
647
+ Two = 'two',
648
+ Three = 'three',
649
+ }
650
+
651
+ export interface Spec extends TurboModule {
652
+ +getCallback: () => () => void;
653
+ +getMixed: (arg: mixed) => mixed;
654
+ +getEnums: (quality: Quality, resolution?: Resolution, floppy: Floppy, stringOptions: StringOptions) => string;
655
+ +getMap: (arg: {[a: string]: ?number}) => {[b: string]: ?number};
656
+ +getAnotherMap: (arg: {[string]: string}) => {[string]: string};
657
+ +getUnion: (chooseInt: ChooseInt, chooseFloat: ChooseFloat, chooseObject: ChooseObject, chooseString: ChooseString) => ChooseObject;
658
+ }
659
+
660
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModuleCxx');
661
+
662
+ `;
663
+ const PROMISE_WITH_COMMONLY_USED_TYPES = `
664
+ /**
665
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
666
+ *
667
+ * This source code is licensed under the MIT license found in the
668
+ * LICENSE file in the root directory of this source tree.
669
+ *
670
+ * @flow strict-local
671
+ * @format
672
+ */
673
+
674
+ 'use strict';
675
+
676
+ import type {TurboModule} from '../RCTExport';
677
+ import * as TurboModuleRegistry from '../TurboModuleRegistry';
678
+
679
+ export type Season = 'Spring' | 'Summer' | 'Autumn' | 'Winter';
680
+
681
+ export type CustomObject = {|
682
+ field1: Array<Object>,
683
+ field2: boolean,
684
+ field3: string,
685
+ type: 'A_String_Literal',
686
+ |};
687
+
688
+ export interface Spec extends TurboModule {
689
+ returnStringArray(): Promise<Array<string>>;
690
+ returnObjectArray(): Promise<Array<Object>>;
691
+ returnNullableNumber(): Promise<number | null>;
692
+ returnEmpty(): Promise<empty>;
693
+ returnIndex(): Promise<{ [string]: 'authorized' | 'denied' | 'undetermined' | true | false }>;
694
+ returnEnum() : Promise<Season>;
695
+ returnObject() : Promise<CustomObject>;
696
+ }
697
+
698
+ export default TurboModuleRegistry.getEnforcing<Spec>('SampleTurboModule');
699
+ `;
700
+ module.exports = {
701
+ NATIVE_MODULE_WITH_OBJECT_WITH_OBJECT_DEFINED_IN_FILE_AS_PROPERTY,
702
+ NATIVE_MODULE_WITH_ARRAY_WITH_UNION_AND_TOUPLE,
703
+ NATIVE_MODULE_WITH_FLOAT_AND_INT32,
704
+ NATIVE_MODULE_WITH_ALIASES,
705
+ NATIVE_MODULE_WITH_NESTED_ALIASES,
706
+ NATIVE_MODULE_WITH_PROMISE,
707
+ NATIVE_MODULE_WITH_COMPLEX_OBJECTS,
708
+ NATIVE_MODULE_WITH_COMPLEX_OBJECTS_WITH_NULLABLE_KEY,
709
+ NATIVE_MODULE_WITH_SIMPLE_OBJECT,
710
+ NATIVE_MODULE_WITH_UNSAFE_OBJECT,
711
+ NATIVE_MODULE_WITH_ROOT_TAG,
712
+ NATIVE_MODULE_WITH_NULLABLE_PARAM,
713
+ NATIVE_MODULE_WITH_BASIC_ARRAY,
714
+ NATIVE_MODULE_WITH_COMPLEX_ARRAY,
715
+ NATIVE_MODULE_WITH_ARRAY_WITH_ALIAS,
716
+ NATIVE_MODULE_WITH_BASIC_PARAM_TYPES,
717
+ NATIVE_MODULE_WITH_CALLBACK,
718
+ NATIVE_MODULE_WITH_UNION,
719
+ EMPTY_NATIVE_MODULE,
720
+ ANDROID_ONLY_NATIVE_MODULE,
721
+ IOS_ONLY_NATIVE_MODULE,
722
+ CXX_ONLY_NATIVE_MODULE,
723
+ PROMISE_WITH_COMMONLY_USED_TYPES,
724
+ };