@effect-vfs/core 0.9.0 → 0.10.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 (106) hide show
  1. package/dist/BytePath.d.ts +4 -1
  2. package/dist/BytePath.d.ts.map +1 -1
  3. package/dist/BytePath.js +6 -4
  4. package/dist/Caller.d.ts +105 -66
  5. package/dist/Caller.d.ts.map +1 -1
  6. package/dist/Caller.js +15 -87
  7. package/dist/LiveVolume.d.ts +6 -1
  8. package/dist/LiveVolume.d.ts.map +1 -1
  9. package/dist/LiveVolume.js +8 -1
  10. package/dist/Search.d.ts +32 -8
  11. package/dist/Search.d.ts.map +1 -1
  12. package/dist/Search.js +14 -13
  13. package/dist/SynchronousAdapter.d.ts +58 -0
  14. package/dist/SynchronousAdapter.d.ts.map +1 -0
  15. package/dist/SynchronousAdapter.js +116 -0
  16. package/dist/Target.d.ts +7 -91
  17. package/dist/Target.d.ts.map +1 -1
  18. package/dist/Target.js +7 -47
  19. package/dist/Testing.d.ts +5 -2
  20. package/dist/Testing.d.ts.map +1 -1
  21. package/dist/Testing.js +2 -1
  22. package/dist/VfsError.d.ts +1 -1
  23. package/dist/VfsError.d.ts.map +1 -1
  24. package/dist/VirtualFileSystem.d.ts +126 -43
  25. package/dist/VirtualFileSystem.d.ts.map +1 -1
  26. package/dist/VirtualFileSystem.js +25 -21
  27. package/dist/Volume.d.ts +6 -1
  28. package/dist/Volume.d.ts.map +1 -1
  29. package/dist/Volume.js +6 -2
  30. package/dist/internal/adapterBinding.d.ts +13 -0
  31. package/dist/internal/adapterBinding.d.ts.map +1 -0
  32. package/dist/internal/adapterBinding.js +13 -0
  33. package/dist/internal/bytePath.d.ts +6 -1
  34. package/dist/internal/bytePath.d.ts.map +1 -1
  35. package/dist/internal/callerWatch.d.ts +5 -1
  36. package/dist/internal/callerWatch.d.ts.map +1 -1
  37. package/dist/internal/callerWatch.js +4 -3
  38. package/dist/internal/engine.d.ts +1305 -0
  39. package/dist/internal/engine.d.ts.map +1 -0
  40. package/dist/internal/engine.js +3458 -0
  41. package/dist/internal/errors.d.ts +1 -33
  42. package/dist/internal/errors.d.ts.map +1 -1
  43. package/dist/internal/errors.js +1 -45
  44. package/dist/internal/fixture.d.ts +2 -1
  45. package/dist/internal/fixture.d.ts.map +1 -1
  46. package/dist/internal/fixture.js +7 -3
  47. package/dist/internal/image.d.ts +4 -1
  48. package/dist/internal/image.d.ts.map +1 -1
  49. package/dist/internal/image.js +6 -3
  50. package/dist/internal/lines.d.ts.map +1 -1
  51. package/dist/internal/lines.js +3 -2
  52. package/dist/internal/liveImage.d.ts +4 -2
  53. package/dist/internal/liveImage.d.ts.map +1 -1
  54. package/dist/internal/liveImage.js +3 -1
  55. package/dist/internal/merkle.d.ts +7 -4
  56. package/dist/internal/merkle.d.ts.map +1 -1
  57. package/dist/internal/merkle.js +6 -4
  58. package/dist/internal/search.d.ts +3 -1
  59. package/dist/internal/search.d.ts.map +1 -1
  60. package/dist/internal/search.js +4 -3
  61. package/dist/internal/snapshotDelta.d.ts +11 -7
  62. package/dist/internal/snapshotDelta.d.ts.map +1 -1
  63. package/dist/internal/snapshotDelta.js +15 -9
  64. package/dist/internal/snapshotMerge.d.ts +1 -1
  65. package/dist/internal/snapshotMerge.d.ts.map +1 -1
  66. package/dist/internal/snapshotMerge.js +5 -2
  67. package/dist/internal/tree.d.ts +4 -2
  68. package/dist/internal/tree.d.ts.map +1 -1
  69. package/dist/internal/tree.js +4 -2
  70. package/dist/internal/virtualFileSystem.d.ts +20 -49
  71. package/dist/internal/virtualFileSystem.d.ts.map +1 -1
  72. package/dist/internal/virtualFileSystem.js +75 -2082
  73. package/dist/internal/volumeLimits.d.ts +1 -0
  74. package/dist/internal/volumeLimits.d.ts.map +1 -1
  75. package/dist/internal/volumeLimits.js +3 -2
  76. package/dist/internal/volumeState.d.ts +10 -79
  77. package/dist/internal/volumeState.d.ts.map +1 -1
  78. package/dist/internal/volumeState.js +9 -79
  79. package/dist/internal/watchHub.d.ts +3 -3
  80. package/dist/internal/watchHub.d.ts.map +1 -1
  81. package/dist/internal/watchHub.js +4 -2
  82. package/package.json +14 -9
  83. package/dist/internal/confinement.d.ts +0 -16
  84. package/dist/internal/confinement.d.ts.map +0 -1
  85. package/dist/internal/confinement.js +0 -79
  86. package/dist/internal/directoryEntries.d.ts +0 -6
  87. package/dist/internal/directoryEntries.d.ts.map +0 -1
  88. package/dist/internal/directoryEntries.js +0 -79
  89. package/dist/internal/inodeTable.d.ts +0 -20
  90. package/dist/internal/inodeTable.d.ts.map +0 -1
  91. package/dist/internal/inodeTable.js +0 -48
  92. package/dist/internal/path.d.ts +0 -56
  93. package/dist/internal/path.d.ts.map +0 -1
  94. package/dist/internal/path.js +0 -141
  95. package/dist/internal/resolution.d.ts +0 -139
  96. package/dist/internal/resolution.d.ts.map +0 -1
  97. package/dist/internal/resolution.js +0 -332
  98. package/dist/internal/testSeams.d.ts +0 -17
  99. package/dist/internal/testSeams.d.ts.map +0 -1
  100. package/dist/internal/testSeams.js +0 -20
  101. package/dist/internal/tokenRegistry.d.ts +0 -83
  102. package/dist/internal/tokenRegistry.d.ts.map +0 -1
  103. package/dist/internal/tokenRegistry.js +0 -146
  104. package/dist/internal/turnstile.d.ts +0 -8
  105. package/dist/internal/turnstile.d.ts.map +0 -1
  106. package/dist/internal/turnstile.js +0 -43
@@ -13,8 +13,10 @@ import { ENCODING_CHECK, imageFailure, isEncodingIssue, issueSite } from "./erro
13
13
  import { KeySecret, VolumeEpoch } from "./hex128.js";
14
14
  import { byteLimit, encodeLine, frame } from "./lines.js";
15
15
  import { StoredMetadata } from "./metadata.js";
16
- import { isNameBytes, MAX_NAME_BYTES, nameBytes, NUL_BYTE } from "./path.js";
17
- import { byIno, Ino, MAX_INO, reachableNodes, ROOT_INO, storedMetadata, WALK_YIELD_INTERVAL } from "./volumeState.js";
16
+ import { Paths, State } from "./engine.js";
17
+ import { reachableNodes, storedMetadata } from "./volumeState.js";
18
+ const { isNameBytes, MAX_NAME_BYTES, nameBytes, NUL_BYTE } = Paths;
19
+ const { byIno, Ino, MAX_INO, ROOT_INO, WALK_YIELD_INTERVAL } = State;
18
20
  const TreeIno = Schema.Int.check(Schema.isBetween({ minimum: ROOT_INO, maximum: MAX_INO }));
19
21
  const NaturalBigInt = Schema.String.check(Schema.isPattern(/^(0|[1-9][0-9]{0,127})$/, { [ENCODING_CHECK]: true })).pipe(Schema.decodeTo(Schema.BigInt, SchemaTransformation.bigintFromString));
20
22
  const TreeLink = Schema.Struct({ parent: TreeIno, name: CanonicalBase64.Encoded });
@@ -1,25 +1,25 @@
1
+ /**
2
+ * Community volume assembly over the shared private filesystem engine.
3
+ * IDs, authenticated keys, snapshots, overlays, storage encoders and watch delivery stay here.
4
+ * @internal
5
+ */
1
6
  import * as ByteSize from "effect/ByteSize";
2
7
  import * as Crypto from "effect/Crypto";
3
8
  import * as Data from "effect/Data";
4
9
  import * as Effect from "effect/Effect";
5
10
  import type { CommitOutcome } from "../LiveVolume.js";
6
11
  import type { Snapshot } from "../Snapshot.js";
7
- import { type FsFailure } from "../VfsError.js";
8
- import type { OverlayVolume, Volume } from "../VirtualFileSystem.js";
9
- import { VfsError } from "./errors.js";
12
+ import { VfsError } from "../VfsError.js";
13
+ import type { FsFailure, OverlayVolume, Volume } from "../VirtualFileSystem.js";
14
+ import * as Engine from "./engine.js";
10
15
  import * as LiveImage from "./liveImage.js";
11
16
  import { type ObservationEntry } from "./overlayDiff.js";
12
- import { type VolumeState } from "./volumeState.js";
17
+ import { State } from "./engine.js";
18
+ type VolumeState = State.VolumeState;
13
19
  /** @internal */
14
- export interface CommitProvider<State> {
15
- readonly mode: "memory" | "durable";
16
- readonly commit: (candidate: State) => Effect.Effect<CommitOutcome, FsFailure & {
17
- readonly code: "StorageRejected";
18
- }>;
19
- readonly shutdown: Effect.Effect<void>;
20
- }
20
+ export type CommitProvider<State> = Engine.CommitProvider<State>;
21
21
  /** @internal */
22
- export declare const memoryCommitProvider: CommitProvider<VolumeState>;
22
+ export declare const memoryCommitProvider: Engine.CommitProvider<State.VolumeState>;
23
23
  type VolumeSource = {
24
24
  readonly _tag: "Empty";
25
25
  } | {
@@ -30,44 +30,10 @@ type VolumeSource = {
30
30
  readonly value: VolumeState;
31
31
  };
32
32
  /** @internal */
33
- export declare const VolumeSource: {
34
- readonly $is: <Tag extends "Empty" | "Live" | "Restored">(tag: Tag) => (u: unknown) => u is Extract<{
35
- readonly _tag: "Empty";
36
- }, {
37
- readonly _tag: Tag;
38
- }> | Extract<{
39
- readonly _tag: "Live";
40
- readonly restored: LiveImage.Restored;
41
- }, {
42
- readonly _tag: Tag;
43
- }> | Extract<{
44
- readonly _tag: "Restored";
45
- readonly value: VolumeState;
46
- }, {
47
- readonly _tag: Tag;
48
- }>;
49
- readonly $match: {
50
- <Cases extends { readonly [Tag in "Empty" | "Live" | "Restored"]: (args: Extract<VolumeSource, {
51
- readonly _tag: Tag;
52
- }>) => any; }>(cases: Cases): (value: VolumeSource) => import("effect/Unify").Unify<ReturnType<Cases["Empty" | "Live" | "Restored"]>>;
53
- <Cases extends { readonly [Tag in "Empty" | "Live" | "Restored"]: (args: Extract<VolumeSource, {
54
- readonly _tag: Tag;
55
- }>) => any; }>(value: VolumeSource, cases: Cases): import("effect/Unify").Unify<ReturnType<Cases["Empty" | "Live" | "Restored"]>>;
56
- };
57
- readonly Empty: Data.TaggedEnum.ConstructorFrom<{
58
- readonly _tag: "Empty";
59
- }, "_tag">;
60
- readonly Live: Data.TaggedEnum.ConstructorFrom<{
61
- readonly _tag: "Live";
62
- readonly restored: LiveImage.Restored;
63
- }, "_tag">;
64
- readonly Restored: Data.TaggedEnum.ConstructorFrom<{
65
- readonly _tag: "Restored";
66
- readonly value: VolumeState;
67
- }, "_tag">;
68
- };
33
+ export declare const VolumeSource: Data.TaggedEnum.Constructor<VolumeSource>;
69
34
  /** @internal */
70
- export declare const makeVolume: (source: VolumeSource, commitProvider: CommitProvider<VolumeState>, options?: {
35
+ export declare const makeVolume: (source: VolumeSource, commitProvider: CommitProvider<State.VolumeState>, options?: {
36
+ readonly execution?: "cooperative" | "sync";
71
37
  readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
72
38
  readonly maxEntries?: number;
73
39
  readonly maxPendingOperations?: number;
@@ -88,6 +54,7 @@ export declare const makeVolume: (source: VolumeSource, commitProvider: CommitPr
88
54
  }>, import("../VfsError.js").ArgumentFailure | import("../VfsError.js").ImageFailure, Crypto.Crypto>;
89
55
  /** @internal */
90
56
  export declare const make: (options?: {
57
+ readonly execution?: "cooperative" | "sync";
91
58
  readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
92
59
  readonly maxEntries?: number;
93
60
  readonly maxPendingOperations?: number;
@@ -98,6 +65,7 @@ export declare const make: (options?: {
98
65
  } | undefined) => Effect.Effect<Volume, import("../VfsError.js").ArgumentFailure, Crypto.Crypto>;
99
66
  /** @internal */
100
67
  export declare const prepareEmptyLiveImage: (options?: {
68
+ readonly execution?: "cooperative" | "sync";
101
69
  readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
102
70
  readonly maxEntries?: number;
103
71
  readonly maxPendingOperations?: number;
@@ -110,6 +78,7 @@ export declare const prepareEmptyLiveImage: (options?: {
110
78
  }), Crypto.Crypto>;
111
79
  /** @internal */
112
80
  export declare const openImageVolume: (image: Uint8Array<ArrayBufferLike>, maxImageBytes: ByteSize.ByteSize, commit: (image: Uint8Array) => Effect.Effect<CommitOutcome>, durability?: "memory-only" | "survives-operating-system-crash" | "survives-power-loss" | "survives-process-crash" | undefined, options?: {
81
+ readonly execution?: "cooperative" | "sync";
113
82
  readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
114
83
  readonly maxEntries?: number;
115
84
  readonly maxPendingOperations?: number;
@@ -123,6 +92,7 @@ export declare const openImageVolume: (image: Uint8Array<ArrayBufferLike>, maxIm
123
92
  }>, import("../VfsError.js").ArgumentFailure | import("../VfsError.js").ImageFailure, Crypto.Crypto>;
124
93
  /** @internal */
125
94
  export declare const fromSnapshot: (snapshot: Snapshot, options?: {
95
+ readonly execution?: "cooperative" | "sync";
126
96
  readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
127
97
  readonly maxEntries?: number;
128
98
  readonly maxPendingOperations?: number;
@@ -133,6 +103,7 @@ export declare const fromSnapshot: (snapshot: Snapshot, options?: {
133
103
  } | undefined) => Effect.Effect<Volume, import("../VfsError.js").ArgumentFailure | import("../VfsError.js").ImageFailure, Crypto.Crypto>;
134
104
  /** @internal */
135
105
  export declare const makeOverlay: (base: Snapshot, options?: {
106
+ readonly execution?: "cooperative" | "sync";
136
107
  readonly identity?: string & import("effect/Brand").Brand<"@effect-vfs/core/VolumeIdentity">;
137
108
  readonly maxEntries?: number;
138
109
  readonly maxPendingOperations?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"virtualFileSystem.d.ts","sourceRoot":"","sources":["../../src/internal/virtualFileSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAI3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AA2BvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EAQV,aAAa,EAEb,MAAM,EAIP,MAAM,yBAAyB,CAAA;AAiBhC,OAAO,EAQL,QAAQ,EACT,MAAM,aAAa,CAAA;AAKpB,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAkB,KAAK,gBAAgB,EAAyB,MAAM,kBAAkB,CAAA;AAmB/F,OAAO,EAeL,KAAK,WAAW,EAEjB,MAAM,kBAAkB,CAAA;AAWzB,gBAAgB;AAChB,MAAM,WAAW,cAAc,CAAC,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAA;IACrH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACvC;AAED,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,WAAW,CAI3D,CAAA;AAsVF,KAAK,YAAY,GACb;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAA;AAE9D,gBAAgB;AAChB,eAAO,MAAM,YAAY;;uBALJ,OAAO;;;;uBACP,MAAM;2BAAqB,SAAS,CAAC,QAAQ;;;;uBAC7C,UAAU;wBAAkB,WAAW;;;;;;;;;;;;;uBAFvC,OAAO;;;uBACP,MAAM;2BAAqB,SAAS,CAAC,QAAQ;;;uBAC7C,UAAU;wBAAkB,WAAW;;CAGD,CAAA;AA2C3D,gBAAgB;AAChB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;oGAy3FtB,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,IAAI;;;;;;;;gGAIf,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,qBAAqB;;;;;;;;;;kBAahC,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,eAAe,yFAGV,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;;;;;;;;;;;oGAyB3D,CAAA;AAeF,gBAAgB;AAChB,eAAO,MAAM,YAAY;;;;;;;;wIASxB,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,WAAW;;;;;;;;+IAkCvB,CAAA"}
1
+ {"version":3,"file":"virtualFileSystem.d.ts","sourceRoot":"","sources":["../../src/internal/virtualFileSystem.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAQvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAqB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,KAAK,EAAU,SAAS,EAAmB,aAAa,EAAE,MAAM,EAAiB,MAAM,yBAAyB,CAAA;AAevH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAKrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAkB,KAAK,gBAAgB,EAAyB,MAAM,kBAAkB,CAAA;AAE/F,OAAO,EAAiB,KAAK,EAAmB,MAAM,aAAa,CAAA;AAanE,KAAK,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;AAEpC,gBAAgB;AAChB,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;AAEhE,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,0CAA8B,CAAA;AAI/D,KAAK,YAAY,GACb;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAA;AAE9D,gBAAgB;AAChB,eAAO,MAAM,YAAY,2CAAkC,CAAA;AA0C3D,gBAAgB;AAChB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;oGAwQrB,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,IAAI;;;;;;;;;gGAIf,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,qBAAqB;;;;;;;;;;;kBAahC,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,eAAe,yFAGV,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;;;;;;;;;;;;oGA4B3D,CAAA;AAeF,gBAAgB;AAChB,eAAO,MAAM,YAAY;;;;;;;;;wIASxB,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,WAAW;;;;;;;;;+IAoCvB,CAAA"}