effect-app 2.20.0 → 2.21.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.21.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b1396c9: refactor: rename ApiClient to ApiClientFactory
8
+
3
9
  ## 2.20.0
4
10
 
5
11
  ### Minor Changes
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.DefaultApiConfig = exports.ApiClient = void 0;
6
+ exports.DefaultApiConfig = exports.ApiClientFactory = void 0;
7
7
  var _lib = require("../internal/lib.cjs");
8
8
  var _rpc = require("@effect/rpc");
9
9
  var _rpcHttp = require("@effect/rpc-http");
@@ -13,18 +13,18 @@ const DefaultApiConfig = exports.DefaultApiConfig = _lib.Config.all({
13
13
  url: _lib.Config.string("apiUrl").pipe(_lib.Config.withDefault("/api")),
14
14
  headers: _lib.Config.hashMap(_lib.Config.string(), "headers").pipe(_lib.Config.option)
15
15
  });
16
- const apiClient = config => _lib.Effect.gen(function* () {
16
+ const makeApiClientFactory = config => _lib.Effect.gen(function* () {
17
17
  const baseClient = yield* _http.HttpClient.HttpClient;
18
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) => {
19
+ const makeClientFor = (resource, requestLevelLayers = _lib.Layer.empty) => {
20
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];
21
+ const filtered = (0, _utils.typedKeysOf)(resource).reduce((acc, cur) => {
22
+ if (_lib.Predicate.isObject(resource[cur]) && resource[cur].success) {
23
+ acc[cur] = resource[cur];
24
24
  }
25
25
  return acc;
26
26
  }, {});
27
- const meta = models.meta;
27
+ const meta = resource.meta;
28
28
  if (!meta) throw new Error("No meta defined in Resource!");
29
29
  const resolver = (0, _lib.flow)(_rpcHttp.HttpRpcResolver.make, _ => _rpc.RpcResolver.toClient(_));
30
30
  const baseClient = _http.HttpClient.mapRequest(client, _http.HttpClientRequest.appendUrl("/" + meta.moduleName));
@@ -82,27 +82,27 @@ const apiClient = config => _lib.Effect.gen(function* () {
82
82
  return prev;
83
83
  }, {});
84
84
  };
85
- function makeFor(requestLevelLayers) {
85
+ function makeClientForCached(requestLevelLayers) {
86
86
  const cache = new Map();
87
87
  return models => {
88
88
  const found = cache.get(models);
89
89
  if (found) {
90
90
  return found;
91
91
  }
92
- const m = clientFor_(models, requestLevelLayers);
92
+ const m = makeClientFor(models, requestLevelLayers);
93
93
  cache.set(models, m);
94
94
  return m;
95
95
  };
96
96
  }
97
- return {
98
- for_: clientFor_,
99
- makeFor_: makeFor
100
- };
97
+ return makeClientForCached;
101
98
  });
102
- class ApiClient extends _lib.Context.TagId("ApiClient")() {
103
- static layer = apiConfig => this.toLayer(apiClient(apiConfig));
99
+ /**
100
+ * Used to create clients for resource modules.
101
+ */
102
+ class ApiClientFactory extends _lib.Context.TagId("ApiClientFactory")() {
103
+ static layer = config => this.toLayer(makeApiClientFactory(config));
104
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)));
105
+ static makeFor = requestLevelLayers => resource => this.use(apiClientFactory => apiClientFactory(requestLevelLayers)).pipe(_lib.Effect.map(clientFor => clientFor(resource)));
106
106
  }
107
- exports.ApiClient = ApiClient;
108
- //# sourceMappingURL=apiClient.cjs.map
107
+ exports.ApiClientFactory = ApiClientFactory;
108
+ //# sourceMappingURL=apiClientFactory.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiClientFactory.cjs","names":["_lib","require","_rpc","_rpcHttp","_http","_utils","DefaultApiConfig","exports","Config","all","url","string","pipe","withDefault","headers","hashMap","option","makeApiClientFactory","config","Effect","gen","baseClient","HttpClient","client","mapRequest","HttpClientRequest","prependUrl","setHeaders","Option","getOrElse","HashMap","empty","makeClientFor","resource","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","makeClientForCached","cache","Map","models","found","get","m","set","ApiClientFactory","Context","TagId","layer","toLayer","layerFromConfig","map","unwrapEffect","makeFor","use","apiClientFactory","clientFor"],"sources":["../../src/client/apiClientFactory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/_cjs/client.cjs CHANGED
@@ -3,14 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var _apiClient = require("./client/apiClient.cjs");
7
- Object.keys(_apiClient).forEach(function (key) {
6
+ var _apiClientFactory = require("./client/apiClientFactory.cjs");
7
+ Object.keys(_apiClientFactory).forEach(function (key) {
8
8
  if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _apiClient[key]) return;
9
+ if (key in exports && exports[key] === _apiClientFactory[key]) return;
10
10
  Object.defineProperty(exports, key, {
11
11
  enumerable: true,
12
12
  get: function () {
13
- return _apiClient[key];
13
+ return _apiClientFactory[key];
14
14
  }
15
15
  });
16
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"client.cjs","names":["_apiClient","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_clientFor","_errors","_req"],"sources":["../src/client.ts"],"sourcesContent":[null],"mappings":";;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,OAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,OAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,OAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,OAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,IAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,IAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,IAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,IAAA,CAAAP,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"client.cjs","names":["_apiClientFactory","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_clientFor","_errors","_req"],"sources":["../src/client.ts"],"sourcesContent":[null],"mappings":";;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,iBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,iBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,iBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,UAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,UAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,UAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,OAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,OAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,OAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,OAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,IAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,IAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,IAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,IAAA,CAAAP,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ import type { Schema } from "../internal/lib.js";
2
+ import { Config, Context, Effect, HashMap, Layer, Option } from "../internal/lib.js";
3
+ import { HttpClient } from "../http.js";
4
+ import type { Requests } from "./clientFor.js";
5
+ export interface ApiConfig {
6
+ url: string;
7
+ headers: Option<HashMap<string, string>>;
8
+ }
9
+ export declare const DefaultApiConfig: Config.Config<{
10
+ url: string;
11
+ headers: Option.Option<HashMap.HashMap<string, string>>;
12
+ }>;
13
+ declare const ApiClientFactory_base: (abstract new (service: (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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]> & {
14
+ 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]>;
15
+ } : 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]> & {
16
+ 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]>;
17
+ }; } : never) => Readonly<(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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]> & {
18
+ 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]>;
19
+ } : 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]> & {
20
+ 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]>;
21
+ }; } : never> & Context.TagClassShape<"ApiClientFactory", (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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]> & {
22
+ 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]>;
23
+ } : 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]> & {
24
+ 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]>;
25
+ }; } : never>) & {
26
+ toLayer: <E, R>(eff: Effect.Effect<Omit<ApiClientFactory, keyof Context.TagClassShape<any, any>>, E, R>) => Layer.Layer<ApiClientFactory, E, R>;
27
+ toLayerScoped: <E, R>(eff: Effect.Effect<Omit<ApiClientFactory, keyof Context.TagClassShape<any, any>>, E, R>) => Layer.Layer<ApiClientFactory, E, Exclude<R, import("effect/Scope").Scope>>;
28
+ of: (service: Omit<ApiClientFactory, keyof Context.TagClassShape<any, any>>) => ApiClientFactory;
29
+ } & Context.Tag<ApiClientFactory, ApiClientFactory> & {} & {
30
+ use: <X>(body: (_: (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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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
+ 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, R | ApiClientFactory> : Effect.Effect<X, never, ApiClientFactory>;
35
+ };
36
+ /**
37
+ * Used to create clients for resource modules.
38
+ */
39
+ export declare class ApiClientFactory extends ApiClientFactory_base {
40
+ static readonly layer: (config: ApiConfig) => Layer.Layer<ApiClientFactory, never, HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>>;
41
+ static readonly layerFromConfig: Layer.Layer<ApiClientFactory, import("effect/ConfigError").ConfigError, HttpClient.HttpClient<import("@effect/platform/HttpClientError").HttpClientError, import("effect/Scope").Scope>>;
42
+ static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(resource: M) => Effect.Effect<Omit<M, "meta"> extends infer T extends Requests ? { [K in keyof T]: (Exclude<keyof Schema.Schema.Type<Omit<M, "meta">[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]> & {
43
+ 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]>;
44
+ } : 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]> & {
45
+ 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]>;
46
+ }; } : never, never, ApiClientFactory>;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=apiClientFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.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;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,2JAA+C;IACzF,MAAM,CAAC,QAAQ,CAAC,eAAe,2LAAoE;IAEnG,MAAM,CAAC,QAAQ,CAAC,OAAO,uBACA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,QAAQ,YAAY,CAAC;;;;2CAGjC;CAC5D"}
@@ -0,0 +1,102 @@
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";
4
+ import { HttpClient, HttpClientRequest } from "../http.js";
5
+ import { typedKeysOf } from "../utils.js";
6
+ export const DefaultApiConfig = Config.all({
7
+ url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
8
+ headers: Config
9
+ .hashMap(Config.string(), "headers")
10
+ .pipe(Config.option)
11
+ });
12
+ const makeApiClientFactory = (config) => Effect.gen(function* () {
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 makeClientFor = (resource, requestLevelLayers = Layer.empty) => {
16
+ // TODO: Record.filter
17
+ const filtered = typedKeysOf(resource).reduce((acc, cur) => {
18
+ if (Predicate.isObject(resource[cur])
19
+ && (resource[cur].success)) {
20
+ acc[cur] = resource[cur];
21
+ }
22
+ return acc;
23
+ }, {});
24
+ const meta = resource.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
+ }, {}));
77
+ };
78
+ function makeClientForCached(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 = makeClientFor(models, requestLevelLayers);
86
+ cache.set(models, m);
87
+ return m;
88
+ };
89
+ }
90
+ return makeClientForCached;
91
+ });
92
+ /**
93
+ * Used to create clients for resource modules.
94
+ */
95
+ export class ApiClientFactory extends Context.TagId("ApiClientFactory")() {
96
+ static layer = (config) => this.toLayer(makeApiClientFactory(config));
97
+ static layerFromConfig = DefaultApiConfig.pipe(Effect.map(this.layer), Layer.unwrapEffect);
98
+ static makeFor = (requestLevelLayers) => (resource) => this
99
+ .use((apiClientFactory) => apiClientFactory(requestLevelLayers))
100
+ .pipe(Effect.map((clientFor) => clientFor(resource)));
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFHaEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBUXpDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsT0FBTyxFQUFFLE1BQU07U0FDWixPQUFPLENBQ04sTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUNmLFNBQVMsQ0FDVjtTQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0NBQ3ZCLENBQUMsQ0FBQTtBQVdGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFpQixFQUFFLEVBQUUsQ0FDakQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQTtJQUMvQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUM1QixVQUFVLENBQUMs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
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./client/apiClient.js";
1
+ export * from "./client/apiClientFactory.js";
2
2
  export * from "./client/clientFor.js";
3
3
  export * from "./client/errors.js";
4
4
  export * from "./client/req.js";
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA"}
package/dist/client.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // codegen:start {preset: barrel, include: ./client/*.ts}
2
- export * from "./client/apiClient.js";
2
+ export * from "./client/apiClientFactory.js";
3
3
  export * from "./client/clientFor.js";
4
4
  export * from "./client/errors.js";
5
5
  export * from "./client/req.js";
6
6
  // codegen:end
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjIn0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsY0FBYyw4QkFBOEIsQ0FBQTtBQUM1QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "2.20.0",
3
+ "version": "2.21.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -408,14 +408,14 @@
408
408
  "default": "./_cjs/client.cjs"
409
409
  }
410
410
  },
411
- "./client/apiClient": {
411
+ "./client/apiClientFactory": {
412
412
  "import": {
413
- "types": "./dist/client/apiClient.d.ts",
414
- "default": "./dist/client/apiClient.js"
413
+ "types": "./dist/client/apiClientFactory.d.ts",
414
+ "default": "./dist/client/apiClientFactory.js"
415
415
  },
416
416
  "require": {
417
- "types": "./dist/client/apiClient.d.ts",
418
- "default": "./_cjs/client/apiClient.cjs"
417
+ "types": "./dist/client/apiClientFactory.d.ts",
418
+ "default": "./_cjs/client/apiClientFactory.cjs"
419
419
  }
420
420
  },
421
421
  "./client/clientFor": {
@@ -34,7 +34,7 @@ type Req = S.Schema.All & {
34
34
  config?: Record<string, any>
35
35
  }
36
36
 
37
- const apiClient = (config: ApiConfig) =>
37
+ const makeApiClientFactory = (config: ApiConfig) =>
38
38
  Effect.gen(function*() {
39
39
  const baseClient = yield* HttpClient.HttpClient
40
40
  const client = baseClient.pipe(
@@ -44,22 +44,22 @@ const apiClient = (config: ApiConfig) =>
44
44
  )
45
45
  )
46
46
 
47
- const clientFor_ = <M extends Requests>(models: M, requestLevelLayers = Layer.empty) => {
47
+ const makeClientFor = <M extends Requests>(resource: M, requestLevelLayers = Layer.empty) => {
48
48
  type Filtered = {
49
49
  [K in keyof Requests as Requests[K] extends Req ? K : never]: Requests[K] extends Req ? Requests[K] : never
50
50
  }
51
51
  // TODO: Record.filter
52
- const filtered = typedKeysOf(models).reduce((acc, cur) => {
52
+ const filtered = typedKeysOf(resource).reduce((acc, cur) => {
53
53
  if (
54
- Predicate.isObject(models[cur])
55
- && (models[cur].success)
54
+ Predicate.isObject(resource[cur])
55
+ && (resource[cur].success)
56
56
  ) {
57
- acc[cur as keyof Filtered] = models[cur]
57
+ acc[cur as keyof Filtered] = resource[cur]
58
58
  }
59
59
  return acc
60
60
  }, {} as Record<keyof Filtered, Req>)
61
61
 
62
- const meta = (models as any).meta as { moduleName: string }
62
+ const meta = (resource as any).meta as { moduleName: string }
63
63
  if (!meta) throw new Error("No meta defined in Resource!")
64
64
 
65
65
  const resolver = flow(
@@ -145,7 +145,7 @@ const apiClient = (config: ApiConfig) =>
145
145
  }, {} as Client<M>))
146
146
  }
147
147
 
148
- function makeFor(requestLevelLayers: Layer.Layer<never, never, never>) {
148
+ function makeClientForCached(requestLevelLayers: Layer.Layer<never, never, never>) {
149
149
  const cache = new Map<any, Client<any>>()
150
150
 
151
151
  return <M extends Requests>(
@@ -155,19 +155,27 @@ const apiClient = (config: ApiConfig) =>
155
155
  if (found) {
156
156
  return found
157
157
  }
158
- const m = clientFor_(models, requestLevelLayers)
158
+ const m = makeClientFor(models, requestLevelLayers)
159
159
  cache.set(models, m)
160
160
  return m
161
161
  }
162
162
  }
163
163
 
164
- return { for_: clientFor_, makeFor_: makeFor }
164
+ return makeClientForCached
165
165
  })
166
166
 
167
- export class ApiClient extends Context.TagId("ApiClient")<ApiClient, Effect.Success<ReturnType<typeof apiClient>>>() {
168
- static readonly layer = (apiConfig: ApiConfig) => this.toLayer(apiClient(apiConfig))
167
+ /**
168
+ * Used to create clients for resource modules.
169
+ */
170
+ export class ApiClientFactory
171
+ extends Context.TagId("ApiClientFactory")<ApiClientFactory, Effect.Success<ReturnType<typeof makeApiClientFactory>>>()
172
+ {
173
+ static readonly layer = (config: ApiConfig) => this.toLayer(makeApiClientFactory(config))
169
174
  static readonly layerFromConfig = DefaultApiConfig.pipe(Effect.map(this.layer), Layer.unwrapEffect)
170
175
 
171
- static readonly makeFor = (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(models: M) =>
172
- this.use((_) => _.makeFor_(requestLevelLayers)).pipe(Effect.map((_) => _(models)))
176
+ static readonly makeFor =
177
+ (requestLevelLayers: Layer.Layer<never, never, never>) => <M extends Requests>(resource: M) =>
178
+ this
179
+ .use((apiClientFactory) => apiClientFactory(requestLevelLayers))
180
+ .pipe(Effect.map((clientFor) => clientFor(resource)))
173
181
  }
package/src/client.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  // codegen:start {preset: barrel, include: ./client/*.ts}
2
- export * from "./client/apiClient.js"
2
+ export * from "./client/apiClientFactory.js"
3
3
  export * from "./client/clientFor.js"
4
4
  export * from "./client/errors.js"
5
5
  export * from "./client/req.js"
@@ -1 +0,0 @@
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":[]}
@@ -1,80 +0,0 @@
1
- import type { Schema } from "../internal/lib.js";
2
- import { Config, Context, Effect, HashMap, Layer, Option } from "../internal/lib.js";
3
- import { HttpClient } from "../http.js";
4
- import type { Requests } from "./clientFor.js";
5
- export interface ApiConfig {
6
- url: string;
7
- headers: Option<HashMap<string, string>>;
8
- }
9
- export declare const DefaultApiConfig: Config.Config<{
10
- url: string;
11
- headers: Option.Option<HashMap.HashMap<string, string>>;
12
- }>;
13
- declare const ApiClient_base: (abstract new (service: {
14
- for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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]> & {
22
- 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]>;
23
- }; } : never;
24
- }) => Readonly<{
25
- for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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
- 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;
35
- }> & Context.TagClassShape<"ApiClient", {
36
- for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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]> & {
44
- 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]>;
45
- }; } : never;
46
- }>) & {
47
- toLayer: <E, R>(eff: Effect.Effect<Omit<ApiClient, keyof Context.TagClassShape<any, any>>, E, R>) => Layer.Layer<ApiClient, E, R>;
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>>;
49
- of: (service: Omit<ApiClient, keyof Context.TagClassShape<any, any>>) => ApiClient;
50
- } & Context.Tag<ApiClient, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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]> & {
54
- 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]>;
55
- }; } : never), never, ApiClient>;
56
- } & {
57
- use: <X>(body: (_: {
58
- for_: <M extends Requests>(models: M, requestLevelLayers?: Layer.Layer<never, never, never>) => { [K in keyof M]: (Exclude<keyof Schema.Schema.Type<M[K]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId>, 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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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]> & {
66
- 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]>;
67
- }; } : never;
68
- }) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | ApiClient> : Effect.Effect<X, never, ApiClient>;
69
- };
70
- export declare class ApiClient extends ApiClient_base {
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]>, typeof Schema.symbolSerializable | typeof Schema.symbolWithResult | "_tag" | typeof import("effect/Request").RequestTypeId> 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]>, 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]> & {
76
- 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]>;
77
- }; } : never, never, ApiClient>;
78
- }
79
- export {};
80
- //# sourceMappingURL=apiClient.d.ts.map
@@ -1 +0,0 @@
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,97 +0,0 @@
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";
4
- import { HttpClient, HttpClientRequest } from "../http.js";
5
- import { typedKeysOf } from "../utils.js";
6
- export const DefaultApiConfig = Config.all({
7
- url: Config.string("apiUrl").pipe(Config.withDefault("/api")),
8
- headers: Config
9
- .hashMap(Config.string(), "headers")
10
- .pipe(Config.option)
11
- });
12
- const apiClient = (config) => Effect.gen(function* () {
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
- }, {}));
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 };
91
- });
92
- export class ApiClient extends Context.TagId("ApiClient")() {
93
- static layer = (apiConfig) => this.toLayer(apiClient(apiConfig));
94
- static layerFromConfig = DefaultApiConfig.pipe(Effect.map(this.layer), Layer.unwrapEffect);
95
- static makeFor = (requestLevelLayers) => (models) => this.use((_) => _.makeFor_(requestLevelLayers)).pipe(Effect.map((_) => _(models)));
96
- }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9hcGlDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBR2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRWxELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVF6QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3pDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELE9BQU8sRUFBRSxNQUFNO1NBQ1osT0FBTyxDQUNOLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFDZixTQUFTLENBQ1Y7U0FDQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztDQUN2QixDQUFDLENBQUE7QUFXRixNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQWlCLEVBQUUsRUFBRSxDQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFBO0lBQy9DLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQzVCLFVBQVUsQ0FBQyxVQUFVLENBQUMsaUJBQWlC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