@hxa-rn/rn-fetch-blob 0.12.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/LICENSE +21 -0
- package/README.md +290 -0
- package/harmony/fetch_blob/LICENSE +21 -0
- package/harmony/fetch_blob/NOTICE +33 -0
- package/harmony/fetch_blob/OAT.xml +38 -0
- package/harmony/fetch_blob/build-profile.json5 +16 -0
- package/harmony/fetch_blob/hvigorfile.ts +2 -0
- package/harmony/fetch_blob/index.ets +1 -0
- package/harmony/fetch_blob/oh-package.json5 +14 -0
- package/harmony/fetch_blob/src/main/cpp/CMakeLists.txt +15 -0
- package/harmony/fetch_blob/src/main/cpp/FetchBlobPackage.h +13 -0
- package/harmony/fetch_blob/src/main/cpp/generated/RNOH/generated/BaseFetchBlobPackage.h +72 -0
- package/harmony/fetch_blob/src/main/cpp/generated/RNOH/generated/turbo_modules/RNFetchBlob.cpp +55 -0
- package/harmony/fetch_blob/src/main/cpp/generated/RNOH/generated/turbo_modules/RNFetchBlob.h +16 -0
- package/harmony/fetch_blob/src/main/ets/FetchBlobTurboModulesFactory.ets +18 -0
- package/harmony/fetch_blob/src/main/ets/Logger.ts +40 -0
- package/harmony/fetch_blob/src/main/ets/RNFetchBlobConfig.ts +45 -0
- package/harmony/fetch_blob/src/main/ets/RNFetchBlobFS.ts +673 -0
- package/harmony/fetch_blob/src/main/ets/RNFetchBlobImpl.ts +246 -0
- package/harmony/fetch_blob/src/main/ets/RNFetchBlobReq.ts +530 -0
- package/harmony/fetch_blob/src/main/ets/RNFetchBlobStream.ts +169 -0
- package/harmony/fetch_blob/src/main/ets/RNFetchBlobTurboModule.ts +192 -0
- package/harmony/fetch_blob/src/main/ets/generated/index.ets +5 -0
- package/harmony/fetch_blob/src/main/ets/generated/ts.ts +5 -0
- package/harmony/fetch_blob/src/main/ets/generated/turboModules/RNFetchBlob.ts +92 -0
- package/harmony/fetch_blob/src/main/ets/generated/turboModules/ts.ts +5 -0
- package/harmony/fetch_blob/src/main/module.json5 +22 -0
- package/harmony/fetch_blob/src/main/resources/base/element/string.json +8 -0
- package/harmony/fetch_blob/src/main/resources/en_US/element/string.json +8 -0
- package/harmony/fetch_blob/src/main/resources/zh_CN/element/string.json +8 -0
- package/harmony/fetch_blob.har +0 -0
- package/package.json +59 -0
- package/src/android.js +62 -0
- package/src/class/RNFetchBlobFile.js +17 -0
- package/src/class/RNFetchBlobReadStream.js +82 -0
- package/src/class/RNFetchBlobSession.js +74 -0
- package/src/class/RNFetchBlobWriteStream.js +57 -0
- package/src/class/StatefulPromise.js +7 -0
- package/src/fs.js +432 -0
- package/src/index.d.ts +690 -0
- package/src/index.js +577 -0
- package/src/ios.js +54 -0
- package/src/json-stream.js +45 -0
- package/src/lib/oboe-browser.min.js +1 -0
- package/src/polyfill/Blob.js +362 -0
- package/src/polyfill/Event.js +11 -0
- package/src/polyfill/EventTarget.js +79 -0
- package/src/polyfill/Fetch.js +213 -0
- package/src/polyfill/File.js +27 -0
- package/src/polyfill/FileReader.js +90 -0
- package/src/polyfill/ProgressEvent.js +32 -0
- package/src/polyfill/XMLHttpRequest.js +446 -0
- package/src/polyfill/XMLHttpRequestEventTarget.js +118 -0
- package/src/polyfill/index.js +11 -0
- package/src/specs/v1/NativeRNFetchBlob.ts +85 -0
- package/src/types.js +64 -0
- package/src/utils/log.js +40 -0
- package/src/utils/unicode.js +7 -0
- package/src/utils/uri.js +28 -0
- package/src/utils/uuid.js +4 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Blob from './Blob.js'
|
|
2
|
+
import File from './File.js'
|
|
3
|
+
import XMLHttpRequest from './XMLHttpRequest.js'
|
|
4
|
+
import ProgressEvent from './ProgressEvent'
|
|
5
|
+
import Event from './Event'
|
|
6
|
+
import FileReader from './FileReader'
|
|
7
|
+
import Fetch from './Fetch'
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
Blob, File, XMLHttpRequest, ProgressEvent, Event, FileReader, Fetch
|
|
11
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export interface Spec extends TurboModule {
|
|
5
|
+
getConstants(): {
|
|
6
|
+
DocumentDir: string;
|
|
7
|
+
CacheDir: string;
|
|
8
|
+
PictureDir: string;
|
|
9
|
+
MusicDir: string;
|
|
10
|
+
MovieDir: string;
|
|
11
|
+
DownloadDir: string;
|
|
12
|
+
DCIMDir: string;
|
|
13
|
+
SDCardDir: string;
|
|
14
|
+
SDCardApplicationDir: string;
|
|
15
|
+
MainBundleDir: string;
|
|
16
|
+
LibraryDir: string;
|
|
17
|
+
};
|
|
18
|
+
// HTTP 请求
|
|
19
|
+
fetchBlob(
|
|
20
|
+
options: Object,
|
|
21
|
+
taskId: string,
|
|
22
|
+
method: string,
|
|
23
|
+
url: string,
|
|
24
|
+
headers: Object,
|
|
25
|
+
body: string,
|
|
26
|
+
callback: (value: Array<Object>) => void,
|
|
27
|
+
): void;
|
|
28
|
+
fetchBlobForm(
|
|
29
|
+
options: Object,
|
|
30
|
+
taskId: string,
|
|
31
|
+
method: string,
|
|
32
|
+
url: string,
|
|
33
|
+
headers: Object,
|
|
34
|
+
form: Array<Object>,
|
|
35
|
+
callback: (value: Array<Object>) => void,
|
|
36
|
+
): void;
|
|
37
|
+
cancelRequest(taskId: string, callback: (value: Array<Object>) => void): void;
|
|
38
|
+
enableProgressReport(taskId: string, interval: number, count: number): void;
|
|
39
|
+
enableUploadProgressReport(taskId: string, interval: number, count: number): void;
|
|
40
|
+
// 文件系统
|
|
41
|
+
createFile(path: string, content: string, encode: string): Promise<string>;
|
|
42
|
+
createFileASCII(path: string, dataArray: Array<number>): Promise<void>;
|
|
43
|
+
writeFile(path: string, encoding: string, data: string, append: boolean): Promise<number>;
|
|
44
|
+
writeFileArray(path: string, data: Array<number>, append: boolean): Promise<number>;
|
|
45
|
+
readFile(path: string, encoding: string): Promise<Object>;
|
|
46
|
+
unlink(path: string, callback: (value: Array<Object>) => void): void;
|
|
47
|
+
mkdir(path: string): Promise<void>;
|
|
48
|
+
exists(path: string, callback: (value: boolean, isDir: boolean) => void): void;
|
|
49
|
+
cp(path: string, dest: string, callback: (value: Array<Object>) => void): void;
|
|
50
|
+
mv(path: string, dest: string, callback: (value: Array<Object>) => void): void;
|
|
51
|
+
ls(path: string): Promise<Array<string>>;
|
|
52
|
+
stat(path: string, callback: (value: Array<Object>) => void): void;
|
|
53
|
+
lstat(path: string, callback: (value: Array<Object>) => void): void;
|
|
54
|
+
hash(path: string, algorithm: string): Promise<string>;
|
|
55
|
+
slice(src: string, dest: string, start: number, end: number): Promise<string>;
|
|
56
|
+
df(callback: (value: Array<Object>) => void): void;
|
|
57
|
+
removeSession(paths: Array<string>, callback: (value: Array<Object>) => void): void;
|
|
58
|
+
// 文件读写流
|
|
59
|
+
writeStream(
|
|
60
|
+
path: string,
|
|
61
|
+
encoding: string,
|
|
62
|
+
append: boolean,
|
|
63
|
+
callback: (value: Array<Object>) => void,
|
|
64
|
+
): void;
|
|
65
|
+
writeChunk(streamId: string, data: string, callback: (value: Array<Object>) => void): void;
|
|
66
|
+
writeArrayChunk(streamId: string, dataArray: Array<number>, callback: (value: Array<Object>) => void): void;
|
|
67
|
+
closeStream(streamId: string, callback: (value: Array<Object>) => void): void;
|
|
68
|
+
readStream(path: string, encoding: string, bufferSize: number, tick: number, streamId: string): void;
|
|
69
|
+
// Android 专属(鸿蒙按能力映射/降级)
|
|
70
|
+
scanFile(pairs: Array<Object>, callback: (value: Array<Object>) => void): void;
|
|
71
|
+
actionViewIntent(path: string, mime: string): Promise<void>;
|
|
72
|
+
getContentIntent(mime: string): Promise<string>;
|
|
73
|
+
addCompleteDownload(config: Object): Promise<void>;
|
|
74
|
+
getSDCardDir(): Promise<string>;
|
|
75
|
+
getSDCardApplicationDir(): Promise<string>;
|
|
76
|
+
// iOS 专属(鸿蒙 reject not supported)
|
|
77
|
+
pathForAppGroup(groupName: string): Promise<string>;
|
|
78
|
+
syncPathAppGroup(groupName: string): string;
|
|
79
|
+
previewDocument(uri: string, scheme: string): Promise<void>;
|
|
80
|
+
openDocument(uri: string, scheme: string): Promise<void>;
|
|
81
|
+
excludeFromBackupKey(url: string): Promise<void>;
|
|
82
|
+
emitExpiredEvent(callback: () => void): void;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('RNFetchBlob');
|
package/src/types.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
|
|
2
|
+
type RNFetchBlobConfig = {
|
|
3
|
+
fileCache : bool,
|
|
4
|
+
path : string,
|
|
5
|
+
appendExt : string,
|
|
6
|
+
session : string,
|
|
7
|
+
addAndroidDownloads : any,
|
|
8
|
+
indicator : bool,
|
|
9
|
+
followRedirect : bool,
|
|
10
|
+
trusty : bool,
|
|
11
|
+
wifiOnly : bool
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
type RNFetchBlobNative = {
|
|
15
|
+
// API for fetch octet-stream data
|
|
16
|
+
fetchBlob : (
|
|
17
|
+
options:fetchConfig,
|
|
18
|
+
taskId:string,
|
|
19
|
+
method:string,
|
|
20
|
+
url:string,
|
|
21
|
+
headers:any,
|
|
22
|
+
body:any,
|
|
23
|
+
callback:(err:any, ...data:any) => void
|
|
24
|
+
) => void,
|
|
25
|
+
// API for fetch form data
|
|
26
|
+
fetchBlobForm : (
|
|
27
|
+
options:fetchConfig,
|
|
28
|
+
taskId:string,
|
|
29
|
+
method:string,
|
|
30
|
+
url:string,
|
|
31
|
+
headers:any,
|
|
32
|
+
form:Array<any>,
|
|
33
|
+
callback:(err:any, ...data:any) => void
|
|
34
|
+
) => void,
|
|
35
|
+
// open file stream
|
|
36
|
+
readStream : (
|
|
37
|
+
path:string,
|
|
38
|
+
encode:'utf8' | 'ascii' | 'base64'
|
|
39
|
+
) => void,
|
|
40
|
+
// get system folders
|
|
41
|
+
getEnvironmentDirs : (dirs:any) => void,
|
|
42
|
+
// unlink file by path
|
|
43
|
+
unlink : (path:string, callback: (err:any) => void) => void,
|
|
44
|
+
removeSession : (paths:Array<string>, callback: (err:any) => void) => void,
|
|
45
|
+
ls : (path:string, callback: (err:any) => void) => void,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
type RNFetchBlobResponseInfo = {
|
|
49
|
+
taskId : string,
|
|
50
|
+
state : number,
|
|
51
|
+
headers : any,
|
|
52
|
+
status : number,
|
|
53
|
+
respType : 'text' | 'blob' | '' | 'json',
|
|
54
|
+
rnfbEncode : 'path' | 'base64' | 'ascii' | 'utf8'
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
type RNFetchBlobStream = {
|
|
58
|
+
onData : () => void,
|
|
59
|
+
onError : () => void,
|
|
60
|
+
onEnd : () => void,
|
|
61
|
+
_onData : () => void,
|
|
62
|
+
_onEnd : () => void,
|
|
63
|
+
_onError : () => void,
|
|
64
|
+
}
|
package/src/utils/log.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export default class Log {
|
|
2
|
+
|
|
3
|
+
_name:string;
|
|
4
|
+
_isEnable:boolean = true
|
|
5
|
+
_level:number = 0
|
|
6
|
+
|
|
7
|
+
constructor(name:string) {
|
|
8
|
+
this._name = name
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
level(val:number) {
|
|
12
|
+
this._isEnable = true
|
|
13
|
+
this._level = val
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
enable() {
|
|
17
|
+
this._isEnable = true
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
disable() {
|
|
21
|
+
this._isEnable = false
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
verbose(...args) {
|
|
25
|
+
this._isEnable && this._level > 2 && console.log(this._name, 'verbose:', ...args)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
debug(...args) {
|
|
29
|
+
this._isEnable && this._level > 1 && console.log(this._name, 'debug:', ...args)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
info(...args) {
|
|
33
|
+
this._isEnable && this._level > 0 && console.log(this._name, 'info:', ...args)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
error(...args) {
|
|
37
|
+
this._isEnable && this._level > -1 && console.warn(this._name, 'error:', ...args)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
}
|
package/src/utils/uri.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
|
|
3
|
+
isFileURI : (uri:string):boolean => {
|
|
4
|
+
if(typeof uri !== 'string')
|
|
5
|
+
return false
|
|
6
|
+
return /^RNFetchBlob-file\:\/\//.test(uri)
|
|
7
|
+
},
|
|
8
|
+
|
|
9
|
+
isJSONStreamURI : (uri:string):boolean => {
|
|
10
|
+
if(typeof uri !== 'string')
|
|
11
|
+
return false
|
|
12
|
+
return /^JSONStream\:\/\//.test(uri)
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
removeURIScheme : (uri:string, iterations:number):string => {
|
|
16
|
+
iterations = iterations || 1
|
|
17
|
+
let result = uri
|
|
18
|
+
for(let i=0;i<iterations;i++) {
|
|
19
|
+
result = String(result).replace(/^[^\:]+\:\/\//, '')
|
|
20
|
+
}
|
|
21
|
+
return String(result)
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
unwrapFileURI : (uri:string):string => {
|
|
25
|
+
return String(uri).replace(/^RNFetchBlob-file\:\/\//, '')
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
}
|