@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.
- package/README.md +41 -150
- package/dist/BytePath.d.ts +2 -1
- package/dist/BytePath.d.ts.map +1 -1
- package/dist/LiveVolume.d.ts +104 -0
- package/dist/LiveVolume.d.ts.map +1 -0
- package/dist/LiveVolume.js +73 -0
- package/dist/Snapshot.d.ts +4 -2
- package/dist/Snapshot.d.ts.map +1 -1
- package/dist/Snapshot.js +4 -2
- package/dist/VirtualFileSystem.d.ts +333 -108
- package/dist/VirtualFileSystem.d.ts.map +1 -1
- package/dist/VirtualFileSystem.js +122 -32
- package/dist/VirtualFileSystemError.d.ts +54 -0
- package/dist/VirtualFileSystemError.d.ts.map +1 -0
- package/dist/VirtualFileSystemError.js +49 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/internal/errors.d.ts +12 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/{virtualFileSystem/errors.js → errors.js} +11 -15
- package/dist/internal/{virtualFileSystem/fixture.d.ts → fixture.d.ts} +11 -8
- package/dist/internal/fixture.d.ts.map +1 -0
- package/dist/internal/{virtualFileSystem/fixture.js → fixture.js} +11 -5
- package/dist/internal/liveImage.d.ts +286 -0
- package/dist/internal/liveImage.d.ts.map +1 -0
- package/dist/internal/liveImage.js +176 -0
- package/dist/internal/{virtualFileSystem/overlayContent.d.ts → overlayContent.d.ts} +2 -2
- package/dist/internal/overlayContent.d.ts.map +1 -0
- package/dist/internal/{virtualFileSystem/overlayContent.js → overlayContent.js} +2 -2
- package/dist/internal/{virtualFileSystem/overlayDiff.d.ts → overlayDiff.d.ts} +1 -1
- package/dist/internal/overlayDiff.d.ts.map +1 -0
- package/dist/internal/{virtualFileSystem/overlayDiff.js → overlayDiff.js} +1 -1
- package/dist/internal/{virtualFileSystem/path.d.ts → path.d.ts} +2 -2
- package/dist/internal/path.d.ts.map +1 -0
- package/dist/internal/{virtualFileSystem/path.js → path.js} +1 -1
- package/dist/internal/stagedState.d.ts +22 -0
- package/dist/internal/stagedState.d.ts.map +1 -0
- package/dist/internal/stagedState.js +62 -0
- package/dist/internal/{virtualFileSystem/testHooks.d.ts → testHooks.d.ts} +2 -2
- package/dist/internal/testHooks.d.ts.map +1 -0
- package/dist/internal/virtualFileSystem.d.ts +224 -16
- package/dist/internal/virtualFileSystem.d.ts.map +1 -1
- package/dist/internal/virtualFileSystem.js +1294 -159
- package/dist/internal/{virtualFileSystem/watchHub.d.ts → watchHub.d.ts} +3 -3
- package/dist/internal/watchHub.d.ts.map +1 -0
- package/dist/internal/watchHub.js +54 -0
- package/package.json +14 -6
- package/dist/internal/virtualFileSystem/errors.d.ts +0 -31
- package/dist/internal/virtualFileSystem/errors.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/fixture.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/overlayContent.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/overlayDiff.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/path.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/testHooks.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/watchHub.d.ts.map +0 -1
- package/dist/internal/virtualFileSystem/watchHub.js +0 -33
- /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>,
|
|
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
|
+
"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.
|
|
28
|
+
"effect": "4.0.0-rc.115"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@effect/platform-bun": "4.0.0-rc.
|
|
32
|
-
"@effect/platform-node-shared": "4.0.0-rc.
|
|
33
|
-
"@effect/vitest": "4.0.0-rc.
|
|
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.
|
|
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
|
-
});
|
|
File without changes
|