@effect/platform 0.33.1 → 0.35.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.
Files changed (237) hide show
  1. package/Command/package.json +6 -0
  2. package/CommandExecutor/package.json +6 -0
  3. package/Effectify/package.json +6 -0
  4. package/Error/package.json +6 -0
  5. package/FileSystem/package.json +6 -0
  6. package/Http/App/package.json +6 -0
  7. package/Http/Body/package.json +6 -0
  8. package/Http/Client/package.json +6 -0
  9. package/Http/ClientError/package.json +6 -0
  10. package/Http/ClientRequest/package.json +6 -0
  11. package/Http/ClientResponse/package.json +6 -0
  12. package/Http/Etag/package.json +6 -0
  13. package/Http/FormData/package.json +6 -0
  14. package/Http/Headers/package.json +6 -0
  15. package/Http/IncomingMessage/package.json +6 -0
  16. package/Http/Method/package.json +6 -0
  17. package/Http/Middleware/package.json +6 -0
  18. package/Http/Platform/package.json +6 -0
  19. package/Http/Router/package.json +6 -0
  20. package/Http/Server/package.json +6 -0
  21. package/Http/ServerError/package.json +6 -0
  22. package/Http/ServerRequest/package.json +6 -0
  23. package/Http/ServerResponse/package.json +6 -0
  24. package/Http/UrlParams/package.json +6 -0
  25. package/HttpClient/package.json +6 -0
  26. package/HttpServer/package.json +6 -0
  27. package/KeyValueStore/package.json +6 -0
  28. package/Path/package.json +6 -0
  29. package/Runtime/package.json +6 -0
  30. package/Terminal/package.json +6 -0
  31. package/Transferable/package.json +6 -0
  32. package/Worker/package.json +6 -0
  33. package/WorkerError/package.json +6 -0
  34. package/WorkerRunner/package.json +6 -0
  35. package/dist/cjs/Command.js.map +1 -0
  36. package/dist/cjs/CommandExecutor.js.map +1 -0
  37. package/dist/cjs/Effectify.js.map +1 -0
  38. package/dist/cjs/Error.js.map +1 -0
  39. package/dist/cjs/FileSystem.js.map +1 -0
  40. package/dist/cjs/Http/App.js.map +1 -0
  41. package/dist/cjs/Http/Body.js.map +1 -0
  42. package/dist/cjs/Http/Client.js.map +1 -0
  43. package/dist/cjs/Http/ClientError.js.map +1 -0
  44. package/dist/cjs/Http/ClientRequest.js.map +1 -0
  45. package/dist/cjs/Http/ClientResponse.js.map +1 -0
  46. package/dist/cjs/Http/Etag.js.map +1 -0
  47. package/dist/cjs/Http/FormData.js.map +1 -0
  48. package/dist/cjs/Http/Headers.js.map +1 -0
  49. package/dist/cjs/Http/IncomingMessage.js.map +1 -0
  50. package/dist/cjs/Http/Method.js.map +1 -0
  51. package/dist/cjs/Http/Middleware.js.map +1 -0
  52. package/{Http/Etag.js.map → dist/cjs/Http/Platform.js.map} +1 -1
  53. package/dist/cjs/Http/Router.js.map +1 -0
  54. package/dist/cjs/Http/Server.js.map +1 -0
  55. package/{Http/ClientError.js.map → dist/cjs/Http/ServerError.js.map} +1 -1
  56. package/dist/cjs/Http/ServerRequest.js.map +1 -0
  57. package/dist/cjs/Http/ServerResponse.js.map +1 -0
  58. package/dist/cjs/Http/UrlParams.js.map +1 -0
  59. package/dist/cjs/HttpClient.js.map +1 -0
  60. package/dist/cjs/HttpServer.js.map +1 -0
  61. package/dist/cjs/KeyValueStore.js.map +1 -0
  62. package/dist/cjs/Path.js.map +1 -0
  63. package/dist/cjs/Runtime.js.map +1 -0
  64. package/dist/cjs/Terminal.js.map +1 -0
  65. package/dist/cjs/Transferable.js +26 -0
  66. package/dist/cjs/Transferable.js.map +1 -0
  67. package/{Worker.js → dist/cjs/Worker.js} +16 -1
  68. package/dist/cjs/Worker.js.map +1 -0
  69. package/dist/cjs/WorkerError.js.map +1 -0
  70. package/{WorkerRunner.js → dist/cjs/WorkerRunner.js} +6 -1
  71. package/dist/cjs/WorkerRunner.js.map +1 -0
  72. package/dist/cjs/internal/command.js.map +1 -0
  73. package/dist/cjs/internal/commandExecutor.js.map +1 -0
  74. package/dist/cjs/internal/effectify.js.map +1 -0
  75. package/dist/cjs/internal/error.js.map +1 -0
  76. package/dist/cjs/internal/fileSystem.js.map +1 -0
  77. package/dist/cjs/internal/http/body.js.map +1 -0
  78. package/dist/cjs/internal/http/client.js.map +1 -0
  79. package/dist/cjs/internal/http/clientError.js.map +1 -0
  80. package/dist/cjs/internal/http/clientRequest.js.map +1 -0
  81. package/dist/cjs/internal/http/clientResponse.js.map +1 -0
  82. package/dist/cjs/internal/http/etag.js.map +1 -0
  83. package/dist/cjs/internal/http/formData.js.map +1 -0
  84. package/dist/cjs/internal/http/middleware.js.map +1 -0
  85. package/dist/cjs/internal/http/platform.js.map +1 -0
  86. package/dist/cjs/internal/http/router.js.map +1 -0
  87. package/dist/cjs/internal/http/server.js.map +1 -0
  88. package/dist/cjs/internal/http/serverError.js.map +1 -0
  89. package/dist/cjs/internal/http/serverRequest.js.map +1 -0
  90. package/dist/cjs/internal/http/serverResponse.js.map +1 -0
  91. package/dist/cjs/internal/keyValueStore.js.map +1 -0
  92. package/dist/cjs/internal/path.js.map +1 -0
  93. package/dist/cjs/internal/terminal.js.map +1 -0
  94. package/{internal → dist/cjs/internal}/worker.js +63 -1
  95. package/dist/cjs/internal/worker.js.map +1 -0
  96. package/dist/cjs/internal/workerError.js.map +1 -0
  97. package/{internal → dist/cjs/internal}/workerRunner.js +42 -1
  98. package/dist/cjs/internal/workerRunner.js.map +1 -0
  99. package/dist/dts/Transferable.d.ts +21 -0
  100. package/dist/dts/Transferable.d.ts.map +1 -0
  101. package/dist/dts/Worker.d.ts +72 -0
  102. package/dist/dts/Worker.d.ts.map +1 -1
  103. package/dist/dts/WorkerRunner.d.ts +11 -0
  104. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  105. package/dist/esm/Transferable.js +19 -0
  106. package/dist/esm/Transferable.js.map +1 -0
  107. package/dist/esm/Worker.js +15 -0
  108. package/dist/esm/Worker.js.map +1 -1
  109. package/dist/esm/WorkerRunner.js +5 -0
  110. package/dist/esm/WorkerRunner.js.map +1 -1
  111. package/dist/esm/internal/worker.js +59 -0
  112. package/dist/esm/internal/worker.js.map +1 -1
  113. package/dist/esm/internal/workerRunner.js +40 -0
  114. package/dist/esm/internal/workerRunner.js.map +1 -1
  115. package/package.json +44 -44
  116. package/src/Transferable.ts +28 -0
  117. package/src/Worker.ts +110 -0
  118. package/src/WorkerRunner.ts +26 -0
  119. package/src/internal/worker.ts +111 -0
  120. package/src/internal/workerRunner.ts +69 -0
  121. package/Command.js.map +0 -1
  122. package/CommandExecutor.js.map +0 -1
  123. package/Effectify.js.map +0 -1
  124. package/Error.js.map +0 -1
  125. package/FileSystem.js.map +0 -1
  126. package/Http/App.js.map +0 -1
  127. package/Http/Body.js.map +0 -1
  128. package/Http/Client.js.map +0 -1
  129. package/Http/ClientRequest.js.map +0 -1
  130. package/Http/ClientResponse.js.map +0 -1
  131. package/Http/FormData.js.map +0 -1
  132. package/Http/Headers.js.map +0 -1
  133. package/Http/IncomingMessage.js.map +0 -1
  134. package/Http/Method.js.map +0 -1
  135. package/Http/Middleware.js.map +0 -1
  136. package/Http/Platform.js.map +0 -1
  137. package/Http/Router.js.map +0 -1
  138. package/Http/Server.js.map +0 -1
  139. package/Http/ServerError.js.map +0 -1
  140. package/Http/ServerRequest.js.map +0 -1
  141. package/Http/ServerResponse.js.map +0 -1
  142. package/Http/UrlParams.js.map +0 -1
  143. package/HttpClient.js.map +0 -1
  144. package/HttpServer.js.map +0 -1
  145. package/KeyValueStore.js.map +0 -1
  146. package/Path.js.map +0 -1
  147. package/Runtime.js.map +0 -1
  148. package/Terminal.js.map +0 -1
  149. package/Worker.js.map +0 -1
  150. package/WorkerError.js.map +0 -1
  151. package/WorkerRunner.js.map +0 -1
  152. package/dist/dts/index.d.ts +0 -57
  153. package/dist/dts/index.d.ts.map +0 -1
  154. package/dist/esm/index.js +0 -57
  155. package/dist/esm/index.js.map +0 -1
  156. package/index.js +0 -60
  157. package/index.js.map +0 -1
  158. package/internal/command.js.map +0 -1
  159. package/internal/commandExecutor.js.map +0 -1
  160. package/internal/effectify.js.map +0 -1
  161. package/internal/error.js.map +0 -1
  162. package/internal/fileSystem.js.map +0 -1
  163. package/internal/http/body.js.map +0 -1
  164. package/internal/http/client.js.map +0 -1
  165. package/internal/http/clientError.js.map +0 -1
  166. package/internal/http/clientRequest.js.map +0 -1
  167. package/internal/http/clientResponse.js.map +0 -1
  168. package/internal/http/etag.js.map +0 -1
  169. package/internal/http/formData.js.map +0 -1
  170. package/internal/http/middleware.js.map +0 -1
  171. package/internal/http/platform.js.map +0 -1
  172. package/internal/http/router.js.map +0 -1
  173. package/internal/http/server.js.map +0 -1
  174. package/internal/http/serverError.js.map +0 -1
  175. package/internal/http/serverRequest.js.map +0 -1
  176. package/internal/http/serverResponse.js.map +0 -1
  177. package/internal/keyValueStore.js.map +0 -1
  178. package/internal/path.js.map +0 -1
  179. package/internal/terminal.js.map +0 -1
  180. package/internal/worker.js.map +0 -1
  181. package/internal/workerError.js.map +0 -1
  182. package/internal/workerRunner.js.map +0 -1
  183. package/src/index.ts +0 -69
  184. /package/{Command.js → dist/cjs/Command.js} +0 -0
  185. /package/{CommandExecutor.js → dist/cjs/CommandExecutor.js} +0 -0
  186. /package/{Effectify.js → dist/cjs/Effectify.js} +0 -0
  187. /package/{Error.js → dist/cjs/Error.js} +0 -0
  188. /package/{FileSystem.js → dist/cjs/FileSystem.js} +0 -0
  189. /package/{Http → dist/cjs/Http}/App.js +0 -0
  190. /package/{Http → dist/cjs/Http}/Body.js +0 -0
  191. /package/{Http → dist/cjs/Http}/Client.js +0 -0
  192. /package/{Http → dist/cjs/Http}/ClientError.js +0 -0
  193. /package/{Http → dist/cjs/Http}/ClientRequest.js +0 -0
  194. /package/{Http → dist/cjs/Http}/ClientResponse.js +0 -0
  195. /package/{Http → dist/cjs/Http}/Etag.js +0 -0
  196. /package/{Http → dist/cjs/Http}/FormData.js +0 -0
  197. /package/{Http → dist/cjs/Http}/Headers.js +0 -0
  198. /package/{Http → dist/cjs/Http}/IncomingMessage.js +0 -0
  199. /package/{Http → dist/cjs/Http}/Method.js +0 -0
  200. /package/{Http → dist/cjs/Http}/Middleware.js +0 -0
  201. /package/{Http → dist/cjs/Http}/Platform.js +0 -0
  202. /package/{Http → dist/cjs/Http}/Router.js +0 -0
  203. /package/{Http → dist/cjs/Http}/Server.js +0 -0
  204. /package/{Http → dist/cjs/Http}/ServerError.js +0 -0
  205. /package/{Http → dist/cjs/Http}/ServerRequest.js +0 -0
  206. /package/{Http → dist/cjs/Http}/ServerResponse.js +0 -0
  207. /package/{Http → dist/cjs/Http}/UrlParams.js +0 -0
  208. /package/{HttpClient.js → dist/cjs/HttpClient.js} +0 -0
  209. /package/{HttpServer.js → dist/cjs/HttpServer.js} +0 -0
  210. /package/{KeyValueStore.js → dist/cjs/KeyValueStore.js} +0 -0
  211. /package/{Path.js → dist/cjs/Path.js} +0 -0
  212. /package/{Runtime.js → dist/cjs/Runtime.js} +0 -0
  213. /package/{Terminal.js → dist/cjs/Terminal.js} +0 -0
  214. /package/{WorkerError.js → dist/cjs/WorkerError.js} +0 -0
  215. /package/{internal → dist/cjs/internal}/command.js +0 -0
  216. /package/{internal → dist/cjs/internal}/commandExecutor.js +0 -0
  217. /package/{internal → dist/cjs/internal}/effectify.js +0 -0
  218. /package/{internal → dist/cjs/internal}/error.js +0 -0
  219. /package/{internal → dist/cjs/internal}/fileSystem.js +0 -0
  220. /package/{internal → dist/cjs/internal}/http/body.js +0 -0
  221. /package/{internal → dist/cjs/internal}/http/client.js +0 -0
  222. /package/{internal → dist/cjs/internal}/http/clientError.js +0 -0
  223. /package/{internal → dist/cjs/internal}/http/clientRequest.js +0 -0
  224. /package/{internal → dist/cjs/internal}/http/clientResponse.js +0 -0
  225. /package/{internal → dist/cjs/internal}/http/etag.js +0 -0
  226. /package/{internal → dist/cjs/internal}/http/formData.js +0 -0
  227. /package/{internal → dist/cjs/internal}/http/middleware.js +0 -0
  228. /package/{internal → dist/cjs/internal}/http/platform.js +0 -0
  229. /package/{internal → dist/cjs/internal}/http/router.js +0 -0
  230. /package/{internal → dist/cjs/internal}/http/server.js +0 -0
  231. /package/{internal → dist/cjs/internal}/http/serverError.js +0 -0
  232. /package/{internal → dist/cjs/internal}/http/serverRequest.js +0 -0
  233. /package/{internal → dist/cjs/internal}/http/serverResponse.js +0 -0
  234. /package/{internal → dist/cjs/internal}/keyValueStore.js +0 -0
  235. /package/{internal → dist/cjs/internal}/path.js +0 -0
  236. /package/{internal → dist/cjs/internal}/terminal.js +0 -0
  237. /package/{internal → dist/cjs/internal}/workerError.js +0 -0
@@ -1,11 +1,15 @@
1
+ import * as Schema from "@effect/schema/Schema";
2
+ import * as Serializable from "@effect/schema/Serializable";
1
3
  import * as Cause from "effect/Cause";
2
4
  import * as Context from "effect/Context";
3
5
  import * as Effect from "effect/Effect";
4
6
  import * as Either from "effect/Either";
5
7
  import * as Fiber from "effect/Fiber";
6
8
  import { pipe } from "effect/Function";
9
+ import * as Predicate from "effect/Predicate";
7
10
  import * as Queue from "effect/Queue";
8
11
  import * as Stream from "effect/Stream";
12
+ import * as Transferable from "../Transferable.js";
9
13
  /** @internal */
10
14
  export const PlatformRunnerTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Runner/PlatformRunner");
11
15
  /** @internal */
@@ -51,4 +55,40 @@ export const make = (process, options) => Effect.gen(function* (_) {
51
55
  discard: true
52
56
  }));
53
57
  });
58
+ /** @internal */
59
+ export const makeSerialized = (schema, handlers) => {
60
+ const parseRequest = Schema.decode(schema);
61
+ const effectTags = new Set();
62
+ return make(request => {
63
+ if (Predicate.hasProperty(request, "_tag") && effectTags.has(request._tag)) {
64
+ return Effect.flatMap(parseRequest(request), request => {
65
+ const handler = handlers[request._tag];
66
+ if (!handler) {
67
+ return Effect.dieMessage(`No handler for ${request._tag}`);
68
+ }
69
+ const encodeSuccess = Schema.encode(Serializable.successSchema(request));
70
+ return pipe(Effect.matchEffect(handler(request), {
71
+ onFailure: error => Effect.flatMap(Serializable.serializeFailure(request, error), Effect.fail),
72
+ onSuccess: encodeSuccess
73
+ }));
74
+ });
75
+ }
76
+ return Stream.flatMap(parseRequest(request), request => {
77
+ const handler = handlers[request._tag];
78
+ if (!handler) {
79
+ return Stream.dieMessage(`No handler for ${request._tag}`);
80
+ }
81
+ const encodeSuccess = Schema.encode(Serializable.successSchema(request));
82
+ const stream = handler(request);
83
+ if (Effect.isEffect(stream)) {
84
+ effectTags.add(request._tag);
85
+ }
86
+ return pipe(stream, Stream.catchAll(error => Effect.flatMap(Serializable.serializeFailure(request, error), Effect.fail)), Stream.mapEffect(encodeSuccess));
87
+ });
88
+ }, {
89
+ transfers(message) {
90
+ return Transferable.get(message);
91
+ }
92
+ });
93
+ };
54
94
  //# sourceMappingURL=workerRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["Cause","Context","Effect","Either","Fiber","pipe","Queue","Stream","PlatformRunnerTypeId","Symbol","for","PlatformRunner","Tag","make","process","options","gen","_","platform","backing","start","fiberMap","Map","handleRequests","take","queue","tap","req","id","fiber","get","unit","interrupt","stream","effect","isEffect","matchCauseEffect","onFailure","cause","match","failureOrCause","onLeft","error","send","onRight","squash","onSuccess","data","transfers","undefined","payload","encode","item","runDrain","ensuring","sync","delete","fork","set","forever","all","join","concurrency","discard"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAKvC;AACA,OAAO,MAAMC,oBAAoB,gBAAsCC,MAAM,CAACC,GAAG,CAC/E,wCAAwC,CACJ;AAEtC;AACA,OAAO,MAAMC,cAAc,gBAAGV,OAAO,CAACW,GAAG,CACvCJ,oBAAoB,CACrB;AAED;AACA,OAAO,MAAMK,IAAI,GAAGA,CAClBC,OAAwE,EACxEC,OAAwC,KAExCb,MAAM,CAACc,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMC,QAAQ,GAAG,OAAOD,CAAC,CAACN,cAAc,CAAC;EACzC,MAAMQ,OAAO,GAAG,OAAOF,CAAC,CAACC,QAAQ,CAACE,KAAK,EAAuD,CAAC;EAC/F,MAAMC,QAAQ,GAAG,IAAIC,GAAG,EAAoC;EAE5D,MAAMC,cAAc,GAAGlB,IAAI,CACzBC,KAAK,CAACkB,IAAI,CAACL,OAAO,CAACM,KAAK,CAAC,EACzBvB,MAAM,CAACwB,GAAG,CAAEC,GAAG,IAAI;IACjB,MAAMC,EAAE,GAAGD,GAAG,CAAC,CAAC,CAAC;IACjB,IAAIA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;MAChB,MAAME,KAAK,GAAGR,QAAQ,CAACS,GAAG,CAACF,EAAE,CAAC;MAC9B,IAAI,CAACC,KAAK,EAAE,OAAO3B,MAAM,CAAC6B,IAAI;MAC9B,OAAO3B,KAAK,CAAC4B,SAAS,CAACH,KAAK,CAAC;IAC/B;IAEA,MAAMI,MAAM,GAAGnB,OAAO,CAACa,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAMO,MAAM,GAAGhC,MAAM,CAACiC,QAAQ,CAACF,MAAM,CAAC,GACpC/B,MAAM,CAACkC,gBAAgB,CAACH,MAAM,EAAE;MAC9BI,SAAS,EAAGC,KAAK,IACfnC,MAAM,CAACoC,KAAK,CAACvC,KAAK,CAACwC,cAAc,CAACF,KAAK,CAAC,EAAE;QACxCG,MAAM,EAAGC,KAAK,IAAKvB,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,EAAEc,KAAK,CAAC,CAAC;QAC/CE,OAAO,EAAGN,KAAK,IAAKnB,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,EAAE5B,KAAK,CAAC6C,MAAM,CAACP,KAAK,CAAC,CAAC;OAC9D,CAAC;MACJQ,SAAS,EAAGC,IAAI,IAAI;QAClB,MAAMC,SAAS,GAAGjC,OAAO,EAAEiC,SAAS,GAAGjC,OAAO,CAACiC,SAAS,CAACD,IAAI,CAAC,GAAGE,SAAS;QAC1E,MAAMC,OAAO,GAAGnC,OAAO,EAAEoC,MAAM,GAAGpC,OAAO,CAACoC,MAAM,CAACJ,IAAI,CAAC,GAAGA,IAAI;QAC7D,OAAO5B,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,EAAEsB,OAAO,CAAC,EAAEF,SAAS,CAAC;MAClD;KACD,CAAC,GACF3C,IAAI,CACF4B,MAAM,EACN1B,MAAM,CAACmB,GAAG,CAAE0B,IAAI,IAAI;MAClB,MAAMJ,SAAS,GAAGjC,OAAO,EAAEiC,SAAS,GAAGjC,OAAO,CAACiC,SAAS,CAACI,IAAI,CAAC,GAAGH,SAAS;MAC1E,MAAMC,OAAO,GAAGnC,OAAO,EAAEoC,MAAM,GAAGpC,OAAO,CAACoC,MAAM,CAACC,IAAI,CAAC,GAAGA,IAAI;MAC7D,OAAOjC,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,EAAEsB,OAAO,CAAC,EAAEF,SAAS,CAAC;IAClD,CAAC,CAAC,EACFzC,MAAM,CAAC8C,QAAQ,EACfnD,MAAM,CAACkC,gBAAgB,CAAC;MACtBC,SAAS,EAAGC,KAAK,IACfnC,MAAM,CAACoC,KAAK,CAACvC,KAAK,CAACwC,cAAc,CAACF,KAAK,CAAC,EAAE;QACxCG,MAAM,EAAGC,KAAK,IAAKvB,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,EAAEc,KAAK,CAAC,CAAC;QAC/CE,OAAO,EAAGN,KAAK,IAAKnB,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,EAAE5B,KAAK,CAAC6C,MAAM,CAACP,KAAK,CAAC,CAAC;OAC9D,CAAC;MACJQ,SAAS,EAAEA,CAAA,KAAM3B,OAAO,CAACwB,IAAI,CAAC,CAACf,EAAE,EAAE,CAAC,CAAC;KACtC,CAAC,CACH;IAEH,OAAOvB,IAAI,CACT6B,MAAM,EACNhC,MAAM,CAACoD,QAAQ,CAACpD,MAAM,CAACqD,IAAI,CAAC,MAAMlC,QAAQ,CAACmC,MAAM,CAAC5B,EAAE,CAAC,CAAC,CAAC,EACvD1B,MAAM,CAACuD,IAAI,EACXvD,MAAM,CAACwB,GAAG,CAAEG,KAAK,IAAK3B,MAAM,CAACqD,IAAI,CAAC,MAAMlC,QAAQ,CAACqC,GAAG,CAAC9B,EAAE,EAAEC,KAAK,CAAC,CAAC,CAAC,CAClE;EACH,CAAC,CAAC,EACF3B,MAAM,CAACyD,OAAO,CACf;EAED,OAAO,OAAO1C,CAAC,CACbf,MAAM,CAAC0D,GAAG,CAAC,CACTrC,cAAc,EACdnB,KAAK,CAACyD,IAAI,CAAC1C,OAAO,CAACU,KAAK,CAAC,CAC1B,EAAE;IAAEiC,WAAW,EAAE,WAAW;IAAEC,OAAO,EAAE;EAAI,CAAE,CAAqD,CACpG;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"workerRunner.js","names":["Schema","Serializable","Cause","Context","Effect","Either","Fiber","pipe","Predicate","Queue","Stream","Transferable","PlatformRunnerTypeId","Symbol","for","PlatformRunner","Tag","make","process","options","gen","_","platform","backing","start","fiberMap","Map","handleRequests","take","queue","tap","req","id","fiber","get","unit","interrupt","stream","effect","isEffect","matchCauseEffect","onFailure","cause","match","failureOrCause","onLeft","error","send","onRight","squash","onSuccess","data","transfers","undefined","payload","encode","item","runDrain","ensuring","sync","delete","fork","set","forever","all","join","concurrency","discard","makeSerialized","schema","handlers","parseRequest","decode","effectTags","Set","request","hasProperty","has","_tag","flatMap","handler","dieMessage","encodeSuccess","successSchema","matchEffect","serializeFailure","fail","add","catchAll","mapEffect","message"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.33.1",
3
+ "version": "0.35.0",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -15,183 +15,180 @@
15
15
  "path-browserify": "^1.0.1"
16
16
  },
17
17
  "peerDependencies": {
18
- "@effect/schema": "^0.52.0",
19
- "effect": "2.0.0-next.59"
18
+ "@effect/schema": "^0.53.1",
19
+ "effect": "2.0.0-next.60"
20
20
  },
21
- "main": "./index.js",
22
- "module": "./dist/esm/index.js",
23
- "types": "./dist/dts/index.d.ts",
24
21
  "exports": {
25
22
  "./package.json": "./package.json",
26
- ".": {
27
- "types": "./dist/dts/index.d.ts",
28
- "import": "./dist/esm/index.js",
29
- "default": "./index.js"
30
- },
31
23
  "./Command": {
32
24
  "types": "./dist/dts/Command.d.ts",
33
25
  "import": "./dist/esm/Command.js",
34
- "default": "./Command.js"
26
+ "default": "./dist/cjs/Command.js"
35
27
  },
36
28
  "./CommandExecutor": {
37
29
  "types": "./dist/dts/CommandExecutor.d.ts",
38
30
  "import": "./dist/esm/CommandExecutor.js",
39
- "default": "./CommandExecutor.js"
31
+ "default": "./dist/cjs/CommandExecutor.js"
40
32
  },
41
33
  "./Effectify": {
42
34
  "types": "./dist/dts/Effectify.d.ts",
43
35
  "import": "./dist/esm/Effectify.js",
44
- "default": "./Effectify.js"
36
+ "default": "./dist/cjs/Effectify.js"
45
37
  },
46
38
  "./Error": {
47
39
  "types": "./dist/dts/Error.d.ts",
48
40
  "import": "./dist/esm/Error.js",
49
- "default": "./Error.js"
41
+ "default": "./dist/cjs/Error.js"
50
42
  },
51
43
  "./FileSystem": {
52
44
  "types": "./dist/dts/FileSystem.d.ts",
53
45
  "import": "./dist/esm/FileSystem.js",
54
- "default": "./FileSystem.js"
46
+ "default": "./dist/cjs/FileSystem.js"
55
47
  },
56
48
  "./Http/App": {
57
49
  "types": "./dist/dts/Http/App.d.ts",
58
50
  "import": "./dist/esm/Http/App.js",
59
- "default": "./Http/App.js"
51
+ "default": "./dist/cjs/Http/App.js"
60
52
  },
61
53
  "./Http/Body": {
62
54
  "types": "./dist/dts/Http/Body.d.ts",
63
55
  "import": "./dist/esm/Http/Body.js",
64
- "default": "./Http/Body.js"
56
+ "default": "./dist/cjs/Http/Body.js"
65
57
  },
66
58
  "./Http/Client": {
67
59
  "types": "./dist/dts/Http/Client.d.ts",
68
60
  "import": "./dist/esm/Http/Client.js",
69
- "default": "./Http/Client.js"
61
+ "default": "./dist/cjs/Http/Client.js"
70
62
  },
71
63
  "./Http/ClientError": {
72
64
  "types": "./dist/dts/Http/ClientError.d.ts",
73
65
  "import": "./dist/esm/Http/ClientError.js",
74
- "default": "./Http/ClientError.js"
66
+ "default": "./dist/cjs/Http/ClientError.js"
75
67
  },
76
68
  "./Http/ClientRequest": {
77
69
  "types": "./dist/dts/Http/ClientRequest.d.ts",
78
70
  "import": "./dist/esm/Http/ClientRequest.js",
79
- "default": "./Http/ClientRequest.js"
71
+ "default": "./dist/cjs/Http/ClientRequest.js"
80
72
  },
81
73
  "./Http/ClientResponse": {
82
74
  "types": "./dist/dts/Http/ClientResponse.d.ts",
83
75
  "import": "./dist/esm/Http/ClientResponse.js",
84
- "default": "./Http/ClientResponse.js"
76
+ "default": "./dist/cjs/Http/ClientResponse.js"
85
77
  },
86
78
  "./Http/Etag": {
87
79
  "types": "./dist/dts/Http/Etag.d.ts",
88
80
  "import": "./dist/esm/Http/Etag.js",
89
- "default": "./Http/Etag.js"
81
+ "default": "./dist/cjs/Http/Etag.js"
90
82
  },
91
83
  "./Http/FormData": {
92
84
  "types": "./dist/dts/Http/FormData.d.ts",
93
85
  "import": "./dist/esm/Http/FormData.js",
94
- "default": "./Http/FormData.js"
86
+ "default": "./dist/cjs/Http/FormData.js"
95
87
  },
96
88
  "./Http/Headers": {
97
89
  "types": "./dist/dts/Http/Headers.d.ts",
98
90
  "import": "./dist/esm/Http/Headers.js",
99
- "default": "./Http/Headers.js"
91
+ "default": "./dist/cjs/Http/Headers.js"
100
92
  },
101
93
  "./Http/IncomingMessage": {
102
94
  "types": "./dist/dts/Http/IncomingMessage.d.ts",
103
95
  "import": "./dist/esm/Http/IncomingMessage.js",
104
- "default": "./Http/IncomingMessage.js"
96
+ "default": "./dist/cjs/Http/IncomingMessage.js"
105
97
  },
106
98
  "./Http/Method": {
107
99
  "types": "./dist/dts/Http/Method.d.ts",
108
100
  "import": "./dist/esm/Http/Method.js",
109
- "default": "./Http/Method.js"
101
+ "default": "./dist/cjs/Http/Method.js"
110
102
  },
111
103
  "./Http/Middleware": {
112
104
  "types": "./dist/dts/Http/Middleware.d.ts",
113
105
  "import": "./dist/esm/Http/Middleware.js",
114
- "default": "./Http/Middleware.js"
106
+ "default": "./dist/cjs/Http/Middleware.js"
115
107
  },
116
108
  "./Http/Platform": {
117
109
  "types": "./dist/dts/Http/Platform.d.ts",
118
110
  "import": "./dist/esm/Http/Platform.js",
119
- "default": "./Http/Platform.js"
111
+ "default": "./dist/cjs/Http/Platform.js"
120
112
  },
121
113
  "./Http/Router": {
122
114
  "types": "./dist/dts/Http/Router.d.ts",
123
115
  "import": "./dist/esm/Http/Router.js",
124
- "default": "./Http/Router.js"
116
+ "default": "./dist/cjs/Http/Router.js"
125
117
  },
126
118
  "./Http/Server": {
127
119
  "types": "./dist/dts/Http/Server.d.ts",
128
120
  "import": "./dist/esm/Http/Server.js",
129
- "default": "./Http/Server.js"
121
+ "default": "./dist/cjs/Http/Server.js"
130
122
  },
131
123
  "./Http/ServerError": {
132
124
  "types": "./dist/dts/Http/ServerError.d.ts",
133
125
  "import": "./dist/esm/Http/ServerError.js",
134
- "default": "./Http/ServerError.js"
126
+ "default": "./dist/cjs/Http/ServerError.js"
135
127
  },
136
128
  "./Http/ServerRequest": {
137
129
  "types": "./dist/dts/Http/ServerRequest.d.ts",
138
130
  "import": "./dist/esm/Http/ServerRequest.js",
139
- "default": "./Http/ServerRequest.js"
131
+ "default": "./dist/cjs/Http/ServerRequest.js"
140
132
  },
141
133
  "./Http/ServerResponse": {
142
134
  "types": "./dist/dts/Http/ServerResponse.d.ts",
143
135
  "import": "./dist/esm/Http/ServerResponse.js",
144
- "default": "./Http/ServerResponse.js"
136
+ "default": "./dist/cjs/Http/ServerResponse.js"
145
137
  },
146
138
  "./Http/UrlParams": {
147
139
  "types": "./dist/dts/Http/UrlParams.d.ts",
148
140
  "import": "./dist/esm/Http/UrlParams.js",
149
- "default": "./Http/UrlParams.js"
141
+ "default": "./dist/cjs/Http/UrlParams.js"
150
142
  },
151
143
  "./HttpClient": {
152
144
  "types": "./dist/dts/HttpClient.d.ts",
153
145
  "import": "./dist/esm/HttpClient.js",
154
- "default": "./HttpClient.js"
146
+ "default": "./dist/cjs/HttpClient.js"
155
147
  },
156
148
  "./HttpServer": {
157
149
  "types": "./dist/dts/HttpServer.d.ts",
158
150
  "import": "./dist/esm/HttpServer.js",
159
- "default": "./HttpServer.js"
151
+ "default": "./dist/cjs/HttpServer.js"
160
152
  },
161
153
  "./KeyValueStore": {
162
154
  "types": "./dist/dts/KeyValueStore.d.ts",
163
155
  "import": "./dist/esm/KeyValueStore.js",
164
- "default": "./KeyValueStore.js"
156
+ "default": "./dist/cjs/KeyValueStore.js"
165
157
  },
166
158
  "./Path": {
167
159
  "types": "./dist/dts/Path.d.ts",
168
160
  "import": "./dist/esm/Path.js",
169
- "default": "./Path.js"
161
+ "default": "./dist/cjs/Path.js"
170
162
  },
171
163
  "./Runtime": {
172
164
  "types": "./dist/dts/Runtime.d.ts",
173
165
  "import": "./dist/esm/Runtime.js",
174
- "default": "./Runtime.js"
166
+ "default": "./dist/cjs/Runtime.js"
175
167
  },
176
168
  "./Terminal": {
177
169
  "types": "./dist/dts/Terminal.d.ts",
178
170
  "import": "./dist/esm/Terminal.js",
179
- "default": "./Terminal.js"
171
+ "default": "./dist/cjs/Terminal.js"
172
+ },
173
+ "./Transferable": {
174
+ "types": "./dist/dts/Transferable.d.ts",
175
+ "import": "./dist/esm/Transferable.js",
176
+ "default": "./dist/cjs/Transferable.js"
180
177
  },
181
178
  "./Worker": {
182
179
  "types": "./dist/dts/Worker.d.ts",
183
180
  "import": "./dist/esm/Worker.js",
184
- "default": "./Worker.js"
181
+ "default": "./dist/cjs/Worker.js"
185
182
  },
186
183
  "./WorkerError": {
187
184
  "types": "./dist/dts/WorkerError.d.ts",
188
185
  "import": "./dist/esm/WorkerError.js",
189
- "default": "./WorkerError.js"
186
+ "default": "./dist/cjs/WorkerError.js"
190
187
  },
191
188
  "./WorkerRunner": {
192
189
  "types": "./dist/dts/WorkerRunner.d.ts",
193
190
  "import": "./dist/esm/WorkerRunner.js",
194
- "default": "./WorkerRunner.js"
191
+ "default": "./dist/cjs/WorkerRunner.js"
195
192
  }
196
193
  },
197
194
  "typesVersions": {
@@ -286,6 +283,9 @@
286
283
  "Terminal": [
287
284
  "./dist/dts/Terminal.d.ts"
288
285
  ],
286
+ "Transferable": [
287
+ "./dist/dts/Transferable.d.ts"
288
+ ],
289
289
  "Worker": [
290
290
  "./dist/dts/Worker.d.ts"
291
291
  ],
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ /**
6
+ * @since 1.0.0
7
+ * @category symbols
8
+ */
9
+ export const symbol = Symbol.for("@effect/platform/Transferable")
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category models
14
+ */
15
+ export interface Transferable {
16
+ readonly [symbol]: () => ReadonlyArray<globalThis.Transferable>
17
+ }
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category accessors
22
+ */
23
+ export const get = (u: unknown): ReadonlyArray<globalThis.Transferable> => {
24
+ if (typeof u === "object" && u !== null && symbol in u) {
25
+ return (u as Transferable)[symbol]()
26
+ }
27
+ return []
28
+ }
package/src/Worker.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import type * as ParseResult from "@effect/schema/ParseResult"
5
+ import type * as Schema from "@effect/schema/Schema"
6
+ import type * as Serializable from "@effect/schema/Serializable"
4
7
  import type * as Context from "effect/Context"
5
8
  import type * as Duration from "effect/Duration"
6
9
  import type * as Effect from "effect/Effect"
@@ -210,3 +213,110 @@ export const makePoolLayer: <W>(
210
213
  tag: Context.Tag<Tag, WorkerPool<I, E, O>>,
211
214
  options: WorkerPool.Options<I, W>
212
215
  ) => Layer.Layer<never, never, Tag> = internal.makePoolLayer
216
+
217
+ /**
218
+ * @since 1.0.0
219
+ * @category models
220
+ */
221
+ export interface SerializedWorker<I extends Schema.TaggedRequest.Any> {
222
+ readonly id: number
223
+ readonly join: Effect.Effect<never, WorkerError, never>
224
+ readonly execute: <Req extends I>(
225
+ message: Req
226
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
227
+ ? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
228
+ : never
229
+ readonly executeEffect: <Req extends I>(
230
+ message: Req
231
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
232
+ ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
233
+ : never
234
+ }
235
+
236
+ /**
237
+ * @since 1.0.0
238
+ * @category models
239
+ */
240
+ export declare namespace SerializedWorker {
241
+ /**
242
+ * @since 1.0.0
243
+ * @category models
244
+ */
245
+ export interface Options<I, W = unknown> {
246
+ readonly spawn: (id: number) => W
247
+ readonly permits?: number
248
+ readonly queue?: WorkerQueue<I>
249
+ }
250
+ }
251
+
252
+ /**
253
+ * @since 1.0.0
254
+ * @category models
255
+ */
256
+ export interface SerializedWorkerPool<I extends Schema.TaggedRequest.Any> {
257
+ readonly backing: Pool.Pool<WorkerError, SerializedWorker<I>>
258
+ readonly broadcast: <Req extends I>(
259
+ message: Req
260
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer _A>
261
+ ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, void>
262
+ : never
263
+ readonly execute: <Req extends I>(
264
+ message: Req
265
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
266
+ ? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
267
+ : never
268
+ readonly executeEffect: <Req extends I>(
269
+ message: Req
270
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
271
+ ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
272
+ : never
273
+ }
274
+
275
+ /**
276
+ * @since 1.0.0
277
+ * @category models
278
+ */
279
+ export declare namespace SerializedWorkerPool {
280
+ /**
281
+ * @since 1.0.0
282
+ * @category models
283
+ */
284
+ export type Options<I, W = unknown> =
285
+ & SerializedWorker.Options<I, W>
286
+ & ({
287
+ readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
288
+ readonly size: number
289
+ } | {
290
+ readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
291
+ readonly minSize: number
292
+ readonly maxSize: number
293
+ readonly timeToLive: Duration.DurationInput
294
+ })
295
+ }
296
+
297
+ /**
298
+ * @since 1.0.0
299
+ * @category constructors
300
+ */
301
+ export const makeSerialized: <I extends Schema.TaggedRequest.Any, W = unknown>(
302
+ options: SerializedWorker.Options<I, W>
303
+ ) => Effect.Effect<WorkerManager | Scope.Scope, WorkerError, SerializedWorker<I>> = internal.makeSerialized
304
+
305
+ /**
306
+ * @since 1.0.0
307
+ * @category constructors
308
+ */
309
+ export const makePoolSerialized: <W>() => <I extends Schema.TaggedRequest.Any>(
310
+ options: SerializedWorkerPool.Options<I, W>
311
+ ) => Effect.Effect<WorkerManager | Scope.Scope, never, SerializedWorkerPool<I>> = internal.makePoolSerialized
312
+
313
+ /**
314
+ * @since 1.0.0
315
+ * @category layers
316
+ */
317
+ export const makePoolSerializedLayer: <W>(
318
+ managerLayer: Layer.Layer<never, never, WorkerManager>
319
+ ) => <Tag, I extends Schema.TaggedRequest.Any>(
320
+ tag: Context.Tag<Tag, SerializedWorkerPool<I>>,
321
+ options: SerializedWorkerPool.Options<I, W>
322
+ ) => Layer.Layer<never, never, Tag> = internal.makePoolSerializedLayer
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import type * as Schema from "@effect/schema/Schema"
5
+ import type * as Serializable from "@effect/schema/Serializable"
4
6
  import type * as Context from "effect/Context"
5
7
  import type * as Effect from "effect/Effect"
6
8
  import type * as Fiber from "effect/Fiber"
@@ -82,3 +84,27 @@ export const make: <I, R, E, O>(
82
84
  process: (request: I) => Stream.Stream<R, E, O> | Effect.Effect<R, E, O>,
83
85
  options?: Runner.Options<O> | undefined
84
86
  ) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError, never> = internal.make
87
+
88
+ /**
89
+ * @since 1.0.0
90
+ * @category constructors
91
+ */
92
+ export const makeSerialized: <
93
+ I,
94
+ A extends Schema.TaggedRequest.Any,
95
+ Handlers extends {
96
+ readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends
97
+ Serializable.SerializableWithResult<infer _IS, infer S, infer _IE, infer E, infer _IO, infer O>
98
+ ? (_: S) => Stream.Stream<any, E, O> | Effect.Effect<any, E, O> :
99
+ never
100
+ }
101
+ >(
102
+ schema: Schema.Schema<I, A>,
103
+ handlers: Handlers
104
+ ) => Effect.Effect<
105
+ | PlatformRunner
106
+ | Scope.Scope
107
+ | (ReturnType<Handlers[keyof Handlers]> extends Stream.Stream<infer R, infer _E, infer _A> ? R : never),
108
+ WorkerError,
109
+ never
110
+ > = internal.makeSerialized
@@ -1,3 +1,5 @@
1
+ import * as Schema from "@effect/schema/Schema"
2
+ import * as Serializable from "@effect/schema/Serializable"
1
3
  import * as Cause from "effect/Cause"
2
4
  import * as Channel from "effect/Channel"
3
5
  import * as Chunk from "effect/Chunk"
@@ -10,7 +12,9 @@ import { identity, pipe } from "effect/Function"
10
12
  import * as Layer from "effect/Layer"
11
13
  import * as Pool from "effect/Pool"
12
14
  import * as Queue from "effect/Queue"
15
+ import type * as Scope from "effect/Scope"
13
16
  import * as Stream from "effect/Stream"
17
+ import * as Transferable from "../Transferable.js"
14
18
  import type * as Worker from "../Worker.js"
15
19
  import type { WorkerError } from "../WorkerError.js"
16
20
 
@@ -284,3 +288,110 @@ export const makePoolLayer = <W>(managerLayer: Layer.Layer<never, never, Worker.
284
288
  tag: Context.Tag<Tag, Worker.WorkerPool<I, E, O>>,
285
289
  options: Worker.WorkerPool.Options<I, W>
286
290
  ) => Layer.scoped(tag, makePool<W>()(options)).pipe(Layer.provide(managerLayer))
291
+
292
+ /** @internal */
293
+ export const makeSerialized = <
294
+ I extends Schema.TaggedRequest.Any,
295
+ W = unknown
296
+ >(
297
+ options: Worker.SerializedWorker.Options<I, W>
298
+ ): Effect.Effect<Worker.WorkerManager | Scope.Scope, WorkerError, Worker.SerializedWorker<I>> =>
299
+ Effect.gen(function*(_) {
300
+ const manager = yield* _(WorkerManager)
301
+ const backing = yield* _(
302
+ manager.spawn({
303
+ ...options,
304
+ transfers(message) {
305
+ return Transferable.get(message)
306
+ }
307
+ })
308
+ )
309
+ const execute = <Req extends I>(message: Req) => {
310
+ const parseSuccess = Schema.decode(Serializable.successSchema(message as any))
311
+ const parseFailure = Schema.decode(Serializable.failureSchema(message as any))
312
+ return pipe(
313
+ Serializable.serialize(message),
314
+ Stream.flatMap((message) => backing.execute(message)),
315
+ Stream.catchAll((error) => Effect.flatMap(parseFailure(error), Effect.fail)),
316
+ Stream.mapEffect(parseSuccess)
317
+ )
318
+ }
319
+ const executeEffect = <Req extends I>(message: Req) => {
320
+ const parseSuccess = Schema.decode(Serializable.successSchema(message as any))
321
+ const parseFailure = Schema.decode(Serializable.failureSchema(message as any))
322
+ return pipe(
323
+ Serializable.serialize(message),
324
+ Effect.flatMap((message) => backing.executeEffect(message)),
325
+ Effect.matchEffect({
326
+ onFailure: (error) => Effect.flatMap(parseFailure(error), Effect.fail),
327
+ onSuccess: parseSuccess
328
+ })
329
+ )
330
+ }
331
+ return identity<Worker.SerializedWorker<I>>({
332
+ id: backing.id,
333
+ join: backing.join,
334
+ execute: execute as any,
335
+ executeEffect: executeEffect as any
336
+ })
337
+ })
338
+
339
+ /** @internal */
340
+ export const makePoolSerialized = <W>() =>
341
+ <I extends Schema.TaggedRequest.Any>(
342
+ options: Worker.SerializedWorkerPool.Options<I, W>
343
+ ) =>
344
+ Effect.gen(function*(_) {
345
+ const manager = yield* _(WorkerManager)
346
+ const workers = new Set<Worker.SerializedWorker<I>>()
347
+ const acquire = pipe(
348
+ makeSerialized<I, W>(options),
349
+ Effect.tap((worker) => Effect.sync(() => workers.add(worker))),
350
+ Effect.tap((worker) => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))),
351
+ options.onCreate ? Effect.tap(options.onCreate) : identity,
352
+ Effect.provideService(WorkerManager, manager)
353
+ )
354
+ const backing = yield* _(
355
+ "timeToLive" in options ?
356
+ Pool.makeWithTTL({
357
+ acquire,
358
+ min: options.minSize,
359
+ max: options.maxSize,
360
+ timeToLive: options.timeToLive
361
+ }) :
362
+ Pool.make({
363
+ acquire,
364
+ size: options.size
365
+ })
366
+ )
367
+ const pool: Worker.SerializedWorkerPool<I> = {
368
+ backing,
369
+ broadcast: <Req extends I>(message: Req) =>
370
+ Effect.forEach(workers, (worker) => worker.executeEffect(message), {
371
+ concurrency: "unbounded",
372
+ discard: true
373
+ }) as any,
374
+ execute: <Req extends I>(message: Req) =>
375
+ Stream.unwrap(
376
+ Effect.map(
377
+ Effect.scoped(backing.get),
378
+ (worker) => worker.execute(message)
379
+ )
380
+ ) as any,
381
+ executeEffect: <Req extends I>(message: Req) =>
382
+ Effect.flatMap(
383
+ Effect.scoped(backing.get),
384
+ (worker) => worker.executeEffect(message)
385
+ ) as any
386
+ }
387
+
388
+ return pool
389
+ })
390
+
391
+ /** @internal */
392
+ export const makePoolSerializedLayer =
393
+ <W>(managerLayer: Layer.Layer<never, never, Worker.WorkerManager>) =>
394
+ <Tag, I extends Schema.TaggedRequest.Any>(
395
+ tag: Context.Tag<Tag, Worker.SerializedWorkerPool<I>>,
396
+ options: Worker.SerializedWorkerPool.Options<I, W>
397
+ ) => Layer.scoped(tag, makePoolSerialized<W>()(options)).pipe(Layer.provide(managerLayer))