effect-app 2.20.0 → 2.22.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 +12 -0
- package/dist/Effect.d.ts +1 -1
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +2 -3
- package/dist/Schema/ext.d.ts +1 -1
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +2 -2
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +2 -2
- 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 +124 -445
- package/src/Effect.ts +2 -2
- package/src/Schema/ext.ts +1 -1
- package/src/_ext/Array.ts +1 -1
- package/src/client/{apiClient.ts → apiClientFactory.ts} +22 -14
- package/src/client.ts +1 -1
- package/_cjs/Array.cjs +0 -90
- package/_cjs/Array.cjs.map +0 -1
- package/_cjs/Chunk.cjs +0 -97
- package/_cjs/Chunk.cjs.map +0 -1
- package/_cjs/Config/SecretURL.cjs +0 -49
- package/_cjs/Config/SecretURL.cjs.map +0 -1
- package/_cjs/Config/internal/configSecretURL.cjs +0 -77
- package/_cjs/Config/internal/configSecretURL.cjs.map +0 -1
- package/_cjs/Context.cjs +0 -237
- package/_cjs/Context.cjs.map +0 -1
- package/_cjs/Effect.cjs +0 -168
- package/_cjs/Effect.cjs.map +0 -1
- package/_cjs/Function.cjs +0 -107
- package/_cjs/Function.cjs.map +0 -1
- package/_cjs/Inputify.type.cjs +0 -6
- package/_cjs/Inputify.type.cjs.map +0 -1
- package/_cjs/NonEmptySet.cjs +0 -26
- package/_cjs/NonEmptySet.cjs.map +0 -1
- package/_cjs/NonEmptySetAspects.cjs +0 -17
- package/_cjs/NonEmptySetAspects.cjs.map +0 -1
- package/_cjs/NonEmptySetBase.cjs +0 -82
- package/_cjs/NonEmptySetBase.cjs.map +0 -1
- package/_cjs/Operations.cjs +0 -37
- package/_cjs/Operations.cjs.map +0 -1
- package/_cjs/Option.cjs +0 -75
- package/_cjs/Option.cjs.map +0 -1
- package/_cjs/Pure.cjs +0 -304
- package/_cjs/Pure.cjs.map +0 -1
- package/_cjs/Schema/Class.cjs +0 -61
- package/_cjs/Schema/Class.cjs.map +0 -1
- package/_cjs/Schema/FastCheck.cjs +0 -39
- package/_cjs/Schema/FastCheck.cjs.map +0 -1
- package/_cjs/Schema/Methods.cjs +0 -6
- package/_cjs/Schema/Methods.cjs.map +0 -1
- package/_cjs/Schema/brand.cjs +0 -17
- package/_cjs/Schema/brand.cjs.map +0 -1
- package/_cjs/Schema/email.cjs +0 -20
- package/_cjs/Schema/email.cjs.map +0 -1
- package/_cjs/Schema/ext.cjs +0 -187
- package/_cjs/Schema/ext.cjs.map +0 -1
- package/_cjs/Schema/moreStrings.cjs +0 -124
- package/_cjs/Schema/moreStrings.cjs.map +0 -1
- package/_cjs/Schema/numbers.cjs +0 -52
- package/_cjs/Schema/numbers.cjs.map +0 -1
- package/_cjs/Schema/phoneNumber.cjs +0 -22
- package/_cjs/Schema/phoneNumber.cjs.map +0 -1
- package/_cjs/Schema/schema.cjs +0 -15
- package/_cjs/Schema/schema.cjs.map +0 -1
- package/_cjs/Schema/strings.cjs +0 -32
- package/_cjs/Schema/strings.cjs.map +0 -1
- package/_cjs/Schema.cjs +0 -336
- package/_cjs/Schema.cjs.map +0 -1
- package/_cjs/Set.cjs +0 -563
- package/_cjs/Set.cjs.map +0 -1
- package/_cjs/Struct.cjs +0 -51
- package/_cjs/Struct.cjs.map +0 -1
- package/_cjs/Tag.cjs +0 -16
- package/_cjs/Tag.cjs.map +0 -1
- package/_cjs/Unify.cjs +0 -24
- package/_cjs/Unify.cjs.map +0 -1
- package/_cjs/Widen.type.cjs +0 -6
- package/_cjs/Widen.type.cjs.map +0 -1
- package/_cjs/_ext/Array.cjs +0 -22
- package/_cjs/_ext/Array.cjs.map +0 -1
- package/_cjs/_ext/date.cjs +0 -22
- package/_cjs/_ext/date.cjs.map +0 -1
- package/_cjs/_ext/misc.cjs +0 -33
- package/_cjs/_ext/misc.cjs.map +0 -1
- package/_cjs/_ext/ord.ext.cjs +0 -43
- package/_cjs/_ext/ord.ext.cjs.map +0 -1
- package/_cjs/builtin.cjs +0 -6
- package/_cjs/builtin.cjs.map +0 -1
- package/_cjs/client/apiClient.cjs +0 -108
- package/_cjs/client/apiClient.cjs.map +0 -1
- package/_cjs/client/clientFor.cjs +0 -28
- package/_cjs/client/clientFor.cjs.map +0 -1
- package/_cjs/client/errors.cjs +0 -191
- package/_cjs/client/errors.cjs.map +0 -1
- package/_cjs/client/req.cjs +0 -40
- package/_cjs/client/req.cjs.map +0 -1
- package/_cjs/client.cjs +0 -50
- package/_cjs/client.cjs.map +0 -1
- package/_cjs/faker.cjs +0 -31
- package/_cjs/faker.cjs.map +0 -1
- package/_cjs/http/Request.cjs +0 -25
- package/_cjs/http/Request.cjs.map +0 -1
- package/_cjs/http/http-client.cjs +0 -35
- package/_cjs/http/http-client.cjs.map +0 -1
- package/_cjs/http/internal/lib.cjs +0 -33
- package/_cjs/http/internal/lib.cjs.map +0 -1
- package/_cjs/http.cjs +0 -17
- package/_cjs/http.cjs.map +0 -1
- package/_cjs/ids.cjs +0 -21
- package/_cjs/ids.cjs.map +0 -1
- package/_cjs/index.cjs +0 -18
- package/_cjs/index.cjs.map +0 -1
- package/_cjs/internal/Prelude.cjs +0 -53
- package/_cjs/internal/Prelude.cjs.map +0 -1
- package/_cjs/internal/lib.cjs +0 -199
- package/_cjs/internal/lib.cjs.map +0 -1
- package/_cjs/logger.cjs +0 -9
- package/_cjs/logger.cjs.map +0 -1
- package/_cjs/transform.cjs +0 -45
- package/_cjs/transform.cjs.map +0 -1
- package/_cjs/utils/effectify.cjs +0 -25
- package/_cjs/utils/effectify.cjs.map +0 -1
- package/_cjs/utils/extend.cjs +0 -17
- package/_cjs/utils/extend.cjs.map +0 -1
- package/_cjs/utils/logger.cjs +0 -23
- package/_cjs/utils/logger.cjs.map +0 -1
- package/_cjs/utils.cjs +0 -427
- package/_cjs/utils.cjs.map +0 -1
- package/_cjs/validation/validators.cjs +0 -32
- package/_cjs/validation/validators.cjs.map +0 -1
- package/_cjs/validation.cjs +0 -45
- package/_cjs/validation.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
|
@@ -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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
|