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.
Files changed (141) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/Effect.d.ts +1 -1
  3. package/dist/Effect.d.ts.map +1 -1
  4. package/dist/Effect.js +2 -3
  5. package/dist/Schema/ext.d.ts +1 -1
  6. package/dist/Schema/ext.d.ts.map +1 -1
  7. package/dist/Schema/ext.js +2 -2
  8. package/dist/_ext/Array.d.ts +1 -1
  9. package/dist/_ext/Array.d.ts.map +1 -1
  10. package/dist/_ext/Array.js +2 -2
  11. package/dist/client/apiClientFactory.d.ts +49 -0
  12. package/dist/client/apiClientFactory.d.ts.map +1 -0
  13. package/dist/client/apiClientFactory.js +102 -0
  14. package/dist/client.d.ts +1 -1
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +2 -2
  17. package/package.json +124 -445
  18. package/src/Effect.ts +2 -2
  19. package/src/Schema/ext.ts +1 -1
  20. package/src/_ext/Array.ts +1 -1
  21. package/src/client/{apiClient.ts → apiClientFactory.ts} +22 -14
  22. package/src/client.ts +1 -1
  23. package/_cjs/Array.cjs +0 -90
  24. package/_cjs/Array.cjs.map +0 -1
  25. package/_cjs/Chunk.cjs +0 -97
  26. package/_cjs/Chunk.cjs.map +0 -1
  27. package/_cjs/Config/SecretURL.cjs +0 -49
  28. package/_cjs/Config/SecretURL.cjs.map +0 -1
  29. package/_cjs/Config/internal/configSecretURL.cjs +0 -77
  30. package/_cjs/Config/internal/configSecretURL.cjs.map +0 -1
  31. package/_cjs/Context.cjs +0 -237
  32. package/_cjs/Context.cjs.map +0 -1
  33. package/_cjs/Effect.cjs +0 -168
  34. package/_cjs/Effect.cjs.map +0 -1
  35. package/_cjs/Function.cjs +0 -107
  36. package/_cjs/Function.cjs.map +0 -1
  37. package/_cjs/Inputify.type.cjs +0 -6
  38. package/_cjs/Inputify.type.cjs.map +0 -1
  39. package/_cjs/NonEmptySet.cjs +0 -26
  40. package/_cjs/NonEmptySet.cjs.map +0 -1
  41. package/_cjs/NonEmptySetAspects.cjs +0 -17
  42. package/_cjs/NonEmptySetAspects.cjs.map +0 -1
  43. package/_cjs/NonEmptySetBase.cjs +0 -82
  44. package/_cjs/NonEmptySetBase.cjs.map +0 -1
  45. package/_cjs/Operations.cjs +0 -37
  46. package/_cjs/Operations.cjs.map +0 -1
  47. package/_cjs/Option.cjs +0 -75
  48. package/_cjs/Option.cjs.map +0 -1
  49. package/_cjs/Pure.cjs +0 -304
  50. package/_cjs/Pure.cjs.map +0 -1
  51. package/_cjs/Schema/Class.cjs +0 -61
  52. package/_cjs/Schema/Class.cjs.map +0 -1
  53. package/_cjs/Schema/FastCheck.cjs +0 -39
  54. package/_cjs/Schema/FastCheck.cjs.map +0 -1
  55. package/_cjs/Schema/Methods.cjs +0 -6
  56. package/_cjs/Schema/Methods.cjs.map +0 -1
  57. package/_cjs/Schema/brand.cjs +0 -17
  58. package/_cjs/Schema/brand.cjs.map +0 -1
  59. package/_cjs/Schema/email.cjs +0 -20
  60. package/_cjs/Schema/email.cjs.map +0 -1
  61. package/_cjs/Schema/ext.cjs +0 -187
  62. package/_cjs/Schema/ext.cjs.map +0 -1
  63. package/_cjs/Schema/moreStrings.cjs +0 -124
  64. package/_cjs/Schema/moreStrings.cjs.map +0 -1
  65. package/_cjs/Schema/numbers.cjs +0 -52
  66. package/_cjs/Schema/numbers.cjs.map +0 -1
  67. package/_cjs/Schema/phoneNumber.cjs +0 -22
  68. package/_cjs/Schema/phoneNumber.cjs.map +0 -1
  69. package/_cjs/Schema/schema.cjs +0 -15
  70. package/_cjs/Schema/schema.cjs.map +0 -1
  71. package/_cjs/Schema/strings.cjs +0 -32
  72. package/_cjs/Schema/strings.cjs.map +0 -1
  73. package/_cjs/Schema.cjs +0 -336
  74. package/_cjs/Schema.cjs.map +0 -1
  75. package/_cjs/Set.cjs +0 -563
  76. package/_cjs/Set.cjs.map +0 -1
  77. package/_cjs/Struct.cjs +0 -51
  78. package/_cjs/Struct.cjs.map +0 -1
  79. package/_cjs/Tag.cjs +0 -16
  80. package/_cjs/Tag.cjs.map +0 -1
  81. package/_cjs/Unify.cjs +0 -24
  82. package/_cjs/Unify.cjs.map +0 -1
  83. package/_cjs/Widen.type.cjs +0 -6
  84. package/_cjs/Widen.type.cjs.map +0 -1
  85. package/_cjs/_ext/Array.cjs +0 -22
  86. package/_cjs/_ext/Array.cjs.map +0 -1
  87. package/_cjs/_ext/date.cjs +0 -22
  88. package/_cjs/_ext/date.cjs.map +0 -1
  89. package/_cjs/_ext/misc.cjs +0 -33
  90. package/_cjs/_ext/misc.cjs.map +0 -1
  91. package/_cjs/_ext/ord.ext.cjs +0 -43
  92. package/_cjs/_ext/ord.ext.cjs.map +0 -1
  93. package/_cjs/builtin.cjs +0 -6
  94. package/_cjs/builtin.cjs.map +0 -1
  95. package/_cjs/client/apiClient.cjs +0 -108
  96. package/_cjs/client/apiClient.cjs.map +0 -1
  97. package/_cjs/client/clientFor.cjs +0 -28
  98. package/_cjs/client/clientFor.cjs.map +0 -1
  99. package/_cjs/client/errors.cjs +0 -191
  100. package/_cjs/client/errors.cjs.map +0 -1
  101. package/_cjs/client/req.cjs +0 -40
  102. package/_cjs/client/req.cjs.map +0 -1
  103. package/_cjs/client.cjs +0 -50
  104. package/_cjs/client.cjs.map +0 -1
  105. package/_cjs/faker.cjs +0 -31
  106. package/_cjs/faker.cjs.map +0 -1
  107. package/_cjs/http/Request.cjs +0 -25
  108. package/_cjs/http/Request.cjs.map +0 -1
  109. package/_cjs/http/http-client.cjs +0 -35
  110. package/_cjs/http/http-client.cjs.map +0 -1
  111. package/_cjs/http/internal/lib.cjs +0 -33
  112. package/_cjs/http/internal/lib.cjs.map +0 -1
  113. package/_cjs/http.cjs +0 -17
  114. package/_cjs/http.cjs.map +0 -1
  115. package/_cjs/ids.cjs +0 -21
  116. package/_cjs/ids.cjs.map +0 -1
  117. package/_cjs/index.cjs +0 -18
  118. package/_cjs/index.cjs.map +0 -1
  119. package/_cjs/internal/Prelude.cjs +0 -53
  120. package/_cjs/internal/Prelude.cjs.map +0 -1
  121. package/_cjs/internal/lib.cjs +0 -199
  122. package/_cjs/internal/lib.cjs.map +0 -1
  123. package/_cjs/logger.cjs +0 -9
  124. package/_cjs/logger.cjs.map +0 -1
  125. package/_cjs/transform.cjs +0 -45
  126. package/_cjs/transform.cjs.map +0 -1
  127. package/_cjs/utils/effectify.cjs +0 -25
  128. package/_cjs/utils/effectify.cjs.map +0 -1
  129. package/_cjs/utils/extend.cjs +0 -17
  130. package/_cjs/utils/extend.cjs.map +0 -1
  131. package/_cjs/utils/logger.cjs +0 -23
  132. package/_cjs/utils/logger.cjs.map +0 -1
  133. package/_cjs/utils.cjs +0 -427
  134. package/_cjs/utils.cjs.map +0 -1
  135. package/_cjs/validation/validators.cjs +0 -32
  136. package/_cjs/validation/validators.cjs.map +0 -1
  137. package/_cjs/validation.cjs +0 -45
  138. package/_cjs/validation.cjs.map +0 -1
  139. package/dist/client/apiClient.d.ts +0 -80
  140. package/dist/client/apiClient.d.ts.map +0 -1
  141. 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"}
@@ -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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