@effect-vfs/core 0.6.0 → 0.7.1

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 (39) hide show
  1. package/README.md +14 -9
  2. package/dist/BytePath.d.ts +2 -1
  3. package/dist/BytePath.d.ts.map +1 -1
  4. package/dist/LiveVolume.d.ts +6 -3
  5. package/dist/LiveVolume.d.ts.map +1 -1
  6. package/dist/LiveVolume.js +2 -0
  7. package/dist/Snapshot.d.ts +2 -1
  8. package/dist/Snapshot.d.ts.map +1 -1
  9. package/dist/Snapshot.js +2 -1
  10. package/dist/Testing.d.ts +9 -5
  11. package/dist/Testing.d.ts.map +1 -1
  12. package/dist/Testing.js +7 -18
  13. package/dist/VfsError.d.ts +2 -1
  14. package/dist/VfsError.d.ts.map +1 -1
  15. package/dist/VfsError.js +2 -1
  16. package/dist/VirtualFileSystem.d.ts +89 -47
  17. package/dist/VirtualFileSystem.d.ts.map +1 -1
  18. package/dist/VirtualFileSystem.js +62 -29
  19. package/dist/internal/canonicalBase64.js +3 -3
  20. package/dist/internal/fixture.d.ts +1 -1
  21. package/dist/internal/fixture.d.ts.map +1 -1
  22. package/dist/internal/overlayDiff.d.ts.map +1 -1
  23. package/dist/internal/overlayDiff.js +6 -14
  24. package/dist/internal/path.d.ts.map +1 -1
  25. package/dist/internal/path.js +3 -3
  26. package/dist/internal/snapshotDelta.d.ts.map +1 -1
  27. package/dist/internal/snapshotDelta.js +9 -15
  28. package/dist/internal/tree.d.ts.map +1 -1
  29. package/dist/internal/tree.js +14 -14
  30. package/dist/internal/virtualFileSystem.d.ts +13 -7
  31. package/dist/internal/virtualFileSystem.d.ts.map +1 -1
  32. package/dist/internal/virtualFileSystem.js +442 -399
  33. package/dist/internal/volumeState.d.ts +3 -2
  34. package/dist/internal/volumeState.d.ts.map +1 -1
  35. package/dist/internal/volumeState.js +28 -30
  36. package/package.json +7 -7
  37. package/dist/internal/stagedState.d.ts +0 -18
  38. package/dist/internal/stagedState.d.ts.map +0 -1
  39. package/dist/internal/stagedState.js +0 -18
@@ -1,5 +1,6 @@
1
1
  import * as Brand from "effect/Brand";
2
2
  import * as Effect from "effect/Effect";
3
+ import * as Order from "effect/Order";
3
4
  import type { Metadata } from "../Metadata.js";
4
5
  import * as InodeTable from "./inodeTable.js";
5
6
  import type { StoredMetadata } from "./metadata.js";
@@ -64,9 +65,9 @@ export interface VolumeState {
64
65
  /** @internal */
65
66
  export declare const getNode: (state: VolumeState, ino: Ino) => Node | undefined;
66
67
  /** @internal */
67
- export declare const byIno: (a: Node, b: Node) => number;
68
+ export declare const byIno: Order.Order<Node>;
68
69
  /** @internal */
69
- export declare const byEntryName: ([a]: readonly [string, Ino], [b]: readonly [string, Ino]) => -1 | 0 | 1;
70
+ export declare const byEntryName: Order.Order<readonly [string, Ino]>;
70
71
  /** @internal */
71
72
  export declare const payloadOf: (node: Node) => Uint8Array | undefined;
72
73
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"volumeState.d.ts","sourceRoot":"","sources":["../../src/internal/volumeState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"volumeState.d.ts","sourceRoot":"","sources":["../../src/internal/volumeState.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import * as Brand from "effect/Brand";
2
2
  import * as Effect from "effect/Effect";
3
+ import * as Match from "effect/Match";
4
+ import * as Order from "effect/Order";
3
5
  import * as InodeTable from "./inodeTable.js";
4
6
  /** @internal */
5
7
  export const Ino = Brand.nominal();
@@ -19,9 +21,9 @@ export const WALK_YIELD_INTERVAL = 128;
19
21
  /** @internal */
20
22
  export const getNode = (state, ino) => InodeTable.get(state.inodes, ino);
21
23
  /** @internal */
22
- export const byIno = (a, b) => a.ino - b.ino;
24
+ export const byIno = Order.mapInput(Order.Number, (node) => node.ino);
23
25
  /** @internal */
24
- export const byEntryName = ([a], [b]) => (a < b ? -1 : a > b ? 1 : 0);
26
+ export const byEntryName = Order.mapInput(Order.String, ([name]) => name);
25
27
  const inNameOrder = (entries) => {
26
28
  let previous;
27
29
  for (const name of entries.keys()) {
@@ -170,34 +172,30 @@ export const assemble = (specs) => {
170
172
  const owner = Symbol();
171
173
  let inodes = InodeTable.empty();
172
174
  for (const spec of specs) {
173
- const base = { ...spec.metadata, kind: spec.kind, ino: BigInt(spec.ino) };
174
- const node = spec.kind === "directory"
175
- ? {
176
- kind: "directory",
177
- ino: spec.ino,
178
- parent: spec.parent,
179
- name: spec.name,
180
- entries: new Map((edges.get(spec.ino) ?? []).sort(byEntryName)),
181
- metadata: { ...base, nlink: 2 + (subdirectories.get(spec.ino) ?? 0), size: 0n },
182
- revision: spec.revision
183
- }
184
- : spec.kind === "file"
185
- ? {
186
- kind: "file",
187
- ino: spec.ino,
188
- data: spec.data,
189
- links: spec.links,
190
- metadata: { ...base, nlink: spec.links.length, size: BigInt(spec.data.length) },
191
- revision: spec.revision
192
- }
193
- : {
194
- kind: "symlink",
195
- ino: spec.ino,
196
- target: spec.target,
197
- links: spec.links,
198
- metadata: { ...base, nlink: spec.links.length, size: BigInt(spec.target.length) },
199
- revision: spec.revision
200
- };
175
+ const base = { ...spec.metadata, ino: BigInt(spec.ino) };
176
+ const node = Match.value(spec).pipe(Match.discriminator("kind")("directory", (directory) => ({
177
+ kind: "directory",
178
+ ino: directory.ino,
179
+ parent: directory.parent,
180
+ name: directory.name,
181
+ entries: new Map((edges.get(directory.ino) ?? []).sort(byEntryName)),
182
+ metadata: { ...base, kind: "directory", nlink: 2 + (subdirectories.get(directory.ino) ?? 0), size: 0n },
183
+ revision: directory.revision
184
+ })), Match.discriminator("kind")("file", (file) => ({
185
+ kind: "file",
186
+ ino: file.ino,
187
+ data: file.data,
188
+ links: file.links,
189
+ metadata: { ...base, kind: "file", nlink: file.links.length, size: BigInt(file.data.length) },
190
+ revision: file.revision
191
+ })), Match.discriminator("kind")("symlink", (symlink) => ({
192
+ kind: "symlink",
193
+ ino: symlink.ino,
194
+ target: symlink.target,
195
+ links: symlink.links,
196
+ metadata: { ...base, kind: "symlink", nlink: symlink.links.length, size: BigInt(symlink.target.length) },
197
+ revision: symlink.revision
198
+ })), Match.exhaustive);
201
199
  inodes = InodeTable.set(inodes, spec.ino, node, owner);
202
200
  }
203
201
  return { inodes, open: new Map(), nextInode, revision, entries, usedBytes };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-vfs/core",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "A runtime-neutral virtual filesystem core for Effect.",
5
5
  "homepage": "https://github.com/lloydrichards/effect-virtual-fs#readme",
6
6
  "bugs": {
@@ -21,18 +21,18 @@
21
21
  "scripts": {
22
22
  "build": "tsc --project tsconfig.build.json && tsc --project compatibility/node-next/tsconfig.json",
23
23
  "clean": "git clean -xdf .cache .turbo dist docs node_modules tsconfig.tsbuildinfo",
24
- "test": "vitest run",
24
+ "test": "bun --bun run vitest run --config ../../vitest.config.ts --project core",
25
25
  "type-check": "tsc --noEmit && tsc --project contracts/tsconfig.json"
26
26
  },
27
27
  "peerDependencies": {
28
- "effect": "4.0.0-rc.115"
28
+ "effect": "^4.0.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@effect/platform-bun": "4.0.0-rc.115",
32
- "@effect/platform-node-shared": "4.0.0-rc.115",
33
- "@effect/vitest": "4.0.0-rc.115",
31
+ "@effect/platform-bun": "4.0.0",
32
+ "@effect/platform-node-shared": "4.0.0",
33
+ "@effect/vitest": "4.0.0",
34
34
  "@repo/config-typescript": "workspace:*",
35
- "effect": "4.0.0-rc.115"
35
+ "effect": "4.0.0"
36
36
  },
37
37
  "exports": {
38
38
  ".": {
@@ -1,18 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type { FsFailure } from "../VfsError.js";
3
- type CommitOutcome = "committed" | "rejected" | "unknown";
4
- /** @internal */
5
- export interface CommitProvider<State> {
6
- /** Preparation failures leave the volume available. */
7
- readonly prepare?: (candidate: State) => Effect.Effect<void, FsFailure>;
8
- readonly commit: (candidate: State) => Effect.Effect<CommitOutcome>;
9
- }
10
- /** @internal */
11
- export interface Classified {
12
- readonly available: boolean;
13
- readonly failure: FsFailure | undefined;
14
- }
15
- /** @internal */
16
- export declare const offerCommit: <State>(provider: CommitProvider<State>, operation: string, candidate: State, cleanup: boolean) => Effect.Effect<Classified>;
17
- export {};
18
- //# sourceMappingURL=stagedState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stagedState.d.ts","sourceRoot":"","sources":["../../src/internal/stagedState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG/C,KAAK,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAA;AAEzD,gBAAgB;AAChB,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACvE,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;CACpE;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAA;CACxC;AAGD,gBAAgB;AAChB,eAAO,MAAM,WAAW,GAAI,KAAK,YACrB,cAAc,CAAC,KAAK,CAAC,aACpB,MAAM,aACN,KAAK,WACP,OAAO,KACf,MAAM,CAAC,MAAM,CAAC,UAAU,CAgBvB,CAAA"}
@@ -1,18 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Exit from "effect/Exit";
3
- import { fsFailure } from "./errors.js";
4
- // An unknown commit outcome stops the volume; definite rejection stops it only during cleanup.
5
- /** @internal */
6
- export const offerCommit = (provider, operation, candidate, cleanup) => Effect.map(Effect.exit(Effect.suspend(() => provider.commit(candidate))), (committed) => {
7
- // TODO(#186): Preserve the cause of a provider defect or interruption.
8
- if (Exit.isFailure(committed)) {
9
- return { available: false, failure: fsFailure("OutcomeUnknown", operation) };
10
- }
11
- if (committed.value === "rejected") {
12
- return { available: !cleanup, failure: fsFailure("StorageRejected", operation) };
13
- }
14
- if (committed.value === "unknown") {
15
- return { available: false, failure: fsFailure("OutcomeUnknown", operation) };
16
- }
17
- return { available: true, failure: undefined };
18
- });