react-native-compressor 1.18.2 → 2.0.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/android/CMakeLists.txt +27 -0
- package/android/build.gradle +56 -58
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifestNew.xml +3 -0
- package/android/src/main/cpp/cpp-adapter.cpp +8 -0
- package/android/src/main/java/com/margelo/nitro/compressor/HybridCompressor.kt +213 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.kt +41 -21
- package/android/src/main/java/com/reactnativecompressor/NitroCompressorPackage.kt +30 -0
- package/android/src/main/java/com/reactnativecompressor/NitroPromiseAdapter.kt +55 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/EventEmitterHandler.kt +49 -45
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.kt +1 -1
- package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression.kt +1 -1
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressionProfile.kt +21 -11
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/compressor/Compressor.kt +311 -76
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/utils/CompressorUtils.kt +96 -5
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/utils/LocationExtractor.kt +397 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/LocationBox.kt +47 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/MP4Builder.kt +39 -7
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/Mp4Movie.kt +7 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressor/videoHelpers/OutputSurface.kt +30 -4
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.kt +28 -2
- package/ios/Audio/FormatConverter/FormatConverter+Compressed.swift +1 -1
- package/ios/Audio/FormatConverter/FormatConverter+Utilities.swift +1 -1
- package/ios/Audio/FormatConverter/FormatConverter.swift +5 -3
- package/ios/HybridCompressor.swift +247 -0
- package/ios/Image/ImageCompressor.swift +8 -2
- package/ios/Utils/EventEmitterHandler.swift +56 -34
- package/ios/Video/NextLevelSessionExporter.swift +43 -8
- package/ios/Video/VideoMain.swift +44 -14
- package/lib/commonjs/Audio/index.js +1 -1
- package/lib/commonjs/Audio/index.js.map +1 -1
- package/lib/commonjs/Image/index.js +2 -22
- package/lib/commonjs/Image/index.js.map +1 -1
- package/lib/commonjs/Main.js +8 -8
- package/lib/commonjs/Main.js.map +1 -1
- package/lib/commonjs/Video/index.js +25 -65
- package/lib/commonjs/Video/index.js.map +1 -1
- package/lib/commonjs/specs/Compressor.nitro.js +6 -0
- package/lib/commonjs/specs/Compressor.nitro.js.map +1 -0
- package/lib/commonjs/utils/Downloader.js +8 -24
- package/lib/commonjs/utils/Downloader.js.map +1 -1
- package/lib/commonjs/utils/Uploader.js +3 -18
- package/lib/commonjs/utils/Uploader.js.map +1 -1
- package/lib/commonjs/utils/helpers.js +18 -1
- package/lib/commonjs/utils/helpers.js.map +1 -1
- package/lib/commonjs/utils/index.js +13 -13
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Audio/index.js +2 -2
- package/lib/module/Audio/index.js.map +1 -1
- package/lib/module/Image/index.js +3 -23
- package/lib/module/Image/index.js.map +1 -1
- package/lib/module/Main.js +9 -9
- package/lib/module/Main.js.map +1 -1
- package/lib/module/Video/index.js +26 -66
- package/lib/module/Video/index.js.map +1 -1
- package/lib/module/specs/Compressor.nitro.js +4 -0
- package/lib/module/specs/Compressor.nitro.js.map +1 -0
- package/lib/module/utils/Downloader.js +10 -26
- package/lib/module/utils/Downloader.js.map +1 -1
- package/lib/module/utils/Uploader.js +5 -20
- package/lib/module/utils/Uploader.js.map +1 -1
- package/lib/module/utils/helpers.js +16 -0
- package/lib/module/utils/helpers.js.map +1 -1
- package/lib/module/utils/index.js +2 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/src/Image/index.d.ts.map +1 -1
- package/lib/typescript/src/Main.d.ts +2 -1
- package/lib/typescript/src/Main.d.ts.map +1 -1
- package/lib/typescript/src/Video/index.d.ts +1 -1
- package/lib/typescript/src/Video/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/Compressor.nitro.d.ts +44 -0
- package/lib/typescript/src/specs/Compressor.nitro.d.ts.map +1 -0
- package/lib/typescript/src/utils/Downloader.d.ts.map +1 -1
- package/lib/typescript/src/utils/Uploader.d.ts.map +1 -1
- package/lib/typescript/src/utils/helpers.d.ts +7 -0
- package/lib/typescript/src/utils/helpers.d.ts.map +1 -1
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/nitrogen/generated/android/NitroCompressor+autolinking.cmake +81 -0
- package/nitrogen/generated/android/NitroCompressor+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroCompressorOnLoad.cpp +60 -0
- package/nitrogen/generated/android/NitroCompressorOnLoad.hpp +34 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JHybridCompressorSpec.cpp +293 -0
- package/nitrogen/generated/android/c++/JHybridCompressorSpec.hpp +78 -0
- package/nitrogen/generated/android/c++/JVideoThumbnailResult.hpp +73 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/compressor/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/compressor/Func_void_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/compressor/Func_void_double_double.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/compressor/HybridCompressorSpec.kt +141 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/compressor/NitroCompressorOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/compressor/VideoThumbnailResult.kt +71 -0
- package/nitrogen/generated/ios/c++/HybridCompressorSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridCompressorSpecSwift.hpp +204 -0
- package/nitrogen/generated/ios/react_native_compressor+autolinking.rb +62 -0
- package/nitrogen/generated/ios/react_native_compressor-Swift-Cxx-Bridge.cpp +89 -0
- package/nitrogen/generated/ios/react_native_compressor-Swift-Cxx-Bridge.hpp +337 -0
- package/nitrogen/generated/ios/react_native_compressor-Swift-Cxx-Umbrella.hpp +51 -0
- package/nitrogen/generated/ios/react_native_compressorAutolinking.mm +33 -0
- package/nitrogen/generated/ios/react_native_compressorAutolinking.swift +26 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_VideoThumbnailResult.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_double_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_AnyMap_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridCompressorSpec.swift +70 -0
- package/nitrogen/generated/ios/swift/HybridCompressorSpec_cxx.swift +493 -0
- package/nitrogen/generated/ios/swift/VideoThumbnailResult.swift +49 -0
- package/nitrogen/generated/shared/c++/HybridCompressorSpec.cpp +36 -0
- package/nitrogen/generated/shared/c++/HybridCompressorSpec.hpp +83 -0
- package/nitrogen/generated/shared/c++/VideoThumbnailResult.hpp +99 -0
- package/package.json +8 -12
- package/react-native-compressor.podspec +6 -24
- package/src/Audio/index.tsx +2 -2
- package/src/Image/index.tsx +3 -26
- package/src/Main.tsx +14 -16
- package/src/Video/index.tsx +25 -77
- package/src/specs/Compressor.nitro.ts +56 -0
- package/src/utils/Downloader.tsx +8 -27
- package/src/utils/Uploader.tsx +12 -24
- package/src/utils/helpers.ts +18 -0
- package/src/utils/index.tsx +3 -2
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +0 -180
- package/android/src/main/java/com/reactnativecompressor/CompressorPackage.kt +0 -34
- package/android/src/newarch/CompressorSpec.kt +0 -5
- package/android/src/oldarch/CompressorSpec.kt +0 -36
- package/ios/Compressor-Bridging-Header.h +0 -6
- package/ios/Compressor.h +0 -5
- package/ios/Compressor.mm +0 -82
- package/ios/CompressorManager.swift +0 -117
- package/lib/commonjs/Spec/NativeCompressor.js +0 -9
- package/lib/commonjs/Spec/NativeCompressor.js.map +0 -1
- package/lib/module/Spec/NativeCompressor.js +0 -5
- package/lib/module/Spec/NativeCompressor.js.map +0 -1
- package/lib/typescript/src/Spec/NativeCompressor.d.ts +0 -30
- package/lib/typescript/src/Spec/NativeCompressor.d.ts.map +0 -1
- package/src/Spec/NativeCompressor.ts +0 -41
|
@@ -2,6 +2,7 @@ import Foundation
|
|
|
2
2
|
import AVFoundation
|
|
3
3
|
import Photos
|
|
4
4
|
import MobileCoreServices
|
|
5
|
+
import UIKit
|
|
5
6
|
|
|
6
7
|
struct CompressionError: Error {
|
|
7
8
|
private let message: String
|
|
@@ -164,7 +165,9 @@ class VideoCompressor {
|
|
|
164
165
|
return 30
|
|
165
166
|
}
|
|
166
167
|
|
|
167
|
-
|
|
168
|
+
// Cap at 60 fps. 30 fps cap silently halved 60 fps recordings and
|
|
169
|
+
// produced visibly choppy output.
|
|
170
|
+
return min(max(nominalFrameRate, 1), 60)
|
|
168
171
|
}
|
|
169
172
|
|
|
170
173
|
func scaledDimensions(width: CGFloat, height: CGFloat, maxSize: CGFloat) -> (width: Int, height: Int) {
|
|
@@ -193,26 +196,32 @@ class VideoCompressor {
|
|
|
193
196
|
targetHeight: Int,
|
|
194
197
|
targetFrameRate: Int
|
|
195
198
|
) -> Int {
|
|
199
|
+
// WhatsApp-style bitrate envelope. The previous floors/ceilings were
|
|
200
|
+
// ~2-3x larger and produced "compressed" outputs that were still
|
|
201
|
+
// 20-40 MB for short clips. These bands target ~1.5 Mbps at 720p,
|
|
202
|
+
// matching WhatsApp's typical output size while keeping visual
|
|
203
|
+
// quality acceptable for chat playback. Must stay in sync with
|
|
204
|
+
// VideoCompressionProfile.kt on Android.
|
|
196
205
|
let targetLongSide = max(targetWidth, targetHeight)
|
|
197
206
|
let floor: Int
|
|
198
207
|
let ceiling: Int
|
|
199
208
|
|
|
200
209
|
switch targetLongSide {
|
|
201
210
|
case 1920...:
|
|
202
|
-
floor =
|
|
203
|
-
ceiling =
|
|
211
|
+
floor = 2_000_000
|
|
212
|
+
ceiling = 3_500_000
|
|
204
213
|
case 1280...1919:
|
|
205
|
-
floor =
|
|
206
|
-
ceiling =
|
|
214
|
+
floor = 1_200_000
|
|
215
|
+
ceiling = 2_000_000
|
|
207
216
|
case 960...1279:
|
|
208
|
-
floor =
|
|
209
|
-
ceiling =
|
|
217
|
+
floor = 900_000
|
|
218
|
+
ceiling = 1_500_000
|
|
210
219
|
case 720...959:
|
|
211
|
-
floor =
|
|
212
|
-
ceiling =
|
|
220
|
+
floor = 700_000
|
|
221
|
+
ceiling = 1_200_000
|
|
213
222
|
default:
|
|
214
|
-
floor =
|
|
215
|
-
ceiling =
|
|
223
|
+
floor = 500_000
|
|
224
|
+
ceiling = 900_000
|
|
216
225
|
}
|
|
217
226
|
|
|
218
227
|
guard originalBitrate > 0 else {
|
|
@@ -312,11 +321,15 @@ class VideoCompressor {
|
|
|
312
321
|
exporter.outputURL = tmpURL
|
|
313
322
|
exporter.outputFileType = AVFileType.mp4
|
|
314
323
|
|
|
324
|
+
// NOTE: Do not add AVVideoExpectedSourceFrameRateKey or
|
|
325
|
+
// AVVideoAverageNonDroppableFrameRateKey here. They are not documented
|
|
326
|
+
// H.264 (avc1) compression properties on iOS and, while AVFoundation's
|
|
327
|
+
// `canApply(...)` check still returns true, the iOS encoder silently
|
|
328
|
+
// drops the video track, producing an audio-only MP4 that still reports
|
|
329
|
+
// success. See issue #400.
|
|
315
330
|
let compressionDict: [String: Any] = [
|
|
316
331
|
AVVideoAverageBitRateKey: bitRate,
|
|
317
332
|
AVVideoProfileLevelKey: AVVideoProfileLevelH264HighAutoLevel,
|
|
318
|
-
AVVideoExpectedSourceFrameRateKey: frameRate,
|
|
319
|
-
AVVideoAverageNonDroppableFrameRateKey: frameRate,
|
|
320
333
|
]
|
|
321
334
|
exporter.optimizeForNetworkUse = true;
|
|
322
335
|
exporter.videoOutputConfiguration = [
|
|
@@ -336,6 +349,14 @@ class VideoCompressor {
|
|
|
336
349
|
]
|
|
337
350
|
}
|
|
338
351
|
|
|
352
|
+
// Preserve source metadata (location, creation date, etc.) by forwarding
|
|
353
|
+
// every available metadata format to the writer.
|
|
354
|
+
var preservedMetadata: [AVMetadataItem] = asset.metadata
|
|
355
|
+
for format in asset.availableMetadataFormats {
|
|
356
|
+
preservedMetadata.append(contentsOf: asset.metadata(forFormat: format))
|
|
357
|
+
}
|
|
358
|
+
exporter.metadata = preservedMetadata
|
|
359
|
+
|
|
339
360
|
compressorExports[uuid] = exporter
|
|
340
361
|
exporter.export(progressHandler: { (progress) in
|
|
341
362
|
let roundProgress:Int=Int((progress*100).rounded());
|
|
@@ -350,7 +371,16 @@ class VideoCompressor {
|
|
|
350
371
|
switch result {
|
|
351
372
|
case .success:
|
|
352
373
|
if let outputURL = exporter.outputURL {
|
|
353
|
-
|
|
374
|
+
// Guard against the iOS encoder silently dropping the video track
|
|
375
|
+
// and producing an audio-only file that still reports success.
|
|
376
|
+
// See issue #400.
|
|
377
|
+
let outputAsset = AVAsset(url: outputURL)
|
|
378
|
+
if outputAsset.tracks(withMediaType: AVMediaType.video).isEmpty {
|
|
379
|
+
try? FileManager.default.removeItem(at: outputURL)
|
|
380
|
+
onFailure(CompressionError(message: "Compression produced a file with no video track"))
|
|
381
|
+
} else {
|
|
382
|
+
onCompletion(outputURL)
|
|
383
|
+
}
|
|
354
384
|
} else {
|
|
355
385
|
onFailure(CompressionError(message: "Compression succeeded but output URL is unavailable"))
|
|
356
386
|
}
|
|
@@ -10,7 +10,7 @@ const NativeAudio = _Main.Compressor;
|
|
|
10
10
|
const Audio = {
|
|
11
11
|
compress: async (url, options = _utils.DEFAULT_COMPRESS_AUDIO_OPTIONS) => {
|
|
12
12
|
try {
|
|
13
|
-
return NativeAudio.compress_audio(url, options);
|
|
13
|
+
return NativeAudio.compress_audio(url, (0, _utils.toNativeOptions)(options));
|
|
14
14
|
} catch (error) {
|
|
15
15
|
throw error.message;
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Main","require","_utils","NativeAudio","Compressor","Audio","compress","url","options","DEFAULT_COMPRESS_AUDIO_OPTIONS","compress_audio","error","message","_default","exports","default"],"sourceRoot":"../../../src","sources":["Audio/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,WAAW,GAAGC,gBAAU;AAE9B,MAAMC,KAAgB,GAAG;EACvBC,QAAQ,EAAE,MAAAA,CAAOC,GAAG,EAAEC,OAAO,GAAGC,qCAA8B,KAAK;IACjE,IAAI;MACF,OAAON,WAAW,CAACO,cAAc,CAACH,GAAG,
|
|
1
|
+
{"version":3,"names":["_Main","require","_utils","NativeAudio","Compressor","Audio","compress","url","options","DEFAULT_COMPRESS_AUDIO_OPTIONS","compress_audio","toNativeOptions","error","message","_default","exports","default"],"sourceRoot":"../../../src","sources":["Audio/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,MAAME,WAAW,GAAGC,gBAAU;AAE9B,MAAMC,KAAgB,GAAG;EACvBC,QAAQ,EAAE,MAAAA,CAAOC,GAAG,EAAEC,OAAO,GAAGC,qCAA8B,KAAK;IACjE,IAAI;MACF,OAAON,WAAW,CAACO,cAAc,CAACH,GAAG,EAAE,IAAAI,sBAAe,EAACH,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,OAAOI,KAAU,EAAE;MACnB,MAAMA,KAAK,CAACC,OAAO;IACrB;EACF;AACF,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaX,KAAK","ignoreList":[]}
|
|
@@ -6,35 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _Main = require("../Main");
|
|
8
8
|
var _utils = require("../utils");
|
|
9
|
-
var _reactNative = require("react-native");
|
|
10
9
|
const base64UrlRegex = /^data:image\/.*;(?:charset=.{3,5};)?base64,/;
|
|
11
|
-
const ImageCompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor);
|
|
12
10
|
const NativeImage = _Main.Compressor;
|
|
13
11
|
const Image = {
|
|
14
12
|
compress: async (value, options = {}) => {
|
|
15
13
|
if (!value) {
|
|
16
14
|
throw new Error('Compression value is empty, please provide a value for compression.');
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (options?.downloadProgress) {
|
|
21
|
-
const uuid = (0, _utils.uuidv4)();
|
|
22
|
-
//@ts-ignore
|
|
23
|
-
options.uuid = uuid;
|
|
24
|
-
subscription = ImageCompressEventEmitter.addListener('downloadProgress', event => {
|
|
25
|
-
if (event.uuid === uuid) {
|
|
26
|
-
options.downloadProgress && options.downloadProgress(event.data.progress);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
const cleanData = value.replace(base64UrlRegex, '');
|
|
31
|
-
return await NativeImage.image_compress(cleanData, options);
|
|
32
|
-
} finally {
|
|
33
|
-
// @ts-ignore
|
|
34
|
-
if (subscription) {
|
|
35
|
-
subscription.remove();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
16
|
+
const cleanData = value.replace(base64UrlRegex, '');
|
|
17
|
+
return await NativeImage.image_compress(cleanData, (0, _utils.toNativeOptions)(options), options.downloadProgress);
|
|
38
18
|
}
|
|
39
19
|
};
|
|
40
20
|
var _default = exports.default = Image;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Main","require","_utils","
|
|
1
|
+
{"version":3,"names":["_Main","require","_utils","base64UrlRegex","NativeImage","Compressor","Image","compress","value","options","Error","cleanData","replace","image_compress","toNativeOptions","downloadProgress","_default","exports","default"],"sourceRoot":"../../../src","sources":["Image/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,MAAME,cAAc,GAAG,6CAA6C;AAqDpE,MAAMC,WAAW,GAAGC,gBAAU;AAM9B,MAAMC,KAAgB,GAAG;EACvBC,QAAQ,EAAE,MAAAA,CAAOC,KAAK,EAAEC,OAAO,GAAG,CAAC,CAAC,KAAK;IACvC,IAAI,CAACD,KAAK,EAAE;MACV,MAAM,IAAIE,KAAK,CAAC,qEAAqE,CAAC;IACxF;IAEA,MAAMC,SAAS,GAAGH,KAAK,CAACI,OAAO,CAACT,cAAc,EAAE,EAAE,CAAC;IACnD,OAAO,MAAMC,WAAW,CAACS,cAAc,CAACF,SAAS,EAAE,IAAAG,sBAAe,EAACL,OAAO,CAAC,EAAEA,OAAO,CAACM,gBAAgB,CAAC;EACxG;AACF,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,KAAK","ignoreList":[]}
|
package/lib/commonjs/Main.js
CHANGED
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Compressor = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
+
var _reactNativeNitroModules = require("react-native-nitro-modules");
|
|
8
9
|
const LINKING_ERROR = `The package 'react-native-compressor' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
9
10
|
ios: "- You have run 'pod install'\n",
|
|
10
11
|
default: ''
|
|
11
|
-
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const Compressor = exports.Compressor = CompressorModule ? CompressorModule : new Proxy({}, {
|
|
17
|
-
get() {
|
|
12
|
+
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n' + '- You have installed `react-native-nitro-modules`\n';
|
|
13
|
+
const createCompressor = () => {
|
|
14
|
+
try {
|
|
15
|
+
return _reactNativeNitroModules.NitroModules.createHybridObject('Compressor');
|
|
16
|
+
} catch {
|
|
18
17
|
throw new Error(LINKING_ERROR);
|
|
19
18
|
}
|
|
20
|
-
}
|
|
19
|
+
};
|
|
20
|
+
const Compressor = exports.Compressor = createCompressor();
|
|
21
21
|
//# 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","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeNitroModules","LINKING_ERROR","Platform","select","ios","default","createCompressor","NitroModules","createHybridObject","Error","Compressor","exports"],"sourceRoot":"../../src","sources":["Main.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAIA,MAAME,aAAa,GACjB,kFAAkF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B,GAC/B,qDAAqD;AAEvD,MAAMC,gBAAgB,GAAGA,CAAA,KAAsB;EAC7C,IAAI;IACF,OAAOC,qCAAY,CAACC,kBAAkB,CAAiB,YAAY,CAAC;EACtE,CAAC,CAAC,MAAM;IACN,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CAAC;AAED,MAAMS,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGJ,gBAAgB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.cancelCompression = void 0;
|
|
7
|
-
var _reactNative = require("react-native");
|
|
8
7
|
var _Main = require("../Main");
|
|
9
8
|
var _utils = require("../utils");
|
|
10
|
-
const VideoCompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor);
|
|
11
9
|
const NativeVideoCompressor = _Main.Compressor;
|
|
12
10
|
const cancelCompression = cancellationId => {
|
|
13
11
|
return NativeVideoCompressor.cancelCompression(cancellationId);
|
|
@@ -16,75 +14,37 @@ exports.cancelCompression = cancelCompression;
|
|
|
16
14
|
const Video = {
|
|
17
15
|
compress: async (fileUrl, options, onProgress) => {
|
|
18
16
|
const uuid = (0, _utils.uuidv4)();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
if (options?.downloadProgress) {
|
|
30
|
-
//@ts-ignore
|
|
31
|
-
subscription2 = VideoCompressEventEmitter.addListener('downloadProgress', event => {
|
|
32
|
-
if (event.uuid === uuid) {
|
|
33
|
-
options.downloadProgress && options.downloadProgress(event.data.progress);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
const modifiedOptions = {
|
|
38
|
-
uuid
|
|
39
|
-
};
|
|
40
|
-
if (options?.progressDivider) modifiedOptions.progressDivider = options?.progressDivider;
|
|
41
|
-
if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate;
|
|
42
|
-
if (options?.compressionMethod) {
|
|
43
|
-
modifiedOptions.compressionMethod = options?.compressionMethod;
|
|
44
|
-
} else {
|
|
45
|
-
modifiedOptions.compressionMethod = 'auto';
|
|
46
|
-
}
|
|
47
|
-
if (options?.maxSize) {
|
|
48
|
-
modifiedOptions.maxSize = options?.maxSize;
|
|
49
|
-
} else {
|
|
50
|
-
modifiedOptions.maxSize = 640;
|
|
51
|
-
}
|
|
52
|
-
if (options?.minimumFileSizeForCompress !== undefined) {
|
|
53
|
-
modifiedOptions.minimumFileSizeForCompress = options?.minimumFileSizeForCompress;
|
|
54
|
-
}
|
|
55
|
-
if (options?.stripAudio) {
|
|
56
|
-
modifiedOptions.stripAudio = options.stripAudio;
|
|
57
|
-
}
|
|
58
|
-
if (options?.getCancellationId) {
|
|
59
|
-
options?.getCancellationId(uuid);
|
|
60
|
-
}
|
|
61
|
-
const result = await NativeVideoCompressor.compress(fileUrl, modifiedOptions);
|
|
62
|
-
return result;
|
|
63
|
-
} finally {
|
|
64
|
-
// @ts-ignore
|
|
65
|
-
if (subscription) {
|
|
66
|
-
subscription.remove();
|
|
67
|
-
}
|
|
68
|
-
//@ts-ignore
|
|
69
|
-
if (subscription2) {
|
|
70
|
-
subscription2.remove();
|
|
71
|
-
}
|
|
17
|
+
const modifiedOptions = {
|
|
18
|
+
uuid
|
|
19
|
+
};
|
|
20
|
+
if (options?.progressDivider) modifiedOptions.progressDivider = options?.progressDivider;
|
|
21
|
+
if (options?.bitrate) modifiedOptions.bitrate = options?.bitrate;
|
|
22
|
+
if (options?.compressionMethod) {
|
|
23
|
+
modifiedOptions.compressionMethod = options?.compressionMethod;
|
|
24
|
+
} else {
|
|
25
|
+
modifiedOptions.compressionMethod = 'auto';
|
|
72
26
|
}
|
|
27
|
+
if (options?.maxSize) {
|
|
28
|
+
modifiedOptions.maxSize = options?.maxSize;
|
|
29
|
+
} else {
|
|
30
|
+
modifiedOptions.maxSize = 640;
|
|
31
|
+
}
|
|
32
|
+
if (options?.minimumFileSizeForCompress !== undefined) {
|
|
33
|
+
modifiedOptions.minimumFileSizeForCompress = options?.minimumFileSizeForCompress;
|
|
34
|
+
}
|
|
35
|
+
if (options?.stripAudio) {
|
|
36
|
+
modifiedOptions.stripAudio = options.stripAudio;
|
|
37
|
+
}
|
|
38
|
+
if (options?.getCancellationId) {
|
|
39
|
+
options?.getCancellationId(uuid);
|
|
40
|
+
}
|
|
41
|
+
return NativeVideoCompressor.compress(fileUrl, (0, _utils.toNativeOptions)(modifiedOptions), onProgress, options?.downloadProgress);
|
|
73
42
|
},
|
|
74
43
|
cancelCompression,
|
|
75
44
|
activateBackgroundTask(onExpired) {
|
|
76
|
-
|
|
77
|
-
const subscription = VideoCompressEventEmitter.addListener('backgroundTaskExpired', event => {
|
|
78
|
-
onExpired(event);
|
|
79
|
-
if (subscription) {
|
|
80
|
-
subscription.remove();
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return NativeVideoCompressor.activateBackgroundTask({});
|
|
45
|
+
return NativeVideoCompressor.activateBackgroundTask({}, onExpired ? () => onExpired(undefined) : undefined);
|
|
85
46
|
},
|
|
86
47
|
deactivateBackgroundTask() {
|
|
87
|
-
VideoCompressEventEmitter.removeAllListeners('backgroundTaskExpired');
|
|
88
48
|
return NativeVideoCompressor.deactivateBackgroundTask({});
|
|
89
49
|
}
|
|
90
50
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_Main","require","_utils","NativeVideoCompressor","Compressor","cancelCompression","cancellationId","exports","Video","compress","fileUrl","options","onProgress","uuid","uuidv4","modifiedOptions","progressDivider","bitrate","compressionMethod","maxSize","minimumFileSizeForCompress","undefined","stripAudio","getCancellationId","toNativeOptions","downloadProgress","activateBackgroundTask","onExpired","deactivateBackgroundTask","_default","default"],"sourceRoot":"../../../src","sources":["Video/index.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AA4BA,MAAME,qBAAqB,GAAGC,gBAAU;AAEjC,MAAMC,iBAAiB,GAAIC,cAAsB,IAAK;EAC3D,OAAOH,qBAAqB,CAACE,iBAAiB,CAACC,cAAc,CAAC;AAChE,CAAC;AAACC,OAAA,CAAAF,iBAAA,GAAAA,iBAAA;AAEF,MAAMG,KAA0B,GAAG;EACjCC,QAAQ,EAAE,MAAAA,CAAOC,OAAe,EAAEC,OAA+B,EAAEC,UAAuC,KAAK;IAC7G,MAAMC,IAAI,GAAG,IAAAC,aAAM,EAAC,CAAC;IAErB,MAAMC,eAAwC,GAAG;MAAEF;IAAK,CAAC;IACzD,IAAIF,OAAO,EAAEK,eAAe,EAAED,eAAe,CAACC,eAAe,GAAGL,OAAO,EAAEK,eAAe;IACxF,IAAIL,OAAO,EAAEM,OAAO,EAAEF,eAAe,CAACE,OAAO,GAAGN,OAAO,EAAEM,OAAO;IAChE,IAAIN,OAAO,EAAEO,iBAAiB,EAAE;MAC9BH,eAAe,CAACG,iBAAiB,GAAGP,OAAO,EAAEO,iBAAiB;IAChE,CAAC,MAAM;MACLH,eAAe,CAACG,iBAAiB,GAAG,MAAM;IAC5C;IACA,IAAIP,OAAO,EAAEQ,OAAO,EAAE;MACpBJ,eAAe,CAACI,OAAO,GAAGR,OAAO,EAAEQ,OAAO;IAC5C,CAAC,MAAM;MACLJ,eAAe,CAACI,OAAO,GAAG,GAAG;IAC/B;IACA,IAAIR,OAAO,EAAES,0BAA0B,KAAKC,SAAS,EAAE;MACrDN,eAAe,CAACK,0BAA0B,GAAGT,OAAO,EAAES,0BAA0B;IAClF;IACA,IAAIT,OAAO,EAAEW,UAAU,EAAE;MACvBP,eAAe,CAACO,UAAU,GAAGX,OAAO,CAACW,UAAU;IACjD;IACA,IAAIX,OAAO,EAAEY,iBAAiB,EAAE;MAC9BZ,OAAO,EAAEY,iBAAiB,CAACV,IAAI,CAAC;IAClC;IAEA,OAAOV,qBAAqB,CAACM,QAAQ,CAACC,OAAO,EAAE,IAAAc,sBAAe,EAACT,eAAe,CAAC,EAAEH,UAAU,EAAED,OAAO,EAAEc,gBAAgB,CAAC;EACzH,CAAC;EACDpB,iBAAiB;EACjBqB,sBAAsBA,CAACC,SAAU,EAAE;IACjC,OAAOxB,qBAAqB,CAACuB,sBAAsB,CAAC,CAAC,CAAC,EAAEC,SAAS,GAAG,MAAMA,SAAS,CAACN,SAAS,CAAC,GAAGA,SAAS,CAAC;EAC7G,CAAC;EACDO,wBAAwBA,CAAA,EAAG;IACzB,OAAOzB,qBAAqB,CAACyB,wBAAwB,CAAC,CAAC,CAAC,CAAC;EAC3D;AACF,CAAwB;AAAC,IAAAC,QAAA,GAAAtB,OAAA,CAAAuB,OAAA,GAEVtB,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["specs/Compressor.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -7,32 +7,16 @@ exports.download = void 0;
|
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _Main = require("../Main");
|
|
9
9
|
var _helpers = require("./helpers");
|
|
10
|
-
const CompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor);
|
|
11
10
|
const download = async (fileUrl, downloadProgress, progressDivider) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (downloadProgress) {
|
|
16
|
-
subscription = CompressEventEmitter.addListener('downloadProgress', event => {
|
|
17
|
-
if (event.uuid === uuid) {
|
|
18
|
-
downloadProgress(event.data.progress);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
if (_reactNative.Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
23
|
-
fileUrl = fileUrl.replace('file://', '');
|
|
24
|
-
}
|
|
25
|
-
const result = await _Main.Compressor.download(fileUrl, {
|
|
26
|
-
uuid,
|
|
27
|
-
progressDivider
|
|
28
|
-
});
|
|
29
|
-
return result;
|
|
30
|
-
} finally {
|
|
31
|
-
// @ts-ignore
|
|
32
|
-
if (subscription) {
|
|
33
|
-
subscription.remove();
|
|
34
|
-
}
|
|
11
|
+
const uuid = (0, _helpers.uuidv4)();
|
|
12
|
+
if (_reactNative.Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
13
|
+
fileUrl = fileUrl.replace('file://', '');
|
|
35
14
|
}
|
|
15
|
+
const result = await _Main.Compressor.download(fileUrl, (0, _helpers.toNativeOptions)({
|
|
16
|
+
uuid,
|
|
17
|
+
progressDivider
|
|
18
|
+
}), downloadProgress);
|
|
19
|
+
return result;
|
|
36
20
|
};
|
|
37
21
|
exports.download = download;
|
|
38
22
|
//# sourceMappingURL=Downloader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_Main","_helpers","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_Main","_helpers","download","fileUrl","downloadProgress","progressDivider","uuid","uuidv4","Platform","OS","includes","replace","result","Compressor","toNativeOptions","exports"],"sourceRoot":"../../../src","sources":["utils/Downloader.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAEO,MAAMG,QAAQ,GAAG,MAAAA,CAAOC,OAAe,EAAEC,gBAA6C,EAAEC,eAAwB,KAAmB;EACxI,MAAMC,IAAI,GAAG,IAAAC,eAAM,EAAC,CAAC;EACrB,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIN,OAAO,CAACO,QAAQ,CAAC,SAAS,CAAC,EAAE;IAC5DP,OAAO,GAAGA,OAAO,CAACQ,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EAC1C;EACA,MAAMC,MAAM,GAAG,MAAMC,gBAAU,CAACX,QAAQ,CAACC,OAAO,EAAE,IAAAW,wBAAe,EAAC;IAAER,IAAI;IAAED;EAAgB,CAAC,CAAC,EAAED,gBAAgB,CAAC;EAC/G,OAAOQ,MAAM;AACf,CAAC;AAACG,OAAA,CAAAb,QAAA,GAAAA,QAAA","ignoreList":[]}
|
|
@@ -7,7 +7,6 @@ exports.cancelUpload = exports.backgroundUpload = exports.UploaderHttpMethod = e
|
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _Main = require("../Main");
|
|
9
9
|
var _helpers = require("./helpers");
|
|
10
|
-
const CompressEventEmitter = new _reactNative.NativeEventEmitter(_Main.Compressor);
|
|
11
10
|
let UploadType = exports.UploadType = /*#__PURE__*/function (UploadType) {
|
|
12
11
|
UploadType[UploadType["BINARY_CONTENT"] = 0] = "BINARY_CONTENT";
|
|
13
12
|
UploadType[UploadType["MULTIPART"] = 1] = "MULTIPART";
|
|
@@ -25,15 +24,7 @@ const cancelUpload = (uuid = '', shouldCancelAll = false) => {
|
|
|
25
24
|
exports.cancelUpload = cancelUpload;
|
|
26
25
|
const backgroundUpload = async (url, fileUrl, options, onProgress, abortSignal) => {
|
|
27
26
|
const uuid = (0, _helpers.uuidv4)();
|
|
28
|
-
let subscription;
|
|
29
27
|
try {
|
|
30
|
-
if (onProgress) {
|
|
31
|
-
subscription = CompressEventEmitter.addListener('uploadProgress', event => {
|
|
32
|
-
if (event.uuid === uuid) {
|
|
33
|
-
onProgress(event.data.written, event.data.total);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
28
|
if (_reactNative.Platform.OS === 'android' && fileUrl.includes('file://')) {
|
|
38
29
|
fileUrl = fileUrl.replace('file://', '');
|
|
39
30
|
}
|
|
@@ -41,20 +32,14 @@ const backgroundUpload = async (url, fileUrl, options, onProgress, abortSignal)
|
|
|
41
32
|
options?.getCancellationId(uuid);
|
|
42
33
|
}
|
|
43
34
|
abortSignal?.addEventListener('abort', () => cancelUpload(uuid));
|
|
44
|
-
const result = await _Main.Compressor.upload(fileUrl, {
|
|
35
|
+
const result = await _Main.Compressor.upload(fileUrl, (0, _helpers.toNativeOptions)({
|
|
36
|
+
...options,
|
|
45
37
|
uuid,
|
|
46
38
|
method: options.httpMethod,
|
|
47
|
-
headers: options.headers,
|
|
48
|
-
uploadType: options.uploadType,
|
|
49
|
-
...options,
|
|
50
39
|
url
|
|
51
|
-
});
|
|
40
|
+
}), onProgress);
|
|
52
41
|
return result;
|
|
53
42
|
} finally {
|
|
54
|
-
// @ts-ignore
|
|
55
|
-
if (subscription) {
|
|
56
|
-
subscription.remove();
|
|
57
|
-
}
|
|
58
43
|
abortSignal?.removeEventListener('abort', () => cancelUpload(uuid));
|
|
59
44
|
}
|
|
60
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_Main","_helpers","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_Main","_helpers","UploadType","exports","UploaderHttpMethod","cancelUpload","uuid","shouldCancelAll","Compressor","backgroundUpload","url","fileUrl","options","onProgress","abortSignal","uuidv4","Platform","OS","includes","replace","getCancellationId","addEventListener","result","upload","toNativeOptions","method","httpMethod","removeEventListener"],"sourceRoot":"../../../src","sources":["utils/Uploader.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAAoD,IACxCG,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAKVE,kBAAkB,GAAAD,OAAA,CAAAC,kBAAA,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AA+BvB,MAAMC,YAAgE,GAAGA,CAACC,IAAI,GAAG,EAAE,EAAEC,eAAe,GAAG,KAAK,KAAK;EACtH,OAAOC,gBAAU,CAACH,YAAY,CAACC,IAAI,EAAEC,eAAe,CAAC;AACvD,CAAC;AAACJ,OAAA,CAAAE,YAAA,GAAAA,YAAA;AAEK,MAAMI,gBAAgB,GAAG,MAAAA,CAC9BC,GAAW,EACXC,OAAe,EACfC,OAAwB,EACxBC,UAAqD,EACrDC,WAAyB,KACR;EACjB,MAAMR,IAAI,GAAG,IAAAS,eAAM,EAAC,CAAC;EACrB,IAAI;IACF,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIN,OAAO,CAACO,QAAQ,CAAC,SAAS,CAAC,EAAE;MAC5DP,OAAO,GAAGA,OAAO,CAACQ,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC1C;IAEA,IAAIP,OAAO,EAAEQ,iBAAiB,EAAE;MAC9BR,OAAO,EAAEQ,iBAAiB,CAACd,IAAI,CAAC;IAClC;IAEAQ,WAAW,EAAEO,gBAAgB,CAAC,OAAO,EAAE,MAAMhB,YAAY,CAACC,IAAI,CAAC,CAAC;IAEhE,MAAMgB,MAAM,GAAG,MAAMd,gBAAU,CAACe,MAAM,CACpCZ,OAAO,EACP,IAAAa,wBAAe,EAAC;MACd,GAAGZ,OAAO;MACVN,IAAI;MACJmB,MAAM,EAAEb,OAAO,CAACc,UAAU;MAC1BhB;IACF,CAAC,CAAC,EACFG,UACF,CAAC;IACD,OAAOS,MAAM;EACf,CAAC,SAAS;IACRR,WAAW,EAAEa,mBAAmB,CAAC,OAAO,EAAE,MAAMtB,YAAY,CAACC,IAAI,CAAC,CAAC;EACrE;AACF,CAAC;AAACH,OAAA,CAAAM,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.uuidv4 = void 0;
|
|
6
|
+
exports.uuidv4 = exports.toNativeOptions = void 0;
|
|
7
7
|
const uuidv4 = () => {
|
|
8
8
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
9
9
|
const r = parseFloat('0.' + Math.random().toString().replace('0.', '') + new Date().getTime()) * 16 | 0,
|
|
@@ -12,5 +12,22 @@ const uuidv4 = () => {
|
|
|
12
12
|
return v.toString(16);
|
|
13
13
|
});
|
|
14
14
|
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Build a Nitro-safe options map. Nitro's `AnyMap` converter throws when it
|
|
18
|
+
* encounters a `undefined` or function-valued property, so we drop both —
|
|
19
|
+
* progress callbacks are passed as separate native method parameters now.
|
|
20
|
+
*/
|
|
15
21
|
exports.uuidv4 = uuidv4;
|
|
22
|
+
const toNativeOptions = options => {
|
|
23
|
+
const result = {};
|
|
24
|
+
for (const key of Object.keys(options)) {
|
|
25
|
+
const value = options[key];
|
|
26
|
+
if (value !== undefined && typeof value !== 'function') {
|
|
27
|
+
result[key] = value;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
exports.toNativeOptions = toNativeOptions;
|
|
16
33
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["uuidv4","replace","c","r","parseFloat","Math","random","toString","Date","getTime","v","exports"],"sourceRoot":"../../../src","sources":["utils/helpers.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["uuidv4","replace","c","r","parseFloat","Math","random","toString","Date","getTime","v","exports","toNativeOptions","options","result","key","Object","keys","value","undefined"],"sourceRoot":"../../../src","sources":["utils/helpers.ts"],"mappings":";;;;;;AAEO,MAAMA,MAAM,GAAGA,CAAA,KAAM;EAC1B,OAAO,sCAAsC,CAACC,OAAO,CAAC,OAAO,EAAE,UAAUC,CAAC,EAAE;IAC1E,MAAMC,CAAC,GAAIC,UAAU,CAAC,IAAI,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACN,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAIO,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAI,CAAC;MACvG;MACAC,CAAC,GAAGR,CAAC,IAAI,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG;IACpC,OAAOO,CAAC,CAACH,QAAQ,CAAC,EAAE,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAI,OAAA,CAAAX,MAAA,GAAAA,MAAA;AAKO,MAAMY,eAAe,GAAIC,OAAgC,IAAa;EAC3E,MAAMC,MAA+B,GAAG,CAAC,CAAC;EAC1C,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACJ,OAAO,CAAC,EAAE;IACtC,MAAMK,KAAK,GAAGL,OAAO,CAACE,GAAG,CAAC;IAC1B,IAAIG,KAAK,KAAKC,SAAS,IAAI,OAAOD,KAAK,KAAK,UAAU,EAAE;MACtDJ,MAAM,CAACC,GAAG,CAAC,GAAGG,KAAK;IACrB;EACF;EACA,OAAOJ,MAAM;AACf,CAAC;AAACH,OAAA,CAAAC,eAAA,GAAAA,eAAA","ignoreList":[]}
|
|
@@ -17,39 +17,39 @@ var _exportNames = {
|
|
|
17
17
|
exports.getVideoMetaData = exports.getRealPath = exports.getImageMetaData = exports.getFileSize = exports.getDetails = exports.generateFilePath = exports.createVideoThumbnail = exports.clearCache = exports.DEFAULT_COMPRESS_AUDIO_OPTIONS = void 0;
|
|
18
18
|
var _Main = require("../Main");
|
|
19
19
|
var _reactNative = require("react-native");
|
|
20
|
-
var
|
|
21
|
-
Object.keys(
|
|
20
|
+
var _helpers = require("./helpers");
|
|
21
|
+
Object.keys(_helpers).forEach(function (key) {
|
|
22
22
|
if (key === "default" || key === "__esModule") return;
|
|
23
23
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
24
|
-
if (key in exports && exports[key] ===
|
|
24
|
+
if (key in exports && exports[key] === _helpers[key]) return;
|
|
25
25
|
Object.defineProperty(exports, key, {
|
|
26
26
|
enumerable: true,
|
|
27
27
|
get: function () {
|
|
28
|
-
return
|
|
28
|
+
return _helpers[key];
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
|
-
var
|
|
33
|
-
Object.keys(
|
|
32
|
+
var _Downloader = require("./Downloader");
|
|
33
|
+
Object.keys(_Downloader).forEach(function (key) {
|
|
34
34
|
if (key === "default" || key === "__esModule") return;
|
|
35
35
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
36
|
-
if (key in exports && exports[key] ===
|
|
36
|
+
if (key in exports && exports[key] === _Downloader[key]) return;
|
|
37
37
|
Object.defineProperty(exports, key, {
|
|
38
38
|
enumerable: true,
|
|
39
39
|
get: function () {
|
|
40
|
-
return
|
|
40
|
+
return _Downloader[key];
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
|
-
var
|
|
45
|
-
Object.keys(
|
|
44
|
+
var _Uploader = require("./Uploader");
|
|
45
|
+
Object.keys(_Uploader).forEach(function (key) {
|
|
46
46
|
if (key === "default" || key === "__esModule") return;
|
|
47
47
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
48
|
-
if (key in exports && exports[key] ===
|
|
48
|
+
if (key in exports && exports[key] === _Uploader[key]) return;
|
|
49
49
|
Object.defineProperty(exports, key, {
|
|
50
50
|
enumerable: true,
|
|
51
51
|
get: function () {
|
|
52
|
-
return
|
|
52
|
+
return _Uploader[key];
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
});
|
|
@@ -89,7 +89,7 @@ const getImageMetaData = async path => {
|
|
|
89
89
|
};
|
|
90
90
|
exports.getImageMetaData = getImageMetaData;
|
|
91
91
|
const createVideoThumbnail = (fileUrl, options = {}) => {
|
|
92
|
-
return _Main.Compressor.createVideoThumbnail(fileUrl, options);
|
|
92
|
+
return _Main.Compressor.createVideoThumbnail(fileUrl, (0, _helpers.toNativeOptions)(options));
|
|
93
93
|
};
|
|
94
94
|
exports.createVideoThumbnail = createVideoThumbnail;
|
|
95
95
|
const clearCache = cacheDir => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_Main","require","_reactNative","
|
|
1
|
+
{"version":3,"names":["_Main","require","_reactNative","_helpers","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Downloader","_Uploader","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","toNativeOptions","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":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Compressor } from '../Main';
|
|
4
|
-
import { DEFAULT_COMPRESS_AUDIO_OPTIONS } from '../utils';
|
|
4
|
+
import { DEFAULT_COMPRESS_AUDIO_OPTIONS, toNativeOptions } from '../utils';
|
|
5
5
|
const NativeAudio = Compressor;
|
|
6
6
|
const Audio = {
|
|
7
7
|
compress: async (url, options = DEFAULT_COMPRESS_AUDIO_OPTIONS) => {
|
|
8
8
|
try {
|
|
9
|
-
return NativeAudio.compress_audio(url, options);
|
|
9
|
+
return NativeAudio.compress_audio(url, toNativeOptions(options));
|
|
10
10
|
} catch (error) {
|
|
11
11
|
throw error.message;
|
|
12
12
|
}
|