@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,354 @@
|
|
|
1
|
+
// Ported verbatim from expo-file-system's own vendored copy of Node's posix `path` module
|
|
2
|
+
// (Copyright Joyent, Inc. and other Node contributors, MIT licensed) — a self-contained,
|
|
3
|
+
// mechanical algorithm with zero native dependency, so a straight port carries low risk.
|
|
4
|
+
function isPathSeparator(code) {
|
|
5
|
+
return code === '/';
|
|
6
|
+
}
|
|
7
|
+
// Resolves . and .. elements in a path with directory names
|
|
8
|
+
function normalizeString(path, allowAboveRoot, separator) {
|
|
9
|
+
let res = '';
|
|
10
|
+
let lastSegmentLength = 0;
|
|
11
|
+
let lastSlash = -1;
|
|
12
|
+
let dots = 0;
|
|
13
|
+
let code = '';
|
|
14
|
+
for (let i = 0; i <= path.length; ++i) {
|
|
15
|
+
if (i < path.length)
|
|
16
|
+
code = path.charAt(i);
|
|
17
|
+
else if (isPathSeparator(code))
|
|
18
|
+
break;
|
|
19
|
+
else
|
|
20
|
+
code = '/';
|
|
21
|
+
if (isPathSeparator(code)) {
|
|
22
|
+
if (lastSlash === i - 1 || dots === 1) {
|
|
23
|
+
// NOOP
|
|
24
|
+
}
|
|
25
|
+
else if (dots === 2) {
|
|
26
|
+
if (res.length < 2 ||
|
|
27
|
+
lastSegmentLength !== 2 ||
|
|
28
|
+
res.charAt(res.length - 1) !== '.' ||
|
|
29
|
+
res.charAt(res.length - 2) !== '.') {
|
|
30
|
+
if (res.length > 2) {
|
|
31
|
+
const lastSlashIndex = res.lastIndexOf(separator);
|
|
32
|
+
if (lastSlashIndex === -1) {
|
|
33
|
+
res = '';
|
|
34
|
+
lastSegmentLength = 0;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
res = res.slice(0, lastSlashIndex);
|
|
38
|
+
lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);
|
|
39
|
+
}
|
|
40
|
+
lastSlash = i;
|
|
41
|
+
dots = 0;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
else if (res.length !== 0) {
|
|
45
|
+
res = '';
|
|
46
|
+
lastSegmentLength = 0;
|
|
47
|
+
lastSlash = i;
|
|
48
|
+
dots = 0;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (allowAboveRoot) {
|
|
53
|
+
res += res.length > 0 ? `${separator}..` : '..';
|
|
54
|
+
lastSegmentLength = 2;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (res.length > 0)
|
|
59
|
+
res += `${separator}${path.slice(lastSlash + 1, i)}`;
|
|
60
|
+
else
|
|
61
|
+
res = path.slice(lastSlash + 1, i);
|
|
62
|
+
lastSegmentLength = i - lastSlash - 1;
|
|
63
|
+
}
|
|
64
|
+
lastSlash = i;
|
|
65
|
+
dots = 0;
|
|
66
|
+
}
|
|
67
|
+
else if (code === '.' && dots !== -1) {
|
|
68
|
+
++dots;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
dots = -1;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return res;
|
|
75
|
+
}
|
|
76
|
+
export function resolve(...args) {
|
|
77
|
+
let resolvedPath = '';
|
|
78
|
+
let resolvedAbsolute = false;
|
|
79
|
+
for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
|
80
|
+
const path = i >= 0 ? args[i] : '';
|
|
81
|
+
if (!path || path.length === 0) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
resolvedPath = `${path}/${resolvedPath}`;
|
|
85
|
+
resolvedAbsolute = !!(path && path.charAt(0) === '/');
|
|
86
|
+
}
|
|
87
|
+
resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/');
|
|
88
|
+
if (resolvedAbsolute) {
|
|
89
|
+
return `/${resolvedPath}`;
|
|
90
|
+
}
|
|
91
|
+
return resolvedPath.length > 0 ? resolvedPath : '.';
|
|
92
|
+
}
|
|
93
|
+
export function normalize(path) {
|
|
94
|
+
if (path.length === 0)
|
|
95
|
+
return '.';
|
|
96
|
+
const isAbsolute = path.charAt(0) === '/';
|
|
97
|
+
const trailingSeparator = path.charAt(path.length - 1) === '/';
|
|
98
|
+
path = normalizeString(path, !isAbsolute, '/');
|
|
99
|
+
if (path.length === 0) {
|
|
100
|
+
if (isAbsolute)
|
|
101
|
+
return '/';
|
|
102
|
+
return trailingSeparator ? './' : '.';
|
|
103
|
+
}
|
|
104
|
+
if (trailingSeparator)
|
|
105
|
+
path += '/';
|
|
106
|
+
return isAbsolute ? `/${path}` : path;
|
|
107
|
+
}
|
|
108
|
+
export function isAbsolute(path) {
|
|
109
|
+
return path.length > 0 && path.charAt(0) === '/';
|
|
110
|
+
}
|
|
111
|
+
export function join(...args) {
|
|
112
|
+
if (args.length === 0)
|
|
113
|
+
return '.';
|
|
114
|
+
const path = [];
|
|
115
|
+
for (let i = 0; i < args.length; ++i) {
|
|
116
|
+
const arg = args[i];
|
|
117
|
+
if (arg && arg.length > 0) {
|
|
118
|
+
path.push(arg);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (path.length === 0)
|
|
122
|
+
return '.';
|
|
123
|
+
return normalize(path.join('/'));
|
|
124
|
+
}
|
|
125
|
+
export function relative(from, to) {
|
|
126
|
+
if (from === to)
|
|
127
|
+
return '';
|
|
128
|
+
from = resolve(from);
|
|
129
|
+
to = resolve(to);
|
|
130
|
+
if (from === to)
|
|
131
|
+
return '';
|
|
132
|
+
const fromStart = 1;
|
|
133
|
+
const fromEnd = from.length;
|
|
134
|
+
const fromLen = fromEnd - fromStart;
|
|
135
|
+
const toStart = 1;
|
|
136
|
+
const toLen = to.length - toStart;
|
|
137
|
+
const length = fromLen < toLen ? fromLen : toLen;
|
|
138
|
+
let lastCommonSep = -1;
|
|
139
|
+
let i = 0;
|
|
140
|
+
for (; i < length; i++) {
|
|
141
|
+
const fromChar = from.charAt(fromStart + i);
|
|
142
|
+
if (fromChar !== to.charAt(toStart + i))
|
|
143
|
+
break;
|
|
144
|
+
else if (fromChar === '/')
|
|
145
|
+
lastCommonSep = i;
|
|
146
|
+
}
|
|
147
|
+
if (i === length) {
|
|
148
|
+
if (toLen > length) {
|
|
149
|
+
if (to.charAt(toStart + i) === '/') {
|
|
150
|
+
return to.slice(toStart + i + 1);
|
|
151
|
+
}
|
|
152
|
+
if (i === 0) {
|
|
153
|
+
return to.slice(toStart + i);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else if (fromLen > length) {
|
|
157
|
+
if (from.charAt(fromStart + i) === '/') {
|
|
158
|
+
lastCommonSep = i;
|
|
159
|
+
}
|
|
160
|
+
else if (i === 0) {
|
|
161
|
+
lastCommonSep = 0;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
let out = '';
|
|
166
|
+
for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
|
|
167
|
+
if (i === fromEnd || from.charAt(i) === '/') {
|
|
168
|
+
out += out.length === 0 ? '..' : '/..';
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return `${out}${to.slice(toStart + lastCommonSep)}`;
|
|
172
|
+
}
|
|
173
|
+
export function dirname(path) {
|
|
174
|
+
if (path.length === 0)
|
|
175
|
+
return '.';
|
|
176
|
+
const hasRoot = path.charAt(0) === '/';
|
|
177
|
+
let end = -1;
|
|
178
|
+
let matchedSlash = true;
|
|
179
|
+
for (let i = path.length - 1; i >= 1; --i) {
|
|
180
|
+
if (path.charAt(i) === '/') {
|
|
181
|
+
if (!matchedSlash) {
|
|
182
|
+
end = i;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
matchedSlash = false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (end === -1)
|
|
191
|
+
return hasRoot ? '/' : '.';
|
|
192
|
+
if (hasRoot && end === 1)
|
|
193
|
+
return '//';
|
|
194
|
+
return path.slice(0, end);
|
|
195
|
+
}
|
|
196
|
+
export function basename(path, suffix) {
|
|
197
|
+
let start = 0;
|
|
198
|
+
let end = -1;
|
|
199
|
+
let matchedSlash = true;
|
|
200
|
+
if (suffix !== undefined &&
|
|
201
|
+
suffix.length > 0 &&
|
|
202
|
+
suffix.length <= path.length) {
|
|
203
|
+
if (suffix === path)
|
|
204
|
+
return '';
|
|
205
|
+
let extIdx = suffix.length - 1;
|
|
206
|
+
let firstNonSlashEnd = -1;
|
|
207
|
+
for (let i = path.length - 1; i >= 0; --i) {
|
|
208
|
+
const code = path.charAt(i);
|
|
209
|
+
if (code === '/') {
|
|
210
|
+
if (!matchedSlash) {
|
|
211
|
+
start = i + 1;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
if (firstNonSlashEnd === -1) {
|
|
217
|
+
matchedSlash = false;
|
|
218
|
+
firstNonSlashEnd = i + 1;
|
|
219
|
+
}
|
|
220
|
+
if (extIdx >= 0) {
|
|
221
|
+
if (code === suffix.charAt(extIdx)) {
|
|
222
|
+
if (--extIdx === -1) {
|
|
223
|
+
end = i;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
extIdx = -1;
|
|
228
|
+
end = firstNonSlashEnd;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (start === end)
|
|
234
|
+
end = firstNonSlashEnd;
|
|
235
|
+
else if (end === -1)
|
|
236
|
+
end = path.length;
|
|
237
|
+
return path.slice(start, end);
|
|
238
|
+
}
|
|
239
|
+
for (let i = path.length - 1; i >= 0; --i) {
|
|
240
|
+
if (path.charAt(i) === '/') {
|
|
241
|
+
if (!matchedSlash) {
|
|
242
|
+
start = i + 1;
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else if (end === -1) {
|
|
247
|
+
matchedSlash = false;
|
|
248
|
+
end = i + 1;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (end === -1)
|
|
252
|
+
return '';
|
|
253
|
+
return path.slice(start, end);
|
|
254
|
+
}
|
|
255
|
+
export function extname(path) {
|
|
256
|
+
let startDot = -1;
|
|
257
|
+
let startPart = 0;
|
|
258
|
+
let end = -1;
|
|
259
|
+
let matchedSlash = true;
|
|
260
|
+
let preDotState = 0;
|
|
261
|
+
for (let i = path.length - 1; i >= 0; --i) {
|
|
262
|
+
const code = path.charAt(i);
|
|
263
|
+
if (code === '/') {
|
|
264
|
+
if (!matchedSlash) {
|
|
265
|
+
startPart = i + 1;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
if (end === -1) {
|
|
271
|
+
matchedSlash = false;
|
|
272
|
+
end = i + 1;
|
|
273
|
+
}
|
|
274
|
+
if (code === '.') {
|
|
275
|
+
if (startDot === -1)
|
|
276
|
+
startDot = i;
|
|
277
|
+
else if (preDotState !== 1)
|
|
278
|
+
preDotState = 1;
|
|
279
|
+
}
|
|
280
|
+
else if (startDot !== -1) {
|
|
281
|
+
preDotState = -1;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (startDot === -1 ||
|
|
285
|
+
end === -1 ||
|
|
286
|
+
preDotState === 0 ||
|
|
287
|
+
(preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)) {
|
|
288
|
+
return '';
|
|
289
|
+
}
|
|
290
|
+
return path.slice(startDot, end);
|
|
291
|
+
}
|
|
292
|
+
export function parse(path) {
|
|
293
|
+
const ret = { root: '', dir: '', base: '', ext: '', name: '' };
|
|
294
|
+
if (path.length === 0)
|
|
295
|
+
return ret;
|
|
296
|
+
const isAbsolutePath = path.charAt(0) === '/';
|
|
297
|
+
let start;
|
|
298
|
+
if (isAbsolutePath) {
|
|
299
|
+
ret.root = '/';
|
|
300
|
+
start = 1;
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
start = 0;
|
|
304
|
+
}
|
|
305
|
+
let startDot = -1;
|
|
306
|
+
let startPart = 0;
|
|
307
|
+
let end = -1;
|
|
308
|
+
let matchedSlash = true;
|
|
309
|
+
let i = path.length - 1;
|
|
310
|
+
let preDotState = 0;
|
|
311
|
+
for (; i >= start; --i) {
|
|
312
|
+
const code = path.charAt(i);
|
|
313
|
+
if (code === '/') {
|
|
314
|
+
if (!matchedSlash) {
|
|
315
|
+
startPart = i + 1;
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
if (end === -1) {
|
|
321
|
+
matchedSlash = false;
|
|
322
|
+
end = i + 1;
|
|
323
|
+
}
|
|
324
|
+
if (code === '.') {
|
|
325
|
+
if (startDot === -1)
|
|
326
|
+
startDot = i;
|
|
327
|
+
else if (preDotState !== 1)
|
|
328
|
+
preDotState = 1;
|
|
329
|
+
}
|
|
330
|
+
else if (startDot !== -1) {
|
|
331
|
+
preDotState = -1;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (end !== -1) {
|
|
335
|
+
const nameStart = startPart === 0 && isAbsolutePath ? 1 : startPart;
|
|
336
|
+
if (startDot === -1 ||
|
|
337
|
+
preDotState === 0 ||
|
|
338
|
+
(preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)) {
|
|
339
|
+
ret.base = ret.name = path.slice(nameStart, end);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
ret.name = path.slice(nameStart, startDot);
|
|
343
|
+
ret.base = path.slice(nameStart, end);
|
|
344
|
+
ret.ext = path.slice(startDot, end);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (startPart > 0)
|
|
348
|
+
ret.dir = path.slice(0, startPart - 1);
|
|
349
|
+
else if (isAbsolutePath)
|
|
350
|
+
ret.dir = '/';
|
|
351
|
+
return ret;
|
|
352
|
+
}
|
|
353
|
+
export const sep = '/';
|
|
354
|
+
//# sourceMappingURL=node-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-path.js","sourceRoot":"","sources":["../../src/next/node-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { File } from './file';
|
|
2
|
+
import type { Directory } from './directory';
|
|
3
|
+
export declare class PathUtilities {
|
|
4
|
+
/**
|
|
5
|
+
* Joins path segments into a single path.
|
|
6
|
+
*/
|
|
7
|
+
static join(...paths: (string | File | Directory)[]): string;
|
|
8
|
+
/**
|
|
9
|
+
* Resolves a relative path to an absolute path.
|
|
10
|
+
*/
|
|
11
|
+
static relative(from: string | File | Directory, to: string | File | Directory): string;
|
|
12
|
+
/**
|
|
13
|
+
* Checks if a path is absolute.
|
|
14
|
+
*/
|
|
15
|
+
static isAbsolute(path: string | File | Directory): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Normalizes a path.
|
|
18
|
+
*/
|
|
19
|
+
static normalize(path: string | File | Directory): string;
|
|
20
|
+
/**
|
|
21
|
+
* Returns the directory name of a path.
|
|
22
|
+
*/
|
|
23
|
+
static dirname(path: string | File | Directory): string;
|
|
24
|
+
/**
|
|
25
|
+
* Returns the base name of a path.
|
|
26
|
+
*/
|
|
27
|
+
static basename(path: string | File | Directory, ext?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Returns the extension of a path.
|
|
30
|
+
*/
|
|
31
|
+
static extname(path: string | File | Directory): string;
|
|
32
|
+
/**
|
|
33
|
+
* Parses a path into its components.
|
|
34
|
+
*/
|
|
35
|
+
static parse(path: string | File | Directory): {
|
|
36
|
+
root: string;
|
|
37
|
+
dir: string;
|
|
38
|
+
base: string;
|
|
39
|
+
ext: string;
|
|
40
|
+
name: string;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import * as nodePath from './node-path';
|
|
2
|
+
import { asUrl, isUrl, encodeURLChars } from './url-utilities';
|
|
3
|
+
function uriObjectToString(path) {
|
|
4
|
+
return typeof path === 'string' ? path : path.uri;
|
|
5
|
+
}
|
|
6
|
+
// React Native's own ambient `URL` type (react-native/src/types/globals.d.ts) declares every
|
|
7
|
+
// property but `search` as readonly, so a new pathname is applied by reconstructing the URL
|
|
8
|
+
// rather than assigning `.pathname` in place — matching what a real setter would do internally.
|
|
9
|
+
// Built from `.protocol`/`.host` rather than `.origin`, because `file://` URLs report `.origin`
|
|
10
|
+
// as the literal string `"null"` per spec.
|
|
11
|
+
function withPathname(url, pathname) {
|
|
12
|
+
return new URL(`${url.protocol}//${url.host}${pathname}${url.search}${url.hash}`);
|
|
13
|
+
}
|
|
14
|
+
export class PathUtilities {
|
|
15
|
+
/**
|
|
16
|
+
* Joins path segments into a single path.
|
|
17
|
+
*/
|
|
18
|
+
static join(...paths) {
|
|
19
|
+
const [firstSegment = '', ...rest] = paths.map(uriObjectToString);
|
|
20
|
+
const pathAsUrl = asUrl(firstSegment);
|
|
21
|
+
if (pathAsUrl) {
|
|
22
|
+
const joined = nodePath.join(pathAsUrl.pathname, ...rest.map(encodeURLChars));
|
|
23
|
+
return withPathname(pathAsUrl, joined).toString();
|
|
24
|
+
}
|
|
25
|
+
return nodePath.join(firstSegment, ...rest.map(encodeURLChars));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolves a relative path to an absolute path.
|
|
29
|
+
*/
|
|
30
|
+
static relative(from, to) {
|
|
31
|
+
let fromPath = from;
|
|
32
|
+
let toPath = to;
|
|
33
|
+
const fromString = uriObjectToString(from);
|
|
34
|
+
const toString = uriObjectToString(to);
|
|
35
|
+
if (isUrl(fromString)) {
|
|
36
|
+
fromPath = asUrl(fromString).pathname;
|
|
37
|
+
}
|
|
38
|
+
if (isUrl(toString)) {
|
|
39
|
+
toPath = asUrl(toString).pathname;
|
|
40
|
+
}
|
|
41
|
+
return nodePath.relative(uriObjectToString(fromPath), uriObjectToString(toPath));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Checks if a path is absolute.
|
|
45
|
+
*/
|
|
46
|
+
static isAbsolute(path) {
|
|
47
|
+
const pathString = uriObjectToString(path);
|
|
48
|
+
if (isUrl(pathString)) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return nodePath.isAbsolute(pathString);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Normalizes a path.
|
|
55
|
+
*/
|
|
56
|
+
static normalize(path) {
|
|
57
|
+
const pathString = uriObjectToString(path);
|
|
58
|
+
const pathURL = asUrl(encodeURLChars(pathString));
|
|
59
|
+
if (pathURL) {
|
|
60
|
+
const normalized = encodeURLChars(nodePath.normalize(decodeURIComponent(pathURL.pathname)));
|
|
61
|
+
return withPathname(pathURL, normalized).toString();
|
|
62
|
+
}
|
|
63
|
+
return nodePath.normalize(pathString);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Returns the directory name of a path.
|
|
67
|
+
*/
|
|
68
|
+
static dirname(path) {
|
|
69
|
+
const pathString = uriObjectToString(path);
|
|
70
|
+
const pathURL = asUrl(pathString);
|
|
71
|
+
if (pathURL) {
|
|
72
|
+
const dirnamePath = encodeURLChars(nodePath.dirname(decodeURIComponent(pathURL.pathname)));
|
|
73
|
+
return withPathname(pathURL, dirnamePath).toString();
|
|
74
|
+
}
|
|
75
|
+
return nodePath.dirname(pathString);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns the base name of a path.
|
|
79
|
+
*/
|
|
80
|
+
static basename(path, ext) {
|
|
81
|
+
const pathString = uriObjectToString(path);
|
|
82
|
+
const pathURL = asUrl(pathString);
|
|
83
|
+
if (pathURL) {
|
|
84
|
+
return nodePath.basename(decodeURIComponent(pathURL.pathname));
|
|
85
|
+
}
|
|
86
|
+
return nodePath.basename(pathString, ext);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns the extension of a path.
|
|
90
|
+
*/
|
|
91
|
+
static extname(path) {
|
|
92
|
+
const pathString = uriObjectToString(path);
|
|
93
|
+
const pathURL = asUrl(pathString);
|
|
94
|
+
if (pathURL) {
|
|
95
|
+
return nodePath.extname(decodeURIComponent(pathURL.pathname));
|
|
96
|
+
}
|
|
97
|
+
return nodePath.extname(pathString);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Parses a path into its components.
|
|
101
|
+
*/
|
|
102
|
+
static parse(path) {
|
|
103
|
+
const pathString = uriObjectToString(path);
|
|
104
|
+
const pathURL = asUrl(pathString);
|
|
105
|
+
if (pathURL) {
|
|
106
|
+
return nodePath.parse(decodeURIComponent(pathURL.pathname));
|
|
107
|
+
}
|
|
108
|
+
return nodePath.parse(pathString);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=path-utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-utilities.js","sourceRoot":"","sources":["../../src/next/path-utilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Directory } from './directory';
|
|
2
|
+
import { PathUtilities } from './path-utilities';
|
|
3
|
+
import type { IPathInfo } from './types';
|
|
4
|
+
export declare class Paths extends PathUtilities {
|
|
5
|
+
/**
|
|
6
|
+
* A place to store files that can be deleted by the system when the device runs low on
|
|
7
|
+
* storage.
|
|
8
|
+
*/
|
|
9
|
+
static get cache(): Directory;
|
|
10
|
+
/** The directory where assets bundled with the application are stored. */
|
|
11
|
+
static get bundle(): Directory;
|
|
12
|
+
/** A place to store files that are safe from being deleted by the system. */
|
|
13
|
+
static get document(): Directory;
|
|
14
|
+
/** @platform ios */
|
|
15
|
+
static get appleSharedContainers(): Record<string, Directory>;
|
|
16
|
+
/** The total space on the device's internal storage, in bytes. */
|
|
17
|
+
static get totalDiskSpace(): number;
|
|
18
|
+
/** The available space on the device's internal storage, in bytes. */
|
|
19
|
+
static get availableDiskSpace(): number;
|
|
20
|
+
/** Returns an object that indicates if the specified path represents a directory. */
|
|
21
|
+
static info(...uris: string[]): IPathInfo;
|
|
22
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Directory } from './directory';
|
|
2
|
+
import { expoFileSystemNext } from './native-module';
|
|
3
|
+
import { PathUtilities } from './path-utilities';
|
|
4
|
+
export class Paths extends PathUtilities {
|
|
5
|
+
/**
|
|
6
|
+
* A place to store files that can be deleted by the system when the device runs low on
|
|
7
|
+
* storage.
|
|
8
|
+
*/
|
|
9
|
+
static get cache() {
|
|
10
|
+
return new Directory(expoFileSystemNext.cacheDirectory);
|
|
11
|
+
}
|
|
12
|
+
/** The directory where assets bundled with the application are stored. */
|
|
13
|
+
static get bundle() {
|
|
14
|
+
return new Directory(expoFileSystemNext.bundleDirectory);
|
|
15
|
+
}
|
|
16
|
+
/** A place to store files that are safe from being deleted by the system. */
|
|
17
|
+
static get document() {
|
|
18
|
+
return new Directory(expoFileSystemNext.documentDirectory);
|
|
19
|
+
}
|
|
20
|
+
/** @platform ios */
|
|
21
|
+
static get appleSharedContainers() {
|
|
22
|
+
const containers = expoFileSystemNext.appleSharedContainers ?? {};
|
|
23
|
+
const result = {};
|
|
24
|
+
for (const appGroupId in containers) {
|
|
25
|
+
if (containers[appGroupId]) {
|
|
26
|
+
result[appGroupId] = new Directory(containers[appGroupId]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
/** The total space on the device's internal storage, in bytes. */
|
|
32
|
+
static get totalDiskSpace() {
|
|
33
|
+
return expoFileSystemNext.totalDiskSpace;
|
|
34
|
+
}
|
|
35
|
+
/** The available space on the device's internal storage, in bytes. */
|
|
36
|
+
static get availableDiskSpace() {
|
|
37
|
+
return expoFileSystemNext.availableDiskSpace;
|
|
38
|
+
}
|
|
39
|
+
/** Returns an object that indicates if the specified path represents a directory. */
|
|
40
|
+
static info(...uris) {
|
|
41
|
+
return expoFileSystemNext.info(uris.join('/'));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/next/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,OAAO,KAAM,SAAQ,aAAa;IACtC;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,IAAI,SAAS,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,0EAA0E;IAC1E,MAAM,KAAK,MAAM;QACf,OAAO,IAAI,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,6EAA6E;IAC7E,MAAM,KAAK,QAAQ;QACjB,OAAO,IAAI,SAAS,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC7D,CAAC;IAED,oBAAoB;IACpB,MAAM,KAAK,qBAAqB;QAC9B,MAAM,UAAU,GACd,kBAAkB,CAAC,qBAAqB,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAA8B,EAAE,CAAC;QAC7C,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;YACpC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kEAAkE;IAClE,MAAM,KAAK,cAAc;QACvB,OAAO,kBAAkB,CAAC,cAAc,CAAC;IAC3C,CAAC;IAED,sEAAsE;IACtE,MAAM,KAAK,kBAAkB;QAC3B,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;IAC/C,CAAC;IAED,qFAAqF;IACrF,MAAM,CAAC,IAAI,CAAC,GAAG,IAAc;QAC3B,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IFileSystemHandle } from './types';
|
|
2
|
+
type IReadableByteStreamController = {
|
|
3
|
+
readonly byobRequest: {
|
|
4
|
+
view: ArrayBufferView | null;
|
|
5
|
+
respond(bytesWritten: number): void;
|
|
6
|
+
} | null;
|
|
7
|
+
close(): void;
|
|
8
|
+
enqueue(chunk: Uint8Array): void;
|
|
9
|
+
};
|
|
10
|
+
export declare class FileSystemReadableStreamSource {
|
|
11
|
+
handle: IFileSystemHandle;
|
|
12
|
+
size: number;
|
|
13
|
+
type: "bytes";
|
|
14
|
+
constructor(handle: IFileSystemHandle);
|
|
15
|
+
cancel(): void;
|
|
16
|
+
pull(controller: IReadableByteStreamController): void;
|
|
17
|
+
}
|
|
18
|
+
export declare class FileSystemWritableSink {
|
|
19
|
+
handle: IFileSystemHandle;
|
|
20
|
+
constructor(handle: IFileSystemHandle);
|
|
21
|
+
abort(): void;
|
|
22
|
+
close(): void;
|
|
23
|
+
write(chunk: Uint8Array): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|