react-native-nitro-unzip 0.1.2 → 0.2.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/README.md CHANGED
@@ -124,9 +124,10 @@ Creates an `Unzip` factory instance.
124
124
  |---|---|---|
125
125
  | `success` | `boolean` | Whether extraction completed |
126
126
  | `extractedFiles` | `number` | Total files extracted |
127
+ | `totalFiles` | `number` | Total files in the archive |
127
128
  | `duration` | `number` | Duration in milliseconds |
128
129
  | `averageSpeed` | `number` | Average files per second |
129
- | `totalBytes` | `number` | Total bytes extracted |
130
+ | `totalBytes` | `number` | Size of the ZIP file in bytes |
130
131
 
131
132
  ### `ZipProgress`
132
133
 
@@ -143,6 +144,7 @@ Creates an `Unzip` factory instance.
143
144
  |---|---|---|
144
145
  | `success` | `boolean` | Whether compression completed |
145
146
  | `compressedFiles` | `number` | Total files compressed |
147
+ | `totalFiles` | `number` | Total files to compress |
146
148
  | `duration` | `number` | Duration in milliseconds |
147
149
  | `averageSpeed` | `number` | Average files per second |
148
150
  | `totalBytes` | `number` | Total bytes written |
@@ -163,13 +163,15 @@ class HybridUnzipTask(
163
163
 
164
164
  val durationMs = (System.currentTimeMillis() - startTime).toDouble()
165
165
  val avgSpeed = if (durationMs > 0) extractedCount / (durationMs / 1000.0) else 0.0
166
+ val zipFileSize = sourceFile.length().toDouble()
166
167
 
167
168
  UnzipResult(
168
169
  success = true,
169
170
  extractedFiles = extractedCount.toDouble(),
171
+ totalFiles = totalEntries.toDouble(),
170
172
  duration = durationMs,
171
173
  averageSpeed = avgSpeed,
172
- totalBytes = 0.0
174
+ totalBytes = zipFileSize
173
175
  )
174
176
  }
175
177
 
@@ -239,13 +241,15 @@ class HybridUnzipTask(
239
241
 
240
242
  val durationMs = (System.currentTimeMillis() - startTime).toDouble()
241
243
  val avgSpeed = if (durationMs > 0) extractedCount / (durationMs / 1000.0) else 0.0
244
+ val zipFileSize = sourceFile.length().toDouble()
242
245
 
243
246
  UnzipResult(
244
247
  success = true,
245
248
  extractedFiles = extractedCount.toDouble(),
249
+ totalFiles = totalEntries.toDouble(),
246
250
  duration = durationMs,
247
251
  averageSpeed = avgSpeed,
248
- totalBytes = 0.0
252
+ totalBytes = zipFileSize
249
253
  )
250
254
  }
251
255
 
@@ -145,6 +145,7 @@ class HybridZipTask(
145
145
  ZipResult(
146
146
  success = true,
147
147
  compressedFiles = compressedCount.toDouble(),
148
+ totalFiles = totalFiles.toDouble(),
148
149
  duration = durationMs,
149
150
  averageSpeed = avgSpeed,
150
151
  totalBytes = totalBytes
@@ -12,8 +12,6 @@ import NitroModules
12
12
  * ```
13
13
  */
14
14
  class HybridUnzip: HybridUnzipSpec {
15
- var hybridContext = margelo.nitro.HybridContext()
16
- var memorySize: Int { return getSizeOf(self) }
17
15
 
18
16
  func extract(zipPath: String, destinationPath: String) throws -> any HybridUnzipTaskSpec {
19
17
  return HybridUnzipTask(zipPath: zipPath, destinationPath: destinationPath)
@@ -16,11 +16,6 @@ import UIKit
16
16
  * - Background task support for continued extraction when app is backgrounded
17
17
  */
18
18
  class HybridUnzipTask: HybridUnzipTaskSpec {
19
- // MARK: - HybridObject requirements
20
-
21
- var hybridContext = margelo.nitro.HybridContext()
22
- var memorySize: Int { return getSizeOf(self) }
23
-
24
19
  // MARK: - Spec properties
25
20
 
26
21
  let taskId: String
@@ -130,10 +125,11 @@ class HybridUnzipTask: HybridUnzipTaskSpec {
130
125
  }
131
126
 
132
127
  var extractedFiles = 0
128
+ var totalFileCount = 0
133
129
  var lastProgressUpdate = Date()
134
130
 
135
131
  // SSZipArchive progress handler — called per file
136
- let progressHandler: (String, unz_file_info, Int, Int) -> Void = { [weak self] _, _, entryNumber, total in
132
+ let progressHandler: (String, unz_file_info, Int, Int) -> Void = { [weak self] _, fileInfo, entryNumber, total in
137
133
  guard let self = self else { return }
138
134
 
139
135
  // Check cancellation
@@ -144,6 +140,7 @@ class HybridUnzipTask: HybridUnzipTaskSpec {
144
140
  if cancelled { return }
145
141
 
146
142
  extractedFiles = entryNumber
143
+ totalFileCount = total
147
144
 
148
145
  // Throttle progress updates
149
146
  let now = Date()
@@ -161,7 +158,7 @@ class HybridUnzipTask: HybridUnzipTaskSpec {
161
158
  totalFiles: Double(total),
162
159
  progress: progress,
163
160
  speed: speed,
164
- processedBytes: 0
161
+ processedBytes: Double(fileInfo.uncompressed_size)
165
162
  ))
166
163
  lastProgressUpdate = now
167
164
  }
@@ -202,12 +199,22 @@ class HybridUnzipTask: HybridUnzipTaskSpec {
202
199
  let finalCount = extractedFiles
203
200
  let averageSpeed = duration > 0 ? Double(finalCount) / (duration / 1000) : 0
204
201
 
202
+ // Calculate total bytes from extracted files
203
+ let totalBytes: Double
204
+ if let attrs = try? fileManager.attributesOfItem(atPath: cleanZip),
205
+ let fileSize = attrs[.size] as? UInt64 {
206
+ totalBytes = Double(fileSize)
207
+ } else {
208
+ totalBytes = 0
209
+ }
210
+
205
211
  return UnzipResult(
206
212
  success: true,
207
213
  extractedFiles: Double(finalCount),
214
+ totalFiles: Double(totalFileCount),
208
215
  duration: duration,
209
216
  averageSpeed: averageSpeed,
210
- totalBytes: 0
217
+ totalBytes: totalBytes
211
218
  )
212
219
  }
213
220
 
@@ -10,11 +10,6 @@ import UIKit
10
10
  * The caller can observe progress, cancel, or await the result.
11
11
  */
12
12
  class HybridZipTask: HybridZipTaskSpec {
13
- // MARK: - HybridObject requirements
14
-
15
- var hybridContext = margelo.nitro.HybridContext()
16
- var memorySize: Int { return getSizeOf(self) }
17
-
18
13
  // MARK: - Spec properties
19
14
 
20
15
  let taskId: String
@@ -198,6 +193,7 @@ class HybridZipTask: HybridZipTaskSpec {
198
193
  return ZipResult(
199
194
  success: true,
200
195
  compressedFiles: Double(finalCount),
196
+ totalFiles: Double(totalFiles),
201
197
  duration: duration,
202
198
  averageSpeed: averageSpeed,
203
199
  totalBytes: totalBytes
@@ -22,6 +22,8 @@ export interface UnzipResult {
22
22
  success: boolean;
23
23
  /** Total number of files extracted */
24
24
  extractedFiles: number;
25
+ /** Total number of files in the archive */
26
+ totalFiles: number;
25
27
  /** Total extraction duration in milliseconds */
26
28
  duration: number;
27
29
  /** Average extraction speed in files per second */
@@ -77,6 +79,8 @@ export interface ZipResult {
77
79
  success: boolean;
78
80
  /** Total number of files compressed */
79
81
  compressedFiles: number;
82
+ /** Total number of files to compress */
83
+ totalFiles: number;
80
84
  /** Total compression duration in milliseconds */
81
85
  duration: number;
82
86
  /** Average compression speed in files per second */
@@ -1 +1 @@
1
- {"version":3,"file":"Unzip.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/Unzip.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD,iDAAiD;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAAC;IAE9D,2DAA2D;IAC3D,MAAM,IAAI,IAAI,CAAC;IAEf;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CAC/B;AAID;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,OACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IAE5D,6DAA6D;IAC7D,MAAM,IAAI,IAAI,CAAC;IAEf;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7B;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,KACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7D;;;;;;OAMG;IACH,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACf,SAAS,CAAC;IAEb;;;;;OAKG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC;IAE7D;;;;;;;OAOG;IACH,eAAe,CACb,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;CACZ"}
1
+ {"version":3,"file":"Unzip.nitro.d.ts","sourceRoot":"","sources":["../../../src/specs/Unzip.nitro.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,8 @@ namespace margelo::nitro::unzip {
35
35
  jboolean success = this->getFieldValue(fieldSuccess);
36
36
  static const auto fieldExtractedFiles = clazz->getField<double>("extractedFiles");
37
37
  double extractedFiles = this->getFieldValue(fieldExtractedFiles);
38
+ static const auto fieldTotalFiles = clazz->getField<double>("totalFiles");
39
+ double totalFiles = this->getFieldValue(fieldTotalFiles);
38
40
  static const auto fieldDuration = clazz->getField<double>("duration");
39
41
  double duration = this->getFieldValue(fieldDuration);
40
42
  static const auto fieldAverageSpeed = clazz->getField<double>("averageSpeed");
@@ -44,6 +46,7 @@ namespace margelo::nitro::unzip {
44
46
  return UnzipResult(
45
47
  static_cast<bool>(success),
46
48
  extractedFiles,
49
+ totalFiles,
47
50
  duration,
48
51
  averageSpeed,
49
52
  totalBytes
@@ -56,13 +59,14 @@ namespace margelo::nitro::unzip {
56
59
  */
57
60
  [[maybe_unused]]
58
61
  static jni::local_ref<JUnzipResult::javaobject> fromCpp(const UnzipResult& value) {
59
- using JSignature = JUnzipResult(jboolean, double, double, double, double);
62
+ using JSignature = JUnzipResult(jboolean, double, double, double, double, double);
60
63
  static const auto clazz = javaClassStatic();
61
64
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
62
65
  return create(
63
66
  clazz,
64
67
  value.success,
65
68
  value.extractedFiles,
69
+ value.totalFiles,
66
70
  value.duration,
67
71
  value.averageSpeed,
68
72
  value.totalBytes
@@ -35,6 +35,8 @@ namespace margelo::nitro::unzip {
35
35
  jboolean success = this->getFieldValue(fieldSuccess);
36
36
  static const auto fieldCompressedFiles = clazz->getField<double>("compressedFiles");
37
37
  double compressedFiles = this->getFieldValue(fieldCompressedFiles);
38
+ static const auto fieldTotalFiles = clazz->getField<double>("totalFiles");
39
+ double totalFiles = this->getFieldValue(fieldTotalFiles);
38
40
  static const auto fieldDuration = clazz->getField<double>("duration");
39
41
  double duration = this->getFieldValue(fieldDuration);
40
42
  static const auto fieldAverageSpeed = clazz->getField<double>("averageSpeed");
@@ -44,6 +46,7 @@ namespace margelo::nitro::unzip {
44
46
  return ZipResult(
45
47
  static_cast<bool>(success),
46
48
  compressedFiles,
49
+ totalFiles,
47
50
  duration,
48
51
  averageSpeed,
49
52
  totalBytes
@@ -56,13 +59,14 @@ namespace margelo::nitro::unzip {
56
59
  */
57
60
  [[maybe_unused]]
58
61
  static jni::local_ref<JZipResult::javaobject> fromCpp(const ZipResult& value) {
59
- using JSignature = JZipResult(jboolean, double, double, double, double);
62
+ using JSignature = JZipResult(jboolean, double, double, double, double, double);
60
63
  static const auto clazz = javaClassStatic();
61
64
  static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
62
65
  return create(
63
66
  clazz,
64
67
  value.success,
65
68
  value.compressedFiles,
69
+ value.totalFiles,
66
70
  value.duration,
67
71
  value.averageSpeed,
68
72
  value.totalBytes
@@ -25,6 +25,9 @@ data class UnzipResult(
25
25
  val extractedFiles: Double,
26
26
  @DoNotStrip
27
27
  @Keep
28
+ val totalFiles: Double,
29
+ @DoNotStrip
30
+ @Keep
28
31
  val duration: Double,
29
32
  @DoNotStrip
30
33
  @Keep
@@ -43,8 +46,8 @@ data class UnzipResult(
43
46
  @Keep
44
47
  @Suppress("unused")
45
48
  @JvmStatic
46
- private fun fromCpp(success: Boolean, extractedFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double): UnzipResult {
47
- return UnzipResult(success, extractedFiles, duration, averageSpeed, totalBytes)
49
+ private fun fromCpp(success: Boolean, extractedFiles: Double, totalFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double): UnzipResult {
50
+ return UnzipResult(success, extractedFiles, totalFiles, duration, averageSpeed, totalBytes)
48
51
  }
49
52
  }
50
53
  }
@@ -25,6 +25,9 @@ data class ZipResult(
25
25
  val compressedFiles: Double,
26
26
  @DoNotStrip
27
27
  @Keep
28
+ val totalFiles: Double,
29
+ @DoNotStrip
30
+ @Keep
28
31
  val duration: Double,
29
32
  @DoNotStrip
30
33
  @Keep
@@ -43,8 +46,8 @@ data class ZipResult(
43
46
  @Keep
44
47
  @Suppress("unused")
45
48
  @JvmStatic
46
- private fun fromCpp(success: Boolean, compressedFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double): ZipResult {
47
- return ZipResult(success, compressedFiles, duration, averageSpeed, totalBytes)
49
+ private fun fromCpp(success: Boolean, compressedFiles: Double, totalFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double): ZipResult {
50
+ return ZipResult(success, compressedFiles, totalFiles, duration, averageSpeed, totalBytes)
48
51
  }
49
52
  }
50
53
  }
@@ -18,8 +18,8 @@ public extension UnzipResult {
18
18
  /**
19
19
  * Create a new instance of `UnzipResult`.
20
20
  */
21
- init(success: Bool, extractedFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double) {
22
- self.init(success, extractedFiles, duration, averageSpeed, totalBytes)
21
+ init(success: Bool, extractedFiles: Double, totalFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double) {
22
+ self.init(success, extractedFiles, totalFiles, duration, averageSpeed, totalBytes)
23
23
  }
24
24
 
25
25
  @inline(__always)
@@ -32,6 +32,11 @@ public extension UnzipResult {
32
32
  return self.__extractedFiles
33
33
  }
34
34
 
35
+ @inline(__always)
36
+ var totalFiles: Double {
37
+ return self.__totalFiles
38
+ }
39
+
35
40
  @inline(__always)
36
41
  var duration: Double {
37
42
  return self.__duration
@@ -18,8 +18,8 @@ public extension ZipResult {
18
18
  /**
19
19
  * Create a new instance of `ZipResult`.
20
20
  */
21
- init(success: Bool, compressedFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double) {
22
- self.init(success, compressedFiles, duration, averageSpeed, totalBytes)
21
+ init(success: Bool, compressedFiles: Double, totalFiles: Double, duration: Double, averageSpeed: Double, totalBytes: Double) {
22
+ self.init(success, compressedFiles, totalFiles, duration, averageSpeed, totalBytes)
23
23
  }
24
24
 
25
25
  @inline(__always)
@@ -32,6 +32,11 @@ public extension ZipResult {
32
32
  return self.__compressedFiles
33
33
  }
34
34
 
35
+ @inline(__always)
36
+ var totalFiles: Double {
37
+ return self.__totalFiles
38
+ }
39
+
35
40
  @inline(__always)
36
41
  var duration: Double {
37
42
  return self.__duration
@@ -41,13 +41,14 @@ namespace margelo::nitro::unzip {
41
41
  public:
42
42
  bool success SWIFT_PRIVATE;
43
43
  double extractedFiles SWIFT_PRIVATE;
44
+ double totalFiles SWIFT_PRIVATE;
44
45
  double duration SWIFT_PRIVATE;
45
46
  double averageSpeed SWIFT_PRIVATE;
46
47
  double totalBytes SWIFT_PRIVATE;
47
48
 
48
49
  public:
49
50
  UnzipResult() = default;
50
- explicit UnzipResult(bool success, double extractedFiles, double duration, double averageSpeed, double totalBytes): success(success), extractedFiles(extractedFiles), duration(duration), averageSpeed(averageSpeed), totalBytes(totalBytes) {}
51
+ explicit UnzipResult(bool success, double extractedFiles, double totalFiles, double duration, double averageSpeed, double totalBytes): success(success), extractedFiles(extractedFiles), totalFiles(totalFiles), duration(duration), averageSpeed(averageSpeed), totalBytes(totalBytes) {}
51
52
 
52
53
  public:
53
54
  friend bool operator==(const UnzipResult& lhs, const UnzipResult& rhs) = default;
@@ -65,6 +66,7 @@ namespace margelo::nitro {
65
66
  return margelo::nitro::unzip::UnzipResult(
66
67
  JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "success"))),
67
68
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "extractedFiles"))),
69
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalFiles"))),
68
70
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "duration"))),
69
71
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "averageSpeed"))),
70
72
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalBytes")))
@@ -74,6 +76,7 @@ namespace margelo::nitro {
74
76
  jsi::Object obj(runtime);
75
77
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "success"), JSIConverter<bool>::toJSI(runtime, arg.success));
76
78
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "extractedFiles"), JSIConverter<double>::toJSI(runtime, arg.extractedFiles));
79
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "totalFiles"), JSIConverter<double>::toJSI(runtime, arg.totalFiles));
77
80
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "duration"), JSIConverter<double>::toJSI(runtime, arg.duration));
78
81
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "averageSpeed"), JSIConverter<double>::toJSI(runtime, arg.averageSpeed));
79
82
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "totalBytes"), JSIConverter<double>::toJSI(runtime, arg.totalBytes));
@@ -89,6 +92,7 @@ namespace margelo::nitro {
89
92
  }
90
93
  if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "success")))) return false;
91
94
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "extractedFiles")))) return false;
95
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalFiles")))) return false;
92
96
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "duration")))) return false;
93
97
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "averageSpeed")))) return false;
94
98
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalBytes")))) return false;
@@ -41,13 +41,14 @@ namespace margelo::nitro::unzip {
41
41
  public:
42
42
  bool success SWIFT_PRIVATE;
43
43
  double compressedFiles SWIFT_PRIVATE;
44
+ double totalFiles SWIFT_PRIVATE;
44
45
  double duration SWIFT_PRIVATE;
45
46
  double averageSpeed SWIFT_PRIVATE;
46
47
  double totalBytes SWIFT_PRIVATE;
47
48
 
48
49
  public:
49
50
  ZipResult() = default;
50
- explicit ZipResult(bool success, double compressedFiles, double duration, double averageSpeed, double totalBytes): success(success), compressedFiles(compressedFiles), duration(duration), averageSpeed(averageSpeed), totalBytes(totalBytes) {}
51
+ explicit ZipResult(bool success, double compressedFiles, double totalFiles, double duration, double averageSpeed, double totalBytes): success(success), compressedFiles(compressedFiles), totalFiles(totalFiles), duration(duration), averageSpeed(averageSpeed), totalBytes(totalBytes) {}
51
52
 
52
53
  public:
53
54
  friend bool operator==(const ZipResult& lhs, const ZipResult& rhs) = default;
@@ -65,6 +66,7 @@ namespace margelo::nitro {
65
66
  return margelo::nitro::unzip::ZipResult(
66
67
  JSIConverter<bool>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "success"))),
67
68
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "compressedFiles"))),
69
+ JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalFiles"))),
68
70
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "duration"))),
69
71
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "averageSpeed"))),
70
72
  JSIConverter<double>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalBytes")))
@@ -74,6 +76,7 @@ namespace margelo::nitro {
74
76
  jsi::Object obj(runtime);
75
77
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "success"), JSIConverter<bool>::toJSI(runtime, arg.success));
76
78
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "compressedFiles"), JSIConverter<double>::toJSI(runtime, arg.compressedFiles));
79
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "totalFiles"), JSIConverter<double>::toJSI(runtime, arg.totalFiles));
77
80
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "duration"), JSIConverter<double>::toJSI(runtime, arg.duration));
78
81
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "averageSpeed"), JSIConverter<double>::toJSI(runtime, arg.averageSpeed));
79
82
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "totalBytes"), JSIConverter<double>::toJSI(runtime, arg.totalBytes));
@@ -89,6 +92,7 @@ namespace margelo::nitro {
89
92
  }
90
93
  if (!JSIConverter<bool>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "success")))) return false;
91
94
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "compressedFiles")))) return false;
95
+ if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalFiles")))) return false;
92
96
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "duration")))) return false;
93
97
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "averageSpeed")))) return false;
94
98
  if (!JSIConverter<double>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "totalBytes")))) return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-unzip",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "High-performance ZIP extraction for React Native, powered by Nitro Modules",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -94,10 +94,7 @@
94
94
  "extends": [
95
95
  "@react-native",
96
96
  "prettier"
97
- ],
98
- "rules": {
99
- "prettier/prettier": "warn"
100
- }
97
+ ]
101
98
  },
102
99
  "prettier": {
103
100
  "semi": true,
@@ -26,6 +26,8 @@ export interface UnzipResult {
26
26
  success: boolean;
27
27
  /** Total number of files extracted */
28
28
  extractedFiles: number;
29
+ /** Total number of files in the archive */
30
+ totalFiles: number;
29
31
  /** Total extraction duration in milliseconds */
30
32
  duration: number;
31
33
  /** Average extraction speed in files per second */
@@ -87,6 +89,8 @@ export interface ZipResult {
87
89
  success: boolean;
88
90
  /** Total number of files compressed */
89
91
  compressedFiles: number;
92
+ /** Total number of files to compress */
93
+ totalFiles: number;
90
94
  /** Total compression duration in milliseconds */
91
95
  duration: number;
92
96
  /** Average compression speed in files per second */