@zenfs/core 1.4.1 → 1.4.3
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/dist/backends/overlay.js +9 -4
- package/dist/backends/store/fs.js +9 -4
- package/dist/devices.js +9 -4
- package/dist/emulation/promises.js +11 -6
- package/dist/emulation/shared.js +11 -1
- package/dist/emulation/sync.js +9 -4
- package/dist/file.d.ts +0 -22
- package/dist/file.js +6 -2
- package/dist/mixins/async.js +9 -4
- package/dist/mixins/mutexed.js +9 -4
- package/package.json +6 -6
- package/scripts/test.js +2 -2
package/dist/backends/overlay.js
CHANGED
|
@@ -26,17 +26,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
26
26
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
27
|
env.hasError = true;
|
|
28
28
|
}
|
|
29
|
+
var r, s = 0;
|
|
29
30
|
function next() {
|
|
30
|
-
while (env.stack.
|
|
31
|
-
var rec = env.stack.pop();
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
if (
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
37
41
|
fail(e);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
40
45
|
if (env.hasError) throw env.error;
|
|
41
46
|
}
|
|
42
47
|
return next();
|
|
@@ -26,17 +26,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
26
26
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
27
|
env.hasError = true;
|
|
28
28
|
}
|
|
29
|
+
var r, s = 0;
|
|
29
30
|
function next() {
|
|
30
|
-
while (env.stack.
|
|
31
|
-
var rec = env.stack.pop();
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
if (
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
37
41
|
fail(e);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
40
45
|
if (env.hasError) throw env.error;
|
|
41
46
|
}
|
|
42
47
|
return next();
|
package/dist/devices.js
CHANGED
|
@@ -29,17 +29,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
29
29
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
30
30
|
env.hasError = true;
|
|
31
31
|
}
|
|
32
|
+
var r, s = 0;
|
|
32
33
|
function next() {
|
|
33
|
-
while (env.stack.
|
|
34
|
-
var rec = env.stack.pop();
|
|
34
|
+
while (r = env.stack.pop()) {
|
|
35
35
|
try {
|
|
36
|
-
|
|
37
|
-
if (
|
|
36
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
37
|
+
if (r.dispose) {
|
|
38
|
+
var result = r.dispose.call(r.value);
|
|
39
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
40
|
+
}
|
|
41
|
+
else s |= 1;
|
|
38
42
|
}
|
|
39
43
|
catch (e) {
|
|
40
44
|
fail(e);
|
|
41
45
|
}
|
|
42
46
|
}
|
|
47
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
43
48
|
if (env.hasError) throw env.error;
|
|
44
49
|
}
|
|
45
50
|
return next();
|
|
@@ -26,17 +26,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
26
26
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
27
|
env.hasError = true;
|
|
28
28
|
}
|
|
29
|
+
var r, s = 0;
|
|
29
30
|
function next() {
|
|
30
|
-
while (env.stack.
|
|
31
|
-
var rec = env.stack.pop();
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
if (
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
37
41
|
fail(e);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
40
45
|
if (env.hasError) throw env.error;
|
|
41
46
|
}
|
|
42
47
|
return next();
|
|
@@ -531,9 +536,9 @@ export async function writeFile(path, data, _options) {
|
|
|
531
536
|
try {
|
|
532
537
|
const options = normalizeOptions(_options, 'utf8', 'w+', 0o644);
|
|
533
538
|
const handle = __addDisposableResource(env_3, path instanceof FileHandle ? path : await open.call(this, path.toString(), options.flag, options.mode), true);
|
|
534
|
-
const _data = typeof data == 'string' ? data : data;
|
|
539
|
+
const _data = typeof data == 'string' ? data : data instanceof DataView ? new Uint8Array(data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength)) : data;
|
|
535
540
|
if (typeof _data != 'string' && !(_data instanceof Uint8Array)) {
|
|
536
|
-
throw new ErrnoError(Errno.EINVAL, '
|
|
541
|
+
throw new ErrnoError(Errno.EINVAL, 'The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received ' + typeof data, handle.file.path, 'writeFile');
|
|
537
542
|
}
|
|
538
543
|
await handle.writeFile(_data, options);
|
|
539
544
|
}
|
package/dist/emulation/shared.js
CHANGED
|
@@ -75,7 +75,7 @@ export function resolveMount(path, ctx) {
|
|
|
75
75
|
const sortedMounts = [...mounts].sort((a, b) => (a[0].length > b[0].length ? -1 : 1)); // descending order of the string length
|
|
76
76
|
for (const [mountPoint, fs] of sortedMounts) {
|
|
77
77
|
// We know path is normalized, so it would be a substring of the mount point.
|
|
78
|
-
if (mountPoint
|
|
78
|
+
if (_isParentOf(mountPoint, path)) {
|
|
79
79
|
path = path.slice(mountPoint.length > 1 ? mountPoint.length : 0); // Resolve the path relative to the mount point
|
|
80
80
|
if (path === '') {
|
|
81
81
|
path = root;
|
|
@@ -160,3 +160,13 @@ export function chroot(path, inPlace) {
|
|
|
160
160
|
}
|
|
161
161
|
return bindContext(join(this?.root || '/', path), creds);
|
|
162
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* @internal @hidden
|
|
165
|
+
*/
|
|
166
|
+
function _isParentOf(parent, child) {
|
|
167
|
+
if (parent === '/' || parent === child)
|
|
168
|
+
return true;
|
|
169
|
+
if (!parent.endsWith('/'))
|
|
170
|
+
parent += '/';
|
|
171
|
+
return child.startsWith(parent);
|
|
172
|
+
}
|
package/dist/emulation/sync.js
CHANGED
|
@@ -26,17 +26,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
26
26
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
27
|
env.hasError = true;
|
|
28
28
|
}
|
|
29
|
+
var r, s = 0;
|
|
29
30
|
function next() {
|
|
30
|
-
while (env.stack.
|
|
31
|
-
var rec = env.stack.pop();
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
if (
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
37
41
|
fail(e);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
40
45
|
if (env.hasError) throw env.error;
|
|
41
46
|
}
|
|
42
47
|
return next();
|
package/dist/file.d.ts
CHANGED
|
@@ -2,28 +2,6 @@ import type { FileReadResult } from 'node:fs/promises';
|
|
|
2
2
|
import type { FileSystem } from './filesystem.js';
|
|
3
3
|
import './polyfills.js';
|
|
4
4
|
import { Stats } from './stats.js';
|
|
5
|
-
/**
|
|
6
|
-
Typescript does not include a type declaration for resizable array buffers.
|
|
7
|
-
It has been standardized into ECMAScript though
|
|
8
|
-
@todo Remove this if TS adds them to lib declarations
|
|
9
|
-
*/
|
|
10
|
-
declare global {
|
|
11
|
-
interface ArrayBuffer {
|
|
12
|
-
readonly resizable: boolean;
|
|
13
|
-
readonly maxByteLength?: number;
|
|
14
|
-
resize(newLength: number): void;
|
|
15
|
-
}
|
|
16
|
-
interface SharedArrayBuffer {
|
|
17
|
-
readonly resizable: boolean;
|
|
18
|
-
readonly maxByteLength?: number;
|
|
19
|
-
resize(newLength: number): void;
|
|
20
|
-
}
|
|
21
|
-
interface ArrayBufferConstructor {
|
|
22
|
-
new (byteLength: number, options: {
|
|
23
|
-
maxByteLength?: number;
|
|
24
|
-
}): ArrayBuffer;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
5
|
export declare function parseFlag(flag: string | number): string;
|
|
28
6
|
export declare function flagToString(flag: number): string;
|
|
29
7
|
export declare function flagToNumber(flag: string): number;
|
package/dist/file.js
CHANGED
|
@@ -304,8 +304,12 @@ export class PreloadFile extends File {
|
|
|
304
304
|
if (end > this.stats.size) {
|
|
305
305
|
this.stats.size = end;
|
|
306
306
|
if (end > this._buffer.byteLength) {
|
|
307
|
-
|
|
308
|
-
|
|
307
|
+
const { buffer } = this._buffer;
|
|
308
|
+
if ('resizable' in buffer && buffer.resizable && buffer.maxByteLength <= end) {
|
|
309
|
+
buffer.resize(end);
|
|
310
|
+
}
|
|
311
|
+
else if ('growable' in buffer && buffer.growable && buffer.maxByteLength <= end) {
|
|
312
|
+
buffer.grow(end);
|
|
309
313
|
}
|
|
310
314
|
else if (config.unsafeBufferReplace) {
|
|
311
315
|
this._buffer = slice;
|
package/dist/mixins/async.js
CHANGED
|
@@ -26,17 +26,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
26
26
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
27
|
env.hasError = true;
|
|
28
28
|
}
|
|
29
|
+
var r, s = 0;
|
|
29
30
|
function next() {
|
|
30
|
-
while (env.stack.
|
|
31
|
-
var rec = env.stack.pop();
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
if (
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
37
41
|
fail(e);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
40
45
|
if (env.hasError) throw env.error;
|
|
41
46
|
}
|
|
42
47
|
return next();
|
package/dist/mixins/mutexed.js
CHANGED
|
@@ -26,17 +26,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
26
26
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
27
|
env.hasError = true;
|
|
28
28
|
}
|
|
29
|
+
var r, s = 0;
|
|
29
30
|
function next() {
|
|
30
|
-
while (env.stack.
|
|
31
|
-
var rec = env.stack.pop();
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
34
|
-
if (
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
35
39
|
}
|
|
36
40
|
catch (e) {
|
|
37
41
|
fail(e);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
40
45
|
if (env.hasError) throw env.error;
|
|
41
46
|
}
|
|
42
47
|
return next();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenfs/core",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "A filesystem, anywhere",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"buffer": "^6.0.3",
|
|
73
73
|
"eventemitter3": "^5.0.1",
|
|
74
74
|
"readable-stream": "^4.5.2",
|
|
75
|
-
"utilium": "^1.
|
|
75
|
+
"utilium": "^1.1.1"
|
|
76
76
|
},
|
|
77
77
|
"optionalDependencies": {
|
|
78
78
|
"minimatch": "^9.0.3"
|
|
@@ -81,14 +81,14 @@
|
|
|
81
81
|
"@eslint/js": "^9.8.0",
|
|
82
82
|
"@types/eslint__js": "^8.42.3",
|
|
83
83
|
"c8": "^10.1.2",
|
|
84
|
-
"eslint": "^9.
|
|
84
|
+
"eslint": "^9.15.0",
|
|
85
85
|
"globals": "^15.9.0",
|
|
86
86
|
"lint-staged": "^15.2.7",
|
|
87
87
|
"prettier": "^3.2.5",
|
|
88
88
|
"tsx": "^4.19.1",
|
|
89
|
-
"typedoc": "^0.
|
|
89
|
+
"typedoc": "^0.27.1",
|
|
90
90
|
"typedoc-plugin-remove-references": "^0.0.6",
|
|
91
|
-
"typescript": "^5.
|
|
92
|
-
"typescript-eslint": "^8.
|
|
91
|
+
"typescript": "^5.7.2",
|
|
92
|
+
"typescript-eslint": "^8.16.0"
|
|
93
93
|
}
|
|
94
94
|
}
|
package/scripts/test.js
CHANGED
|
@@ -63,7 +63,7 @@ if (options.auto) {
|
|
|
63
63
|
let sum = 0;
|
|
64
64
|
|
|
65
65
|
for (const pattern of ['**/tests/setup/*.ts', '**/tests/setup-*.ts']) {
|
|
66
|
-
const files = await globSync(pattern);
|
|
66
|
+
const files = await globSync(pattern).filter(f => !f.includes('node_modules'));
|
|
67
67
|
sum += files.length;
|
|
68
68
|
positionals.push(...files);
|
|
69
69
|
}
|
|
@@ -78,7 +78,7 @@ process.env.NODE_V8_COVERAGE = options.coverage;
|
|
|
78
78
|
if (options.common) {
|
|
79
79
|
!options.quiet && console.log('Running common tests...');
|
|
80
80
|
try {
|
|
81
|
-
execSync("tsx --test --experimental-test-coverage 'tests/**/!(fs)/*.test.ts'", {
|
|
81
|
+
execSync("tsx --test --experimental-test-coverage 'tests/*.test.ts' 'tests/**/!(fs)/*.test.ts'", {
|
|
82
82
|
stdio: ['ignore', options.verbose ? 'inherit' : 'ignore', 'inherit'],
|
|
83
83
|
});
|
|
84
84
|
} catch {
|