effect-orpc 0.2.1 → 0.3.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/README.md +198 -77
- package/dist/{chunk-VOWRLWZZ.js → chunk-IJP6L2XR.js} +6 -2
- package/dist/chunk-IJP6L2XR.js.map +1 -0
- package/dist/index.js +736 -266
- package/dist/index.js.map +1 -1
- package/dist/node.js +4 -3
- package/dist/node.js.map +1 -1
- package/package.json +1 -1
- package/src/contract.ts +34 -2
- package/src/effect-builder.ts +452 -18
- package/src/effect-procedure.ts +247 -9
- package/src/effect-runtime.ts +453 -21
- package/src/extension/create-node-proxy.ts +17 -1
- package/src/extension/state.ts +13 -15
- package/src/fiber-context-bridge.ts +13 -0
- package/src/node.ts +2 -1
- package/src/runtime-source.ts +18 -0
- package/src/tagged-error.ts +0 -9
- package/src/tests/contract.test.ts +24 -0
- package/src/tests/effect-builder.test.ts +506 -3
- package/src/tests/node-side-effect.test.ts +80 -0
- package/src/tests/parity.effect-builder.test.ts +10 -3
- package/src/tests/parity.effect-procedure.test.ts +24 -8
- package/src/tests/shared.ts +1 -25
- package/src/types/effect-builder-surface.ts +116 -0
- package/src/types/effect-procedure-surface.ts +98 -1
- package/src/types/index.ts +292 -1
- package/src/types/variants.ts +346 -13
- package/dist/chunk-VOWRLWZZ.js.map +0 -1
package/dist/node.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
installFiberContextBridge
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IJP6L2XR.js";
|
|
4
4
|
|
|
5
5
|
// src/node.ts
|
|
6
6
|
import { AsyncLocalStorage } from "async_hooks";
|
|
7
7
|
import { Effect } from "effect";
|
|
8
8
|
var fiberRefsStorage = new AsyncLocalStorage();
|
|
9
9
|
var bridge = {
|
|
10
|
-
getCurrentFiberRefs: () => fiberRefsStorage.getStore()
|
|
10
|
+
getCurrentFiberRefs: () => fiberRefsStorage.getStore(),
|
|
11
|
+
runWithFiberRefs: (fiberRefs, fn) => fiberRefsStorage.run(fiberRefs, fn)
|
|
11
12
|
};
|
|
12
13
|
installFiberContextBridge(bridge);
|
|
13
14
|
function withFiberContext(fn) {
|
|
14
15
|
return Effect.flatMap(
|
|
15
16
|
Effect.getFiberRefs,
|
|
16
|
-
(fiberRefs) => Effect.promise(() =>
|
|
17
|
+
(fiberRefs) => Effect.promise(() => bridge.runWithFiberRefs(fiberRefs, fn))
|
|
17
18
|
);
|
|
18
19
|
}
|
|
19
20
|
export {
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/node.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport type { FiberRefs } from \"effect\";\nimport { Effect } from \"effect\";\n\nimport {\n installFiberContextBridge,\n type FiberContextBridge,\n} from \"./fiber-context-bridge\";\n\nconst fiberRefsStorage = new AsyncLocalStorage<FiberRefs.FiberRefs>();\n\nconst bridge: FiberContextBridge = {\n getCurrentFiberRefs: () => fiberRefsStorage.getStore(),\n};\n\ninstallFiberContextBridge(bridge);\n\nexport function withFiberContext<T>(fn: () => Promise<T>): Effect.Effect<T> {\n return Effect.flatMap(Effect.getFiberRefs, (fiberRefs) =>\n Effect.promise(() =>
|
|
1
|
+
{"version":3,"sources":["../src/node.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport type { FiberRefs } from \"effect\";\nimport { Effect } from \"effect\";\n\nimport {\n installFiberContextBridge,\n type FiberContextBridge,\n} from \"./fiber-context-bridge\";\n\nconst fiberRefsStorage = new AsyncLocalStorage<FiberRefs.FiberRefs>();\n\nconst bridge: FiberContextBridge = {\n getCurrentFiberRefs: () => fiberRefsStorage.getStore(),\n runWithFiberRefs: (fiberRefs, fn) => fiberRefsStorage.run(fiberRefs, fn),\n};\n\ninstallFiberContextBridge(bridge);\n\nexport function withFiberContext<T>(fn: () => Promise<T>): Effect.Effect<T> {\n return Effect.flatMap(Effect.getFiberRefs, (fiberRefs) =>\n Effect.promise(() => bridge.runWithFiberRefs!(fiberRefs, fn)),\n );\n}\n"],"mappings":";;;;;AAAA,SAAS,yBAAyB;AAGlC,SAAS,cAAc;AAOvB,IAAM,mBAAmB,IAAI,kBAAuC;AAEpE,IAAM,SAA6B;AAAA,EACjC,qBAAqB,MAAM,iBAAiB,SAAS;AAAA,EACrD,kBAAkB,CAAC,WAAW,OAAO,iBAAiB,IAAI,WAAW,EAAE;AACzE;AAEA,0BAA0B,MAAM;AAEzB,SAAS,iBAAoB,IAAwC;AAC1E,SAAO,OAAO;AAAA,IAAQ,OAAO;AAAA,IAAc,CAAC,cAC1C,OAAO,QAAQ,MAAM,OAAO,iBAAkB,WAAW,EAAE,CAAC;AAAA,EAC9D;AACF;","names":[]}
|
package/package.json
CHANGED
package/src/contract.ts
CHANGED
|
@@ -27,13 +27,15 @@ import type {
|
|
|
27
27
|
} from "@orpc/server";
|
|
28
28
|
import { implement } from "@orpc/server";
|
|
29
29
|
import type { IntersectPick } from "@orpc/shared";
|
|
30
|
-
import type { ManagedRuntime } from "effect";
|
|
30
|
+
import type { Layer, ManagedRuntime } from "effect";
|
|
31
31
|
|
|
32
32
|
import { addSpanStackTrace } from "./effect-builder";
|
|
33
33
|
import { enhanceEffectRouter } from "./effect-enhance-router";
|
|
34
34
|
import { EffectDecoratedProcedure } from "./effect-procedure";
|
|
35
35
|
import { createEffectProcedureHandler } from "./effect-runtime";
|
|
36
36
|
import { effectContractSymbol, getEffectContractErrorMap } from "./eoc";
|
|
37
|
+
import type { EffectRuntimeSource } from "./runtime-source";
|
|
38
|
+
import { toManagedRuntime } from "./runtime-source";
|
|
37
39
|
import type { EffectErrorMap } from "./tagged-error";
|
|
38
40
|
import { effectErrorMapToErrorMap } from "./tagged-error";
|
|
39
41
|
import type { EffectErrorMapToErrorMap, EffectProcedureHandler } from "./types";
|
|
@@ -463,6 +465,21 @@ function wrapContractNode<
|
|
|
463
465
|
>;
|
|
464
466
|
}
|
|
465
467
|
|
|
468
|
+
export function implementEffect<
|
|
469
|
+
TContract extends AnyContractRouter,
|
|
470
|
+
TRequirementsProvided,
|
|
471
|
+
TRuntimeError,
|
|
472
|
+
>(
|
|
473
|
+
contract: TContract,
|
|
474
|
+
layer: Layer.Layer<TRequirementsProvided, TRuntimeError, never>,
|
|
475
|
+
): EffectImplementer<
|
|
476
|
+
TContract,
|
|
477
|
+
Record<never, never>,
|
|
478
|
+
Record<never, never>,
|
|
479
|
+
TRequirementsProvided,
|
|
480
|
+
TRuntimeError
|
|
481
|
+
>;
|
|
482
|
+
|
|
466
483
|
export function implementEffect<
|
|
467
484
|
TContract extends AnyContractRouter,
|
|
468
485
|
TRequirementsProvided,
|
|
@@ -476,11 +493,26 @@ export function implementEffect<
|
|
|
476
493
|
Record<never, never>,
|
|
477
494
|
TRequirementsProvided,
|
|
478
495
|
TRuntimeError
|
|
496
|
+
>;
|
|
497
|
+
|
|
498
|
+
export function implementEffect<
|
|
499
|
+
TContract extends AnyContractRouter,
|
|
500
|
+
TRequirementsProvided,
|
|
501
|
+
TRuntimeError,
|
|
502
|
+
>(
|
|
503
|
+
contract: TContract,
|
|
504
|
+
source: EffectRuntimeSource<TRequirementsProvided, TRuntimeError>,
|
|
505
|
+
): EffectImplementer<
|
|
506
|
+
TContract,
|
|
507
|
+
Record<never, never>,
|
|
508
|
+
Record<never, never>,
|
|
509
|
+
TRequirementsProvided,
|
|
510
|
+
TRuntimeError
|
|
479
511
|
> {
|
|
480
512
|
return wrapContractNode(
|
|
481
513
|
contract,
|
|
482
514
|
implement(contract),
|
|
483
|
-
|
|
515
|
+
toManagedRuntime(source),
|
|
484
516
|
) as EffectImplementer<
|
|
485
517
|
TContract,
|
|
486
518
|
Record<never, never>,
|