react-native-compressor 1.7.2 → 1.8.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.
Files changed (130) hide show
  1. package/README.md +51 -8
  2. package/android/build.gradle +9 -0
  3. package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.kt +527 -0
  4. package/android/src/main/java/com/reactnativecompressor/Audio/AudioMain.kt +31 -0
  5. package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +169 -0
  6. package/android/src/main/java/com/reactnativecompressor/CompressorPackage.kt +34 -0
  7. package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.kt +199 -0
  8. package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressorOptions.kt +57 -0
  9. package/android/src/main/java/com/reactnativecompressor/Image/ImageMain.kt +31 -0
  10. package/android/src/main/java/com/reactnativecompressor/Image/ImageSize.kt +3 -0
  11. package/android/src/main/java/com/reactnativecompressor/Utils/Downloader.kt +119 -0
  12. package/android/src/main/java/com/reactnativecompressor/Utils/EventEmitterHandler.kt +66 -0
  13. package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.kt +61 -0
  14. package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.kt +177 -0
  15. package/android/src/main/java/com/reactnativecompressor/Utils/Uploader.kt +117 -0
  16. package/android/src/main/java/com/reactnativecompressor/Utils/Utils.kt +162 -0
  17. package/android/src/main/java/com/reactnativecompressor/Utils/createVideoThumbnail.kt +158 -0
  18. package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression.kt +63 -0
  19. package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.kt +125 -0
  20. package/android/src/main/java/com/reactnativecompressor/Video/VideoMain.kt +86 -0
  21. package/android/src/newarch/CompressorSpec.kt +5 -0
  22. package/android/src/oldarch/CompressorSpec.kt +34 -0
  23. package/ios/Audio/AudioMain.swift +115 -0
  24. package/ios/Compressor-Bridging-Header.h +1 -2
  25. package/ios/Compressor.h +0 -8
  26. package/ios/Compressor.mm +37 -389
  27. package/ios/CompressorManager.swift +107 -0
  28. package/ios/Image/ImageCompressor.swift +354 -0
  29. package/ios/Image/ImageCompressorOptions.swift +93 -0
  30. package/ios/Image/ImageMain.swift +27 -0
  31. package/ios/Utils/CreateVideoThumbnail.swift +111 -0
  32. package/ios/Utils/Downloader.swift +157 -0
  33. package/ios/Utils/EventEmitterHandler.swift +54 -0
  34. package/ios/Utils/MediaCache.swift +48 -0
  35. package/ios/Utils/Uploader.swift +99 -0
  36. package/ios/Utils/Utils.swift +110 -0
  37. package/ios/Video/{VideoCompressor.swift → VideoMain.swift} +167 -146
  38. package/lib/commonjs/Image/index.js +1 -1
  39. package/lib/commonjs/Image/index.js.map +1 -1
  40. package/lib/commonjs/Main.js +1 -8
  41. package/lib/commonjs/Main.js.map +1 -1
  42. package/lib/commonjs/Spec/NativeCompressor.js.map +1 -1
  43. package/lib/commonjs/Video/index.js +4 -33
  44. package/lib/commonjs/Video/index.js.map +1 -1
  45. package/lib/commonjs/expo-plugin/compressor.js.map +1 -1
  46. package/lib/commonjs/index.js +25 -6
  47. package/lib/commonjs/index.js.map +1 -1
  48. package/lib/commonjs/utils/Downloader.js +38 -0
  49. package/lib/commonjs/utils/Downloader.js.map +1 -0
  50. package/lib/commonjs/utils/Uploader.js +40 -0
  51. package/lib/commonjs/utils/Uploader.js.map +1 -0
  52. package/lib/commonjs/utils/index.js +47 -1
  53. package/lib/commonjs/utils/index.js.map +1 -1
  54. package/lib/module/Image/index.js +1 -1
  55. package/lib/module/Image/index.js.map +1 -1
  56. package/lib/module/Main.js +1 -7
  57. package/lib/module/Main.js.map +1 -1
  58. package/lib/module/Spec/NativeCompressor.js.map +1 -1
  59. package/lib/module/Video/index.js +5 -33
  60. package/lib/module/Video/index.js.map +1 -1
  61. package/lib/module/expo-plugin/compressor.js.map +1 -1
  62. package/lib/module/index.js +9 -7
  63. package/lib/module/index.js.map +1 -1
  64. package/lib/module/utils/Downloader.js +31 -0
  65. package/lib/module/utils/Downloader.js.map +1 -0
  66. package/lib/module/utils/Uploader.js +33 -0
  67. package/lib/module/utils/Uploader.js.map +1 -0
  68. package/lib/module/utils/index.js +9 -0
  69. package/lib/module/utils/index.js.map +1 -1
  70. package/lib/typescript/Image/index.d.ts +4 -0
  71. package/lib/typescript/Image/index.d.ts.map +1 -1
  72. package/lib/typescript/Main.d.ts +1 -2
  73. package/lib/typescript/Main.d.ts.map +1 -1
  74. package/lib/typescript/Spec/NativeCompressor.d.ts +16 -2
  75. package/lib/typescript/Spec/NativeCompressor.d.ts.map +1 -1
  76. package/lib/typescript/Video/index.d.ts +4 -28
  77. package/lib/typescript/Video/index.d.ts.map +1 -1
  78. package/lib/typescript/index.d.ts +7 -4
  79. package/lib/typescript/index.d.ts.map +1 -1
  80. package/lib/typescript/utils/Downloader.d.ts +2 -0
  81. package/lib/typescript/utils/Downloader.d.ts.map +1 -0
  82. package/lib/typescript/utils/Uploader.d.ts +28 -0
  83. package/lib/typescript/utils/Uploader.d.ts.map +1 -0
  84. package/lib/typescript/utils/index.d.ts +4 -1
  85. package/lib/typescript/utils/index.d.ts.map +1 -1
  86. package/package.json +6 -4
  87. package/src/Image/index.tsx +5 -1
  88. package/src/Main.tsx +1 -15
  89. package/src/Spec/NativeCompressor.ts +25 -2
  90. package/src/Video/index.tsx +11 -84
  91. package/src/expo-plugin/compressor.ts +1 -1
  92. package/src/index.tsx +12 -3
  93. package/src/utils/Downloader.tsx +38 -0
  94. package/src/utils/Uploader.tsx +78 -0
  95. package/src/utils/index.tsx +15 -0
  96. package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +0 -605
  97. package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +0 -220
  98. package/android/src/main/java/com/reactnativecompressor/CompressorPackage.java +0 -58
  99. package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.java +0 -257
  100. package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageCompressorOptions.java +0 -69
  101. package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageSize.java +0 -13
  102. package/android/src/main/java/com/reactnativecompressor/Utils/FileUplaoder/FileUploadHelper.java +0 -39
  103. package/android/src/main/java/com/reactnativecompressor/Utils/FileUplaoder/FileUploader.java +0 -129
  104. package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.java +0 -65
  105. package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.java +0 -210
  106. package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +0 -272
  107. package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression/AutoVideoCompression.java +0 -87
  108. package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.java +0 -182
  109. package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +0 -112
  110. package/android/src/newarch/CompressorSpec.java +0 -9
  111. package/android/src/newarch/VideoCompressorSpec.java +0 -9
  112. package/android/src/oldarch/CompressorSpec.java +0 -34
  113. package/android/src/oldarch/VideoCompressorSpec.java +0 -26
  114. package/ios/Image/ImageCompressor.h +0 -22
  115. package/ios/Image/ImageCompressor.m +0 -540
  116. package/ios/Image/ImageCompressorOptions.h +0 -28
  117. package/ios/Image/ImageCompressorOptions.m +0 -97
  118. package/ios/Utils/Downloader.h +0 -16
  119. package/ios/Utils/Downloader.m +0 -150
  120. package/ios/Utils/MediaCache.h +0 -11
  121. package/ios/Utils/MediaCache.m +0 -51
  122. package/ios/Video/VideoCompressor.h +0 -5
  123. package/ios/Video/VideoCompressor.m +0 -1
  124. package/lib/commonjs/Spec/NativeVideoCompressor.js +0 -10
  125. package/lib/commonjs/Spec/NativeVideoCompressor.js.map +0 -1
  126. package/lib/module/Spec/NativeVideoCompressor.js +0 -3
  127. package/lib/module/Spec/NativeVideoCompressor.js.map +0 -1
  128. package/lib/typescript/Spec/NativeVideoCompressor.d.ts +0 -13
  129. package/lib/typescript/Spec/NativeVideoCompressor.d.ts.map +0 -1
  130. package/src/Spec/NativeVideoCompressor.ts +0 -14
package/README.md CHANGED
@@ -17,9 +17,9 @@
17
17
  **REACT-NATIVE-COMPRESSOR** is a react-native package, which helps us to Compress `Image`, `Video`, and `Audio` before uploading, same like **Whatsapp** without knowing the compression `algorithm`
18
18
 
19
19
  <div align="center">
20
- <img height="90" src="/media/whatsapp_logo.png"/>
21
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
22
- <img height="90" src="/media/compress_media.png"/>
20
+ <pre>
21
+ <img height="90" src="/media/whatsapp_logo.png"/> <img height="90" src="/media/compress_media.png"/>
22
+ </pre>
23
23
  <h2 align="center">🗜️Compress Image, Video, and Audio same like Whatsapp</h2>
24
24
  </div>
25
25
 
@@ -53,9 +53,7 @@ We should use **react-native-compressor** instead of **FFmpeg** because **react-
53
53
  <summary>Open Table of Contents</summary>
54
54
 
55
55
  - [Installation](#installation)
56
- - [For React Native](#react-native)
57
- - [For React Native<0.65](#for-react-native065)
58
- - [For React Native 0.65 or greater](#for-react-native-065-or-greater)
56
+ - [For React Native](#Installation)
59
57
  - [Managed Expo](#managed-expo)
60
58
  - [Usage](#usage)
61
59
  - [Image](#image)
@@ -69,6 +67,7 @@ We should use **react-native-compressor** instead of **FFmpeg** because **react-
69
67
  - [Video Api Docs](#video-1)
70
68
  - [Audio](#audio)
71
69
  - [Background Upload](#background-upload)
70
+ - [Download File](#download)
72
71
 
73
72
  * [Other Utilities](#api)
74
73
  - [Background Upload](#background-upload-1)
@@ -85,7 +84,7 @@ yarn add react-native-compressor
85
84
 
86
85
  ### [New Architecture (Turbo Module)](https://reactnative.dev/docs/new-architecture-intro) Supported
87
86
 
88
- you can give feedback on [Discord channel](https://discord.gg/dtYzk8sp)
87
+ you can give feedback on [Discord channel](https://discord.gg/6Wx8Em8KAN)
89
88
 
90
89
  ### Managed Expo
91
90
 
@@ -164,6 +163,7 @@ import { Image } from 'react-native-compressor';
164
163
  const result = await Image.compress('file://path_of_file/image.jpg');
165
164
  // OR
166
165
  const result = await Image.compress('https://path_of_file/image.jpg', {
166
+ progressDivider: 10,
167
167
  downloadProgress: (progress) => {
168
168
  console.log('downloadProgress: ', progress);
169
169
  },
@@ -204,6 +204,7 @@ const result = await Video.compress(
204
204
  const result = await Video.compress(
205
205
  'https://example.com/video.mp4',
206
206
  {
207
+ progressDivider: 10,
207
208
  downloadProgress: (progress) => {
208
209
  console.log('downloadProgress: ', progress);
209
210
  },
@@ -288,6 +289,26 @@ const uploadResult = await backgroundUpload(
288
289
  );
289
290
  ```
290
291
 
292
+ ### Download File
293
+
294
+ ```js
295
+ import { download } from 'react-native-compressor';
296
+
297
+ const downloadFileUrl = await download(url, (progress) => {
298
+ console.log('downloadProgress: ', progress);
299
+ });
300
+ ```
301
+
302
+ ### Video Thumbnail
303
+
304
+ ```js
305
+ import { createVideoThumbnail, clearCache } from 'react-native-compressor';
306
+
307
+ const thumbnail = await createVideoThumbnail(videoUri);
308
+
309
+ await clearCache(); // this will clear cache of thumbnails cache directory
310
+ ```
311
+
291
312
  # API
292
313
 
293
314
  ## Image
@@ -308,6 +329,10 @@ const uploadResult = await backgroundUpload(
308
329
 
309
330
  it is callback, only trigger when we pass image url from server
310
331
 
332
+ - ##### `progressDivider?: number` (default: 0)
333
+
334
+ we uses it when we use downloadProgress
335
+
311
336
  - ###### `maxWidth: number` (default: 1280)
312
337
 
313
338
  The maximum width boundary used as the main boundary in resizing a landscape image.
@@ -348,6 +373,10 @@ const uploadResult = await backgroundUpload(
348
373
 
349
374
  it is callback, only trigger when we pass image url from server
350
375
 
376
+ - ##### `progressDivider?: number` (default: 0)
377
+
378
+ we uses it when we use downloadProgress/onProgress
379
+
351
380
  - ###### `maxSize: number` (default: 640)
352
381
 
353
382
  The maximum size can be height in case of portrait video or can be width in case of landscape video.
@@ -376,7 +405,7 @@ const uploadResult = await backgroundUpload(
376
405
 
377
406
  ## Background Upload
378
407
 
379
- - ###### `backgroundUpload: (url: string, fileUrl: string, options: FileSystemUploadOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise<any>
408
+ - ###### backgroundUpload: (url: string, fileUrl: string, options: FileSystemUploadOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise< any >
380
409
 
381
410
  - ###### ` FileSystemUploadOptions`
382
411
 
@@ -398,6 +427,20 @@ type FileSystemUploadOptions = (
398
427
  };
399
428
  ```
400
429
 
430
+ ### Download
431
+
432
+ - ##### download: ( fileUrl: string, downloadProgress?: (progress: number) => void, progressDivider?: number ) => Promise< string >
433
+
434
+ ### Create Video Thumbnail and clear cache
435
+
436
+ - #### createVideoThumbnail( fileUrl: string, options: {header:Object} ): Promise<{ path: string;size: number; mime: string; width: number; height: number; }>
437
+
438
+ it will save the thumbnail of the video into the cache directory and return the thumbnail URI which you can display
439
+
440
+ - #### clearCache(cacheDir?: string): Promise< string >
441
+
442
+ it will clear the cache that was created from createVideoThumbnail, in future this clear cache will be totally customized
443
+
401
444
  ### Get Metadata Of Video
402
445
 
403
446
  if you want to get metadata of video than you can use this function
@@ -1,4 +1,7 @@
1
1
  buildscript {
2
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Compressor_kotlinVersion"]
4
+
2
5
  repositories {
3
6
  google()
4
7
  mavenCentral()
@@ -6,6 +9,8 @@ buildscript {
6
9
 
7
10
  dependencies {
8
11
  classpath "com.android.tools.build:gradle:7.2.1"
12
+ // noinspection DifferentKotlinGradleVersion
13
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
9
14
  }
10
15
  }
11
16
 
@@ -14,6 +19,7 @@ def isNewArchitectureEnabled() {
14
19
  }
15
20
 
16
21
  apply plugin: "com.android.library"
22
+ apply plugin: "kotlin-android"
17
23
 
18
24
 
19
25
  def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
@@ -96,12 +102,15 @@ repositories {
96
102
  google()
97
103
  }
98
104
 
105
+ def kotlin_version = getExtOrDefault("kotlinVersion")
99
106
 
100
107
  dependencies {
101
108
  // For < 0.71, this will be from the local maven repo
102
109
  // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
103
110
  //noinspection GradleDynamicVersion
104
111
  implementation "com.facebook.react:react-native:+"
112
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
113
+ implementation 'commons-io:commons-io:2.8.0'
105
114
  implementation 'io.github.lizhangqu:coreprogress:1.0.2'
106
115
  implementation 'com.github.numandev1:VideoCompressor:1a262bba37'
107
116
  }