@react-native-windows/codegen 0.75.1 → 0.76.0-preview.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.
- package/CHANGELOG.md +72 -14
- package/lib-commonjs/Cli.js +1 -1
- package/lib-commonjs/Cli.js.map +1 -1
- package/lib-commonjs/generators/AliasGen.js +1 -2
- package/lib-commonjs/generators/AliasGen.js.map +1 -1
- package/lib-commonjs/generators/GenerateComponentWindows.js +5 -6
- package/lib-commonjs/generators/GenerateComponentWindows.js.map +1 -1
- package/lib-commonjs/generators/GenerateNM2.js +2 -2
- package/lib-commonjs/generators/GenerateNM2.js.map +1 -1
- package/lib-commonjs/generators/GenerateTypeScript.js +1 -1
- package/lib-commonjs/generators/GenerateTypeScript.js.map +1 -1
- package/lib-commonjs/generators/ObjectTypes.d.ts +2 -2
- package/lib-commonjs/generators/ObjectTypes.js +3 -1
- package/lib-commonjs/generators/ObjectTypes.js.map +1 -1
- package/lib-commonjs/generators/ParamTypes.d.ts +2 -1
- package/lib-commonjs/generators/ParamTypes.js +46 -2
- package/lib-commonjs/generators/ParamTypes.js.map +1 -1
- package/lib-commonjs/generators/ValidateMethods.d.ts +6 -1
- package/lib-commonjs/generators/ValidateMethods.js +30 -2
- package/lib-commonjs/generators/ValidateMethods.js.map +1 -1
- package/package.json +8 -8
- package/src/Cli.ts +1 -1
- package/src/generators/AliasGen.ts +1 -1
- package/src/generators/GenerateComponentWindows.ts +5 -6
- package/src/generators/GenerateNM2.ts +2 -2
- package/src/generators/GenerateTypeScript.ts +3 -2
- package/src/generators/ObjectTypes.ts +5 -2
- package/src/generators/ParamTypes.ts +90 -3
- package/src/generators/ValidateMethods.ts +86 -5
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
9
|
import type {
|
|
10
|
+
NativeModuleEventEmitterShape,
|
|
10
11
|
NativeModuleFunctionTypeAnnotation,
|
|
11
12
|
NativeModulePropertyShape,
|
|
12
13
|
NativeModuleSchema,
|
|
13
14
|
} from '@react-native/codegen/lib/CodegenSchema';
|
|
14
15
|
import {AliasMap} from './AliasManaging';
|
|
15
16
|
import type {CppCodegenOptions} from './ObjectTypes';
|
|
16
|
-
import {translateArgs, translateSpecArgs} from './ParamTypes';
|
|
17
|
+
import {translateArgs, translateSpecArgs, translateEventEmitterArgs} from './ParamTypes';
|
|
17
18
|
import {translateImplReturnType, translateSpecReturnType} from './ReturnTypes';
|
|
18
19
|
|
|
19
20
|
function isMethodSync(funcType: NativeModuleFunctionTypeAnnotation) {
|
|
@@ -91,9 +92,9 @@ function renderProperties(
|
|
|
91
92
|
aliases: AliasMap,
|
|
92
93
|
tuple: boolean,
|
|
93
94
|
options: CppCodegenOptions,
|
|
94
|
-
): string {
|
|
95
|
+
): { code: string, numberOfProperties: number } {
|
|
95
96
|
// TODO: generate code for constants
|
|
96
|
-
|
|
97
|
+
const properties = methods
|
|
97
98
|
.filter(prop => prop.name !== 'getConstants')
|
|
98
99
|
.map((prop, index) => {
|
|
99
100
|
// TODO: prop.optional === true
|
|
@@ -151,6 +152,66 @@ function renderProperties(
|
|
|
151
152
|
options,
|
|
152
153
|
)});`;
|
|
153
154
|
}
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
return {code: properties.join('\n'), numberOfProperties: properties.length};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function getPossibleEventEmitterSignatures(
|
|
161
|
+
eventEmitter: NativeModuleEventEmitterShape,
|
|
162
|
+
aliases: AliasMap,
|
|
163
|
+
options: CppCodegenOptions): string[] {
|
|
164
|
+
|
|
165
|
+
const traversedArgs = translateEventEmitterArgs(
|
|
166
|
+
eventEmitter.typeAnnotation.typeAnnotation,
|
|
167
|
+
aliases,
|
|
168
|
+
eventEmitter.name,
|
|
169
|
+
options,
|
|
170
|
+
);
|
|
171
|
+
return [`REACT_EVENT(${eventEmitter.name}) std::function<void(${traversedArgs})> ${eventEmitter.name};`]
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function translatePossibleEventSignatures(
|
|
175
|
+
eventEmitter: NativeModuleEventEmitterShape,
|
|
176
|
+
aliases: AliasMap,
|
|
177
|
+
options: CppCodegenOptions): string {
|
|
178
|
+
return getPossibleEventEmitterSignatures(
|
|
179
|
+
eventEmitter,
|
|
180
|
+
aliases,
|
|
181
|
+
options
|
|
182
|
+
)
|
|
183
|
+
.map(sig => `" ${sig}\\n"`)
|
|
184
|
+
.join('\n ');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function renderEventEmitters(
|
|
188
|
+
eventEmitters: ReadonlyArray<NativeModuleEventEmitterShape>,
|
|
189
|
+
indexOffset: number,
|
|
190
|
+
aliases: AliasMap,
|
|
191
|
+
tuple: boolean,
|
|
192
|
+
options: CppCodegenOptions,
|
|
193
|
+
): string {
|
|
194
|
+
return eventEmitters
|
|
195
|
+
.map((eventEmitter, index) => {
|
|
196
|
+
const traversedArgs = translateEventEmitterArgs(
|
|
197
|
+
eventEmitter.typeAnnotation.typeAnnotation,
|
|
198
|
+
aliases,
|
|
199
|
+
eventEmitter.name,
|
|
200
|
+
options,
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
if (tuple) {
|
|
204
|
+
return ` EventEmitter<void(${traversedArgs})>{${index + indexOffset}, L"${eventEmitter.name}"},`;
|
|
205
|
+
} else {
|
|
206
|
+
return ` REACT_SHOW_EVENTEMITTER_SPEC_ERRORS(
|
|
207
|
+
${index + indexOffset},
|
|
208
|
+
"${eventEmitter.name}",
|
|
209
|
+
${translatePossibleEventSignatures(
|
|
210
|
+
eventEmitter,
|
|
211
|
+
aliases,
|
|
212
|
+
options,
|
|
213
|
+
)});`;
|
|
214
|
+
}
|
|
154
215
|
})
|
|
155
216
|
.join('\n');
|
|
156
217
|
}
|
|
@@ -159,19 +220,39 @@ export function generateValidateMethods(
|
|
|
159
220
|
nativeModule: NativeModuleSchema,
|
|
160
221
|
aliases: AliasMap,
|
|
161
222
|
options: CppCodegenOptions,
|
|
162
|
-
):
|
|
223
|
+
): {
|
|
224
|
+
traversedProperties: string,
|
|
225
|
+
traversedEventEmitters: string,
|
|
226
|
+
traversedPropertyTuples: string,
|
|
227
|
+
traversedEventEmitterTuples: string,
|
|
228
|
+
} {
|
|
163
229
|
const methods = nativeModule.spec.methods;
|
|
230
|
+
const eventEmitters = nativeModule.spec.eventEmitters;
|
|
164
231
|
const traversedProperties = renderProperties(
|
|
165
232
|
methods,
|
|
166
233
|
aliases,
|
|
167
234
|
false,
|
|
168
235
|
options,
|
|
169
236
|
);
|
|
237
|
+
const traversedEventEmitters = renderEventEmitters(
|
|
238
|
+
eventEmitters,
|
|
239
|
+
traversedProperties.numberOfProperties,
|
|
240
|
+
aliases,
|
|
241
|
+
false,
|
|
242
|
+
options,
|
|
243
|
+
);
|
|
170
244
|
const traversedPropertyTuples = renderProperties(
|
|
171
245
|
methods,
|
|
172
246
|
aliases,
|
|
173
247
|
true,
|
|
174
248
|
options,
|
|
175
249
|
);
|
|
176
|
-
|
|
250
|
+
const traversedEventEmitterTuples = renderEventEmitters(
|
|
251
|
+
eventEmitters,
|
|
252
|
+
traversedProperties.numberOfProperties,
|
|
253
|
+
aliases,
|
|
254
|
+
true,
|
|
255
|
+
options,
|
|
256
|
+
);
|
|
257
|
+
return {traversedPropertyTuples: traversedPropertyTuples.code, traversedEventEmitterTuples, traversedProperties: traversedProperties.code, traversedEventEmitters};
|
|
177
258
|
}
|