liminal 0.17.10 → 0.17.12

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 (63) hide show
  1. package/Accumulator.ts +2 -2
  2. package/Actor.ts +2 -2
  3. package/Audition.ts +2 -2
  4. package/CHANGELOG.md +17 -1
  5. package/Client.ts +2 -2
  6. package/ClientDirectory.ts +2 -2
  7. package/Method.ts +6 -6
  8. package/_diagnostic.ts +3 -0
  9. package/_util/socket.ts +20 -0
  10. package/browser/BrowserActorNamespace.ts +213 -0
  11. package/browser/index.ts +1 -0
  12. package/dist/Accumulator.js +2 -2
  13. package/dist/Accumulator.js.map +1 -1
  14. package/dist/Actor.js +2 -2
  15. package/dist/Actor.js.map +1 -1
  16. package/dist/Audition.js +2 -2
  17. package/dist/Audition.js.map +1 -1
  18. package/dist/Client.js +2 -2
  19. package/dist/Client.js.map +1 -1
  20. package/dist/ClientDirectory.js +2 -2
  21. package/dist/ClientDirectory.js.map +1 -1
  22. package/dist/Method.d.ts +4 -4
  23. package/dist/Method.js.map +1 -1
  24. package/dist/_diagnostic.d.ts +4 -0
  25. package/dist/_diagnostic.js +3 -0
  26. package/dist/_diagnostic.js.map +1 -0
  27. package/dist/_util/socket.d.ts +4 -0
  28. package/dist/_util/socket.js +18 -0
  29. package/dist/_util/socket.js.map +1 -0
  30. package/dist/browser/BrowserActorNamespace.d.ts +16 -0
  31. package/dist/browser/BrowserActorNamespace.js +112 -0
  32. package/dist/browser/BrowserActorNamespace.js.map +1 -0
  33. package/dist/browser/index.d.ts +1 -0
  34. package/dist/browser/index.js +2 -0
  35. package/dist/browser/index.js.map +1 -0
  36. package/dist/package.json +47 -0
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/dist/workerd/WorkerdActorNamespace.d.ts +23 -0
  39. package/dist/workerd/WorkerdActorNamespace.js +152 -0
  40. package/dist/workerd/WorkerdActorNamespace.js.map +1 -0
  41. package/dist/workerd/index.d.ts +1 -0
  42. package/dist/workerd/index.js +2 -0
  43. package/dist/workerd/index.js.map +1 -0
  44. package/package.json +20 -3
  45. package/tsconfig.json +5 -3
  46. package/workerd/WorkerdActorNamespace.ts +361 -0
  47. package/workerd/index.ts +1 -0
  48. package/_constants.ts +0 -1
  49. package/_util/Diagnostic.ts +0 -16
  50. package/_util/boundLayer.ts +0 -11
  51. package/_util/logCause.ts +0 -8
  52. package/dist/_constants.d.ts +0 -1
  53. package/dist/_constants.js +0 -2
  54. package/dist/_constants.js.map +0 -1
  55. package/dist/_util/Diagnostic.d.ts +0 -5
  56. package/dist/_util/Diagnostic.js +0 -10
  57. package/dist/_util/Diagnostic.js.map +0 -1
  58. package/dist/_util/boundLayer.d.ts +0 -2
  59. package/dist/_util/boundLayer.js +0 -4
  60. package/dist/_util/boundLayer.js.map +0 -1
  61. package/dist/_util/logCause.d.ts +0 -2
  62. package/dist/_util/logCause.js +0 -7
  63. package/dist/_util/logCause.js.map +0 -1
@@ -0,0 +1,112 @@
1
+ import { BrowserWorkerRunner } from "@effect/platform-browser";
2
+ import { Cause, Effect, Exit, Layer, Option, Ref, Schema as S, Scope, Semaphore, Stream } from "effect";
3
+ import { WorkerRunner } from "effect/unstable/workers";
4
+ import { logCause } from "liminal-util/logCause";
5
+ import { diagnostic } from "../_diagnostic.js";
6
+ import * as ClientDirectory from "../ClientDirectory.js";
7
+ import * as Method from "../Method.js";
8
+ const { debug, span } = diagnostic("browser.BrowserActorNamespace");
9
+ export const make = Effect.fnUntraced(function* ({ actor, handlers, onConnect, introductions, }) {
10
+ const { definition: { client: { protocol: { Client: ClientM, Actor }, key: expected, }, name: Name, }, } = actor;
11
+ const validateClientMessage = S.decodeUnknownEffect(S.toType(ClientM));
12
+ const encodeName = S.encodeEffect(Name);
13
+ const entries = {};
14
+ const runners = new Map();
15
+ const transport = {
16
+ send: (port, event) => runners.get(port)?.send(0, event) ?? Effect.void,
17
+ close: () => Effect.void,
18
+ snapshot: () => Effect.void,
19
+ };
20
+ const useEntries = yield* Semaphore.make(1).pipe(Effect.map((v) => v.withPermits(1)));
21
+ const getEntry = Effect.fnUntraced(function* (key) {
22
+ const existing = entries[key];
23
+ if (existing)
24
+ return existing;
25
+ const directory = ClientDirectory.make(actor, transport);
26
+ const semaphore = yield* Semaphore.make(1);
27
+ const fresh = {
28
+ directory,
29
+ mutex: semaphore.withPermits(1),
30
+ };
31
+ entries[key] = fresh;
32
+ return fresh;
33
+ }, useEntries);
34
+ const outerScope = yield* Scope.Scope;
35
+ yield* introductions.pipe(Stream.runForEach(Effect.fnUntraced(function* ({ name, port, attachments }) {
36
+ yield* debug("IntroductionReceived", { name });
37
+ const stateRef = yield* Ref.make(Option.none());
38
+ const scope = yield* Scope.fork(outerScope, "sequential");
39
+ const closeScope = Scope.close(scope, Exit.void);
40
+ const backing = yield* BrowserWorkerRunner.make(port).start();
41
+ runners.set(port, backing);
42
+ yield* Scope.addFinalizer(scope, Effect.gen(function* () {
43
+ runners.delete(port);
44
+ const state = yield* Ref.get(stateRef);
45
+ if (Option.isSome(state)) {
46
+ const { key, entry: { directory }, } = state.value;
47
+ yield* directory.unregister(port);
48
+ if (directory.handles.size === 0) {
49
+ delete entries[key];
50
+ }
51
+ }
52
+ }).pipe(useEntries));
53
+ yield* backing
54
+ .run(Effect.fnUntraced(function* (_portId, raw) {
55
+ const state = yield* Ref.get(stateRef);
56
+ yield* Effect.gen(function* () {
57
+ const message = yield* validateClientMessage(raw);
58
+ yield* debug("MessageReceived", { message });
59
+ if (Option.isNone(state)) {
60
+ if (message._tag !== "Audition.Payload") {
61
+ return yield* Effect.die(undefined);
62
+ }
63
+ const { client: actual } = message;
64
+ if (actual !== expected) {
65
+ yield* backing.send(0, {
66
+ _tag: "Audition.Failure",
67
+ expected,
68
+ actual,
69
+ });
70
+ return yield* closeScope;
71
+ }
72
+ const key = yield* encodeName(name);
73
+ const entry = yield* getEntry(key);
74
+ const currentClient = Object.assign(yield* entry.directory.register(port, attachments), {
75
+ disconnect: closeScope,
76
+ });
77
+ const ActorLive = Layer.succeed(actor, {
78
+ name,
79
+ clients: entry.directory.handles,
80
+ currentClient,
81
+ });
82
+ yield* Ref.set(stateRef, Option.some({ key, entry, currentClient, ActorLive }));
83
+ yield* backing.send(0, { _tag: "Audition.Success" });
84
+ return yield* onConnect.pipe(entry.mutex, Effect.scoped, span("onConnect"), Effect.provide(ActorLive));
85
+ }
86
+ const { entry, ActorLive } = state.value;
87
+ if (message._tag === "Audition.Payload") {
88
+ return yield* Effect.die(undefined);
89
+ }
90
+ if (message._tag === "Disconnect") {
91
+ return yield* closeScope;
92
+ }
93
+ const { id, payload } = message;
94
+ const { _tag, value } = payload;
95
+ yield* handlers[_tag](value).pipe(Effect.match({
96
+ onSuccess: (value) => ({
97
+ _tag: "F.Success",
98
+ id,
99
+ success: { _tag, value },
100
+ }),
101
+ onFailure: (value) => ({
102
+ _tag: "F.Failure",
103
+ id,
104
+ failure: { _tag, value },
105
+ }),
106
+ }), Effect.andThen((v) => backing.send(0, v)), span("handler", { attributes: { _tag } }), Effect.scoped, Effect.provide(ActorLive), entry.mutex);
107
+ });
108
+ }, span("message")))
109
+ .pipe(Effect.andThen(closeScope), Effect.catchCause((cause) => Cause.hasInterruptsOnly(cause) ? Effect.void : logCause(cause).pipe(Effect.andThen(closeScope))), Effect.forkScoped, Scope.provide(scope));
110
+ })), Effect.tapCause(logCause));
111
+ }, span("make"));
112
+ //# sourceMappingURL=BrowserActorNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserActorNamespace.js","sourceRoot":"","sources":["../../browser/BrowserActorNamespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * as BrowserActorNamespace from "./BrowserActorNamespace.ts";
@@ -0,0 +1,2 @@
1
+ export * as BrowserActorNamespace from "./BrowserActorNamespace.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "liminal",
3
+ "version": "0.17.12",
4
+ "description": "Effect x Actors",
5
+ "bugs": {
6
+ "url": "https://github.com/crosshatch/liminal/issues"
7
+ },
8
+ "license": "Apache-2.0",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/crosshatch/liminal.git",
12
+ "directory": "liminal"
13
+ },
14
+ "type": "module",
15
+ "sideEffects": false,
16
+ "exports": {
17
+ ".": {
18
+ "types": "./index.ts",
19
+ "default": "./dist/index.js"
20
+ },
21
+ "./*": {
22
+ "types": "./*.ts",
23
+ "default": "./dist/*.js"
24
+ },
25
+ "./browser": {
26
+ "types": "./browser/index.ts",
27
+ "default": "./dist/browser/index.js"
28
+ },
29
+ "./experimental": {
30
+ "types": "./experimental/index.ts",
31
+ "default": "./dist/experimental/index.js"
32
+ },
33
+ "./workerd": {
34
+ "types": "./workerd/index.ts",
35
+ "default": "./dist/workerd/index.js"
36
+ },
37
+ "./package.json": "./package.json"
38
+ },
39
+ "peerDependencies": {
40
+ "@cloudflare/workers-types": "catalog:",
41
+ "@effect/platform-browser": "catalog:",
42
+ "@effect/sql-d1": "catalog:",
43
+ "effect": "catalog:",
44
+ "effect-workerd": "workspace:*",
45
+ "liminal-util": "workspace:*"
46
+ }
47
+ }