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