effect-app 2.14.0 → 2.15.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,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 2.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - improve: clientFor as part of service so that cache is also fine.
8
+
3
9
  ## 2.14.0
4
10
 
5
11
  ### Minor Changes
@@ -5,20 +5,104 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.DefaultApiConfig = exports.ApiClient = void 0;
7
7
  var _lib = require("../internal/lib.cjs");
8
+ var _rpc = require("@effect/rpc");
9
+ var _rpcHttp = require("@effect/rpc-http");
8
10
  var _http = require("../http.cjs");
11
+ var _utils = require("../utils.cjs");
9
12
  const DefaultApiConfig = exports.DefaultApiConfig = _lib.Config.all({
10
13
  url: _lib.Config.string("apiUrl").pipe(_lib.Config.withDefault("/api")),
11
14
  headers: _lib.Config.hashMap(_lib.Config.string(), "headers").pipe(_lib.Config.option)
12
15
  });
13
16
  const apiClient = config => _lib.Effect.gen(function* () {
14
- const client = yield* _http.HttpClient.HttpClient;
17
+ const baseClient = yield* _http.HttpClient.HttpClient;
18
+ const client = baseClient.pipe(_http.HttpClient.mapRequest(_http.HttpClientRequest.prependUrl(config.url + "/rpc")), _http.HttpClient.mapRequest(_http.HttpClientRequest.setHeaders(config.headers.pipe(_lib.Option.getOrElse(() => _lib.HashMap.empty())))));
19
+ const clientFor_ = (models, requestLevelLayers = _lib.Layer.empty) => {
20
+ // TODO: Record.filter
21
+ const filtered = (0, _utils.typedKeysOf)(models).reduce((acc, cur) => {
22
+ if (_lib.Predicate.isObject(models[cur]) && models[cur].success) {
23
+ acc[cur] = models[cur];
24
+ }
25
+ return acc;
26
+ }, {});
27
+ const meta = models.meta;
28
+ if (!meta) throw new Error("No meta defined in Resource!");
29
+ const resolver = (0, _lib.flow)(_rpcHttp.HttpRpcResolver.make, _ => _rpc.RpcResolver.toClient(_));
30
+ const baseClient = _http.HttpClient.mapRequest(client, _http.HttpClientRequest.appendUrl("/" + meta.moduleName));
31
+ return (0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
32
+ const h = filtered[cur];
33
+ const Request = h;
34
+ const Response = h.success;
35
+ const requestName = `${meta.moduleName}.${cur}`.replaceAll(".js", "");
36
+ const requestMeta = {
37
+ Request,
38
+ name: requestName
39
+ };
40
+ const client = baseClient.pipe(_http.HttpClient.mapRequest(_http.HttpClientRequest.appendUrlParam("action", cur)), resolver);
41
+ const fields = _lib.Struct.omit(Request.fields, "_tag");
42
+ // @ts-expect-error doc
43
+ prev[cur] = Object.keys(fields).length === 0 ? {
44
+ handler: client(new Request()).pipe(_lib.Effect.withSpan("client.request " + requestName, {
45
+ captureStackTrace: false,
46
+ attributes: {
47
+ "request.name": requestName
48
+ }
49
+ }), _lib.Effect.provide(requestLevelLayers)),
50
+ ...requestMeta,
51
+ raw: {
52
+ handler: client(new Request()).pipe(_lib.Effect.flatMap(res => _lib.S.encode(Response)(res)),
53
+ // TODO,
54
+ _lib.Effect.withSpan("client.request " + requestName, {
55
+ captureStackTrace: false,
56
+ attributes: {
57
+ "request.name": requestName
58
+ }
59
+ }), _lib.Effect.provide(requestLevelLayers)),
60
+ ...requestMeta
61
+ }
62
+ } : {
63
+ handler: req => client(new Request(req)).pipe(_lib.Effect.withSpan("client.request " + requestName, {
64
+ captureStackTrace: false,
65
+ attributes: {
66
+ "request.name": requestName
67
+ }
68
+ }), _lib.Effect.provide(requestLevelLayers)),
69
+ ...requestMeta,
70
+ raw: {
71
+ handler: req => client(new Request(req)).pipe(_lib.Effect.flatMap(res => _lib.S.encode(Response)(res)),
72
+ // TODO,
73
+ _lib.Effect.withSpan("client.request " + requestName, {
74
+ captureStackTrace: false,
75
+ attributes: {
76
+ "request.name": requestName
77
+ }
78
+ }), _lib.Effect.provide(requestLevelLayers)),
79
+ ...requestMeta
80
+ }
81
+ };
82
+ return prev;
83
+ }, {});
84
+ };
85
+ function makeFor(requestLevelLayers) {
86
+ const cache = new Map();
87
+ return models => {
88
+ const found = cache.get(models);
89
+ if (found) {
90
+ return found;
91
+ }
92
+ const m = clientFor_(models, requestLevelLayers);
93
+ cache.set(models, m);
94
+ return m;
95
+ };
96
+ }
15
97
  return {
16
- client: client.pipe(_http.HttpClient.mapRequest(_http.HttpClientRequest.prependUrl(config.url + "/rpc")), _http.HttpClient.mapRequest(_http.HttpClientRequest.setHeaders(config.headers.pipe(_lib.Option.getOrElse(() => _lib.HashMap.empty())))))
98
+ for_: clientFor_,
99
+ makeFor_: makeFor
17
100
  };
18
101
  });
19
102
  class ApiClient extends _lib.Context.TagId("ApiClient")() {
20
103
  static layer = apiConfig => this.toLayer(apiClient(apiConfig));
21
104
  static layerFromConfig = DefaultApiConfig.pipe(_lib.Effect.map(this.layer), _lib.Layer.unwrapEffect);
105
+ static makeFor = requestLevelLayers => models => this.use(_ => _.makeFor_(requestLevelLayers)).pipe(_lib.Effect.map(_ => _(models)));
22
106
  }
23
107
  exports.ApiClient = ApiClient;
24
108
  //# sourceMappingURL=apiClient.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.cjs","names":["_lib","require","_http","DefaultApiConfig","exports","Config","all","url","string","pipe","withDefault","headers","hashMap","option","apiClient","config","Effect","gen","client","HttpClient","mapRequest","HttpClientRequest","prependUrl","setHeaders","Option","getOrElse","HashMap","empty","ApiClient","Context","TagId","layer","apiConfig","toLayer","layerFromConfig","map","Layer","unwrapEffect"],"sources":["../../src/client/apiClient.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAOO,MAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAGE,WAAM,CAACC,GAAG,CAAC;EACzCC,GAAG,EAAEF,WAAM,CAACG,MAAM,CAAC,QAAQ,CAAC,CAACC,IAAI,CAACJ,WAAM,CAACK,WAAW,CAAC,MAAM,CAAC,CAAC;EAC7DC,OAAO,EAAEN,WAAM,CACZO,OAAO,CACNP,WAAM,CAACG,MAAM,EAAE,EACf,SAAS,CACV,CACAC,IAAI,CAACJ,WAAM,CAACQ,MAAM;CACtB,CAAC;AAEF,MAAMC,SAAS,GAAIC,MAAiB,IAClCC,WAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,MAAM,GAAG,OAAOC,gBAAU,CAACA,UAAU;EAC3C,OAAO;IACLD,MAAM,EAAEA,MAAM,CAACT,IAAI,CACjBU,gBAAU,CAACC,UAAU,CAACC,uBAAiB,CAACC,UAAU,CAACP,MAAM,CAACR,GAAG,GAAG,MAAM,CAAC,CAAC,EACxEY,gBAAU,CAACC,UAAU,CACnBC,uBAAiB,CAACE,UAAU,CAACR,MAAM,CAACJ,OAAO,CAACF,IAAI,CAACe,WAAM,CAACC,SAAS,CAAC,MAAMC,YAAO,CAACC,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3F;GAEJ;AACH,CAAC,CAAC;AAEE,MAAOC,SAAU,SAAQC,YAAO,CAACC,KAAK,CAAC,WAAW,CAAC,EAA2D;EAClH,OAAOC,KAAK,GAAIC,SAAoB,IAAK,IAAI,CAACC,OAAO,CAACnB,SAAS,CAACkB,SAAS,CAAC,CAAC;EAC3E,OAAOE,eAAe,GAAG/B,gBAAgB,CAACM,IAAI,CAACO,WAAM,CAACmB,GAAG,CAAC,IAAI,CAACJ,KAAK,CAAC,EAAEK,UAAK,CAACC,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"apiClient.cjs","names":["_lib","require","_rpc","_rpcHttp","_http","_utils","DefaultApiConfig","exports","Config","all","url","string","pipe","withDefault","headers","hashMap","option","apiClient","config","Effect","gen","baseClient","HttpClient","client","mapRequest","HttpClientRequest","prependUrl","setHeaders","Option","getOrElse","HashMap","empty","clientFor_","models","requestLevelLayers","Layer","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","success","meta","Error","resolver","flow","HttpRpcResolver","make","_","RpcResolver","toClient","appendUrl","moduleName","prev","h","Request","Response","requestName","replaceAll","requestMeta","name","appendUrlParam","fields","Struct","omit","Object","keys","length","handler","withSpan","captureStackTrace","attributes","provide","raw","flatMap","res","S","encode","req","makeFor","cache","Map","found","get","m","set","for_","makeFor_","ApiClient","Context","TagId","layer","apiConfig","toLayer","layerFromConfig","map","unwrapEffect","use"],"sources":["../../src/client/apiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,19 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.makeClientFor = makeClientFor;
7
6
  exports.makePathWithBody = makePathWithBody;
8
7
  exports.makePathWithQuery = makePathWithQuery;
9
- var _rpc = require("@effect/rpc");
10
- var _rpcHttp = require("@effect/rpc-http");
11
- var _http = require("effect-app/http");
12
- var _utils = require("effect-app/utils");
13
8
  var _queryString = _interopRequireDefault(require("query-string"));
14
9
  var _lib = require("../internal/lib.cjs");
15
- var S = _interopRequireWildcard(require("../Schema.cjs"));
16
- var _apiClient = require("./apiClient.cjs");
17
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
11
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
21
12
  /* eslint-disable @typescript-eslint/no-explicit-any */
@@ -34,82 +25,4 @@ function makePathWithBody(path, pars) {
34
25
  ignoreConstraints: true
35
26
  });
36
27
  }
37
- function makeClientFor(requestLevelLayers) {
38
- const cache = new Map();
39
- return models => _lib.Effect.gen(function* () {
40
- const found = cache.get(models);
41
- if (found) {
42
- return found;
43
- }
44
- const m = yield* clientFor_(models, requestLevelLayers);
45
- cache.set(models, m);
46
- return m;
47
- });
48
- }
49
- const clientFor_ = (models, requestLevelLayers = _lib.Layer.empty) => _lib.Effect.gen(function* () {
50
- // TODO: Record.filter
51
- const filtered = (0, _utils.typedKeysOf)(models).reduce((acc, cur) => {
52
- if (_lib.Predicate.isObject(models[cur]) && models[cur].success) {
53
- acc[cur] = models[cur];
54
- }
55
- return acc;
56
- }, {});
57
- const meta = models.meta;
58
- if (!meta) throw new Error("No meta defined in Resource!");
59
- const resolver = (0, _lib.flow)(_rpcHttp.HttpRpcResolver.make, _ => _rpc.RpcResolver.toClient(_));
60
- const baseClient = yield* _apiClient.ApiClient.pipe(_lib.Effect.andThen(_ => _http.HttpClient.mapRequest(_.client, _http.HttpClientRequest.appendUrl("/" + meta.moduleName))));
61
- return (0, _utils.typedKeysOf)(filtered).reduce((prev, cur) => {
62
- const h = filtered[cur];
63
- const Request = h;
64
- const Response = h.success;
65
- const requestName = `${meta.moduleName}.${cur}`.replaceAll(".js", "");
66
- const requestMeta = {
67
- Request,
68
- name: requestName
69
- };
70
- const client = baseClient.pipe(_http.HttpClient.mapRequest(_http.HttpClientRequest.appendUrlParam("action", cur)), resolver);
71
- const fields = _lib.Struct.omit(Request.fields, "_tag");
72
- // @ts-expect-error doc
73
- prev[cur] = Object.keys(fields).length === 0 ? {
74
- handler: client(new Request()).pipe(_lib.Effect.withSpan("client.request " + requestName, {
75
- captureStackTrace: false,
76
- attributes: {
77
- "request.name": requestName
78
- }
79
- }), _lib.Effect.provide(requestLevelLayers)),
80
- ...requestMeta,
81
- raw: {
82
- handler: client(new Request()).pipe(_lib.Effect.flatMap(res => S.encode(Response)(res)),
83
- // TODO,
84
- _lib.Effect.withSpan("client.request " + requestName, {
85
- captureStackTrace: false,
86
- attributes: {
87
- "request.name": requestName
88
- }
89
- }), _lib.Effect.provide(requestLevelLayers)),
90
- ...requestMeta
91
- }
92
- } : {
93
- handler: req => client(new Request(req)).pipe(_lib.Effect.withSpan("client.request " + requestName, {
94
- captureStackTrace: false,
95
- attributes: {
96
- "request.name": requestName
97
- }
98
- }), _lib.Effect.provide(requestLevelLayers)),
99
- ...requestMeta,
100
- raw: {
101
- handler: req => client(new Request(req)).pipe(_lib.Effect.flatMap(res => S.encode(Response)(res)),
102
- // TODO,
103
- _lib.Effect.withSpan("client.request " + requestName, {
104
- captureStackTrace: false,
105
- attributes: {
106
- "request.name": requestName
107
- }
108
- }), _lib.Effect.provide(requestLevelLayers)),
109
- ...requestMeta
110
- }
111
- };
112
- return prev;
113
- }, {});
114
- });
115
28
  //# sourceMappingURL=clientFor.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientFor.cjs","names":["_rpc","require","_rpcHttp","_http","_utils","_queryString","_interopRequireDefault","_lib","S","_interopRequireWildcard","_apiClient","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makePathWithQuery","path","pars","forQs","Record","filter","_","k","params","includes","q","build","ignoreSearch","ignoreConstraints","keys","length","qs","stringify","makePathWithBody","makeClientFor","requestLevelLayers","cache","Map","models","Effect","gen","found","m","clientFor_","Layer","empty","filtered","typedKeysOf","reduce","acc","cur","Predicate","isObject","success","meta","Error","resolver","flow","HttpRpcResolver","make","RpcResolver","toClient","baseClient","ApiClient","pipe","andThen","HttpClient","mapRequest","client","HttpClientRequest","appendUrl","moduleName","prev","h","Request","Response","requestName","replaceAll","requestMeta","name","appendUrlParam","fields","Struct","omit","handler","withSpan","captureStackTrace","attributes","provide","raw","flatMap","res","encode","req"],"sources":["../../src/client/clientFor.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"clientFor.cjs","names":["_queryString","_interopRequireDefault","require","_lib","e","__esModule","default","makePathWithQuery","path","pars","forQs","Record","filter","_","k","params","includes","q","build","ignoreSearch","ignoreConstraints","Object","keys","length","qs","stringify","makePathWithBody"],"sources":["../../src/client/clientFor.ts"],"sourcesContent":[null],"mappings":";;;;;;;AAKA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAD,OAAA;AAA2C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAP3C;AACA;;AASM,SAAUG,iBAAiBA,CAC/BC,IAAU,EACVC,IASC;EAED,MAAMC,KAAK,GAAGC,WAAM,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","ignoreList":[]}
@@ -1,5 +1,7 @@
1
+ import type { Schema } from "../internal/lib.js";
1
2
  import { Config, Context, Effect, HashMap, Layer, Option } from "../internal/lib.js";
2
3
  import { HttpClient } from "../http.js";
4
+ import type { Requests } from "./clientFor.js";
3
5
  export interface ApiConfig {
4
6
  url: string;
5
7
  headers: Option<HashMap<string, string>>;
@@ -9,25 +11,70 @@ export declare const DefaultApiConfig: Config.Config<{
9
11
  headers: Option.Option<HashMap.HashMap<string, string>>;
10
12
  }>;
11
13
  declare const ApiClient_base: (abstract new (service: {
12
- client: HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>;
14
+ for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
15
+ raw: import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
16
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
17
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
18
+ }; };
19
+ makeFor_: (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) => Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? 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]> & {
20
+ 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]>;
21
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
22
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
23
+ }; } : never;
13
24
  }) => Readonly<{
14
- client: HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>;
25
+ for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
26
+ raw: import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
27
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
28
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
29
+ }; };
30
+ makeFor_: (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) => Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? 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]> & {
31
+ 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
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
33
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
34
+ }; } : never;
15
35
  }> & Context.TagClassShape<"ApiClient", {
16
- client: HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>;
36
+ for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
37
+ raw: import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
38
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
39
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
40
+ }; };
41
+ makeFor_: (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) => Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? 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]> & {
42
+ 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]>;
43
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
44
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
45
+ }; } : never;
17
46
  }>) & {
18
47
  toLayer: <E, R>(eff: Effect.Effect<Omit<ApiClient, keyof Context.TagClassShape<any, any>>, E, R>) => Layer.Layer<ApiClient, E, R>;
19
48
  toLayerScoped: <E, R>(eff: Effect.Effect<Omit<ApiClient, keyof Context.TagClassShape<any, any>>, E, R>) => Layer.Layer<ApiClient, E, Exclude<R, import("effect/Scope").Scope>>;
20
49
  of: (service: Omit<ApiClient, keyof Context.TagClassShape<any, any>>) => ApiClient;
21
50
  } & Context.Tag<ApiClient, ApiClient> & {
22
- client: Effect.Effect<HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>, never, ApiClient>;
51
+ makeFor_: (requestLevelLayers: Layer.Layer<never, never, never>) => Effect.Effect<(<M extends Requests>(models: M) => Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? 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]> & {
52
+ 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]>;
53
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
54
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
55
+ }; } : never), never, ApiClient>;
23
56
  } & {
24
57
  use: <X>(body: (_: {
25
- client: HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>;
26
- }) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | ApiClient> : Effect.Effect<X, never, ApiClient>;
58
+ for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
59
+ raw: import("./clientFor.js").RequestHandler<Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
60
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]> & {
61
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<M[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<M[K]["success"]>, Schema.Schema.Type<M[K]["failure"]>, never, M[K]>;
62
+ }; };
63
+ makeFor_: (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) => Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? 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]> & {
64
+ 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]>;
65
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
66
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
67
+ }; } : never;
68
+ }) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, ApiClient | R> : Effect.Effect<X, never, ApiClient>;
27
69
  };
28
70
  export declare class ApiClient extends ApiClient_base {
29
- static layer: (apiConfig: ApiConfig) => Layer.Layer<ApiClient, never, HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>>;
30
- static layerFromConfig: Layer.Layer<ApiClient, import("effect/ConfigError").ConfigError, HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>>;
71
+ static readonly layer: (apiConfig: ApiConfig) => Layer.Layer<ApiClient, never, HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>>;
72
+ static readonly layerFromConfig: Layer.Layer<ApiClient, import("effect/ConfigError").ConfigError, HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>>;
73
+ static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) => Effect.Effect<Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult> extends never ? true : false) extends true ? 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]> & {
74
+ 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]>;
75
+ } : import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Type<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]> & {
76
+ raw: import("./clientFor.js").RequestHandlerWithInput<Omit<Schema.Schema.Type<Omit<M, "meta">[K]>, "_tag" | typeof import("effect/Request").RequestTypeId | typeof Schema.symbolSerializable | typeof Schema.symbolWithResult>, Schema.Schema.Encoded<Omit<M, "meta">[K]["success"]>, Schema.Schema.Type<Omit<M, "meta">[K]["failure"]>, never, Omit<M, "meta">[K]>;
77
+ }; } : never, never, ApiClient>;
31
78
  }
32
79
  export {};
33
80
  //# sourceMappingURL=apiClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/client/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEpF,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAA;AAE1D,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;;;;;;;;;;;;;;;;;;AAeF,qBAAa,SAAU,SAAQ,cAAqF;IAClH,MAAM,CAAC,KAAK,cAAe,SAAS,oJAAuC;IAC3E,MAAM,CAAC,eAAe,oLAAoE;CAC3F"}
1
+ {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/client/apiClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAQ,OAAO,EAAE,KAAK,EAAE,MAAM,EAAwB,MAAM,oBAAoB,CAAA;AAMhH,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAA;AAE1D,OAAO,KAAK,EAAU,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEtD,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;;WAqBsB,CAAC,SAAS,QAAQ,UAAU,CAAC;;;;;mCAqGZ,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAG3D,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;WAzGO,CAAC,SAAS,QAAQ,UAAU,CAAC;;;;;mCAqGZ,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAG3D,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;WAzGO,CAAC,SAAS,QAAQ,UAAU,CAAC;;;;;mCAqGZ,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAG3D,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;;;;;wFADH,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;;eAzGO,CAAC,SAAS,QAAQ,UAAU,CAAC;;;;;uCAqGZ,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAG3D,CAAC,SAAS,QAAQ,UAChB,CAAC;;;;;;;AAejB,qBAAa,SAAU,SAAQ,cAAqF;IAClH,MAAM,CAAC,QAAQ,CAAC,KAAK,cAAe,SAAS,oJAAuC;IACpF,MAAM,CAAC,QAAQ,CAAC,eAAe,oLAAoE;IAEnG,MAAM,CAAC,QAAQ,CAAC,OAAO,uBAAwB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,QAAQ,UAAU,CAAC;;;;oCAC9B;CACrF"}
@@ -1,5 +1,8 @@
1
- import { Config, Context, Effect, HashMap, Layer, Option } from "../internal/lib.js";
1
+ import { Config, Context, Effect, flow, HashMap, Layer, Option, Predicate, S, Struct } from "../internal/lib.js";
2
+ import { RpcResolver } from "@effect/rpc";
3
+ import { HttpRpcResolver } from "@effect/rpc-http";
2
4
  import { HttpClient, HttpClientRequest } from "../http.js";
5
+ import { typedKeysOf } from "../utils.js";
3
6
  export const DefaultApiConfig = Config.all({
4
7
  url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
5
8
  headers: Config
@@ -7,13 +10,88 @@ export const DefaultApiConfig = Config.all({
7
10
  .pipe(Config.option)
8
11
  });
9
12
  const apiClient = (config) => Effect.gen(function* () {
10
- const client = yield* HttpClient.HttpClient;
11
- return {
12
- client: client.pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")), HttpClient.mapRequest(HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => HashMap.empty())))))
13
+ const baseClient = yield* HttpClient.HttpClient;
14
+ const client = baseClient.pipe(HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")), HttpClient.mapRequest(HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => HashMap.empty())))));
15
+ const clientFor_ = (models, requestLevelLayers = Layer.empty) => {
16
+ // TODO: Record.filter
17
+ const filtered = typedKeysOf(models).reduce((acc, cur) => {
18
+ if (Predicate.isObject(models[cur])
19
+ && (models[cur].success)) {
20
+ acc[cur] = models[cur];
21
+ }
22
+ return acc;
23
+ }, {});
24
+ const meta = models.meta;
25
+ if (!meta)
26
+ throw new Error("No meta defined in Resource!");
27
+ const resolver = flow((HttpRpcResolver.make), (_) => RpcResolver.toClient(_));
28
+ const baseClient = HttpClient.mapRequest(client, HttpClientRequest.appendUrl("/" + meta.moduleName));
29
+ return (typedKeysOf(filtered)
30
+ .reduce((prev, cur) => {
31
+ const h = filtered[cur];
32
+ const Request = h;
33
+ const Response = h.success;
34
+ const requestName = `${meta.moduleName}.${cur}`
35
+ .replaceAll(".js", "");
36
+ const requestMeta = {
37
+ Request,
38
+ name: requestName
39
+ };
40
+ const client = baseClient
41
+ .pipe(HttpClient.mapRequest(HttpClientRequest.appendUrlParam("action", cur)), resolver);
42
+ const fields = Struct.omit(Request.fields, "_tag");
43
+ // @ts-expect-error doc
44
+ prev[cur] = Object.keys(fields).length === 0
45
+ ? {
46
+ handler: client(new Request()).pipe(Effect.withSpan("client.request " + requestName, {
47
+ captureStackTrace: false,
48
+ attributes: { "request.name": requestName }
49
+ }), Effect.provide(requestLevelLayers)),
50
+ ...requestMeta,
51
+ raw: {
52
+ handler: client(new Request()).pipe(Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
53
+ Effect.withSpan("client.request " + requestName, {
54
+ captureStackTrace: false,
55
+ attributes: { "request.name": requestName }
56
+ }), Effect.provide(requestLevelLayers)),
57
+ ...requestMeta
58
+ }
59
+ }
60
+ : {
61
+ handler: (req) => client(new Request(req)).pipe(Effect.withSpan("client.request " + requestName, {
62
+ captureStackTrace: false,
63
+ attributes: { "request.name": requestName }
64
+ }), Effect.provide(requestLevelLayers)),
65
+ ...requestMeta,
66
+ raw: {
67
+ handler: (req) => client(new Request(req)).pipe(Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
68
+ Effect.withSpan("client.request " + requestName, {
69
+ captureStackTrace: false,
70
+ attributes: { "request.name": requestName }
71
+ }), Effect.provide(requestLevelLayers)),
72
+ ...requestMeta
73
+ }
74
+ };
75
+ return prev;
76
+ }, {}));
13
77
  };
78
+ function makeFor(requestLevelLayers) {
79
+ const cache = new Map();
80
+ return (models) => {
81
+ const found = cache.get(models);
82
+ if (found) {
83
+ return found;
84
+ }
85
+ const m = clientFor_(models, requestLevelLayers);
86
+ cache.set(models, m);
87
+ return m;
88
+ };
89
+ }
90
+ return { for_: clientFor_, makeFor_: makeFor };
14
91
  });
15
92
  export class ApiClient extends Context.TagId("ApiClient")() {
16
93
  static layer = (apiConfig) => this.toLayer(apiClient(apiConfig));
17
94
  static layerFromConfig = DefaultApiConfig.pipe(Effect.map(this.layer), Layer.unwrapEffect);
95
+ static makeFor = (requestLevelLayers) => (models) => this.use((_) => _.makeFor_(requestLevelLayers)).pipe(Effect.map((_) => _(models)));
18
96
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9hcGlDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU8xRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3pDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELE9BQU8sRUFBRSxNQUFNO1NBQ1osT0FBTyxDQUNOLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFDZixTQUFTLENBQ1Y7U0FDQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztDQUN2QixDQUFDLENBQUE7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQWlCLEVBQUUsRUFBRSxDQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFBO0lBQzNDLE9BQU87UUFDTCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FDakIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUN4RSxVQUFVLENBQUMsVUFBVSxDQUNuQixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQ0Y7S0FDRixDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLE9BQU8sU0FBVSxTQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQTJEO0lBQ2xILE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQzNFLE1BQU0sQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQSJ9
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9hcGlDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBR2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVF6QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3pDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELE9BQU8sRUFBRSxNQUFNO1NBQ1osT0FBTyxDQUNOLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFDZixTQUFTLENBQ1Y7U0FDQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztDQUN2QixDQUFDLENBQUE7QUFXRixNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQWlCLEVBQUUsRUFBRSxDQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFBO0lBQy9DLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQzVCLFVBQVUsQ0FBQyxVQUFVLENBQUMsaUJBQWlC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
@@ -1,14 +1,12 @@
1
1
  import type * as Request from "effect/Request";
2
2
  import type { Path } from "path-parser";
3
- import type { Schema } from "../internal/lib.js";
4
- import { Effect, Layer, Record } from "../internal/lib.js";
5
- import * as S from "../Schema.js";
6
- import { ApiClient } from "./apiClient.js";
3
+ import type { Effect, Schema } from "../internal/lib.js";
4
+ import { Record } from "../internal/lib.js";
5
+ import type * as S from "../Schema.js";
7
6
  export declare function makePathWithQuery(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
8
7
  export declare function makePathWithBody(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
9
- type Requests = Record<string, any>;
8
+ export type Requests = Record<string, any>;
10
9
  export type Client<M extends Requests> = RequestHandlers<never, never, M>;
11
- export declare function makeClientFor(requestLevelLayers: Layer.Layer<never, never, never>): <M extends Requests>(models: M) => Effect<Client<Omit<M, "meta">>, never, ApiClient>;
12
10
  export type ExtractResponse<T> = T extends Schema<any, any, any> ? Schema.Type<T> : T extends unknown ? void : never;
13
11
  export type ExtractEResponse<T> = T extends Schema<any, any, any> ? Schema.Encoded<T> : T extends unknown ? void : never;
14
12
  type IsEmpty<T> = keyof T extends never ? true : false;
@@ -1 +1 @@
1
- {"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { RpcResolver } from "@effect/rpc";
4
- import { HttpRpcResolver } from "@effect/rpc-http";
5
- import { HttpClient, HttpClientRequest } from "effect-app/http";
6
- import { typedKeysOf } from "effect-app/utils";
7
3
  import qs from "query-string";
8
- import { Effect, flow, Layer, Predicate, Record, Struct } from "../internal/lib.js";
9
- import * as S from "../Schema.js";
10
- import { ApiClient } from "./apiClient.js";
4
+ import { Record } from "../internal/lib.js";
11
5
  export function makePathWithQuery(path, pars) {
12
6
  const forQs = Record.filter(pars, (_, k) => !path.params.includes(k));
13
7
  const q = forQs; // { ...forQs, _: JSON.stringify(forQs) } // TODO: drop completely individual keys from query?, sticking to json only
@@ -19,79 +13,4 @@ export function makePathWithQuery(path, pars) {
19
13
  export function makePathWithBody(path, pars) {
20
14
  return path.build(pars, { ignoreSearch: true, ignoreConstraints: true });
21
15
  }
22
- export function makeClientFor(requestLevelLayers) {
23
- const cache = new Map();
24
- return (models) => Effect.gen(function* () {
25
- const found = cache.get(models);
26
- if (found) {
27
- return found;
28
- }
29
- const m = yield* clientFor_(models, requestLevelLayers);
30
- cache.set(models, m);
31
- return m;
32
- });
33
- }
34
- const clientFor_ = (models, requestLevelLayers = Layer.empty) => Effect.gen(function* () {
35
- // TODO: Record.filter
36
- const filtered = typedKeysOf(models).reduce((acc, cur) => {
37
- if (Predicate.isObject(models[cur])
38
- && (models[cur].success)) {
39
- acc[cur] = models[cur];
40
- }
41
- return acc;
42
- }, {});
43
- const meta = models.meta;
44
- if (!meta)
45
- throw new Error("No meta defined in Resource!");
46
- const resolver = flow((HttpRpcResolver.make), (_) => RpcResolver.toClient(_));
47
- const baseClient = yield* ApiClient.pipe(Effect.andThen((_) => HttpClient.mapRequest(_.client, HttpClientRequest.appendUrl("/" + meta.moduleName))));
48
- return (typedKeysOf(filtered)
49
- .reduce((prev, cur) => {
50
- const h = filtered[cur];
51
- const Request = h;
52
- const Response = h.success;
53
- const requestName = `${meta.moduleName}.${cur}`
54
- .replaceAll(".js", "");
55
- const requestMeta = {
56
- Request,
57
- name: requestName
58
- };
59
- const client = baseClient
60
- .pipe(HttpClient.mapRequest(HttpClientRequest.appendUrlParam("action", cur)), resolver);
61
- const fields = Struct.omit(Request.fields, "_tag");
62
- // @ts-expect-error doc
63
- prev[cur] = Object.keys(fields).length === 0
64
- ? {
65
- handler: client(new Request()).pipe(Effect.withSpan("client.request " + requestName, {
66
- captureStackTrace: false,
67
- attributes: { "request.name": requestName }
68
- }), Effect.provide(requestLevelLayers)),
69
- ...requestMeta,
70
- raw: {
71
- handler: client(new Request()).pipe(Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
72
- Effect.withSpan("client.request " + requestName, {
73
- captureStackTrace: false,
74
- attributes: { "request.name": requestName }
75
- }), Effect.provide(requestLevelLayers)),
76
- ...requestMeta
77
- }
78
- }
79
- : {
80
- handler: (req) => client(new Request(req)).pipe(Effect.withSpan("client.request " + requestName, {
81
- captureStackTrace: false,
82
- attributes: { "request.name": requestName }
83
- }), Effect.provide(requestLevelLayers)),
84
- ...requestMeta,
85
- raw: {
86
- handler: (req) => client(new Request(req)).pipe(Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
87
- Effect.withSpan("client.request " + requestName, {
88
- captureStackTrace: false,
89
- attributes: { "request.name": requestName }
90
- }), Effect.provide(requestLevelLayers)),
91
- ...requestMeta
92
- }
93
- };
94
- return prev;
95
- }, {}));
96
- });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELHVEQUF1RDtBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRzlDLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU3QixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNuRixPQUFPLEtBQUssQ0FBQyxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixJQUFVLEVBQ1YsSUFTQztJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQSxDQUFDLHFIQUFxSDtJQUNySSxPQUFPLENBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO1VBQy9ELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxN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
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Rm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRGb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBEO0FBQzFELHVEQUF1RDtBQUl2RCxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRzNDLE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsSUFBVSxFQUNWLElBU0M7SUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyRSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUEsQ0FBQyxxSEFBcUg7SUFDckksT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztVQUMvRCxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUN0QixDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDUixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsSUFBVSxFQUNWLElBU0M7SUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQzFFLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "2.14.0",
3
+ "version": "2.15.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,14 @@
1
- import { Config, Context, Effect, HashMap, Layer, Option } from "../internal/lib.js"
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"
2
4
 
5
+ import type { Rpc } from "@effect/rpc"
6
+ import { RpcResolver } from "@effect/rpc"
7
+ import { HttpRpcResolver } from "@effect/rpc-http"
8
+ import type { RpcRouter } from "@effect/rpc/RpcRouter"
3
9
  import { HttpClient, HttpClientRequest } from "../http.js"
10
+ import { typedKeysOf } from "../utils.js"
11
+ import type { Client, Requests } from "./clientFor.js"
4
12
 
5
13
  export interface ApiConfig {
6
14
  url: string
@@ -17,20 +25,149 @@ export const DefaultApiConfig = Config.all({
17
25
  .pipe(Config.option)
18
26
  })
19
27
 
28
+ type Req = S.Schema.All & {
29
+ new(...args: any[]): any
30
+ _tag: string
31
+ fields: S.Struct.Fields
32
+ success: S.Schema.Any
33
+ failure: S.Schema.Any
34
+ config?: Record<string, any>
35
+ }
36
+
20
37
  const apiClient = (config: ApiConfig) =>
21
38
  Effect.gen(function*() {
22
- const client = yield* HttpClient.HttpClient
23
- return {
24
- client: client.pipe(
25
- HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")),
26
- HttpClient.mapRequest(
27
- HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => HashMap.empty())))
28
- )
39
+ const baseClient = yield* HttpClient.HttpClient
40
+ const client = baseClient.pipe(
41
+ HttpClient.mapRequest(HttpClientRequest.prependUrl(config.url + "/rpc")),
42
+ HttpClient.mapRequest(
43
+ HttpClientRequest.setHeaders(config.headers.pipe(Option.getOrElse(() => HashMap.empty())))
29
44
  )
45
+ )
46
+
47
+ const clientFor_ = <M extends Requests>(models: M, requestLevelLayers = Layer.empty) => {
48
+ type Filtered = {
49
+ [K in keyof Requests as Requests[K] extends Req ? K : never]: Requests[K] extends Req ? Requests[K] : never
50
+ }
51
+ // TODO: Record.filter
52
+ const filtered = typedKeysOf(models).reduce((acc, cur) => {
53
+ if (
54
+ Predicate.isObject(models[cur])
55
+ && (models[cur].success)
56
+ ) {
57
+ acc[cur as keyof Filtered] = models[cur]
58
+ }
59
+ return acc
60
+ }, {} as Record<keyof Filtered, Req>)
61
+
62
+ const meta = (models as any).meta as { moduleName: string }
63
+ if (!meta) throw new Error("No meta defined in Resource!")
64
+
65
+ const resolver = flow(
66
+ HttpRpcResolver.make<RpcRouter<any, any>>,
67
+ (_) => RpcResolver.toClient(_ as any)
68
+ )
69
+
70
+ const baseClient = HttpClient.mapRequest(client, HttpClientRequest.appendUrl("/" + meta.moduleName))
71
+
72
+ return (typedKeysOf(filtered)
73
+ .reduce((prev, cur) => {
74
+ const h = filtered[cur]!
75
+
76
+ const Request = h
77
+ const Response = h.success
78
+
79
+ const requestName = `${meta.moduleName}.${cur as string}`
80
+ .replaceAll(".js", "")
81
+
82
+ const requestMeta = {
83
+ Request,
84
+ name: requestName
85
+ }
86
+
87
+ const client: <Req extends Schema.TaggedRequest.All>(request: Req) => Rpc.Rpc.Result<Req, unknown> =
88
+ baseClient
89
+ .pipe(
90
+ HttpClient.mapRequest(HttpClientRequest.appendUrlParam("action", cur as string)),
91
+ resolver
92
+ )
93
+
94
+ const fields = Struct.omit(Request.fields, "_tag")
95
+ // @ts-expect-error doc
96
+ prev[cur] = Object.keys(fields).length === 0
97
+ ? {
98
+ handler: client(new Request() as Schema.TaggedRequest.All).pipe(
99
+ Effect.withSpan("client.request " + requestName, {
100
+ captureStackTrace: false,
101
+ attributes: { "request.name": requestName }
102
+ }),
103
+ Effect.provide(requestLevelLayers)
104
+ ),
105
+ ...requestMeta,
106
+ raw: {
107
+ handler: client(new Request() as Schema.TaggedRequest.All).pipe(
108
+ Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
109
+ Effect.withSpan("client.request " + requestName, {
110
+ captureStackTrace: false,
111
+ attributes: { "request.name": requestName }
112
+ }),
113
+ Effect.provide(requestLevelLayers)
114
+ ),
115
+ ...requestMeta
116
+ }
117
+ }
118
+ : {
119
+ handler: (req: any) =>
120
+ client(new Request(req) as Schema.TaggedRequest.All).pipe(
121
+ Effect.withSpan("client.request " + requestName, {
122
+ captureStackTrace: false,
123
+ attributes: { "request.name": requestName }
124
+ }),
125
+ Effect.provide(requestLevelLayers)
126
+ ),
127
+
128
+ ...requestMeta,
129
+ raw: {
130
+ handler: (req: any) =>
131
+ client(new Request(req) as Schema.TaggedRequest.All).pipe(
132
+ Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
133
+ Effect.withSpan("client.request " + requestName, {
134
+ captureStackTrace: false,
135
+ attributes: { "request.name": requestName }
136
+ }),
137
+ Effect.provide(requestLevelLayers)
138
+ ),
139
+
140
+ ...requestMeta
141
+ }
142
+ }
143
+
144
+ return prev
145
+ }, {} as Client<M>))
30
146
  }
147
+
148
+ function makeFor(requestLevelLayers: Layer.Layer<never, never, never>) {
149
+ const cache = new Map<any, Client<any>>()
150
+
151
+ return <M extends Requests>(
152
+ models: M
153
+ ): Client<Omit<M, "meta">> => {
154
+ const found = cache.get(models)
155
+ if (found) {
156
+ return found
157
+ }
158
+ const m = clientFor_(models, requestLevelLayers)
159
+ cache.set(models, m)
160
+ return m
161
+ }
162
+ }
163
+
164
+ return { for_: clientFor_, makeFor_: makeFor }
31
165
  })
32
166
 
33
167
  export class ApiClient extends Context.TagId("ApiClient")<ApiClient, Effect.Success<ReturnType<typeof apiClient>>>() {
34
- static layer = (apiConfig: ApiConfig) => this.toLayer(apiClient(apiConfig))
35
- static layerFromConfig = DefaultApiConfig.pipe(Effect.map(this.layer), Layer.unwrapEffect)
168
+ static readonly layer = (apiConfig: ApiConfig) => this.toLayer(apiClient(apiConfig))
169
+ static readonly layerFromConfig = DefaultApiConfig.pipe(Effect.map(this.layer), Layer.unwrapEffect)
170
+
171
+ static readonly makeFor = (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) =>
172
+ this.use((_) => _.makeFor_(requestLevelLayers)).pipe(Effect.map((_) => _(models)))
36
173
  }
@@ -1,19 +1,12 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-argument */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
 
4
- import type { Rpc } from "@effect/rpc"
5
- import { RpcResolver } from "@effect/rpc"
6
- import { HttpRpcResolver } from "@effect/rpc-http"
7
- import type { RpcRouter } from "@effect/rpc/RpcRouter"
8
- import { HttpClient, HttpClientRequest } from "effect-app/http"
9
- import { typedKeysOf } from "effect-app/utils"
10
4
  import type * as Request from "effect/Request"
11
5
  import type { Path } from "path-parser"
12
6
  import qs from "query-string"
13
- import type { Schema } from "../internal/lib.js"
14
- import { Effect, flow, Layer, Predicate, Record, Struct } from "../internal/lib.js"
15
- import * as S from "../Schema.js"
16
- import { ApiClient } from "./apiClient.js"
7
+ import type { Effect, Schema } from "../internal/lib.js"
8
+ import { Record } from "../internal/lib.js"
9
+ import type * as S from "../Schema.js"
17
10
 
18
11
  export function makePathWithQuery(
19
12
  path: Path,
@@ -54,7 +47,7 @@ export function makePathWithBody(
54
47
  return path.build(pars, { ignoreSearch: true, ignoreConstraints: true })
55
48
  }
56
49
 
57
- type Requests = Record<string, any>
50
+ export type Requests = Record<string, any>
58
51
 
59
52
  export type Client<M extends Requests> = RequestHandlers<
60
53
  never,
@@ -62,135 +55,6 @@ export type Client<M extends Requests> = RequestHandlers<
62
55
  M
63
56
  >
64
57
 
65
- export function makeClientFor(requestLevelLayers: Layer.Layer<never, never, never>) {
66
- const cache = new Map<any, Client<any>>()
67
-
68
- return <M extends Requests>(
69
- models: M
70
- ): Effect<Client<Omit<M, "meta">>, never, ApiClient> =>
71
- Effect.gen(function*() {
72
- const found = cache.get(models)
73
- if (found) {
74
- return found
75
- }
76
- const m = yield* clientFor_(models, requestLevelLayers)
77
- cache.set(models, m)
78
- return m
79
- })
80
- }
81
-
82
- type Req = S.Schema.All & {
83
- new(...args: any[]): any
84
- _tag: string
85
- fields: S.Struct.Fields
86
- success: S.Schema.Any
87
- failure: S.Schema.Any
88
- config?: Record<string, any>
89
- }
90
-
91
- const clientFor_ = <M extends Requests>(models: M, requestLevelLayers = Layer.empty) =>
92
- Effect.gen(function*() {
93
- type Filtered = {
94
- [K in keyof Requests as Requests[K] extends Req ? K : never]: Requests[K] extends Req ? Requests[K] : never
95
- }
96
- // TODO: Record.filter
97
- const filtered = typedKeysOf(models).reduce((acc, cur) => {
98
- if (
99
- Predicate.isObject(models[cur])
100
- && (models[cur].success)
101
- ) {
102
- acc[cur as keyof Filtered] = models[cur]
103
- }
104
- return acc
105
- }, {} as Record<keyof Filtered, Req>)
106
-
107
- const meta = (models as any).meta as { moduleName: string }
108
- if (!meta) throw new Error("No meta defined in Resource!")
109
-
110
- const resolver = flow(
111
- HttpRpcResolver.make<RpcRouter<any, any>>,
112
- (_) => RpcResolver.toClient(_ as any)
113
- )
114
-
115
- const baseClient = yield* ApiClient.pipe(
116
- Effect.andThen((_) => HttpClient.mapRequest(_.client, HttpClientRequest.appendUrl("/" + meta.moduleName)))
117
- )
118
-
119
- return (typedKeysOf(filtered)
120
- .reduce((prev, cur) => {
121
- const h = filtered[cur]!
122
-
123
- const Request = h
124
- const Response = h.success
125
-
126
- const requestName = `${meta.moduleName}.${cur as string}`
127
- .replaceAll(".js", "")
128
-
129
- const requestMeta = {
130
- Request,
131
- name: requestName
132
- }
133
-
134
- const client: <Req extends Schema.TaggedRequest.All>(request: Req) => Rpc.Rpc.Result<Req, unknown> = baseClient
135
- .pipe(
136
- HttpClient.mapRequest(HttpClientRequest.appendUrlParam("action", cur as string)),
137
- resolver
138
- )
139
-
140
- const fields = Struct.omit(Request.fields, "_tag")
141
- // @ts-expect-error doc
142
- prev[cur] = Object.keys(fields).length === 0
143
- ? {
144
- handler: client(new Request() as Schema.TaggedRequest.All).pipe(
145
- Effect.withSpan("client.request " + requestName, {
146
- captureStackTrace: false,
147
- attributes: { "request.name": requestName }
148
- }),
149
- Effect.provide(requestLevelLayers)
150
- ),
151
- ...requestMeta,
152
- raw: {
153
- handler: client(new Request() as Schema.TaggedRequest.All).pipe(
154
- Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
155
- Effect.withSpan("client.request " + requestName, {
156
- captureStackTrace: false,
157
- attributes: { "request.name": requestName }
158
- }),
159
- Effect.provide(requestLevelLayers)
160
- ),
161
- ...requestMeta
162
- }
163
- }
164
- : {
165
- handler: (req: any) =>
166
- client(new Request(req) as Schema.TaggedRequest.All).pipe(
167
- Effect.withSpan("client.request " + requestName, {
168
- captureStackTrace: false,
169
- attributes: { "request.name": requestName }
170
- }),
171
- Effect.provide(requestLevelLayers)
172
- ),
173
-
174
- ...requestMeta,
175
- raw: {
176
- handler: (req: any) =>
177
- client(new Request(req) as Schema.TaggedRequest.All).pipe(
178
- Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
179
- Effect.withSpan("client.request " + requestName, {
180
- captureStackTrace: false,
181
- attributes: { "request.name": requestName }
182
- }),
183
- Effect.provide(requestLevelLayers)
184
- ),
185
-
186
- ...requestMeta
187
- }
188
- }
189
-
190
- return prev
191
- }, {} as Client<M>))
192
- })
193
-
194
58
  export type ExtractResponse<T> = T extends Schema<any, any, any> ? Schema.Type<T>
195
59
  : T extends unknown ? void
196
60
  : never