effect-app 4.0.0-beta.200 → 4.0.0-beta.202
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/CHANGELOG.md +35 -0
- package/dist/Schema/brand.d.ts +3 -6
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +1 -1
- package/dist/Schema/moreStrings.d.ts +18 -106
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/numbers.d.ts +15 -127
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/strings.d.ts +5 -37
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/client/apiClientFactory.d.ts +2 -2
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +23 -23
- package/dist/client/clientFor.d.ts +11 -1
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +1 -1
- package/dist/client/makeClient.d.ts +52 -52
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +5 -4
- package/dist/middleware.d.ts +8 -9
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +8 -6
- package/dist/rpc/Invalidation.d.ts +9 -4
- package/dist/rpc/Invalidation.d.ts.map +1 -1
- package/dist/rpc/Invalidation.js +3 -3
- package/dist/rpc/MiddlewareMaker.d.ts +1 -1
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +7 -10
- package/package.json +1 -1
- package/src/Schema/brand.ts +19 -7
- package/src/client/apiClientFactory.ts +24 -27
- package/src/client/clientFor.ts +11 -0
- package/src/client/makeClient.ts +13 -6
- package/src/middleware.ts +7 -5
- package/src/rpc/Invalidation.ts +8 -3
- package/src/rpc/MiddlewareMaker.ts +6 -10
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/dist/stream-error.types.d.ts +2 -0
- package/test/dist/stream-error.types.d.ts.map +1 -0
- package/test/dist/stream-error.types.js +27 -0
- package/test/rpc.test.ts +4 -1
|
@@ -7,7 +7,6 @@ import { type HandlersFrom } from "effect/unstable/rpc/RpcGroup"
|
|
|
7
7
|
import * as Context from "../Context.js"
|
|
8
8
|
import { PreludeLogger } from "../logger.js"
|
|
9
9
|
import { type TypeTestId } from "../TypeTest.js"
|
|
10
|
-
import { typedValuesOf } from "../utils.js"
|
|
11
10
|
import { type GetContextConfig, type RequestContextMapTagAny, type RpcContextMap } from "./RpcContextMap.js"
|
|
12
11
|
import { type AddMiddleware, type AnyDynamic, type RpcDynamic, type RpcMiddlewareV4, type TagClassAny } from "./RpcMiddleware.js"
|
|
13
12
|
import * as RpcMiddlewareX from "./RpcMiddleware.js"
|
|
@@ -424,19 +423,16 @@ export const Tag = <Self>() =>
|
|
|
424
423
|
{
|
|
425
424
|
const config = options?.config ?? {} as Config
|
|
426
425
|
|
|
427
|
-
//
|
|
428
|
-
//
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
const [firstError, ...restErrors] = allErrors
|
|
433
|
-
const newError = firstError ? S.Union([firstError, ...restErrors]) : S.Never
|
|
434
|
-
|
|
426
|
+
// The rpc's `error` schema carries ONLY the request's own declared errors.
|
|
427
|
+
// Middleware errors (rcm-derived) reach the wire via the middleware tag
|
|
428
|
+
// attached to the rpc group later (`RpcGroup.middleware(...)` at the
|
|
429
|
+
// routing/client level), and are unioned into the failure schema by
|
|
430
|
+
// `Rpc.exitSchema`'s `rpc.middlewares[*].error` walk.
|
|
435
431
|
// @ts-expect-error — TypeScript can't prove Simplify<T> ≡ { [K in keyof T]: T[K] } for unresolved generics (primaryKey)
|
|
436
432
|
const rpc = Rpc.make(tag, {
|
|
437
433
|
...options?.payload !== undefined ? { payload: options.payload } : {},
|
|
438
434
|
...options?.success !== undefined ? { success: options.success } : {},
|
|
439
|
-
error:
|
|
435
|
+
...options?.error !== undefined ? { error: options.error } : {},
|
|
440
436
|
...options?.stream !== undefined ? { stream: options.stream } : {},
|
|
441
437
|
...options?.primaryKey !== undefined ? { primaryKey: options.primaryKey } : {}
|
|
442
438
|
}) as any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.test.d.ts","sourceRoot":"","sources":["../rpc.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAErF,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG
|
|
1
|
+
{"version":3,"file":"rpc.test.d.ts","sourceRoot":"","sources":["../rpc.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAErF,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKL,qBAAa,KAAM,SAAQ,UAQzB;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-error.types.d.ts","sourceRoot":"","sources":["../stream-error.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { S } from "effect-app";
|
|
2
|
+
import { makeRpcClient } from "effect-app/client";
|
|
3
|
+
class GeneralError extends S.TaggedError("GeneralError")("GeneralError", {
|
|
4
|
+
message: S.String
|
|
5
|
+
}) {
|
|
6
|
+
}
|
|
7
|
+
class CustomError extends S.TaggedError("CustomError")("CustomError", {
|
|
8
|
+
reason: S.String
|
|
9
|
+
}) {
|
|
10
|
+
}
|
|
11
|
+
const { TaggedRequestFor } = makeRpcClient({ config: {} }, GeneralError);
|
|
12
|
+
const Req = TaggedRequestFor("Test");
|
|
13
|
+
class StreamWithError extends Req.Stream()("StreamWithError", {}, {
|
|
14
|
+
success: S.Number,
|
|
15
|
+
error: CustomError
|
|
16
|
+
}) {
|
|
17
|
+
}
|
|
18
|
+
const _check = true;
|
|
19
|
+
const _check2 = true;
|
|
20
|
+
class StreamNoError extends Req.Stream()("StreamNoError", {}, {
|
|
21
|
+
success: S.Number
|
|
22
|
+
}) {
|
|
23
|
+
}
|
|
24
|
+
const _check3 = true;
|
|
25
|
+
const _check4 = true;
|
|
26
|
+
console.log("ok");
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWVycm9yLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3RyZWFtLWVycm9yLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWpELE1BQU0sWUFBYSxTQUFRLENBQUMsQ0FBQyxXQUFXLENBQWUsY0FBYyxDQUFDLENBQUMsY0FBYyxFQUFFO0lBQ3JGLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTTtDQUNsQixDQUFDO0NBQUc7QUFFTCxNQUFNLFdBQVksU0FBUSxDQUFDLENBQUMsV0FBVyxDQUFjLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRTtJQUNqRixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDakIsQ0FBQztDQUFHO0FBRUwsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQVMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFBO0FBQy9FLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBRXBDLE1BQU0sZUFBZ0IsU0FBUSxHQUFHLENBQUMsTUFBTSxFQUFtQixDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtJQUNqRixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDakIsS0FBSyxFQUFFLFdBQVc7Q0FDbkIsQ0FBQztDQUFHO0FBR0wsTUFBTSxNQUFNLEdBQXdELElBQUksQ0FBQTtBQUN4RSxNQUFNLE9BQU8sR0FBd0QsSUFBSSxDQUFBO0FBRXpFLE1BQU0sYUFBYyxTQUFRLEdBQUcsQ0FBQyxNQUFNLEVBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRTtJQUMzRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07Q0FDbEIsQ0FBQztDQUFHO0FBRUwsTUFBTSxPQUFPLEdBQTJDLElBQUksQ0FBQTtBQUM1RCxNQUFNLE9BQU8sR0FBMkMsSUFBSSxDQUFBO0FBRTVELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUEifQ==
|
package/test/rpc.test.ts
CHANGED
|
@@ -47,7 +47,10 @@ test("ForceVoid decodes and encodes as void", () => {
|
|
|
47
47
|
readonly newUsersLast24Hours: number
|
|
48
48
|
readonly newUsersLastWeek: number
|
|
49
49
|
}>()
|
|
50
|
-
|
|
50
|
+
// Resource error carries only `config.error` (and optional `generalErrors`); rcm-derived
|
|
51
|
+
// middleware errors no longer leak into `resource.error` — they reach the wire via the
|
|
52
|
+
// middleware tag attached to the rpc group (`rpc.middlewares[*].error` failure-union).
|
|
53
|
+
expectTypeOf<typeof _statsError>().toEqualTypeOf<never>()
|
|
51
54
|
expectTypeOf<typeof _statsRequestType>().toEqualTypeOf<"query">()
|
|
52
55
|
expectTypeOf(statsFromMake).toEqualTypeOf<Stats>()
|
|
53
56
|
expectTypeOf(statsFromMakeOption).toEqualTypeOf<Option.Option<Stats>>()
|