react-native-nitro-unzip 0.1.0

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.
Files changed (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/android/CMakeLists.txt +16 -0
  4. package/android/build.gradle +70 -0
  5. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  6. package/android/src/main/java/com/margelo/nitro/unzip/HybridUnzip.kt +29 -0
  7. package/android/src/main/java/com/margelo/nitro/unzip/HybridUnzipTask.kt +256 -0
  8. package/android/src/main/java/com/margelo/nitro/unzip/HybridZipTask.kt +157 -0
  9. package/ios/HybridUnzip.swift +33 -0
  10. package/ios/HybridUnzipTask.swift +238 -0
  11. package/ios/HybridZipTask.swift +266 -0
  12. package/lib/commonjs/index.js +31 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/specs/Unzip.nitro.js +6 -0
  15. package/lib/commonjs/specs/Unzip.nitro.js.map +1 -0
  16. package/lib/module/index.js +27 -0
  17. package/lib/module/index.js.map +1 -0
  18. package/lib/module/package.json +1 -0
  19. package/lib/module/specs/Unzip.nitro.js +4 -0
  20. package/lib/module/specs/Unzip.nitro.js.map +1 -0
  21. package/lib/typescript/index.d.ts +24 -0
  22. package/lib/typescript/index.d.ts.map +1 -0
  23. package/lib/typescript/specs/Unzip.nitro.d.ts +170 -0
  24. package/lib/typescript/specs/Unzip.nitro.d.ts.map +1 -0
  25. package/nitro.json +26 -0
  26. package/nitrogen/generated/.gitattributes +1 -0
  27. package/nitrogen/generated/android/NitroUnzip+autolinking.cmake +85 -0
  28. package/nitrogen/generated/android/NitroUnzip+autolinking.gradle +27 -0
  29. package/nitrogen/generated/android/NitroUnzipOnLoad.cpp +71 -0
  30. package/nitrogen/generated/android/NitroUnzipOnLoad.hpp +34 -0
  31. package/nitrogen/generated/android/c++/JFunc_void_UnzipProgress.hpp +77 -0
  32. package/nitrogen/generated/android/c++/JFunc_void_ZipProgress.hpp +77 -0
  33. package/nitrogen/generated/android/c++/JHybridUnzipSpec.cpp +82 -0
  34. package/nitrogen/generated/android/c++/JHybridUnzipSpec.hpp +69 -0
  35. package/nitrogen/generated/android/c++/JHybridUnzipTaskSpec.cpp +94 -0
  36. package/nitrogen/generated/android/c++/JHybridUnzipTaskSpec.hpp +68 -0
  37. package/nitrogen/generated/android/c++/JHybridZipTaskSpec.cpp +94 -0
  38. package/nitrogen/generated/android/c++/JHybridZipTaskSpec.hpp +68 -0
  39. package/nitrogen/generated/android/c++/JUnzipProgress.hpp +73 -0
  40. package/nitrogen/generated/android/c++/JUnzipResult.hpp +73 -0
  41. package/nitrogen/generated/android/c++/JZipProgress.hpp +69 -0
  42. package/nitrogen/generated/android/c++/JZipResult.hpp +73 -0
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/Func_void_UnzipProgress.kt +80 -0
  44. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/Func_void_ZipProgress.kt +80 -0
  45. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/HybridUnzipSpec.kt +69 -0
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/HybridUnzipTaskSpec.kt +73 -0
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/HybridZipTaskSpec.kt +73 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/NitroUnzipOnLoad.kt +35 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/UnzipProgress.kt +50 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/UnzipResult.kt +50 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/ZipProgress.kt +47 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/unzip/ZipResult.kt +50 -0
  53. package/nitrogen/generated/ios/NitroUnzip+autolinking.rb +60 -0
  54. package/nitrogen/generated/ios/NitroUnzip-Swift-Cxx-Bridge.cpp +107 -0
  55. package/nitrogen/generated/ios/NitroUnzip-Swift-Cxx-Bridge.hpp +270 -0
  56. package/nitrogen/generated/ios/NitroUnzip-Swift-Cxx-Umbrella.hpp +68 -0
  57. package/nitrogen/generated/ios/NitroUnzipAutolinking.mm +49 -0
  58. package/nitrogen/generated/ios/NitroUnzipAutolinking.swift +50 -0
  59. package/nitrogen/generated/ios/c++/HybridUnzipSpecSwift.cpp +11 -0
  60. package/nitrogen/generated/ios/c++/HybridUnzipSpecSwift.hpp +112 -0
  61. package/nitrogen/generated/ios/c++/HybridUnzipTaskSpecSwift.cpp +11 -0
  62. package/nitrogen/generated/ios/c++/HybridUnzipTaskSpecSwift.hpp +104 -0
  63. package/nitrogen/generated/ios/c++/HybridZipTaskSpecSwift.cpp +11 -0
  64. package/nitrogen/generated/ios/c++/HybridZipTaskSpecSwift.hpp +104 -0
  65. package/nitrogen/generated/ios/swift/Func_void_UnzipProgress.swift +46 -0
  66. package/nitrogen/generated/ios/swift/Func_void_UnzipResult.swift +46 -0
  67. package/nitrogen/generated/ios/swift/Func_void_ZipProgress.swift +46 -0
  68. package/nitrogen/generated/ios/swift/Func_void_ZipResult.swift +46 -0
  69. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  70. package/nitrogen/generated/ios/swift/HybridUnzipSpec.swift +58 -0
  71. package/nitrogen/generated/ios/swift/HybridUnzipSpec_cxx.swift +186 -0
  72. package/nitrogen/generated/ios/swift/HybridUnzipTaskSpec.swift +57 -0
  73. package/nitrogen/generated/ios/swift/HybridUnzipTaskSpec_cxx.swift +177 -0
  74. package/nitrogen/generated/ios/swift/HybridZipTaskSpec.swift +57 -0
  75. package/nitrogen/generated/ios/swift/HybridZipTaskSpec_cxx.swift +177 -0
  76. package/nitrogen/generated/ios/swift/UnzipProgress.swift +49 -0
  77. package/nitrogen/generated/ios/swift/UnzipResult.swift +49 -0
  78. package/nitrogen/generated/ios/swift/ZipProgress.swift +44 -0
  79. package/nitrogen/generated/ios/swift/ZipResult.swift +49 -0
  80. package/nitrogen/generated/shared/c++/HybridUnzipSpec.cpp +24 -0
  81. package/nitrogen/generated/shared/c++/HybridUnzipSpec.hpp +71 -0
  82. package/nitrogen/generated/shared/c++/HybridUnzipTaskSpec.cpp +24 -0
  83. package/nitrogen/generated/shared/c++/HybridUnzipTaskSpec.hpp +71 -0
  84. package/nitrogen/generated/shared/c++/HybridZipTaskSpec.cpp +24 -0
  85. package/nitrogen/generated/shared/c++/HybridZipTaskSpec.hpp +71 -0
  86. package/nitrogen/generated/shared/c++/UnzipProgress.hpp +99 -0
  87. package/nitrogen/generated/shared/c++/UnzipResult.hpp +99 -0
  88. package/nitrogen/generated/shared/c++/ZipProgress.hpp +95 -0
  89. package/nitrogen/generated/shared/c++/ZipResult.hpp +99 -0
  90. package/package.json +165 -0
  91. package/react-native-nitro-unzip.podspec +24 -0
  92. package/src/index.ts +36 -0
  93. package/src/specs/Unzip.nitro.ts +193 -0
@@ -0,0 +1,170 @@
1
+ import type { HybridObject } from "react-native-nitro-modules";
2
+ /**
3
+ * Progress information for an active extraction.
4
+ */
5
+ export interface UnzipProgress {
6
+ /** Number of files extracted so far */
7
+ extractedFiles: number;
8
+ /** Total number of files in the archive */
9
+ totalFiles: number;
10
+ /** Extraction progress from 0.0 to 1.0 */
11
+ progress: number;
12
+ /** Current extraction speed in files per second */
13
+ speed: number;
14
+ /** Number of bytes processed so far */
15
+ processedBytes: number;
16
+ }
17
+ /**
18
+ * Result returned when an extraction completes successfully.
19
+ */
20
+ export interface UnzipResult {
21
+ /** Whether extraction completed successfully */
22
+ success: boolean;
23
+ /** Total number of files extracted */
24
+ extractedFiles: number;
25
+ /** Total extraction duration in milliseconds */
26
+ duration: number;
27
+ /** Average extraction speed in files per second */
28
+ averageSpeed: number;
29
+ /** Total bytes extracted */
30
+ totalBytes: number;
31
+ }
32
+ /**
33
+ * A single extraction operation. Each call to `Unzip.extract()` returns
34
+ * an `UnzipTask` instance that can be observed and cancelled independently.
35
+ *
36
+ * This is a proper HybridObject — a native instance you interact with
37
+ * directly, not an opaque task ID.
38
+ */
39
+ export interface UnzipTask extends HybridObject<{
40
+ ios: "swift";
41
+ android: "kotlin";
42
+ }> {
43
+ /** Unique identifier for this extraction task */
44
+ readonly taskId: string;
45
+ /**
46
+ * Register a callback to receive progress updates.
47
+ * Progress is throttled to ~1 update per second to avoid bridge overhead.
48
+ * The first file and final file always trigger a callback.
49
+ */
50
+ onProgress(callback: (progress: UnzipProgress) => void): void;
51
+ /** Cancel this extraction. Safe to call multiple times. */
52
+ cancel(): void;
53
+ /**
54
+ * Await the extraction result. Resolves when extraction completes,
55
+ * rejects if cancelled or an error occurs.
56
+ */
57
+ await(): Promise<UnzipResult>;
58
+ }
59
+ /**
60
+ * Progress information for an active zip creation.
61
+ */
62
+ export interface ZipProgress {
63
+ /** Number of files compressed so far */
64
+ compressedFiles: number;
65
+ /** Total number of files to compress */
66
+ totalFiles: number;
67
+ /** Compression progress from 0.0 to 1.0 */
68
+ progress: number;
69
+ /** Current compression speed in files per second */
70
+ speed: number;
71
+ }
72
+ /**
73
+ * Result returned when zip creation completes successfully.
74
+ */
75
+ export interface ZipResult {
76
+ /** Whether compression completed successfully */
77
+ success: boolean;
78
+ /** Total number of files compressed */
79
+ compressedFiles: number;
80
+ /** Total compression duration in milliseconds */
81
+ duration: number;
82
+ /** Average compression speed in files per second */
83
+ averageSpeed: number;
84
+ /** Total bytes written to the zip file */
85
+ totalBytes: number;
86
+ }
87
+ /**
88
+ * A single zip creation operation. Each call to `Unzip.zip()` returns
89
+ * a `ZipTask` instance that can be observed and cancelled independently.
90
+ */
91
+ export interface ZipTask extends HybridObject<{
92
+ ios: "swift";
93
+ android: "kotlin";
94
+ }> {
95
+ /** Unique identifier for this zip task */
96
+ readonly taskId: string;
97
+ /**
98
+ * Register a callback to receive progress updates.
99
+ * Progress is throttled to ~1 update per second.
100
+ */
101
+ onProgress(callback: (progress: ZipProgress) => void): void;
102
+ /** Cancel this zip creation. Safe to call multiple times. */
103
+ cancel(): void;
104
+ /**
105
+ * Await the zip result. Resolves when zip creation completes,
106
+ * rejects if cancelled or an error occurs.
107
+ */
108
+ await(): Promise<ZipResult>;
109
+ }
110
+ /**
111
+ * Factory for creating extraction and compression tasks.
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * import { getUnzip } from 'react-native-nitro-unzip'
116
+ *
117
+ * const unzip = getUnzip()
118
+ *
119
+ * // Extract
120
+ * const task = unzip.extract('/path/to/archive.zip', '/path/to/output')
121
+ * task.onProgress((p) => console.log(`${(p.progress * 100).toFixed(0)}%`))
122
+ * const result = await task.await()
123
+ *
124
+ * // Extract with password
125
+ * const pwTask = unzip.extractWithPassword('/path/to/encrypted.zip', '/output', 'secret')
126
+ * const pwResult = await pwTask.await()
127
+ *
128
+ * // Create zip
129
+ * const zipTask = unzip.zip('/path/to/folder', '/path/to/output.zip')
130
+ * const zipResult = await zipTask.await()
131
+ * ```
132
+ */
133
+ export interface Unzip extends HybridObject<{
134
+ ios: "swift";
135
+ android: "kotlin";
136
+ }> {
137
+ /**
138
+ * Start extracting a ZIP archive to the given destination directory.
139
+ * Returns an `UnzipTask` instance for progress tracking and cancellation.
140
+ *
141
+ * @param zipPath - Absolute path to the ZIP file (file:// URIs accepted)
142
+ * @param destinationPath - Absolute path to extract into (created if missing)
143
+ */
144
+ extract(zipPath: string, destinationPath: string): UnzipTask;
145
+ /**
146
+ * Extract a password-protected ZIP archive.
147
+ *
148
+ * @param zipPath - Absolute path to the ZIP file
149
+ * @param destinationPath - Absolute path to extract into
150
+ * @param password - Password for the encrypted archive
151
+ */
152
+ extractWithPassword(zipPath: string, destinationPath: string, password: string): UnzipTask;
153
+ /**
154
+ * Create a ZIP archive from a directory.
155
+ *
156
+ * @param sourcePath - Absolute path to the directory to compress
157
+ * @param destinationZipPath - Absolute path for the output ZIP file
158
+ */
159
+ zip(sourcePath: string, destinationZipPath: string): ZipTask;
160
+ /**
161
+ * Create a password-protected ZIP archive from a directory.
162
+ * Uses AES-256 encryption on Android, standard zip encryption on iOS.
163
+ *
164
+ * @param sourcePath - Absolute path to the directory to compress
165
+ * @param destinationZipPath - Absolute path for the output ZIP file
166
+ * @param password - Password to protect the archive
167
+ */
168
+ zipWithPassword(sourcePath: string, destinationZipPath: string, password: string): ZipTask;
169
+ }
170
+ //# sourceMappingURL=Unzip.nitro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unzip.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/Unzip.nitro.ts"],"names":[],"mappings":"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"}
package/nitro.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://nitro.margelo.com/nitro.schema.json",
3
+ "cxxNamespace": ["unzip"],
4
+ "ios": {
5
+ "iosModuleName": "NitroUnzip"
6
+ },
7
+ "android": {
8
+ "androidNamespace": ["unzip"],
9
+ "androidCxxLibName": "NitroUnzip"
10
+ },
11
+ "autolinking": {
12
+ "Unzip": {
13
+ "swift": "HybridUnzip",
14
+ "kotlin": "HybridUnzip"
15
+ },
16
+ "UnzipTask": {
17
+ "swift": "HybridUnzipTask",
18
+ "kotlin": "HybridUnzipTask"
19
+ },
20
+ "ZipTask": {
21
+ "swift": "HybridZipTask",
22
+ "kotlin": "HybridZipTask"
23
+ }
24
+ },
25
+ "ignorePaths": ["node_modules", "lib", "example"]
26
+ }
@@ -0,0 +1 @@
1
+ ** linguist-generated=true
@@ -0,0 +1,85 @@
1
+ #
2
+ # NitroUnzip+autolinking.cmake
3
+ # This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ # https://github.com/mrousavy/nitro
5
+ # Copyright © Marc Rousavy @ Margelo
6
+ #
7
+
8
+ # This is a CMake file that adds all files generated by Nitrogen
9
+ # to the current CMake project.
10
+ #
11
+ # To use it, add this to your CMakeLists.txt:
12
+ # ```cmake
13
+ # include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/NitroUnzip+autolinking.cmake)
14
+ # ```
15
+
16
+ # Define a flag to check if we are building properly
17
+ add_definitions(-DBUILDING_NITROUNZIP_WITH_GENERATED_CMAKE_PROJECT)
18
+
19
+ # Enable Raw Props parsing in react-native (for Nitro Views)
20
+ add_definitions(-DRN_SERIALIZABLE_STATE)
21
+
22
+ # Add all headers that were generated by Nitrogen
23
+ include_directories(
24
+ "../nitrogen/generated/shared/c++"
25
+ "../nitrogen/generated/android/c++"
26
+ "../nitrogen/generated/android/"
27
+ )
28
+
29
+ # Add all .cpp sources that were generated by Nitrogen
30
+ target_sources(
31
+ # CMake project name (Android C++ library name)
32
+ NitroUnzip PRIVATE
33
+ # Autolinking Setup
34
+ ../nitrogen/generated/android/NitroUnzipOnLoad.cpp
35
+ # Shared Nitrogen C++ sources
36
+ ../nitrogen/generated/shared/c++/HybridUnzipTaskSpec.cpp
37
+ ../nitrogen/generated/shared/c++/HybridZipTaskSpec.cpp
38
+ ../nitrogen/generated/shared/c++/HybridUnzipSpec.cpp
39
+ # Android-specific Nitrogen C++ sources
40
+ ../nitrogen/generated/android/c++/JHybridUnzipTaskSpec.cpp
41
+ ../nitrogen/generated/android/c++/JHybridZipTaskSpec.cpp
42
+ ../nitrogen/generated/android/c++/JHybridUnzipSpec.cpp
43
+ )
44
+
45
+ # From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
46
+ # Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
47
+ target_compile_definitions(
48
+ NitroUnzip PRIVATE
49
+ -DFOLLY_NO_CONFIG=1
50
+ -DFOLLY_HAVE_CLOCK_GETTIME=1
51
+ -DFOLLY_USE_LIBCPP=1
52
+ -DFOLLY_CFG_NO_COROUTINES=1
53
+ -DFOLLY_MOBILE=1
54
+ -DFOLLY_HAVE_RECVMMSG=1
55
+ -DFOLLY_HAVE_PTHREAD=1
56
+ # Once we target android-23 above, we can comment
57
+ # the following line. NDK uses GNU style stderror_r() after API 23.
58
+ -DFOLLY_HAVE_XSI_STRERROR_R=1
59
+ )
60
+
61
+ # Add all libraries required by the generated specs
62
+ find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
63
+ find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
64
+ find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library
65
+
66
+ # Link all libraries together
67
+ target_link_libraries(
68
+ NitroUnzip
69
+ fbjni::fbjni # <-- Facebook C++ JNI helpers
70
+ ReactAndroid::jsi # <-- RN: JSI
71
+ react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
72
+ )
73
+
74
+ # Link react-native (different prefab between RN 0.75 and RN 0.76)
75
+ if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
76
+ target_link_libraries(
77
+ NitroUnzip
78
+ ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
79
+ )
80
+ else()
81
+ target_link_libraries(
82
+ NitroUnzip
83
+ ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
84
+ )
85
+ endif()
@@ -0,0 +1,27 @@
1
+ ///
2
+ /// NitroUnzip+autolinking.gradle
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ /// This is a Gradle file that adds all files generated by Nitrogen
9
+ /// to the current Gradle project.
10
+ ///
11
+ /// To use it, add this to your build.gradle:
12
+ /// ```gradle
13
+ /// apply from: '../nitrogen/generated/android/NitroUnzip+autolinking.gradle'
14
+ /// ```
15
+
16
+ logger.warn("[NitroModules] 🔥 NitroUnzip is boosted by nitro!")
17
+
18
+ android {
19
+ sourceSets {
20
+ main {
21
+ java.srcDirs += [
22
+ // Nitrogen files
23
+ "${project.projectDir}/../nitrogen/generated/android/kotlin"
24
+ ]
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,71 @@
1
+ ///
2
+ /// NitroUnzipOnLoad.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #ifndef BUILDING_NITROUNZIP_WITH_GENERATED_CMAKE_PROJECT
9
+ #error NitroUnzipOnLoad.cpp is not being built with the autogenerated CMakeLists.txt project. Is a different CMakeLists.txt building this?
10
+ #endif
11
+
12
+ #include "NitroUnzipOnLoad.hpp"
13
+
14
+ #include <jni.h>
15
+ #include <fbjni/fbjni.h>
16
+ #include <NitroModules/HybridObjectRegistry.hpp>
17
+
18
+ #include "JHybridUnzipTaskSpec.hpp"
19
+ #include "JFunc_void_UnzipProgress.hpp"
20
+ #include "JHybridZipTaskSpec.hpp"
21
+ #include "JFunc_void_ZipProgress.hpp"
22
+ #include "JHybridUnzipSpec.hpp"
23
+ #include <NitroModules/DefaultConstructableObject.hpp>
24
+
25
+ namespace margelo::nitro::unzip {
26
+
27
+ int initialize(JavaVM* vm) {
28
+ return facebook::jni::initialize(vm, []() {
29
+ ::margelo::nitro::unzip::registerAllNatives();
30
+ });
31
+ }
32
+
33
+ void registerAllNatives() {
34
+ using namespace margelo::nitro;
35
+ using namespace margelo::nitro::unzip;
36
+
37
+ // Register native JNI methods
38
+ margelo::nitro::unzip::JHybridUnzipTaskSpec::registerNatives();
39
+ margelo::nitro::unzip::JFunc_void_UnzipProgress_cxx::registerNatives();
40
+ margelo::nitro::unzip::JHybridZipTaskSpec::registerNatives();
41
+ margelo::nitro::unzip::JFunc_void_ZipProgress_cxx::registerNatives();
42
+ margelo::nitro::unzip::JHybridUnzipSpec::registerNatives();
43
+
44
+ // Register Nitro Hybrid Objects
45
+ HybridObjectRegistry::registerHybridObjectConstructor(
46
+ "Unzip",
47
+ []() -> std::shared_ptr<HybridObject> {
48
+ static DefaultConstructableObject<JHybridUnzipSpec::javaobject> object("com/margelo/nitro/unzip/HybridUnzip");
49
+ auto instance = object.create();
50
+ return instance->cthis()->shared();
51
+ }
52
+ );
53
+ HybridObjectRegistry::registerHybridObjectConstructor(
54
+ "UnzipTask",
55
+ []() -> std::shared_ptr<HybridObject> {
56
+ static DefaultConstructableObject<JHybridUnzipTaskSpec::javaobject> object("com/margelo/nitro/unzip/HybridUnzipTask");
57
+ auto instance = object.create();
58
+ return instance->cthis()->shared();
59
+ }
60
+ );
61
+ HybridObjectRegistry::registerHybridObjectConstructor(
62
+ "ZipTask",
63
+ []() -> std::shared_ptr<HybridObject> {
64
+ static DefaultConstructableObject<JHybridZipTaskSpec::javaobject> object("com/margelo/nitro/unzip/HybridZipTask");
65
+ auto instance = object.create();
66
+ return instance->cthis()->shared();
67
+ }
68
+ );
69
+ }
70
+
71
+ } // namespace margelo::nitro::unzip
@@ -0,0 +1,34 @@
1
+ ///
2
+ /// NitroUnzipOnLoad.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include <jni.h>
9
+ #include <functional>
10
+ #include <NitroModules/NitroDefines.hpp>
11
+
12
+ namespace margelo::nitro::unzip {
13
+
14
+ [[deprecated("Use registerNatives() instead.")]]
15
+ int initialize(JavaVM* vm);
16
+
17
+ /**
18
+ * Register the native (C++) part of NitroUnzip, and autolinks all Hybrid Objects.
19
+ * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`),
20
+ * inside a `facebook::jni::initialize(vm, ...)` call.
21
+ * Example:
22
+ * ```cpp (cpp-adapter.cpp)
23
+ * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
24
+ * return facebook::jni::initialize(vm, []() {
25
+ * // register all NitroUnzip HybridObjects
26
+ * margelo::nitro::unzip::registerNatives();
27
+ * // any other custom registrations go here.
28
+ * });
29
+ * }
30
+ * ```
31
+ */
32
+ void registerAllNatives();
33
+
34
+ } // namespace margelo::nitro::unzip
@@ -0,0 +1,77 @@
1
+ ///
2
+ /// JFunc_void_UnzipProgress.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include "UnzipProgress.hpp"
14
+ #include <functional>
15
+ #include <NitroModules/JNICallable.hpp>
16
+ #include "JUnzipProgress.hpp"
17
+
18
+ namespace margelo::nitro::unzip {
19
+
20
+ using namespace facebook;
21
+
22
+ /**
23
+ * Represents the Java/Kotlin callback `(progress: UnzipProgress) -> Unit`.
24
+ * This can be passed around between C++ and Java/Kotlin.
25
+ */
26
+ struct JFunc_void_UnzipProgress: public jni::JavaClass<JFunc_void_UnzipProgress> {
27
+ public:
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/unzip/Func_void_UnzipProgress;";
29
+
30
+ public:
31
+ /**
32
+ * Invokes the function this `JFunc_void_UnzipProgress` instance holds through JNI.
33
+ */
34
+ void invoke(const UnzipProgress& progress) const {
35
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JUnzipProgress> /* progress */)>("invoke");
36
+ method(self(), JUnzipProgress::fromCpp(progress));
37
+ }
38
+ };
39
+
40
+ /**
41
+ * An implementation of Func_void_UnzipProgress that is backed by a C++ implementation (using `std::function<...>`)
42
+ */
43
+ class JFunc_void_UnzipProgress_cxx final: public jni::HybridClass<JFunc_void_UnzipProgress_cxx, JFunc_void_UnzipProgress> {
44
+ public:
45
+ static jni::local_ref<JFunc_void_UnzipProgress::javaobject> fromCpp(const std::function<void(const UnzipProgress& /* progress */)>& func) {
46
+ return JFunc_void_UnzipProgress_cxx::newObjectCxxArgs(func);
47
+ }
48
+
49
+ public:
50
+ /**
51
+ * Invokes the C++ `std::function<...>` this `JFunc_void_UnzipProgress_cxx` instance holds.
52
+ */
53
+ void invoke_cxx(jni::alias_ref<JUnzipProgress> progress) {
54
+ _func(progress->toCpp());
55
+ }
56
+
57
+ public:
58
+ [[nodiscard]]
59
+ inline const std::function<void(const UnzipProgress& /* progress */)>& getFunction() const {
60
+ return _func;
61
+ }
62
+
63
+ public:
64
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/unzip/Func_void_UnzipProgress_cxx;";
65
+ static void registerNatives() {
66
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_UnzipProgress_cxx::invoke_cxx)});
67
+ }
68
+
69
+ private:
70
+ explicit JFunc_void_UnzipProgress_cxx(const std::function<void(const UnzipProgress& /* progress */)>& func): _func(func) { }
71
+
72
+ private:
73
+ friend HybridBase;
74
+ std::function<void(const UnzipProgress& /* progress */)> _func;
75
+ };
76
+
77
+ } // namespace margelo::nitro::unzip
@@ -0,0 +1,77 @@
1
+ ///
2
+ /// JFunc_void_ZipProgress.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include <functional>
12
+
13
+ #include "ZipProgress.hpp"
14
+ #include <functional>
15
+ #include <NitroModules/JNICallable.hpp>
16
+ #include "JZipProgress.hpp"
17
+
18
+ namespace margelo::nitro::unzip {
19
+
20
+ using namespace facebook;
21
+
22
+ /**
23
+ * Represents the Java/Kotlin callback `(progress: ZipProgress) -> Unit`.
24
+ * This can be passed around between C++ and Java/Kotlin.
25
+ */
26
+ struct JFunc_void_ZipProgress: public jni::JavaClass<JFunc_void_ZipProgress> {
27
+ public:
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/unzip/Func_void_ZipProgress;";
29
+
30
+ public:
31
+ /**
32
+ * Invokes the function this `JFunc_void_ZipProgress` instance holds through JNI.
33
+ */
34
+ void invoke(const ZipProgress& progress) const {
35
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JZipProgress> /* progress */)>("invoke");
36
+ method(self(), JZipProgress::fromCpp(progress));
37
+ }
38
+ };
39
+
40
+ /**
41
+ * An implementation of Func_void_ZipProgress that is backed by a C++ implementation (using `std::function<...>`)
42
+ */
43
+ class JFunc_void_ZipProgress_cxx final: public jni::HybridClass<JFunc_void_ZipProgress_cxx, JFunc_void_ZipProgress> {
44
+ public:
45
+ static jni::local_ref<JFunc_void_ZipProgress::javaobject> fromCpp(const std::function<void(const ZipProgress& /* progress */)>& func) {
46
+ return JFunc_void_ZipProgress_cxx::newObjectCxxArgs(func);
47
+ }
48
+
49
+ public:
50
+ /**
51
+ * Invokes the C++ `std::function<...>` this `JFunc_void_ZipProgress_cxx` instance holds.
52
+ */
53
+ void invoke_cxx(jni::alias_ref<JZipProgress> progress) {
54
+ _func(progress->toCpp());
55
+ }
56
+
57
+ public:
58
+ [[nodiscard]]
59
+ inline const std::function<void(const ZipProgress& /* progress */)>& getFunction() const {
60
+ return _func;
61
+ }
62
+
63
+ public:
64
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/unzip/Func_void_ZipProgress_cxx;";
65
+ static void registerNatives() {
66
+ registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_ZipProgress_cxx::invoke_cxx)});
67
+ }
68
+
69
+ private:
70
+ explicit JFunc_void_ZipProgress_cxx(const std::function<void(const ZipProgress& /* progress */)>& func): _func(func) { }
71
+
72
+ private:
73
+ friend HybridBase;
74
+ std::function<void(const ZipProgress& /* progress */)> _func;
75
+ };
76
+
77
+ } // namespace margelo::nitro::unzip
@@ -0,0 +1,82 @@
1
+ ///
2
+ /// JHybridUnzipSpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JHybridUnzipSpec.hpp"
9
+
10
+ // Forward declaration of `HybridUnzipTaskSpec` to properly resolve imports.
11
+ namespace margelo::nitro::unzip { class HybridUnzipTaskSpec; }
12
+ // Forward declaration of `HybridZipTaskSpec` to properly resolve imports.
13
+ namespace margelo::nitro::unzip { class HybridZipTaskSpec; }
14
+
15
+ #include <memory>
16
+ #include "HybridUnzipTaskSpec.hpp"
17
+ #include "JHybridUnzipTaskSpec.hpp"
18
+ #include "HybridZipTaskSpec.hpp"
19
+ #include "JHybridZipTaskSpec.hpp"
20
+ #include <string>
21
+
22
+ namespace margelo::nitro::unzip {
23
+
24
+ jni::local_ref<JHybridUnzipSpec::jhybriddata> JHybridUnzipSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
25
+ return makeCxxInstance(jThis);
26
+ }
27
+
28
+ void JHybridUnzipSpec::registerNatives() {
29
+ registerHybrid({
30
+ makeNativeMethod("initHybrid", JHybridUnzipSpec::initHybrid),
31
+ });
32
+ }
33
+
34
+ size_t JHybridUnzipSpec::getExternalMemorySize() noexcept {
35
+ static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
36
+ return method(_javaPart);
37
+ }
38
+
39
+ bool JHybridUnzipSpec::equals(const std::shared_ptr<HybridObject>& other) {
40
+ if (auto otherCast = std::dynamic_pointer_cast<JHybridUnzipSpec>(other)) {
41
+ return _javaPart == otherCast->_javaPart;
42
+ }
43
+ return false;
44
+ }
45
+
46
+ void JHybridUnzipSpec::dispose() noexcept {
47
+ static const auto method = javaClassStatic()->getMethod<void()>("dispose");
48
+ method(_javaPart);
49
+ }
50
+
51
+ std::string JHybridUnzipSpec::toString() {
52
+ static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
53
+ auto javaString = method(_javaPart);
54
+ return javaString->toStdString();
55
+ }
56
+
57
+ // Properties
58
+
59
+
60
+ // Methods
61
+ std::shared_ptr<HybridUnzipTaskSpec> JHybridUnzipSpec::extract(const std::string& zipPath, const std::string& destinationPath) {
62
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridUnzipTaskSpec::javaobject>(jni::alias_ref<jni::JString> /* zipPath */, jni::alias_ref<jni::JString> /* destinationPath */)>("extract");
63
+ auto __result = method(_javaPart, jni::make_jstring(zipPath), jni::make_jstring(destinationPath));
64
+ return __result->cthis()->shared_cast<JHybridUnzipTaskSpec>();
65
+ }
66
+ std::shared_ptr<HybridUnzipTaskSpec> JHybridUnzipSpec::extractWithPassword(const std::string& zipPath, const std::string& destinationPath, const std::string& password) {
67
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridUnzipTaskSpec::javaobject>(jni::alias_ref<jni::JString> /* zipPath */, jni::alias_ref<jni::JString> /* destinationPath */, jni::alias_ref<jni::JString> /* password */)>("extractWithPassword");
68
+ auto __result = method(_javaPart, jni::make_jstring(zipPath), jni::make_jstring(destinationPath), jni::make_jstring(password));
69
+ return __result->cthis()->shared_cast<JHybridUnzipTaskSpec>();
70
+ }
71
+ std::shared_ptr<HybridZipTaskSpec> JHybridUnzipSpec::zip(const std::string& sourcePath, const std::string& destinationZipPath) {
72
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridZipTaskSpec::javaobject>(jni::alias_ref<jni::JString> /* sourcePath */, jni::alias_ref<jni::JString> /* destinationZipPath */)>("zip");
73
+ auto __result = method(_javaPart, jni::make_jstring(sourcePath), jni::make_jstring(destinationZipPath));
74
+ return __result->cthis()->shared_cast<JHybridZipTaskSpec>();
75
+ }
76
+ std::shared_ptr<HybridZipTaskSpec> JHybridUnzipSpec::zipWithPassword(const std::string& sourcePath, const std::string& destinationZipPath, const std::string& password) {
77
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridZipTaskSpec::javaobject>(jni::alias_ref<jni::JString> /* sourcePath */, jni::alias_ref<jni::JString> /* destinationZipPath */, jni::alias_ref<jni::JString> /* password */)>("zipWithPassword");
78
+ auto __result = method(_javaPart, jni::make_jstring(sourcePath), jni::make_jstring(destinationZipPath), jni::make_jstring(password));
79
+ return __result->cthis()->shared_cast<JHybridZipTaskSpec>();
80
+ }
81
+
82
+ } // namespace margelo::nitro::unzip