@symbiote-native/file-system 0.1.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 +262 -0
- package/build/angular/index.d.ts +1 -0
- package/build/angular/index.js +1 -0
- package/build/core/file-system.d.ts +169 -0
- package/build/core/file-system.js +404 -0
- package/build/core/index.d.ts +2 -0
- package/build/core/index.js +2 -0
- package/build/core/native-module.d.ts +32 -0
- package/build/core/native-module.js +2 -0
- package/build/core/types.d.ts +104 -0
- package/build/core/types.js +15 -0
- package/build/next/directory.d.ts +36 -0
- package/build/next/directory.js +59 -0
- package/build/next/file.d.ts +71 -0
- package/build/next/file.js +207 -0
- package/build/next/index.d.ts +5 -0
- package/build/next/index.js +5 -0
- package/build/next/native-module.d.ts +109 -0
- package/build/next/native-module.js +2 -0
- package/build/next/network-tasks.d.ts +118 -0
- package/build/next/network-tasks.js +333 -0
- package/build/next/node-path.d.ts +16 -0
- package/build/next/node-path.js +353 -0
- package/build/next/path-utilities.d.ts +42 -0
- package/build/next/path-utilities.js +110 -0
- package/build/next/paths.d.ts +22 -0
- package/build/next/paths.js +43 -0
- package/build/next/streams.d.ts +25 -0
- package/build/next/streams.js +55 -0
- package/build/next/types.d.ts +152 -0
- package/build/next/types.js +19 -0
- package/build/next/url-utilities.d.ts +3 -0
- package/build/next/url-utilities.js +62 -0
- package/build/next/watcher.d.ts +19 -0
- package/build/next/watcher.js +64 -0
- package/build-ngc/angular/index.d.ts +1 -0
- package/build-ngc/angular/index.js +2 -0
- package/build-ngc/angular/index.js.map +1 -0
- package/build-ngc/next/directory.d.ts +36 -0
- package/build-ngc/next/directory.js +60 -0
- package/build-ngc/next/directory.js.map +1 -0
- package/build-ngc/next/file.d.ts +71 -0
- package/build-ngc/next/file.js +208 -0
- package/build-ngc/next/file.js.map +1 -0
- package/build-ngc/next/index.d.ts +5 -0
- package/build-ngc/next/index.js +6 -0
- package/build-ngc/next/index.js.map +1 -0
- package/build-ngc/next/native-module.d.ts +109 -0
- package/build-ngc/next/native-module.js +3 -0
- package/build-ngc/next/native-module.js.map +1 -0
- package/build-ngc/next/network-tasks.d.ts +118 -0
- package/build-ngc/next/network-tasks.js +334 -0
- package/build-ngc/next/network-tasks.js.map +1 -0
- package/build-ngc/next/node-path.d.ts +16 -0
- package/build-ngc/next/node-path.js +354 -0
- package/build-ngc/next/node-path.js.map +1 -0
- package/build-ngc/next/path-utilities.d.ts +42 -0
- package/build-ngc/next/path-utilities.js +111 -0
- package/build-ngc/next/path-utilities.js.map +1 -0
- package/build-ngc/next/paths.d.ts +22 -0
- package/build-ngc/next/paths.js +44 -0
- package/build-ngc/next/paths.js.map +1 -0
- package/build-ngc/next/streams.d.ts +25 -0
- package/build-ngc/next/streams.js +56 -0
- package/build-ngc/next/streams.js.map +1 -0
- package/build-ngc/next/types.d.ts +152 -0
- package/build-ngc/next/types.js +20 -0
- package/build-ngc/next/types.js.map +1 -0
- package/build-ngc/next/url-utilities.d.ts +3 -0
- package/build-ngc/next/url-utilities.js +63 -0
- package/build-ngc/next/url-utilities.js.map +1 -0
- package/build-ngc/next/watcher.d.ts +19 -0
- package/build-ngc/next/watcher.js +65 -0
- package/build-ngc/next/watcher.js.map +1 -0
- package/native-link.json +17 -0
- package/package.json +154 -0
- package/src/angular/index.ts +1 -0
- package/src/core/file-system.ts +634 -0
- package/src/core/index.ts +2 -0
- package/src/core/native-module.ts +99 -0
- package/src/core/types.ts +135 -0
- package/src/next/directory.ts +83 -0
- package/src/next/file.ts +318 -0
- package/src/next/index.ts +5 -0
- package/src/next/native-module.ts +188 -0
- package/src/next/network-tasks.ts +456 -0
- package/src/next/node-path.ts +362 -0
- package/src/next/path-utilities.ts +144 -0
- package/src/next/paths.ts +52 -0
- package/src/next/streams-ambient.d.ts +34 -0
- package/src/next/streams.ts +81 -0
- package/src/next/types.ts +194 -0
- package/src/next/url-utilities.ts +70 -0
- package/src/next/watcher.ts +106 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export class FileSystemReadableStreamSource {
|
|
2
|
+
handle;
|
|
3
|
+
size = 1024;
|
|
4
|
+
type = 'bytes';
|
|
5
|
+
constructor(handle) {
|
|
6
|
+
this.handle = handle;
|
|
7
|
+
}
|
|
8
|
+
cancel() {
|
|
9
|
+
this.handle.close();
|
|
10
|
+
}
|
|
11
|
+
pull(controller) {
|
|
12
|
+
const theView = controller.byobRequest?.view;
|
|
13
|
+
if (!theView) {
|
|
14
|
+
const bytes = this.handle.readBytes(this.size);
|
|
15
|
+
if (bytes.length === 0) {
|
|
16
|
+
controller.close();
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
controller.enqueue(bytes);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// TODO: Optimize by adding a native method that can write into a TypedArray at a given offset.
|
|
23
|
+
const bytes = this.handle.readBytes(theView.byteLength - theView.byteOffset);
|
|
24
|
+
if (bytes.length === 0) {
|
|
25
|
+
controller.close();
|
|
26
|
+
controller.byobRequest.respond(0);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (theView instanceof Uint8Array) {
|
|
30
|
+
theView.set(bytes, theView.byteOffset);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const array = new Uint8Array(theView.buffer);
|
|
34
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
35
|
+
array[i + (theView.byteOffset ?? 0)] = bytes[i];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
controller.byobRequest.respond(bytes.length);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class FileSystemWritableSink {
|
|
42
|
+
handle;
|
|
43
|
+
constructor(handle) {
|
|
44
|
+
this.handle = handle;
|
|
45
|
+
}
|
|
46
|
+
abort() {
|
|
47
|
+
this.close();
|
|
48
|
+
}
|
|
49
|
+
close() {
|
|
50
|
+
this.handle.close();
|
|
51
|
+
}
|
|
52
|
+
write(chunk) {
|
|
53
|
+
this.handle.writeBytes(chunk);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=streams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../src/next/streams.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,8BAA8B;IACzC,MAAM,CAAoB;IAC1B,IAAI,GAAW,IAAI,CAAC;IACpB,IAAI,GAAG,OAAgB,CAAC;IAExB,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,UAAyC;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,+FAA+F;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACjC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CACxC,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACnD,CAAC;QACH,CAAC;QACD,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACjC,MAAM,CAAoB;IAE1B,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAiB;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { File } from './file';
|
|
2
|
+
import type { Directory } from './directory';
|
|
3
|
+
export type IFileCreateOptions = {
|
|
4
|
+
intermediates?: boolean;
|
|
5
|
+
overwrite?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type IRelocationOptions = {
|
|
8
|
+
overwrite?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare enum FileSystemEncodingType {
|
|
11
|
+
UTF8 = "utf8",
|
|
12
|
+
Base64 = "base64"
|
|
13
|
+
}
|
|
14
|
+
export type IFileWriteOptions = {
|
|
15
|
+
encoding?: FileSystemEncodingType | 'utf8' | 'base64';
|
|
16
|
+
append?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare enum FileMode {
|
|
19
|
+
ReadWrite = "rw",
|
|
20
|
+
ReadOnly = "r",
|
|
21
|
+
WriteOnly = "w",
|
|
22
|
+
Append = "wa",
|
|
23
|
+
Truncate = "wt"
|
|
24
|
+
}
|
|
25
|
+
export type IFileSystemHandle = {
|
|
26
|
+
close(): void;
|
|
27
|
+
readBytes(length: number): Uint8Array<ArrayBuffer>;
|
|
28
|
+
writeBytes(bytes: Uint8Array): void;
|
|
29
|
+
offset: number | null;
|
|
30
|
+
size: number | null;
|
|
31
|
+
};
|
|
32
|
+
export type IFileInfo = {
|
|
33
|
+
exists: boolean;
|
|
34
|
+
uri?: string;
|
|
35
|
+
size?: number;
|
|
36
|
+
modificationTime?: number;
|
|
37
|
+
creationTime?: number;
|
|
38
|
+
md5?: string;
|
|
39
|
+
};
|
|
40
|
+
export type IFileSystemInfoOptions = {
|
|
41
|
+
md5?: boolean;
|
|
42
|
+
};
|
|
43
|
+
export type IPickFileGeneralOptions = {
|
|
44
|
+
initialUri?: string;
|
|
45
|
+
mimeTypes?: string | string[];
|
|
46
|
+
multipleFiles?: boolean;
|
|
47
|
+
};
|
|
48
|
+
export type IPickSingleFileOptions = IPickFileGeneralOptions & {
|
|
49
|
+
multipleFiles?: false;
|
|
50
|
+
};
|
|
51
|
+
export type IPickMultipleFilesOptions = IPickFileGeneralOptions & {
|
|
52
|
+
multipleFiles: true;
|
|
53
|
+
};
|
|
54
|
+
export type IPickFileOptions = IPickSingleFileOptions | IPickMultipleFilesOptions;
|
|
55
|
+
export type IPickSingleFileSuccessResult = {
|
|
56
|
+
result: File;
|
|
57
|
+
canceled: false;
|
|
58
|
+
};
|
|
59
|
+
export type IPickMultipleFilesSuccessResult = {
|
|
60
|
+
result: File[];
|
|
61
|
+
canceled: false;
|
|
62
|
+
};
|
|
63
|
+
export type IPickFileCanceledResult = {
|
|
64
|
+
result: null;
|
|
65
|
+
canceled: true;
|
|
66
|
+
};
|
|
67
|
+
export type IPickSingleFileResult = IPickSingleFileSuccessResult | IPickFileCanceledResult;
|
|
68
|
+
export type IPickMultipleFilesResult = IPickMultipleFilesSuccessResult | IPickFileCanceledResult;
|
|
69
|
+
export type IDirectoryCreateOptions = {
|
|
70
|
+
intermediates?: boolean;
|
|
71
|
+
overwrite?: boolean;
|
|
72
|
+
idempotent?: boolean;
|
|
73
|
+
};
|
|
74
|
+
export type IDirectoryInfo = {
|
|
75
|
+
exists: boolean;
|
|
76
|
+
uri?: string;
|
|
77
|
+
size?: number;
|
|
78
|
+
modificationTime?: number;
|
|
79
|
+
creationTime?: number;
|
|
80
|
+
files?: string[];
|
|
81
|
+
};
|
|
82
|
+
export type IPathInfo = {
|
|
83
|
+
exists: boolean;
|
|
84
|
+
isDirectory: boolean | null;
|
|
85
|
+
};
|
|
86
|
+
export type IFileSystemDownloadProgress = {
|
|
87
|
+
bytesWritten: number;
|
|
88
|
+
totalBytes: number;
|
|
89
|
+
};
|
|
90
|
+
export type IFileSystemDownloadOptions = {
|
|
91
|
+
headers?: Record<string, string>;
|
|
92
|
+
idempotent?: boolean;
|
|
93
|
+
onProgress?: (data: IFileSystemDownloadProgress) => void;
|
|
94
|
+
signal?: AbortSignal;
|
|
95
|
+
};
|
|
96
|
+
export declare enum FileSystemUploadType {
|
|
97
|
+
BINARY_CONTENT = 0,
|
|
98
|
+
MULTIPART = 1
|
|
99
|
+
}
|
|
100
|
+
export type IFileSystemUploadProgress = {
|
|
101
|
+
bytesSent: number;
|
|
102
|
+
totalBytes: number;
|
|
103
|
+
};
|
|
104
|
+
export type IFileSystemUploadResult = {
|
|
105
|
+
body: string;
|
|
106
|
+
status: number;
|
|
107
|
+
headers: Record<string, string>;
|
|
108
|
+
};
|
|
109
|
+
export type IFileSystemNetworkTaskSessionType = 'background' | 'foreground';
|
|
110
|
+
export type IFileSystemUploadOptions = {
|
|
111
|
+
httpMethod?: 'POST' | 'PUT' | 'PATCH';
|
|
112
|
+
uploadType?: FileSystemUploadType;
|
|
113
|
+
headers?: Record<string, string>;
|
|
114
|
+
fieldName?: string;
|
|
115
|
+
mimeType?: string;
|
|
116
|
+
parameters?: Record<string, string>;
|
|
117
|
+
onProgress?: (data: IFileSystemUploadProgress) => void;
|
|
118
|
+
sessionType?: IFileSystemNetworkTaskSessionType;
|
|
119
|
+
signal?: AbortSignal;
|
|
120
|
+
};
|
|
121
|
+
export type IFileSystemDownloadTaskOptions = {
|
|
122
|
+
headers?: Record<string, string>;
|
|
123
|
+
sessionType?: IFileSystemNetworkTaskSessionType;
|
|
124
|
+
onProgress?: (data: IFileSystemDownloadProgress) => void;
|
|
125
|
+
signal?: AbortSignal;
|
|
126
|
+
};
|
|
127
|
+
export type IFileSystemDownloadPauseState = {
|
|
128
|
+
url: string;
|
|
129
|
+
fileUri: string;
|
|
130
|
+
isDirectory: boolean;
|
|
131
|
+
headers?: Record<string, string>;
|
|
132
|
+
resumeData?: string;
|
|
133
|
+
};
|
|
134
|
+
type IFileSystemTaskState = 'idle' | 'active' | 'paused' | 'completed' | 'cancelled' | 'error';
|
|
135
|
+
export type IFileSystemUploadTaskState = Exclude<IFileSystemTaskState, 'paused'>;
|
|
136
|
+
export type IFileSystemDownloadTaskState = IFileSystemTaskState;
|
|
137
|
+
export declare const DEFAULT_WATCH_DEBOUNCE_MS = 100;
|
|
138
|
+
export type IFileSystemWatchEventType = 'created' | 'modified' | 'deleted' | 'renamed';
|
|
139
|
+
export type IFileSystemWatchEvent<T extends File | Directory> = {
|
|
140
|
+
type: IFileSystemWatchEventType;
|
|
141
|
+
target: T;
|
|
142
|
+
nativeEventFlags?: number;
|
|
143
|
+
newTarget?: T;
|
|
144
|
+
};
|
|
145
|
+
export type IFileSystemWatchOptions = {
|
|
146
|
+
debounce?: number;
|
|
147
|
+
events?: IFileSystemWatchEventType[];
|
|
148
|
+
};
|
|
149
|
+
export type IFileSystemWatchSubscription = {
|
|
150
|
+
remove(): void;
|
|
151
|
+
};
|
|
152
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export var FileSystemEncodingType;
|
|
2
|
+
(function (FileSystemEncodingType) {
|
|
3
|
+
FileSystemEncodingType["UTF8"] = "utf8";
|
|
4
|
+
FileSystemEncodingType["Base64"] = "base64";
|
|
5
|
+
})(FileSystemEncodingType || (FileSystemEncodingType = {}));
|
|
6
|
+
export var FileMode;
|
|
7
|
+
(function (FileMode) {
|
|
8
|
+
FileMode["ReadWrite"] = "rw";
|
|
9
|
+
FileMode["ReadOnly"] = "r";
|
|
10
|
+
FileMode["WriteOnly"] = "w";
|
|
11
|
+
FileMode["Append"] = "wa";
|
|
12
|
+
FileMode["Truncate"] = "wt";
|
|
13
|
+
})(FileMode || (FileMode = {}));
|
|
14
|
+
export var FileSystemUploadType;
|
|
15
|
+
(function (FileSystemUploadType) {
|
|
16
|
+
FileSystemUploadType[FileSystemUploadType["BINARY_CONTENT"] = 0] = "BINARY_CONTENT";
|
|
17
|
+
FileSystemUploadType[FileSystemUploadType["MULTIPART"] = 1] = "MULTIPART";
|
|
18
|
+
})(FileSystemUploadType || (FileSystemUploadType = {}));
|
|
19
|
+
export const DEFAULT_WATCH_DEBOUNCE_MS = 100;
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/next/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,2CAAiB,CAAA;AACnB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAOD,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,4BAAgB,CAAA;IAChB,0BAAc,CAAA;IACd,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,2BAAe,CAAA;AACjB,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AA4FD,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,mFAAkB,CAAA;IAClB,yEAAa,CAAA;AACf,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAmDD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Ported verbatim from expo-file-system's own vendored copy (Copyright Joyent, Inc. and other
|
|
2
|
+
// Node contributors, MIT licensed) — url-encoding helpers used when a path is a `file://`/URL
|
|
3
|
+
// rather than a bare posix path.
|
|
4
|
+
import { resolve, sep } from './node-path';
|
|
5
|
+
const percentRegEx = /%/g;
|
|
6
|
+
const backslashRegEx = /\\/g;
|
|
7
|
+
const newlineRegEx = /\n/g;
|
|
8
|
+
const carriageReturnRegEx = /\r/g;
|
|
9
|
+
const tabRegEx = /\t/g;
|
|
10
|
+
const questionRegex = /\?/g;
|
|
11
|
+
const hashRegex = /#/g;
|
|
12
|
+
const spaceRegEx = / /g;
|
|
13
|
+
function encodePathChars(filepath) {
|
|
14
|
+
if (filepath.indexOf('%') !== -1)
|
|
15
|
+
filepath = filepath.replace(percentRegEx, '%25');
|
|
16
|
+
if (filepath.indexOf('\\') !== -1)
|
|
17
|
+
filepath = filepath.replace(backslashRegEx, '%5C');
|
|
18
|
+
if (filepath.indexOf('\n') !== -1)
|
|
19
|
+
filepath = filepath.replace(newlineRegEx, '%0A');
|
|
20
|
+
if (filepath.indexOf('\r') !== -1)
|
|
21
|
+
filepath = filepath.replace(carriageReturnRegEx, '%0D');
|
|
22
|
+
if (filepath.indexOf('\t') !== -1)
|
|
23
|
+
filepath = filepath.replace(tabRegEx, '%09');
|
|
24
|
+
if (filepath.indexOf(' ') !== -1)
|
|
25
|
+
filepath = filepath.replace(spaceRegEx, '%20');
|
|
26
|
+
return filepath;
|
|
27
|
+
}
|
|
28
|
+
export function encodeURLChars(path) {
|
|
29
|
+
let resolved = resolve(path);
|
|
30
|
+
const filePathLast = path.charAt(path.length - 1);
|
|
31
|
+
if (filePathLast === '/' && resolved[resolved.length - 1] !== sep)
|
|
32
|
+
resolved += '/';
|
|
33
|
+
resolved = encodePathChars(resolved);
|
|
34
|
+
if (resolved.indexOf('?') !== -1)
|
|
35
|
+
resolved = resolved.replace(questionRegex, '%3F');
|
|
36
|
+
if (resolved.indexOf('#') !== -1)
|
|
37
|
+
resolved = resolved.replace(hashRegex, '%23');
|
|
38
|
+
return resolved;
|
|
39
|
+
}
|
|
40
|
+
export function isUrl(url) {
|
|
41
|
+
try {
|
|
42
|
+
return !!new URL(url);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export function asUrl(url) {
|
|
49
|
+
try {
|
|
50
|
+
const parsed = new URL(url);
|
|
51
|
+
if (parsed.hash === '') {
|
|
52
|
+
return parsed;
|
|
53
|
+
}
|
|
54
|
+
// Strip the hash by reconstructing rather than assigning `.hash = ''` — this project's
|
|
55
|
+
// resolved `URL` type declares its setters read-only (see path-utilities.ts's own note).
|
|
56
|
+
const hashIndex = parsed.href.indexOf('#');
|
|
57
|
+
return new URL(hashIndex === -1 ? parsed.href : parsed.href.slice(0, hashIndex));
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=url-utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-utilities.js","sourceRoot":"","sources":["../../src/next/url-utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Directory } from './directory';
|
|
2
|
+
import type { File } from './file';
|
|
3
|
+
import type { IFileSystemWatchEvent, IFileSystemWatchOptions, IFileSystemWatchSubscription } from './types';
|
|
4
|
+
type ITargetFactory<T> = (uri: string, isDirectory: boolean) => T;
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
* Internal implementation of file system watching. Use `File.watch()` or `Directory.watch()` instead.
|
|
8
|
+
*/
|
|
9
|
+
export declare class FileSystemWatcher<T extends File | Directory> implements IFileSystemWatchSubscription {
|
|
10
|
+
private readonly targetFactory;
|
|
11
|
+
private nativeWatcher;
|
|
12
|
+
private subscription;
|
|
13
|
+
private removed;
|
|
14
|
+
private readonly normalizedWatchedPath;
|
|
15
|
+
constructor(path: string, callback: (event: IFileSystemWatchEvent<T>) => void, options: IFileSystemWatchOptions | undefined, targetFactory: ITargetFactory<T>);
|
|
16
|
+
private mapEvent;
|
|
17
|
+
remove(): void;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { expoFileSystemNext, } from './native-module';
|
|
2
|
+
import { DEFAULT_WATCH_DEBOUNCE_MS } from './types';
|
|
3
|
+
function normalizePath(path) {
|
|
4
|
+
return path.replace(/\/+$/, '');
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
* Internal implementation of file system watching. Use `File.watch()` or `Directory.watch()` instead.
|
|
9
|
+
*/
|
|
10
|
+
export class FileSystemWatcher {
|
|
11
|
+
targetFactory;
|
|
12
|
+
nativeWatcher;
|
|
13
|
+
subscription = null;
|
|
14
|
+
removed = false;
|
|
15
|
+
normalizedWatchedPath;
|
|
16
|
+
constructor(path, callback, options = {}, targetFactory) {
|
|
17
|
+
this.targetFactory = targetFactory;
|
|
18
|
+
this.normalizedWatchedPath = normalizePath(path);
|
|
19
|
+
this.nativeWatcher = new expoFileSystemNext.FileSystemWatcher(path, {
|
|
20
|
+
debounce: options.debounce ?? DEFAULT_WATCH_DEBOUNCE_MS,
|
|
21
|
+
events: options.events,
|
|
22
|
+
});
|
|
23
|
+
this.subscription = this.nativeWatcher.addListener('change', (raw) => {
|
|
24
|
+
const event = this.mapEvent(raw);
|
|
25
|
+
const isWatchedTarget = normalizePath(raw.path) === this.normalizedWatchedPath;
|
|
26
|
+
if (!options.events || options.events.includes(event.type)) {
|
|
27
|
+
callback(event);
|
|
28
|
+
}
|
|
29
|
+
if ((event.type === 'deleted' || event.type === 'renamed') &&
|
|
30
|
+
isWatchedTarget) {
|
|
31
|
+
this.remove();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
try {
|
|
35
|
+
this.nativeWatcher.start();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
this.subscription.remove();
|
|
39
|
+
this.subscription = null;
|
|
40
|
+
this.nativeWatcher = null;
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
mapEvent(raw) {
|
|
45
|
+
return {
|
|
46
|
+
type: raw.type,
|
|
47
|
+
target: this.targetFactory(raw.path, raw.isDirectory),
|
|
48
|
+
newTarget: raw.newPath
|
|
49
|
+
? this.targetFactory(raw.newPath, raw.newPathIsDirectory ?? raw.isDirectory)
|
|
50
|
+
: undefined,
|
|
51
|
+
nativeEventFlags: raw.nativeEventFlags,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
remove() {
|
|
55
|
+
if (this.removed) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this.removed = true;
|
|
59
|
+
this.subscription?.remove();
|
|
60
|
+
this.subscription = null;
|
|
61
|
+
this.nativeWatcher?.stop();
|
|
62
|
+
this.nativeWatcher = null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/next/watcher.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AASpD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAcT;IAXX,aAAa,CAEZ;IACD,YAAY,GAA6B,IAAI,CAAC;IAC9C,OAAO,GAAG,KAAK,CAAC;IACP,qBAAqB,CAAS;IAE/C,YACE,IAAY,EACZ,QAAmD,EACnD,UAAmC,EAAE,EACpB,aAAgC;QAAhC,kBAAa,GAAb,aAAa,CAAmB;QAEjD,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,EAAE;YAClE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,yBAAyB;YACvD,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAChD,QAAQ,EACR,CAAC,GAAkC,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,eAAe,GACnB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC;YAEzD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAED,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;gBACtD,eAAe,EACf,CAAC;gBACD,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,QAAQ,CACd,GAAkC;QAElC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC;YACrD,SAAS,EAAE,GAAG,CAAC,OAAO;gBACpB,CAAC,CAAC,IAAI,CAAC,aAAa,CAChB,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,WAAW,CAC1C;gBACH,CAAC,CAAC,SAAS;YACb,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;SACvC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF"}
|
package/native-link.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"android": {
|
|
3
|
+
"gradleProjectName": "expo-file-system",
|
|
4
|
+
"modules": [
|
|
5
|
+
{
|
|
6
|
+
"importPath": "expo.modules.filesystem.legacy.FileSystemLegacyModule",
|
|
7
|
+
"className": "FileSystemLegacyModule",
|
|
8
|
+
"nativeName": "ExponentFileSystem"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"importPath": "expo.modules.filesystem.FileSystemModule",
|
|
12
|
+
"className": "FileSystemModule",
|
|
13
|
+
"nativeName": "FileSystem"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@symbiote-native/file-system",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "expo-file-system wrapped for SymbioteNative — one framework-agnostic core, built once and reachable from the React, Vue, Svelte, Solid, and Angular adapters. Matches upstream's own layout: the modern JSI shared-object File/Directory/Paths API (including upload/download tasks and filesystem watching) at the package root, and the legacy function-based API (read/write/copy/move/delete, directory listing, disk-space queries, resumable download/upload, Android Storage Access Framework) at the ./legacy subpath. See the module's own README.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/OneEyed1366/symbiote-native.git",
|
|
9
|
+
"directory": "packages/file-system"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/OneEyed1366/symbiote-native/tree/master/packages/file-system#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/OneEyed1366/symbiote-native/issues"
|
|
14
|
+
},
|
|
15
|
+
"author": "Andrey Prokopenko <psevdoproger@gmail.com>",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"react-native",
|
|
18
|
+
"symbiote-native",
|
|
19
|
+
"expo-file-system",
|
|
20
|
+
"react",
|
|
21
|
+
"vue",
|
|
22
|
+
"svelte",
|
|
23
|
+
"solid",
|
|
24
|
+
"angular",
|
|
25
|
+
"file-system",
|
|
26
|
+
"filesystem"
|
|
27
|
+
],
|
|
28
|
+
"type": "module",
|
|
29
|
+
"main": "./build/next/index.js",
|
|
30
|
+
"module": "./build/next/index.js",
|
|
31
|
+
"types": "./build/next/index.d.ts",
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./build/next/index.d.ts",
|
|
35
|
+
"default": "./build/next/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./vue": {
|
|
38
|
+
"types": "./build/next/index.d.ts",
|
|
39
|
+
"default": "./build/next/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./react": {
|
|
42
|
+
"types": "./build/next/index.d.ts",
|
|
43
|
+
"default": "./build/next/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./svelte": {
|
|
46
|
+
"types": "./build/next/index.d.ts",
|
|
47
|
+
"default": "./build/next/index.js"
|
|
48
|
+
},
|
|
49
|
+
"./solid": {
|
|
50
|
+
"types": "./build/next/index.d.ts",
|
|
51
|
+
"default": "./build/next/index.js"
|
|
52
|
+
},
|
|
53
|
+
"./angular": {
|
|
54
|
+
"types": "./build-ngc/angular/index.d.ts",
|
|
55
|
+
"react-native": "./build-ngc/angular/index.js",
|
|
56
|
+
"default": "./src/angular/index.ts"
|
|
57
|
+
},
|
|
58
|
+
"./legacy": {
|
|
59
|
+
"types": "./build/core/index.d.ts",
|
|
60
|
+
"default": "./build/core/index.js"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"files": [
|
|
64
|
+
"src",
|
|
65
|
+
"build",
|
|
66
|
+
"build-ngc",
|
|
67
|
+
"native-link.json",
|
|
68
|
+
"!src/**/*.test.*",
|
|
69
|
+
"!src/**/*.spec.*",
|
|
70
|
+
"!src/**/*.detox.*"
|
|
71
|
+
],
|
|
72
|
+
"publishConfig": {
|
|
73
|
+
"access": "public"
|
|
74
|
+
},
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"expo-file-system": "57.0.6",
|
|
77
|
+
"expo-modules-core": "57.0.5"
|
|
78
|
+
},
|
|
79
|
+
"peerDependencies": {
|
|
80
|
+
"@angular/core": ">=20",
|
|
81
|
+
"@vue/runtime-core": "^3.5.13",
|
|
82
|
+
"react": ">=19.0.0",
|
|
83
|
+
"react-native": ">=0.86",
|
|
84
|
+
"solid-js": ">=1.9.0",
|
|
85
|
+
"svelte": ">=5.56.0",
|
|
86
|
+
"vue": ">=3.5.0",
|
|
87
|
+
"@symbiote-native/solid": "^3.0.2",
|
|
88
|
+
"@symbiote-native/svelte": "^3.0.2",
|
|
89
|
+
"@symbiote-native/vue": "^3.0.2",
|
|
90
|
+
"@symbiote-native/angular": "^3.1.0",
|
|
91
|
+
"@symbiote-native/react": "^3.0.2",
|
|
92
|
+
"@symbiote-native/engine": "^1.3.0"
|
|
93
|
+
},
|
|
94
|
+
"peerDependenciesMeta": {
|
|
95
|
+
"@symbiote-native/angular": {
|
|
96
|
+
"optional": true
|
|
97
|
+
},
|
|
98
|
+
"@symbiote-native/react": {
|
|
99
|
+
"optional": true
|
|
100
|
+
},
|
|
101
|
+
"@symbiote-native/solid": {
|
|
102
|
+
"optional": true
|
|
103
|
+
},
|
|
104
|
+
"@symbiote-native/svelte": {
|
|
105
|
+
"optional": true
|
|
106
|
+
},
|
|
107
|
+
"@symbiote-native/vue": {
|
|
108
|
+
"optional": true
|
|
109
|
+
},
|
|
110
|
+
"@angular/core": {
|
|
111
|
+
"optional": true
|
|
112
|
+
},
|
|
113
|
+
"@vue/runtime-core": {
|
|
114
|
+
"optional": true
|
|
115
|
+
},
|
|
116
|
+
"react": {
|
|
117
|
+
"optional": true
|
|
118
|
+
},
|
|
119
|
+
"solid-js": {
|
|
120
|
+
"optional": true
|
|
121
|
+
},
|
|
122
|
+
"svelte": {
|
|
123
|
+
"optional": true
|
|
124
|
+
},
|
|
125
|
+
"vue": {
|
|
126
|
+
"optional": true
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"devDependencies": {
|
|
130
|
+
"@angular/compiler": "~22.0.8",
|
|
131
|
+
"@angular/compiler-cli": "~22.0.8",
|
|
132
|
+
"@angular/core": "~22.0.8",
|
|
133
|
+
"@types/node": "^26.0.0",
|
|
134
|
+
"@types/react": "^19.2.0",
|
|
135
|
+
"@vue/runtime-core": "^3.5.13",
|
|
136
|
+
"react": "19.2.3",
|
|
137
|
+
"solid-js": "^1.9.14",
|
|
138
|
+
"svelte": "^5.56.0",
|
|
139
|
+
"typescript": "~6.0.0",
|
|
140
|
+
"@symbiote-native/solid": "3.0.2",
|
|
141
|
+
"@symbiote-native/engine": "1.3.0",
|
|
142
|
+
"@symbiote-native/svelte": "3.0.2",
|
|
143
|
+
"@symbiote-native/test-utils": "0.4.2",
|
|
144
|
+
"@symbiote-native/angular": "3.1.0",
|
|
145
|
+
"@symbiote-native/react": "3.0.2",
|
|
146
|
+
"@symbiote-native/vue": "3.0.2"
|
|
147
|
+
},
|
|
148
|
+
"scripts": {
|
|
149
|
+
"typecheck": "tsc --build",
|
|
150
|
+
"clean": "rm -rf build-ngc",
|
|
151
|
+
"ng:build": "pnpm run clean && ngc -p tsconfig.angular.json",
|
|
152
|
+
"format": "prettier --write \"src/**/*.{ts,tsx}\""
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../next';
|