react-native-compressor 1.18.0 → 1.18.2
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/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.kt +3 -2
- package/android/src/main/java/com/reactnativecompressor/Utils/createVideoThumbnail.kt +42 -21
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/compressor/Compressor.kt +48 -10
- package/ios/Image/ImageCompressor.swift +3 -2
- package/ios/Utils/CreateVideoThumbnail.swift +40 -21
- package/ios/Utils/Uploader.swift +14 -7
- package/ios/Video/VideoMain.swift +54 -54
- package/lib/commonjs/index.js +1 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/index.d.ts +1 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/package.json +7 -1
- package/src/index.tsx +1 -0
- package/src/utils/index.tsx +1 -0
|
@@ -113,16 +113,17 @@ object ImageCompressor {
|
|
|
113
113
|
|
|
114
114
|
fun compress(image: Bitmap?, output: ImageCompressorOptions.OutputType, quality: Float,disablePngTransparency:Boolean): ByteArrayOutputStream {
|
|
115
115
|
var stream = ByteArrayOutputStream()
|
|
116
|
+
val normalizedQuality = Math.round(100 * quality.coerceIn(0f, 1f))
|
|
116
117
|
if (output === ImageCompressorOptions.OutputType.jpg)
|
|
117
118
|
{
|
|
118
|
-
image!!.compress(CompressFormat.JPEG,
|
|
119
|
+
image!!.compress(CompressFormat.JPEG, normalizedQuality, stream)
|
|
119
120
|
}
|
|
120
121
|
else
|
|
121
122
|
{
|
|
122
123
|
var bitmap = image
|
|
123
124
|
if(disablePngTransparency)
|
|
124
125
|
{
|
|
125
|
-
image!!.compress(CompressFormat.JPEG,
|
|
126
|
+
image!!.compress(CompressFormat.JPEG, normalizedQuality, stream)
|
|
126
127
|
val byteArray: ByteArray = stream.toByteArray()
|
|
127
128
|
stream=ByteArrayOutputStream()
|
|
128
129
|
bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
|
|
@@ -62,6 +62,7 @@ class CreateVideoThumbnailClass(private val reactContext: ReactApplicationContex
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
val headers: Map<String, String> = if (options.hasKey("headers")) options.getMap("headers")!!.toHashMap() as Map<String, String> else HashMap<String, String>()
|
|
65
|
+
val quality = if (options.hasKey("quality")) (options.getDouble("quality") * 100).toInt().coerceIn(0, 100) else DEFAULT_THUMBNAIL_QUALITY
|
|
65
66
|
val fileName = if (TextUtils.isEmpty(cacheName)) "thumb-" + UUID.randomUUID().toString() else "$cacheName.$format"
|
|
66
67
|
var fOut: OutputStream? = null
|
|
67
68
|
|
|
@@ -73,7 +74,7 @@ class CreateVideoThumbnailClass(private val reactContext: ReactApplicationContex
|
|
|
73
74
|
fOut = FileOutputStream(file)
|
|
74
75
|
|
|
75
76
|
// 100 means no compression, the lower you go, the stronger the compression
|
|
76
|
-
image.compress(Bitmap.CompressFormat.JPEG,
|
|
77
|
+
image.compress(Bitmap.CompressFormat.JPEG, quality, fOut)
|
|
77
78
|
fOut.flush()
|
|
78
79
|
fOut.close()
|
|
79
80
|
|
|
@@ -96,6 +97,8 @@ class CreateVideoThumbnailClass(private val reactContext: ReactApplicationContex
|
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
companion object {
|
|
100
|
+
private const val DEFAULT_THUMBNAIL_QUALITY = 90
|
|
101
|
+
|
|
99
102
|
// delete previously added files one by one untill requred space is available
|
|
100
103
|
fun clearCache(cacheDir: String?,promise:Promise, reactContext: ReactApplicationContext) {
|
|
101
104
|
val cacheDirectory=cacheDir?.takeIf { it.isNotEmpty() } ?:"/thumbnails"
|
|
@@ -134,29 +137,47 @@ class CreateVideoThumbnailClass(private val reactContext: ReactApplicationContex
|
|
|
134
137
|
}
|
|
135
138
|
|
|
136
139
|
private fun getBitmapAtTime(context: Context?, filePath: String?, time: Int, headers: Map<String, String>): Bitmap {
|
|
140
|
+
check(!filePath.isNullOrEmpty()) { "Video file path cannot be null or empty" }
|
|
137
141
|
val retriever = MediaMetadataRetriever()
|
|
138
|
-
if (URLUtil.isFileUrl(filePath)) {
|
|
139
|
-
val decodedPath: String?
|
|
140
|
-
decodedPath = try {
|
|
141
|
-
URLDecoder.decode(filePath, "UTF-8")
|
|
142
|
-
} catch (e: UnsupportedEncodingException) {
|
|
143
|
-
filePath
|
|
144
|
-
}
|
|
145
|
-
retriever.setDataSource(decodedPath!!.replace("file://", ""))
|
|
146
|
-
} else if (filePath!!.contains("content://")) {
|
|
147
|
-
retriever.setDataSource(context, Uri.parse(filePath))
|
|
148
|
-
} else {
|
|
149
|
-
check(Build.VERSION.SDK_INT >= 14) { "Remote videos aren't supported on sdk_version < 14" }
|
|
150
|
-
retriever.setDataSource(filePath, headers)
|
|
151
|
-
}
|
|
152
|
-
val image = retriever.getFrameAtTime((time * 1000).toLong(), MediaMetadataRetriever.OPTION_CLOSEST_SYNC)
|
|
153
142
|
try {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
143
|
+
if (URLUtil.isFileUrl(filePath)) {
|
|
144
|
+
val decodedPath: String? = try {
|
|
145
|
+
URLDecoder.decode(filePath, "UTF-8")
|
|
146
|
+
} catch (e: UnsupportedEncodingException) {
|
|
147
|
+
filePath
|
|
148
|
+
}
|
|
149
|
+
retriever.setDataSource(decodedPath!!.replace("file://", ""))
|
|
150
|
+
} else if (filePath.contains("content://")) {
|
|
151
|
+
retriever.setDataSource(context, Uri.parse(filePath))
|
|
152
|
+
} else {
|
|
153
|
+
check(Build.VERSION.SDK_INT >= 14) { "Remote videos aren't supported on sdk_version < 14" }
|
|
154
|
+
retriever.setDataSource(filePath, headers)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
val requestedTimeUs = (time * 1000).toLong()
|
|
158
|
+
val frameAttempts = arrayOf(
|
|
159
|
+
Pair(requestedTimeUs, MediaMetadataRetriever.OPTION_CLOSEST_SYNC),
|
|
160
|
+
Pair(requestedTimeUs, MediaMetadataRetriever.OPTION_CLOSEST),
|
|
161
|
+
Pair(1_000_000L, MediaMetadataRetriever.OPTION_CLOSEST_SYNC),
|
|
162
|
+
)
|
|
163
|
+
for ((timeUs, option) in frameAttempts) {
|
|
164
|
+
val image = try {
|
|
165
|
+
retriever.getFrameAtTime(timeUs, option)
|
|
166
|
+
} catch (e: RuntimeException) {
|
|
167
|
+
null
|
|
168
|
+
}
|
|
169
|
+
if (image != null) {
|
|
170
|
+
return image
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
error("Unable to extract video frame from file")
|
|
174
|
+
} finally {
|
|
175
|
+
try {
|
|
176
|
+
retriever.release()
|
|
177
|
+
} catch (e: IOException) {
|
|
178
|
+
// Ignore
|
|
179
|
+
}
|
|
157
180
|
}
|
|
158
|
-
checkNotNull(image) { "File doesn't exist or not supported" }
|
|
159
|
-
return image
|
|
160
181
|
}
|
|
161
182
|
}
|
|
162
183
|
}
|
|
@@ -41,10 +41,21 @@ object Compressor {
|
|
|
41
41
|
private const val INVALID_BITRATE =
|
|
42
42
|
"The provided bitrate is smaller than what is needed for compression, " +
|
|
43
43
|
"try to set isMinBitRateEnabled to false"
|
|
44
|
+
private val SUPPORTED_AUDIO_SAMPLE_RATES = setOf(
|
|
45
|
+
8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000
|
|
46
|
+
)
|
|
47
|
+
private const val STREAMABLE_SUFFIX = "-streamable"
|
|
48
|
+
private const val DEFAULT_OUTPUT_EXTENSION = "mp4"
|
|
44
49
|
|
|
45
50
|
// Flag to check if compression is running
|
|
46
51
|
var isRunning = true
|
|
47
52
|
|
|
53
|
+
private fun getStreamableOutputFile(cacheFile: File): File =
|
|
54
|
+
File(
|
|
55
|
+
cacheFile.parentFile ?: File("."),
|
|
56
|
+
"${cacheFile.nameWithoutExtension}$STREAMABLE_SUFFIX.${cacheFile.extension.ifEmpty { DEFAULT_OUTPUT_EXTENSION }}"
|
|
57
|
+
)
|
|
58
|
+
|
|
48
59
|
suspend fun compressVideo(
|
|
49
60
|
index: Int,
|
|
50
61
|
context: Context,
|
|
@@ -417,18 +428,27 @@ object Compressor {
|
|
|
417
428
|
|
|
418
429
|
var resultFile = cacheFile
|
|
419
430
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
431
|
+
try {
|
|
432
|
+
// Keep default outputs browser-compatible by moving the MP4 metadata before media data.
|
|
433
|
+
val targetFile = streamableFile?.let { File(it) } ?: getStreamableOutputFile(cacheFile)
|
|
434
|
+
val outputFile = if (targetFile.absolutePath == cacheFile.absolutePath) {
|
|
435
|
+
getStreamableOutputFile(cacheFile)
|
|
436
|
+
} else {
|
|
437
|
+
targetFile
|
|
438
|
+
}
|
|
439
|
+
val result = StreamableVideo.start(`in` = cacheFile, out = outputFile)
|
|
440
|
+
if (result) {
|
|
441
|
+
if (streamableFile == null || targetFile.absolutePath == cacheFile.absolutePath) {
|
|
442
|
+
cacheFile.delete()
|
|
443
|
+
outputFile.renameTo(cacheFile)
|
|
444
|
+
resultFile = cacheFile
|
|
445
|
+
} else {
|
|
446
|
+
resultFile = outputFile
|
|
426
447
|
cacheFile.delete()
|
|
427
448
|
}
|
|
428
|
-
|
|
429
|
-
} catch (e: Exception) {
|
|
430
|
-
printException(e)
|
|
431
449
|
}
|
|
450
|
+
} catch (e: Exception) {
|
|
451
|
+
printException(e)
|
|
432
452
|
}
|
|
433
453
|
if (!resultFile.exists() || resultFile.length() <= 32) {
|
|
434
454
|
return Result(
|
|
@@ -464,8 +484,16 @@ object Compressor {
|
|
|
464
484
|
if (audioIndex >= 0 && !disableAudio) {
|
|
465
485
|
extractor.selectTrack(audioIndex)
|
|
466
486
|
val audioFormat = extractor.getTrackFormat(audioIndex)
|
|
487
|
+
if (!isSupportedAudioFormat(audioFormat)) {
|
|
488
|
+
extractor.unselectTrack(audioIndex)
|
|
489
|
+
return
|
|
490
|
+
}
|
|
467
491
|
val muxerTrackIndex = mediaMuxer.addTrack(audioFormat, true)
|
|
468
|
-
var maxBufferSize = audioFormat.
|
|
492
|
+
var maxBufferSize = if (audioFormat.containsKey(MediaFormat.KEY_MAX_INPUT_SIZE)) {
|
|
493
|
+
audioFormat.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE)
|
|
494
|
+
} else {
|
|
495
|
+
64 * 1024
|
|
496
|
+
}
|
|
469
497
|
|
|
470
498
|
if (maxBufferSize <= 0) {
|
|
471
499
|
maxBufferSize = 64 * 1024
|
|
@@ -508,6 +536,16 @@ object Compressor {
|
|
|
508
536
|
}
|
|
509
537
|
}
|
|
510
538
|
|
|
539
|
+
private fun isSupportedAudioFormat(audioFormat: MediaFormat): Boolean {
|
|
540
|
+
if (!audioFormat.containsKey(MediaFormat.KEY_SAMPLE_RATE) ||
|
|
541
|
+
!audioFormat.containsKey(MediaFormat.KEY_CHANNEL_COUNT)) {
|
|
542
|
+
return false
|
|
543
|
+
}
|
|
544
|
+
val sampleRate = audioFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE)
|
|
545
|
+
val channelCount = audioFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT)
|
|
546
|
+
return channelCount > 0 && sampleRate in SUPPORTED_AUDIO_SAMPLE_RATES
|
|
547
|
+
}
|
|
548
|
+
|
|
511
549
|
// Function to prepare the video encoder
|
|
512
550
|
private fun prepareEncoder(outputFormat: MediaFormat, hasQTI: Boolean): MediaCodec {
|
|
513
551
|
|
|
@@ -167,13 +167,14 @@ class ImageCompressor {
|
|
|
167
167
|
static func writeImage(_ image: UIImage, output: Int, quality: Float, outputExtension: String, isBase64: Bool, disablePngTransparency: Bool, isEnableAutoCompress: Bool, actualImagePath: String?)-> String {
|
|
168
168
|
var data: Data
|
|
169
169
|
var exception: NSException?
|
|
170
|
+
let normalizedQuality = CGFloat(min(max(quality, 0), 1))
|
|
170
171
|
|
|
171
172
|
switch OutputType(rawValue: output)! {
|
|
172
173
|
case .jpg:
|
|
173
|
-
data = image.jpegData(compressionQuality:
|
|
174
|
+
data = image.jpegData(compressionQuality: normalizedQuality)!
|
|
174
175
|
case .png:
|
|
175
176
|
if disablePngTransparency {
|
|
176
|
-
data = image.jpegData(compressionQuality:
|
|
177
|
+
data = image.jpegData(compressionQuality: normalizedQuality)!
|
|
177
178
|
let compressedImage = UIImage(data: data)
|
|
178
179
|
data = compressedImage!.pngData()!
|
|
179
180
|
} else {
|
|
@@ -10,6 +10,7 @@ import AVFoundation
|
|
|
10
10
|
import UIKit
|
|
11
11
|
|
|
12
12
|
class CreateVideoThumbnail: NSObject {
|
|
13
|
+
private static let defaultQuality = 0.9
|
|
13
14
|
|
|
14
15
|
func create(_ fileUrl:String, options: NSDictionary, resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
15
16
|
let headers = options["headers"] as? [String: Any] ?? [:]
|
|
@@ -49,21 +50,26 @@ class CreateVideoThumbnail: NSObject {
|
|
|
49
50
|
vidURL = URL(fileURLWithPath: fileUrl)
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
let
|
|
53
|
+
guard let vidURL = vidURL else {
|
|
54
|
+
reject("CreateVideoThumbnail", "Unable to create a URL from the provided video path", nil)
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
let quality = Self.normalizedQuality(options["quality"])
|
|
58
|
+
let asset = AVURLAsset(url: vidURL, options: ["AVURLAssetHTTPHeaderFieldsKey": headers])
|
|
53
59
|
generateThumbImage(asset: asset, atTime: 0, completion: { thumbnail in
|
|
54
60
|
// Generate thumbnail
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
try? data.write(to: URL(fileURLWithPath: fullPath))
|
|
59
|
-
resolve([
|
|
60
|
-
"path": fullPath,
|
|
61
|
-
"size": Float(data.count),
|
|
62
|
-
"mime": "image/\(format)",
|
|
63
|
-
"width": Float(thumbnail.size.width),
|
|
64
|
-
"height": Float(thumbnail.size.height)
|
|
65
|
-
] as [String : Any])
|
|
61
|
+
guard let data = thumbnail.jpegData(compressionQuality: quality) else {
|
|
62
|
+
reject("CreateVideoThumbnail", "Unable to encode video thumbnail", nil)
|
|
63
|
+
return
|
|
66
64
|
}
|
|
65
|
+
try? data.write(to: URL(fileURLWithPath: fullPath))
|
|
66
|
+
resolve([
|
|
67
|
+
"path": fullPath,
|
|
68
|
+
"size": Float(data.count),
|
|
69
|
+
"mime": "image/\(format)",
|
|
70
|
+
"width": Float(thumbnail.size.width),
|
|
71
|
+
"height": Float(thumbnail.size.height)
|
|
72
|
+
] as [String : Any])
|
|
67
73
|
}, failure: { error in
|
|
68
74
|
reject(error._domain, error.localizedDescription, nil)
|
|
69
75
|
})
|
|
@@ -98,20 +104,33 @@ class CreateVideoThumbnail: NSObject {
|
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
106
|
|
|
107
|
+
private static func normalizedQuality(_ value: Any?) -> CGFloat {
|
|
108
|
+
let rawValue = (value as? NSNumber)?.doubleValue ?? defaultQuality
|
|
109
|
+
return CGFloat(min(max(rawValue, 0), 1))
|
|
110
|
+
}
|
|
111
|
+
|
|
101
112
|
func generateThumbImage(asset: AVURLAsset, atTime timeStamp: Int, completion: @escaping (UIImage) -> Void, failure: @escaping (Error) -> Void) {
|
|
102
113
|
let generator = AVAssetImageGenerator(asset: asset)
|
|
103
114
|
generator.appliesPreferredTrackTransform = true
|
|
104
115
|
generator.maximumSize = CGSize(width: 512, height: 512)
|
|
105
|
-
generator.requestedTimeToleranceBefore =
|
|
106
|
-
generator.requestedTimeToleranceAfter =
|
|
107
|
-
let
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
generator.requestedTimeToleranceBefore = .positiveInfinity
|
|
117
|
+
generator.requestedTimeToleranceAfter = .positiveInfinity
|
|
118
|
+
let times = [
|
|
119
|
+
CMTimeMake(value: Int64(timeStamp), timescale: 1000),
|
|
120
|
+
CMTimeMake(value: 1000, timescale: 1000)
|
|
121
|
+
]
|
|
122
|
+
var lastError: Error?
|
|
123
|
+
|
|
124
|
+
for time in times {
|
|
125
|
+
do {
|
|
126
|
+
let cgImage = try generator.copyCGImage(at: time, actualTime: nil)
|
|
127
|
+
completion(UIImage(cgImage: cgImage))
|
|
128
|
+
return
|
|
129
|
+
} catch {
|
|
130
|
+
lastError = error
|
|
114
131
|
}
|
|
115
132
|
}
|
|
133
|
+
|
|
134
|
+
failure(lastError ?? NSError(domain: "CreateVideoThumbnail", code: -1, userInfo: [NSLocalizedDescriptionKey: "Unable to create thumbnail"]))
|
|
116
135
|
}
|
|
117
136
|
}
|
package/ios/Utils/Uploader.swift
CHANGED
|
@@ -26,7 +26,7 @@ struct UploadError: Error {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
class Uploader
|
|
29
|
+
class Uploader: NSObject, URLSessionDataDelegate, URLSessionTaskDelegate {
|
|
30
30
|
var uploadResolvers: [String: RCTPromiseResolveBlock] = [:]
|
|
31
31
|
var uploadRejectors: [String: RCTPromiseRejectBlock] = [:]
|
|
32
32
|
var currentTask: URLSessionDataTask?
|
|
@@ -124,11 +124,11 @@ class Uploader : NSObject, URLSessionTaskDelegate{
|
|
|
124
124
|
guard let uuid = session.configuration.identifier else {return}
|
|
125
125
|
guard let reject = uploadRejectors[uuid] else{return}
|
|
126
126
|
guard let resolve = uploadResolvers[uuid] else{return}
|
|
127
|
-
guard let data = self.storage[task.taskIdentifier],
|
|
128
|
-
let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] else {return}
|
|
129
127
|
guard error == nil else {
|
|
130
128
|
reject("failed", "Upload Failed", error)
|
|
131
129
|
uploadRejectors[uuid] = nil
|
|
130
|
+
uploadResolvers[uuid] = nil
|
|
131
|
+
self.storage[task.taskIdentifier] = nil
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
134
|
|
|
@@ -136,19 +136,26 @@ class Uploader : NSObject, URLSessionTaskDelegate{
|
|
|
136
136
|
let uploadError = UploadError(message: "Response is not defined")
|
|
137
137
|
reject("failed", "Upload Failed", uploadError)
|
|
138
138
|
uploadRejectors[uuid] = nil
|
|
139
|
+
uploadResolvers[uuid] = nil
|
|
140
|
+
self.storage[task.taskIdentifier] = nil
|
|
139
141
|
return;
|
|
140
142
|
}
|
|
141
143
|
|
|
142
|
-
let
|
|
143
|
-
|
|
144
|
+
let data = self.storage[task.taskIdentifier] ?? Data()
|
|
145
|
+
let body = String(data: data, encoding: .utf8) ?? ""
|
|
146
|
+
let result: [String : Any] = ["status": response.statusCode, "headers": response.allHeaderFields, "body": body]
|
|
147
|
+
|
|
144
148
|
resolve(result)
|
|
145
149
|
uploadResolvers[uuid] = nil
|
|
150
|
+
uploadRejectors[uuid] = nil
|
|
146
151
|
self.storage[task.taskIdentifier] = nil
|
|
147
152
|
}
|
|
148
|
-
|
|
153
|
+
|
|
149
154
|
|
|
150
155
|
public func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
|
|
151
|
-
self.storage[dataTask.taskIdentifier]
|
|
156
|
+
var responseData = self.storage[dataTask.taskIdentifier] ?? Data()
|
|
157
|
+
responseData.append(data)
|
|
158
|
+
self.storage[dataTask.taskIdentifier] = responseData
|
|
152
159
|
}
|
|
153
160
|
|
|
154
161
|
func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64)
|
|
@@ -347,18 +347,22 @@ class VideoCompressor {
|
|
|
347
347
|
}, completionHandler: { result in
|
|
348
348
|
currentVideoCompression=0;
|
|
349
349
|
self.compressorExports[uuid] = nil
|
|
350
|
-
switch
|
|
351
|
-
case .
|
|
352
|
-
|
|
350
|
+
switch result {
|
|
351
|
+
case .success:
|
|
352
|
+
if let outputURL = exporter.outputURL {
|
|
353
|
+
onCompletion(outputURL)
|
|
354
|
+
} else {
|
|
355
|
+
onFailure(CompressionError(message: "Compression succeeded but output URL is unavailable"))
|
|
356
|
+
}
|
|
353
357
|
break
|
|
354
|
-
case .
|
|
355
|
-
|
|
358
|
+
case .failure(let error):
|
|
359
|
+
if let nexterError = error as? NextLevelSessionExporterError, case .cancelled = nexterError {
|
|
360
|
+
onFailure(CompressionError(message: "Compression has cancelled"))
|
|
361
|
+
} else {
|
|
356
362
|
onFailure(error)
|
|
357
|
-
|
|
358
|
-
default:
|
|
359
|
-
onFailure(exporter.error ?? CompressionError(message: "Compression failed"))
|
|
363
|
+
}
|
|
360
364
|
break
|
|
361
|
-
|
|
365
|
+
}
|
|
362
366
|
})
|
|
363
367
|
}
|
|
364
368
|
|
|
@@ -373,58 +377,54 @@ class VideoCompressor {
|
|
|
373
377
|
|
|
374
378
|
|
|
375
379
|
func getVideoMetaData(_ filePath: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
if absoluteImagePath.hasPrefix("file://") {
|
|
379
|
-
|
|
380
|
-
let absoluteImagePath = URL(string: absoluteImagePath)!.path
|
|
381
|
-
let fileManager = FileManager.default
|
|
382
|
-
var isDir: ObjCBool = false
|
|
383
|
-
|
|
384
|
-
if !fileManager.fileExists(atPath: absoluteImagePath, isDirectory: &isDir) || isDir.boolValue {
|
|
385
|
-
let err = NSError(domain: "file not found", code: -15, userInfo: nil)
|
|
386
|
-
reject(String(err.code), err.localizedDescription, err)
|
|
387
|
-
return
|
|
388
|
-
}
|
|
380
|
+
VideoCompressor.getAbsoluteVideoPath(filePath, options: [:]) { absoluteImagePath in
|
|
381
|
+
if absoluteImagePath.hasPrefix("file://") {
|
|
389
382
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
var result: [String: Any] = [:]
|
|
395
|
-
let assetOptions: [String: Any] = [AVURLAssetPreferPreciseDurationAndTimingKey: true]
|
|
396
|
-
let asset = AVURLAsset(url: URL(fileURLWithPath: absoluteImagePath), options: assetOptions)
|
|
397
|
-
if let avAsset = asset.tracks(withMediaType: .video).first {
|
|
398
|
-
let size = avAsset.naturalSize
|
|
399
|
-
let _extension = (absoluteImagePath as NSString).pathExtension
|
|
400
|
-
let time = asset.duration
|
|
401
|
-
let seconds = Double(time.value) / Double(time.timescale)
|
|
402
|
-
|
|
403
|
-
result["width"] = size.width
|
|
404
|
-
result["height"] = size.height
|
|
405
|
-
result["extension"] = _extension
|
|
406
|
-
result["size"] = fileSizeString
|
|
407
|
-
result["duration"] = seconds
|
|
408
|
-
|
|
409
|
-
var commonMetadata: [AVMetadataItem] = []
|
|
410
|
-
for key in self.metadatas {
|
|
411
|
-
let items = AVMetadataItem.metadataItems(from: asset.commonMetadata, withKey: key, keySpace: AVMetadataKeySpace.common)
|
|
412
|
-
commonMetadata.append(contentsOf: items)
|
|
413
|
-
}
|
|
383
|
+
let absoluteImagePath = URL(string: absoluteImagePath)!.path
|
|
384
|
+
let fileManager = FileManager.default
|
|
385
|
+
var isDir: ObjCBool = false
|
|
414
386
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
387
|
+
if !fileManager.fileExists(atPath: absoluteImagePath, isDirectory: &isDir) || isDir.boolValue {
|
|
388
|
+
let err = NSError(domain: "file not found", code: -15, userInfo: nil)
|
|
389
|
+
reject(String(err.code), err.localizedDescription, err)
|
|
390
|
+
return
|
|
391
|
+
}
|
|
420
392
|
|
|
421
|
-
|
|
393
|
+
let attrs = try? fileManager.attributesOfItem(atPath: absoluteImagePath)
|
|
394
|
+
if let fileSize = attrs?[FileAttributeKey.size] as? UInt64 {
|
|
395
|
+
let fileSizeString = fileSize
|
|
396
|
+
|
|
397
|
+
var result: [String: Any] = [:]
|
|
398
|
+
let assetOptions: [String: Any] = [AVURLAssetPreferPreciseDurationAndTimingKey: true]
|
|
399
|
+
let asset = AVURLAsset(url: URL(fileURLWithPath: absoluteImagePath), options: assetOptions)
|
|
400
|
+
if let avAsset = asset.tracks(withMediaType: .video).first {
|
|
401
|
+
let size = avAsset.naturalSize
|
|
402
|
+
let _extension = (absoluteImagePath as NSString).pathExtension
|
|
403
|
+
let time = asset.duration
|
|
404
|
+
let seconds = Double(time.value) / Double(time.timescale)
|
|
405
|
+
|
|
406
|
+
result["width"] = size.width
|
|
407
|
+
result["height"] = size.height
|
|
408
|
+
result["extension"] = _extension
|
|
409
|
+
result["size"] = fileSizeString
|
|
410
|
+
result["duration"] = seconds
|
|
411
|
+
|
|
412
|
+
var commonMetadata: [AVMetadataItem] = []
|
|
413
|
+
for key in self.metadatas {
|
|
414
|
+
let items = AVMetadataItem.metadataItems(from: asset.commonMetadata, withKey: key, keySpace: AVMetadataKeySpace.common)
|
|
415
|
+
commonMetadata.append(contentsOf: items)
|
|
422
416
|
}
|
|
417
|
+
|
|
418
|
+
for item in commonMetadata {
|
|
419
|
+
if let value = item.value {
|
|
420
|
+
result[item.commonKey!.rawValue] = value
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
resolve(result)
|
|
423
425
|
}
|
|
424
426
|
}
|
|
425
427
|
}
|
|
426
|
-
} catch {
|
|
427
|
-
reject(error.localizedDescription, error.localizedDescription, nil)
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
|
package/lib/commonjs/index.js
CHANGED
|
@@ -123,6 +123,7 @@ var _default = exports.default = {
|
|
|
123
123
|
getImageMetaData: _utils.getImageMetaData,
|
|
124
124
|
getFileSize: _utils.getFileSize,
|
|
125
125
|
backgroundUpload: _utils.backgroundUpload,
|
|
126
|
+
cancelUpload: _utils.cancelUpload,
|
|
126
127
|
createVideoThumbnail: _utils.createVideoThumbnail,
|
|
127
128
|
clearCache: _utils.clearCache,
|
|
128
129
|
download: _utils.download,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","e","__esModule","default","_default","exports","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getImageMetaData","getFileSize","backgroundUpload","createVideoThumbnail","clearCache","download","UploadType","UploaderHttpMethod"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAeiB,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAuBF;EACbG,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,UAAU,EAAVA,iBAAU;EACVC,MAAM,EAANA,aAAM;EACNC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,oBAAoB,EAApBA,2BAAoB;EACpBC,UAAU,EAAVA,iBAAU;EACVC,QAAQ,EAARA,eAAQ;EACRC,UAAU,EAAVA,iBAAU;EACVC,kBAAkB,EAAlBA;AACF,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","e","__esModule","default","_default","exports","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getImageMetaData","getFileSize","backgroundUpload","cancelUpload","createVideoThumbnail","clearCache","download","UploadType","UploaderHttpMethod"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAeiB,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAuBF;EACbG,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,KAAK,EAALA,cAAK;EACLC,UAAU,EAAVA,iBAAU;EACVC,MAAM,EAANA,aAAM;EACNC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,gBAAgB,EAAhBA,uBAAgB;EAChBC,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,YAAY,EAAZA,mBAAY;EACZC,oBAAoB,EAApBA,2BAAoB;EACpBC,UAAU,EAAVA,iBAAU;EACVC,QAAQ,EAARA,eAAQ;EACRC,UAAU,EAAVA,iBAAU;EACVC,kBAAkB,EAAlBA;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Main","require","_reactNative","_Downloader","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Uploader","_helpers","INCORRECT_INPUT_PATH","DEFAULT_COMPRESS_AUDIO_OPTIONS","quality","generateFilePath","extension","Promise","resolve","reject","Compressor","then","result","catch","error","getRealPath","path","type","getVideoMetaData","unifyMetaData","exifResult","output","isIos","Platform","OS","ImageWidth","PixelWidth","parseInt","ImageHeight","PixelHeight","ImageLength","Orientation","size","exif","getImageMetaData","createVideoThumbnail","fileUrl","options","clearCache","cacheDir","isValidUrl","url","test","getFullFilename","_path","includes","length","substring","array","split","isFileNameError","filename","getFilename","fullFilename","slice","join","isRemoteMedia","getDetails","mediaFullPath","extesnion","Error","mediaInfo","JSON","parse","mediaInformation","bitrate","getMediaProperties","bit_rate","Number","format","e","getFileSize","filePath"],"sourceRoot":"../../../src","sources":["utils/index.tsx"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_Main","require","_reactNative","_Downloader","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Uploader","_helpers","INCORRECT_INPUT_PATH","DEFAULT_COMPRESS_AUDIO_OPTIONS","quality","generateFilePath","extension","Promise","resolve","reject","Compressor","then","result","catch","error","getRealPath","path","type","getVideoMetaData","unifyMetaData","exifResult","output","isIos","Platform","OS","ImageWidth","PixelWidth","parseInt","ImageHeight","PixelHeight","ImageLength","Orientation","size","exif","getImageMetaData","createVideoThumbnail","fileUrl","options","clearCache","cacheDir","isValidUrl","url","test","getFullFilename","_path","includes","length","substring","array","split","isFileNameError","filename","getFilename","fullFilename","slice","join","isRemoteMedia","getDetails","mediaFullPath","extesnion","Error","mediaInfo","JSON","parse","mediaInformation","bitrate","getMediaProperties","bit_rate","Number","format","e","getFileSize","filePath"],"sourceRoot":"../../../src","sources":["utils/index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getImageMetaData","getFileSize","backgroundUpload","cancelUpload","createVideoThumbnail","download","clearCache","UploadType","UploaderHttpMethod"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,SAAS;AAE3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,SACEC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,YAAY,EACZC,oBAAoB,EACpBC,QAAQ,EACRC,UAAU,EACVC,UAAU,EACVC,kBAAkB,QACb,SAAS;AAEhB,SACEhB,KAAK,EACLC,KAAK,EACLC,KAAK,EACLQ,gBAAgB,EAChBC,YAAY,EACZE,QAAQ;AACR;AACAV,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBI,oBAAoB,EACpBE,UAAU,EACVL,WAAW,EACXM,UAAU,EACVC,kBAAkB;AAGpB,eAAe;EACbhB,KAAK;EACLC,KAAK;EACLC,KAAK;EACLC,UAAU;EACVC,MAAM;EACNC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;
|
|
1
|
+
{"version":3,"names":["Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getImageMetaData","getFileSize","backgroundUpload","cancelUpload","createVideoThumbnail","download","clearCache","UploadType","UploaderHttpMethod"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,SAAS;AAE3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,OAAOC,KAAK,MAAM,SAAS;AAC3B,SACEC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,YAAY,EACZC,oBAAoB,EACpBC,QAAQ,EACRC,UAAU,EACVC,UAAU,EACVC,kBAAkB,QACb,SAAS;AAEhB,SACEhB,KAAK,EACLC,KAAK,EACLC,KAAK,EACLQ,gBAAgB,EAChBC,YAAY,EACZE,QAAQ;AACR;AACAV,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,gBAAgB,EAChBI,oBAAoB,EACpBE,UAAU,EACVL,WAAW,EACXM,UAAU,EACVC,kBAAkB;AAGpB,eAAe;EACbhB,KAAK;EACLC,KAAK;EACLC,KAAK;EACLC,UAAU;EACVC,MAAM;EACNC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBC,gBAAgB;EAChBC,WAAW;EACXC,gBAAgB;EAChBC,YAAY;EACZC,oBAAoB;EACpBE,UAAU;EACVD,QAAQ;EACRE,UAAU;EACVC;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Compressor","Platform","INCORRECT_INPUT_PATH","DEFAULT_COMPRESS_AUDIO_OPTIONS","quality","generateFilePath","extension","Promise","resolve","reject","then","result","catch","error","getRealPath","path","type","getVideoMetaData","unifyMetaData","exifResult","output","isIos","OS","ImageWidth","PixelWidth","parseInt","ImageHeight","PixelHeight","ImageLength","Orientation","size","exif","getImageMetaData","createVideoThumbnail","fileUrl","options","clearCache","cacheDir","isValidUrl","url","test","getFullFilename","_path","includes","length","substring","array","split","isFileNameError","filename","getFilename","fullFilename","slice","join","isRemoteMedia","getDetails","mediaFullPath","extesnion","Error","mediaInfo","JSON","parse","mediaInformation","bitrate","getMediaProperties","bit_rate","Number","format","e","getFileSize","filePath"],"sourceRoot":"../../../src","sources":["utils/index.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,SAAS;AACpC,SAASC,QAAQ,QAAQ,cAAc;AAEvC,MAAMC,oBAAoB,GAAG,kDAAkD;AAe/E,OAAO,MAAMC,8BAAqD,GAAG;EACnE;EACAC,OAAO,EAAE;AACX,CAAC;
|
|
1
|
+
{"version":3,"names":["Compressor","Platform","INCORRECT_INPUT_PATH","DEFAULT_COMPRESS_AUDIO_OPTIONS","quality","generateFilePath","extension","Promise","resolve","reject","then","result","catch","error","getRealPath","path","type","getVideoMetaData","unifyMetaData","exifResult","output","isIos","OS","ImageWidth","PixelWidth","parseInt","ImageHeight","PixelHeight","ImageLength","Orientation","size","exif","getImageMetaData","createVideoThumbnail","fileUrl","options","clearCache","cacheDir","isValidUrl","url","test","getFullFilename","_path","includes","length","substring","array","split","isFileNameError","filename","getFilename","fullFilename","slice","join","isRemoteMedia","getDetails","mediaFullPath","extesnion","Error","mediaInfo","JSON","parse","mediaInformation","bitrate","getMediaProperties","bit_rate","Number","format","e","getFileSize","filePath"],"sourceRoot":"../../../src","sources":["utils/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,10 +34,12 @@ declare const _default: {
|
|
|
34
34
|
}>;
|
|
35
35
|
getFileSize: (filePath: string) => Promise<string>;
|
|
36
36
|
backgroundUpload: (url: string, fileUrl: string, options: import("./utils").UploaderOptions, onProgress?: (writtem: number, total: number) => void, abortSignal?: AbortSignal) => Promise<any>;
|
|
37
|
+
cancelUpload: (uuid?: string, shouldCancelAll?: boolean) => void;
|
|
37
38
|
createVideoThumbnail: (fileUrl: string, options?: {
|
|
38
39
|
headers?: {
|
|
39
40
|
[key: string]: string;
|
|
40
41
|
};
|
|
42
|
+
quality?: number;
|
|
41
43
|
}) => Promise<{
|
|
42
44
|
path: string;
|
|
43
45
|
size: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EAER,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,UAAU,EACV,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,mBAAmB,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EAER,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,UAAU,EACV,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,mBAAmB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAMhC,CAAC;;;eAGH,CAAD;;;;;;;;;;;;;AARD,wBAkBE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.tsx"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAG7C,KAAK,qBAAqB,GAAG;IAE3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAG5C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC;AAEF,KAAK,wBAAwB,GAAG,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.tsx"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAG7C,KAAK,qBAAqB,GAAG;IAE3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,qBAG5C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC;AAEF,KAAK,wBAAwB,GAAG,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KACE,OAAO,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D,KAAK,oBAAoB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACjC,CAAC,CAAC;AAEH,KAAK,oBAAoB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AACH,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAElF,eAAO,MAAM,gBAAgB,EAAE,GAM9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAEzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,oBAE9B,CAAC;AAiBF,eAAO,MAAM,gBAAgB,EAAE,oBAG9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,wBAElC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,cAExB,CAAC;AAuCF,eAAO,MAAM,UAAU,GAAI,eAAe,MAAM,EAAE,YAAW,KAAK,GAAG,KAAa,KAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CA6BtG,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAElE,CAAC;AAEF,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-compressor",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.2",
|
|
4
4
|
"description": "Compress Image, Video, and Audio same like Whatsapp & Auto/Manual Compression | Background Upload | Download File | Create Video Thumbnail",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -29,6 +29,9 @@
|
|
|
29
29
|
],
|
|
30
30
|
"scripts": {
|
|
31
31
|
"test": "jest",
|
|
32
|
+
"test:pr": "yarn test --runInBand && yarn typecheck && yarn lint",
|
|
33
|
+
"test:harness:android": "cd examples/bare && react-native-harness --config ./jest.harness.config.mjs --harnessRunner android --verbose",
|
|
34
|
+
"test:harness:ios": "cd examples/bare && react-native-harness --config ./jest.harness.config.mjs --harnessRunner ios --verbose",
|
|
32
35
|
"typecheck": "tsc --noEmit",
|
|
33
36
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
34
37
|
"prepack": "bob build",
|
|
@@ -88,6 +91,8 @@
|
|
|
88
91
|
"@eslint/js": "^10.0.1",
|
|
89
92
|
"@expo/config-plugins": "^55.0.8",
|
|
90
93
|
"@jest/globals": "^30.0.0",
|
|
94
|
+
"@react-native-harness/platform-android": "1.1.0",
|
|
95
|
+
"@react-native-harness/platform-apple": "1.1.0",
|
|
91
96
|
"@react-native/babel-preset": "0.85.0",
|
|
92
97
|
"@react-native/eslint-config": "0.85.0",
|
|
93
98
|
"@react-native/jest-preset": "0.85.0",
|
|
@@ -105,6 +110,7 @@
|
|
|
105
110
|
"react": "19.2.3",
|
|
106
111
|
"react-native": "0.85.0",
|
|
107
112
|
"react-native-builder-bob": "^0.41.0",
|
|
113
|
+
"react-native-harness": "1.1.0",
|
|
108
114
|
"release-it": "^19.2.4",
|
|
109
115
|
"turbo": "^2.8.21",
|
|
110
116
|
"typescript": "^6.0.2"
|
package/src/index.tsx
CHANGED