react-native-compressor 1.7.1 → 1.8.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.
- package/README.md +40 -15
- package/android/build.gradle +8 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.kt +527 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioMain.kt +31 -0
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +157 -0
- package/android/src/main/java/com/reactnativecompressor/CompressorPackage.kt +34 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.kt +199 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressorOptions.kt +57 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageMain.kt +31 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageSize.kt +3 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Downloader.kt +119 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/EventEmitterHandler.kt +66 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.kt +61 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.kt +177 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Uploader.kt +117 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.kt +162 -0
- package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression.kt +63 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.kt +125 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoMain.kt +86 -0
- package/android/src/newarch/CompressorSpec.kt +5 -0
- package/android/src/oldarch/CompressorSpec.kt +32 -0
- package/ios/Audio/AudioMain.swift +115 -0
- package/ios/Compressor-Bridging-Header.h +1 -2
- package/ios/Compressor.h +0 -8
- package/ios/Compressor.mm +28 -389
- package/ios/CompressorManager.swift +96 -0
- package/ios/Image/ImageCompressor.swift +354 -0
- package/ios/Image/ImageCompressorOptions.swift +93 -0
- package/ios/Image/ImageMain.swift +27 -0
- package/ios/Utils/Downloader.swift +157 -0
- package/ios/Utils/EventEmitterHandler.swift +54 -0
- package/ios/Utils/MediaCache.swift +48 -0
- package/ios/Utils/Uploader.swift +99 -0
- package/ios/Utils/Utils.swift +110 -0
- package/ios/Video/{VideoCompressor.swift → VideoMain.swift} +168 -147
- package/lib/commonjs/Image/index.js +1 -1
- package/lib/commonjs/Image/index.js.map +1 -1
- package/lib/commonjs/Main.js +1 -8
- package/lib/commonjs/Main.js.map +1 -1
- package/lib/commonjs/Spec/NativeCompressor.js.map +1 -1
- package/lib/commonjs/Video/index.js +4 -33
- package/lib/commonjs/Video/index.js.map +1 -1
- package/lib/commonjs/expo-plugin/compressor.js.map +1 -1
- package/lib/commonjs/index.js +11 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/Downloader.js +38 -0
- package/lib/commonjs/utils/Downloader.js.map +1 -0
- package/lib/commonjs/utils/Uploader.js +40 -0
- package/lib/commonjs/utils/Uploader.js.map +1 -0
- package/lib/commonjs/utils/index.js +35 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Image/index.js +1 -1
- package/lib/module/Image/index.js.map +1 -1
- package/lib/module/Main.js +1 -7
- package/lib/module/Main.js.map +1 -1
- package/lib/module/Spec/NativeCompressor.js.map +1 -1
- package/lib/module/Video/index.js +5 -33
- package/lib/module/Video/index.js.map +1 -1
- package/lib/module/expo-plugin/compressor.js.map +1 -1
- package/lib/module/index.js +6 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/Downloader.js +31 -0
- package/lib/module/utils/Downloader.js.map +1 -0
- package/lib/module/utils/Uploader.js +33 -0
- package/lib/module/utils/Uploader.js.map +1 -0
- package/lib/module/utils/index.js +2 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/Image/index.d.ts +4 -0
- package/lib/typescript/Image/index.d.ts.map +1 -1
- package/lib/typescript/Main.d.ts +1 -2
- package/lib/typescript/Main.d.ts.map +1 -1
- package/lib/typescript/Spec/NativeCompressor.d.ts +8 -2
- package/lib/typescript/Spec/NativeCompressor.d.ts.map +1 -1
- package/lib/typescript/Video/index.d.ts +4 -28
- package/lib/typescript/Video/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +5 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/Downloader.d.ts +2 -0
- package/lib/typescript/utils/Downloader.d.ts.map +1 -0
- package/lib/typescript/utils/Uploader.d.ts +28 -0
- package/lib/typescript/utils/Uploader.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +2 -1
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/package.json +6 -4
- package/src/Image/index.tsx +5 -1
- package/src/Main.tsx +1 -15
- package/src/Spec/NativeCompressor.ts +14 -2
- package/src/Video/index.tsx +11 -84
- package/src/expo-plugin/compressor.ts +1 -1
- package/src/index.tsx +6 -3
- package/src/utils/Downloader.tsx +38 -0
- package/src/utils/Uploader.tsx +78 -0
- package/src/utils/index.tsx +2 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +0 -605
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +0 -220
- package/android/src/main/java/com/reactnativecompressor/CompressorPackage.java +0 -58
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.java +0 -257
- package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageCompressorOptions.java +0 -69
- package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageSize.java +0 -13
- package/android/src/main/java/com/reactnativecompressor/Utils/FileUplaoder/FileUploadHelper.java +0 -39
- package/android/src/main/java/com/reactnativecompressor/Utils/FileUplaoder/FileUploader.java +0 -129
- package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.java +0 -65
- package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.java +0 -210
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +0 -272
- package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression/AutoVideoCompression.java +0 -87
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.java +0 -182
- package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +0 -112
- package/android/src/newarch/CompressorSpec.java +0 -9
- package/android/src/newarch/VideoCompressorSpec.java +0 -9
- package/android/src/oldarch/CompressorSpec.java +0 -34
- package/android/src/oldarch/VideoCompressorSpec.java +0 -26
- package/ios/Image/ImageCompressor.h +0 -22
- package/ios/Image/ImageCompressor.m +0 -540
- package/ios/Image/ImageCompressorOptions.h +0 -28
- package/ios/Image/ImageCompressorOptions.m +0 -97
- package/ios/Utils/Downloader.h +0 -16
- package/ios/Utils/Downloader.m +0 -150
- package/ios/Utils/MediaCache.h +0 -11
- package/ios/Utils/MediaCache.m +0 -51
- package/ios/Video/VideoCompressor.h +0 -5
- package/ios/Video/VideoCompressor.m +0 -1
- package/lib/commonjs/Spec/NativeVideoCompressor.js +0 -10
- package/lib/commonjs/Spec/NativeVideoCompressor.js.map +0 -1
- package/lib/module/Spec/NativeVideoCompressor.js +0 -3
- package/lib/module/Spec/NativeVideoCompressor.js.map +0 -1
- package/lib/typescript/Spec/NativeVideoCompressor.d.ts +0 -13
- package/lib/typescript/Spec/NativeVideoCompressor.d.ts.map +0 -1
- package/src/Spec/NativeVideoCompressor.ts +0 -14
|
@@ -3,6 +3,7 @@ import AssetsLibrary
|
|
|
3
3
|
import AVFoundation
|
|
4
4
|
import NextLevelSessionExporter
|
|
5
5
|
import Photos
|
|
6
|
+
import MobileCoreServices
|
|
6
7
|
|
|
7
8
|
struct CompressionError: Error {
|
|
8
9
|
private let message: String
|
|
@@ -16,39 +17,28 @@ struct CompressionError: Error {
|
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
private let message: String
|
|
21
|
-
|
|
22
|
-
var localizedDescription: String {
|
|
23
|
-
return message
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
init(message: String) {
|
|
27
|
-
self.message = message
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@available(iOS 11.0, *)
|
|
32
|
-
@objc(VideoCompressor)
|
|
33
|
-
class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
|
|
20
|
+
class VideoCompressor {
|
|
34
21
|
var backgroundTaskId: UIBackgroundTaskIdentifier = .invalid;
|
|
35
|
-
|
|
36
|
-
var uploadResolvers: [String: RCTPromiseResolveBlock] = [:]
|
|
37
|
-
var uploadRejectors: [String: RCTPromiseRejectBlock] = [:]
|
|
22
|
+
|
|
38
23
|
var compressorExports: [String: NextLevelSessionExporter] = [:]
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
|
|
25
|
+
let metadatas: [String] = [
|
|
26
|
+
"albumName",
|
|
27
|
+
"artist",
|
|
28
|
+
"comment",
|
|
29
|
+
"copyrights",
|
|
30
|
+
"creationDate",
|
|
31
|
+
"date",
|
|
32
|
+
"encodedby",
|
|
33
|
+
"genre",
|
|
34
|
+
"language",
|
|
35
|
+
"location",
|
|
36
|
+
"lastModifiedDate",
|
|
37
|
+
"performer",
|
|
38
|
+
"publisher",
|
|
39
|
+
"title"
|
|
40
|
+
]
|
|
50
41
|
|
|
51
|
-
@objc(activateBackgroundTask:withResolver:withRejecter:)
|
|
52
42
|
func activateBackgroundTask(options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
53
43
|
guard backgroundTaskId == .invalid else {
|
|
54
44
|
reject("failed", "There is a background task already", nil)
|
|
@@ -57,14 +47,13 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
|
|
|
57
47
|
backgroundTaskId = UIApplication.shared.beginBackgroundTask(
|
|
58
48
|
withName: "video-upload",
|
|
59
49
|
expirationHandler: {
|
|
60
|
-
|
|
50
|
+
EventEmitterHandler.emitBackgroundTaskExpired(self.backgroundTaskId)
|
|
61
51
|
UIApplication.shared.endBackgroundTask(self.backgroundTaskId)
|
|
62
52
|
self.backgroundTaskId = .invalid
|
|
63
53
|
})
|
|
64
54
|
resolve(backgroundTaskId)
|
|
65
55
|
}
|
|
66
56
|
|
|
67
|
-
@objc(deactivateBackgroundTask:withResolver:withRejecter:)
|
|
68
57
|
func deactivateBackgroundTask(options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
69
58
|
guard backgroundTaskId != .invalid else {
|
|
70
59
|
reject("failed", "There is no active background task", nil)
|
|
@@ -75,14 +64,11 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
|
|
|
75
64
|
backgroundTaskId = .invalid
|
|
76
65
|
}
|
|
77
66
|
|
|
78
|
-
@objc(compress:withOptions:withResolver:withRejecter:)
|
|
79
67
|
func compress(fileUrl: String, options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
68
|
+
let progressDivider=options["progressDivider"] as? Int ?? 0
|
|
80
69
|
compressVideo(url: URL(string: fileUrl)!, options:options,
|
|
81
|
-
onProgress: { progress in
|
|
82
|
-
|
|
83
|
-
if(self.hasListener){
|
|
84
|
-
self.sendEvent(withName: "videoCompressProgress", body: ["uuid": options["uuid"], "data": ["progress": progress]])
|
|
85
|
-
}
|
|
70
|
+
onProgress: { progress in
|
|
71
|
+
EventEmitterHandler.emitVideoCompressProgress(progress, uuid: options["uuid"] as! String)
|
|
86
72
|
}, onCompletion: { newUrl in
|
|
87
73
|
resolve("\(newUrl)");
|
|
88
74
|
}, onFailure: { error in
|
|
@@ -90,105 +76,10 @@ class VideoCompressor: RCTEventEmitter, URLSessionTaskDelegate {
|
|
|
90
76
|
})
|
|
91
77
|
}
|
|
92
78
|
|
|
93
|
-
@objc(cancelCompression:)
|
|
94
79
|
func cancelCompression(uuid: String) -> Void {
|
|
95
80
|
compressorExports[uuid]?.cancelExport()
|
|
96
81
|
}
|
|
97
82
|
|
|
98
|
-
func makeValidUri(filePath: String) -> String {
|
|
99
|
-
let fileWithUrl = URL(fileURLWithPath: filePath)
|
|
100
|
-
let absoluteUrl = fileWithUrl.deletingLastPathComponent()
|
|
101
|
-
let fileUrl = "file://\(absoluteUrl.path)/\(fileWithUrl.lastPathComponent)"
|
|
102
|
-
return fileUrl;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
@objc(upload:withOptions:withResolver:withRejecter:)
|
|
106
|
-
func upload(filePath: String, options: [String: Any], resolve:@escaping RCTPromiseResolveBlock, reject:@escaping RCTPromiseRejectBlock) -> Void {
|
|
107
|
-
let fileUrl = makeValidUri(filePath: filePath)
|
|
108
|
-
|
|
109
|
-
guard let uuid = options["uuid"] as? String else {
|
|
110
|
-
let uploadError = UploadError(message: "UUID is missing")
|
|
111
|
-
reject("Upload Failed", "UUID is missing", uploadError)
|
|
112
|
-
return
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
guard let remoteUrl = options["url"] as? String else {
|
|
116
|
-
let uploadError = UploadError(message: "url is missing")
|
|
117
|
-
reject("Upload Failed", "url is missing", uploadError)
|
|
118
|
-
return
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
guard let method = options["method"] as? String else {
|
|
122
|
-
let uploadError = UploadError(message: "method is missing")
|
|
123
|
-
reject("Upload Failed", "method is missing", uploadError)
|
|
124
|
-
return
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
guard let file = URL(string: fileUrl) else{
|
|
128
|
-
let uploadError = UploadError(message: "invalid file url")
|
|
129
|
-
reject("Failed", "Upload Failed", uploadError)
|
|
130
|
-
return
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
let headers = options["headers"] as? [String: String] ?? [:]
|
|
134
|
-
|
|
135
|
-
let url = URL(string: remoteUrl)!
|
|
136
|
-
var request = URLRequest(url: url)
|
|
137
|
-
request.httpMethod=method
|
|
138
|
-
for(header, v) in headers{
|
|
139
|
-
request.setValue(v, forHTTPHeaderField: header)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
uploadResolvers[uuid] = resolve
|
|
143
|
-
uploadRejectors[uuid] = reject
|
|
144
|
-
// TODO: ADD Headers
|
|
145
|
-
let config = URLSessionConfiguration.background(withIdentifier: uuid)
|
|
146
|
-
let session = URLSession(configuration: config, delegate: self, delegateQueue: nil)
|
|
147
|
-
let task = session.uploadTask(with: request, fromFile: file)
|
|
148
|
-
task.resume()
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
|
|
152
|
-
guard let uuid = session.configuration.identifier else {return}
|
|
153
|
-
guard let reject = uploadRejectors[uuid] else{return}
|
|
154
|
-
guard let resolve = uploadResolvers[uuid] else{return}
|
|
155
|
-
guard error == nil else {
|
|
156
|
-
reject("failed", "Upload Failed", error)
|
|
157
|
-
uploadRejectors[uuid] = nil
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
guard let response = task.response as? HTTPURLResponse else {
|
|
162
|
-
let uploadError = UploadError(message: "Response is not defined")
|
|
163
|
-
reject("failed", "Upload Failed", uploadError)
|
|
164
|
-
uploadRejectors[uuid] = nil
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
let result: [String : Any] = ["status": response.statusCode, "headers": response.allHeaderFields, "body": ""]
|
|
169
|
-
|
|
170
|
-
resolve(result)
|
|
171
|
-
uploadResolvers[uuid] = nil
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64)
|
|
175
|
-
{
|
|
176
|
-
guard let uuid = session.configuration.identifier else {return}
|
|
177
|
-
self.sendEvent(withName: "VideoCompressorProgress", body: ["uuid": uuid, "data": ["written": totalBytesSent, "total": totalBytesExpectedToSend]])
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
override func supportedEvents() -> [String]! {
|
|
181
|
-
return ["videoCompressProgress", "VideoCompressorProgress", "backgroundTaskExpired","downloadProgress"]
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
override func stopObserving() -> Void {
|
|
185
|
-
hasListener = false
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
override func startObserving() -> Void {
|
|
189
|
-
hasListener = true
|
|
190
|
-
}
|
|
191
|
-
|
|
192
83
|
func getfileSize(forURL url: Any) -> Double {
|
|
193
84
|
var fileURL: URL?
|
|
194
85
|
var fileSize: Double = 0.0
|
|
@@ -213,17 +104,17 @@ func makeValidUri(filePath: String) -> String {
|
|
|
213
104
|
func compressVideo(url: URL, options: [String: Any], onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
|
|
214
105
|
let uuid:String = options["uuid"] as! String
|
|
215
106
|
|
|
216
|
-
|
|
107
|
+
VideoCompressor.getAbsoluteVideoPath(url.absoluteString, options: options) { absoluteVideoPath in
|
|
217
108
|
var minimumFileSizeForCompress:Double=0.0;
|
|
218
|
-
|
|
109
|
+
let videoURL = URL(string: absoluteVideoPath)
|
|
219
110
|
let fileSize=self.getfileSize(forURL: videoURL!);
|
|
220
111
|
if((options["minimumFileSizeForCompress"]) != nil)
|
|
221
|
-
{
|
|
112
|
+
{0
|
|
222
113
|
minimumFileSizeForCompress=options["minimumFileSizeForCompress"] as! Double;
|
|
223
114
|
}
|
|
224
115
|
if(fileSize>minimumFileSizeForCompress)
|
|
225
116
|
{
|
|
226
|
-
if(options["compressionMethod"] as! String=="
|
|
117
|
+
if(options["compressionMethod"] as! String=="auto")
|
|
227
118
|
{
|
|
228
119
|
self.autoCompressionHelper(url: videoURL!, options:options) { progress in
|
|
229
120
|
onProgress(progress)
|
|
@@ -280,6 +171,7 @@ func makeValidUri(filePath: String) -> String {
|
|
|
280
171
|
func autoCompressionHelper(url: URL, options: [String: Any], onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
|
|
281
172
|
let maxSize:Float = options["maxSize"] as! Float;
|
|
282
173
|
let uuid:String = options["uuid"] as! String
|
|
174
|
+
let progressDivider=options["progressDivider"] as? Int ?? 0
|
|
283
175
|
|
|
284
176
|
let asset = AVAsset(url: url)
|
|
285
177
|
guard asset.tracks.count >= 1 else {
|
|
@@ -304,7 +196,7 @@ func makeValidUri(filePath: String) -> String {
|
|
|
304
196
|
height: Int(resultHeight), width: Int(resultWidth)
|
|
305
197
|
);
|
|
306
198
|
|
|
307
|
-
exportVideoHelper(url: url, asset: asset, bitRate: videoBitRate, resultWidth: resultWidth, resultHeight: resultHeight,uuid: uuid) { progress in
|
|
199
|
+
exportVideoHelper(url: url, asset: asset, bitRate: videoBitRate, resultWidth: resultWidth, resultHeight: resultHeight,uuid: uuid,progressDivider: progressDivider) { progress in
|
|
308
200
|
onProgress(progress)
|
|
309
201
|
} onCompletion: { outputURL in
|
|
310
202
|
onCompletion(outputURL)
|
|
@@ -316,6 +208,7 @@ func makeValidUri(filePath: String) -> String {
|
|
|
316
208
|
func manualCompressionHelper(url: URL, options: [String: Any], onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
|
|
317
209
|
let uuid:String = options["uuid"] as! String
|
|
318
210
|
var bitRate=options["bitrate"] as! Float?;
|
|
211
|
+
let progressDivider=options["progressDivider"] as? Int ?? 0
|
|
319
212
|
let asset = AVAsset(url: url)
|
|
320
213
|
guard asset.tracks.count >= 1 else {
|
|
321
214
|
let error = CompressionError(message: "Invalid video URL, no track found")
|
|
@@ -343,7 +236,7 @@ func makeValidUri(filePath: String) -> String {
|
|
|
343
236
|
|
|
344
237
|
let videoBitRate = bitRate ?? height*width*1.5
|
|
345
238
|
|
|
346
|
-
exportVideoHelper(url: url, asset: asset, bitRate: Int(videoBitRate), resultWidth: width, resultHeight: height,uuid: uuid) { progress in
|
|
239
|
+
exportVideoHelper(url: url, asset: asset, bitRate: Int(videoBitRate), resultWidth: width, resultHeight: height,uuid: uuid,progressDivider: progressDivider) { progress in
|
|
347
240
|
onProgress(progress)
|
|
348
241
|
} onCompletion: { outputURL in
|
|
349
242
|
onCompletion(outputURL)
|
|
@@ -352,12 +245,13 @@ func makeValidUri(filePath: String) -> String {
|
|
|
352
245
|
}
|
|
353
246
|
}
|
|
354
247
|
|
|
355
|
-
func exportVideoHelper(url: URL,asset: AVAsset, bitRate: Int,resultWidth:Float,resultHeight:Float,uuid:String, onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
|
|
356
|
-
var
|
|
248
|
+
func exportVideoHelper(url: URL,asset: AVAsset, bitRate: Int,resultWidth:Float,resultHeight:Float,uuid:String,progressDivider: Int, onProgress: @escaping (Float) -> Void, onCompletion: @escaping (URL) -> Void, onFailure: @escaping (Error) -> Void){
|
|
249
|
+
var currentVideoCompression:Int=0
|
|
250
|
+
|
|
357
251
|
var tmpURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
|
|
358
252
|
.appendingPathComponent(ProcessInfo().globallyUniqueString)
|
|
359
253
|
.appendingPathExtension("mp4")
|
|
360
|
-
tmpURL = URL(string:makeValidUri(filePath: tmpURL.absoluteString))!
|
|
254
|
+
tmpURL = URL(string: Utils.makeValidUri(filePath: tmpURL.absoluteString))!
|
|
361
255
|
|
|
362
256
|
let exporter = NextLevelSessionExporter(withAsset: asset)
|
|
363
257
|
exporter.outputURL = tmpURL
|
|
@@ -384,15 +278,14 @@ func makeValidUri(filePath: String) -> String {
|
|
|
384
278
|
|
|
385
279
|
compressorExports[uuid] = exporter
|
|
386
280
|
exporter.export(progressHandler: { (progress) in
|
|
387
|
-
let
|
|
388
|
-
if(
|
|
281
|
+
let roundProgress:Int=Int((progress*100).rounded());
|
|
282
|
+
if(progressDivider==0||(roundProgress%progressDivider==0&&roundProgress>currentVideoCompression))
|
|
389
283
|
{
|
|
390
|
-
|
|
284
|
+
currentVideoCompression=roundProgress
|
|
391
285
|
onProgress(progress)
|
|
392
286
|
}
|
|
393
|
-
|
|
394
287
|
}, completionHandler: { result in
|
|
395
|
-
|
|
288
|
+
currentVideoCompression=0;
|
|
396
289
|
switch exporter.status {
|
|
397
290
|
case .completed:
|
|
398
291
|
onCompletion(exporter.outputURL!)
|
|
@@ -413,4 +306,132 @@ func makeValidUri(filePath: String) -> String {
|
|
|
413
306
|
return tracks[0];
|
|
414
307
|
}
|
|
415
308
|
|
|
309
|
+
|
|
310
|
+
func getVideoMetaData(_ filePath: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
311
|
+
do {
|
|
312
|
+
VideoCompressor.getAbsoluteVideoPath(filePath, options: [:]) { absoluteImagePath in
|
|
313
|
+
if absoluteImagePath.hasPrefix("file://") {
|
|
314
|
+
let absoluteImagePath = absoluteImagePath.replacingOccurrences(of: "file://", with: "")
|
|
315
|
+
let fileManager = FileManager.default
|
|
316
|
+
var isDir: ObjCBool = false
|
|
317
|
+
|
|
318
|
+
if !fileManager.fileExists(atPath: absoluteImagePath, isDirectory: &isDir) || isDir.boolValue {
|
|
319
|
+
let err = NSError(domain: "file not found", code: -15, userInfo: nil)
|
|
320
|
+
reject(String(err.code), err.localizedDescription, err)
|
|
321
|
+
return
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
let attrs = try? fileManager.attributesOfItem(atPath: absoluteImagePath)
|
|
325
|
+
if let fileSize = attrs?[FileAttributeKey.size] as? UInt64 {
|
|
326
|
+
let fileSizeString = String(fileSize)
|
|
327
|
+
|
|
328
|
+
var result: [String: Any] = [:]
|
|
329
|
+
let assetOptions: [String: Any] = [AVURLAssetPreferPreciseDurationAndTimingKey: true]
|
|
330
|
+
let asset = AVURLAsset(url: URL(fileURLWithPath: absoluteImagePath), options: assetOptions)
|
|
331
|
+
if let avAsset = asset.tracks(withMediaType: .video).first {
|
|
332
|
+
let size = avAsset.naturalSize
|
|
333
|
+
let _extension = (absoluteImagePath as NSString).pathExtension
|
|
334
|
+
let time = asset.duration
|
|
335
|
+
let seconds = Int(ceil(Double(time.value / Int64(time.timescale))))
|
|
336
|
+
|
|
337
|
+
result["width"] = String(format: "%.2f", size.width)
|
|
338
|
+
result["height"] = String(format: "%.2f", size.height)
|
|
339
|
+
result["extension"] = _extension
|
|
340
|
+
result["size"] = fileSizeString
|
|
341
|
+
result["duration"] = String(seconds)
|
|
342
|
+
|
|
343
|
+
var commonMetadata: [AVMetadataItem] = []
|
|
344
|
+
for key in self.metadatas {
|
|
345
|
+
let items = AVMetadataItem.metadataItems(from: asset.commonMetadata, withKey: key, keySpace: AVMetadataKeySpace.common)
|
|
346
|
+
commonMetadata.append(contentsOf: items)
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
for item in commonMetadata {
|
|
350
|
+
if let value = item.value {
|
|
351
|
+
result[item.commonKey!.rawValue] = value
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
resolve(result)
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
} catch {
|
|
361
|
+
reject(error.localizedDescription, error.localizedDescription, nil)
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
static func getAbsoluteVideoPath(_ videoPath: String, options: [String: Any], completionHandler: @escaping (String) -> Void) {
|
|
366
|
+
if videoPath.hasPrefix("http://") || videoPath.hasPrefix("https://") {
|
|
367
|
+
let uuid=options["uuid"] as? String ?? ""
|
|
368
|
+
let progressDivider=options["progressDivider"] as? Int ?? 0
|
|
369
|
+
Downloader.downloadFileAndSaveToCache(videoPath, uuid: uuid,progressDivider:progressDivider) { downloadedPath in
|
|
370
|
+
completionHandler(downloadedPath)
|
|
371
|
+
}
|
|
372
|
+
return
|
|
373
|
+
} else if !videoPath.contains("ph://") {
|
|
374
|
+
completionHandler(videoPath)
|
|
375
|
+
return
|
|
376
|
+
}
|
|
377
|
+
let assetId = videoPath.replacingOccurrences(of: "ph://", with: "")
|
|
378
|
+
let outputFileType = AVFileType.mp4
|
|
379
|
+
let pressetType = AVAssetExportPresetPassthrough
|
|
380
|
+
|
|
381
|
+
if assetId.isEmpty {
|
|
382
|
+
let error = NSError(domain: "RNGalleryManager", code: -91, userInfo: nil)
|
|
383
|
+
let exception = NSException(name: NSExceptionName(rawValue: "RNGalleryManager"), reason: "Empty asset ID.", userInfo: nil)
|
|
384
|
+
exception.raise()
|
|
385
|
+
return
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
let localIds = [assetId]
|
|
389
|
+
guard let videoAsset = PHAsset.fetchAssets(withLocalIdentifiers: localIds, options: nil).firstObject else {
|
|
390
|
+
return
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
let mimeType = UTTypeCopyPreferredTagWithClass(outputFileType as CFString, kUTTagClassMIMEType)?.takeRetainedValue() as String? ?? ""
|
|
394
|
+
let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType as CFString, nil)?.takeRetainedValue() as String? ?? ""
|
|
395
|
+
let extensionValue = UTTypeCopyPreferredTagWithClass(uti as CFString, kUTTagClassFilenameExtension)?.takeRetainedValue() as String? ?? ""
|
|
396
|
+
let path = Utils.generateCacheFilePath(extensionValue)
|
|
397
|
+
let outputUrl = URL(string: "file://\(path)")!
|
|
398
|
+
|
|
399
|
+
let videoRequestOptions = PHVideoRequestOptions()
|
|
400
|
+
videoRequestOptions.isNetworkAccessAllowed = true
|
|
401
|
+
videoRequestOptions.deliveryMode = .highQualityFormat
|
|
402
|
+
|
|
403
|
+
PHImageManager.default().requestExportSession(forVideo: videoAsset, options: videoRequestOptions, exportPreset: pressetType) { exportSession, _ in
|
|
404
|
+
guard let exportSession = exportSession else {
|
|
405
|
+
let error = NSError(domain: "RNGalleryManager", code: -91, userInfo: nil)
|
|
406
|
+
let exception = NSException(name: NSExceptionName(rawValue: "RNGalleryManager"), reason: "Export session is nil.", userInfo: nil)
|
|
407
|
+
exception.raise()
|
|
408
|
+
return
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
exportSession.shouldOptimizeForNetworkUse = true
|
|
412
|
+
exportSession.outputFileType = outputFileType
|
|
413
|
+
exportSession.outputURL = outputUrl
|
|
414
|
+
|
|
415
|
+
exportSession.exportAsynchronously {
|
|
416
|
+
switch exportSession.status {
|
|
417
|
+
case .failed:
|
|
418
|
+
let error = exportSession.error ?? NSError(domain: "RNGalleryManager", code: -91, userInfo: nil)
|
|
419
|
+
let codeWithDomain = "E\(error.localizedDescription)\(error)"
|
|
420
|
+
let exception = NSException(name: NSExceptionName(rawValue: codeWithDomain), reason: "Video export failed.", userInfo: nil)
|
|
421
|
+
exception.raise()
|
|
422
|
+
case .cancelled:
|
|
423
|
+
let error = NSError(domain: "RNGalleryManager", code: -91, userInfo: nil)
|
|
424
|
+
let exception = NSException(name: NSExceptionName(rawValue: "RNGalleryManager"), reason: "Video export cancelled.", userInfo: nil)
|
|
425
|
+
exception.raise()
|
|
426
|
+
case .completed:
|
|
427
|
+
completionHandler(outputUrl.absoluteString)
|
|
428
|
+
default:
|
|
429
|
+
let error = NSError(domain: "RNGalleryManager", code: -91, userInfo: nil)
|
|
430
|
+
let exception = NSException(name: NSExceptionName(rawValue: "RNGalleryManager"), reason: "Unknown status.", userInfo: nil)
|
|
431
|
+
exception.raise()
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
416
437
|
}
|
|
@@ -16,10 +16,10 @@ const Image = {
|
|
|
16
16
|
if (!value) {
|
|
17
17
|
throw new Error('Compression value is empty, please provide a value for compression.');
|
|
18
18
|
}
|
|
19
|
-
const uuid = (0, _utils.uuidv4)();
|
|
20
19
|
let subscription;
|
|
21
20
|
try {
|
|
22
21
|
if (options !== null && options !== void 0 && options.downloadProgress) {
|
|
22
|
+
const uuid = (0, _utils.uuidv4)();
|
|
23
23
|
//@ts-ignore
|
|
24
24
|
options.uuid = uuid;
|
|
25
25
|
subscription = ImageCompressEventEmitter.addListener('downloadProgress', event => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Main","require","_utils","_reactNative","base64UrlRegex","ImageCompressEventEmitter","NativeEventEmitter","Compressor","NativeImage","Image","compress","value","options","arguments","length","undefined","Error","
|
|
1
|
+
{"version":3,"names":["_Main","require","_utils","_reactNative","base64UrlRegex","ImageCompressEventEmitter","NativeEventEmitter","Compressor","NativeImage","Image","compress","value","options","arguments","length","undefined","Error","subscription","downloadProgress","uuid","uuidv4","addListener","event","data","progress","cleanData","replace","image_compress","remove","_default","exports","default"],"sourceRoot":"../../../src","sources":["Image/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,YAAA,GAAAF,OAAA;AAFA,MAAMG,cAAc,GAAG,6CAA6C;AAmDpE,MAAMC,yBAAyB,GAAG,IAAIC,+BAAkB,CAACC,gBAAU,CAAC;AAEpE,MAAMC,WAAW,GAAGD,gBAAU;AAM9B,MAAME,KAAgB,GAAG;EACvBC,QAAQ,EAAE,eAAAA,CAAOC,KAAK,EAAmB;IAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAClC,IAAI,CAACF,KAAK,EAAE;MACV,MAAM,IAAIK,KAAK,CACb,qEACF,CAAC;IACH;IAEA,IAAIC,YAAqC;IACzC,IAAI;MACF,IAAIL,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEM,gBAAgB,EAAE;QAC7B,MAAMC,IAAI,GAAG,IAAAC,aAAM,EAAC,CAAC;QACrB;QACAR,OAAO,CAACO,IAAI,GAAGA,IAAI;QACnBF,YAAY,GAAGZ,yBAAyB,CAACgB,WAAW,CAClD,kBAAkB,EACjBC,KAAU,IAAK;UACd,IAAIA,KAAK,CAACH,IAAI,KAAKA,IAAI,EAAE;YACvBP,OAAO,CAACM,gBAAgB,IACtBN,OAAO,CAACM,gBAAgB,CAACI,KAAK,CAACC,IAAI,CAACC,QAAQ,CAAC;UACjD;QACF,CACF,CAAC;MACH;MAEA,MAAMC,SAAS,GAAGd,KAAK,CAACe,OAAO,CAACtB,cAAc,EAAE,EAAE,CAAC;MACnD,OAAO,MAAMI,WAAW,CAACmB,cAAc,CAACF,SAAS,EAAEb,OAAO,CAAC;IAC7D,CAAC,SAAS;MACR;MACA,IAAIK,YAAY,EAAE;QAChBA,YAAY,CAACW,MAAM,CAAC,CAAC;MACvB;IACF;EACF;AACF,CAAC;AAAC,IAAAC,QAAA,GAEapB,KAAK;AAAAqB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
package/lib/commonjs/Main.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.Compressor = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
const LINKING_ERROR = `The package 'react-native-compressor' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
9
9
|
ios: "- You have run 'pod install'\n",
|
|
@@ -13,17 +13,10 @@ const LINKING_ERROR = `The package 'react-native-compressor' doesn't seem to be
|
|
|
13
13
|
// @ts-expect-error
|
|
14
14
|
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
15
15
|
const CompressorModule = isTurboModuleEnabled ? require('./Spec/NativeCompressor').default : _reactNative.NativeModules.Compressor;
|
|
16
|
-
const VideoCompressorModule = isTurboModuleEnabled ? require('./Spec/NativeVideoCompressor').default : _reactNative.NativeModules.VideoCompressor;
|
|
17
16
|
const Compressor = CompressorModule ? CompressorModule : new Proxy({}, {
|
|
18
17
|
get() {
|
|
19
18
|
throw new Error(LINKING_ERROR);
|
|
20
19
|
}
|
|
21
20
|
});
|
|
22
21
|
exports.Compressor = Compressor;
|
|
23
|
-
const VideoCompressor = VideoCompressorModule ? VideoCompressorModule : new Proxy({}, {
|
|
24
|
-
get() {
|
|
25
|
-
throw new Error(LINKING_ERROR);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
exports.VideoCompressor = VideoCompressor;
|
|
29
22
|
//# sourceMappingURL=Main.js.map
|
package/lib/commonjs/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","CompressorModule","NativeModules","Compressor","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","CompressorModule","NativeModules","Compressor","Proxy","get","Error","exports"],"sourceRoot":"../../src","sources":["Main.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAChB,kFAAiF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,kBAAkB,IAAI,IAAI;AAE9D,MAAMC,gBAAgB,GAAGH,oBAAoB,GACzCN,OAAO,CAAC,yBAAyB,CAAC,CAACK,OAAO,GAC1CK,0BAAa,CAACC,UAAU;AAE5B,MAAMA,UAAU,GAAGF,gBAAgB,GAC/BA,gBAAgB,GAChB,IAAIG,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACb,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAACc,OAAA,CAAAJ,UAAA,GAAAA,UAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","getEnforcing","exports","default"],"sourceRoot":"../../../src","sources":["Spec/NativeCompressor.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAyBpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
|
@@ -3,41 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.cancelCompression =
|
|
6
|
+
exports.default = exports.cancelCompression = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _Main = require("../Main");
|
|
9
9
|
var _utils = require("../utils");
|
|
10
|
-
const VideoCompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.
|
|
11
|
-
const NativeVideoCompressor = _Main.
|
|
12
|
-
const backgroundUpload = async (url, fileUrl, options, onProgress) => {
|
|
13
|
-
const uuid = (0, _utils.uuidv4)();
|
|
14
|
-
let subscription;
|
|
15
|
-
try {
|
|
16
|
-
if (onProgress) {
|
|
17
|
-
subscription = VideoCompressEventEmitter.addListener('VideoCompressorProgress', event => {
|
|
18
|
-
if (event.uuid === uuid) {
|
|
19
|
-
onProgress(event.data.written, event.data.total);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
if (_reactNative.Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
24
|
-
fileUrl = fileUrl.replace('file://', '');
|
|
25
|
-
}
|
|
26
|
-
const result = await NativeVideoCompressor.upload(fileUrl, {
|
|
27
|
-
uuid,
|
|
28
|
-
method: options.httpMethod,
|
|
29
|
-
headers: options.headers,
|
|
30
|
-
url
|
|
31
|
-
});
|
|
32
|
-
return result;
|
|
33
|
-
} finally {
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
if (subscription) {
|
|
36
|
-
subscription.remove();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
exports.backgroundUpload = backgroundUpload;
|
|
10
|
+
const VideoCompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor);
|
|
11
|
+
const NativeVideoCompressor = _Main.Compressor;
|
|
41
12
|
const cancelCompression = cancellationId => {
|
|
42
13
|
return NativeVideoCompressor.cancelCompression(cancellationId);
|
|
43
14
|
};
|
|
@@ -66,6 +37,7 @@ const Video = {
|
|
|
66
37
|
const modifiedOptions = {
|
|
67
38
|
uuid
|
|
68
39
|
};
|
|
40
|
+
if (options !== null && options !== void 0 && options.progressDivider) modifiedOptions.progressDivider = options === null || options === void 0 ? void 0 : options.progressDivider;
|
|
69
41
|
if (options !== null && options !== void 0 && options.bitrate) modifiedOptions.bitrate = options === null || options === void 0 ? void 0 : options.bitrate;
|
|
70
42
|
if (options !== null && options !== void 0 && options.compressionMethod) {
|
|
71
43
|
modifiedOptions.compressionMethod = options === null || options === void 0 ? void 0 : options.compressionMethod;
|
|
@@ -96,7 +68,6 @@ const Video = {
|
|
|
96
68
|
}
|
|
97
69
|
}
|
|
98
70
|
},
|
|
99
|
-
backgroundUpload,
|
|
100
71
|
cancelCompression,
|
|
101
72
|
activateBackgroundTask(onExpired) {
|
|
102
73
|
if (onExpired) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_Main","_utils","VideoCompressEventEmitter","NativeEventEmitter","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_Main","_utils","VideoCompressEventEmitter","NativeEventEmitter","Compressor","NativeVideoCompressor","cancelCompression","cancellationId","exports","Video","compress","fileUrl","options","onProgress","uuid","uuidv4","subscription","subscription2","addListener","event","data","progress","downloadProgress","modifiedOptions","progressDivider","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","undefined","getCancellationId","result","remove","activateBackgroundTask","onExpired","deactivateBackgroundTask","removeAllListeners","_default","default"],"sourceRoot":"../../../src","sources":["Video/index.tsx"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_configPlugins","require","pkg","withCompressor","config","_default","createRunOncePlugin","name","version","exports","default"],"sourceRoot":"../../../src","sources":["expo-plugin/compressor.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AADA;;AAEA,MAAMC,GAAG,GAAGD,OAAO,CAAC,uBAAuB,CAAC;AAI5C,MAAME,cAAmC,GAAIC,
|
|
1
|
+
{"version":3,"names":["_configPlugins","require","pkg","withCompressor","config","_default","createRunOncePlugin","name","version","exports","default"],"sourceRoot":"../../../src","sources":["expo-plugin/compressor.ts"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AADA;;AAEA,MAAMC,GAAG,GAAGD,OAAO,CAAC,uBAAuB,CAAC;AAI5C,MAAME,cAAmC,GAAIC,MAAW,IAAKA,MAAM;AAAC,IAAAC,QAAA,GAErD,IAAAC,kCAAmB,EAACH,cAAc,EAAED,GAAG,CAACK,IAAI,EAAEL,GAAG,CAACM,OAAO,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAL,QAAA"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -24,10 +24,16 @@ Object.defineProperty(exports, "Video", {
|
|
|
24
24
|
Object.defineProperty(exports, "backgroundUpload", {
|
|
25
25
|
enumerable: true,
|
|
26
26
|
get: function () {
|
|
27
|
-
return
|
|
27
|
+
return _utils.backgroundUpload;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
exports.default = void 0;
|
|
31
|
+
Object.defineProperty(exports, "download", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () {
|
|
34
|
+
return _utils.download;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
31
37
|
Object.defineProperty(exports, "generateFilePath", {
|
|
32
38
|
enumerable: true,
|
|
33
39
|
get: function () {
|
|
@@ -64,24 +70,23 @@ Object.defineProperty(exports, "uuidv4", {
|
|
|
64
70
|
return _utils.uuidv4;
|
|
65
71
|
}
|
|
66
72
|
});
|
|
67
|
-
var _Video =
|
|
73
|
+
var _Video = _interopRequireDefault(require("./Video"));
|
|
68
74
|
var _Audio = _interopRequireDefault(require("./Audio"));
|
|
69
75
|
var _Image = _interopRequireDefault(require("./Image"));
|
|
70
76
|
var _utils = require("./utils");
|
|
71
77
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
72
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
73
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
74
78
|
var _default = {
|
|
75
79
|
Video: _Video.default,
|
|
76
80
|
Audio: _Audio.default,
|
|
77
81
|
Image: _Image.default,
|
|
78
|
-
backgroundUpload: _Video.backgroundUpload,
|
|
79
82
|
getDetails: _utils.getDetails,
|
|
80
83
|
uuidv4: _utils.uuidv4,
|
|
81
84
|
generateFilePath: _utils.generateFilePath,
|
|
82
85
|
getRealPath: _utils.getRealPath,
|
|
83
86
|
getVideoMetaData: _utils.getVideoMetaData,
|
|
84
|
-
getFileSize: _utils.getFileSize
|
|
87
|
+
getFileSize: _utils.getFileSize,
|
|
88
|
+
backgroundUpload: _utils.backgroundUpload,
|
|
89
|
+
download: _utils.download
|
|
85
90
|
};
|
|
86
91
|
exports.default = _default;
|
|
87
92
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Video","
|
|
1
|
+
{"version":3,"names":["_Video","_interopRequireDefault","require","_Audio","_Image","_utils","obj","__esModule","default","_default","Video","Audio","Image","getDetails","uuidv4","generateFilePath","getRealPath","getVideoMetaData","getFileSize","backgroundUpload","download","exports"],"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;AASiB,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAiBF;EACbC,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,WAAW,EAAXA,kBAAW;EACXC,gBAAgB,EAAhBA,uBAAgB;EAChBC,QAAQ,EAARA;AACF,CAAC;AAAAC,OAAA,CAAAb,OAAA,GAAAC,QAAA"}
|