@zenfs/core 2.7.6 → 2.8.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 (70) hide show
  1. package/README.md +5 -0
  2. package/dist/backends/index.d.ts +3 -1
  3. package/dist/backends/index.js +3 -1
  4. package/dist/backends/single_buffer/backend.d.ts +42 -0
  5. package/dist/backends/single_buffer/backend.js +204 -0
  6. package/dist/backends/{single_buffer.d.ts → single_buffer/v1.d.ts} +24 -34
  7. package/dist/backends/{single_buffer.js → single_buffer/v1.js} +10 -26
  8. package/dist/backends/single_buffer/v2.d.ts +257 -0
  9. package/dist/backends/single_buffer/v2.js +1283 -0
  10. package/dist/backends/store/fs.d.ts +1 -1
  11. package/dist/backends/store/fs.js +35 -18
  12. package/dist/backends/store/map.d.ts +6 -6
  13. package/dist/backends/store/map.js +6 -6
  14. package/dist/backends/store/store.d.ts +18 -14
  15. package/dist/backends/store/store.js +12 -14
  16. package/dist/config.d.ts +7 -0
  17. package/dist/config.js +9 -3
  18. package/dist/internal/contexts.d.ts +5 -0
  19. package/dist/internal/contexts.js +7 -1
  20. package/dist/internal/error.d.ts +5 -0
  21. package/dist/internal/error.js +10 -0
  22. package/dist/internal/inode.d.ts +25 -0
  23. package/dist/internal/inode.js +75 -10
  24. package/dist/mixins/async.js +47 -30
  25. package/dist/node/promises.js +23 -124
  26. package/dist/node/stats.d.ts +1 -1
  27. package/dist/node/stats.js +4 -1
  28. package/dist/node/sync.js +20 -51
  29. package/dist/polyfills.js +16 -0
  30. package/dist/vfs/async.d.ts +4 -1
  31. package/dist/vfs/async.js +149 -69
  32. package/dist/vfs/config.d.ts +10 -1
  33. package/dist/vfs/config.js +5 -2
  34. package/dist/vfs/file.js +10 -4
  35. package/dist/vfs/ioctl.js +2 -2
  36. package/dist/vfs/shared.d.ts +2 -0
  37. package/dist/vfs/shared.js +3 -4
  38. package/dist/vfs/sync.d.ts +4 -1
  39. package/dist/vfs/sync.js +142 -64
  40. package/dist/vfs/vcache.d.ts +14 -14
  41. package/dist/vfs/vcache.js +65 -57
  42. package/dist/vfs/watchers.d.ts +1 -0
  43. package/dist/vfs/watchers.js +2 -4
  44. package/dist/vfs/xattr.js +18 -17
  45. package/package.json +3 -4
  46. package/scripts/make-index.js +1 -1
  47. package/tests/backend/single-buffer-rotate.worker.js +1 -1
  48. package/tests/backend/single-buffer-v2.test.ts +342 -0
  49. package/tests/backend/single-buffer-v2.worker.js +51 -0
  50. package/tests/backend/single-buffer.test.ts +6 -6
  51. package/tests/backend/single-buffer.worker.js +1 -0
  52. package/tests/common/async.test.ts +46 -0
  53. package/tests/common/config.test.ts +1 -1
  54. package/tests/common/context.test.ts +30 -0
  55. package/tests/common/file_index.test.ts +1 -1
  56. package/tests/common/mounts.test.ts +12 -0
  57. package/tests/common/vcache.test.ts +13 -0
  58. package/tests/fs/concurrency.test.ts +3 -3
  59. package/tests/fs/links.test.ts +76 -0
  60. package/tests/fs/permissions.test.ts +253 -0
  61. package/tests/fs/stat.test.ts +1 -1
  62. package/tests/fs/streams.test.ts +1 -1
  63. package/tests/fs/watch.test.ts +14 -0
  64. package/tests/fs/xattr.test.ts +10 -0
  65. package/tests/perf/config.json +31 -1
  66. package/tests/perf/single-buffer-random.ts +38 -0
  67. package/tests/perf/single-buffer-read.ts +28 -0
  68. package/tests/perf/single-buffer-write.ts +41 -0
  69. package/tests/setup/single-buffer-v2.ts +10 -0
  70. package/tests/setup/single-buffer.ts +1 -0
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-or-later
2
+ // 4 KB writes at random offsets in one file in a SingleBuffer.
3
+ // By default, only the writes are timed, and they stay in the vnode cache until the untimed close.
4
+ // With `flush`, the close is timed too, which writes the cached data to the store.
5
+ // With `osync`, the file is opened with O_SYNC, so every write reaches the store.
6
+ import { block, fs, mountWithFile, offsets, type Config as BaseConfig } from './single-buffer-random.ts';
7
+
8
+ interface Config extends BaseConfig {
9
+ flush: number;
10
+ sync: number;
11
+ }
12
+
13
+ interface State {
14
+ offsets: number[];
15
+ data: Uint8Array;
16
+ fd?: number;
17
+ }
18
+
19
+ export async function setup(config: Config): Promise<State> {
20
+ await mountWithFile(config);
21
+ return { offsets: offsets(config), data: new Uint8Array(block).fill(0xa5) };
22
+ }
23
+
24
+ export function before(config: Config, state: State): void {
25
+ state.fd = fs.openSync('/f', config.sync ? 'rs+' : 'r+');
26
+ }
27
+
28
+ export function test(config: Config, state: State) {
29
+ for (const offset of state.offsets) fs.writeSync(state.fd!, state.data, 0, block, offset);
30
+
31
+ if (config.flush) {
32
+ fs.closeSync(state.fd!);
33
+ state.fd = undefined;
34
+ }
35
+
36
+ return { writes: state.offsets.length, bytes: state.offsets.length * block };
37
+ }
38
+
39
+ export function after(config: Config, state: State): void {
40
+ if (state.fd !== undefined) fs.closeSync(state.fd);
41
+ }
@@ -0,0 +1,10 @@
1
+ import { SingleBuffer, configureSingle } from '@zenfs/core';
2
+ import { copySync, data } from '../setup.ts';
3
+
4
+ await configureSingle({
5
+ backend: SingleBuffer,
6
+ buffer: new ArrayBuffer(0x1100000),
7
+ v2: true,
8
+ });
9
+
10
+ copySync(data);
@@ -4,6 +4,7 @@ import { copySync, data } from '../setup.ts';
4
4
  await configureSingle({
5
5
  backend: SingleBuffer,
6
6
  buffer: new ArrayBuffer(0x1100000),
7
+ v2: false,
7
8
  });
8
9
 
9
10
  copySync(data);