@zenfs/core 2.0.0 → 2.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/dist/backends/backend.js +6 -5
- package/dist/backends/cow.d.ts +2 -2
- package/dist/backends/cow.js +39 -58
- package/dist/backends/fetch.js +27 -29
- package/dist/backends/passthrough.d.ts +2 -3
- package/dist/backends/passthrough.js +84 -199
- package/dist/backends/port.d.ts +16 -3
- package/dist/backends/port.js +61 -30
- package/dist/backends/single_buffer.d.ts +52 -46
- package/dist/backends/single_buffer.js +462 -219
- package/dist/backends/store/fs.d.ts +16 -10
- package/dist/backends/store/fs.js +227 -242
- package/dist/backends/store/store.d.ts +3 -3
- package/dist/backends/store/store.js +11 -10
- package/dist/config.d.ts +2 -2
- package/dist/config.js +10 -11
- package/dist/internal/devices.d.ts +2 -2
- package/dist/internal/devices.js +39 -49
- package/dist/internal/error.d.ts +9 -204
- package/dist/internal/error.js +19 -288
- package/dist/internal/file_index.d.ts +1 -1
- package/dist/internal/file_index.js +9 -9
- package/dist/internal/filesystem.d.ts +23 -8
- package/dist/internal/index.d.ts +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index_fs.d.ts +2 -2
- package/dist/internal/index_fs.js +19 -19
- package/dist/internal/inode.d.ts +81 -103
- package/dist/internal/inode.js +336 -195
- package/dist/mixins/async.js +32 -28
- package/dist/mixins/mutexed.d.ts +4 -4
- package/dist/mixins/mutexed.js +39 -39
- package/dist/mixins/readonly.d.ts +2 -2
- package/dist/mixins/readonly.js +20 -20
- package/dist/mixins/sync.js +2 -2
- package/dist/polyfills.js +1 -1
- package/dist/readline.js +1 -1
- package/dist/utils.d.ts +8 -5
- package/dist/utils.js +14 -17
- package/dist/vfs/acl.d.ts +8 -8
- package/dist/vfs/acl.js +66 -47
- package/dist/vfs/async.d.ts +2 -2
- package/dist/vfs/async.js +6 -8
- package/dist/vfs/dir.d.ts +1 -1
- package/dist/vfs/dir.js +3 -4
- package/dist/vfs/file.js +33 -24
- package/dist/vfs/flags.js +3 -3
- package/dist/vfs/ioctl.d.ts +8 -7
- package/dist/vfs/ioctl.js +132 -27
- package/dist/vfs/promises.d.ts +3 -3
- package/dist/vfs/promises.js +200 -235
- package/dist/vfs/shared.d.ts +1 -12
- package/dist/vfs/shared.js +7 -35
- package/dist/vfs/streams.js +9 -9
- package/dist/vfs/sync.d.ts +1 -2
- package/dist/vfs/sync.js +158 -170
- package/dist/vfs/watchers.js +8 -8
- package/dist/vfs/xattr.js +89 -106
- package/package.json +4 -2
- package/scripts/test.js +2 -2
- package/tests/assignment.ts +1 -1
- package/tests/backend/port.test.ts +4 -4
- package/tests/backend/single-buffer.test.ts +39 -10
- package/tests/backend/single-buffer.worker.js +30 -0
- package/tests/common/context.test.ts +2 -2
- package/tests/common/mutex.test.ts +9 -9
- package/tests/fetch/fetch.ts +1 -1
- package/tests/fs/append.test.ts +4 -4
- package/tests/fs/directory.test.ts +25 -25
- package/tests/fs/errors.test.ts +15 -19
- package/tests/fs/links.test.ts +3 -2
- package/tests/fs/open.test.ts +4 -21
- package/tests/fs/permissions.test.ts +8 -13
- package/tests/fs/read.test.ts +10 -9
- package/tests/fs/readFile.test.ts +8 -24
- package/tests/fs/rename.test.ts +4 -9
- package/tests/fs/stat.test.ts +2 -2
- package/tests/fs/times.test.ts +6 -6
- package/tests/fs/truncate.test.ts +8 -36
- package/tests/fs/watch.test.ts +10 -10
- package/tests/fs/write.test.ts +77 -13
- package/tests/fs/xattr.test.ts +7 -7
- package/tests/logs.js +2 -2
- package/tests/setup/port.ts +6 -0
- package/dist/internal/log.d.ts +0 -139
- package/dist/internal/log.js +0 -219
- package/tests/fs/writeFile.test.ts +0 -70
|
@@ -1,82 +1,94 @@
|
|
|
1
|
+
import { type StructArray } from 'memium';
|
|
2
|
+
import type { UUID } from 'node:crypto';
|
|
3
|
+
import { BufferView } from 'utilium/buffer.js';
|
|
1
4
|
import type { UsageInfo } from '../internal/filesystem.js';
|
|
2
5
|
import { StoreFS } from './store/fs.js';
|
|
3
6
|
import { SyncMapTransaction, type SyncMapStore } from './store/map.js';
|
|
4
7
|
import type { Store } from './store/store.js';
|
|
5
|
-
|
|
6
|
-
declare class MetadataEntry {
|
|
8
|
+
type Lock = Disposable & (() => void);
|
|
9
|
+
declare class MetadataEntry extends BufferView {
|
|
7
10
|
/** Inode or data ID */
|
|
8
|
-
id: number;
|
|
11
|
+
accessor id: number;
|
|
9
12
|
/** Reserved for 64-bit offset expansion */
|
|
10
|
-
protected offset_: number;
|
|
13
|
+
protected accessor offset_: number;
|
|
11
14
|
/** Offset into the buffer the data is stored at. */
|
|
12
|
-
offset: number;
|
|
15
|
+
accessor offset: number;
|
|
13
16
|
/** The size of the data */
|
|
14
|
-
size: number;
|
|
17
|
+
accessor size: number;
|
|
18
|
+
toString(): string;
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
21
|
* A block of metadata for a single-buffer file system.
|
|
18
22
|
* This metadata maps IDs (for inodes and data) to actual offsets in the buffer.
|
|
19
23
|
* This is done since IDs are not guaranteed to be sequential.
|
|
20
24
|
*/
|
|
21
|
-
declare class MetadataBlock {
|
|
22
|
-
|
|
23
|
-
offset: number;
|
|
24
|
-
constructor(superblock?: SuperBlock, offset?: number);
|
|
25
|
+
export declare class MetadataBlock extends Int32Array<ArrayBufferLike> {
|
|
26
|
+
readonly ['constructor']: typeof MetadataBlock;
|
|
25
27
|
/**
|
|
26
28
|
* The crc32c checksum for the metadata block.
|
|
27
29
|
* @privateRemarks Keep this first!
|
|
28
30
|
*/
|
|
29
|
-
checksum: number;
|
|
31
|
+
accessor checksum: number;
|
|
30
32
|
/** The (last) time this metadata block was updated */
|
|
31
|
-
timestamp:
|
|
32
|
-
/** Reserved for 64-bit offset expansion */
|
|
33
|
-
protected previous_offset_: number;
|
|
33
|
+
accessor timestamp: bigint;
|
|
34
34
|
/** Offset to the previous metadata block */
|
|
35
|
-
previous_offset: number;
|
|
35
|
+
accessor previous_offset: number;
|
|
36
36
|
protected _previous?: MetadataBlock;
|
|
37
37
|
get previous(): MetadataBlock | undefined;
|
|
38
|
+
protected get offsetHex(): string;
|
|
38
39
|
/** Metadata entries. */
|
|
39
|
-
|
|
40
|
+
accessor items: StructArray<MetadataEntry>;
|
|
41
|
+
toString(long?: boolean): string;
|
|
42
|
+
/**
|
|
43
|
+
* If non-zero, this block is locked for writing.
|
|
44
|
+
* Note a int32 is used for `Atomics.wait`
|
|
45
|
+
*/
|
|
46
|
+
accessor locked: number;
|
|
47
|
+
/**
|
|
48
|
+
* Wait for the block to be unlocked.
|
|
49
|
+
*/
|
|
50
|
+
waitUnlocked(depth?: number): void;
|
|
51
|
+
lock(): Lock;
|
|
40
52
|
}
|
|
41
53
|
/**
|
|
42
54
|
* The super block structure for a single-buffer file system
|
|
43
55
|
*/
|
|
44
|
-
declare class SuperBlock {
|
|
45
|
-
readonly
|
|
46
|
-
constructor(
|
|
56
|
+
export declare class SuperBlock extends BufferView {
|
|
57
|
+
readonly ['constructor']: typeof SuperBlock;
|
|
58
|
+
constructor(...args: ConstructorParameters<typeof BufferView>);
|
|
47
59
|
/**
|
|
48
60
|
* The crc32c checksum for the super block.
|
|
49
61
|
* @privateRemarks Keep this first!
|
|
50
62
|
*/
|
|
51
|
-
checksum: number;
|
|
63
|
+
accessor checksum: number;
|
|
52
64
|
/** Signature for the superblock. */
|
|
53
|
-
magic: number;
|
|
65
|
+
accessor magic: number;
|
|
54
66
|
/** The version of the on-disk format */
|
|
55
|
-
version: number;
|
|
67
|
+
accessor version: number;
|
|
56
68
|
/** Which format of `Inode` is used */
|
|
57
|
-
inode_format: number;
|
|
69
|
+
accessor inode_format: number;
|
|
58
70
|
/** Flags for the file system. Currently unused */
|
|
59
|
-
flags: number;
|
|
71
|
+
accessor flags: number;
|
|
60
72
|
/** The number of used bytes, including the super block and metadata */
|
|
61
|
-
used_bytes: bigint;
|
|
73
|
+
accessor used_bytes: bigint;
|
|
62
74
|
/** The total size of the entire file system, including the super block and metadata */
|
|
63
|
-
total_bytes: bigint;
|
|
75
|
+
accessor total_bytes: bigint;
|
|
64
76
|
/** A UUID for this file system */
|
|
65
|
-
uuid:
|
|
77
|
+
accessor uuid: Uint8Array;
|
|
66
78
|
/**
|
|
67
79
|
* The size in bytes of a metadata block.
|
|
68
80
|
* Not currently configurable.
|
|
69
81
|
*/
|
|
70
|
-
metadata_block_size: number;
|
|
82
|
+
accessor metadata_block_size: number;
|
|
71
83
|
/** Reserved for 64-bit offset expansion */
|
|
72
|
-
protected metadata_offset_: number;
|
|
84
|
+
protected accessor metadata_offset_: number;
|
|
73
85
|
/** Offset of the current metadata block */
|
|
74
|
-
metadata_offset: number;
|
|
86
|
+
accessor metadata_offset: number;
|
|
75
87
|
metadata: MetadataBlock;
|
|
76
88
|
/** An optional label for the file system */
|
|
77
|
-
label:
|
|
89
|
+
accessor label: Uint8Array;
|
|
78
90
|
/** Padded to 256 bytes */
|
|
79
|
-
_padding:
|
|
91
|
+
accessor _padding: Uint8Array;
|
|
80
92
|
/**
|
|
81
93
|
* Rotate out the current metadata block.
|
|
82
94
|
* Allocates a new metadata block, moves the current one to backup,
|
|
@@ -94,7 +106,7 @@ declare class SuperBlock {
|
|
|
94
106
|
*
|
|
95
107
|
* @category Stores and Transactions
|
|
96
108
|
*/
|
|
97
|
-
export declare class SingleBufferStore implements SyncMapStore {
|
|
109
|
+
export declare class SingleBufferStore extends BufferView implements SyncMapStore {
|
|
98
110
|
readonly flags: readonly [];
|
|
99
111
|
readonly name = "sbfs";
|
|
100
112
|
readonly type = 1935828595;
|
|
@@ -103,22 +115,16 @@ export declare class SingleBufferStore implements SyncMapStore {
|
|
|
103
115
|
/**
|
|
104
116
|
* @internal @hidden
|
|
105
117
|
*/
|
|
106
|
-
readonly _view: DataView;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
*/
|
|
110
|
-
readonly _buffer: Uint8Array;
|
|
111
|
-
constructor(buffer: ArrayBufferLike | ArrayBufferView);
|
|
112
|
-
/**
|
|
113
|
-
* Update a block's checksum and write it to the store's buffer.
|
|
114
|
-
* @internal @hidden
|
|
115
|
-
*/
|
|
116
|
-
_write(value: SuperBlock | MetadataBlock): void;
|
|
118
|
+
protected readonly _view: DataView;
|
|
119
|
+
protected readonly _u8: Uint8Array;
|
|
120
|
+
constructor(...args: ConstructorParameters<typeof BufferView>);
|
|
117
121
|
keys(): Iterable<number>;
|
|
118
122
|
get(id: number): Uint8Array | undefined;
|
|
119
123
|
set(id: number, data: Uint8Array): void;
|
|
120
124
|
delete(id: number): void;
|
|
121
|
-
_fs?: StoreFS<Store> | undefined;
|
|
125
|
+
protected _fs?: StoreFS<Store> | undefined;
|
|
126
|
+
get fs(): StoreFS<Store> | undefined;
|
|
127
|
+
set fs(fs: StoreFS<Store> | undefined);
|
|
122
128
|
sync(): Promise<void>;
|
|
123
129
|
usage(): UsageInfo;
|
|
124
130
|
transaction(): SyncMapTransaction;
|
|
@@ -138,7 +144,7 @@ declare const _SingleBuffer: {
|
|
|
138
144
|
readonly required: true;
|
|
139
145
|
};
|
|
140
146
|
};
|
|
141
|
-
readonly create: (
|
|
147
|
+
readonly create: (opt: SingleBufferOptions) => StoreFS<SingleBufferStore>;
|
|
142
148
|
};
|
|
143
149
|
type _SingleBuffer = typeof _SingleBuffer;
|
|
144
150
|
/**
|