@effect/platform-browser 0.58.4 → 0.59.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.
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.layerWorker = exports.layerManager = exports.layer = void 0;
6
+ exports.layerWorker = exports.layerPlatform = exports.layerManager = exports.layer = void 0;
7
7
  var internal = _interopRequireWildcard(require("./internal/worker.js"));
8
8
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
9
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -22,4 +22,9 @@ const layerWorker = exports.layerWorker = internal.layerWorker;
22
22
  * @category layers
23
23
  */
24
24
  const layer = exports.layer = internal.layer;
25
+ /**
26
+ * @since 1.0.0
27
+ * @category layers
28
+ */
29
+ const layerPlatform = exports.layerPlatform = internal.layerPlatform;
25
30
  //# sourceMappingURL=BrowserWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorker.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","layerManager","exports","layerWorker","layer"],"sources":["../../src/BrowserWorker.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAChD;;;;AAIO,MAAMW,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAsCvB,QAAQ,CAACuB,YAAY;AAEpF;;;;AAIO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAuCzB,QAAQ,CAACyB,WAAW;AAEnF;;;;AAIO,MAAMC,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAEsD1B,QAAQ,CAAC0B,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"BrowserWorker.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","layerManager","exports","layerWorker","layer","layerPlatform"],"sources":["../../src/BrowserWorker.ts"],"sourcesContent":[null],"mappings":";;;;;;AAKA,IAAAA,QAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAChD;;;;AAIO,MAAMW,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAsCvB,QAAQ,CAACuB,YAAY;AAEpF;;;;AAIO,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAuCzB,QAAQ,CAACyB,WAAW;AAEnF;;;;AAIO,MAAMC,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAEwC1B,QAAQ,CAAC0B,KAAK;AAExE;;;;AAIO,MAAMC,aAAa,GAAAH,OAAA,CAAAG,aAAA,GAEiC3B,QAAQ,CAAC2B,aAAa","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.layerWorker = exports.layerManager = exports.layer = void 0;
6
+ exports.layerWorker = exports.layerPlatform = exports.layerManager = exports.layer = void 0;
7
7
  var Worker = _interopRequireWildcard(require("@effect/platform/Worker"));
8
8
  var _WorkerError = require("@effect/platform/WorkerError");
9
9
  var Deferred = _interopRequireWildcard(require("effect/Deferred"));
@@ -54,5 +54,8 @@ const layerWorker = exports.layerWorker = /*#__PURE__*/Layer.succeed(Worker.Plat
54
54
  const layerManager = exports.layerManager = /*#__PURE__*/Layer.provide(Worker.layerManager, layerWorker);
55
55
  /** @internal */
56
56
  const layer = spawn => Layer.merge(layerManager, Worker.layerSpawner(spawn));
57
+ /** @internal */
57
58
  exports.layer = layer;
59
+ const layerPlatform = spawn => Layer.merge(layerWorker, Worker.layerSpawner(spawn));
60
+ exports.layerPlatform = layerPlatform;
58
61
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","names":["Worker","_interopRequireWildcard","require","_WorkerError","Deferred","Effect","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformWorkerImpl","makePlatform","setup","scope","worker","port","as","addFinalizer","sync","postMessage","listen","deferred","emit","onMessage","event","data","onError","unsafeDone","WorkerError","reason","cause","error","message","addEventListener","start","removeEventListener","layerWorker","exports","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"worker.js","names":["Worker","_interopRequireWildcard","require","_WorkerError","Deferred","Effect","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformWorkerImpl","makePlatform","setup","scope","worker","port","as","addFinalizer","sync","postMessage","listen","deferred","emit","onMessage","event","data","onError","unsafeDone","WorkerError","reason","cause","error","message","addEventListener","start","removeEventListener","layerWorker","exports","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner","layerPlatform"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -13,8 +13,10 @@ var Effect = _interopRequireWildcard(require("effect/Effect"));
13
13
  var ExecStrategy = _interopRequireWildcard(require("effect/ExecutionStrategy"));
14
14
  var Exit = _interopRequireWildcard(require("effect/Exit"));
15
15
  var FiberSet = _interopRequireWildcard(require("effect/FiberSet"));
16
+ var _Function = require("effect/Function");
16
17
  var _GlobalValue = require("effect/GlobalValue");
17
18
  var Layer = _interopRequireWildcard(require("effect/Layer"));
19
+ var Mailbox = _interopRequireWildcard(require("effect/Mailbox"));
18
20
  var Runtime = _interopRequireWildcard(require("effect/Runtime"));
19
21
  var Scope = _interopRequireWildcard(require("effect/Scope"));
20
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -29,107 +31,110 @@ if (typeof self !== "undefined" && "onconnect" in self) {
29
31
  /** @internal */
30
32
  const make = self => Runner.PlatformRunner.of({
31
33
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
32
- start(closeLatch) {
33
- return Effect.sync(() => {
34
- let currentPortId = 0;
35
- const ports = new Map();
36
- const send = (portId, message, transfer) => Effect.sync(() => {
37
- ;
38
- (ports.get(portId)?.[0] ?? self).postMessage([1, message], {
39
- transfer: transfer
40
- });
34
+ start: Effect.fnUntraced(function* (closeLatch) {
35
+ const disconnects = yield* Mailbox.make();
36
+ let currentPortId = 0;
37
+ const ports = new Map();
38
+ const send = (portId, message, transfer) => Effect.sync(() => {
39
+ ;
40
+ (ports.get(portId)?.[0] ?? self).postMessage([1, message], {
41
+ transfer: transfer
41
42
  });
42
- const run = Effect.fnUntraced(function* (handler) {
43
- const scope = yield* Effect.scope;
44
- const runtime = (yield* Effect.interruptible(Effect.runtime())).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
45
- const fiberSet = yield* FiberSet.make();
46
- const runFork = Runtime.runFork(runtime);
47
- function onExit(exit) {
48
- if (exit._tag === "Failure" && !Cause.isInterruptedOnly(exit.cause)) {
49
- Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)));
50
- }
43
+ });
44
+ const run = Effect.fnUntraced(function* (handler) {
45
+ const scope = yield* Effect.scope;
46
+ const runtime = (yield* Effect.interruptible(Effect.runtime())).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
47
+ const fiberSet = yield* FiberSet.make();
48
+ const runFork = Runtime.runFork(runtime);
49
+ function onExit(exit) {
50
+ if (exit._tag === "Failure" && !Cause.isInterruptedOnly(exit.cause)) {
51
+ Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)));
51
52
  }
52
- function onMessage(portId) {
53
- return function (event) {
54
- const message = event.data;
55
- if (message[0] === 0) {
56
- const fiber = runFork(handler(portId, message[1]));
53
+ }
54
+ function onMessage(portId) {
55
+ return function (event) {
56
+ const message = event.data;
57
+ if (message[0] === 0) {
58
+ const result = handler(portId, message[1]);
59
+ if (Effect.isEffect(result)) {
60
+ const fiber = runFork(result);
57
61
  fiber.addObserver(onExit);
58
62
  FiberSet.unsafeAdd(fiberSet, fiber);
59
- } else {
60
- const port = ports.get(portId);
61
- if (!port) {
62
- return;
63
- } else if (ports.size === 1) {
64
- // let the last port close with the outer scope
65
- return Deferred.unsafeDone(closeLatch, Exit.void);
66
- }
67
- ports.delete(portId);
68
- Effect.runFork(Scope.close(port[1], Exit.void));
69
63
  }
70
- };
71
- }
72
- function onMessageError(error) {
73
- Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
74
- reason: "decode",
75
- cause: error.data
76
- }));
77
- }
78
- function onError(error) {
79
- Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
80
- reason: "unknown",
81
- cause: error.data
82
- }));
83
- }
84
- function handlePort(port) {
85
- const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(Effect.flatMap(scope => {
86
- const portId = currentPortId++;
87
- ports.set(portId, [port, scope]);
88
- const onMsg = onMessage(portId);
89
- port.addEventListener("message", onMsg);
90
- port.addEventListener("messageerror", onMessageError);
91
- if ("start" in port) {
92
- port.start();
64
+ } else {
65
+ const port = ports.get(portId);
66
+ if (!port) {
67
+ return;
68
+ } else if (ports.size === 1) {
69
+ // let the last port close with the outer scope
70
+ return Deferred.unsafeDone(closeLatch, Exit.void);
93
71
  }
94
- port.postMessage([0]);
95
- return Scope.addFinalizer(scope, Effect.sync(() => {
96
- port.removeEventListener("message", onMsg);
97
- port.removeEventListener("messageerror", onError);
98
- port.close();
99
- }));
100
- }), runFork);
101
- fiber.addObserver(onExit);
102
- FiberSet.unsafeAdd(fiberSet, fiber);
72
+ ports.delete(portId);
73
+ Effect.runFork(Scope.close(port[1], Exit.void));
74
+ }
75
+ };
76
+ }
77
+ function onMessageError(error) {
78
+ Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
79
+ reason: "decode",
80
+ cause: error.data
81
+ }));
82
+ }
83
+ function onError(error) {
84
+ Deferred.unsafeDone(closeLatch, new _WorkerError.WorkerError({
85
+ reason: "unknown",
86
+ cause: error.data
87
+ }));
88
+ }
89
+ function handlePort(port) {
90
+ const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(Effect.flatMap(scope => {
91
+ const portId = currentPortId++;
92
+ ports.set(portId, [port, scope]);
93
+ const onMsg = onMessage(portId);
94
+ port.addEventListener("message", onMsg);
95
+ port.addEventListener("messageerror", onMessageError);
96
+ if ("start" in port) {
97
+ port.start();
98
+ }
99
+ port.postMessage([0]);
100
+ return Scope.addFinalizer(scope, Effect.sync(() => {
101
+ port.removeEventListener("message", onMsg);
102
+ port.removeEventListener("messageerror", onError);
103
+ port.close();
104
+ }));
105
+ }), runFork);
106
+ fiber.addObserver(onExit);
107
+ FiberSet.unsafeAdd(fiberSet, fiber);
108
+ }
109
+ self.addEventListener("error", onError);
110
+ let prevOnConnect;
111
+ if ("onconnect" in self) {
112
+ prevOnConnect = self.onconnect;
113
+ self.onconnect = function (event) {
114
+ const port = event.ports[0];
115
+ handlePort(port);
116
+ };
117
+ for (const port of cachedPorts) {
118
+ handlePort(port);
103
119
  }
104
- self.addEventListener("error", onError);
105
- let prevOnConnect;
120
+ cachedPorts.clear();
121
+ yield* Scope.addFinalizer(scope, Effect.sync(() => self.close()));
122
+ } else {
123
+ handlePort(self);
124
+ }
125
+ yield* Scope.addFinalizer(scope, Effect.sync(() => {
126
+ self.removeEventListener("error", onError);
106
127
  if ("onconnect" in self) {
107
- prevOnConnect = self.onconnect;
108
- self.onconnect = function (event) {
109
- const port = event.ports[0];
110
- handlePort(port);
111
- };
112
- for (const port of cachedPorts) {
113
- handlePort(port);
114
- }
115
- cachedPorts.clear();
116
- yield* Scope.addFinalizer(scope, Effect.sync(() => self.close()));
117
- } else {
118
- handlePort(self);
128
+ self.onconnect = prevOnConnect;
119
129
  }
120
- yield* Scope.addFinalizer(scope, Effect.sync(() => {
121
- self.removeEventListener("error", onError);
122
- if ("onconnect" in self) {
123
- self.onconnect = prevOnConnect;
124
- }
125
- }));
126
- });
127
- return {
128
- run,
129
- send
130
- };
130
+ }));
131
+ });
132
+ return (0, _Function.identity)({
133
+ run,
134
+ send,
135
+ disconnects
131
136
  });
132
- }
137
+ })
133
138
  });
134
139
  /** @internal */
135
140
  exports.make = make;
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["_WorkerError","require","Runner","_interopRequireWildcard","Cause","Context","Deferred","Effect","ExecStrategy","Exit","FiberSet","_GlobalValue","Layer","Runtime","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","cachedPorts","globalValue","Set","globalHandleConnect","event","add","ports","self","onconnect","make","PlatformRunner","of","PlatformRunnerTypeId","start","closeLatch","sync","currentPortId","Map","send","portId","message","transfer","postMessage","run","fnUntraced","handler","scope","runtime","interruptible","pipe","updateContext","omit","fiberSet","runFork","onExit","exit","_tag","isInterruptedOnly","cause","unsafeDone","die","squash","onMessage","data","fiber","addObserver","unsafeAdd","port","size","void","delete","close","onMessageError","error","WorkerError","reason","onError","handlePort","fork","sequential","flatMap","onMsg","addEventListener","addFinalizer","removeEventListener","prevOnConnect","clear","exports","layerMessagePort","succeed","layer"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"workerRunner.js","names":["_WorkerError","require","Runner","_interopRequireWildcard","Cause","Context","Deferred","Effect","ExecStrategy","Exit","FiberSet","_Function","_GlobalValue","Layer","Mailbox","Runtime","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","cachedPorts","globalValue","Set","globalHandleConnect","event","add","ports","self","onconnect","make","PlatformRunner","of","PlatformRunnerTypeId","start","fnUntraced","closeLatch","disconnects","currentPortId","Map","send","portId","message","transfer","sync","postMessage","run","handler","scope","runtime","interruptible","pipe","updateContext","omit","fiberSet","runFork","onExit","exit","_tag","isInterruptedOnly","cause","unsafeDone","die","squash","onMessage","data","result","isEffect","fiber","addObserver","unsafeAdd","port","size","void","delete","close","onMessageError","error","WorkerError","reason","onError","handlePort","fork","sequential","flatMap","onMsg","addEventListener","addFinalizer","removeEventListener","prevOnConnect","clear","identity","exports","layerMessagePort","succeed","layer"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -17,5 +17,10 @@ export declare const layerWorker: Layer.Layer<Worker.PlatformWorker>;
17
17
  * @since 1.0.0
18
18
  * @category layers
19
19
  */
20
- export declare const layer: (spawn: (id: number) => Worker | SharedWorker | MessagePort) => Layer.Layer<Worker.WorkerManager | Worker.Spawner, never, never>;
20
+ export declare const layer: (spawn: (id: number) => Worker | SharedWorker | MessagePort) => Layer.Layer<Worker.WorkerManager | Worker.Spawner>;
21
+ /**
22
+ * @since 1.0.0
23
+ * @category layers
24
+ */
25
+ export declare const layerPlatform: (spawn: (id: number) => globalThis.Worker | globalThis.SharedWorker | MessagePort) => Layer.Layer<Worker.PlatformWorker | Worker.Spawner>;
21
26
  //# sourceMappingURL=BrowserWorker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../../src/BrowserWorker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAyB,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAwB,CAAA;AAEnF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,KACvD,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAkB,CAAA"}
1
+ {"version":3,"file":"BrowserWorker.d.ts","sourceRoot":"","sources":["../../src/BrowserWorker.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAyB,CAAA;AAEpF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAwB,CAAA;AAEnF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAClB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,KACvD,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAkB,CAAA;AAExE;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,CAC1B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,YAAY,GAAG,WAAW,KAC7E,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAA0B,CAAA"}
@@ -14,4 +14,9 @@ export const layerWorker = internal.layerWorker;
14
14
  * @category layers
15
15
  */
16
16
  export const layer = internal.layer;
17
+ /**
18
+ * @since 1.0.0
19
+ * @category layers
20
+ */
21
+ export const layerPlatform = internal.layerPlatform;
17
22
  //# sourceMappingURL=BrowserWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserWorker.js","names":["internal","layerManager","layerWorker","layer"],"sources":["../../src/BrowserWorker.ts"],"sourcesContent":[null],"mappings":"AAKA,OAAO,KAAKA,QAAQ,MAAM,sBAAsB;AAChD;;;;AAIA,OAAO,MAAMC,YAAY,GAAsCD,QAAQ,CAACC,YAAY;AAEpF;;;;AAIA,OAAO,MAAMC,WAAW,GAAuCF,QAAQ,CAACE,WAAW;AAEnF;;;;AAIA,OAAO,MAAMC,KAAK,GAEsDH,QAAQ,CAACG,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"BrowserWorker.js","names":["internal","layerManager","layerWorker","layer","layerPlatform"],"sources":["../../src/BrowserWorker.ts"],"sourcesContent":[null],"mappings":"AAKA,OAAO,KAAKA,QAAQ,MAAM,sBAAsB;AAChD;;;;AAIA,OAAO,MAAMC,YAAY,GAAsCD,QAAQ,CAACC,YAAY;AAEpF;;;;AAIA,OAAO,MAAMC,WAAW,GAAuCF,QAAQ,CAACE,WAAW;AAEnF;;;;AAIA,OAAO,MAAMC,KAAK,GAEwCH,QAAQ,CAACG,KAAK;AAExE;;;;AAIA,OAAO,MAAMC,aAAa,GAEiCJ,QAAQ,CAACI,aAAa","ignoreList":[]}
@@ -46,4 +46,6 @@ export const layerWorker = /*#__PURE__*/Layer.succeed(Worker.PlatformWorker, pla
46
46
  export const layerManager = /*#__PURE__*/Layer.provide(Worker.layerManager, layerWorker);
47
47
  /** @internal */
48
48
  export const layer = spawn => Layer.merge(layerManager, Worker.layerSpawner(spawn));
49
+ /** @internal */
50
+ export const layerPlatform = spawn => Layer.merge(layerWorker, Worker.layerSpawner(spawn));
49
51
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","names":["Worker","WorkerError","Deferred","Effect","Layer","Scope","platformWorkerImpl","makePlatform","setup","scope","worker","port","as","addFinalizer","sync","postMessage","listen","deferred","emit","onMessage","event","data","onError","unsafeDone","reason","cause","error","message","addEventListener","start","removeEventListener","layerWorker","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,yBAAyB;AACjD,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,kBAAkB,gBAAGN,MAAM,CAACO,YAAY,EAA6D,CAAC;EAC1GC,KAAKA,CAAC;IAAEC,KAAK;IAAEC;EAAM,CAAE;IACrB,MAAMC,IAAI,GAAG,MAAM,IAAID,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAGD,MAAM;IACpD,OAAOP,MAAM,CAACS,EAAE,CACdP,KAAK,CAACQ,YAAY,CAChBJ,KAAK,EACLN,MAAM,CAACW,IAAI,CAAC,MAAK;MACfH,IAAI,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CACH,EACDJ,IAAI,CACL;EACH,CAAC;EACDK,MAAMA,CAAC;IAAEC,QAAQ;IAAEC,IAAI;IAAEP,IAAI;IAAEF;EAAK,CAAE;IACpC,SAASU,SAASA,CAACC,KAAmB;MACpCF,IAAI,CAACE,KAAK,CAACC,IAAI,CAAC;IAClB;IACA,SAASC,OAAOA,CAACF,KAAiB;MAChClB,QAAQ,CAACqB,UAAU,CACjBN,QAAQ,EACR,IAAIhB,WAAW,CAAC;QAAEuB,MAAM,EAAE,SAAS;QAAEC,KAAK,EAAEL,KAAK,CAACM,KAAK,IAAIN,KAAK,CAACO;MAAO,CAAE,CAAC,CAC5E;IACH;IACAhB,IAAI,CAACiB,gBAAgB,CAAC,SAAS,EAAET,SAAgB,CAAC;IAClDR,IAAI,CAACiB,gBAAgB,CAAC,OAAO,EAAEN,OAAc,CAAC;IAC9C,IAAI,OAAO,IAAIX,IAAI,EAAE;MACnBA,IAAI,CAACkB,KAAK,EAAE;IACd;IACA,OAAOxB,KAAK,CAACQ,YAAY,CACvBJ,KAAK,EACLN,MAAM,CAACW,IAAI,CAAC,MAAK;MACfH,IAAI,CAACmB,mBAAmB,CAAC,SAAS,EAAEX,SAAgB,CAAC;MACrDR,IAAI,CAACmB,mBAAmB,CAAC,OAAO,EAAER,OAAc,CAAC;IACnD,CAAC,CAAC,CACH;EACH;CACD,CAAC;AAEF;AACA,OAAO,MAAMS,WAAW,gBAAG3B,KAAK,CAAC4B,OAAO,CAAChC,MAAM,CAACiC,cAAc,EAAE3B,kBAAkB,CAAC;AAEnF;AACA,OAAO,MAAM4B,YAAY,gBAAG9B,KAAK,CAAC+B,OAAO,CAACnC,MAAM,CAACkC,YAAY,EAAEH,WAAW,CAAC;AAE3E;AACA,OAAO,MAAMK,KAAK,GAAIC,KAAgF,IACpGjC,KAAK,CAACkC,KAAK,CAACJ,YAAY,EAAElC,MAAM,CAACuC,YAAY,CAACF,KAAK,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"worker.js","names":["Worker","WorkerError","Deferred","Effect","Layer","Scope","platformWorkerImpl","makePlatform","setup","scope","worker","port","as","addFinalizer","sync","postMessage","listen","deferred","emit","onMessage","event","data","onError","unsafeDone","reason","cause","error","message","addEventListener","start","removeEventListener","layerWorker","succeed","PlatformWorker","layerManager","provide","layer","spawn","merge","layerSpawner","layerPlatform"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,yBAAyB;AACjD,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,kBAAkB,gBAAGN,MAAM,CAACO,YAAY,EAA6D,CAAC;EAC1GC,KAAKA,CAAC;IAAEC,KAAK;IAAEC;EAAM,CAAE;IACrB,MAAMC,IAAI,GAAG,MAAM,IAAID,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAGD,MAAM;IACpD,OAAOP,MAAM,CAACS,EAAE,CACdP,KAAK,CAACQ,YAAY,CAChBJ,KAAK,EACLN,MAAM,CAACW,IAAI,CAAC,MAAK;MACfH,IAAI,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CACH,EACDJ,IAAI,CACL;EACH,CAAC;EACDK,MAAMA,CAAC;IAAEC,QAAQ;IAAEC,IAAI;IAAEP,IAAI;IAAEF;EAAK,CAAE;IACpC,SAASU,SAASA,CAACC,KAAmB;MACpCF,IAAI,CAACE,KAAK,CAACC,IAAI,CAAC;IAClB;IACA,SAASC,OAAOA,CAACF,KAAiB;MAChClB,QAAQ,CAACqB,UAAU,CACjBN,QAAQ,EACR,IAAIhB,WAAW,CAAC;QAAEuB,MAAM,EAAE,SAAS;QAAEC,KAAK,EAAEL,KAAK,CAACM,KAAK,IAAIN,KAAK,CAACO;MAAO,CAAE,CAAC,CAC5E;IACH;IACAhB,IAAI,CAACiB,gBAAgB,CAAC,SAAS,EAAET,SAAgB,CAAC;IAClDR,IAAI,CAACiB,gBAAgB,CAAC,OAAO,EAAEN,OAAc,CAAC;IAC9C,IAAI,OAAO,IAAIX,IAAI,EAAE;MACnBA,IAAI,CAACkB,KAAK,EAAE;IACd;IACA,OAAOxB,KAAK,CAACQ,YAAY,CACvBJ,KAAK,EACLN,MAAM,CAACW,IAAI,CAAC,MAAK;MACfH,IAAI,CAACmB,mBAAmB,CAAC,SAAS,EAAEX,SAAgB,CAAC;MACrDR,IAAI,CAACmB,mBAAmB,CAAC,OAAO,EAAER,OAAc,CAAC;IACnD,CAAC,CAAC,CACH;EACH;CACD,CAAC;AAEF;AACA,OAAO,MAAMS,WAAW,gBAAG3B,KAAK,CAAC4B,OAAO,CAAChC,MAAM,CAACiC,cAAc,EAAE3B,kBAAkB,CAAC;AAEnF;AACA,OAAO,MAAM4B,YAAY,gBAAG9B,KAAK,CAAC+B,OAAO,CAACnC,MAAM,CAACkC,YAAY,EAAEH,WAAW,CAAC;AAE3E;AACA,OAAO,MAAMK,KAAK,GAAIC,KAAgF,IACpGjC,KAAK,CAACkC,KAAK,CAACJ,YAAY,EAAElC,MAAM,CAACuC,YAAY,CAACF,KAAK,CAAC,CAAC;AAEvD;AACA,OAAO,MAAMG,aAAa,GAAIH,KAAgF,IAC5GjC,KAAK,CAACkC,KAAK,CAACP,WAAW,EAAE/B,MAAM,CAACuC,YAAY,CAACF,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -7,8 +7,10 @@ import * as Effect from "effect/Effect";
7
7
  import * as ExecStrategy from "effect/ExecutionStrategy";
8
8
  import * as Exit from "effect/Exit";
9
9
  import * as FiberSet from "effect/FiberSet";
10
+ import { identity } from "effect/Function";
10
11
  import { globalValue } from "effect/GlobalValue";
11
12
  import * as Layer from "effect/Layer";
13
+ import * as Mailbox from "effect/Mailbox";
12
14
  import * as Runtime from "effect/Runtime";
13
15
  import * as Scope from "effect/Scope";
14
16
  const cachedPorts = /*#__PURE__*/globalValue("@effect/platform-browser/Worker/cachedPorts", () => new Set());
@@ -21,107 +23,110 @@ if (typeof self !== "undefined" && "onconnect" in self) {
21
23
  /** @internal */
22
24
  export const make = self => Runner.PlatformRunner.of({
23
25
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
24
- start(closeLatch) {
25
- return Effect.sync(() => {
26
- let currentPortId = 0;
27
- const ports = new Map();
28
- const send = (portId, message, transfer) => Effect.sync(() => {
29
- ;
30
- (ports.get(portId)?.[0] ?? self).postMessage([1, message], {
31
- transfer: transfer
32
- });
26
+ start: Effect.fnUntraced(function* (closeLatch) {
27
+ const disconnects = yield* Mailbox.make();
28
+ let currentPortId = 0;
29
+ const ports = new Map();
30
+ const send = (portId, message, transfer) => Effect.sync(() => {
31
+ ;
32
+ (ports.get(portId)?.[0] ?? self).postMessage([1, message], {
33
+ transfer: transfer
33
34
  });
34
- const run = Effect.fnUntraced(function* (handler) {
35
- const scope = yield* Effect.scope;
36
- const runtime = (yield* Effect.interruptible(Effect.runtime())).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
37
- const fiberSet = yield* FiberSet.make();
38
- const runFork = Runtime.runFork(runtime);
39
- function onExit(exit) {
40
- if (exit._tag === "Failure" && !Cause.isInterruptedOnly(exit.cause)) {
41
- Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)));
42
- }
35
+ });
36
+ const run = Effect.fnUntraced(function* (handler) {
37
+ const scope = yield* Effect.scope;
38
+ const runtime = (yield* Effect.interruptible(Effect.runtime())).pipe(Runtime.updateContext(Context.omit(Scope.Scope)));
39
+ const fiberSet = yield* FiberSet.make();
40
+ const runFork = Runtime.runFork(runtime);
41
+ function onExit(exit) {
42
+ if (exit._tag === "Failure" && !Cause.isInterruptedOnly(exit.cause)) {
43
+ Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)));
43
44
  }
44
- function onMessage(portId) {
45
- return function (event) {
46
- const message = event.data;
47
- if (message[0] === 0) {
48
- const fiber = runFork(handler(portId, message[1]));
45
+ }
46
+ function onMessage(portId) {
47
+ return function (event) {
48
+ const message = event.data;
49
+ if (message[0] === 0) {
50
+ const result = handler(portId, message[1]);
51
+ if (Effect.isEffect(result)) {
52
+ const fiber = runFork(result);
49
53
  fiber.addObserver(onExit);
50
54
  FiberSet.unsafeAdd(fiberSet, fiber);
51
- } else {
52
- const port = ports.get(portId);
53
- if (!port) {
54
- return;
55
- } else if (ports.size === 1) {
56
- // let the last port close with the outer scope
57
- return Deferred.unsafeDone(closeLatch, Exit.void);
58
- }
59
- ports.delete(portId);
60
- Effect.runFork(Scope.close(port[1], Exit.void));
61
55
  }
62
- };
63
- }
64
- function onMessageError(error) {
65
- Deferred.unsafeDone(closeLatch, new WorkerError({
66
- reason: "decode",
67
- cause: error.data
68
- }));
69
- }
70
- function onError(error) {
71
- Deferred.unsafeDone(closeLatch, new WorkerError({
72
- reason: "unknown",
73
- cause: error.data
74
- }));
75
- }
76
- function handlePort(port) {
77
- const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(Effect.flatMap(scope => {
78
- const portId = currentPortId++;
79
- ports.set(portId, [port, scope]);
80
- const onMsg = onMessage(portId);
81
- port.addEventListener("message", onMsg);
82
- port.addEventListener("messageerror", onMessageError);
83
- if ("start" in port) {
84
- port.start();
56
+ } else {
57
+ const port = ports.get(portId);
58
+ if (!port) {
59
+ return;
60
+ } else if (ports.size === 1) {
61
+ // let the last port close with the outer scope
62
+ return Deferred.unsafeDone(closeLatch, Exit.void);
85
63
  }
86
- port.postMessage([0]);
87
- return Scope.addFinalizer(scope, Effect.sync(() => {
88
- port.removeEventListener("message", onMsg);
89
- port.removeEventListener("messageerror", onError);
90
- port.close();
91
- }));
92
- }), runFork);
93
- fiber.addObserver(onExit);
94
- FiberSet.unsafeAdd(fiberSet, fiber);
64
+ ports.delete(portId);
65
+ Effect.runFork(Scope.close(port[1], Exit.void));
66
+ }
67
+ };
68
+ }
69
+ function onMessageError(error) {
70
+ Deferred.unsafeDone(closeLatch, new WorkerError({
71
+ reason: "decode",
72
+ cause: error.data
73
+ }));
74
+ }
75
+ function onError(error) {
76
+ Deferred.unsafeDone(closeLatch, new WorkerError({
77
+ reason: "unknown",
78
+ cause: error.data
79
+ }));
80
+ }
81
+ function handlePort(port) {
82
+ const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(Effect.flatMap(scope => {
83
+ const portId = currentPortId++;
84
+ ports.set(portId, [port, scope]);
85
+ const onMsg = onMessage(portId);
86
+ port.addEventListener("message", onMsg);
87
+ port.addEventListener("messageerror", onMessageError);
88
+ if ("start" in port) {
89
+ port.start();
90
+ }
91
+ port.postMessage([0]);
92
+ return Scope.addFinalizer(scope, Effect.sync(() => {
93
+ port.removeEventListener("message", onMsg);
94
+ port.removeEventListener("messageerror", onError);
95
+ port.close();
96
+ }));
97
+ }), runFork);
98
+ fiber.addObserver(onExit);
99
+ FiberSet.unsafeAdd(fiberSet, fiber);
100
+ }
101
+ self.addEventListener("error", onError);
102
+ let prevOnConnect;
103
+ if ("onconnect" in self) {
104
+ prevOnConnect = self.onconnect;
105
+ self.onconnect = function (event) {
106
+ const port = event.ports[0];
107
+ handlePort(port);
108
+ };
109
+ for (const port of cachedPorts) {
110
+ handlePort(port);
95
111
  }
96
- self.addEventListener("error", onError);
97
- let prevOnConnect;
112
+ cachedPorts.clear();
113
+ yield* Scope.addFinalizer(scope, Effect.sync(() => self.close()));
114
+ } else {
115
+ handlePort(self);
116
+ }
117
+ yield* Scope.addFinalizer(scope, Effect.sync(() => {
118
+ self.removeEventListener("error", onError);
98
119
  if ("onconnect" in self) {
99
- prevOnConnect = self.onconnect;
100
- self.onconnect = function (event) {
101
- const port = event.ports[0];
102
- handlePort(port);
103
- };
104
- for (const port of cachedPorts) {
105
- handlePort(port);
106
- }
107
- cachedPorts.clear();
108
- yield* Scope.addFinalizer(scope, Effect.sync(() => self.close()));
109
- } else {
110
- handlePort(self);
120
+ self.onconnect = prevOnConnect;
111
121
  }
112
- yield* Scope.addFinalizer(scope, Effect.sync(() => {
113
- self.removeEventListener("error", onError);
114
- if ("onconnect" in self) {
115
- self.onconnect = prevOnConnect;
116
- }
117
- }));
118
- });
119
- return {
120
- run,
121
- send
122
- };
122
+ }));
123
+ });
124
+ return identity({
125
+ run,
126
+ send,
127
+ disconnects
123
128
  });
124
- }
129
+ })
125
130
  });
126
131
  /** @internal */
127
132
  export const layerMessagePort = port => Layer.succeed(Runner.PlatformRunner, make(port));
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Context","Deferred","Effect","ExecStrategy","Exit","FiberSet","globalValue","Layer","Runtime","Scope","cachedPorts","Set","globalHandleConnect","event","add","ports","self","onconnect","make","PlatformRunner","of","PlatformRunnerTypeId","start","closeLatch","sync","currentPortId","Map","send","portId","message","transfer","get","postMessage","run","fnUntraced","handler","scope","runtime","interruptible","pipe","updateContext","omit","fiberSet","runFork","onExit","exit","_tag","isInterruptedOnly","cause","unsafeDone","die","squash","onMessage","data","fiber","addObserver","unsafeAdd","port","size","void","delete","close","onMessageError","error","reason","onError","handlePort","fork","sequential","flatMap","set","onMsg","addEventListener","addFinalizer","removeEventListener","prevOnConnect","clear","layerMessagePort","succeed","layer"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Context","Deferred","Effect","ExecStrategy","Exit","FiberSet","identity","globalValue","Layer","Mailbox","Runtime","Scope","cachedPorts","Set","globalHandleConnect","event","add","ports","self","onconnect","make","PlatformRunner","of","PlatformRunnerTypeId","start","fnUntraced","closeLatch","disconnects","currentPortId","Map","send","portId","message","transfer","sync","get","postMessage","run","handler","scope","runtime","interruptible","pipe","updateContext","omit","fiberSet","runFork","onExit","exit","_tag","isInterruptedOnly","cause","unsafeDone","die","squash","onMessage","data","result","isEffect","fiber","addObserver","unsafeAdd","port","size","void","delete","close","onMessageError","error","reason","onError","handlePort","fork","sequential","flatMap","set","onMsg","addEventListener","addFinalizer","removeEventListener","prevOnConnect","clear","layerMessagePort","succeed","layer"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform-browser",
3
- "version": "0.58.4",
3
+ "version": "0.59.0",
4
4
  "description": "Platform specific implementations for the browser",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -13,8 +13,8 @@
13
13
  "multipasta": "^0.2.5"
14
14
  },
15
15
  "peerDependencies": {
16
- "@effect/platform": "^0.79.4",
17
- "effect": "^3.13.12"
16
+ "@effect/platform": "^0.80.0",
17
+ "effect": "^3.14.0"
18
18
  },
19
19
  "publishConfig": {
20
20
  "provenance": true
@@ -22,4 +22,12 @@ export const layerWorker: Layer.Layer<Worker.PlatformWorker> = internal.layerWor
22
22
  */
23
23
  export const layer: (
24
24
  spawn: (id: number) => Worker | SharedWorker | MessagePort
25
- ) => Layer.Layer<Worker.WorkerManager | Worker.Spawner, never, never> = internal.layer
25
+ ) => Layer.Layer<Worker.WorkerManager | Worker.Spawner> = internal.layer
26
+
27
+ /**
28
+ * @since 1.0.0
29
+ * @category layers
30
+ */
31
+ export const layerPlatform: (
32
+ spawn: (id: number) => globalThis.Worker | globalThis.SharedWorker | MessagePort
33
+ ) => Layer.Layer<Worker.PlatformWorker | Worker.Spawner> = internal.layerPlatform
@@ -52,3 +52,7 @@ export const layerManager = Layer.provide(Worker.layerManager, layerWorker)
52
52
  /** @internal */
53
53
  export const layer = (spawn: (id: number) => globalThis.Worker | globalThis.SharedWorker | MessagePort) =>
54
54
  Layer.merge(layerManager, Worker.layerSpawner(spawn))
55
+
56
+ /** @internal */
57
+ export const layerPlatform = (spawn: (id: number) => globalThis.Worker | globalThis.SharedWorker | MessagePort) =>
58
+ Layer.merge(layerWorker, Worker.layerSpawner(spawn))
@@ -7,8 +7,10 @@ import * as Effect from "effect/Effect"
7
7
  import * as ExecStrategy from "effect/ExecutionStrategy"
8
8
  import * as Exit from "effect/Exit"
9
9
  import * as FiberSet from "effect/FiberSet"
10
+ import { identity } from "effect/Function"
10
11
  import { globalValue } from "effect/GlobalValue"
11
12
  import * as Layer from "effect/Layer"
13
+ import * as Mailbox from "effect/Mailbox"
12
14
  import * as Runtime from "effect/Runtime"
13
15
  import * as Scope from "effect/Scope"
14
16
 
@@ -24,124 +26,126 @@ if (typeof self !== "undefined" && "onconnect" in self) {
24
26
  export const make = (self: MessagePort | Window) =>
25
27
  Runner.PlatformRunner.of({
26
28
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
27
- start<I, O>(closeLatch: Deferred.Deferred<void, WorkerError>) {
28
- return Effect.sync(() => {
29
- let currentPortId = 0
29
+ start: Effect.fnUntraced(function*<I, O>(closeLatch: Deferred.Deferred<void, WorkerError>) {
30
+ const disconnects = yield* Mailbox.make<number>()
31
+ let currentPortId = 0
30
32
 
31
- const ports = new Map<number, readonly [MessagePort, Scope.CloseableScope]>()
32
- const send = (portId: number, message: O, transfer?: ReadonlyArray<unknown>) =>
33
- Effect.sync(() => {
34
- ;(ports.get(portId)?.[0] ?? self).postMessage([1, message], {
35
- transfer: transfer as any
36
- })
33
+ const ports = new Map<number, readonly [MessagePort, Scope.CloseableScope]>()
34
+ const send = (portId: number, message: O, transfer?: ReadonlyArray<unknown>) =>
35
+ Effect.sync(() => {
36
+ ;(ports.get(portId)?.[0] ?? self).postMessage([1, message], {
37
+ transfer: transfer as any
37
38
  })
39
+ })
38
40
 
39
- const run = Effect.fnUntraced(function*<A, E, R>(
40
- handler: (portId: number, message: I) => Effect.Effect<A, E, R>
41
- ) {
42
- const scope = yield* Effect.scope
43
- const runtime = (yield* Effect.interruptible(Effect.runtime<R | Scope.Scope>())).pipe(
44
- Runtime.updateContext(Context.omit(Scope.Scope))
45
- ) as Runtime.Runtime<R>
46
- const fiberSet = yield* FiberSet.make<any, WorkerError | E>()
47
- const runFork = Runtime.runFork(runtime)
48
- function onExit(exit: Exit.Exit<any, E>) {
49
- if (exit._tag === "Failure" && !Cause.isInterruptedOnly(exit.cause)) {
50
- Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)))
51
- }
41
+ const run = Effect.fnUntraced(function*<A, E, R>(
42
+ handler: (portId: number, message: I) => Effect.Effect<A, E, R> | void
43
+ ) {
44
+ const scope = yield* Effect.scope
45
+ const runtime = (yield* Effect.interruptible(Effect.runtime<R | Scope.Scope>())).pipe(
46
+ Runtime.updateContext(Context.omit(Scope.Scope))
47
+ ) as Runtime.Runtime<R>
48
+ const fiberSet = yield* FiberSet.make<any, WorkerError | E>()
49
+ const runFork = Runtime.runFork(runtime)
50
+ function onExit(exit: Exit.Exit<any, E>) {
51
+ if (exit._tag === "Failure" && !Cause.isInterruptedOnly(exit.cause)) {
52
+ Deferred.unsafeDone(closeLatch, Exit.die(Cause.squash(exit.cause)))
52
53
  }
54
+ }
53
55
 
54
- function onMessage(portId: number) {
55
- return function(event: MessageEvent) {
56
- const message = (event as MessageEvent).data as Runner.BackingRunner.Message<I>
57
- if (message[0] === 0) {
58
- const fiber = runFork(handler(portId, message[1]))
56
+ function onMessage(portId: number) {
57
+ return function(event: MessageEvent) {
58
+ const message = event.data as Runner.BackingRunner.Message<I>
59
+ if (message[0] === 0) {
60
+ const result = handler(portId, message[1])
61
+ if (Effect.isEffect(result)) {
62
+ const fiber = runFork(result)
59
63
  fiber.addObserver(onExit)
60
64
  FiberSet.unsafeAdd(fiberSet, fiber)
61
- } else {
62
- const port = ports.get(portId)
63
- if (!port) {
64
- return
65
- } else if (ports.size === 1) {
66
- // let the last port close with the outer scope
67
- return Deferred.unsafeDone(closeLatch, Exit.void)
68
- }
69
- ports.delete(portId)
70
- Effect.runFork(Scope.close(port[1], Exit.void))
71
65
  }
66
+ } else {
67
+ const port = ports.get(portId)
68
+ if (!port) {
69
+ return
70
+ } else if (ports.size === 1) {
71
+ // let the last port close with the outer scope
72
+ return Deferred.unsafeDone(closeLatch, Exit.void)
73
+ }
74
+ ports.delete(portId)
75
+ Effect.runFork(Scope.close(port[1], Exit.void))
72
76
  }
73
77
  }
74
- function onMessageError(error: MessageEvent) {
75
- Deferred.unsafeDone(
76
- closeLatch,
77
- new WorkerError({ reason: "decode", cause: error.data })
78
- )
79
- }
80
- function onError(error: any) {
81
- Deferred.unsafeDone(
82
- closeLatch,
83
- new WorkerError({ reason: "unknown", cause: error.data })
84
- )
78
+ }
79
+ function onMessageError(error: MessageEvent) {
80
+ Deferred.unsafeDone(
81
+ closeLatch,
82
+ new WorkerError({ reason: "decode", cause: error.data })
83
+ )
84
+ }
85
+ function onError(error: any) {
86
+ Deferred.unsafeDone(
87
+ closeLatch,
88
+ new WorkerError({ reason: "unknown", cause: error.data })
89
+ )
90
+ }
91
+ function handlePort(port: MessagePort) {
92
+ const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(
93
+ Effect.flatMap((scope) => {
94
+ const portId = currentPortId++
95
+ ports.set(portId, [port, scope])
96
+ const onMsg = onMessage(portId)
97
+ port.addEventListener("message", onMsg)
98
+ port.addEventListener("messageerror", onMessageError)
99
+ if ("start" in port) {
100
+ port.start()
101
+ }
102
+ port.postMessage([0])
103
+ return Scope.addFinalizer(
104
+ scope,
105
+ Effect.sync(() => {
106
+ port.removeEventListener("message", onMsg)
107
+ port.removeEventListener("messageerror", onError)
108
+ port.close()
109
+ })
110
+ )
111
+ }),
112
+ runFork
113
+ )
114
+ fiber.addObserver(onExit)
115
+ FiberSet.unsafeAdd(fiberSet, fiber)
116
+ }
117
+ self.addEventListener("error", onError)
118
+ let prevOnConnect: unknown | undefined
119
+ if ("onconnect" in self) {
120
+ prevOnConnect = self.onconnect
121
+ self.onconnect = function(event: MessageEvent) {
122
+ const port = (event as MessageEvent).ports[0]
123
+ handlePort(port)
85
124
  }
86
- function handlePort(port: MessagePort) {
87
- const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(
88
- Effect.flatMap((scope) => {
89
- const portId = currentPortId++
90
- ports.set(portId, [port, scope])
91
- const onMsg = onMessage(portId)
92
- port.addEventListener("message", onMsg)
93
- port.addEventListener("messageerror", onMessageError)
94
- if ("start" in port) {
95
- port.start()
96
- }
97
- port.postMessage([0])
98
- return Scope.addFinalizer(
99
- scope,
100
- Effect.sync(() => {
101
- port.removeEventListener("message", onMsg)
102
- port.removeEventListener("messageerror", onError)
103
- port.close()
104
- })
105
- )
106
- }),
107
- runFork
108
- )
109
- fiber.addObserver(onExit)
110
- FiberSet.unsafeAdd(fiberSet, fiber)
111
- }
112
- self.addEventListener("error", onError)
113
- let prevOnConnect: unknown | undefined
114
- if ("onconnect" in self) {
115
- prevOnConnect = self.onconnect
116
- self.onconnect = function(event: MessageEvent) {
117
- const port = (event as MessageEvent).ports[0]
118
- handlePort(port)
119
- }
120
- for (const port of cachedPorts) {
121
- handlePort(port)
122
- }
123
- cachedPorts.clear()
124
- yield* Scope.addFinalizer(
125
- scope,
126
- Effect.sync(() => self.close())
127
- )
128
- } else {
129
- handlePort(self as any)
125
+ for (const port of cachedPorts) {
126
+ handlePort(port)
130
127
  }
128
+ cachedPorts.clear()
131
129
  yield* Scope.addFinalizer(
132
130
  scope,
133
- Effect.sync(() => {
134
- self.removeEventListener("error", onError)
135
- if ("onconnect" in self) {
136
- self.onconnect = prevOnConnect
137
- }
138
- })
131
+ Effect.sync(() => self.close())
139
132
  )
140
- })
141
-
142
- return { run, send }
133
+ } else {
134
+ handlePort(self as any)
135
+ }
136
+ yield* Scope.addFinalizer(
137
+ scope,
138
+ Effect.sync(() => {
139
+ self.removeEventListener("error", onError)
140
+ if ("onconnect" in self) {
141
+ self.onconnect = prevOnConnect
142
+ }
143
+ })
144
+ )
143
145
  })
144
- }
146
+
147
+ return identity<Runner.BackingRunner<I, O>>({ run, send, disconnects })
148
+ }) as any
145
149
  })
146
150
 
147
151
  /** @internal */