effect-app 2.29.0 → 2.30.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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 2.30.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 10a8adf: improve: lock rpc responses to 418/422/200, report otherwise as response error! helping with bad proxies in between.
|
|
8
|
+
- 8be2984: housekeeping: update packages
|
|
9
|
+
|
|
3
10
|
## 2.29.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
package/dist/Schema/ext.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export declare function Array<Value extends Schema.Any>(value: Value): S.Array$<
|
|
|
45
45
|
/**
|
|
46
46
|
* Like the default Schema `ReadonlySet` but with `withDefault` and batching enabled by default
|
|
47
47
|
*/
|
|
48
|
-
export declare const ReadonlySet: <Value extends Schema.Any>(value: Value) => S.
|
|
48
|
+
export declare const ReadonlySet: <Value extends Schema.Any>(value: Value) => S.transform<S.Array$<Value>, S.ReadonlySetFromSelf<S.SchemaClass<Schema.Type<Value>, Schema.Type<Value>, never>>> & {
|
|
49
49
|
withDefault: S.PropertySignature<":", ReadonlySet<Schema.Type<Value>>, never, ":", readonly Schema.Encoded<Value>[], true, Schema.Context<Value>>;
|
|
50
50
|
};
|
|
51
51
|
/**
|
|
@@ -54,7 +54,7 @@ export declare const ReadonlySet: <Value extends Schema.Any>(value: Value) => S.
|
|
|
54
54
|
export declare const ReadonlyMap: <K extends Schema.Any, V extends Schema.Any>(pair: {
|
|
55
55
|
readonly key: K;
|
|
56
56
|
readonly value: V;
|
|
57
|
-
}) => S.
|
|
57
|
+
}) => S.transform<S.Array$<S.Tuple2<K, V>>, S.ReadonlyMapFromSelf<S.SchemaClass<Schema.Type<K>, Schema.Type<K>, never>, S.SchemaClass<Schema.Type<V>, Schema.Type<V>, never>>> & {
|
|
58
58
|
withDefault: S.PropertySignature<":", ReadonlyMap<Schema.Type<K>, Schema.Type<V>>, never, ":", readonly (readonly [Schema.Encoded<K>, Schema.Encoded<V>])[], true, Schema.Context<K> | Schema.Context<V>>;
|
|
59
59
|
};
|
|
60
60
|
/**
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type { Rpc } from "@effect/rpc";
|
|
2
|
+
import type { RpcRouter } from "@effect/rpc/RpcRouter";
|
|
3
3
|
import { HttpClient } from "../http.js";
|
|
4
|
+
import type { RequestResolver, Schema } from "../internal/lib.js";
|
|
5
|
+
import { Config, Context, Effect, HashMap, Layer, Option } from "../internal/lib.js";
|
|
4
6
|
import type { Requests } from "./clientFor.js";
|
|
7
|
+
export declare const make: <R extends RpcRouter<any, any>>(client: HttpClient.HttpClient) => RequestResolver.RequestResolver<Rpc.Request<RpcRouter.Request<R>>, Schema.SerializableWithResult.Context<RpcRouter.Request<R>>>;
|
|
5
8
|
export interface ApiConfig {
|
|
6
9
|
url: string;
|
|
7
10
|
headers: Option<HashMap<string, string>>;
|
|
@@ -31,7 +34,7 @@ declare const ApiClientFactory_base: (abstract new (service: (requestLevelLayers
|
|
|
31
34
|
raw: import("./clientFor.js").RequestHandler<Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
|
|
32
35
|
} : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
|
|
33
36
|
raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
|
|
34
|
-
}; } : never) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E,
|
|
37
|
+
}; } : never) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | ApiClientFactory> : Effect.Effect<X, never, ApiClientFactory>;
|
|
35
38
|
};
|
|
36
39
|
/**
|
|
37
40
|
* Used to create clients for resource modules.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAY,UAAU,EAAyC,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAQ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAwB,MAAM,oBAAoB,CAAA;AAEhH,OAAO,KAAK,EAAU,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEtD,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,UACxC,UAAU,CAAC,UAAU,KAC5B,eAAe,CAAC,eAAe,CAChC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACjC,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAYrD,CAAA;AAER,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACzC;AAED,eAAO,MAAM,gBAAgB;;;EAQ3B,CAAA;kFA0HmD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAGvE,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;+CAJoC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAGvE,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;+EAJoC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAGvE,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;;;;4CAJoC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAGvE,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;AAejB;;GAEG;AACH,qBAAa,gBACX,SAAQ,qBAA8G;IAEtH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAY,SAAS,iEAA+C;IACzF,MAAM,CAAC,QAAQ,CAAC,eAAe,iGAAoE;IAEnG,MAAM,CAAC,QAAQ,CAAC,OAAO,uBACA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,QAAQ,YAAY,CAAC;;;;2CAGjD;CAC5C"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { RpcResolver, RpcResolverNoStream } from "@effect/rpc";
|
|
2
|
+
import { HttpBody, HttpClient, HttpClientRequest, HttpClientResponse } from "../http.js";
|
|
1
3
|
import { Config, Context, Effect, flow, HashMap, Layer, Option, Predicate, S, Struct } from "../internal/lib.js";
|
|
2
|
-
import { RpcResolver } from "@effect/rpc";
|
|
3
|
-
import { HttpRpcResolverNoStream } from "@effect/rpc-http";
|
|
4
|
-
import { HttpClient, HttpClientRequest } from "../http.js";
|
|
5
4
|
import { typedKeysOf } from "../utils.js";
|
|
5
|
+
export const make = (client) => RpcResolverNoStream.make((requests) => client
|
|
6
|
+
.post("", {
|
|
7
|
+
body: HttpBody.unsafeJson(requests)
|
|
8
|
+
})
|
|
9
|
+
.pipe(Effect.flatMap(HttpClientResponse.filterStatus((_) => _ === 200 || _ === 418 || _ === 422)), Effect.flatMap((_) => _.json), Effect.scoped))();
|
|
6
10
|
export const DefaultApiConfig = Config.all({
|
|
7
11
|
url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
|
|
8
12
|
headers: Config
|
|
@@ -24,7 +28,7 @@ const makeApiClientFactory = (config) => Effect.gen(function* () {
|
|
|
24
28
|
const meta = resource.meta;
|
|
25
29
|
if (!meta)
|
|
26
30
|
throw new Error("No meta defined in Resource!");
|
|
27
|
-
const resolver = flow((
|
|
31
|
+
const resolver = flow((make), (_) => RpcResolver.toClient(_));
|
|
28
32
|
const baseClient = HttpClient.mapRequest(client, HttpClientRequest.appendUrl("/" + meta.moduleName));
|
|
29
33
|
return (typedKeysOf(filtered)
|
|
30
34
|
.reduce((prev, cur) => {
|
|
@@ -99,4 +103,4 @@ export class ApiClientFactory extends Context.TagId("ApiClientFactory")() {
|
|
|
99
103
|
.use((apiClientFactory) => apiClientFactory(requestLevelLayers))
|
|
100
104
|
.pipe(Effect.map((f) => f(resource))); // don't rename f to clientFor or integration in vue project linked fucks up
|
|
101
105
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTlELE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhGLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3pDLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUNsQixNQUE2QixFQUk3QixFQUFFLENBQ0YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDcEMsTUFBTTtLQUNILElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDUixJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Q0FDcEMsQ0FBQztLQUNELElBQUksQ0FDSCxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQ2QsQ0FDSixFQUFLLENBQUE7QUFPUixNQUFNLENBQUMs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
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.30.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@effect/rpc": "^0.52.
|
|
8
|
-
"@effect/rpc-http": "^0.50.
|
|
7
|
+
"@effect/rpc": "^0.52.3",
|
|
8
|
+
"@effect/rpc-http": "^0.50.3",
|
|
9
9
|
"@tsconfig/strictest": "^2.0.5",
|
|
10
10
|
"date-fns": "^4.1.0",
|
|
11
|
-
"nanoid": "^5.1.
|
|
11
|
+
"nanoid": "^5.1.2",
|
|
12
12
|
"path-parser": "^6.1.0",
|
|
13
13
|
"query-string": "^9.1.1",
|
|
14
14
|
"ts-pattern": "^5.6.2",
|
|
@@ -22,18 +22,18 @@
|
|
|
22
22
|
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
|
|
23
23
|
"@babel/plugin-syntax-import-attributes": "^7.26.0",
|
|
24
24
|
"@babel/plugin-transform-modules-commonjs": "^7.26.3",
|
|
25
|
-
"babel-plugin-replace-import-extension": "^1.1.
|
|
25
|
+
"babel-plugin-replace-import-extension": "^1.1.5",
|
|
26
26
|
"@faker-js/faker": "^8.4.1",
|
|
27
|
-
"@types/node": "~22.13.
|
|
27
|
+
"@types/node": "~22.13.5",
|
|
28
28
|
"@types/uuid": "^10.0.0",
|
|
29
29
|
"@types/validator": "^13.12.2",
|
|
30
30
|
"fast-check": "~3.23.2",
|
|
31
31
|
"typescript": "^5.7.3",
|
|
32
|
-
"vitest": "^3.0.
|
|
32
|
+
"vitest": "^3.0.7"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"@effect/platform": "^0.77.
|
|
36
|
-
"effect": "^3.13.
|
|
35
|
+
"@effect/platform": "^0.77.3",
|
|
36
|
+
"effect": "^3.13.3"
|
|
37
37
|
},
|
|
38
38
|
"typesVersions": {
|
|
39
39
|
"*": {
|
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import type { Schema } from "../internal/lib.js"
|
|
3
|
-
import { Config, Context, Effect, flow, HashMap, Layer, Option, Predicate, S, Struct } from "../internal/lib.js"
|
|
4
|
-
|
|
5
2
|
import type { Rpc } from "@effect/rpc"
|
|
6
|
-
import { RpcResolver } from "@effect/rpc"
|
|
7
|
-
import { HttpRpcResolverNoStream } from "@effect/rpc-http"
|
|
3
|
+
import { RpcResolver, RpcResolverNoStream } from "@effect/rpc"
|
|
8
4
|
import type { RpcRouter } from "@effect/rpc/RpcRouter"
|
|
9
|
-
import { HttpClient, HttpClientRequest } from "../http.js"
|
|
5
|
+
import { HttpBody, HttpClient, HttpClientRequest, HttpClientResponse } from "../http.js"
|
|
6
|
+
import type { RequestResolver, Schema } from "../internal/lib.js"
|
|
7
|
+
import { Config, Context, Effect, flow, HashMap, Layer, Option, Predicate, S, Struct } from "../internal/lib.js"
|
|
10
8
|
import { typedKeysOf } from "../utils.js"
|
|
11
9
|
import type { Client, Requests } from "./clientFor.js"
|
|
12
10
|
|
|
11
|
+
export const make = <R extends RpcRouter<any, any>>(
|
|
12
|
+
client: HttpClient.HttpClient
|
|
13
|
+
): RequestResolver.RequestResolver<
|
|
14
|
+
Rpc.Request<RpcRouter.Request<R>>,
|
|
15
|
+
Schema.SerializableWithResult.Context<RpcRouter.Request<R>>
|
|
16
|
+
> =>
|
|
17
|
+
RpcResolverNoStream.make((requests) =>
|
|
18
|
+
client
|
|
19
|
+
.post("", {
|
|
20
|
+
body: HttpBody.unsafeJson(requests)
|
|
21
|
+
})
|
|
22
|
+
.pipe(
|
|
23
|
+
Effect.flatMap(HttpClientResponse.filterStatus((_) => _ === 200 || _ === 418 || _ === 422)),
|
|
24
|
+
Effect.flatMap((_) => _.json),
|
|
25
|
+
Effect.scoped
|
|
26
|
+
)
|
|
27
|
+
)<R>()
|
|
28
|
+
|
|
13
29
|
export interface ApiConfig {
|
|
14
30
|
url: string
|
|
15
31
|
headers: Option<HashMap<string, string>>
|
|
@@ -63,7 +79,7 @@ const makeApiClientFactory = (config: ApiConfig) =>
|
|
|
63
79
|
if (!meta) throw new Error("No meta defined in Resource!")
|
|
64
80
|
|
|
65
81
|
const resolver = flow(
|
|
66
|
-
|
|
82
|
+
make<RpcRouter<any, any>>,
|
|
67
83
|
(_) => RpcResolver.toClient(_ as any)
|
|
68
84
|
)
|
|
69
85
|
|