@react-native-windows/codegen 0.72.0 → 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.
- package/CHANGELOG.md +14 -5
- package/lib-commonjs/Cli.js +13 -0
- package/lib-commonjs/Cli.js.map +1 -1
- package/lib-commonjs/generators/AliasGen.d.ts +2 -1
- package/lib-commonjs/generators/AliasGen.js +9 -9
- package/lib-commonjs/generators/AliasGen.js.map +1 -1
- package/lib-commonjs/generators/GenerateNM2.d.ts +4 -2
- package/lib-commonjs/generators/GenerateNM2.js +7 -3
- package/lib-commonjs/generators/GenerateNM2.js.map +1 -1
- package/lib-commonjs/generators/ObjectTypes.d.ts +6 -2
- package/lib-commonjs/generators/ObjectTypes.js +9 -9
- package/lib-commonjs/generators/ObjectTypes.js.map +1 -1
- package/lib-commonjs/generators/ParamTypes.d.ts +3 -2
- package/lib-commonjs/generators/ParamTypes.js +27 -27
- package/lib-commonjs/generators/ParamTypes.js.map +1 -1
- package/lib-commonjs/generators/ReturnTypes.d.ts +3 -2
- package/lib-commonjs/generators/ReturnTypes.js +7 -7
- package/lib-commonjs/generators/ReturnTypes.js.map +1 -1
- package/lib-commonjs/generators/ValidateMethods.d.ts +2 -1
- package/lib-commonjs/generators/ValidateMethods.js +15 -15
- package/lib-commonjs/generators/ValidateMethods.js.map +1 -1
- package/lib-commonjs/index.d.ts +10 -13
- package/lib-commonjs/index.js +6 -4
- package/lib-commonjs/index.js.map +1 -1
- package/package.json +1 -1
- package/src/Cli.ts +19 -2
- package/src/generators/AliasGen.ts +18 -6
- package/src/generators/GenerateNM2.ts +11 -2
- package/src/generators/ObjectTypes.ts +15 -3
- package/src/generators/ParamTypes.ts +43 -9
- package/src/generators/ReturnTypes.ts +18 -3
- package/src/generators/ValidateMethods.ts +32 -4
- package/src/index.ts +18 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
# Change Log - @react-native-windows/codegen
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Mon, 24 Jul 2023 15:13:52 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
-
## 0.72.
|
|
7
|
+
## 0.72.1
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Mon, 24 Jul 2023 15:13:52 GMT
|
|
10
10
|
|
|
11
11
|
### Patches
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
13
|
+
- Port #11833, #11848 and #11891 to 0.72 (53799235+ZihanChen-MSFT@users.noreply.github.com)
|
|
14
|
+
- Fix RNW not being detected on case-sensitive file systems (4123478+tido64@users.noreply.github.com)
|
|
15
15
|
|
|
16
|
+
## 0.72.0
|
|
17
|
+
|
|
18
|
+
Fri, 23 Jun 2023 22:30:08 GMT
|
|
19
|
+
|
|
20
|
+
### Patches
|
|
21
|
+
|
|
22
|
+
- Promote 0.72 to latest (jthysell@microsoft.com)
|
|
23
|
+
- Bump @react-native-windows/fs to v0.72.0
|
|
24
|
+
|
|
16
25
|
## 0.72.0-preview.2
|
|
17
26
|
|
|
18
27
|
Thu, 04 May 2023 20:58:54 GMT
|
package/lib-commonjs/Cli.js
CHANGED
|
@@ -61,11 +61,24 @@ const argv = yargs_1.default.options({
|
|
|
61
61
|
required: true,
|
|
62
62
|
describe: 'Used for part of the path generated within the codegen dir',
|
|
63
63
|
},
|
|
64
|
+
cppStringType: {
|
|
65
|
+
choices: ['std::string', 'std::wstring'],
|
|
66
|
+
describe: 'C++ string type in generated code, should be "std::string" or "std::wstring"',
|
|
67
|
+
default: 'std::string',
|
|
68
|
+
},
|
|
64
69
|
}).argv;
|
|
65
70
|
if ((argv.file && argv.files) || (!argv.file && !argv.files)) {
|
|
66
71
|
console.error('You must specify either --file or --files.');
|
|
67
72
|
process.exit(1);
|
|
68
73
|
}
|
|
74
|
+
if (argv.cppStringType !== 'std::string' &&
|
|
75
|
+
argv.cppStringType !== 'std::wstring') {
|
|
76
|
+
console.error('cppStringType should be "std::string" or "std::wstring".');
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
// type casting is necessary here because
|
|
80
|
+
// cppStringType does not become union of string literals
|
|
81
|
+
// until yargs.options get improved in the future
|
|
69
82
|
const changesNecessary = (0, index_1.runCodeGen)(argv);
|
|
70
83
|
if (argv.test && changesNecessary) {
|
|
71
84
|
console.error('There is a change in the output of codegen. Rerun "react-native codegen-windows" to regenerate.');
|
package/lib-commonjs/Cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,kDAA0B;AAC1B,mCAAmD;AAEnD,MAAM,IAAI,GAAG,eAAK,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,0BAA0B;KACrC;IACD,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,8CAA8C;KACzD;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,sDAAsD;QAChE,OAAO,EAAE,KAAK;KACf;IACD,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,0CAA0C;QACpD,OAAO,EAAE,KAAK;KACf;IACD,cAAc,EAAE;QACd,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,mDAAmD;QAC7D,OAAO,EAAE,KAAK;KACf;IACD,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,wDAAwD;QAClE,OAAO,EAAE,KAAK;KACf;IACD,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,SAAS;KACnB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,+CAA+C;QACzD,OAAO,EAAE,KAAK;KACf;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,qDAAqD;QAC/D,OAAO,EAAE,aAAa;KACvB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,4DAA4D;KACvE;IACD,aAAa,EAAE;QACb,OAAO,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;QACxC,QAAQ,EACN,8EAA8E;QAChF,OAAO,EAAE,aAAa;KACvB;CACF,CAAC,CAAC,IAAI,CAAC;AAER,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC5D,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,IACE,IAAI,CAAC,aAAa,KAAK,aAAa;IACpC,IAAI,CAAC,aAAa,KAAK,cAAc,EACrC;IACA,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB;AAED,yCAAyC;AACzC,yDAAyD;AACzD,iDAAiD;AACjD,MAAM,gBAAgB,GAAG,IAAA,kBAAU,EAAiB,IAAI,CAAC,CAAC;AAE1D,IAAI,IAAI,CAAC,IAAI,IAAI,gBAAgB,EAAE;IACjC,OAAO,CAAC,KAAK,CACX,kGAAkG,CACnG,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjB","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * @format\n */\n\nimport yargs from 'yargs';\nimport {CodeGenOptions, runCodeGen} from './index';\n\nconst argv = yargs.options({\n file: {\n type: 'string',\n describe: 'file which contains spec',\n },\n files: {\n type: 'string',\n array: true,\n describe: 'glob patterns for files which contains specs',\n },\n modulesTypeScriptTypes: {\n type: 'boolean',\n describe: 'generate turbo module definition files in TypeScript',\n default: false,\n },\n modulesCxx: {\n type: 'boolean',\n describe: 'generate C++ JSI turbo module spec files',\n default: false,\n },\n modulesWindows: {\n type: 'boolean',\n describe: 'generate turbo module spec files for REACT_MODULE',\n default: false,\n },\n methodOnly: {\n type: 'boolean',\n describe: 'generate only method metadata in C++ turbo module spec',\n default: false,\n },\n outputDirectory: {\n type: 'string',\n describe: 'output directory',\n default: 'codegen',\n },\n test: {\n type: 'boolean',\n describe: 'Verify that the generated output is unchanged',\n default: false,\n },\n namespace: {\n type: 'string',\n describe: 'C++/C# Namespace to put generated native modules in',\n default: 'MyNamespace',\n },\n libraryName: {\n type: 'string',\n required: true,\n describe: 'Used for part of the path generated within the codegen dir',\n },\n cppStringType: {\n choices: ['std::string', 'std::wstring'],\n describe:\n 'C++ string type in generated code, should be \"std::string\" or \"std::wstring\"',\n default: 'std::string',\n },\n}).argv;\n\nif ((argv.file && argv.files) || (!argv.file && !argv.files)) {\n console.error('You must specify either --file or --files.');\n process.exit(1);\n}\n\nif (\n argv.cppStringType !== 'std::string' &&\n argv.cppStringType !== 'std::wstring'\n) {\n console.error('cppStringType should be \"std::string\" or \"std::wstring\".');\n process.exit(1);\n}\n\n// type casting is necessary here because\n// cppStringType does not become union of string literals\n// until yargs.options get improved in the future\nconst changesNecessary = runCodeGen(<CodeGenOptions>argv);\n\nif (argv.test && changesNecessary) {\n console.error(\n 'There is a change in the output of codegen. Rerun \"react-native codegen-windows\" to regenerate.',\n );\n process.exit(2);\n}\n"]}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NativeModuleObjectTypeAnnotation } from '@react-native/codegen/lib/CodegenSchema';
|
|
7
7
|
import { AliasMap } from './AliasManaging';
|
|
8
|
+
import { CppCodegenOptions } from './ObjectTypes';
|
|
8
9
|
export declare function createAliasMap(nativeModuleAliases: {
|
|
9
10
|
[name: string]: NativeModuleObjectTypeAnnotation;
|
|
10
11
|
}): AliasMap;
|
|
11
|
-
export declare function generateAliases(aliases: AliasMap): string;
|
|
12
|
+
export declare function generateAliases(aliases: AliasMap, options: CppCodegenOptions): string;
|
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.generateAliases = exports.createAliasMap = void 0;
|
|
9
9
|
const AliasManaging_1 = require("./AliasManaging");
|
|
10
10
|
const ObjectTypes_1 = require("./ObjectTypes");
|
|
11
|
-
function translateObjectBody(type, aliases, baseAliasName, prefix) {
|
|
11
|
+
function translateObjectBody(type, aliases, baseAliasName, prefix, options) {
|
|
12
12
|
return type.properties
|
|
13
13
|
.map((prop) => {
|
|
14
14
|
let propType = prop.typeAnnotation;
|
|
@@ -16,7 +16,7 @@ function translateObjectBody(type, aliases, baseAliasName, prefix) {
|
|
|
16
16
|
propType = { type: 'NullableTypeAnnotation', typeAnnotation: propType };
|
|
17
17
|
}
|
|
18
18
|
const first = `${prefix}REACT_FIELD(${prop.name})`;
|
|
19
|
-
const second = `${prefix}${(0, ObjectTypes_1.translateField)(propType, aliases, `${baseAliasName}_${prop.name}
|
|
19
|
+
const second = `${prefix}${(0, ObjectTypes_1.translateField)(propType, aliases, `${baseAliasName}_${prop.name}`, options)} ${prop.name};`;
|
|
20
20
|
return `${first}\n${second}`;
|
|
21
21
|
})
|
|
22
22
|
.join('\n');
|
|
@@ -29,16 +29,16 @@ function createAliasMap(nativeModuleAliases) {
|
|
|
29
29
|
return aliases;
|
|
30
30
|
}
|
|
31
31
|
exports.createAliasMap = createAliasMap;
|
|
32
|
-
function generateSingleAlias(aliases, aliasName, aliasCode) {
|
|
32
|
+
function generateSingleAlias(aliases, aliasName, aliasCode, options) {
|
|
33
33
|
const aliasType = aliases.types[aliasName];
|
|
34
34
|
aliasCode[aliasName] = `
|
|
35
35
|
REACT_STRUCT(${(0, AliasManaging_1.getAliasCppName)(aliasName)})
|
|
36
36
|
struct ${(0, AliasManaging_1.getAliasCppName)(aliasName)} {
|
|
37
|
-
${translateObjectBody(aliasType, aliases, aliasName, ' ')}
|
|
37
|
+
${translateObjectBody(aliasType, aliases, aliasName, ' ', options)}
|
|
38
38
|
};
|
|
39
39
|
`;
|
|
40
40
|
}
|
|
41
|
-
function generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder) {
|
|
41
|
+
function generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder, options) {
|
|
42
42
|
// retrieve and clean all ungenerated aliases
|
|
43
43
|
const jobs = aliases.jobs;
|
|
44
44
|
aliases.jobs = [];
|
|
@@ -47,20 +47,20 @@ function generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder) {
|
|
|
47
47
|
// generate a new struct and all fields will be examined
|
|
48
48
|
// new anonymous objects could be found
|
|
49
49
|
// they will be stored in aliases.jobs
|
|
50
|
-
generateSingleAlias(aliases, aliasName, aliasCode);
|
|
50
|
+
generateSingleAlias(aliases, aliasName, aliasCode, options);
|
|
51
51
|
// nested C++ structs must be put before the current C++ struct
|
|
52
52
|
// as they will be used in the current C++ struct
|
|
53
53
|
// the order will be perfectly and easily ensured by doing this recursively
|
|
54
|
-
generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder);
|
|
54
|
+
generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder, options);
|
|
55
55
|
// all referenced C++ structs are generated
|
|
56
56
|
// put the current one following them
|
|
57
57
|
aliasOrder.push(aliasName);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
function generateAliases(aliases) {
|
|
60
|
+
function generateAliases(aliases, options) {
|
|
61
61
|
const aliasCode = {};
|
|
62
62
|
const aliasOrder = [];
|
|
63
|
-
generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder);
|
|
63
|
+
generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder, options);
|
|
64
64
|
// aliasOrder now has the correct order of C++ struct code
|
|
65
65
|
let traversedAliasedStructs = '';
|
|
66
66
|
for (const aliasName of aliasOrder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AliasGen.js","sourceRoot":"","sources":["../../src/generators/AliasGen.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;;AAQb,mDAA0D;AAC1D,+
|
|
1
|
+
{"version":3,"file":"AliasGen.js","sourceRoot":"","sources":["../../src/generators/AliasGen.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n NativeModuleBaseTypeAnnotation,\n NativeModuleObjectTypeAnnotation,\n NamedShape,\n Nullable,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {AliasMap, getAliasCppName} from './AliasManaging';\nimport {CppCodegenOptions, translateField} from './ObjectTypes';\n\nfunction translateObjectBody(\n type: NativeModuleObjectTypeAnnotation,\n aliases: AliasMap,\n baseAliasName: string,\n prefix: string,\n options: CppCodegenOptions,\n) {\n return type.properties\n .map((prop: NamedShape<Nullable<NativeModuleBaseTypeAnnotation>>) => {\n let propType = prop.typeAnnotation;\n if (prop.optional && propType.type !== 'NullableTypeAnnotation') {\n propType = {type: 'NullableTypeAnnotation', typeAnnotation: propType};\n }\n const first = `${prefix}REACT_FIELD(${prop.name})`;\n const second = `${prefix}${translateField(\n propType,\n aliases,\n `${baseAliasName}_${prop.name}`,\n options,\n )} ${prop.name};`;\n return `${first}\\n${second}`;\n })\n .join('\\n');\n}\n\nexport function createAliasMap(nativeModuleAliases: {\n [name: string]: NativeModuleObjectTypeAnnotation;\n}): AliasMap {\n const aliases: AliasMap = {types: {}, jobs: Object.keys(nativeModuleAliases)};\n for (const aliasName of aliases.jobs) {\n aliases.types[aliasName] = nativeModuleAliases[aliasName];\n }\n return aliases;\n}\n\ninterface AliasCodeMap {\n [name: string]: string;\n}\n\nfunction generateSingleAlias(\n aliases: AliasMap,\n aliasName: string,\n aliasCode: AliasCodeMap,\n options: CppCodegenOptions,\n): void {\n const aliasType = <NativeModuleObjectTypeAnnotation>aliases.types[aliasName];\n aliasCode[aliasName] = `\nREACT_STRUCT(${getAliasCppName(aliasName)})\nstruct ${getAliasCppName(aliasName)} {\n${translateObjectBody(aliasType, aliases, aliasName, ' ', options)}\n};\n`;\n}\n\nfunction generateNestedAliasesInCorrectOrder(\n aliases: AliasMap,\n aliasCode: AliasCodeMap,\n aliasOrder: string[],\n options: CppCodegenOptions,\n): void {\n // retrieve and clean all ungenerated aliases\n const jobs = aliases.jobs;\n aliases.jobs = [];\n\n // generate each one in its found order\n for (const aliasName of jobs) {\n // generate a new struct and all fields will be examined\n // new anonymous objects could be found\n // they will be stored in aliases.jobs\n generateSingleAlias(aliases, aliasName, aliasCode, options);\n // nested C++ structs must be put before the current C++ struct\n // as they will be used in the current C++ struct\n // the order will be perfectly and easily ensured by doing this recursively\n generateNestedAliasesInCorrectOrder(\n aliases,\n aliasCode,\n aliasOrder,\n options,\n );\n // all referenced C++ structs are generated\n // put the current one following them\n aliasOrder.push(aliasName);\n }\n}\n\nexport function generateAliases(\n aliases: AliasMap,\n options: CppCodegenOptions,\n): string {\n const aliasCode: AliasCodeMap = {};\n const aliasOrder: string[] = [];\n generateNestedAliasesInCorrectOrder(aliases, aliasCode, aliasOrder, options);\n\n // aliasOrder now has the correct order of C++ struct code\n let traversedAliasedStructs = '';\n for (const aliasName of aliasOrder) {\n traversedAliasedStructs = `${traversedAliasedStructs}${aliasCode[aliasName]}`;\n }\n return traversedAliasedStructs;\n}\n"]}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* @format
|
|
5
5
|
*/
|
|
6
6
|
import type { SchemaType } from '@react-native/codegen/lib/CodegenSchema';
|
|
7
|
+
import type { CppStringTypes } from './ObjectTypes';
|
|
8
|
+
export type { CppStringTypes } from './ObjectTypes';
|
|
7
9
|
type FilesOutput = Map<string, string>;
|
|
8
|
-
export declare function createNM2Generator({ methodOnly, namespace, }: {
|
|
10
|
+
export declare function createNM2Generator({ methodOnly, namespace, cppStringType, }: {
|
|
9
11
|
methodOnly: boolean;
|
|
10
12
|
namespace: string;
|
|
13
|
+
cppStringType: CppStringTypes;
|
|
11
14
|
}): (_libraryName: string, schema: SchemaType, _moduleSpecName: string) => FilesOutput;
|
|
12
|
-
export {};
|
|
@@ -38,7 +38,7 @@ struct ::_MODULE_NAME_::Spec : winrt::Microsoft::ReactNative::TurboModuleSpec {
|
|
|
38
38
|
|
|
39
39
|
} // namespace ::_NAMESPACE_::
|
|
40
40
|
`;
|
|
41
|
-
function createNM2Generator({ methodOnly, namespace, }) {
|
|
41
|
+
function createNM2Generator({ methodOnly, namespace, cppStringType, }) {
|
|
42
42
|
return (_libraryName, schema, _moduleSpecName) => {
|
|
43
43
|
const files = new Map();
|
|
44
44
|
for (const moduleName of Object.keys(schema.modules)) {
|
|
@@ -55,7 +55,9 @@ function createNM2Generator({ methodOnly, namespace, }) {
|
|
|
55
55
|
// copy all explicit to a map
|
|
56
56
|
const aliases = (0, AliasGen_1.createAliasMap)(nativeModule.aliasMap);
|
|
57
57
|
// prepare methods
|
|
58
|
-
const methods = (0, ValidateMethods_1.generateValidateMethods)(nativeModule, aliases
|
|
58
|
+
const methods = (0, ValidateMethods_1.generateValidateMethods)(nativeModule, aliases, {
|
|
59
|
+
cppStringType,
|
|
60
|
+
});
|
|
59
61
|
let tuples = `
|
|
60
62
|
static constexpr auto methods = std::tuple{
|
|
61
63
|
${methods[0]}
|
|
@@ -77,7 +79,9 @@ ${constants[0]}
|
|
|
77
79
|
${errors}`;
|
|
78
80
|
}
|
|
79
81
|
// generate code for structs
|
|
80
|
-
const traversedAliasedStructs = (0, AliasGen_1.generateAliases)(aliases
|
|
82
|
+
const traversedAliasedStructs = (0, AliasGen_1.generateAliases)(aliases, {
|
|
83
|
+
cppStringType,
|
|
84
|
+
});
|
|
81
85
|
files.set(`Native${preferredModuleName}Spec.g.h`, moduleTemplate
|
|
82
86
|
.replace(/::_MODULE_ALIASED_STRUCTS_::/g, traversedAliasedStructs)
|
|
83
87
|
.replace(/::_MODULE_MEMBERS_TUPLES_::/g, tuples.substring(1))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateNM2.js","sourceRoot":"","sources":["../../src/generators/GenerateNM2.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;;AAGb,mDAAiE;AACjE,yCAA2D;AAC3D,2DAA8D;AAC9D,uDAA0D;
|
|
1
|
+
{"version":3,"file":"GenerateNM2.js","sourceRoot":"","sources":["../../src/generators/GenerateNM2.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;;AAGb,mDAAiE;AACjE,yCAA2D;AAC3D,2DAA8D;AAC9D,uDAA0D;AAO1D,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtB,CAAC;AAEF,SAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,SAAS,EACT,aAAa,GAKd;IACC,OAAO,CACL,YAAoB,EACpB,MAAkB,EAClB,eAAuB,EACV,EAAE;QACf,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QAExC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACpD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChD,4CAA4C;YAC5C,0DAA0D;YAC1D,iCAAiC;YACjC,MAAM,mBAAmB,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACzD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,UAAU,CAAC;YACf,IAAA,sCAAsB,EAAC,mBAAmB,CAAC,CAAC;YAE5C,IAAI,YAAY,CAAC,IAAI,KAAK,cAAc,EAAE;gBACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,mBAAmB,UAAU,CAAC,CAAC;gBAE/D,6BAA6B;gBAC7B,MAAM,OAAO,GAAa,IAAA,yBAAc,EAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAEhE,kBAAkB;gBAClB,MAAM,OAAO,GAAG,IAAA,yCAAuB,EAAC,YAAY,EAAE,OAAO,EAAE;oBAC7D,aAAa;iBACd,CAAC,CAAC;gBACH,IAAI,MAAM,GAAG;;EAEnB,OAAO,CAAC,CAAC,CAAC;KACP,CAAC;gBACE,IAAI,MAAM,GAAG;wFACmE,CAAC;gBACjF,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAExB,oBAAoB;gBACpB,MAAM,SAAS,GAAG,IAAA,6CAAyB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACnE,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE;oBAC1C,MAAM,GAAG;;EAEjB,SAAS,CAAC,CAAC,CAAC;MACR,MAAM,EAAE,CAAC;oBACL,MAAM,GAAG;6FAC0E,MAAM,EAAE,CAAC;oBAC5F,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;;EAEhC,MAAM,EAAE,CAAC;iBACF;gBAED,4BAA4B;gBAC5B,MAAM,uBAAuB,GAAG,IAAA,0BAAe,EAAC,OAAO,EAAE;oBACvD,aAAa;iBACd,CAAC,CAAC;gBAEH,KAAK,CAAC,GAAG,CACP,SAAS,mBAAmB,UAAU,EACtC,cAAc;qBACX,OAAO,CAAC,+BAA+B,EAAE,uBAAuB,CAAC;qBACjE,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qBAC5D,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qBAC5D,OAAO,CAAC,8BAA8B,EAAE,MAAM,CAAC;qBAC/C,OAAO,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;qBAClD,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAC1C,CAAC;aACH;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AA9ED,gDA8EC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {SchemaType} from '@react-native/codegen/lib/CodegenSchema';\nimport {AliasMap, setPreferredModuleName} from './AliasManaging';\nimport {createAliasMap, generateAliases} from './AliasGen';\nimport {generateValidateConstants} from './ValidateConstants';\nimport {generateValidateMethods} from './ValidateMethods';\nimport type {CppStringTypes} from './ObjectTypes';\n\nexport type {CppStringTypes} from './ObjectTypes';\n\ntype FilesOutput = Map<string, string>;\n\nconst moduleTemplate = `\n/*\n * This file is auto-generated from a NativeModule spec file in js.\n *\n * This is a C++ Spec class that should be used with MakeTurboModuleProvider to register native modules\n * in a way that also verifies at compile time that the native module matches the interface required\n * by the TurboModule JS spec.\n */\n#pragma once\n\n#include \"NativeModules.h\"\n#include <tuple>\n\nnamespace ::_NAMESPACE_:: {\n::_MODULE_ALIASED_STRUCTS_::\nstruct ::_MODULE_NAME_::Spec : winrt::Microsoft::ReactNative::TurboModuleSpec {\n::_MODULE_MEMBERS_TUPLES_::\n\n template <class TModule>\n static constexpr void ValidateModule() noexcept {\n::_MODULE_MEMBERS_CHECKS_::\n\n::_MODULE_MEMBERS_ERRORS_::\n }\n};\n\n} // namespace ::_NAMESPACE_::\n`;\n\nexport function createNM2Generator({\n methodOnly,\n namespace,\n cppStringType,\n}: {\n methodOnly: boolean;\n namespace: string;\n cppStringType: CppStringTypes;\n}) {\n return (\n _libraryName: string,\n schema: SchemaType,\n _moduleSpecName: string,\n ): FilesOutput => {\n const files = new Map<string, string>();\n\n for (const moduleName of Object.keys(schema.modules)) {\n const nativeModule = schema.modules[moduleName];\n // from 0.65 facebook's react-native-codegen\n // the module name has the Native prefix comparing to 0.63\n // when reading files we provided\n const preferredModuleName = moduleName.startsWith('Native')\n ? moduleName.substr(6)\n : moduleName;\n setPreferredModuleName(preferredModuleName);\n\n if (nativeModule.type === 'NativeModule') {\n console.log(`Generating Native${preferredModuleName}Spec.g.h`);\n\n // copy all explicit to a map\n const aliases: AliasMap = createAliasMap(nativeModule.aliasMap);\n\n // prepare methods\n const methods = generateValidateMethods(nativeModule, aliases, {\n cppStringType,\n });\n let tuples = `\n static constexpr auto methods = std::tuple{\n${methods[0]}\n };`;\n let checks = `\n constexpr auto methodCheckResults = CheckMethods<TModule, ::_MODULE_NAME_::Spec>();`;\n let errors = methods[1];\n\n // prepare constants\n const constants = generateValidateConstants(nativeModule, aliases);\n if (constants !== undefined && !methodOnly) {\n tuples = `\n static constexpr auto constants = std::tuple{\n${constants[0]}\n };${tuples}`;\n checks = `\n constexpr auto constantCheckResults = CheckConstants<TModule, ::_MODULE_NAME_::Spec>();${checks}`;\n errors = `${constants[1]}\n\n${errors}`;\n }\n\n // generate code for structs\n const traversedAliasedStructs = generateAliases(aliases, {\n cppStringType,\n });\n\n files.set(\n `Native${preferredModuleName}Spec.g.h`,\n moduleTemplate\n .replace(/::_MODULE_ALIASED_STRUCTS_::/g, traversedAliasedStructs)\n .replace(/::_MODULE_MEMBERS_TUPLES_::/g, tuples.substring(1))\n .replace(/::_MODULE_MEMBERS_CHECKS_::/g, checks.substring(1))\n .replace(/::_MODULE_MEMBERS_ERRORS_::/g, errors)\n .replace(/::_MODULE_NAME_::/g, preferredModuleName)\n .replace(/::_NAMESPACE_::/g, namespace),\n );\n }\n }\n\n return files;\n };\n}\n"]}
|
|
@@ -5,5 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NativeModuleBaseTypeAnnotation, Nullable } from '@react-native/codegen/lib/CodegenSchema';
|
|
7
7
|
import { AliasMap } from './AliasManaging';
|
|
8
|
-
export
|
|
9
|
-
export
|
|
8
|
+
export type CppStringTypes = 'std::string' | 'std::wstring';
|
|
9
|
+
export interface CppCodegenOptions {
|
|
10
|
+
cppStringType: CppStringTypes;
|
|
11
|
+
}
|
|
12
|
+
export declare function translateFieldOrReturnType(type: Nullable<NativeModuleBaseTypeAnnotation>, aliases: AliasMap, baseAliasName: string, callerName: 'translateField' | 'translateReturnType', options: CppCodegenOptions): string;
|
|
13
|
+
export declare function translateField(type: Nullable<NativeModuleBaseTypeAnnotation>, aliases: AliasMap, baseAliasName: string, options: CppCodegenOptions): string;
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.translateField = exports.translateFieldOrReturnType = void 0;
|
|
9
9
|
const AliasManaging_1 = require("./AliasManaging");
|
|
10
|
-
function translateUnionReturnType(type) {
|
|
10
|
+
function translateUnionReturnType(type, options) {
|
|
11
11
|
const memberType = type.memberType;
|
|
12
12
|
switch (type.memberType) {
|
|
13
13
|
case 'StringTypeAnnotation':
|
|
14
|
-
return
|
|
14
|
+
return options.cppStringType;
|
|
15
15
|
case 'NumberTypeAnnotation':
|
|
16
16
|
return 'double';
|
|
17
17
|
case 'ObjectTypeAnnotation':
|
|
@@ -20,12 +20,12 @@ function translateUnionReturnType(type) {
|
|
|
20
20
|
throw new Error(`Unknown enum/union member type in translateReturnType: ${memberType}`);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
function translateFieldOrReturnType(type, aliases, baseAliasName, callerName) {
|
|
23
|
+
function translateFieldOrReturnType(type, aliases, baseAliasName, callerName, options) {
|
|
24
24
|
// avoid: Property 'type' does not exist on type 'never'
|
|
25
25
|
const returnType = type.type;
|
|
26
26
|
switch (type.type) {
|
|
27
27
|
case 'StringTypeAnnotation':
|
|
28
|
-
return
|
|
28
|
+
return options.cppStringType;
|
|
29
29
|
case 'NumberTypeAnnotation':
|
|
30
30
|
case 'FloatTypeAnnotation':
|
|
31
31
|
case 'DoubleTypeAnnotation':
|
|
@@ -36,7 +36,7 @@ function translateFieldOrReturnType(type, aliases, baseAliasName, callerName) {
|
|
|
36
36
|
return 'bool';
|
|
37
37
|
case 'ArrayTypeAnnotation':
|
|
38
38
|
if (type.elementType) {
|
|
39
|
-
return `std::vector<${translateFieldOrReturnType(type.elementType, aliases, `${baseAliasName}_element`, callerName)}>`;
|
|
39
|
+
return `std::vector<${translateFieldOrReturnType(type.elementType, aliases, `${baseAliasName}_element`, callerName, options)}>`;
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
42
|
return `::React::JSValueArray`;
|
|
@@ -57,17 +57,17 @@ function translateFieldOrReturnType(type, aliases, baseAliasName, callerName) {
|
|
|
57
57
|
case 'TypeAliasTypeAnnotation':
|
|
58
58
|
return (0, AliasManaging_1.getAliasCppName)(type.name);
|
|
59
59
|
case 'NullableTypeAnnotation':
|
|
60
|
-
return `std::optional<${translateFieldOrReturnType(type.typeAnnotation, aliases, baseAliasName, callerName)}>`;
|
|
60
|
+
return `std::optional<${translateFieldOrReturnType(type.typeAnnotation, aliases, baseAliasName, callerName, options)}>`;
|
|
61
61
|
case 'EnumDeclaration':
|
|
62
62
|
case 'UnionTypeAnnotation':
|
|
63
|
-
return translateUnionReturnType(type);
|
|
63
|
+
return translateUnionReturnType(type, options);
|
|
64
64
|
default:
|
|
65
65
|
throw new Error(`Unhandled type in ${callerName}: ${returnType}`);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
exports.translateFieldOrReturnType = translateFieldOrReturnType;
|
|
69
|
-
function translateField(type, aliases, baseAliasName) {
|
|
70
|
-
return translateFieldOrReturnType(type, aliases, baseAliasName, 'translateField');
|
|
69
|
+
function translateField(type, aliases, baseAliasName, options) {
|
|
70
|
+
return translateFieldOrReturnType(type, aliases, baseAliasName, 'translateField', options);
|
|
71
71
|
}
|
|
72
72
|
exports.translateField = translateField;
|
|
73
73
|
//# sourceMappingURL=ObjectTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectTypes.js","sourceRoot":"","sources":["../../src/generators/ObjectTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;;AAQb,mDAIyB;
|
|
1
|
+
{"version":3,"file":"ObjectTypes.js","sourceRoot":"","sources":["../../src/generators/ObjectTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;;AAQb,mDAIyB;AAQzB,SAAS,wBAAwB,CAC/B,IAAmE,EACnE,OAA0B;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,IAAI,CAAC,UAAU,EAAE;QACvB,KAAK,sBAAsB;YACzB,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,KAAK,sBAAsB;YACzB,OAAO,QAAQ,CAAC;QAClB,KAAK,sBAAsB;YACzB,OAAO,kBAAkB,CAAC;QAC5B;YACE,MAAM,IAAI,KAAK,CACb,0DAA0D,UAAU,EAAE,CACvE,CAAC;KACL;AACH,CAAC;AAED,SAAgB,0BAA0B,CACxC,IAA8C,EAC9C,OAAiB,EACjB,aAAqB,EACrB,UAAoD,EACpD,OAA0B;IAE1B,wDAAwD;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7B,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,sBAAsB;YACzB,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,qBAAqB,CAAC;QAC3B,KAAK,sBAAsB;YACzB,OAAO,QAAQ,CAAC;QAClB,KAAK,qBAAqB;YACxB,OAAO,KAAK,CAAC;QACf,KAAK,uBAAuB;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,qBAAqB;YACxB,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,OAAO,eAAe,0BAA0B,CAC9C,IAAI,CAAC,WAAW,EAChB,OAAO,EACP,GAAG,aAAa,UAAU,EAC1B,UAAU,EACV,OAAO,CACR,GAAG,CAAC;aACN;iBAAM;gBACL,OAAO,uBAAuB,CAAC;aAChC;QACH,KAAK,6BAA6B;YAChC,OAAO,kBAAkB,CAAC;QAC5B,KAAK,sBAAsB;YACzB,OAAO,IAAA,wCAAwB,EAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAChE,KAAK,wBAAwB,CAAC,CAAC;YAC7B,wDAAwD;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,UAAU;YACV,uEAAuE;YACvE,IAAI,IAAI,KAAK,SAAS;gBACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,OAAO,UAAU,EAAE,CAAC,CAAC;YACzE,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,yBAAyB;YAC5B,OAAO,IAAA,+BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,wBAAwB;YAC3B,OAAO,iBAAiB,0BAA0B,CAChD,IAAI,CAAC,cAAc,EACnB,OAAO,EACP,aAAa,EACb,UAAU,EACV,OAAO,CACR,GAAG,CAAC;QACP,KAAK,iBAAiB,CAAC;QACvB,KAAK,qBAAqB;YACxB,OAAO,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;KACrE;AACH,CAAC;AA7DD,gEA6DC;AAED,SAAgB,cAAc,CAC5B,IAA8C,EAC9C,OAAiB,EACjB,aAAqB,EACrB,OAA0B;IAE1B,OAAO,0BAA0B,CAC/B,IAAI,EACJ,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,OAAO,CACR,CAAC;AACJ,CAAC;AAbD,wCAaC","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n NativeModuleEnumDeclaration,\n NativeModuleBaseTypeAnnotation,\n NativeModuleUnionTypeAnnotation,\n Nullable,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {\n AliasMap,\n getAliasCppName,\n getAnonymousAliasCppName,\n} from './AliasManaging';\n\nexport type CppStringTypes = 'std::string' | 'std::wstring';\n\nexport interface CppCodegenOptions {\n cppStringType: CppStringTypes;\n}\n\nfunction translateUnionReturnType(\n type: NativeModuleEnumDeclaration | NativeModuleUnionTypeAnnotation,\n options: CppCodegenOptions,\n): string {\n const memberType = type.memberType;\n switch (type.memberType) {\n case 'StringTypeAnnotation':\n return options.cppStringType;\n case 'NumberTypeAnnotation':\n return 'double';\n case 'ObjectTypeAnnotation':\n return '::React::JSValue';\n default:\n throw new Error(\n `Unknown enum/union member type in translateReturnType: ${memberType}`,\n );\n }\n}\n\nexport function translateFieldOrReturnType(\n type: Nullable<NativeModuleBaseTypeAnnotation>,\n aliases: AliasMap,\n baseAliasName: string,\n callerName: 'translateField' | 'translateReturnType',\n options: CppCodegenOptions,\n): string {\n // avoid: Property 'type' does not exist on type 'never'\n const returnType = type.type;\n switch (type.type) {\n case 'StringTypeAnnotation':\n return options.cppStringType;\n case 'NumberTypeAnnotation':\n case 'FloatTypeAnnotation':\n case 'DoubleTypeAnnotation':\n return 'double';\n case 'Int32TypeAnnotation':\n return 'int';\n case 'BooleanTypeAnnotation':\n return 'bool';\n case 'ArrayTypeAnnotation':\n if (type.elementType) {\n return `std::vector<${translateFieldOrReturnType(\n type.elementType,\n aliases,\n `${baseAliasName}_element`,\n callerName,\n options,\n )}>`;\n } else {\n return `::React::JSValueArray`;\n }\n case 'GenericObjectTypeAnnotation':\n return '::React::JSValue';\n case 'ObjectTypeAnnotation':\n return getAnonymousAliasCppName(aliases, baseAliasName, type);\n case 'ReservedTypeAnnotation': {\n // avoid: Property 'name' does not exist on type 'never'\n const name = type.name;\n // (#6597)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (name !== 'RootTag')\n throw new Error(`Unknown reserved function: ${name} in ${callerName}`);\n return 'double';\n }\n case 'TypeAliasTypeAnnotation':\n return getAliasCppName(type.name);\n case 'NullableTypeAnnotation':\n return `std::optional<${translateFieldOrReturnType(\n type.typeAnnotation,\n aliases,\n baseAliasName,\n callerName,\n options,\n )}>`;\n case 'EnumDeclaration':\n case 'UnionTypeAnnotation':\n return translateUnionReturnType(type, options);\n default:\n throw new Error(`Unhandled type in ${callerName}: ${returnType}`);\n }\n}\n\nexport function translateField(\n type: Nullable<NativeModuleBaseTypeAnnotation>,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n): string {\n return translateFieldOrReturnType(\n type,\n aliases,\n baseAliasName,\n 'translateField',\n options,\n );\n}\n"]}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NamedShape, NativeModuleParamTypeAnnotation, Nullable } from '@react-native/codegen/lib/CodegenSchema';
|
|
7
7
|
import { AliasMap } from './AliasManaging';
|
|
8
|
+
import type { CppCodegenOptions } from './ObjectTypes';
|
|
8
9
|
type NativeModuleParamShape = NamedShape<Nullable<NativeModuleParamTypeAnnotation>>;
|
|
9
|
-
export declare function translateSpecArgs(params: ReadonlyArray<NativeModuleParamShape>, aliases: AliasMap, baseAliasName: string): string[];
|
|
10
|
-
export declare function translateArgs(params: ReadonlyArray<NativeModuleParamShape>, aliases: AliasMap, baseAliasName: string): string[];
|
|
10
|
+
export declare function translateSpecArgs(params: ReadonlyArray<NativeModuleParamShape>, aliases: AliasMap, baseAliasName: string, options: CppCodegenOptions): string[];
|
|
11
|
+
export declare function translateArgs(params: ReadonlyArray<NativeModuleParamShape>, aliases: AliasMap, baseAliasName: string, options: CppCodegenOptions): string[];
|
|
11
12
|
export {};
|
|
@@ -17,11 +17,11 @@ function decorateType(type, target) {
|
|
|
17
17
|
return type;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
function translateUnionReturnType(type, target) {
|
|
20
|
+
function translateUnionReturnType(type, target, options) {
|
|
21
21
|
const memberType = type.memberType;
|
|
22
22
|
switch (type.memberType) {
|
|
23
23
|
case 'StringTypeAnnotation':
|
|
24
|
-
return
|
|
24
|
+
return options.cppStringType;
|
|
25
25
|
case 'NumberTypeAnnotation':
|
|
26
26
|
return 'double';
|
|
27
27
|
case 'ObjectTypeAnnotation':
|
|
@@ -30,43 +30,43 @@ function translateUnionReturnType(type, target) {
|
|
|
30
30
|
throw new Error(`Unknown enum/union member type in translateReturnType: ${memberType}`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
function translateFunction(param, aliases, baseAliasName, target) {
|
|
33
|
+
function translateFunction(param, aliases, baseAliasName, target, options) {
|
|
34
34
|
// TODO: type.returnTypeAnnotation
|
|
35
35
|
switch (target) {
|
|
36
36
|
case 'spec':
|
|
37
37
|
return `Callback<${param.params
|
|
38
|
-
.map((p) => translateSpecFunctionParam(p, aliases, `${baseAliasName}_${p.name}
|
|
38
|
+
.map((p) => translateSpecFunctionParam(p, aliases, `${baseAliasName}_${p.name}`, options))
|
|
39
39
|
.join(', ')}>`;
|
|
40
40
|
case 'template':
|
|
41
41
|
return `std::function<void(${param.params
|
|
42
|
-
.map((p) => translateCallbackParam(p, aliases, `${baseAliasName}_${p.name}
|
|
42
|
+
.map((p) => translateCallbackParam(p, aliases, `${baseAliasName}_${p.name}`, options))
|
|
43
43
|
.join(', ')})>`;
|
|
44
44
|
default:
|
|
45
45
|
return `std::function<void(${param.params
|
|
46
|
-
.map((p) => translateCallbackParam(p, aliases, `${baseAliasName}_${p.name}
|
|
46
|
+
.map((p) => translateCallbackParam(p, aliases, `${baseAliasName}_${p.name}`, options))
|
|
47
47
|
.join(', ')})> const &`;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
function translateArray(param, aliases, baseAliasName, target) {
|
|
50
|
+
function translateArray(param, aliases, baseAliasName, target, options) {
|
|
51
51
|
if (param.elementType) {
|
|
52
52
|
switch (target) {
|
|
53
53
|
case 'spec':
|
|
54
54
|
case 'template':
|
|
55
|
-
return `std::vector<${translateNullableParamType(param.elementType, aliases, `${baseAliasName}_element`, 'template', 'template')}>`;
|
|
55
|
+
return `std::vector<${translateNullableParamType(param.elementType, aliases, `${baseAliasName}_element`, 'template', 'template', options)}>`;
|
|
56
56
|
default:
|
|
57
|
-
return `std::vector<${translateNullableParamType(param.elementType, aliases, `${baseAliasName}_element`, 'template', 'template')}> const &`;
|
|
57
|
+
return `std::vector<${translateNullableParamType(param.elementType, aliases, `${baseAliasName}_element`, 'template', 'template', options)}> const &`;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
else {
|
|
61
61
|
return decorateType('::React::JSValueArray', target);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
function translateParam(param, aliases, baseAliasName, target) {
|
|
64
|
+
function translateParam(param, aliases, baseAliasName, target, options) {
|
|
65
65
|
// avoid: Property 'type' does not exist on type 'never'
|
|
66
66
|
const paramType = param.type;
|
|
67
67
|
switch (param.type) {
|
|
68
68
|
case 'StringTypeAnnotation':
|
|
69
|
-
return
|
|
69
|
+
return options.cppStringType;
|
|
70
70
|
case 'NumberTypeAnnotation':
|
|
71
71
|
case 'FloatTypeAnnotation':
|
|
72
72
|
case 'DoubleTypeAnnotation':
|
|
@@ -76,9 +76,9 @@ function translateParam(param, aliases, baseAliasName, target) {
|
|
|
76
76
|
case 'BooleanTypeAnnotation':
|
|
77
77
|
return 'bool';
|
|
78
78
|
case 'FunctionTypeAnnotation':
|
|
79
|
-
return translateFunction(param, aliases, baseAliasName, target);
|
|
79
|
+
return translateFunction(param, aliases, baseAliasName, target, options);
|
|
80
80
|
case 'ArrayTypeAnnotation':
|
|
81
|
-
return translateArray(param, aliases, baseAliasName, target);
|
|
81
|
+
return translateArray(param, aliases, baseAliasName, target, options);
|
|
82
82
|
case 'GenericObjectTypeAnnotation':
|
|
83
83
|
return decorateType('::React::JSValue', target);
|
|
84
84
|
case 'ObjectTypeAnnotation':
|
|
@@ -96,38 +96,38 @@ function translateParam(param, aliases, baseAliasName, target) {
|
|
|
96
96
|
return decorateType((0, AliasManaging_1.getAliasCppName)(param.name), target);
|
|
97
97
|
case 'EnumDeclaration':
|
|
98
98
|
case 'UnionTypeAnnotation':
|
|
99
|
-
return translateUnionReturnType(param, target);
|
|
99
|
+
return translateUnionReturnType(param, target, options);
|
|
100
100
|
default:
|
|
101
101
|
throw new Error(`Unhandled type in translateParam: ${paramType}`);
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
function translateNullableParamType(paramType, aliases, baseAliasName, nullableTarget, target) {
|
|
104
|
+
function translateNullableParamType(paramType, aliases, baseAliasName, nullableTarget, target, options) {
|
|
105
105
|
switch (paramType.type) {
|
|
106
106
|
case 'NullableTypeAnnotation':
|
|
107
|
-
return `std::optional<${translateParam(paramType.typeAnnotation, aliases, baseAliasName, nullableTarget)}>`;
|
|
107
|
+
return `std::optional<${translateParam(paramType.typeAnnotation, aliases, baseAliasName, nullableTarget, options)}>`;
|
|
108
108
|
default:
|
|
109
|
-
return translateParam(paramType, aliases, baseAliasName, target);
|
|
109
|
+
return translateParam(paramType, aliases, baseAliasName, target, options);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
-
function translateSpecFunctionParam(param, aliases, baseAliasName) {
|
|
113
|
-
return translateNullableParamType(param.typeAnnotation, aliases, baseAliasName, 'spec', 'spec');
|
|
112
|
+
function translateSpecFunctionParam(param, aliases, baseAliasName, options) {
|
|
113
|
+
return translateNullableParamType(param.typeAnnotation, aliases, baseAliasName, 'spec', 'spec', options);
|
|
114
114
|
}
|
|
115
|
-
function translateCallbackParam(param, aliases, baseAliasName) {
|
|
116
|
-
return translateNullableParamType(param.typeAnnotation, aliases, baseAliasName, 'template', 'callback-arg');
|
|
115
|
+
function translateCallbackParam(param, aliases, baseAliasName, options) {
|
|
116
|
+
return translateNullableParamType(param.typeAnnotation, aliases, baseAliasName, 'template', 'callback-arg', options);
|
|
117
117
|
}
|
|
118
|
-
function translateFunctionParam(param, aliases, baseAliasName) {
|
|
119
|
-
return translateNullableParamType(param.typeAnnotation, aliases, baseAliasName, 'template', 'method-arg');
|
|
118
|
+
function translateFunctionParam(param, aliases, baseAliasName, options) {
|
|
119
|
+
return translateNullableParamType(param.typeAnnotation, aliases, baseAliasName, 'template', 'method-arg', options);
|
|
120
120
|
}
|
|
121
|
-
function translateSpecArgs(params, aliases, baseAliasName) {
|
|
121
|
+
function translateSpecArgs(params, aliases, baseAliasName, options) {
|
|
122
122
|
return params.map(param => {
|
|
123
|
-
const translatedParam = translateSpecFunctionParam(param, aliases, `${baseAliasName}_${param.name}
|
|
123
|
+
const translatedParam = translateSpecFunctionParam(param, aliases, `${baseAliasName}_${param.name}`, options);
|
|
124
124
|
return `${translatedParam}`;
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
exports.translateSpecArgs = translateSpecArgs;
|
|
128
|
-
function translateArgs(params, aliases, baseAliasName) {
|
|
128
|
+
function translateArgs(params, aliases, baseAliasName, options) {
|
|
129
129
|
return params.map(param => {
|
|
130
|
-
const translatedParam = translateFunctionParam(param, aliases, `${baseAliasName}_${param.name}
|
|
130
|
+
const translatedParam = translateFunctionParam(param, aliases, `${baseAliasName}_${param.name}`, options);
|
|
131
131
|
return `${translatedParam} ${param.name}`;
|
|
132
132
|
});
|
|
133
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParamTypes.js","sourceRoot":"","sources":["../../src/generators/ParamTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n NamedShape,\n NativeModuleArrayTypeAnnotation,\n NativeModuleBaseTypeAnnotation,\n NativeModuleEnumDeclaration,\n NativeModuleFunctionTypeAnnotation,\n NativeModuleParamTypeAnnotation,\n NativeModuleUnionTypeAnnotation,\n Nullable,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {\n AliasMap,\n getAliasCppName,\n getAnonymousAliasCppName,\n} from './AliasManaging';\n\ntype NativeModuleParamShape = NamedShape<\n Nullable<NativeModuleParamTypeAnnotation>\n>;\n\ntype ParamTarget = 'spec' | 'template' | 'callback-arg' | 'method-arg';\n\nfunction decorateType(type: string, target: ParamTarget): string {\n switch (target) {\n case 'method-arg':\n return `${type} &&`;\n case 'callback-arg':\n return `${type} const &`;\n default:\n return type;\n }\n}\n\nfunction translateUnionReturnType(\n type: NativeModuleEnumDeclaration | NativeModuleUnionTypeAnnotation,\n target: ParamTarget,\n): string {\n const memberType = type.memberType;\n switch (type.memberType) {\n case 'StringTypeAnnotation':\n return 'std::string';\n case 'NumberTypeAnnotation':\n return 'double';\n case 'ObjectTypeAnnotation':\n return decorateType('::React::JSValue', target);\n default:\n throw new Error(\n `Unknown enum/union member type in translateReturnType: ${memberType}`,\n );\n }\n}\n\nfunction translateFunction(\n param: NativeModuleFunctionTypeAnnotation,\n aliases: AliasMap,\n baseAliasName: string,\n target: ParamTarget,\n): string {\n // TODO: type.returnTypeAnnotation\n switch (target) {\n case 'spec':\n return `Callback<${param.params\n .map((p: NativeModuleParamShape) =>\n translateSpecFunctionParam(p, aliases, `${baseAliasName}_${p.name}`),\n )\n .join(', ')}>`;\n case 'template':\n return `std::function<void(${param.params\n .map((p: NativeModuleParamShape) =>\n translateCallbackParam(p, aliases, `${baseAliasName}_${p.name}`),\n )\n .join(', ')})>`;\n default:\n return `std::function<void(${param.params\n .map((p: NativeModuleParamShape) =>\n translateCallbackParam(p, aliases, `${baseAliasName}_${p.name}`),\n )\n .join(', ')})> const &`;\n }\n}\n\nfunction translateArray(\n param: NativeModuleArrayTypeAnnotation<\n Nullable<NativeModuleBaseTypeAnnotation>\n >,\n aliases: AliasMap,\n baseAliasName: string,\n target: ParamTarget,\n): string {\n if (param.elementType) {\n switch (target) {\n case 'spec':\n case 'template':\n return `std::vector<${translateNullableParamType(\n param.elementType,\n aliases,\n `${baseAliasName}_element`,\n 'template',\n 'template',\n )}>`;\n default:\n return `std::vector<${translateNullableParamType(\n param.elementType,\n aliases,\n `${baseAliasName}_element`,\n 'template',\n 'template',\n )}> const &`;\n }\n } else {\n return decorateType('::React::JSValueArray', target);\n }\n}\n\nfunction translateParam(\n param: NativeModuleParamTypeAnnotation,\n aliases: AliasMap,\n baseAliasName: string,\n target: ParamTarget,\n): string {\n // avoid: Property 'type' does not exist on type 'never'\n const paramType = param.type;\n switch (param.type) {\n case 'StringTypeAnnotation':\n return 'std::string';\n case 'NumberTypeAnnotation':\n case 'FloatTypeAnnotation':\n case 'DoubleTypeAnnotation':\n return 'double';\n case 'Int32TypeAnnotation':\n return 'int';\n case 'BooleanTypeAnnotation':\n return 'bool';\n case 'FunctionTypeAnnotation':\n return translateFunction(param, aliases, baseAliasName, target);\n case 'ArrayTypeAnnotation':\n return translateArray(param, aliases, baseAliasName, target);\n case 'GenericObjectTypeAnnotation':\n return decorateType('::React::JSValue', target);\n case 'ObjectTypeAnnotation':\n return decorateType(\n getAnonymousAliasCppName(aliases, baseAliasName, param),\n target,\n );\n case 'ReservedTypeAnnotation': {\n // avoid: Property 'name' does not exist on type 'never'\n const name = param.name;\n // (#6597)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (name !== 'RootTag')\n throw new Error(`Unknown reserved function: ${name} in translateParam`);\n return 'double';\n }\n case 'TypeAliasTypeAnnotation':\n return decorateType(getAliasCppName(param.name), target);\n case 'EnumDeclaration':\n case 'UnionTypeAnnotation':\n return translateUnionReturnType(param, target);\n default:\n throw new Error(`Unhandled type in translateParam: ${paramType}`);\n }\n}\n\nfunction translateNullableParamType(\n paramType: Nullable<NativeModuleParamTypeAnnotation>,\n aliases: AliasMap,\n baseAliasName: string,\n nullableTarget: ParamTarget,\n target: ParamTarget,\n): string {\n switch (paramType.type) {\n case 'NullableTypeAnnotation':\n return `std::optional<${translateParam(\n paramType.typeAnnotation,\n aliases,\n baseAliasName,\n nullableTarget,\n )}>`;\n default:\n return translateParam(paramType, aliases, baseAliasName, target);\n }\n}\n\nfunction translateSpecFunctionParam(\n param: NativeModuleParamShape,\n aliases: AliasMap,\n baseAliasName: string,\n): string {\n return translateNullableParamType(\n param.typeAnnotation,\n aliases,\n baseAliasName,\n 'spec',\n 'spec',\n );\n}\n\nfunction translateCallbackParam(\n param: NativeModuleParamShape,\n aliases: AliasMap,\n baseAliasName: string,\n): string {\n return translateNullableParamType(\n param.typeAnnotation,\n aliases,\n baseAliasName,\n 'template',\n 'callback-arg',\n );\n}\n\nfunction translateFunctionParam(\n param: NativeModuleParamShape,\n aliases: AliasMap,\n baseAliasName: string,\n): string {\n return translateNullableParamType(\n param.typeAnnotation,\n aliases,\n baseAliasName,\n 'template',\n 'method-arg',\n );\n}\n\nexport function translateSpecArgs(\n params: ReadonlyArray<NativeModuleParamShape>,\n aliases: AliasMap,\n baseAliasName: string,\n) {\n return params.map(param => {\n const translatedParam = translateSpecFunctionParam(\n param,\n aliases,\n `${baseAliasName}_${param.name}`,\n );\n return `${translatedParam}`;\n });\n}\n\nexport function translateArgs(\n params: ReadonlyArray<NativeModuleParamShape>,\n aliases: AliasMap,\n baseAliasName: string,\n) {\n return params.map(param => {\n const translatedParam = translateFunctionParam(\n param,\n aliases,\n `${baseAliasName}_${param.name}`,\n );\n return `${translatedParam} ${param.name}`;\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ParamTypes.js","sourceRoot":"","sources":["../../src/generators/ParamTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n * @format\n */\n\n'use strict';\n\nimport type {\n NamedShape,\n NativeModuleArrayTypeAnnotation,\n NativeModuleBaseTypeAnnotation,\n NativeModuleEnumDeclaration,\n NativeModuleFunctionTypeAnnotation,\n NativeModuleParamTypeAnnotation,\n NativeModuleUnionTypeAnnotation,\n Nullable,\n} from '@react-native/codegen/lib/CodegenSchema';\nimport {\n AliasMap,\n getAliasCppName,\n getAnonymousAliasCppName,\n} from './AliasManaging';\nimport type {CppCodegenOptions} from './ObjectTypes';\n\ntype NativeModuleParamShape = NamedShape<\n Nullable<NativeModuleParamTypeAnnotation>\n>;\n\ntype ParamTarget = 'spec' | 'template' | 'callback-arg' | 'method-arg';\n\nfunction decorateType(type: string, target: ParamTarget): string {\n switch (target) {\n case 'method-arg':\n return `${type} &&`;\n case 'callback-arg':\n return `${type} const &`;\n default:\n return type;\n }\n}\n\nfunction translateUnionReturnType(\n type: NativeModuleEnumDeclaration | NativeModuleUnionTypeAnnotation,\n target: ParamTarget,\n options: CppCodegenOptions,\n): string {\n const memberType = type.memberType;\n switch (type.memberType) {\n case 'StringTypeAnnotation':\n return options.cppStringType;\n case 'NumberTypeAnnotation':\n return 'double';\n case 'ObjectTypeAnnotation':\n return decorateType('::React::JSValue', target);\n default:\n throw new Error(\n `Unknown enum/union member type in translateReturnType: ${memberType}`,\n );\n }\n}\n\nfunction translateFunction(\n param: NativeModuleFunctionTypeAnnotation,\n aliases: AliasMap,\n baseAliasName: string,\n target: ParamTarget,\n options: CppCodegenOptions,\n): string {\n // TODO: type.returnTypeAnnotation\n switch (target) {\n case 'spec':\n return `Callback<${param.params\n .map((p: NativeModuleParamShape) =>\n translateSpecFunctionParam(\n p,\n aliases,\n `${baseAliasName}_${p.name}`,\n options,\n ),\n )\n .join(', ')}>`;\n case 'template':\n return `std::function<void(${param.params\n .map((p: NativeModuleParamShape) =>\n translateCallbackParam(\n p,\n aliases,\n `${baseAliasName}_${p.name}`,\n options,\n ),\n )\n .join(', ')})>`;\n default:\n return `std::function<void(${param.params\n .map((p: NativeModuleParamShape) =>\n translateCallbackParam(\n p,\n aliases,\n `${baseAliasName}_${p.name}`,\n options,\n ),\n )\n .join(', ')})> const &`;\n }\n}\n\nfunction translateArray(\n param: NativeModuleArrayTypeAnnotation<\n Nullable<NativeModuleBaseTypeAnnotation>\n >,\n aliases: AliasMap,\n baseAliasName: string,\n target: ParamTarget,\n options: CppCodegenOptions,\n): string {\n if (param.elementType) {\n switch (target) {\n case 'spec':\n case 'template':\n return `std::vector<${translateNullableParamType(\n param.elementType,\n aliases,\n `${baseAliasName}_element`,\n 'template',\n 'template',\n options,\n )}>`;\n default:\n return `std::vector<${translateNullableParamType(\n param.elementType,\n aliases,\n `${baseAliasName}_element`,\n 'template',\n 'template',\n options,\n )}> const &`;\n }\n } else {\n return decorateType('::React::JSValueArray', target);\n }\n}\n\nfunction translateParam(\n param: NativeModuleParamTypeAnnotation,\n aliases: AliasMap,\n baseAliasName: string,\n target: ParamTarget,\n options: CppCodegenOptions,\n): string {\n // avoid: Property 'type' does not exist on type 'never'\n const paramType = param.type;\n switch (param.type) {\n case 'StringTypeAnnotation':\n return options.cppStringType;\n case 'NumberTypeAnnotation':\n case 'FloatTypeAnnotation':\n case 'DoubleTypeAnnotation':\n return 'double';\n case 'Int32TypeAnnotation':\n return 'int';\n case 'BooleanTypeAnnotation':\n return 'bool';\n case 'FunctionTypeAnnotation':\n return translateFunction(param, aliases, baseAliasName, target, options);\n case 'ArrayTypeAnnotation':\n return translateArray(param, aliases, baseAliasName, target, options);\n case 'GenericObjectTypeAnnotation':\n return decorateType('::React::JSValue', target);\n case 'ObjectTypeAnnotation':\n return decorateType(\n getAnonymousAliasCppName(aliases, baseAliasName, param),\n target,\n );\n case 'ReservedTypeAnnotation': {\n // avoid: Property 'name' does not exist on type 'never'\n const name = param.name;\n // (#6597)\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (name !== 'RootTag')\n throw new Error(`Unknown reserved function: ${name} in translateParam`);\n return 'double';\n }\n case 'TypeAliasTypeAnnotation':\n return decorateType(getAliasCppName(param.name), target);\n case 'EnumDeclaration':\n case 'UnionTypeAnnotation':\n return translateUnionReturnType(param, target, options);\n default:\n throw new Error(`Unhandled type in translateParam: ${paramType}`);\n }\n}\n\nfunction translateNullableParamType(\n paramType: Nullable<NativeModuleParamTypeAnnotation>,\n aliases: AliasMap,\n baseAliasName: string,\n nullableTarget: ParamTarget,\n target: ParamTarget,\n options: CppCodegenOptions,\n): string {\n switch (paramType.type) {\n case 'NullableTypeAnnotation':\n return `std::optional<${translateParam(\n paramType.typeAnnotation,\n aliases,\n baseAliasName,\n nullableTarget,\n options,\n )}>`;\n default:\n return translateParam(paramType, aliases, baseAliasName, target, options);\n }\n}\n\nfunction translateSpecFunctionParam(\n param: NativeModuleParamShape,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n): string {\n return translateNullableParamType(\n param.typeAnnotation,\n aliases,\n baseAliasName,\n 'spec',\n 'spec',\n options,\n );\n}\n\nfunction translateCallbackParam(\n param: NativeModuleParamShape,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n): string {\n return translateNullableParamType(\n param.typeAnnotation,\n aliases,\n baseAliasName,\n 'template',\n 'callback-arg',\n options,\n );\n}\n\nfunction translateFunctionParam(\n param: NativeModuleParamShape,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n): string {\n return translateNullableParamType(\n param.typeAnnotation,\n aliases,\n baseAliasName,\n 'template',\n 'method-arg',\n options,\n );\n}\n\nexport function translateSpecArgs(\n params: ReadonlyArray<NativeModuleParamShape>,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n) {\n return params.map(param => {\n const translatedParam = translateSpecFunctionParam(\n param,\n aliases,\n `${baseAliasName}_${param.name}`,\n options,\n );\n return `${translatedParam}`;\n });\n}\n\nexport function translateArgs(\n params: ReadonlyArray<NativeModuleParamShape>,\n aliases: AliasMap,\n baseAliasName: string,\n options: CppCodegenOptions,\n) {\n return params.map(param => {\n const translatedParam = translateFunctionParam(\n param,\n aliases,\n `${baseAliasName}_${param.name}`,\n options,\n );\n return `${translatedParam} ${param.name}`;\n });\n}\n"]}
|
|
@@ -5,5 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { NativeModuleReturnTypeAnnotation, Nullable } from '@react-native/codegen/lib/CodegenSchema';
|
|
7
7
|
import { AliasMap } from './AliasManaging';
|
|
8
|
-
|
|
9
|
-
export declare function
|
|
8
|
+
import { CppCodegenOptions } from './ObjectTypes';
|
|
9
|
+
export declare function translateSpecReturnType(type: Nullable<NativeModuleReturnTypeAnnotation>, aliases: AliasMap, baseAliasName: string, options: CppCodegenOptions): string;
|
|
10
|
+
export declare function translateImplReturnType(type: Nullable<NativeModuleReturnTypeAnnotation>, aliases: AliasMap, baseAliasName: string, options: CppCodegenOptions): string;
|
|
@@ -7,23 +7,23 @@
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.translateImplReturnType = exports.translateSpecReturnType = void 0;
|
|
9
9
|
const ObjectTypes_1 = require("./ObjectTypes");
|
|
10
|
-
function translateReturnType(type, aliases, baseAliasName) {
|
|
10
|
+
function translateReturnType(type, aliases, baseAliasName, options) {
|
|
11
11
|
switch (type.type) {
|
|
12
12
|
case 'VoidTypeAnnotation':
|
|
13
13
|
case 'PromiseTypeAnnotation':
|
|
14
14
|
return 'void';
|
|
15
15
|
case 'NullableTypeAnnotation':
|
|
16
|
-
return `std::optional<${translateReturnType(type.typeAnnotation, aliases, baseAliasName)}>`;
|
|
16
|
+
return `std::optional<${translateReturnType(type.typeAnnotation, aliases, baseAliasName, options)}>`;
|
|
17
17
|
default:
|
|
18
|
-
return (0, ObjectTypes_1.translateFieldOrReturnType)(type, aliases, baseAliasName, 'translateReturnType');
|
|
18
|
+
return (0, ObjectTypes_1.translateFieldOrReturnType)(type, aliases, baseAliasName, 'translateReturnType', options);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
function translateSpecReturnType(type, aliases, baseAliasName) {
|
|
22
|
-
return translateReturnType(type, aliases, `${baseAliasName}_returnType
|
|
21
|
+
function translateSpecReturnType(type, aliases, baseAliasName, options) {
|
|
22
|
+
return translateReturnType(type, aliases, `${baseAliasName}_returnType`, options);
|
|
23
23
|
}
|
|
24
24
|
exports.translateSpecReturnType = translateSpecReturnType;
|
|
25
|
-
function translateImplReturnType(type, aliases, baseAliasName) {
|
|
26
|
-
return translateReturnType(type, aliases, `${baseAliasName}_returnType
|
|
25
|
+
function translateImplReturnType(type, aliases, baseAliasName, options) {
|
|
26
|
+
return translateReturnType(type, aliases, `${baseAliasName}_returnType`, options);
|
|
27
27
|
}
|
|
28
28
|
exports.translateImplReturnType = translateImplReturnType;
|
|
29
29
|
//# sourceMappingURL=ReturnTypes.js.map
|