@effect/platform-browser 0.31.29 → 0.32.1

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.
@@ -47,7 +47,7 @@ const runMain = (effect, options) => {
47
47
  const _effect = useStructuredLogger(effect);
48
48
  const fiber = Effect.runFork(options?.disableErrorReporting === true ? _effect : Effect.tapErrorCause(_effect, cause => {
49
49
  if (Cause.isInterruptedOnly(cause)) {
50
- return Effect.unit;
50
+ return Effect.void;
51
51
  }
52
52
  return Effect.logError(cause);
53
53
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","names":["Cause","_interopRequireWildcard","require","Effect","FiberRef","HashSet","Logger","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useStructuredLogger","locallyWith","currentLoggers","loggers","defaultLogger","remove","add","withConsoleLog","structuredLogger","runMain","effect","options","_effect","fiber","runFork","disableErrorReporting","tapErrorCause","cause","isInterruptedOnly","unit","logError","addEventListener","unsafeInterruptAsFork","id","exports"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"runtime.js","names":["Cause","_interopRequireWildcard","require","Effect","FiberRef","HashSet","Logger","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","useStructuredLogger","locallyWith","currentLoggers","loggers","defaultLogger","remove","add","withConsoleLog","structuredLogger","runMain","effect","options","_effect","fiber","runFork","disableErrorReporting","tapErrorCause","cause","isInterruptedOnly","void","logError","addEventListener","unsafeInterruptAsFork","id","exports"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,8 @@ var _WorkerError = /*#__PURE__*/require("@effect/platform/WorkerError");
8
8
  var Runner = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/WorkerRunner"));
9
9
  var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Cause"));
10
10
  var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
11
+ var FiberSet = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/FiberSet"));
12
+ var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
11
13
  var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
12
14
  var Queue = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Queue"));
13
15
  var Schedule = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Schedule"));
@@ -36,59 +38,88 @@ function _interopRequireWildcard(e, r) {
36
38
  }
37
39
  return n.default = e, t && t.set(e, n), n;
38
40
  }
41
+ const cachedPorts = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect/platform-browser/Worker/cachedPorts", () => new Set());
42
+ function globalHandleConnect(event) {
43
+ cachedPorts.add(event.ports[0]);
44
+ }
45
+ if ("onconnect" in self) {
46
+ self.onconnect = globalHandleConnect;
47
+ }
39
48
  const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
40
49
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
41
50
  start(shutdown) {
42
51
  return Effect.gen(function* (_) {
43
- const port = "postMessage" in self ? self : yield* _(Effect.async((resume, signal) => {
44
- self.addEventListener("connect", function (event) {
45
- const port = event.ports[0];
46
- port.start();
47
- resume(Effect.succeed(port));
48
- }, {
49
- once: true,
50
- signal
51
- });
52
- }));
52
+ let currentPortId = 0;
53
53
  const queue = yield* _(Queue.unbounded());
54
- yield* _(Effect.async(resume => {
55
- function onMessage(event) {
56
- const message = event.data;
57
- if (message[0] === 0) {
58
- queue.unsafeOffer(message[1]);
59
- } else {
60
- Effect.runFork(shutdown);
54
+ const runFork = yield* _(FiberSet.makeRuntime());
55
+ const ports = new Map();
56
+ const send = (portId, message, transfer) => Effect.sync(() => {
57
+ ports.get(portId)?.postMessage([1, message], {
58
+ transfer: transfer
59
+ });
60
+ });
61
+ function handlePort(port, sharedWorker) {
62
+ const portId = currentPortId++;
63
+ ports.set(portId, port);
64
+ Effect.async(resume => {
65
+ function onMessage(event) {
66
+ const message = event.data;
67
+ if (message[0] === 0) {
68
+ queue.unsafeOffer([portId, message[1]]);
69
+ } else if (sharedWorker) {
70
+ resume(Effect.interrupt);
71
+ } else {
72
+ Effect.runFork(shutdown);
73
+ }
61
74
  }
75
+ function onMessageError(error) {
76
+ resume(new _WorkerError.WorkerError({
77
+ reason: "decode",
78
+ error: error.error ?? error.message
79
+ }));
80
+ }
81
+ function onError(error) {
82
+ resume(new _WorkerError.WorkerError({
83
+ reason: "unknown",
84
+ error: error.error ?? error.message
85
+ }));
86
+ }
87
+ port.addEventListener("message", onMessage);
88
+ port.addEventListener("messageerror", onMessageError);
89
+ port.addEventListener("error", onError);
90
+ // ready
91
+ if ("start" in port) {
92
+ port.start();
93
+ }
94
+ port.postMessage([0]);
95
+ return Effect.sync(() => {
96
+ port.removeEventListener("message", onMessage);
97
+ port.removeEventListener("messageerror", onMessageError);
98
+ port.removeEventListener("error", onError);
99
+ });
100
+ }).pipe(Effect.tapErrorCause(cause => Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logDebug(cause)), Effect.retry(Schedule.forever), Effect.annotateLogs({
101
+ package: "@effect/platform-browser",
102
+ module: "WorkerRunner"
103
+ }), Effect.ensuring(Effect.sync(() => {
104
+ ports.delete(portId);
105
+ })), Effect.interruptible, runFork);
106
+ }
107
+ if ("onconnect" in self) {
108
+ self.onconnect = function (event) {
109
+ const port = event.ports[0];
110
+ handlePort(port, true);
111
+ };
112
+ yield* _(Effect.addFinalizer(() => Effect.sync(() => {
113
+ ;
114
+ self.onconnect = globalHandleConnect;
115
+ })));
116
+ for (const port of cachedPorts) {
117
+ handlePort(port, true);
62
118
  }
63
- function onMessageError(error) {
64
- resume(new _WorkerError.WorkerError({
65
- reason: "decode",
66
- error: error.error ?? error.message
67
- }));
68
- }
69
- function onError(error) {
70
- resume(new _WorkerError.WorkerError({
71
- reason: "unknown",
72
- error: error.error ?? error.message
73
- }));
74
- }
75
- port.addEventListener("message", onMessage);
76
- port.addEventListener("messageerror", onMessageError);
77
- port.addEventListener("error", onError);
78
- return Effect.sync(() => {
79
- port.removeEventListener("message", onMessage);
80
- port.removeEventListener("messageerror", onMessageError);
81
- port.removeEventListener("error", onError);
82
- });
83
- }), Effect.tapErrorCause(cause => Cause.isInterruptedOnly(cause) ? Effect.unit : Effect.logDebug(cause)), Effect.retry(Schedule.forever), Effect.annotateLogs({
84
- package: "@effect/platform-browser",
85
- module: "WorkerRunner"
86
- }), Effect.interruptible, Effect.forkScoped);
87
- const send = (message, transfer) => Effect.sync(() => port.postMessage([1, message], {
88
- transfer: transfer
89
- }));
90
- // ready
91
- port.postMessage([0]);
119
+ cachedPorts.clear();
120
+ } else {
121
+ handlePort(self, false);
122
+ }
92
123
  return {
93
124
  queue,
94
125
  send
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["_WorkerError","require","Runner","_interopRequireWildcard","Cause","Effect","Layer","Queue","Schedule","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","shutdown","gen","_","port","self","async","resume","signal","addEventListener","event","ports","succeed","once","queue","unbounded","onMessage","message","data","unsafeOffer","runFork","onMessageError","error","WorkerError","reason","onError","sync","removeEventListener","tapErrorCause","cause","isInterruptedOnly","unit","logDebug","retry","forever","annotateLogs","package","module","interruptible","forkScoped","send","transfer","postMessage","layer","exports"],"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","Effect","FiberSet","_GlobalValue","Layer","Queue","Schedule","_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","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","shutdown","gen","_","currentPortId","queue","unbounded","runFork","makeRuntime","Map","send","portId","message","transfer","sync","postMessage","handlePort","port","sharedWorker","async","resume","onMessage","data","unsafeOffer","interrupt","onMessageError","error","WorkerError","reason","onError","addEventListener","removeEventListener","pipe","tapErrorCause","cause","isInterruptedOnly","void","logDebug","retry","forever","annotateLogs","package","module","ensuring","delete","interruptible","addFinalizer","clear","layer","exports","succeed"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const runMain = (effect, options) => {
16
16
  const _effect = useStructuredLogger(effect);
17
17
  const fiber = Effect.runFork(options?.disableErrorReporting === true ? _effect : Effect.tapErrorCause(_effect, cause => {
18
18
  if (Cause.isInterruptedOnly(cause)) {
19
- return Effect.unit;
19
+ return Effect.void;
20
20
  }
21
21
  return Effect.logError(cause);
22
22
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","names":["Cause","Effect","FiberRef","HashSet","Logger","useStructuredLogger","locallyWith","currentLoggers","loggers","has","defaultLogger","set","remove","add","withConsoleLog","structuredLogger","runMain","effect","options","_effect","fiber","runFork","disableErrorReporting","tapErrorCause","cause","isInterruptedOnly","unit","logError","addEventListener","unsafeInterruptAsFork","id"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;AACA,MAAMC,mBAAmB,gBAAGJ,MAAM,CAACK,WAAW,CAACJ,QAAQ,CAACK,cAAc,EAAGC,OAAO,IAAI;EAClF,IAAIL,OAAO,CAACM,GAAG,CAACD,OAAO,EAAEJ,MAAM,CAACM,aAAa,CAAC,EAAE;IAC9C,MAAMC,GAAG,GAAGR,OAAO,CAACS,MAAM,CAACJ,OAAO,EAAEJ,MAAM,CAACM,aAAa,CAAC;IACzD,OAAOP,OAAO,CAACU,GAAG,CAACF,GAAG,EAAEP,MAAM,CAACU,cAAc,CAACV,MAAM,CAACW,gBAAgB,CAAC,CAAC;EACzE;EAEA,OAAOP,OAAO;AAChB,CAAC,CAAC;AAEF;AACA,OAAO,MAAMQ,OAAO,GAAYA,CAC9BC,MAAM,EACNC,OAAO,KACL;EACF,MAAMC,OAAO,GAAGd,mBAAmB,CAACY,MAAM,CAAC;EAE3C,MAAMG,KAAK,GAAGnB,MAAM,CAACoB,OAAO,CAC1BH,OAAO,EAAEI,qBAAqB,KAAK,IAAI,GACrCH,OAAO,GACPlB,MAAM,CAACsB,aAAa,CAACJ,OAAO,EAAGK,KAAK,IAAI;IACtC,IAAIxB,KAAK,CAACyB,iBAAiB,CAACD,KAAK,CAAC,EAAE;MAClC,OAAOvB,MAAM,CAACyB,IAAI;IACpB;IACA,OAAOzB,MAAM,CAAC0B,QAAQ,CAACH,KAAK,CAAC;EAC/B,CAAC,CAAC,CACL;EAEDI,gBAAgB,CAAC,cAAc,EAAE,MAAK;IACpCR,KAAK,CAACS,qBAAqB,CAACT,KAAK,CAACU,EAAE,EAAE,CAAC;EACzC,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"runtime.js","names":["Cause","Effect","FiberRef","HashSet","Logger","useStructuredLogger","locallyWith","currentLoggers","loggers","has","defaultLogger","set","remove","add","withConsoleLog","structuredLogger","runMain","effect","options","_effect","fiber","runFork","disableErrorReporting","tapErrorCause","cause","isInterruptedOnly","void","logError","addEventListener","unsafeInterruptAsFork","id"],"sources":["../../../src/internal/runtime.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;AACA,MAAMC,mBAAmB,gBAAGJ,MAAM,CAACK,WAAW,CAACJ,QAAQ,CAACK,cAAc,EAAGC,OAAO,IAAI;EAClF,IAAIL,OAAO,CAACM,GAAG,CAACD,OAAO,EAAEJ,MAAM,CAACM,aAAa,CAAC,EAAE;IAC9C,MAAMC,GAAG,GAAGR,OAAO,CAACS,MAAM,CAACJ,OAAO,EAAEJ,MAAM,CAACM,aAAa,CAAC;IACzD,OAAOP,OAAO,CAACU,GAAG,CAACF,GAAG,EAAEP,MAAM,CAACU,cAAc,CAACV,MAAM,CAACW,gBAAgB,CAAC,CAAC;EACzE;EAEA,OAAOP,OAAO;AAChB,CAAC,CAAC;AAEF;AACA,OAAO,MAAMQ,OAAO,GAAYA,CAC9BC,MAAM,EACNC,OAAO,KACL;EACF,MAAMC,OAAO,GAAGd,mBAAmB,CAACY,MAAM,CAAC;EAE3C,MAAMG,KAAK,GAAGnB,MAAM,CAACoB,OAAO,CAC1BH,OAAO,EAAEI,qBAAqB,KAAK,IAAI,GACrCH,OAAO,GACPlB,MAAM,CAACsB,aAAa,CAACJ,OAAO,EAAGK,KAAK,IAAI;IACtC,IAAIxB,KAAK,CAACyB,iBAAiB,CAACD,KAAK,CAAC,EAAE;MAClC,OAAOvB,MAAM,CAACyB,IAAI;IACpB;IACA,OAAOzB,MAAM,CAAC0B,QAAQ,CAACH,KAAK,CAAC;EAC/B,CAAC,CAAC,CACL;EAEDI,gBAAgB,CAAC,cAAc,EAAE,MAAK;IACpCR,KAAK,CAACS,qBAAqB,CAACT,KAAK,CAACU,EAAE,EAAE,CAAC;EACzC,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -2,62 +2,93 @@ import { WorkerError } from "@effect/platform/WorkerError";
2
2
  import * as Runner from "@effect/platform/WorkerRunner";
3
3
  import * as Cause from "effect/Cause";
4
4
  import * as Effect from "effect/Effect";
5
+ import * as FiberSet from "effect/FiberSet";
6
+ import { globalValue } from "effect/GlobalValue";
5
7
  import * as Layer from "effect/Layer";
6
8
  import * as Queue from "effect/Queue";
7
9
  import * as Schedule from "effect/Schedule";
10
+ const cachedPorts = /*#__PURE__*/globalValue("@effect/platform-browser/Worker/cachedPorts", () => new Set());
11
+ function globalHandleConnect(event) {
12
+ cachedPorts.add(event.ports[0]);
13
+ }
14
+ if ("onconnect" in self) {
15
+ self.onconnect = globalHandleConnect;
16
+ }
8
17
  const platformRunnerImpl = /*#__PURE__*/Runner.PlatformRunner.of({
9
18
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
10
19
  start(shutdown) {
11
20
  return Effect.gen(function* (_) {
12
- const port = "postMessage" in self ? self : yield* _(Effect.async((resume, signal) => {
13
- self.addEventListener("connect", function (event) {
14
- const port = event.ports[0];
15
- port.start();
16
- resume(Effect.succeed(port));
17
- }, {
18
- once: true,
19
- signal
20
- });
21
- }));
21
+ let currentPortId = 0;
22
22
  const queue = yield* _(Queue.unbounded());
23
- yield* _(Effect.async(resume => {
24
- function onMessage(event) {
25
- const message = event.data;
26
- if (message[0] === 0) {
27
- queue.unsafeOffer(message[1]);
28
- } else {
29
- Effect.runFork(shutdown);
23
+ const runFork = yield* _(FiberSet.makeRuntime());
24
+ const ports = new Map();
25
+ const send = (portId, message, transfer) => Effect.sync(() => {
26
+ ports.get(portId)?.postMessage([1, message], {
27
+ transfer: transfer
28
+ });
29
+ });
30
+ function handlePort(port, sharedWorker) {
31
+ const portId = currentPortId++;
32
+ ports.set(portId, port);
33
+ Effect.async(resume => {
34
+ function onMessage(event) {
35
+ const message = event.data;
36
+ if (message[0] === 0) {
37
+ queue.unsafeOffer([portId, message[1]]);
38
+ } else if (sharedWorker) {
39
+ resume(Effect.interrupt);
40
+ } else {
41
+ Effect.runFork(shutdown);
42
+ }
30
43
  }
44
+ function onMessageError(error) {
45
+ resume(new WorkerError({
46
+ reason: "decode",
47
+ error: error.error ?? error.message
48
+ }));
49
+ }
50
+ function onError(error) {
51
+ resume(new WorkerError({
52
+ reason: "unknown",
53
+ error: error.error ?? error.message
54
+ }));
55
+ }
56
+ port.addEventListener("message", onMessage);
57
+ port.addEventListener("messageerror", onMessageError);
58
+ port.addEventListener("error", onError);
59
+ // ready
60
+ if ("start" in port) {
61
+ port.start();
62
+ }
63
+ port.postMessage([0]);
64
+ return Effect.sync(() => {
65
+ port.removeEventListener("message", onMessage);
66
+ port.removeEventListener("messageerror", onMessageError);
67
+ port.removeEventListener("error", onError);
68
+ });
69
+ }).pipe(Effect.tapErrorCause(cause => Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logDebug(cause)), Effect.retry(Schedule.forever), Effect.annotateLogs({
70
+ package: "@effect/platform-browser",
71
+ module: "WorkerRunner"
72
+ }), Effect.ensuring(Effect.sync(() => {
73
+ ports.delete(portId);
74
+ })), Effect.interruptible, runFork);
75
+ }
76
+ if ("onconnect" in self) {
77
+ self.onconnect = function (event) {
78
+ const port = event.ports[0];
79
+ handlePort(port, true);
80
+ };
81
+ yield* _(Effect.addFinalizer(() => Effect.sync(() => {
82
+ ;
83
+ self.onconnect = globalHandleConnect;
84
+ })));
85
+ for (const port of cachedPorts) {
86
+ handlePort(port, true);
31
87
  }
32
- function onMessageError(error) {
33
- resume(new WorkerError({
34
- reason: "decode",
35
- error: error.error ?? error.message
36
- }));
37
- }
38
- function onError(error) {
39
- resume(new WorkerError({
40
- reason: "unknown",
41
- error: error.error ?? error.message
42
- }));
43
- }
44
- port.addEventListener("message", onMessage);
45
- port.addEventListener("messageerror", onMessageError);
46
- port.addEventListener("error", onError);
47
- return Effect.sync(() => {
48
- port.removeEventListener("message", onMessage);
49
- port.removeEventListener("messageerror", onMessageError);
50
- port.removeEventListener("error", onError);
51
- });
52
- }), Effect.tapErrorCause(cause => Cause.isInterruptedOnly(cause) ? Effect.unit : Effect.logDebug(cause)), Effect.retry(Schedule.forever), Effect.annotateLogs({
53
- package: "@effect/platform-browser",
54
- module: "WorkerRunner"
55
- }), Effect.interruptible, Effect.forkScoped);
56
- const send = (message, transfer) => Effect.sync(() => port.postMessage([1, message], {
57
- transfer: transfer
58
- }));
59
- // ready
60
- port.postMessage([0]);
88
+ cachedPorts.clear();
89
+ } else {
90
+ handlePort(self, false);
91
+ }
61
92
  return {
62
93
  queue,
63
94
  send
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Effect","Layer","Queue","Schedule","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","shutdown","gen","_","port","self","async","resume","signal","addEventListener","event","ports","succeed","once","queue","unbounded","onMessage","message","data","unsafeOffer","runFork","onMessageError","error","reason","onError","sync","removeEventListener","tapErrorCause","cause","isInterruptedOnly","unit","logDebug","retry","forever","annotateLogs","package","module","interruptible","forkScoped","send","transfer","postMessage","layer"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAW,QAAQ,8BAA8B;AAC1D,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AACvD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAE3C,MAAMC,kBAAkB,gBAAGN,MAAM,CAACO,cAAc,CAACC,EAAE,CAAC;EAClD,CAACR,MAAM,CAACS,oBAAoB,GAAGT,MAAM,CAACS,oBAAoB;EAC1DC,KAAKA,CAAOC,QAA6B;IACvC,OAAOT,MAAM,CAACU,GAAG,CAAC,WAAUC,CAAC;MAC3B,MAAMC,IAAI,GAAG,aAAa,IAAIC,IAAI,GAChCA,IAAI,GACH,OAAOF,CAAC,CAACX,MAAM,CAACc,KAAK,CAA4B,CAACC,MAAM,EAAEC,MAAM,KAAI;QACnEH,IAAI,CAACI,gBAAgB,CAAC,SAAS,EAAE,UAASC,KAAK;UAC7C,MAAMN,IAAI,GAAIM,KAAsB,CAACC,KAAK,CAAC,CAAC,CAAC;UAC7CP,IAAI,CAACJ,KAAK,EAAE;UACZO,MAAM,CAACf,MAAM,CAACoB,OAAO,CAACR,IAAI,CAAC,CAAC;QAC9B,CAAC,EAAE;UAAES,IAAI,EAAE,IAAI;UAAEL;QAAM,CAAE,CAAC;MAC5B,CAAC,CAAC,CAAE;MACN,MAAMM,KAAK,GAAG,OAAOX,CAAC,CAACT,KAAK,CAACqB,SAAS,EAAK,CAAC;MAC5C,OAAOZ,CAAC,CACNX,MAAM,CAACc,KAAK,CAA6BC,MAAM,IAAI;QACjD,SAASS,SAASA,CAACN,KAAmB;UACpC,MAAMO,OAAO,GAAIP,KAAsB,CAACQ,IAAuC;UAC/E,IAAID,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACpBH,KAAK,CAACK,WAAW,CAACF,OAAO,CAAC,CAAC,CAAC,CAAC;UAC/B,CAAC,MAAM;YACLzB,MAAM,CAAC4B,OAAO,CAACnB,QAAQ,CAAC;UAC1B;QACF;QACA,SAASoB,cAAcA,CAACC,KAAiB;UACvCf,MAAM,CAAC,IAAIlB,WAAW,CAAC;YAAEkC,MAAM,EAAE,QAAQ;YAAED,KAAK,EAAEA,KAAK,CAACA,KAAK,IAAIA,KAAK,CAACL;UAAO,CAAE,CAAC,CAAC;QACpF;QACA,SAASO,OAAOA,CAACF,KAAiB;UAChCf,MAAM,CAAC,IAAIlB,WAAW,CAAC;YAAEkC,MAAM,EAAE,SAAS;YAAED,KAAK,EAAEA,KAAK,CAACA,KAAK,IAAIA,KAAK,CAACL;UAAO,CAAE,CAAC,CAAC;QACrF;QACAb,IAAI,CAACK,gBAAgB,CAAC,SAAS,EAAEO,SAAgB,CAAC;QAClDZ,IAAI,CAACK,gBAAgB,CAAC,cAAc,EAAEY,cAAqB,CAAC;QAC5DjB,IAAI,CAACK,gBAAgB,CAAC,OAAO,EAAEe,OAAc,CAAC;QAC9C,OAAOhC,MAAM,CAACiC,IAAI,CAAC,MAAK;UACtBrB,IAAI,CAACsB,mBAAmB,CAAC,SAAS,EAAEV,SAAgB,CAAC;UACrDZ,IAAI,CAACsB,mBAAmB,CAAC,cAAc,EAAEL,cAAqB,CAAC;UAC/DjB,IAAI,CAACsB,mBAAmB,CAAC,OAAO,EAAEF,OAAc,CAAC;QACnD,CAAC,CAAC;MACJ,CAAC,CAAC,EACFhC,MAAM,CAACmC,aAAa,CAAEC,KAAK,IAAKrC,KAAK,CAACsC,iBAAiB,CAACD,KAAK,CAAC,GAAGpC,MAAM,CAACsC,IAAI,GAAGtC,MAAM,CAACuC,QAAQ,CAACH,KAAK,CAAC,CAAC,EACtGpC,MAAM,CAACwC,KAAK,CAACrC,QAAQ,CAACsC,OAAO,CAAC,EAC9BzC,MAAM,CAAC0C,YAAY,CAAC;QAClBC,OAAO,EAAE,0BAA0B;QACnCC,MAAM,EAAE;OACT,CAAC,EACF5C,MAAM,CAAC6C,aAAa,EACpB7C,MAAM,CAAC8C,UAAU,CAClB;MACD,MAAMC,IAAI,GAAGA,CAACtB,OAAU,EAAEuB,QAAiC,KACzDhD,MAAM,CAACiC,IAAI,CAAC,MACVrB,IAAI,CAACqC,WAAW,CAAC,CAAC,CAAC,EAAExB,OAAO,CAAC,EAAE;QAC7BuB,QAAQ,EAAEA;OACX,CAAC,CACH;MACH;MACApC,IAAI,CAACqC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;MACrB,OAAO;QAAE3B,KAAK;QAAEyB;MAAI,CAAE;IACxB,CAAC,CAAC;EACJ;CACD,CAAC;AAEF;AACA,OAAO,MAAMG,KAAK,gBAAGjD,KAAK,CAACmB,OAAO,CAACtB,MAAM,CAACO,cAAc,EAAED,kBAAkB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"workerRunner.js","names":["WorkerError","Runner","Cause","Effect","FiberSet","globalValue","Layer","Queue","Schedule","cachedPorts","Set","globalHandleConnect","event","add","ports","self","onconnect","platformRunnerImpl","PlatformRunner","of","PlatformRunnerTypeId","start","shutdown","gen","_","currentPortId","queue","unbounded","runFork","makeRuntime","Map","send","portId","message","transfer","sync","get","postMessage","handlePort","port","sharedWorker","set","async","resume","onMessage","data","unsafeOffer","interrupt","onMessageError","error","reason","onError","addEventListener","removeEventListener","pipe","tapErrorCause","cause","isInterruptedOnly","void","logDebug","retry","forever","annotateLogs","package","module","ensuring","delete","interruptible","addFinalizer","clear","layer","succeed"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effect/platform-browser",
3
- "version": "0.31.29",
4
- "description": "Unified interfaces for common platform-specific services",
3
+ "version": "0.32.1",
4
+ "description": "Platform specific implementations for the browser",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -13,8 +13,8 @@
13
13
  "multipasta": "^0.2.0"
14
14
  },
15
15
  "peerDependencies": {
16
- "@effect/platform": "^0.48.29",
17
- "effect": "^2.4.19"
16
+ "@effect/platform": "^0.49.1",
17
+ "effect": "^3.0.1"
18
18
  },
19
19
  "main": "./dist/cjs/index.js",
20
20
  "module": "./dist/esm/index.js",
@@ -27,7 +27,7 @@ export const runMain: RunMain = (
27
27
  _effect :
28
28
  Effect.tapErrorCause(_effect, (cause) => {
29
29
  if (Cause.isInterruptedOnly(cause)) {
30
- return Effect.unit
30
+ return Effect.void
31
31
  }
32
32
  return Effect.logError(cause)
33
33
  })
@@ -2,30 +2,47 @@ import { WorkerError } from "@effect/platform/WorkerError"
2
2
  import * as Runner from "@effect/platform/WorkerRunner"
3
3
  import * as Cause from "effect/Cause"
4
4
  import * as Effect from "effect/Effect"
5
+ import * as FiberSet from "effect/FiberSet"
6
+ import { globalValue } from "effect/GlobalValue"
5
7
  import * as Layer from "effect/Layer"
6
8
  import * as Queue from "effect/Queue"
7
9
  import * as Schedule from "effect/Schedule"
8
10
 
11
+ const cachedPorts = globalValue("@effect/platform-browser/Worker/cachedPorts", () => new Set<MessagePort>())
12
+ function globalHandleConnect(event: MessageEvent) {
13
+ cachedPorts.add((event as MessageEvent).ports[0])
14
+ }
15
+ if ("onconnect" in self) {
16
+ self.onconnect = globalHandleConnect
17
+ }
18
+
9
19
  const platformRunnerImpl = Runner.PlatformRunner.of({
10
20
  [Runner.PlatformRunnerTypeId]: Runner.PlatformRunnerTypeId,
11
21
  start<I, O>(shutdown: Effect.Effect<void>) {
12
22
  return Effect.gen(function*(_) {
13
- const port = "postMessage" in self ?
14
- self :
15
- (yield* _(Effect.async<MessagePort, never, never>((resume, signal) => {
16
- self.addEventListener("connect", function(event) {
17
- const port = (event as MessageEvent).ports[0]
18
- port.start()
19
- resume(Effect.succeed(port))
20
- }, { once: true, signal })
21
- })))
22
- const queue = yield* _(Queue.unbounded<I>())
23
- yield* _(
23
+ let currentPortId = 0
24
+
25
+ const queue = yield* _(Queue.unbounded<readonly [portId: number, message: I]>())
26
+ const runFork = yield* _(FiberSet.makeRuntime<never>())
27
+ const ports = new Map<number, MessagePort>()
28
+ const send = (portId: number, message: O, transfer?: ReadonlyArray<unknown>) =>
29
+ Effect.sync(() => {
30
+ ports.get(portId)?.postMessage([1, message], {
31
+ transfer: transfer as any
32
+ })
33
+ })
34
+
35
+ function handlePort(port: MessagePort, sharedWorker: boolean) {
36
+ const portId = currentPortId++
37
+ ports.set(portId, port)
38
+
24
39
  Effect.async<never, WorkerError, never>((resume) => {
25
40
  function onMessage(event: MessageEvent) {
26
41
  const message = (event as MessageEvent).data as Runner.BackingRunner.Message<I>
27
42
  if (message[0] === 0) {
28
- queue.unsafeOffer(message[1])
43
+ queue.unsafeOffer([portId, message[1]])
44
+ } else if (sharedWorker) {
45
+ resume(Effect.interrupt)
29
46
  } else {
30
47
  Effect.runFork(shutdown)
31
48
  }
@@ -39,29 +56,51 @@ const platformRunnerImpl = Runner.PlatformRunner.of({
39
56
  port.addEventListener("message", onMessage as any)
40
57
  port.addEventListener("messageerror", onMessageError as any)
41
58
  port.addEventListener("error", onError as any)
59
+
60
+ // ready
61
+ if ("start" in port) {
62
+ port.start()
63
+ }
64
+ port.postMessage([0])
65
+
42
66
  return Effect.sync(() => {
43
67
  port.removeEventListener("message", onMessage as any)
44
68
  port.removeEventListener("messageerror", onMessageError as any)
45
69
  port.removeEventListener("error", onError as any)
46
70
  })
47
- }),
48
- Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit : Effect.logDebug(cause)),
49
- Effect.retry(Schedule.forever),
50
- Effect.annotateLogs({
51
- package: "@effect/platform-browser",
52
- module: "WorkerRunner"
53
- }),
54
- Effect.interruptible,
55
- Effect.forkScoped
56
- )
57
- const send = (message: O, transfer?: ReadonlyArray<unknown>) =>
58
- Effect.sync(() =>
59
- port.postMessage([1, message], {
60
- transfer: transfer as any
61
- })
71
+ }).pipe(
72
+ Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.void : Effect.logDebug(cause)),
73
+ Effect.retry(Schedule.forever),
74
+ Effect.annotateLogs({
75
+ package: "@effect/platform-browser",
76
+ module: "WorkerRunner"
77
+ }),
78
+ Effect.ensuring(Effect.sync(() => {
79
+ ports.delete(portId)
80
+ })),
81
+ Effect.interruptible,
82
+ runFork
62
83
  )
63
- // ready
64
- port.postMessage([0])
84
+ }
85
+
86
+ if ("onconnect" in self) {
87
+ self.onconnect = function(event: MessageEvent) {
88
+ const port = (event as MessageEvent).ports[0]
89
+ handlePort(port, true)
90
+ }
91
+ yield* _(Effect.addFinalizer(() =>
92
+ Effect.sync(() => {
93
+ ;(self as any).onconnect = globalHandleConnect
94
+ })
95
+ ))
96
+ for (const port of cachedPorts) {
97
+ handlePort(port, true)
98
+ }
99
+ cachedPorts.clear()
100
+ } else {
101
+ handlePort(self as any, false)
102
+ }
103
+
65
104
  return { queue, send }
66
105
  })
67
106
  }