Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/react-native-codegen/src/CodegenSchema.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ export type CommandParamTypeAnnotation =

export interface ReservedTypeAnnotation {
readonly type: 'ReservedTypeAnnotation';
readonly name: 'RootTag'; // Union with more custom types.
readonly name: 'RootTag' | 'ArrayBuffer' | 'Uint8Array'; // Union with more custom types.
}

/**
Expand Down
2 changes: 1 addition & 1 deletion packages/react-native-codegen/src/CodegenSchema.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ export type CommandParamTypeAnnotation =

export type ReservedTypeAnnotation = Readonly<{
type: 'ReservedTypeAnnotation',
name: 'RootTag', // Union with more custom types.
name: 'RootTag' | 'ArrayBuffer' | 'Uint8Array', // Union with more custom types.
}>;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,11 @@ function getObjCParamType(param: Param): string {
switch (typeAnnotation.name) {
case 'RootTag':
return 'double';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Receieved invalid type: ${typeAnnotation.name}`);
Expand Down Expand Up @@ -187,6 +192,11 @@ function getObjCExpectedKindParamType(param: Param): string {
switch (typeAnnotation.name) {
case 'RootTag':
return '[NSNumber class]';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Receieved invalid type: ${typeAnnotation.name}`);
Expand Down Expand Up @@ -217,6 +227,11 @@ function getReadableExpectedKindParamType(param: Param): string {
switch (typeAnnotation.name) {
case 'RootTag':
return 'double';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Receieved invalid type: ${typeAnnotation.name}`);
Expand Down Expand Up @@ -250,6 +265,11 @@ function getObjCRightHandAssignmentParamType(
switch (typeAnnotation.name) {
case 'RootTag':
return `[(NSNumber *)arg${index} doubleValue]`;
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Receieved invalid type: ${typeAnnotation.name}`);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,11 @@ function getCommandArgJavaType(
switch (typeAnnotation.name) {
case 'RootTag':
return `args.getDouble(${index})`;
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Receieved invalid type: ${typeAnnotation.name}`);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,11 @@ function getCommandArgJavaType(param: NamedShape<CommandParamTypeAnnotation>) {
switch (typeAnnotation.name) {
case 'RootTag':
return 'double';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Receieved invalid type: ${typeAnnotation.name}`);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ function serializeArg(
switch (realTypeAnnotation.name) {
case 'RootTag':
return wrap(val => `${val}.asNumber()`);
case 'ArrayBuffer':
return wrap(val => `${val}.asObject(rt).getArrayBuffer(rt)`);
case 'Uint8Array':
return wrap(val => `${val}.asObject(rt)`);
default:
(realTypeAnnotation.name: empty);
throw new Error(
Expand Down Expand Up @@ -248,6 +252,10 @@ function translatePrimitiveJSTypeToCpp(
switch (realTypeAnnotation.name) {
case 'RootTag':
return wrapOptional('double', isRequired);
case 'ArrayBuffer':
return wrapOptional('jsi::ArrayBuffer', isRequired);
case 'Uint8Array':
return wrapOptional('jsi::Object', isRequired);
default:
(realTypeAnnotation.name: empty);
throw new Error(createErrorMessage(realTypeAnnotation.name));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,9 @@ function translateFunctionParamToJavaType(
switch (realTypeAnnotation.name) {
case 'RootTag':
return wrapOptional('double', isRequired);
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(createErrorMessage(realTypeAnnotation.name));
default:
(realTypeAnnotation.name: empty);
throw new Error(createErrorMessage(realTypeAnnotation.name));
Expand Down Expand Up @@ -301,6 +304,9 @@ function translateFunctionReturnTypeToJavaType(
switch (realTypeAnnotation.name) {
case 'RootTag':
return wrapOptional('double', isRequired);
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(createErrorMessage(realTypeAnnotation.name));
default:
(realTypeAnnotation.name: empty);
throw new Error(createErrorMessage(realTypeAnnotation.name));
Expand Down Expand Up @@ -387,6 +393,9 @@ function getFalsyReturnStatementFromReturnType(
switch (realTypeAnnotation.name) {
case 'RootTag':
return 'return 0.0;';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(createErrorMessage(realTypeAnnotation.name));
default:
(realTypeAnnotation.name: empty);
throw new Error(createErrorMessage(realTypeAnnotation.name));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,11 @@ function translateReturnTypeToKind(
switch (realTypeAnnotation.name) {
case 'RootTag':
return 'NumberKind';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${realTypeAnnotation.name}.`,
);
default:
(realTypeAnnotation.name: empty);
throw new Error(
Expand Down Expand Up @@ -245,6 +250,11 @@ function translateParamTypeToJniType(
switch (realTypeAnnotation.name) {
case 'RootTag':
return !isRequired ? 'Ljava/lang/Double;' : 'D';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${realTypeAnnotation.name}.`,
);
default:
(realTypeAnnotation.name: empty);
throw new Error(
Expand Down Expand Up @@ -327,6 +337,11 @@ function translateReturnTypeToJniType(
switch (realTypeAnnotation.name) {
case 'RootTag':
return nullable ? 'Ljava/lang/Double;' : 'D';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${realTypeAnnotation.name}.`,
);
default:
(realTypeAnnotation.name: empty);
throw new Error(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,11 @@ function toObjCType(
switch (typeAnnotation.name) {
case 'RootTag':
return wrapCxxOptional('double', isRequired);
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
Expand Down Expand Up @@ -177,6 +182,11 @@ function toObjCValue(
switch (typeAnnotation.name) {
case 'RootTag':
return wrapPrimitive('double');
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@ function toObjCType(
switch (typeAnnotation.name) {
case 'RootTag':
return wrapCxxOptional('double', isRequired);
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(`Unknown prop type, found: ${typeAnnotation.name}"`);
Expand Down Expand Up @@ -164,6 +169,11 @@ function toObjCValue(
switch (typeAnnotation.name) {
case 'RootTag':
return RCTBridgingTo('Double');
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,11 @@ function getParamObjCType(
switch (structTypeAnnotation.name) {
case 'RootTag':
return notStruct(isRequired ? 'double' : 'NSNumber *');
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${structTypeAnnotation.name}.`,
);
default:
(structTypeAnnotation.name: empty);
throw new Error(
Expand Down Expand Up @@ -329,6 +334,11 @@ function getReturnObjCType(
switch (typeAnnotation.name) {
case 'RootTag':
return wrapOptional('NSNumber *', isRequired);
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(
Expand Down Expand Up @@ -412,7 +422,20 @@ function getReturnJSType(
case 'ArrayTypeAnnotation':
return 'ArrayKind';
case 'ReservedTypeAnnotation':
return 'NumberKind';
switch (typeAnnotation.name) {
case 'RootTag':
return 'NumberKind';
case 'ArrayBuffer':
case 'Uint8Array':
throw new Error(
`ArrayBuffer and Uint8Array are only supported in cxx-only modules. Got ${typeAnnotation.name}.`,
);
default:
(typeAnnotation.name: empty);
throw new Error(
`Unsupported return type for ${methodName}. Found: ${typeAnnotation.name}`,
);
}
case 'StringTypeAnnotation':
return 'StringKind';
case 'StringLiteralTypeAnnotation':
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2629,6 +2629,48 @@ const CXX_ONLY_NATIVE_MODULES: SchemaType = {
],
},
},
{
name: 'getArrayBuffer',
optional: false,
typeAnnotation: {
type: 'FunctionTypeAnnotation',
returnTypeAnnotation: {
type: 'ReservedTypeAnnotation',
name: 'ArrayBuffer',
},
params: [
{
name: 'input',
optional: false,
typeAnnotation: {
type: 'ReservedTypeAnnotation',
name: 'ArrayBuffer',
},
},
],
},
},
{
name: 'getUint8Array',
optional: false,
typeAnnotation: {
type: 'FunctionTypeAnnotation',
returnTypeAnnotation: {
type: 'ReservedTypeAnnotation',
name: 'Uint8Array',
},
params: [
{
name: 'input',
optional: false,
typeAnnotation: {
type: 'ReservedTypeAnnotation',
name: 'Uint8Array',
},
},
],
},
},
],
},
moduleName: 'SampleTurboModuleCxx',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,8 @@ protected:
methodMap_[\\"getObjectThrows\\"] = MethodMetadata {.argCount = 1, .invoker = __getObjectThrows};
methodMap_[\\"voidFuncAssert\\"] = MethodMetadata {.argCount = 0, .invoker = __voidFuncAssert};
methodMap_[\\"getObjectAssert\\"] = MethodMetadata {.argCount = 1, .invoker = __getObjectAssert};
methodMap_[\\"getArrayBuffer\\"] = MethodMetadata {.argCount = 1, .invoker = __getArrayBuffer};
methodMap_[\\"getUint8Array\\"] = MethodMetadata {.argCount = 1, .invoker = __getUint8Array};
}

private:
Expand Down Expand Up @@ -847,6 +849,22 @@ private:
return bridging::callFromJs<jsi::Object>(rt, &T::getObjectAssert, static_cast<NativeSampleTurboModuleCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule),
count <= 0 ? throw jsi::JSError(rt, \\"Expected argument in position 0 to be passed\\") : args[0].asObject(rt));
}

static jsi::Value __getArrayBuffer(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_assert(
bridging::getParameterCount(&T::getArrayBuffer) == 2,
\\"Expected getArrayBuffer(...) to have 2 parameters\\");
return bridging::callFromJs<jsi::ArrayBuffer>(rt, &T::getArrayBuffer, static_cast<NativeSampleTurboModuleCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule),
count <= 0 ? throw jsi::JSError(rt, \\"Expected argument in position 0 to be passed\\") : args[0].asObject(rt).getArrayBuffer(rt));
}

static jsi::Value __getUint8Array(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
static_assert(
bridging::getParameterCount(&T::getUint8Array) == 2,
\\"Expected getUint8Array(...) to have 2 parameters\\");
return bridging::callFromJs<jsi::Object>(rt, &T::getUint8Array, static_cast<NativeSampleTurboModuleCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule),
count <= 0 ? throw jsi::JSError(rt, \\"Expected argument in position 0 to be passed\\") : args[0].asObject(rt));
}
};

} // namespace facebook::react
Expand Down
Loading
Loading