@effect-vfs/core 0.3.1 → 0.4.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 (37) hide show
  1. package/README.md +36 -149
  2. package/dist/BytePath.d.ts +2 -1
  3. package/dist/BytePath.d.ts.map +1 -1
  4. package/dist/LiveVolume.d.ts +101 -0
  5. package/dist/LiveVolume.d.ts.map +1 -0
  6. package/dist/LiveVolume.js +72 -0
  7. package/dist/Snapshot.d.ts +4 -2
  8. package/dist/Snapshot.d.ts.map +1 -1
  9. package/dist/Snapshot.js +4 -2
  10. package/dist/VirtualFileSystem.d.ts +333 -108
  11. package/dist/VirtualFileSystem.d.ts.map +1 -1
  12. package/dist/VirtualFileSystem.js +119 -29
  13. package/dist/VirtualFileSystemError.d.ts +54 -0
  14. package/dist/VirtualFileSystemError.d.ts.map +1 -0
  15. package/dist/VirtualFileSystemError.js +49 -0
  16. package/dist/index.d.ts +14 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +14 -0
  19. package/dist/internal/liveImage.d.ts +286 -0
  20. package/dist/internal/liveImage.d.ts.map +1 -0
  21. package/dist/internal/liveImage.js +176 -0
  22. package/dist/internal/virtualFileSystem/errors.d.ts +4 -23
  23. package/dist/internal/virtualFileSystem/errors.d.ts.map +1 -1
  24. package/dist/internal/virtualFileSystem/errors.js +11 -15
  25. package/dist/internal/virtualFileSystem/fixture.d.ts +4 -1
  26. package/dist/internal/virtualFileSystem/fixture.d.ts.map +1 -1
  27. package/dist/internal/virtualFileSystem/fixture.js +8 -2
  28. package/dist/internal/virtualFileSystem/stagedState.d.ts +22 -0
  29. package/dist/internal/virtualFileSystem/stagedState.d.ts.map +1 -0
  30. package/dist/internal/virtualFileSystem/stagedState.js +62 -0
  31. package/dist/internal/virtualFileSystem/watchHub.d.ts +3 -3
  32. package/dist/internal/virtualFileSystem/watchHub.d.ts.map +1 -1
  33. package/dist/internal/virtualFileSystem/watchHub.js +42 -21
  34. package/dist/internal/virtualFileSystem.d.ts +223 -15
  35. package/dist/internal/virtualFileSystem.d.ts.map +1 -1
  36. package/dist/internal/virtualFileSystem.js +1288 -153
  37. package/package.json +9 -1
@@ -0,0 +1,62 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Exit from "effect/Exit";
3
+ import * as Semaphore from "effect/Semaphore";
4
+ import { FsError } from "./errors.js";
5
+ /** @internal */
6
+ export const makeStagedState = (initial,
7
+ // The copy must detach every mutable value that change can reach.
8
+ copy, rawProvider, publish) => {
9
+ const gate = Semaphore.makeUnsafe(1);
10
+ const provider = {
11
+ ...rawProvider,
12
+ commit: (candidate) => Effect.suspend(() => rawProvider.commit(candidate))
13
+ };
14
+ let current = initial;
15
+ let available = true;
16
+ const checkAvailable = (operation) => Effect.suspend(() => available
17
+ ? Effect.void
18
+ : Effect.fail(new FsError({ code: "VolumeUnavailable", operation })));
19
+ const coordinate = (effect) => gate.withPermit(effect);
20
+ const shutdown = coordinate(Effect.sync(() => {
21
+ available = false;
22
+ }));
23
+ const read = (operation, inspect) => coordinate(Effect.gen(function* () {
24
+ yield* checkAvailable(operation);
25
+ return yield* inspect(current);
26
+ }));
27
+ const mutate = (operation, change, onStorageFailure) => coordinate(Effect.uninterruptibleMask((restore) => Effect.gen(function* () {
28
+ yield* checkAvailable(operation);
29
+ const candidate = yield* restore(copy(current));
30
+ const events = [];
31
+ const value = yield* restore(change(candidate, (event) => events.push(event)));
32
+ if (provider.prepare !== undefined)
33
+ yield* restore(provider.prepare(candidate));
34
+ const committed = yield* Effect.exit(Effect.suspend(() => provider.commit(candidate)));
35
+ if (Exit.isFailure(committed)) {
36
+ available = false;
37
+ onStorageFailure?.();
38
+ return yield* new FsError({ code: "OutcomeUnknown", operation });
39
+ }
40
+ const outcome = committed.value;
41
+ if (outcome === "rejected") {
42
+ if (onStorageFailure !== undefined) {
43
+ available = false;
44
+ onStorageFailure();
45
+ }
46
+ return yield* new FsError({ code: "StorageRejected", operation });
47
+ }
48
+ if (outcome === "unknown") {
49
+ available = false;
50
+ onStorageFailure?.();
51
+ return yield* new FsError({ code: "OutcomeUnknown", operation });
52
+ }
53
+ current = candidate;
54
+ const published = yield* Effect.exit(Effect.sync(() => publish?.(candidate, events)));
55
+ if (Exit.isFailure(published)) {
56
+ available = false;
57
+ return yield* new FsError({ code: "OutcomeUnknown", operation });
58
+ }
59
+ return value;
60
+ })));
61
+ return { read, mutate, coordinate, checkAvailable, shutdown };
62
+ };
@@ -6,11 +6,11 @@ export interface Coordinator {
6
6
  <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R>;
7
7
  }
8
8
  /** @internal */
9
- export interface WatchHub<A> {
9
+ export interface WatchHub<A, E = never> {
10
10
  readonly publishUnsafe: (event: () => A) => void;
11
11
  readonly publishManyUnsafe: (events: () => Iterable<A>) => void;
12
- readonly subscribe: (afterSubscribe?: Effect.Effect<void>) => Effect.Effect<Stream.Stream<A>, never, Scope.Scope>;
12
+ readonly subscribe: (afterSubscribe?: Effect.Effect<void>) => Effect.Effect<Stream.Stream<A>, E, Scope.Scope>;
13
13
  }
14
14
  /** @internal */
15
- export declare const make: <A>(coordinate: Coordinator) => Effect.Effect<WatchHub<A>, never, never>;
15
+ export declare const make: <A, E = never>(coordinate: Coordinator, capacity: number, rescan: () => A, checkAvailable?: Effect.Effect<void, E, never> | undefined) => Effect.Effect<WatchHub<A, E>, never, never>;
16
16
  //# sourceMappingURL=watchHub.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watchHub.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/watchHub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,gBAAgB;AAChB,MAAM,WAAW,WAAW;IAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAClE;AAGD,gBAAgB;AAChB,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC/D,QAAQ,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CAClH;AAED,gBAAgB;AAChB,eAAO,MAAM,IAAI,GAA+B,CAAC,sEAmC/C,CAAA"}
1
+ {"version":3,"file":"watchHub.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/watchHub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,gBAAgB;AAChB,MAAM,WAAW,WAAW;IAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAClE;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;IACpC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC/D,QAAQ,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CAC9G;AAQD,gBAAgB;AAChB,eAAO,MAAM,IAAI,GAA+B,CAAC,EAAE,CAAC,mEAGpC,CAAC,4GAiEf,CAAA"}
@@ -1,33 +1,54 @@
1
- // Change broadcasting for Volume.watch: one PubSub per volume, published to only while someone listens.
2
1
  import * as Effect from "effect/Effect";
3
- import * as PubSub from "effect/PubSub";
2
+ import * as Queue from "effect/Queue";
4
3
  import * as Stream from "effect/Stream";
5
4
  /** @internal */
6
- export const make = Effect.fnUntraced(function* (coordinate) {
7
- const pubsub = yield* PubSub.unbounded();
8
- // Guarded by `coordinate`: publishers run inside coordinated mutations and both writes below hold the gate.
9
- let activeSubscribers = 0;
5
+ export const make = Effect.fnUntraced(function* (coordinate, capacity, rescan, checkAvailable) {
6
+ const subscribers = new Set();
7
+ const publish = (event) => {
8
+ for (const subscriber of subscribers) {
9
+ if (subscriber.overflowed)
10
+ continue;
11
+ if (Queue.sizeUnsafe(subscriber.queue) < capacity - 1) {
12
+ Queue.offerUnsafe(subscriber.queue, event);
13
+ }
14
+ else {
15
+ subscriber.overflowed = true;
16
+ subscriber.marker = rescan();
17
+ Queue.offerUnsafe(subscriber.queue, subscriber.marker);
18
+ }
19
+ }
20
+ };
10
21
  const publishUnsafe = (event) => {
11
- if (activeSubscribers === 0)
12
- return;
13
- PubSub.publishUnsafe(pubsub, event());
22
+ if (subscribers.size > 0)
23
+ publish(event());
14
24
  };
15
25
  const publishManyUnsafe = (events) => {
16
- if (activeSubscribers === 0)
17
- return;
18
- for (const event of events())
19
- PubSub.publishUnsafe(pubsub, event);
26
+ if (subscribers.size > 0) {
27
+ for (const event of events())
28
+ publish(event);
29
+ }
20
30
  };
21
- // Registration is uninterruptible end to end, including the permit wait, so a watcher is never
22
- // half-registered. This deliberately tightens the engine's "permit waits stay interruptible" rule.
23
31
  const subscribe = (afterSubscribe) => Effect.acquireRelease(coordinate(Effect.gen(function* () {
24
- const subscription = yield* PubSub.subscribe(pubsub);
32
+ if (checkAvailable !== undefined)
33
+ yield* checkAvailable;
34
+ const queue = yield* Queue.bounded(capacity);
35
+ const subscriber = {
36
+ queue,
37
+ overflowed: false,
38
+ marker: undefined
39
+ };
25
40
  if (afterSubscribe !== undefined)
26
41
  yield* afterSubscribe;
27
- activeSubscribers += 1;
28
- return subscription;
29
- })), () => coordinate(Effect.sync(() => {
30
- activeSubscribers -= 1;
31
- }))).pipe(Effect.map(Stream.fromSubscription));
42
+ subscribers.add(subscriber);
43
+ return subscriber;
44
+ })), (subscriber) => coordinate(Effect.sync(() => {
45
+ subscribers.delete(subscriber);
46
+ })).pipe(Effect.andThen(Queue.shutdown(subscriber.queue))), { interruptible: true }).pipe(Effect.map((subscriber) => Stream.fromEffectRepeat(Queue.take(subscriber.queue)).pipe(Stream.map((event) => {
47
+ if (subscriber.overflowed && event === subscriber.marker) {
48
+ subscriber.overflowed = false;
49
+ subscriber.marker = undefined;
50
+ }
51
+ return event;
52
+ }))));
32
53
  return { publishUnsafe, publishManyUnsafe, subscribe };
33
54
  });
@@ -1,13 +1,17 @@
1
1
  import * as ByteSize from "effect/ByteSize";
2
- import * as Context from "effect/Context";
2
+ import * as Crypto from "effect/Crypto";
3
3
  import * as Data from "effect/Data";
4
4
  import * as Effect from "effect/Effect";
5
+ import * as Order from "effect/Order";
5
6
  import * as Schema from "effect/Schema";
6
7
  import { BytePath } from "../BytePath.js";
7
8
  import { ImageError, type Snapshot } from "../Snapshot.js";
8
- import type { Caller, OverlayVolume, RelativeOptions, Volume } from "../VirtualFileSystem.js";
9
+ import type { ObjectReference, OverlayVolume, RelativeOptions, Volume, VolumeLimits } from "../VirtualFileSystem.js";
9
10
  import * as Image from "./image.js";
11
+ import * as LiveImage from "./liveImage.js";
10
12
  import { ConfigurationError, FsCode as FsCodeSchema, FsError } from "./virtualFileSystem/errors.js";
13
+ import * as Content from "./virtualFileSystem/overlayContent.js";
14
+ import { type CommitProvider } from "./virtualFileSystem/stagedState.js";
11
15
  /** @internal */
12
16
  export declare const VolumeId: unique symbol;
13
17
  /** @internal */
@@ -42,8 +46,27 @@ export declare const RootCallerOptions: Schema.Struct<{
42
46
  /** @internal */
43
47
  export type RootCallerOptions = typeof RootCallerOptions.Type;
44
48
  /** @internal */
49
+ export declare const VolumeDurability: Schema.Literals<readonly ["memory-only", "survives-process-crash", "survives-operating-system-crash", "survives-power-loss"]>;
50
+ /** @internal */
51
+ export type VolumeDurability = typeof VolumeDurability.Type;
52
+ /** @internal */
53
+ export declare const VolumeDurabilityOrder: Order.Order<VolumeDurability>;
54
+ /** @internal */
55
+ export declare const isVolumeDurabilityAtLeast: (actual: VolumeDurability, required: VolumeDurability) => boolean;
56
+ /** @internal */
57
+ export declare const VolumeIdentity: Schema.brand<Schema.String, "@effect-vfs/core/VolumeIdentity">;
58
+ /** @internal */
59
+ export type VolumeIdentity = typeof VolumeIdentity.Type;
60
+ /** @internal */
61
+ export declare const VolumeIncarnation: Schema.brand<Schema.String, "@effect-vfs/core/VolumeIncarnation">;
62
+ /** @internal */
63
+ export type VolumeIncarnation = typeof VolumeIncarnation.Type;
64
+ /** @internal */
45
65
  export declare const VolumeOptions: Schema.Struct<{
66
+ readonly identity: Schema.optionalKey<Schema.brand<Schema.String, "@effect-vfs/core/VolumeIdentity">>;
46
67
  readonly maxEntries: Schema.optionalKey<Schema.Natural>;
68
+ readonly maxPendingOperations: Schema.optionalKey<Schema.Int>;
69
+ readonly maxWatchEvents: Schema.optionalKey<Schema.Int>;
47
70
  readonly maxBytes: Schema.optionalKey<Schema.ByteSize>;
48
71
  readonly maxFileBytes: Schema.optionalKey<Schema.ByteSize>;
49
72
  readonly maxPathBytes: Schema.optionalKey<Schema.ByteSize>;
@@ -118,6 +141,119 @@ export declare const OpenSettings: Schema.Struct<{
118
141
  }>;
119
142
  /** @internal */
120
143
  export type OpenOptions = typeof OpenSettings.Type & RelativeOptions;
144
+ /** @internal */
145
+ export declare const DirectoryChange: Schema.Struct<{
146
+ readonly before: Schema.BigInt;
147
+ readonly after: Schema.BigInt;
148
+ }>;
149
+ /** @internal */
150
+ export declare const RenameReferenceResult: Schema.TaggedUnion<{
151
+ readonly DifferentDirectories: Schema.TaggedStruct<"DifferentDirectories", {
152
+ readonly sourceDirectory: Schema.Struct<{
153
+ readonly before: Schema.BigInt;
154
+ readonly after: Schema.BigInt;
155
+ }>;
156
+ readonly destinationDirectory: Schema.Struct<{
157
+ readonly before: Schema.BigInt;
158
+ readonly after: Schema.BigInt;
159
+ }>;
160
+ }>;
161
+ readonly SameDirectory: Schema.TaggedStruct<"SameDirectory", {
162
+ readonly directory: Schema.Struct<{
163
+ readonly before: Schema.BigInt;
164
+ readonly after: Schema.BigInt;
165
+ }>;
166
+ }>;
167
+ }>;
168
+ /** @internal */
169
+ export declare const MkdirReferenceSettings: Schema.Struct<{
170
+ readonly mode: Schema.optionalKey<Schema.Natural>;
171
+ readonly exactMode: Schema.optionalKey<Schema.Boolean>;
172
+ readonly times: Schema.optionalKey<Schema.Struct<{
173
+ readonly access: Schema.Union<readonly [Schema.Struct<{
174
+ readonly kind: Schema.Literal<"now">;
175
+ }>, Schema.Struct<{
176
+ readonly kind: Schema.Literal<"omit">;
177
+ }>, Schema.Struct<{
178
+ readonly kind: Schema.Literal<"value">;
179
+ readonly nanoseconds: Schema.BigInt;
180
+ }>]>;
181
+ readonly modification: Schema.Union<readonly [Schema.Struct<{
182
+ readonly kind: Schema.Literal<"now">;
183
+ }>, Schema.Struct<{
184
+ readonly kind: Schema.Literal<"omit">;
185
+ }>, Schema.Struct<{
186
+ readonly kind: Schema.Literal<"value">;
187
+ readonly nanoseconds: Schema.BigInt;
188
+ }>]>;
189
+ }>>;
190
+ }>;
191
+ /** @internal */
192
+ export declare const SymlinkReferenceSettings: Schema.Struct<{
193
+ readonly times: Schema.optionalKey<Schema.Struct<{
194
+ readonly access: Schema.Union<readonly [Schema.Struct<{
195
+ readonly kind: Schema.Literal<"now">;
196
+ }>, Schema.Struct<{
197
+ readonly kind: Schema.Literal<"omit">;
198
+ }>, Schema.Struct<{
199
+ readonly kind: Schema.Literal<"value">;
200
+ readonly nanoseconds: Schema.BigInt;
201
+ }>]>;
202
+ readonly modification: Schema.Union<readonly [Schema.Struct<{
203
+ readonly kind: Schema.Literal<"now">;
204
+ }>, Schema.Struct<{
205
+ readonly kind: Schema.Literal<"omit">;
206
+ }>, Schema.Struct<{
207
+ readonly kind: Schema.Literal<"value">;
208
+ readonly nanoseconds: Schema.BigInt;
209
+ }>]>;
210
+ }>>;
211
+ }>;
212
+ /** @internal */
213
+ export declare const OpenReferenceSettings: Schema.Struct<{
214
+ readonly access: Schema.Literals<readonly ["read", "write", "readWrite"]>;
215
+ readonly append: Schema.optionalKey<Schema.Boolean>;
216
+ readonly truncate: Schema.optionalKey<Schema.Boolean>;
217
+ }>;
218
+ /** @internal */
219
+ export declare const OpenChildReferenceSettings: Schema.Struct<{
220
+ readonly access: Schema.Literals<readonly ["read", "write", "readWrite"]>;
221
+ readonly create: Schema.optionalKey<Schema.Literals<readonly ["never", "ifMissing", "exclusive"]>>;
222
+ readonly mode: Schema.optionalKey<Schema.Natural>;
223
+ readonly append: Schema.optionalKey<Schema.Boolean>;
224
+ readonly truncate: Schema.optionalKey<Schema.Boolean>;
225
+ readonly followFinalSymlink: Schema.optionalKey<Schema.Boolean>;
226
+ readonly times: Schema.optionalKey<Schema.Struct<{
227
+ readonly access: Schema.Union<readonly [Schema.Struct<{
228
+ readonly kind: Schema.Literal<"now">;
229
+ }>, Schema.Struct<{
230
+ readonly kind: Schema.Literal<"omit">;
231
+ }>, Schema.Struct<{
232
+ readonly kind: Schema.Literal<"value">;
233
+ readonly nanoseconds: Schema.BigInt;
234
+ }>]>;
235
+ readonly modification: Schema.Union<readonly [Schema.Struct<{
236
+ readonly kind: Schema.Literal<"now">;
237
+ }>, Schema.Struct<{
238
+ readonly kind: Schema.Literal<"omit">;
239
+ }>, Schema.Struct<{
240
+ readonly kind: Schema.Literal<"value">;
241
+ readonly nanoseconds: Schema.BigInt;
242
+ }>]>;
243
+ }>>;
244
+ readonly initialSize: Schema.optionalKey<Schema.BigInt>;
245
+ readonly exactMode: Schema.optionalKey<Schema.Boolean>;
246
+ readonly owner: Schema.optionalKey<Schema.Struct<{
247
+ readonly uid: Schema.optionalKey<Schema.Natural>;
248
+ readonly gid: Schema.optionalKey<Schema.Natural>;
249
+ }>>;
250
+ readonly expectedChild: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
251
+ readonly reference: Schema.declare<ObjectReference, ObjectReference>;
252
+ readonly revision: Schema.BigInt;
253
+ readonly atimeNs: Schema.BigInt;
254
+ readonly mtimeNs: Schema.BigInt;
255
+ }>>>;
256
+ }>;
121
257
  declare const WriteFileSettings: Schema.Struct<{
122
258
  readonly access: Schema.Literals<readonly ["read", "write", "readWrite"]>;
123
259
  readonly create: Schema.optionalKey<Schema.Literals<readonly ["never", "ifMissing", "exclusive"]>>;
@@ -168,10 +304,6 @@ export declare const OverlayChangesOptions: Schema.Struct<{
168
304
  }>;
169
305
  /** @internal */
170
306
  export type OverlayChangesOptions = typeof OverlayChangesOptions.Type;
171
- declare const CurrentFileSystem_base: Context.ServiceClass<CurrentFileSystem, "@effect-vfs/core/CurrentFileSystem", Caller>;
172
- /** @internal */
173
- export declare class CurrentFileSystem extends CurrentFileSystem_base {
174
- }
175
307
  /** @internal */
176
308
  export declare const FixtureMetadata: Schema.Struct<{
177
309
  readonly uid: Schema.optionalKey<Schema.Natural>;
@@ -283,11 +415,51 @@ export declare const Fixture: Schema.Struct<{
283
415
  }>;
284
416
  /** @internal */
285
417
  export type Fixture = typeof Fixture.Type;
418
+ interface Directory {
419
+ readonly kind: "directory";
420
+ readonly lineage: string | undefined;
421
+ parent: Directory | undefined;
422
+ readonly entries: Map<string, Node>;
423
+ metadata: Metadata;
424
+ revision: bigint;
425
+ objectReference: ObjectReference | undefined;
426
+ }
427
+ interface RegularFile {
428
+ readonly kind: "file";
429
+ readonly lineage: string | undefined;
430
+ data: Content.Content;
431
+ openCount: number;
432
+ metadata: Metadata;
433
+ revision: bigint;
434
+ objectReference: ObjectReference | undefined;
435
+ }
436
+ interface SymbolicLink {
437
+ readonly kind: "symlink";
438
+ readonly lineage: string | undefined;
439
+ readonly target: Uint8Array;
440
+ metadata: Metadata;
441
+ revision: bigint;
442
+ objectReference: ObjectReference | undefined;
443
+ }
444
+ type Node = Directory | RegularFile | SymbolicLink;
445
+ interface EngineState {
446
+ root: Directory;
447
+ retainedFiles: Map<bigint, RegularFile>;
448
+ revisionCounter: bigint;
449
+ nextInode: bigint;
450
+ entries: number;
451
+ usedBytes: bigint;
452
+ }
453
+ /** @internal */
454
+ export declare const captureLiveImage: (state: EngineState, identity: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">, limits: VolumeLimits) => Effect.Effect<Uint8Array<ArrayBuffer>, ImageError, never>;
286
455
  type VolumeSource = {
287
456
  readonly _tag: "Empty";
288
457
  } | {
289
458
  readonly _tag: "Snapshot";
290
459
  readonly image: Image.Document;
460
+ } | {
461
+ readonly _tag: "Live";
462
+ readonly document: LiveImage.Document;
291
463
  } | {
292
464
  readonly _tag: "Overlay";
293
465
  readonly base: Snapshot;
@@ -295,7 +467,7 @@ type VolumeSource = {
295
467
  };
296
468
  /** @internal */
297
469
  export declare const VolumeSource: {
298
- readonly $is: <Tag extends "Empty" | "Overlay" | "Snapshot">(tag: Tag) => (u: unknown) => u is Extract<{
470
+ readonly $is: <Tag extends "Empty" | "Live" | "Overlay" | "Snapshot">(tag: Tag) => (u: unknown) => u is Extract<{
299
471
  readonly _tag: "Empty";
300
472
  }, {
301
473
  readonly _tag: Tag;
@@ -304,6 +476,11 @@ export declare const VolumeSource: {
304
476
  readonly image: Image.Document;
305
477
  }, {
306
478
  readonly _tag: Tag;
479
+ }> | Extract<{
480
+ readonly _tag: "Live";
481
+ readonly document: LiveImage.Document;
482
+ }, {
483
+ readonly _tag: Tag;
307
484
  }> | Extract<{
308
485
  readonly _tag: "Overlay";
309
486
  readonly base: Snapshot;
@@ -312,16 +489,20 @@ export declare const VolumeSource: {
312
489
  readonly _tag: Tag;
313
490
  }>;
314
491
  readonly $match: {
315
- <Cases extends { readonly [Tag in "Empty" | "Overlay" | "Snapshot"]: (args: Extract<VolumeSource, {
492
+ <Cases extends { readonly [Tag in "Empty" | "Live" | "Overlay" | "Snapshot"]: (args: Extract<VolumeSource, {
316
493
  readonly _tag: Tag;
317
- }>) => any; }>(cases: Cases): (value: VolumeSource) => import("effect/Unify").Unify<ReturnType<Cases["Empty" | "Overlay" | "Snapshot"]>>;
318
- <Cases extends { readonly [Tag in "Empty" | "Overlay" | "Snapshot"]: (args: Extract<VolumeSource, {
494
+ }>) => any; }>(cases: Cases): (value: VolumeSource) => import("effect/Unify").Unify<ReturnType<Cases["Empty" | "Live" | "Overlay" | "Snapshot"]>>;
495
+ <Cases extends { readonly [Tag in "Empty" | "Live" | "Overlay" | "Snapshot"]: (args: Extract<VolumeSource, {
319
496
  readonly _tag: Tag;
320
- }>) => any; }>(value: VolumeSource, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Empty" | "Overlay" | "Snapshot"]>>;
497
+ }>) => any; }>(value: VolumeSource, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Empty" | "Live" | "Overlay" | "Snapshot"]>>;
321
498
  };
322
499
  readonly Empty: Data.TaggedEnum.ConstructorFrom<{
323
500
  readonly _tag: "Empty";
324
501
  }, "_tag">;
502
+ readonly Live: Data.TaggedEnum.ConstructorFrom<{
503
+ readonly _tag: "Live";
504
+ readonly document: LiveImage.Document;
505
+ }, "_tag">;
325
506
  readonly Overlay: Data.TaggedEnum.ConstructorFrom<{
326
507
  readonly _tag: "Overlay";
327
508
  readonly base: Snapshot;
@@ -337,30 +518,57 @@ type VolumeFor<S extends VolumeSource> = S extends {
337
518
  } ? OverlayVolume : Volume;
338
519
  /** @internal */
339
520
  export declare const makeVolume: <S extends VolumeSource>(source: S, options?: {
521
+ readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
340
522
  readonly maxEntries?: number;
523
+ readonly maxPendingOperations?: number;
524
+ readonly maxWatchEvents?: number;
341
525
  readonly maxBytes?: ByteSize.ByteSize;
342
526
  readonly maxFileBytes?: ByteSize.ByteSize;
343
527
  readonly maxPathBytes?: ByteSize.ByteSize;
344
- } | undefined) => Effect.Effect<VolumeFor<S>, ConfigurationError | ImageError, never>;
528
+ } | undefined, commitProvider?: CommitProvider<EngineState> | undefined, captureInitial?: ((state: EngineState, identity: VolumeIdentity, limits: VolumeLimits) => Effect.Effect<void, ImageError>) | undefined) => Effect.Effect<VolumeFor<S>, ConfigurationError | ImageError | import("effect/PlatformError").PlatformError, Crypto.Crypto>;
345
529
  /** @internal */
346
530
  export declare const make: (options?: {
531
+ readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
347
532
  readonly maxEntries?: number;
533
+ readonly maxPendingOperations?: number;
534
+ readonly maxWatchEvents?: number;
348
535
  readonly maxBytes?: ByteSize.ByteSize;
349
536
  readonly maxFileBytes?: ByteSize.ByteSize;
350
537
  readonly maxPathBytes?: ByteSize.ByteSize;
351
- } | undefined) => Effect.Effect<Volume, ConfigurationError, never>;
538
+ } | undefined) => Effect.Effect<Volume, ConfigurationError | import("effect/PlatformError").PlatformError, Crypto.Crypto>;
539
+ /** @internal */
540
+ export declare const prepareEmptyLiveImage: (options?: {
541
+ readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
542
+ readonly maxEntries?: number;
543
+ readonly maxPendingOperations?: number;
544
+ readonly maxWatchEvents?: number;
545
+ readonly maxBytes?: ByteSize.ByteSize;
546
+ readonly maxFileBytes?: ByteSize.ByteSize;
547
+ readonly maxPathBytes?: ByteSize.ByteSize;
548
+ } | undefined) => Effect.Effect<Uint8Array<ArrayBufferLike>, ConfigurationError | ImageError | import("effect/PlatformError").PlatformError, Crypto.Crypto>;
549
+ /** @internal */
550
+ export declare const openImageVolume: (image: Uint8Array<ArrayBufferLike>, maxImageBytes: ByteSize.ByteSize, commit: (image: Uint8Array) => Effect.Effect<"committed" | "rejected" | "unknown">) => Effect.Effect<Readonly<{
551
+ volume: Volume;
552
+ shutdown: Effect.Effect<void, never, never>;
553
+ }>, ConfigurationError | ImageError | import("effect/PlatformError").PlatformError, Crypto.Crypto>;
352
554
  /** @internal */
353
555
  export declare const fromSnapshot: (snapshot: Snapshot, options?: {
556
+ readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
354
557
  readonly maxEntries?: number;
558
+ readonly maxPendingOperations?: number;
559
+ readonly maxWatchEvents?: number;
355
560
  readonly maxBytes?: ByteSize.ByteSize;
356
561
  readonly maxFileBytes?: ByteSize.ByteSize;
357
562
  readonly maxPathBytes?: ByteSize.ByteSize;
358
- } | undefined) => Effect.Effect<Volume, ConfigurationError | ImageError, never>;
563
+ } | undefined) => Effect.Effect<Volume, ConfigurationError | ImageError | import("effect/PlatformError").PlatformError, Crypto.Crypto>;
359
564
  /** @internal */
360
565
  export declare const makeOverlay: (base: Snapshot, options?: {
566
+ readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
361
567
  readonly maxEntries?: number;
568
+ readonly maxPendingOperations?: number;
569
+ readonly maxWatchEvents?: number;
362
570
  readonly maxBytes?: ByteSize.ByteSize;
363
571
  readonly maxFileBytes?: ByteSize.ByteSize;
364
572
  readonly maxPathBytes?: ByteSize.ByteSize;
365
- } | undefined) => Effect.Effect<OverlayVolume, ConfigurationError | ImageError, never>;
573
+ } | undefined) => Effect.Effect<OverlayVolume, ConfigurationError | ImageError | import("effect/PlatformError").PlatformError, Crypto.Crypto>;
366
574
  //# sourceMappingURL=virtualFileSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtualFileSystem.d.ts","sourceRoot":"","sources":["../../src/internal/virtualFileSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtualFileSystem.d.ts","sourceRoot":"","sources":["../../src/internal/virtualFileSystem.ts"],"names":[],"mappings":"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"}