@effect/platform 0.34.0 → 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 (40) hide show
  1. package/Transferable/package.json +6 -0
  2. package/dist/cjs/Transferable.js +26 -0
  3. package/dist/cjs/Transferable.js.map +1 -0
  4. package/dist/cjs/Worker.js +16 -1
  5. package/dist/cjs/Worker.js.map +1 -1
  6. package/dist/cjs/WorkerRunner.js +6 -1
  7. package/dist/cjs/WorkerRunner.js.map +1 -1
  8. package/dist/cjs/internal/worker.js +63 -1
  9. package/dist/cjs/internal/worker.js.map +1 -1
  10. package/dist/cjs/internal/workerRunner.js +42 -1
  11. package/dist/cjs/internal/workerRunner.js.map +1 -1
  12. package/dist/dts/Transferable.d.ts +21 -0
  13. package/dist/dts/Transferable.d.ts.map +1 -0
  14. package/dist/dts/Worker.d.ts +72 -0
  15. package/dist/dts/Worker.d.ts.map +1 -1
  16. package/dist/dts/WorkerRunner.d.ts +11 -0
  17. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  18. package/dist/esm/Transferable.js +19 -0
  19. package/dist/esm/Transferable.js.map +1 -0
  20. package/dist/esm/Worker.js +15 -0
  21. package/dist/esm/Worker.js.map +1 -1
  22. package/dist/esm/WorkerRunner.js +5 -0
  23. package/dist/esm/WorkerRunner.js.map +1 -1
  24. package/dist/esm/internal/worker.js +59 -0
  25. package/dist/esm/internal/worker.js.map +1 -1
  26. package/dist/esm/internal/workerRunner.js +40 -0
  27. package/dist/esm/internal/workerRunner.js.map +1 -1
  28. package/package.json +10 -10
  29. package/src/Transferable.ts +28 -0
  30. package/src/Worker.ts +110 -0
  31. package/src/WorkerRunner.ts +26 -0
  32. package/src/internal/worker.ts +111 -0
  33. package/src/internal/workerRunner.ts +69 -0
  34. package/dist/cjs/index.js +0 -60
  35. package/dist/cjs/index.js.map +0 -1
  36. package/dist/dts/index.d.ts +0 -57
  37. package/dist/dts/index.d.ts.map +0 -1
  38. package/dist/esm/index.js +0 -57
  39. package/dist/esm/index.js.map +0 -1
  40. package/src/index.ts +0 -69
@@ -1,11 +1,16 @@
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"
11
+ import type * as Scope from "effect/Scope"
8
12
  import * as Stream from "effect/Stream"
13
+ import * as Transferable from "../Transferable.js"
9
14
  import type * as Worker from "../Worker.js"
10
15
  import type * as WorkerError from "../WorkerError.js"
11
16
  import type * as WorkerRunner from "../WorkerRunner.js"
@@ -90,3 +95,67 @@ export const make = <I, R, E, O>(
90
95
  ], { concurrency: "unbounded", discard: true }) as Effect.Effect<R, WorkerError.WorkerError, never>
91
96
  )
92
97
  })
98
+
99
+ /** @internal */
100
+ export const makeSerialized = <
101
+ I,
102
+ A extends Schema.TaggedRequest.Any,
103
+ const Handlers extends {
104
+ readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends
105
+ Serializable.SerializableWithResult<infer _IS, infer S, infer _IE, infer E, infer _IO, infer O>
106
+ ? (_: S) => Stream.Stream<any, E, O> | Effect.Effect<any, E, O> :
107
+ never
108
+ }
109
+ >(
110
+ schema: Schema.Schema<I, A>,
111
+ handlers: Handlers
112
+ ): Effect.Effect<
113
+ | WorkerRunner.PlatformRunner
114
+ | Scope.Scope
115
+ | (ReturnType<Handlers[keyof Handlers]> extends Stream.Stream<infer R, infer _E, infer _A> ? R : never),
116
+ WorkerError.WorkerError,
117
+ never
118
+ > => {
119
+ const parseRequest = Schema.decode(schema)
120
+ const effectTags = new Set<string>()
121
+ return make((request: I) => {
122
+ if (Predicate.hasProperty(request, "_tag") && effectTags.has(request._tag as string)) {
123
+ return Effect.flatMap(parseRequest(request), (request: A) => {
124
+ const handler =
125
+ (handlers as unknown as Record<string, (req: unknown) => Effect.Effect<never, any, any>>)[request._tag]
126
+ if (!handler) {
127
+ return Effect.dieMessage(`No handler for ${request._tag}`)
128
+ }
129
+ const encodeSuccess = Schema.encode(Serializable.successSchema(request as any))
130
+ return pipe(
131
+ Effect.matchEffect(handler(request), {
132
+ onFailure: (error) => Effect.flatMap(Serializable.serializeFailure(request as any, error), Effect.fail),
133
+ onSuccess: encodeSuccess
134
+ })
135
+ )
136
+ })
137
+ }
138
+
139
+ return Stream.flatMap(parseRequest(request), (request: A) => {
140
+ const handler =
141
+ (handlers as unknown as Record<string, (req: unknown) => Stream.Stream<never, any, any>>)[request._tag]
142
+ if (!handler) {
143
+ return Stream.dieMessage(`No handler for ${request._tag}`)
144
+ }
145
+ const encodeSuccess = Schema.encode(Serializable.successSchema(request as any))
146
+ const stream = handler(request)
147
+ if (Effect.isEffect(stream)) {
148
+ effectTags.add(request._tag)
149
+ }
150
+ return pipe(
151
+ stream,
152
+ Stream.catchAll((error) => Effect.flatMap(Serializable.serializeFailure(request as any, error), Effect.fail)),
153
+ Stream.mapEffect(encodeSuccess)
154
+ )
155
+ })
156
+ }, {
157
+ transfers(message) {
158
+ return Transferable.get(message)
159
+ }
160
+ })
161
+ }
package/dist/cjs/index.js DELETED
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.WorkerRunner = exports.WorkerError = exports.Worker = exports.Terminal = exports.Runtime = exports.Path = exports.KeyValueStore = exports.HttpServer = exports.HttpClient = exports.FileSystem = exports.Error = exports.Effectify = exports.CommandExecutor = exports.Command = void 0;
7
- var _Command = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Command.js"));
8
- exports.Command = _Command;
9
- var _CommandExecutor = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./CommandExecutor.js"));
10
- exports.CommandExecutor = _CommandExecutor;
11
- var _Effectify = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Effectify.js"));
12
- exports.Effectify = _Effectify;
13
- var _Error = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Error.js"));
14
- exports.Error = _Error;
15
- var _FileSystem = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./FileSystem.js"));
16
- exports.FileSystem = _FileSystem;
17
- var _HttpClient = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./HttpClient.js"));
18
- exports.HttpClient = _HttpClient;
19
- var _HttpServer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./HttpServer.js"));
20
- exports.HttpServer = _HttpServer;
21
- var _KeyValueStore = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./KeyValueStore.js"));
22
- exports.KeyValueStore = _KeyValueStore;
23
- var _Path = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Path.js"));
24
- exports.Path = _Path;
25
- var _Runtime = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Runtime.js"));
26
- exports.Runtime = _Runtime;
27
- var _Terminal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Terminal.js"));
28
- exports.Terminal = _Terminal;
29
- var _Worker = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./Worker.js"));
30
- exports.Worker = _Worker;
31
- var _WorkerError = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./WorkerError.js"));
32
- exports.WorkerError = _WorkerError;
33
- var _WorkerRunner = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./WorkerRunner.js"));
34
- exports.WorkerRunner = _WorkerRunner;
35
- function _getRequireWildcardCache(e) {
36
- if ("function" != typeof WeakMap) return null;
37
- var r = new WeakMap(),
38
- t = new WeakMap();
39
- return (_getRequireWildcardCache = function (e) {
40
- return e ? t : r;
41
- })(e);
42
- }
43
- function _interopRequireWildcard(e, r) {
44
- if (!r && e && e.__esModule) return e;
45
- if (null === e || "object" != typeof e && "function" != typeof e) return {
46
- default: e
47
- };
48
- var t = _getRequireWildcardCache(r);
49
- if (t && t.has(e)) return t.get(e);
50
- var n = {
51
- __proto__: null
52
- },
53
- a = Object.defineProperty && Object.getOwnPropertyDescriptor;
54
- for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {
55
- var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
56
- i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
57
- }
58
- return n.default = e, t && t.set(e, n), n;
59
- }
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":""}
@@ -1,57 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- export * as Command from "./Command.js";
5
- /**
6
- * @since 1.0.0
7
- */
8
- export * as CommandExecutor from "./CommandExecutor.js";
9
- /**
10
- * @since 1.0.0
11
- */
12
- export * as Effectify from "./Effectify.js";
13
- /**
14
- * @since 1.0.0
15
- */
16
- export * as Error from "./Error.js";
17
- /**
18
- * @since 1.0.0
19
- */
20
- export * as FileSystem from "./FileSystem.js";
21
- /**
22
- * @since 1.0.0
23
- */
24
- export * as HttpClient from "./HttpClient.js";
25
- /**
26
- * @since 1.0.0
27
- */
28
- export * as HttpServer from "./HttpServer.js";
29
- /**
30
- * @since 1.0.0
31
- */
32
- export * as KeyValueStore from "./KeyValueStore.js";
33
- /**
34
- * @since 1.0.0
35
- */
36
- export * as Path from "./Path.js";
37
- /**
38
- * @since 1.0.0
39
- */
40
- export * as Runtime from "./Runtime.js";
41
- /**
42
- * @since 1.0.0
43
- */
44
- export * as Terminal from "./Terminal.js";
45
- /**
46
- * @since 1.0.0
47
- */
48
- export * as Worker from "./Worker.js";
49
- /**
50
- * @since 1.0.0
51
- */
52
- export * as WorkerError from "./WorkerError.js";
53
- /**
54
- * @since 1.0.0
55
- */
56
- export * as WorkerRunner from "./WorkerRunner.js";
57
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA"}
package/dist/esm/index.js DELETED
@@ -1,57 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- export * as Command from "./Command.js";
5
- /**
6
- * @since 1.0.0
7
- */
8
- export * as CommandExecutor from "./CommandExecutor.js";
9
- /**
10
- * @since 1.0.0
11
- */
12
- export * as Effectify from "./Effectify.js";
13
- /**
14
- * @since 1.0.0
15
- */
16
- export * as Error from "./Error.js";
17
- /**
18
- * @since 1.0.0
19
- */
20
- export * as FileSystem from "./FileSystem.js";
21
- /**
22
- * @since 1.0.0
23
- */
24
- export * as HttpClient from "./HttpClient.js";
25
- /**
26
- * @since 1.0.0
27
- */
28
- export * as HttpServer from "./HttpServer.js";
29
- /**
30
- * @since 1.0.0
31
- */
32
- export * as KeyValueStore from "./KeyValueStore.js";
33
- /**
34
- * @since 1.0.0
35
- */
36
- export * as Path from "./Path.js";
37
- /**
38
- * @since 1.0.0
39
- */
40
- export * as Runtime from "./Runtime.js";
41
- /**
42
- * @since 1.0.0
43
- */
44
- export * as Terminal from "./Terminal.js";
45
- /**
46
- * @since 1.0.0
47
- */
48
- export * as Worker from "./Worker.js";
49
- /**
50
- * @since 1.0.0
51
- */
52
- export * as WorkerError from "./WorkerError.js";
53
- /**
54
- * @since 1.0.0
55
- */
56
- export * as WorkerRunner from "./WorkerRunner.js";
57
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["Command","CommandExecutor","Effectify","Error","FileSystem","HttpClient","HttpServer","KeyValueStore","Path","Runtime","Terminal","Worker","WorkerError","WorkerRunner"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,KAAK,MAAM,YAAY;AAEnC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,IAAI,MAAM,WAAW;AAEjC;;;AAGA,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,MAAM,MAAM,aAAa;AAErC;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB"}
package/src/index.ts DELETED
@@ -1,69 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- export * as Command from "./Command.js"
5
-
6
- /**
7
- * @since 1.0.0
8
- */
9
- export * as CommandExecutor from "./CommandExecutor.js"
10
-
11
- /**
12
- * @since 1.0.0
13
- */
14
- export * as Effectify from "./Effectify.js"
15
-
16
- /**
17
- * @since 1.0.0
18
- */
19
- export * as Error from "./Error.js"
20
-
21
- /**
22
- * @since 1.0.0
23
- */
24
- export * as FileSystem from "./FileSystem.js"
25
-
26
- /**
27
- * @since 1.0.0
28
- */
29
- export * as HttpClient from "./HttpClient.js"
30
-
31
- /**
32
- * @since 1.0.0
33
- */
34
- export * as HttpServer from "./HttpServer.js"
35
-
36
- /**
37
- * @since 1.0.0
38
- */
39
- export * as KeyValueStore from "./KeyValueStore.js"
40
-
41
- /**
42
- * @since 1.0.0
43
- */
44
- export * as Path from "./Path.js"
45
-
46
- /**
47
- * @since 1.0.0
48
- */
49
- export * as Runtime from "./Runtime.js"
50
-
51
- /**
52
- * @since 1.0.0
53
- */
54
- export * as Terminal from "./Terminal.js"
55
-
56
- /**
57
- * @since 1.0.0
58
- */
59
- export * as Worker from "./Worker.js"
60
-
61
- /**
62
- * @since 1.0.0
63
- */
64
- export * as WorkerError from "./WorkerError.js"
65
-
66
- /**
67
- * @since 1.0.0
68
- */
69
- export * as WorkerRunner from "./WorkerRunner.js"