diff --git a/harmony/blobUtil.har b/harmony/blobUtil.har index fdd9a26e..0d69c59d 100644 Binary files a/harmony/blobUtil.har and b/harmony/blobUtil.har differ diff --git a/harmony/blobUtil/oh-package.json5 b/harmony/blobUtil/oh-package.json5 index 0a769692..5a57056d 100644 --- a/harmony/blobUtil/oh-package.json5 +++ b/harmony/blobUtil/oh-package.json5 @@ -1,6 +1,6 @@ { "name": "@react-native-oh-tpl/react-native-blob-util", - "version": "0.19.6-0.0.2", + "version": "0.19.6-nc.0.0.10", "description": "Please describe the basic information.", "main": "Index.ets", "author": "", diff --git a/harmony/blobUtil/src/main/cpp/BlobUtilPackage.h b/harmony/blobUtil/src/main/cpp/BlobUtilPackage.h new file mode 100644 index 00000000..b1396a2e --- /dev/null +++ b/harmony/blobUtil/src/main/cpp/BlobUtilPackage.h @@ -0,0 +1,36 @@ +// +// Created on 2024/1/31. +// +// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found, +// please include "napi/native_api.h". + +#ifndef HARMONY_BLOBUTILPACKAGE_H +#define HARMONY_BLOBUTILPACKAGE_H + +#include "BlobUtilTurboModule.h" +#include "RNOH/Package.h" + +using namespace rnoh; +using namespace facebook; + +class NativeRNBlobUtilFactoryDelegate : public TurboModuleFactoryDelegate { +public: + SharedTurboModule createTurboModule(Context ctx, const std::string &name) const override { + if (name == "ReactNativeBlobUtil") { + return std::make_shared(ctx, name); + } + return nullptr; + }; +}; + +namespace rnoh { + class BlobUtilPackage : public Package { + public: + BlobUtilPackage(Package::Context ctx) : Package(ctx) {} + std::unique_ptr createTurboModuleFactoryDelegate() override { + return std::make_unique(); + } + }; +} // namespace rnoh + +#endif // HARMONY_BLOBUTILPACKAGE_H diff --git a/harmony/blobUtil/src/main/cpp/BlobUtilTurboModule.cpp b/harmony/blobUtil/src/main/cpp/BlobUtilTurboModule.cpp new file mode 100644 index 00000000..3254974a --- /dev/null +++ b/harmony/blobUtil/src/main/cpp/BlobUtilTurboModule.cpp @@ -0,0 +1,182 @@ +// +// Created on 2024/1/31. +// +// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found, +// please include "napi/native_api.h". + + +#include "BlobUtilTurboModule.h" +#include "RNOH/ArkTSTurboModule.h" + +using namespace rnoh; +using namespace facebook; + +static jsi::Value __hostFunction_BlobUtilTurboModule_createFile(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "createFile", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_getConstants(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "getConstants", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_createFileASCII(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "createFileASCII", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_writeFile(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "writeFile", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_stat(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "stat", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_cp(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "cp", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_writeFileArray(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "writeFileArray", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_unlink(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "unlink", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_writeStream(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "writeStream", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_mkdir(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "mkdir", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_readFile(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "readFile", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_ls(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "ls", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_exists(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "exists", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_writeArrayChunk(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "writeArrayChunk", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_writeChunk(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "writeChunk", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_lstat(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "lstat", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_mv(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "mv", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_hash(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "hash", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_slice(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "slice", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_df(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "df", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_closeStream(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "closeStream", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_readStream(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "readStream", args, count); +} + +static jsi::Value __hostFunction_BlobUtilTurboModule_fetchBlobForm(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "fetchBlobForm", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_fetchBlob(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "fetchBlob", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_pathForAppGroup(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "pathForAppGroup", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_syncPathAppGroup(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "syncPathAppGroup", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_removeSession(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "removeSession", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_cancelRequest(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "cancelRequest", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_enableProgressReport(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "enableProgressReport", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_enableUploadProgressReport(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).call(rt, "enableUploadProgressReport", args, count); +} +static jsi::Value __hostFunction_BlobUtilTurboModule_presentPreview(jsi::Runtime &rt, react::TurboModule &turboModule, + const jsi::Value *args, size_t count) { + return static_cast(turboModule).callAsync(rt, "presentPreview", args, count); +} + + +ReactNativeBlobUtil::ReactNativeBlobUtil(const ArkTSTurboModule::Context ctx, const std::string name) + : ArkTSTurboModule(ctx, name) { + methodMap_["createFile"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_createFile}; + methodMap_["getConstants"] = MethodMetadata{0, __hostFunction_BlobUtilTurboModule_getConstants}; + methodMap_["writeFile"] = MethodMetadata{5, __hostFunction_BlobUtilTurboModule_writeFile}; + methodMap_["stat"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_stat}; + methodMap_["cp"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_cp}; + methodMap_["unlink"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_unlink}; + methodMap_["mkdir"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_mkdir}; + methodMap_["createFileASCII"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_createFileASCII}; + methodMap_["writeArrayChunk"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_writeArrayChunk}; + methodMap_["writeChunk"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_writeChunk}; + methodMap_["exists"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_exists}; + methodMap_["readFile"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_readFile}; + methodMap_["lstat"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_lstat}; + methodMap_["mv"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_mv}; + methodMap_["hash"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_hash}; + methodMap_["df"] = MethodMetadata{1, __hostFunction_BlobUtilTurboModule_df}; + methodMap_["slice"] = MethodMetadata{4, __hostFunction_BlobUtilTurboModule_slice}; + methodMap_["closeStream"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_closeStream}; + methodMap_["readStream"] = MethodMetadata{5, __hostFunction_BlobUtilTurboModule_readStream}; + methodMap_["writeStream"] = MethodMetadata{4, __hostFunction_BlobUtilTurboModule_writeStream}; + methodMap_["writeFileArray"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_writeFileArray}; + methodMap_["ls"] = MethodMetadata{1, __hostFunction_BlobUtilTurboModule_ls}; + methodMap_["fetchBlobForm"] = MethodMetadata{7, __hostFunction_BlobUtilTurboModule_fetchBlobForm}; + methodMap_["fetchBlob"] = MethodMetadata{7, __hostFunction_BlobUtilTurboModule_fetchBlob}; + methodMap_["pathForAppGroup"] = MethodMetadata{1, __hostFunction_BlobUtilTurboModule_pathForAppGroup}; + methodMap_["syncPathAppGroup"] = MethodMetadata{1, __hostFunction_BlobUtilTurboModule_syncPathAppGroup}; + methodMap_["removeSession"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_removeSession}; + methodMap_["cancelRequest"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_cancelRequest}; + methodMap_["enableProgressReport"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_enableProgressReport}; + methodMap_["enableUploadProgressReport"] = MethodMetadata{3, __hostFunction_BlobUtilTurboModule_enableUploadProgressReport}; + methodMap_["presentPreview"] = MethodMetadata{2, __hostFunction_BlobUtilTurboModule_presentPreview}; + +} \ No newline at end of file diff --git a/harmony/blobUtil/src/main/cpp/BlobUtilTurboModule.h b/harmony/blobUtil/src/main/cpp/BlobUtilTurboModule.h new file mode 100644 index 00000000..05a2cdd8 --- /dev/null +++ b/harmony/blobUtil/src/main/cpp/BlobUtilTurboModule.h @@ -0,0 +1,16 @@ +// +// Created on 2024/1/31. +// +// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found, +// please include "napi/native_api.h". + +#pragma once +#include +#include "RNOH/ArkTSTurboModule.h" + +namespace rnoh { + class JSI_EXPORT ReactNativeBlobUtil : public ArkTSTurboModule { + public: + ReactNativeBlobUtil(const ArkTSTurboModule::Context ctx, const std::string name); + }; +} // namespace rnoh diff --git a/harmony/blobUtil/src/main/cpp/CMakeLists.txt b/harmony/blobUtil/src/main/cpp/CMakeLists.txt new file mode 100644 index 00000000..e9ba0f3a --- /dev/null +++ b/harmony/blobUtil/src/main/cpp/CMakeLists.txt @@ -0,0 +1,24 @@ +# the minimum version of CMake. +#cmake_minimum_required(VERSION 3.4.1) +#project(harmony) +# +#set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +# +#if(DEFINED PACKAGE_FIND_FILE) +# include(${PACKAGE_FIND_FILE}) +#endif() +# +#include_directories(${NATIVERENDER_ROOT_PATH} +# ${NATIVERENDER_ROOT_PATH}/include) +# +#add_library(application SHARED hello.cpp) +#target_link_libraries(application PUBLIC libace_napi.z.so) + +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.13) +set(CMAKE_VERBOSE_MAKEFILE on) + +file(GLOB rnoh_blob_util_SRC CONFIGURE_DEPENDS *.cpp) +add_library(rnoh_blob_util SHARED ${rnoh_blob_util_SRC}) +target_include_directories(rnoh_blob_util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(rnoh_blob_util PUBLIC rnoh) \ No newline at end of file diff --git a/harmony/blobUtil/src/main/ets/ReactNativeBlobUtil/ReactNativeBlobUtilFS.ts b/harmony/blobUtil/src/main/ets/ReactNativeBlobUtil/ReactNativeBlobUtilFS.ts index a88c4714..9c446f6e 100644 --- a/harmony/blobUtil/src/main/ets/ReactNativeBlobUtil/ReactNativeBlobUtilFS.ts +++ b/harmony/blobUtil/src/main/ets/ReactNativeBlobUtil/ReactNativeBlobUtilFS.ts @@ -350,7 +350,7 @@ export default class ReactNativeBlobUtilFS { let bytes = buffer.from(buf, 0, readLen); switch (encoding.toLowerCase()) { case "base64": - resolve(buffer.transcode(bytes, 'utf-8', 'base64')); + resolve(bytes.toString("base64")); break; case "ascii": resolve(buffer.transcode(bytes, 'utf-8', 'ascii')); diff --git a/package.json b/package.json index 698d4e64..c641911b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-oh-tpl/react-native-blob-util", - "version": "0.19.6-0.0.5", + "version": "0.19.6-nc.0.0.10", "description": "A module provides upload, download, and files access API. Supports file stream read/write for process large files.", "main": "index", "scripts": { @@ -30,12 +30,7 @@ "username": "RonRadtke" }, "harmony":{ - "alias":"react-native-blob-util", - "codegenConfig": { - "specPaths": [ - "./codegenSpecs/NativeBlobUtils.js" - ] - } + "alias":"react-native-blob-util" }, "license": "MIT", "contributors": [