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 +6 -0
- package/_cjs/client/{apiClient.cjs → apiClientFactory.cjs} +18 -18
- package/_cjs/client/apiClientFactory.cjs.map +1 -0
- package/_cjs/client.cjs +4 -4
- package/_cjs/client.cjs.map +1 -1
- package/dist/client/apiClientFactory.d.ts +49 -0
- package/dist/client/apiClientFactory.d.ts.map +1 -0
- package/dist/client/apiClientFactory.js +102 -0
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -2
- package/package.json +6 -6
- package/src/client/{apiClient.ts → apiClientFactory.ts} +22 -14
- package/src/client.ts +1 -1
- package/_cjs/client/apiClient.cjs.map +0 -1
- package/dist/client/apiClient.d.ts +0 -80
- package/dist/client/apiClient.d.ts.map +0 -1
- package/dist/client/apiClient.js +0 -97
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DefaultApiConfig = exports.
|
|
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
|
|
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
|
|
19
|
+
const makeClientFor = (resource, requestLevelLayers = _lib.Layer.empty) => {
|
|
20
20
|
// TODO: Record.filter
|
|
21
|
-
const filtered = (0, _utils.typedKeysOf)(
|
|
22
|
-
if (_lib.Predicate.isObject(
|
|
23
|
-
acc[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 =
|
|
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
|
|
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 =
|
|
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
|
-
|
|
103
|
-
|
|
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 =>
|
|
105
|
+
static makeFor = requestLevelLayers => resource => this.use(apiClientFactory => apiClientFactory(requestLevelLayers)).pipe(_lib.Effect.map(clientFor => clientFor(resource)));
|
|
106
106
|
}
|
|
107
|
-
exports.
|
|
108
|
-
//# sourceMappingURL=
|
|
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
|
|
7
|
-
Object.keys(
|
|
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] ===
|
|
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
|
|
13
|
+
return _apiClientFactory[key];
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
});
|
package/_cjs/client.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.cjs","names":["
|
|
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
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,cAAc,
|
|
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/
|
|
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,
|
|
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.
|
|
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/
|
|
411
|
+
"./client/apiClientFactory": {
|
|
412
412
|
"import": {
|
|
413
|
-
"types": "./dist/client/
|
|
414
|
-
"default": "./dist/client/
|
|
413
|
+
"types": "./dist/client/apiClientFactory.d.ts",
|
|
414
|
+
"default": "./dist/client/apiClientFactory.js"
|
|
415
415
|
},
|
|
416
416
|
"require": {
|
|
417
|
-
"types": "./dist/client/
|
|
418
|
-
"default": "./_cjs/client/
|
|
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
|
|
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
|
|
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(
|
|
52
|
+
const filtered = typedKeysOf(resource).reduce((acc, cur) => {
|
|
53
53
|
if (
|
|
54
|
-
Predicate.isObject(
|
|
55
|
-
&& (
|
|
54
|
+
Predicate.isObject(resource[cur])
|
|
55
|
+
&& (resource[cur].success)
|
|
56
56
|
) {
|
|
57
|
-
acc[cur as keyof Filtered] =
|
|
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 = (
|
|
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
|
|
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 =
|
|
158
|
+
const m = makeClientFor(models, requestLevelLayers)
|
|
159
159
|
cache.set(models, m)
|
|
160
160
|
return m
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
return
|
|
164
|
+
return makeClientForCached
|
|
165
165
|
})
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
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 =
|
|
172
|
-
|
|
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 +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"}
|
package/dist/client/apiClient.js
DELETED
|
@@ -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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
|