@effect/platform-browser 0.58.3 → 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.
- package/dist/cjs/BrowserWorker.js +6 -1
- package/dist/cjs/BrowserWorker.js.map +1 -1
- package/dist/cjs/internal/worker.js +4 -1
- package/dist/cjs/internal/worker.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +96 -91
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/BrowserWorker.d.ts +6 -1
- package/dist/dts/BrowserWorker.d.ts.map +1 -1
- package/dist/esm/BrowserWorker.js +5 -0
- package/dist/esm/BrowserWorker.js.map +1 -1
- package/dist/esm/internal/worker.js +2 -0
- package/dist/esm/internal/worker.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +96 -91
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +3 -3
- package/src/BrowserWorker.ts +9 -1
- package/src/internal/worker.ts +4 -0
- package/src/internal/workerRunner.ts +106 -102
|
@@ -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,
|
|
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":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,KAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AAAqC,SAAAM,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,SAAAR,wBAAAQ,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;AAErC,MAAMW,kBAAkB,gBAAG5B,MAAM,CAAC6B,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,OAAO3B,MAAM,CAAC6B,EAAE,CACd3B,KAAK,CAAC4B,YAAY,CAChBJ,KAAK,EACL1B,MAAM,CAAC+B,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;MAChCtC,QAAQ,CAACyC,UAAU,CACjBN,QAAQ,EACR,IAAIO,wBAAW,CAAC;QAAEC,MAAM,EAAE,SAAS;QAAEC,KAAK,EAAEN,KAAK,CAACO,KAAK,IAAIP,KAAK,CAACQ;MAAO,CAAE,CAAC,CAC5E;IACH;IACAjB,IAAI,CAACkB,gBAAgB,CAAC,SAAS,EAAEV,SAAgB,CAAC;IAClDR,IAAI,CAACkB,gBAAgB,CAAC,OAAO,EAAEP,OAAc,CAAC;IAC9C,IAAI,OAAO,IAAIX,IAAI,EAAE;MACnBA,IAAI,CAACmB,KAAK,EAAE;IACd;IACA,OAAO7C,KAAK,CAAC4B,YAAY,CACvBJ,KAAK,EACL1B,MAAM,CAAC+B,IAAI,CAAC,MAAK;MACfH,IAAI,CAACoB,mBAAmB,CAAC,SAAS,EAAEZ,SAAgB,CAAC;MACrDR,IAAI,CAACoB,mBAAmB,CAAC,OAAO,EAAET,OAAc,CAAC;IACnD,CAAC,CAAC,CACH;EACH;CACD,CAAC;AAEF;AACO,MAAMU,WAAW,GAAAC,OAAA,CAAAD,WAAA,gBAAGhD,KAAK,CAACkD,OAAO,CAACxD,MAAM,CAACyD,cAAc,EAAE7B,kBAAkB,CAAC;AAEnF;AACO,MAAM8B,YAAY,GAAAH,OAAA,CAAAG,YAAA,gBAAGpD,KAAK,CAACqD,OAAO,CAAC3D,MAAM,CAAC0D,YAAY,EAAEJ,WAAW,CAAC;AAE3E;AACO,MAAMM,KAAK,GAAIC,KAAgF,IACpGvD,KAAK,CAACwD,KAAK,CAACJ,YAAY,EAAE1D,MAAM,CAAC+D,YAAY,CAACF,KAAK,CAAC,CAAC;AAEvD;AAAAN,OAAA,CAAAK,KAAA,GAAAA,KAAA;AACO,MAAMI,aAAa,GAAIH,KAAgF,IAC5GvD,KAAK,CAACwD,KAAK,CAACR,WAAW,EAAEtD,MAAM,CAAC+D,YAAY,CAACF,KAAK,CAAC,CAAC;AAAAN,OAAA,CAAAS,aAAA,GAAAA,aAAA","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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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","
|
|
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
|
|
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,
|
|
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,
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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","
|
|
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.
|
|
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.
|
|
17
|
-
"effect": "^3.
|
|
16
|
+
"@effect/platform": "^0.80.0",
|
|
17
|
+
"effect": "^3.14.0"
|
|
18
18
|
},
|
|
19
19
|
"publishConfig": {
|
|
20
20
|
"provenance": true
|
package/src/BrowserWorker.ts
CHANGED
|
@@ -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
|
|
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
|
package/src/internal/worker.ts
CHANGED
|
@@ -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
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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 */
|