@effect-vfs/core 0.3.1 → 0.5.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 (58) hide show
  1. package/README.md +41 -150
  2. package/dist/BytePath.d.ts +2 -1
  3. package/dist/BytePath.d.ts.map +1 -1
  4. package/dist/LiveVolume.d.ts +104 -0
  5. package/dist/LiveVolume.d.ts.map +1 -0
  6. package/dist/LiveVolume.js +73 -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 +122 -32
  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/errors.d.ts +12 -0
  20. package/dist/internal/errors.d.ts.map +1 -0
  21. package/dist/internal/{virtualFileSystem/errors.js → errors.js} +11 -15
  22. package/dist/internal/{virtualFileSystem/fixture.d.ts → fixture.d.ts} +11 -8
  23. package/dist/internal/fixture.d.ts.map +1 -0
  24. package/dist/internal/{virtualFileSystem/fixture.js → fixture.js} +11 -5
  25. package/dist/internal/liveImage.d.ts +286 -0
  26. package/dist/internal/liveImage.d.ts.map +1 -0
  27. package/dist/internal/liveImage.js +176 -0
  28. package/dist/internal/{virtualFileSystem/overlayContent.d.ts → overlayContent.d.ts} +2 -2
  29. package/dist/internal/overlayContent.d.ts.map +1 -0
  30. package/dist/internal/{virtualFileSystem/overlayContent.js → overlayContent.js} +2 -2
  31. package/dist/internal/{virtualFileSystem/overlayDiff.d.ts → overlayDiff.d.ts} +1 -1
  32. package/dist/internal/overlayDiff.d.ts.map +1 -0
  33. package/dist/internal/{virtualFileSystem/overlayDiff.js → overlayDiff.js} +1 -1
  34. package/dist/internal/{virtualFileSystem/path.d.ts → path.d.ts} +2 -2
  35. package/dist/internal/path.d.ts.map +1 -0
  36. package/dist/internal/{virtualFileSystem/path.js → path.js} +1 -1
  37. package/dist/internal/stagedState.d.ts +22 -0
  38. package/dist/internal/stagedState.d.ts.map +1 -0
  39. package/dist/internal/stagedState.js +62 -0
  40. package/dist/internal/{virtualFileSystem/testHooks.d.ts → testHooks.d.ts} +2 -2
  41. package/dist/internal/testHooks.d.ts.map +1 -0
  42. package/dist/internal/virtualFileSystem.d.ts +224 -16
  43. package/dist/internal/virtualFileSystem.d.ts.map +1 -1
  44. package/dist/internal/virtualFileSystem.js +1294 -159
  45. package/dist/internal/{virtualFileSystem/watchHub.d.ts → watchHub.d.ts} +3 -3
  46. package/dist/internal/watchHub.d.ts.map +1 -0
  47. package/dist/internal/watchHub.js +54 -0
  48. package/package.json +14 -6
  49. package/dist/internal/virtualFileSystem/errors.d.ts +0 -31
  50. package/dist/internal/virtualFileSystem/errors.d.ts.map +0 -1
  51. package/dist/internal/virtualFileSystem/fixture.d.ts.map +0 -1
  52. package/dist/internal/virtualFileSystem/overlayContent.d.ts.map +0 -1
  53. package/dist/internal/virtualFileSystem/overlayDiff.d.ts.map +0 -1
  54. package/dist/internal/virtualFileSystem/path.d.ts.map +0 -1
  55. package/dist/internal/virtualFileSystem/testHooks.d.ts.map +0 -1
  56. package/dist/internal/virtualFileSystem/watchHub.d.ts.map +0 -1
  57. package/dist/internal/virtualFileSystem/watchHub.js +0 -33
  58. /package/dist/internal/{virtualFileSystem/testHooks.js → testHooks.js} +0 -0
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchHub.d.ts","sourceRoot":"","sources":["../../src/internal/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"}
@@ -0,0 +1,54 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Queue from "effect/Queue";
3
+ import * as Stream from "effect/Stream";
4
+ /** @internal */
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
+ };
21
+ const publishUnsafe = (event) => {
22
+ if (subscribers.size > 0)
23
+ publish(event());
24
+ };
25
+ const publishManyUnsafe = (events) => {
26
+ if (subscribers.size > 0) {
27
+ for (const event of events())
28
+ publish(event);
29
+ }
30
+ };
31
+ const subscribe = (afterSubscribe) => Effect.acquireRelease(coordinate(Effect.gen(function* () {
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
+ };
40
+ if (afterSubscribe !== undefined)
41
+ yield* afterSubscribe;
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
+ }))));
53
+ return { publishUnsafe, publishManyUnsafe, subscribe };
54
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-vfs/core",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
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": {
@@ -25,14 +25,14 @@
25
25
  "type-check": "tsc --noEmit && tsc --project contracts/tsconfig.json"
26
26
  },
27
27
  "peerDependencies": {
28
- "effect": "4.0.0-rc.114"
28
+ "effect": "4.0.0-rc.115"
29
29
  },
30
30
  "devDependencies": {
31
- "@effect/platform-bun": "4.0.0-rc.114",
32
- "@effect/platform-node-shared": "4.0.0-rc.114",
33
- "@effect/vitest": "4.0.0-rc.114",
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",
34
34
  "@repo/config-typescript": "workspace:*",
35
- "effect": "4.0.0-rc.114"
35
+ "effect": "4.0.0-rc.115"
36
36
  },
37
37
  "exports": {
38
38
  ".": {
@@ -43,6 +43,14 @@
43
43
  "types": "./dist/VirtualFileSystem.d.ts",
44
44
  "import": "./dist/VirtualFileSystem.js"
45
45
  },
46
+ "./VirtualFileSystemError": {
47
+ "types": "./dist/VirtualFileSystemError.d.ts",
48
+ "import": "./dist/VirtualFileSystemError.js"
49
+ },
50
+ "./LiveVolume": {
51
+ "types": "./dist/LiveVolume.d.ts",
52
+ "import": "./dist/LiveVolume.js"
53
+ },
46
54
  "./internal/*": null,
47
55
  "./index": null,
48
56
  "./*/index": null,
@@ -1,31 +0,0 @@
1
- import * as Result from "effect/Result";
2
- import * as Schema from "effect/Schema";
3
- import type { PathInput } from "../../VirtualFileSystem.js";
4
- /** @internal */
5
- export declare const FsCode: Schema.Literals<readonly ["NotFound", "AlreadyExists", "NotEmpty", "NotDirectory", "AccessDenied", "InvalidHandle", "ForeignHandle", "InvalidReference", "ForeignReference", "StaleReference", "ClosedCaller", "InvalidArgument", "InvalidPathEncoding", "PathTooLong", "NoSpace", "IsDirectory", "FileTooLarge", "NoData", "SymlinkLoop", "UnrepresentableName"]>;
6
- /** @internal */
7
- export type FsCode = typeof FsCode.Type;
8
- declare const FsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9
- readonly _tag: "FsError";
10
- } & Readonly<A>;
11
- /** @internal */
12
- export declare class FsError extends FsError_base<{
13
- readonly code: FsCode;
14
- readonly operation: string;
15
- readonly path?: PathInput;
16
- }> {
17
- get message(): string;
18
- }
19
- declare const ConfigurationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
20
- readonly _tag: "ConfigurationError";
21
- } & Readonly<A>;
22
- /** @internal */
23
- export declare class ConfigurationError extends ConfigurationError_base<{
24
- readonly field: string;
25
- }> {
26
- get message(): string;
27
- }
28
- /** @internal */
29
- export declare const decodeConfiguration: <A>(schema: Schema.Codec<A>, value: typeof Schema.Unknown.Type) => Result.Result<A, ConfigurationError>;
30
- export {};
31
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/errors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE3D,gBAAgB;AAChB,eAAO,MAAM,MAAM,oWAqBjB,CAAA;AAEF,gBAAgB;AAChB,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;;;;AAEvC,gBAAgB;AAChB,qBAAa,OAAQ,SAAQ,aAA4B;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAC1B,CAAC;IAEA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAWD,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,GAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,yCAG9F,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/fixture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAmB9C,gBAAgB;AAChB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0IAiLvB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"overlayContent.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/overlayContent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,gBAAgB;AAChB,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC3B;AAID,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,aAAc,QAAQ,KAAG,OAAwC,CAAA;AAEhG,gBAAgB;AAChB,eAAO,MAAM,IAAI,UAAW,UAAU,KAAG,OAAsB,CAAA;AAE/D,gBAAgB;AAChB,eAAO,MAAM,KAAK,QAAO,OAAkC,CAAA;AAG3D,gBAAgB;AAChB,eAAO,MAAM,UAAU,aAAc,QAAQ,SAAS,KAAK,CAAC,QAAQ,KAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAiBjG,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"overlayDiff.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/overlayDiff.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;CAClC;AAED,gBAAgB;AAChB,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;AAEtH,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAAE,GAC9F;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;CAAE,GAChG;IACA,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACvD,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACvD,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CACvD,CAAA;AA4DH,gBAAgB;AAChB,eAAO,MAAM,cAAc,SACnB,aAAa,CAAC,gBAAgB,CAAC,WAC5B,aAAa,CAAC,gBAAgB,CAAC,kCAEvC,aAAa,CAAC,gBAAgB,CAgFhC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/path.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,gBAAgB;AAChB,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B,gBAAgB;AAChB,eAAO,MAAM,OAAO,OAAO,CAAA;AAE3B,gBAAgB;AAChB,eAAO,MAAM,WAAW,SAAS,CAAA;AAEjC,gBAAgB;AAChB,eAAO,MAAM,UAAU,KAAK,CAAA;AAG5B,gBAAgB;AAChB,eAAO,MAAM,cAAc,MAAM,CAAA;AAKjC,gBAAgB;AAChB,eAAO,MAAM,cAAc,SAAU,MAAM,GAAG,SAAS,KAAG,IAAI,IAAI,SAAS,GAAG,OAAO,OAAO,GAAG,OAAO,WACtC,CAAA;AAEhE,gBAAgB;AAChB,eAAO,MAAM,SAAS,UAAW,UAAU,KAAG,QAA+B,CAAA;AAE7E,gBAAgB;AAChB,eAAO,MAAM,YAAY,UAAW,UAAU,aAAa,MAAM,0CAI7D,CAAA;AAEJ,gBAAgB;AAChB,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,UAAyD,CAAA;AAgBlG,gBAAgB;AAChB,eAAO,MAAM,eAAe,UAAW,UAAU,KAAG,OAC2C,CAAA;AAE/F,gBAAgB;AAChB,eAAO,MAAM,aAAa,iFASxB,CAAA;AAEF,gBAAgB;AAChB,eAAO,MAAM,WAAW,4EAMtB,CAAA;AAEF,gBAAgB;AAChB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC3C;AAoBD,gBAAgB;AAChB,eAAO,MAAM,UAAU,UAAW,SAAS,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,qBAAqB,GAAG,iBAAiB,CAG5B,CAAA;AAErF,gBAAgB;AAChB,eAAO,MAAM,WAAW,UACf,SAAS,aACL,MAAM,gBACH,QAAQ,CAAC,QAAQ,GAAG,SAAS,KAC1C,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAgDrC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"testHooks.d.ts","sourceRoot":"","sources":["../../../src/internal/virtualFileSystem/testHooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAExD,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACxD;AAID,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,aAAc,QAAQ,KAAG,eAAe,GAAG,SAA2C,CAAA;AAErH,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,aAAc,QAAQ,QAAQ,eAAe,KAAG,MAAM,IAMpF,CAAA;AAED,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC7C;AAID,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,WAAY,MAAM,KAAG,gBAAgB,GAAG,SAA0C,CAAA;AAElH,gBAAgB;AAChB,eAAO,MAAM,mBAAmB,WAAY,MAAM,QAAQ,gBAAgB,KAAG,MAAM,IAMlF,CAAA"}
@@ -1 +0,0 @@
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,33 +0,0 @@
1
- // Change broadcasting for Volume.watch: one PubSub per volume, published to only while someone listens.
2
- import * as Effect from "effect/Effect";
3
- import * as PubSub from "effect/PubSub";
4
- import * as Stream from "effect/Stream";
5
- /** @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;
10
- const publishUnsafe = (event) => {
11
- if (activeSubscribers === 0)
12
- return;
13
- PubSub.publishUnsafe(pubsub, event());
14
- };
15
- const publishManyUnsafe = (events) => {
16
- if (activeSubscribers === 0)
17
- return;
18
- for (const event of events())
19
- PubSub.publishUnsafe(pubsub, event);
20
- };
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
- const subscribe = (afterSubscribe) => Effect.acquireRelease(coordinate(Effect.gen(function* () {
24
- const subscription = yield* PubSub.subscribe(pubsub);
25
- if (afterSubscribe !== undefined)
26
- yield* afterSubscribe;
27
- activeSubscribers += 1;
28
- return subscription;
29
- })), () => coordinate(Effect.sync(() => {
30
- activeSubscribers -= 1;
31
- }))).pipe(Effect.map(Stream.fromSubscription));
32
- return { publishUnsafe, publishManyUnsafe, subscribe };
33
- });