effect-app 1.30.4 → 1.31.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 +18 -0
- package/_cjs/client/clientFor.cjs +19 -19
- package/_cjs/client/clientFor.cjs.map +1 -1
- package/dist/client/clientFor.d.ts +22 -17
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +2 -2
- package/package.json +8 -9
- package/src/client/clientFor.ts +40 -32
- package/test/schema.test.ts +1 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @effect-app/prelude
|
|
2
2
|
|
|
3
|
+
## 1.31.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3872061: migrate to effect/Schema
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [3872061]
|
|
12
|
+
- @effect-app/schema@1.20.0
|
|
13
|
+
- @effect-app/core@1.18.0
|
|
14
|
+
|
|
15
|
+
## 1.30.5
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- e836dcc: cleanup
|
|
20
|
+
|
|
3
21
|
## 1.30.4
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.makeClientFor = makeClientFor;
|
|
7
7
|
exports.makePathWithBody = makePathWithBody;
|
|
8
8
|
exports.makePathWithQuery = makePathWithQuery;
|
|
9
|
-
var _core = require("@effect-app/core");
|
|
10
9
|
var _rpc = require("@effect/rpc");
|
|
11
10
|
var _rpcHttp = require("@effect/rpc-http");
|
|
12
11
|
var _effect = require("effect");
|
|
@@ -15,6 +14,7 @@ var _client = require("effect-app/client");
|
|
|
15
14
|
var _http = require("effect-app/http");
|
|
16
15
|
var _utils = require("effect-app/utils");
|
|
17
16
|
var _queryString = _interopRequireDefault(require("query-string"));
|
|
17
|
+
var _lib = require("../lib.cjs");
|
|
18
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
19
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
20
20
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
@@ -33,10 +33,10 @@ function makePathWithBody(path, pars) {
|
|
|
33
33
|
ignoreConstraints: true
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
const apiClient =
|
|
36
|
+
const apiClient = _lib.Effect.gen(function* () {
|
|
37
37
|
const client = yield* _http.HttpClient.HttpClient;
|
|
38
38
|
const config = yield* _client.ApiConfig.Tag;
|
|
39
|
-
return client.pipe(_http.HttpClient.mapRequest(_http.HttpClientRequest.prependUrl(config.apiUrl + "/rpc")), _http.HttpClient.mapRequest(_http.HttpClientRequest.setHeaders(config.headers.pipe(
|
|
39
|
+
return client.pipe(_http.HttpClient.mapRequest(_http.HttpClientRequest.prependUrl(config.apiUrl + "/rpc")), _http.HttpClient.mapRequest(_http.HttpClientRequest.setHeaders(config.headers.pipe(_lib.Option.getOrElse(() => _lib.HashMap.empty())))));
|
|
40
40
|
});
|
|
41
41
|
function makeClientFor(layers) {
|
|
42
42
|
const cache = new Map();
|
|
@@ -50,17 +50,17 @@ function makeClientFor(layers) {
|
|
|
50
50
|
return m;
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
function clientFor_(models, layers =
|
|
53
|
+
function clientFor_(models, layers = _lib.Layer.empty) {
|
|
54
54
|
const filtered = (0, _utils.typedKeysOf)(models).reduce((acc, cur) => {
|
|
55
|
-
if (
|
|
55
|
+
if (_lib.Predicate.isObject(models[cur]) && models[cur].success) {
|
|
56
56
|
acc[cur] = models[cur];
|
|
57
57
|
}
|
|
58
58
|
return acc;
|
|
59
59
|
}, {});
|
|
60
60
|
const meta = models.meta;
|
|
61
61
|
if (!meta) throw new Error("No meta defined in Resource!");
|
|
62
|
-
const resolver = (0,
|
|
63
|
-
const baseClient = apiClient.pipe(
|
|
62
|
+
const resolver = (0, _lib.flow)(_rpcHttp.HttpRpcResolver.make, _ => _rpc.RpcResolver.toClient(_));
|
|
63
|
+
const baseClient = apiClient.pipe(_lib.Effect.andThen(_http.HttpClient.mapRequest(_http.HttpClientRequest.appendUrl("/" + meta.moduleName))));
|
|
64
64
|
return (0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
|
|
65
65
|
const h = filtered[cur];
|
|
66
66
|
const Request = h;
|
|
@@ -70,45 +70,45 @@ function clientFor_(models, layers = _core.Layer.empty) {
|
|
|
70
70
|
Request,
|
|
71
71
|
name: requestName
|
|
72
72
|
};
|
|
73
|
-
const client = baseClient.pipe(
|
|
74
|
-
const fields =
|
|
73
|
+
const client = baseClient.pipe(_lib.Effect.andThen(_http.HttpClient.mapRequest(_http.HttpClientRequest.appendUrlParam("action", cur))), _lib.Effect.andThen(resolver));
|
|
74
|
+
const fields = _lib.Struct.omit(Request.fields, "_tag");
|
|
75
75
|
// @ts-expect-error doc
|
|
76
76
|
prev[cur] = Object.keys(fields).length === 0 ? {
|
|
77
|
-
handler: client.pipe(
|
|
77
|
+
handler: client.pipe(_lib.Effect.andThen(cl => cl(new Request())), _lib.Effect.withSpan("client.request " + requestName, {
|
|
78
78
|
captureStackTrace: false,
|
|
79
79
|
attributes: {
|
|
80
80
|
"request.name": requestName
|
|
81
81
|
}
|
|
82
|
-
}),
|
|
82
|
+
}), _lib.Effect.provide(layers)),
|
|
83
83
|
...requestMeta,
|
|
84
84
|
raw: {
|
|
85
|
-
handler: client.pipe(
|
|
85
|
+
handler: client.pipe(_lib.Effect.andThen(cl => cl(new Request())), _lib.Effect.flatMap(res => _effectApp.S.encode(Response)(res)),
|
|
86
86
|
// TODO,
|
|
87
|
-
|
|
87
|
+
_lib.Effect.withSpan("client.request " + requestName, {
|
|
88
88
|
captureStackTrace: false,
|
|
89
89
|
attributes: {
|
|
90
90
|
"request.name": requestName
|
|
91
91
|
}
|
|
92
|
-
}),
|
|
92
|
+
}), _lib.Effect.provide(layers)),
|
|
93
93
|
...requestMeta
|
|
94
94
|
}
|
|
95
95
|
} : {
|
|
96
|
-
handler: req => client.pipe(
|
|
96
|
+
handler: req => client.pipe(_lib.Effect.andThen(cl => cl(new Request(req))), _lib.Effect.withSpan("client.request " + requestName, {
|
|
97
97
|
captureStackTrace: false,
|
|
98
98
|
attributes: {
|
|
99
99
|
"request.name": requestName
|
|
100
100
|
}
|
|
101
|
-
}),
|
|
101
|
+
}), _lib.Effect.provide(layers)),
|
|
102
102
|
...requestMeta,
|
|
103
103
|
raw: {
|
|
104
|
-
handler: req => client.pipe(
|
|
104
|
+
handler: req => client.pipe(_lib.Effect.andThen(cl => cl(new Request(req))), _lib.Effect.flatMap(res => _effectApp.S.encode(Response)(res)),
|
|
105
105
|
// TODO,
|
|
106
|
-
|
|
106
|
+
_lib.Effect.withSpan("client.request " + requestName, {
|
|
107
107
|
captureStackTrace: false,
|
|
108
108
|
attributes: {
|
|
109
109
|
"request.name": requestName
|
|
110
110
|
}
|
|
111
|
-
}),
|
|
111
|
+
}), _lib.Effect.provide(layers)),
|
|
112
112
|
...requestMeta
|
|
113
113
|
}
|
|
114
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientFor.cjs","names":["
|
|
1
|
+
{"version":3,"file":"clientFor.cjs","names":["_rpc","require","_rpcHttp","_effect","_effectApp","_client","_http","_utils","_queryString","_interopRequireDefault","_lib","e","__esModule","default","makePathWithQuery","path","pars","forQs","Record","filter","_","k","params","includes","q","build","ignoreSearch","ignoreConstraints","Object","keys","length","qs","stringify","makePathWithBody","apiClient","Effect","gen","client","HttpClient","config","ApiConfig","Tag","pipe","mapRequest","HttpClientRequest","prependUrl","apiUrl","setHeaders","headers","Option","getOrElse","HashMap","empty","makeClientFor","layers","cache","Map","models","found","get","m","clientFor_","set","Layer","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","success","meta","Error","resolver","flow","HttpRpcResolver","make","RpcResolver","toClient","baseClient","andThen","appendUrl","moduleName","prev","h","Request","Response","requestName","replaceAll","requestMeta","name","appendUrlParam","fields","Struct","omit","handler","cl","withSpan","captureStackTrace","attributes","provide","raw","flatMap","res","S","encode","req"],"sources":["../../src/client/clientFor.ts"],"sourcesContent":[null],"mappings":";;;;;;;;AAGA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAGA,IAAAO,YAAA,GAAAC,sBAAA,CAAAR,OAAA;AAEA,IAAAS,IAAA,GAAAT,OAAA;AAAmF,SAAAQ,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAfnF;AACA;;AAgBM,SAAUG,iBAAiBA,CAC/BC,IAAU,EACVC,IASC;EAED,MAAMC,KAAK,GAAGC,cAAM,CAACC,MAAM,CAACH,IAAI,EAAE,CAACI,CAAC,EAAEC,CAAC,KAAK,CAACN,IAAI,CAACO,MAAM,CAACC,QAAQ,CAACF,CAAC,CAAC,CAAC;EACrE,MAAMG,CAAC,GAAGP,KAAK,EAAC;EAChB,OACEF,IAAI,CAACU,KAAK,CAACT,IAAI,EAAE;IAAEU,YAAY,EAAE,IAAI;IAAEC,iBAAiB,EAAE;EAAI,CAAE,CAAC,IAC9DC,MAAM,CAACC,IAAI,CAACL,CAAC,CAAC,CAACM,MAAM,GACpB,GAAG,GAAGC,oBAAE,CAACC,SAAS,CAACR,CAAC,CAAC,GACrB,EAAE,CAAC;AAEX;AAEM,SAAUS,gBAAgBA,CAC9BlB,IAAU,EACVC,IASC;EAED,OAAOD,IAAI,CAACU,KAAK,CAACT,IAAI,EAAE;IAAEU,YAAY,EAAE,IAAI;IAAEC,iBAAiB,EAAE;EAAI,CAAE,CAAC;AAC1E;AAIA,MAAMO,SAAS,GAAGC,WAAM,CAACC,GAAG,CAAC,aAAS;EACpC,MAAMC,MAAM,GAAG,OAAOC,gBAAU,CAACA,UAAU;EAC3C,MAAMC,MAAM,GAAG,OAAOC,iBAAS,CAACC,GAAG;EACnC,OAAOJ,MAAM,CAACK,IAAI,CAChBJ,gBAAU,CAACK,UAAU,CAACC,uBAAiB,CAACC,UAAU,CAACN,MAAM,CAACO,MAAM,GAAG,MAAM,CAAC,CAAC,EAC3ER,gBAAU,CAACK,UAAU,CACnBC,uBAAiB,CAACG,UAAU,CAACR,MAAM,CAACS,OAAO,CAACN,IAAI,CAACO,WAAM,CAACC,SAAS,CAAC,MAAMC,YAAO,CAACC,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3F,CACF;AACH,CAAC,CAAC;AAQI,SAAUC,aAAaA,CAACC,MAAwC;EACpE,MAAMC,KAAK,GAAG,IAAIC,GAAG,EAAoB;EAEzC,OACEC,MAAS,IACkB;IAC3B,MAAMC,KAAK,GAAGH,KAAK,CAACI,GAAG,CAACF,MAAM,CAAC;IAC/B,IAAIC,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;IACA,MAAME,CAAC,GAAGC,UAAU,CAACJ,MAAM,EAAEH,MAAM,CAAC;IACpCC,KAAK,CAACO,GAAG,CAACL,MAAM,EAAEG,CAAC,CAAC;IACpB,OAAOA,CAAC;EACV,CAAC;AACH;AAWA,SAASC,UAAUA,CAAqBJ,MAAS,EAAEH,MAAM,GAAGS,UAAK,CAACX,KAAK;EAIrE,MAAMY,QAAQ,GAAG,IAAAC,kBAAW,EAACR,MAAM,CAAC,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAI;IACvD,IACEC,cAAS,CAACC,QAAQ,CAACb,MAAM,CAACW,GAAG,CAAC,CAAC,IAC3BX,MAAM,CAACW,GAAG,CAAC,CAACG,OAAQ,EACxB;MACAJ,GAAG,CAACC,GAAqB,CAAC,GAAGX,MAAM,CAACW,GAAG,CAAC;IAC1C;IACA,OAAOD,GAAG;EACZ,CAAC,EAAE,EAAiC,CAAC;EAErC,MAAMK,IAAI,GAAIf,MAAc,CAACe,IAA8B;EAC3D,IAAI,CAACA,IAAI,EAAE,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC;EAE1D,MAAMC,QAAQ,GAAG,IAAAC,SAAI,EACnBC,wBAAe,CAACC,IAAyB,EACxCzD,CAAC,IAAK0D,gBAAW,CAACC,QAAQ,CAAC3D,CAAQ,CAAC,CACtC;EAED,MAAM4D,UAAU,GAAG9C,SAAS,CAACQ,IAAI,CAC/BP,WAAM,CAAC8C,OAAO,CAAC3C,gBAAU,CAACK,UAAU,CAACC,uBAAiB,CAACsC,SAAS,CAAC,GAAG,GAAGV,IAAI,CAACW,UAAU,CAAC,CAAC,CAAC,CAC1F;EAED,OAAQ,IAAAlB,kBAAW,EAACD,QAAQ,CAAC,CAC1BE,MAAM,CAAC,CAACkB,IAAI,EAAEhB,GAAG,KAAI;IACpB,MAAMiB,CAAC,GAAGrB,QAAQ,CAACI,GAAG,CAAE;IAExB,MAAMkB,OAAO,GAAGD,CAAC;IACjB,MAAME,QAAQ,GAAGF,CAAC,CAACd,OAAO;IAE1B,MAAMiB,WAAW,GAAG,GAAGhB,IAAI,CAACW,UAAU,IAAIf,GAAa,EAAE,CACtDqB,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;IAExB,MAAMC,WAAW,GAAG;MAClBJ,OAAO;MACPK,IAAI,EAAEH;KACP;IAED,MAAMnD,MAAM,GAAG2C,UAAU,CAACtC,IAAI,CAC5BP,WAAM,CAAC8C,OAAO,CAAC3C,gBAAU,CAACK,UAAU,CAACC,uBAAiB,CAACgD,cAAc,CAAC,QAAQ,EAAExB,GAAa,CAAC,CAAC,CAAC,EAChGjC,WAAM,CAAC8C,OAAO,CAACP,QAAQ,CAAC,CACzB;IAED,MAAMmB,MAAM,GAAGC,WAAM,CAACC,IAAI,CAACT,OAAO,CAACO,MAAM,EAAE,MAAM,CAAC;IAClD;IACAT,IAAI,CAAChB,GAAG,CAAC,GAAGxC,MAAM,CAACC,IAAI,CAACgE,MAAM,CAAC,CAAC/D,MAAM,KAAK,CAAC,GACxC;MACAkE,OAAO,EAAE3D,MAAM,CACZK,IAAI,CACHP,WAAM,CAAC8C,OAAO,CAAEgB,EAAE,IAAKA,EAAE,CAAC,IAAIX,OAAO,EAAE,CAAC,CAAC,EACzCnD,WAAM,CAAC+D,QAAQ,CAAC,iBAAiB,GAAGV,WAAW,EAAE;QAC/CW,iBAAiB,EAAE,KAAK;QACxBC,UAAU,EAAE;UAAE,cAAc,EAAEZ;QAAW;OAC1C,CAAC,EACFrD,WAAM,CAACkE,OAAO,CAAC/C,MAAM,CAAC,CACvB;MACH,GAAGoC,WAAW;MACdY,GAAG,EAAE;QACHN,OAAO,EAAE3D,MAAM,CACZK,IAAI,CACHP,WAAM,CAAC8C,OAAO,CAAEgB,EAAE,IAAKA,EAAE,CAAC,IAAIX,OAAO,EAAE,CAAC,CAAC,EACzCnD,WAAM,CAACoE,OAAO,CAAEC,GAAG,IAAKC,YAAC,CAACC,MAAM,CAACnB,QAAQ,CAAC,CAACiB,GAAG,CAAC,CAAC;QAAE;QAClDrE,WAAM,CAAC+D,QAAQ,CAAC,iBAAiB,GAAGV,WAAW,EAAE;UAC/CW,iBAAiB,EAAE,KAAK;UACxBC,UAAU,EAAE;YAAE,cAAc,EAAEZ;UAAW;SAC1C,CAAC,EACFrD,WAAM,CAACkE,OAAO,CAAC/C,MAAM,CAAC,CACvB;QACH,GAAGoC;;KAEN,GACC;MACAM,OAAO,EAAGW,GAAQ,IAChBtE,MAAM,CACHK,IAAI,CACHP,WAAM,CAAC8C,OAAO,CAAEgB,EAAE,IAAKA,EAAE,CAAC,IAAIX,OAAO,CAACqB,GAAG,CAAC,CAAC,CAAC,EAC5CxE,WAAM,CAAC+D,QAAQ,CAAC,iBAAiB,GAAGV,WAAW,EAAE;QAC/CW,iBAAiB,EAAE,KAAK;QACxBC,UAAU,EAAE;UAAE,cAAc,EAAEZ;QAAW;OAC1C,CAAC,EACFrD,WAAM,CAACkE,OAAO,CAAC/C,MAAM,CAAC,CACvB;MAEL,GAAGoC,WAAW;MACdY,GAAG,EAAE;QACHN,OAAO,EAAGW,GAAQ,IAChBtE,MAAM,CACHK,IAAI,CACHP,WAAM,CAAC8C,OAAO,CAAEgB,EAAE,IAAKA,EAAE,CAAC,IAAIX,OAAO,CAACqB,GAAG,CAAC,CAAC,CAAC,EAC5CxE,WAAM,CAACoE,OAAO,CAAEC,GAAG,IAAKC,YAAC,CAACC,MAAM,CAACnB,QAAQ,CAAC,CAACiB,GAAG,CAAC,CAAC;QAAE;QAClDrE,WAAM,CAAC+D,QAAQ,CAAC,iBAAiB,GAAGV,WAAW,EAAE;UAC/CW,iBAAiB,EAAE,KAAK;UACxBC,UAAU,EAAE;YAAE,cAAc,EAAEZ;UAAW;SAC1C,CAAC,EACFrD,WAAM,CAACkE,OAAO,CAAC/C,MAAM,CAAC,CACvB;QAEL,GAAGoC;;KAEN;IAEH,OAAON,IAAI;EACb,CAAC,EAAE,EAAe,CAAC;AACvB","ignoreList":[]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Effect, Layer } from "@effect-app/core";
|
|
2
|
-
import type * as Serializable from "@effect/schema/Serializable";
|
|
3
1
|
import { S } from "effect-app";
|
|
4
2
|
import { ApiConfig } from "effect-app/client";
|
|
5
3
|
import { HttpClient } from "effect-app/http";
|
|
6
|
-
import type { Schema } from "effect-app/schema";
|
|
7
4
|
import type * as Request from "effect/Request";
|
|
8
5
|
import type { Path } from "path-parser";
|
|
6
|
+
import type { Schema } from "../lib.js";
|
|
7
|
+
import { Effect, Layer } from "../lib.js";
|
|
9
8
|
export declare function makePathWithQuery(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
|
|
10
9
|
export declare function makePathWithBody(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
|
|
11
10
|
type Requests = Record<string, any>;
|
|
@@ -15,21 +14,27 @@ export declare function makeClientFor(layers: Layer.Layer<never, never, never>):
|
|
|
15
14
|
export type ExtractResponse<T> = T extends Schema<any, any, any> ? Schema.Type<T> : T extends unknown ? void : never;
|
|
16
15
|
export type ExtractEResponse<T> = T extends Schema<any, any, any> ? Schema.Encoded<T> : T extends unknown ? void : never;
|
|
17
16
|
type IsEmpty<T> = keyof T extends never ? true : false;
|
|
18
|
-
type Cruft = "_tag" | Request.RequestTypeId | typeof
|
|
17
|
+
type Cruft = "_tag" | Request.RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult;
|
|
18
|
+
export type TaggedRequestClassAny = S.Schema.Any & {
|
|
19
|
+
readonly _tag: string;
|
|
20
|
+
readonly success: any;
|
|
21
|
+
readonly failure: any;
|
|
22
|
+
};
|
|
23
|
+
export interface RequestHandler<A, E, R, Request extends TaggedRequestClassAny> {
|
|
24
|
+
handler: Effect<A, E, R>;
|
|
25
|
+
name: string;
|
|
26
|
+
Request: Request;
|
|
27
|
+
}
|
|
28
|
+
export interface RequestHandlerWithInput<I, A, E, R, Request extends TaggedRequestClassAny> {
|
|
29
|
+
handler: (i: I) => Effect<A, E, R>;
|
|
30
|
+
name: string;
|
|
31
|
+
Request: Request;
|
|
32
|
+
}
|
|
19
33
|
type RequestHandlers<R, E, M extends Requests> = {
|
|
20
|
-
[K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true ? {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} : {
|
|
25
|
-
handler: (req: Omit<S.Schema.Type<M[K]>, Cruft>) => Effect<Schema.Type<M[K]["success"]>, Schema.Type<M[K]["failure"]> | E, R>;
|
|
26
|
-
Request: M[K];
|
|
27
|
-
name: string;
|
|
28
|
-
raw: {
|
|
29
|
-
handler: (req: Omit<S.Schema.Type<M[K]>, Cruft>) => Effect<Schema.Encoded<M[K]["success"]>, Schema.Type<M[K]["failure"]> | E, R>;
|
|
30
|
-
Request: M[K];
|
|
31
|
-
name: string;
|
|
32
|
-
};
|
|
34
|
+
[K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true ? RequestHandler<Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]> | E, R, M[K]> & {
|
|
35
|
+
raw: RequestHandler<Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]> | E, R, M[K]>;
|
|
36
|
+
} : RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]> | E, R, M[K]> & {
|
|
37
|
+
raw: RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, Schema.Schema.Encoded<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]> | E, R, M[K]>;
|
|
33
38
|
};
|
|
34
39
|
};
|
|
35
40
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
|
package/dist/client/clientFor.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Effect, flow, HashMap, Layer, Option, Predicate, Struct } from "@effect-app/core";
|
|
4
3
|
import { RpcResolver } from "@effect/rpc";
|
|
5
4
|
import { HttpRpcResolver } from "@effect/rpc-http";
|
|
6
5
|
import { Record } from "effect";
|
|
@@ -9,6 +8,7 @@ import { ApiConfig } from "effect-app/client";
|
|
|
9
8
|
import { HttpClient, HttpClientRequest } from "effect-app/http";
|
|
10
9
|
import { typedKeysOf } from "effect-app/utils";
|
|
11
10
|
import qs from "query-string";
|
|
11
|
+
import { Effect, flow, HashMap, Layer, Option, Predicate, Struct } from "../lib.js";
|
|
12
12
|
export function makePathWithQuery(path, pars) {
|
|
13
13
|
const forQs = Record.filter(pars, (_, k) => !path.params.includes(k));
|
|
14
14
|
const q = forQs; // { ...forQs, _: JSON.stringify(forQs) } // TODO: drop completely individual keys from query?, sticking to json only
|
|
@@ -102,4 +102,4 @@ function clientFor_(models, layers = Layer.empty) {
|
|
|
102
102
|
return prev;
|
|
103
103
|
}, {}));
|
|
104
104
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHOUMsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTdCLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFbkYsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUFVLEVBQ1YsSUFTQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQSxDQUFDLHFIQUFxSDtJQUNySSxPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFB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
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.31.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@effect/rpc": "^0.
|
|
8
|
-
"@effect/rpc-http": "^0.
|
|
7
|
+
"@effect/rpc": "^0.44.2",
|
|
8
|
+
"@effect/rpc-http": "^0.42.2",
|
|
9
9
|
"@tsconfig/strictest": "^2.0.5",
|
|
10
10
|
"date-fns": "^4.1.0",
|
|
11
11
|
"nanoid": "^5.0.7",
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"ts-pattern": "^5.5.0",
|
|
15
15
|
"uuid": "^10.0.0",
|
|
16
16
|
"validator": "^13.12.0",
|
|
17
|
-
"@effect-app/core": "1.
|
|
18
|
-
"@effect-app/schema": "1.
|
|
17
|
+
"@effect-app/core": "1.18.0",
|
|
18
|
+
"@effect-app/schema": "1.20.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@babel/cli": "^7.25.7",
|
|
22
22
|
"@faker-js/faker": "^8.4.1",
|
|
23
|
-
"@types/node": "~22.7.
|
|
23
|
+
"@types/node": "~22.7.8",
|
|
24
24
|
"@types/uuid": "^10.0.0",
|
|
25
25
|
"@types/validator": "^13.12.2",
|
|
26
26
|
"fast-check": "~3.22.0",
|
|
@@ -28,9 +28,8 @@
|
|
|
28
28
|
"vitest": "^2.1.3"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@effect/platform": "^0.
|
|
32
|
-
"effect": "^3.
|
|
33
|
-
"@effect/schema": "^0.75.5"
|
|
31
|
+
"@effect/platform": "^0.69.2",
|
|
32
|
+
"effect": "^3.10.0"
|
|
34
33
|
},
|
|
35
34
|
"typesVersions": {
|
|
36
35
|
"*": {
|
package/src/client/clientFor.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
|
|
4
|
-
import { Effect, flow, HashMap, Layer, Option, Predicate, Struct } from "@effect-app/core"
|
|
5
4
|
import { RpcResolver } from "@effect/rpc"
|
|
6
5
|
import { HttpRpcResolver } from "@effect/rpc-http"
|
|
7
6
|
import type { RpcRouter } from "@effect/rpc/RpcRouter"
|
|
8
|
-
import type * as Serializable from "@effect/schema/Serializable"
|
|
9
7
|
import { Record } from "effect"
|
|
10
8
|
import { S } from "effect-app"
|
|
11
9
|
import { ApiConfig } from "effect-app/client"
|
|
12
10
|
import { HttpClient, HttpClientRequest } from "effect-app/http"
|
|
13
|
-
import type { Schema } from "effect-app/schema"
|
|
14
11
|
import { typedKeysOf } from "effect-app/utils"
|
|
15
12
|
import type * as Request from "effect/Request"
|
|
16
13
|
import type { Path } from "path-parser"
|
|
17
14
|
import qs from "query-string"
|
|
15
|
+
import type { Schema } from "../lib.js"
|
|
16
|
+
import { Effect, flow, HashMap, Layer, Option, Predicate, Struct } from "../lib.js"
|
|
18
17
|
|
|
19
18
|
export function makePathWithQuery(
|
|
20
19
|
path: Path,
|
|
@@ -218,39 +217,48 @@ export type ExtractEResponse<T> = T extends Schema<any, any, any> ? Schema.Encod
|
|
|
218
217
|
type IsEmpty<T> = keyof T extends never ? true
|
|
219
218
|
: false
|
|
220
219
|
|
|
221
|
-
type Cruft = "_tag" | Request.RequestTypeId | typeof
|
|
220
|
+
type Cruft = "_tag" | Request.RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult
|
|
221
|
+
|
|
222
|
+
export type TaggedRequestClassAny = S.Schema.Any & {
|
|
223
|
+
readonly _tag: string
|
|
224
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
225
|
+
readonly success: any
|
|
226
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
227
|
+
readonly failure: any
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export interface RequestHandler<A, E, R, Request extends TaggedRequestClassAny> {
|
|
231
|
+
handler: Effect<A, E, R>
|
|
232
|
+
name: string
|
|
233
|
+
Request: Request
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface RequestHandlerWithInput<I, A, E, R, Request extends TaggedRequestClassAny> {
|
|
237
|
+
handler: (i: I) => Effect<A, E, R>
|
|
238
|
+
name: string
|
|
239
|
+
Request: Request
|
|
240
|
+
}
|
|
222
241
|
|
|
223
|
-
// TODO: refactor to new Request pattern, then filter out non-requests similar to the runtime changes in clientFor, and matchFor (boilerplate)
|
|
224
242
|
type RequestHandlers<R, E, M extends Requests> = {
|
|
225
|
-
[K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
name: string
|
|
243
|
+
[K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true
|
|
244
|
+
? RequestHandler<Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]> | E, R, M[K]> & {
|
|
245
|
+
raw: RequestHandler<Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]> | E, R, M[K]>
|
|
229
246
|
}
|
|
230
|
-
:
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
Schema.Type<M[K]["
|
|
235
|
-
|
|
236
|
-
|
|
247
|
+
:
|
|
248
|
+
& RequestHandlerWithInput<
|
|
249
|
+
Omit<S.Schema.Type<M[K]>, Cruft>,
|
|
250
|
+
Schema.Schema.Type<M[K]["success"]>,
|
|
251
|
+
Schema.Schema.Type<M[K]["failure"]> | E,
|
|
252
|
+
R,
|
|
253
|
+
M[K]
|
|
237
254
|
>
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
Cruft
|
|
246
|
-
>
|
|
247
|
-
) => Effect<
|
|
248
|
-
Schema.Encoded<M[K]["success"]>,
|
|
249
|
-
Schema.Type<M[K]["failure"]> | E,
|
|
250
|
-
R
|
|
255
|
+
& {
|
|
256
|
+
raw: RequestHandlerWithInput<
|
|
257
|
+
Omit<S.Schema.Type<M[K]>, Cruft>,
|
|
258
|
+
Schema.Schema.Encoded<M[K]["success"]>,
|
|
259
|
+
Schema.Schema.Type<M[K]["failure"]> | E,
|
|
260
|
+
R,
|
|
261
|
+
M[K]
|
|
251
262
|
>
|
|
252
|
-
Request: M[K]
|
|
253
|
-
name: string
|
|
254
263
|
}
|
|
255
|
-
}
|
|
256
264
|
}
|
package/test/schema.test.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// import { generateFromArbitrary } from "@effect-app/infra/test"
|
|
2
|
-
import { JSONSchema } from "
|
|
3
|
-
import { Array, S } from "effect-app"
|
|
2
|
+
import { Array, JSONSchema, S } from "effect-app"
|
|
4
3
|
import { test } from "vitest"
|
|
5
4
|
|
|
6
5
|
const A = S.Struct({ a: S.NonEmptyString255, email: S.NullOr(S.Email) })
|