@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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +290 -0
  3. package/harmony/fetch_blob/LICENSE +21 -0
  4. package/harmony/fetch_blob/NOTICE +33 -0
  5. package/harmony/fetch_blob/OAT.xml +38 -0
  6. package/harmony/fetch_blob/build-profile.json5 +16 -0
  7. package/harmony/fetch_blob/hvigorfile.ts +2 -0
  8. package/harmony/fetch_blob/index.ets +1 -0
  9. package/harmony/fetch_blob/oh-package.json5 +14 -0
  10. package/harmony/fetch_blob/src/main/cpp/CMakeLists.txt +15 -0
  11. package/harmony/fetch_blob/src/main/cpp/FetchBlobPackage.h +13 -0
  12. package/harmony/fetch_blob/src/main/cpp/generated/RNOH/generated/BaseFetchBlobPackage.h +72 -0
  13. package/harmony/fetch_blob/src/main/cpp/generated/RNOH/generated/turbo_modules/RNFetchBlob.cpp +55 -0
  14. package/harmony/fetch_blob/src/main/cpp/generated/RNOH/generated/turbo_modules/RNFetchBlob.h +16 -0
  15. package/harmony/fetch_blob/src/main/ets/FetchBlobTurboModulesFactory.ets +18 -0
  16. package/harmony/fetch_blob/src/main/ets/Logger.ts +40 -0
  17. package/harmony/fetch_blob/src/main/ets/RNFetchBlobConfig.ts +45 -0
  18. package/harmony/fetch_blob/src/main/ets/RNFetchBlobFS.ts +673 -0
  19. package/harmony/fetch_blob/src/main/ets/RNFetchBlobImpl.ts +246 -0
  20. package/harmony/fetch_blob/src/main/ets/RNFetchBlobReq.ts +530 -0
  21. package/harmony/fetch_blob/src/main/ets/RNFetchBlobStream.ts +169 -0
  22. package/harmony/fetch_blob/src/main/ets/RNFetchBlobTurboModule.ts +192 -0
  23. package/harmony/fetch_blob/src/main/ets/generated/index.ets +5 -0
  24. package/harmony/fetch_blob/src/main/ets/generated/ts.ts +5 -0
  25. package/harmony/fetch_blob/src/main/ets/generated/turboModules/RNFetchBlob.ts +92 -0
  26. package/harmony/fetch_blob/src/main/ets/generated/turboModules/ts.ts +5 -0
  27. package/harmony/fetch_blob/src/main/module.json5 +22 -0
  28. package/harmony/fetch_blob/src/main/resources/base/element/string.json +8 -0
  29. package/harmony/fetch_blob/src/main/resources/en_US/element/string.json +8 -0
  30. package/harmony/fetch_blob/src/main/resources/zh_CN/element/string.json +8 -0
  31. package/harmony/fetch_blob.har +0 -0
  32. package/package.json +59 -0
  33. package/src/android.js +62 -0
  34. package/src/class/RNFetchBlobFile.js +17 -0
  35. package/src/class/RNFetchBlobReadStream.js +82 -0
  36. package/src/class/RNFetchBlobSession.js +74 -0
  37. package/src/class/RNFetchBlobWriteStream.js +57 -0
  38. package/src/class/StatefulPromise.js +7 -0
  39. package/src/fs.js +432 -0
  40. package/src/index.d.ts +690 -0
  41. package/src/index.js +577 -0
  42. package/src/ios.js +54 -0
  43. package/src/json-stream.js +45 -0
  44. package/src/lib/oboe-browser.min.js +1 -0
  45. package/src/polyfill/Blob.js +362 -0
  46. package/src/polyfill/Event.js +11 -0
  47. package/src/polyfill/EventTarget.js +79 -0
  48. package/src/polyfill/Fetch.js +213 -0
  49. package/src/polyfill/File.js +27 -0
  50. package/src/polyfill/FileReader.js +90 -0
  51. package/src/polyfill/ProgressEvent.js +32 -0
  52. package/src/polyfill/XMLHttpRequest.js +446 -0
  53. package/src/polyfill/XMLHttpRequestEventTarget.js +118 -0
  54. package/src/polyfill/index.js +11 -0
  55. package/src/specs/v1/NativeRNFetchBlob.ts +85 -0
  56. package/src/types.js +64 -0
  57. package/src/utils/log.js +40 -0
  58. package/src/utils/unicode.js +7 -0
  59. package/src/utils/uri.js +28 -0
  60. 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
+ }
@@ -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
+ }
@@ -0,0 +1,7 @@
1
+ export default function(x) {
2
+ var r = /\\u([\d\w]{4})/gi
3
+ x = x.replace(r, function (match, grp) {
4
+ return String.fromCharCode(parseInt(grp, 16))
5
+ })
6
+ return unescape(x)
7
+ }
@@ -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
+ }
@@ -0,0 +1,4 @@
1
+ export default function getUUID() {
2
+ return Math.random().toString(36).substring(2, 15) +
3
+ Math.random().toString(36).substring(2, 15);
4
+ }