diff --git a/native/schema/CommUtilsModuleSchema.js b/native/schema/CommUtilsModuleSchema.js new file mode 100644 --- /dev/null +++ b/native/schema/CommUtilsModuleSchema.js @@ -0,0 +1,26 @@ +// @flow + +'use strict'; + +import { TurboModuleRegistry } from 'react-native'; +import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport.js'; + +// codegen doesn't understand ArrayBuffers, so we need to map them to Objects +type JSIArrayBuffer = Object; +interface Spec extends TurboModule { + // filesystem utils + +writeBufferToFile: (path: string, data: JSIArrayBuffer) => Promise; + +readBufferFromFile: (path: string) => Promise; + +base64EncodeBuffer: (data: JSIArrayBuffer) => string; +} + +// for public interface, we use the correct types +export interface UtilsModuleSpec { + +writeBufferToFile: (path: string, data: ArrayBuffer) => Promise; + +readBufferFromFile: (path: string) => Promise; + +base64EncodeBuffer: (data: ArrayBuffer) => string; +} + +export default (TurboModuleRegistry.getEnforcing( + 'CommUtilsTurboModule', +): Spec);