effect-app 3.3.5 → 3.3.7

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,17 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 3.3.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 4000c95: track const action name
8
+
9
+ ## 3.3.6
10
+
11
+ ### Patch Changes
12
+
13
+ - 8096576: new eslint shared config package
14
+
3
15
  ## 3.3.5
4
16
 
5
17
  ### Patch Changes
@@ -7,7 +7,7 @@ import * as Effect from "../Effect.js";
7
7
  import { HttpClient } from "../http.js";
8
8
  import * as Option from "../Option.js";
9
9
  import * as S from "../Schema.js";
10
- import type { ClientForOptions, Requests } from "./clientFor.js";
10
+ import type { ClientForOptions, Requests, RequestsAny } from "./clientFor.js";
11
11
  export interface ApiConfig {
12
12
  url: string;
13
13
  headers: Option.Option<HashMap.HashMap<string, string>>;
@@ -27,7 +27,7 @@ type Req = S.Schema.All & {
27
27
  export declare const HttpClientLayer: (config: ApiConfig) => Layer.Layer<HttpClient.HttpClient, never, HttpClient.HttpClient>;
28
28
  export declare const HttpClientFromConfigLayer: Layer.Layer<HttpClient.HttpClient, import("effect/ConfigError").ConfigError, HttpClient.HttpClient>;
29
29
  export declare const RpcSerializationLayer: (config: ApiConfig) => Layer.Layer<HttpClient.HttpClient | RpcSerialization.RpcSerialization, never, HttpClient.HttpClient>;
30
- type RpcHandlers<M extends Requests> = {
30
+ type RpcHandlers<M extends RequestsAny> = {
31
31
  [K in keyof M]: Rpc.Rpc<M[K]["_tag"], M[K], M[K]["success"], M[K]["failure"]>;
32
32
  };
33
33
  export declare const getMeta: <M extends Requests>(resource: M) => M["meta"];
@@ -53,12 +53,12 @@ export declare const makeRpcGroup: <M extends Requests, const ModuleName extends
53
53
  moduleName: ModuleName;
54
54
  };
55
55
  })[K] extends Req ? K : never]: T_1[K] extends Req ? T_1[K] : never; } : never)], `${ModuleName}.`>>;
56
- declare const ApiClientFactory_base: (abstract new (service: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">>, never, never>) => Readonly<(requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">>, never, never>> & Context.TagClassShape<"ApiClientFactory", (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">>, never, never>>) & {
56
+ declare const ApiClientFactory_base: (abstract new (service: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">, M["meta"]["moduleName"]>, never, never>) => Readonly<(requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">, M["meta"]["moduleName"]>, never, never>> & Context.TagClassShape<"ApiClientFactory", (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">, M["meta"]["moduleName"]>, never, never>>) & {
57
57
  toLayer: <E, R>(eff: Effect.Effect<Omit<ApiClientFactory, keyof Context.TagClassShape<any, any>>, E, R>) => Layer.Layer<ApiClientFactory, E, R>;
58
58
  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>>;
59
59
  of: (service: Omit<ApiClientFactory, keyof Context.TagClassShape<any, any>>) => ApiClientFactory;
60
60
  } & Context.Tag<ApiClientFactory, ApiClientFactory> & {} & {
61
- use: <X>(body: (_: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">>, never, never>) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, R | ApiClientFactory> : Effect.Effect<X, never, ApiClientFactory>;
61
+ use: <X>(body: (_: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">, M["meta"]["moduleName"]>, never, never>) => X) => X extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, ApiClientFactory | R> : Effect.Effect<X, never, ApiClientFactory>;
62
62
  };
63
63
  /**
64
64
  * Used to create clients for resource modules.
@@ -66,7 +66,7 @@ declare const ApiClientFactory_base: (abstract new (service: (requestLevelLayers
66
66
  export declare class ApiClientFactory extends ApiClientFactory_base {
67
67
  static readonly layer: (config: ApiConfig) => Layer.Layer<ApiClientFactory, never, HttpClient.HttpClient>;
68
68
  static readonly layerFromConfig: Layer.Layer<ApiClientFactory, import("effect/ConfigError").ConfigError, HttpClient.HttpClient>;
69
- static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(resource: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">>, never, ApiClientFactory>;
69
+ static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(resource: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, Omit<M, "meta">, M["meta"]["moduleName"]>, never, ApiClientFactory>;
70
70
  }
71
71
  export {};
72
72
  //# sourceMappingURL=apiClientFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"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"}
@@ -101,27 +101,28 @@ const makeApiClientFactory = Effect
101
101
  requestName: cur,
102
102
  moduleName: meta.moduleName
103
103
  });
104
+ const layers = requestLevelLayers.pipe(Layer.provideMerge(requestNameLayer));
104
105
  const fields = Struct.omit(Request.fields, "_tag");
105
106
  const requestAttr = h._tag;
106
107
  // @ts-expect-error doc
107
108
  prev[cur] = Object.keys(fields).length === 0
108
109
  ? {
109
- handler: TheClient.pipe(Effect.flatMap((client) => client[requestAttr](new Request())), Effect.provide(requestLevelLayers), Effect.provide(mr), Effect.provide(requestNameLayer)),
110
+ handler: TheClient.pipe(Effect.flatMap((client) => client[requestAttr](new Request())), Effect.provide(layers), Effect.provide(mr)),
110
111
  ...requestMeta,
111
112
  raw: {
112
113
  handler: TheClient.pipe(Effect.flatMap((client) => client[requestAttr](new Request())), Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
113
- Effect.provide(requestLevelLayers), Effect.provide(mr), Effect.provide(requestNameLayer)),
114
+ Effect.provide(layers), Effect.provide(mr)),
114
115
  ...requestMeta
115
116
  }
116
117
  }
117
118
  : {
118
- handler: (req) => TheClient.pipe(Effect.flatMap((client) => client[requestAttr](new Request(req))), Effect.provide(requestLevelLayers), Effect.provide(mr), Effect.provide(requestNameLayer)),
119
+ handler: (req) => TheClient.pipe(Effect.flatMap((client) => client[requestAttr](new Request(req))), Effect.provide(layers), Effect.provide(mr)),
119
120
  ...requestMeta,
120
121
  raw: {
121
122
  handler: (req) =>
122
123
  // @effect-diagnostics effect/missingEffectContext:off
123
124
  TheClient.pipe(Effect.flatMap((client) => client[requestAttr](new Request(req))), Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
124
- Effect.provide(requestLevelLayers), Effect.provide(mr), Effect.provide(requestNameLayer)),
125
+ Effect.provide(layers), Effect.provide(mr)),
125
126
  ...requestMeta
126
127
  }
127
128
  };
@@ -161,4 +162,4 @@ export class ApiClientFactory extends Context.TagId("ApiClientFactory")() {
161
162
  .use((apiClientFactory) => apiClientFactory(requestLevelLayers, options))
162
163
  .pipe(Effect.flatMap((f) => f(resource))); // don't rename f to clientFor or integration in vue project linked fucks up
163
164
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hFLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sS0FBSyxDQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBUXhELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsT0FBTyxFQUFFLE1BQU07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
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpQ2xpZW50RmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hFLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sS0FBSyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDdkQsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFELE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sS0FBSyxDQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBUXhELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsT0FBTyxFQUFFLE1BQU07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
@@ -4,8 +4,13 @@ import type * as Effect from "../Effect.js";
4
4
  import type * as S from "../Schema.js";
5
5
  export declare function makePathWithQuery(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
6
6
  export declare function makePathWithBody(path: Path, pars: Record<string, string | number | boolean | readonly string[] | readonly number[] | readonly boolean[] | null>): string;
7
- export type Requests = Record<string, any>;
8
- export type Client<M extends Requests> = RequestHandlers<never, never, M>;
7
+ export type Requests<ModuleName extends string = string> = {
8
+ meta: {
9
+ moduleName: ModuleName;
10
+ };
11
+ } & RequestsAny;
12
+ export type RequestsAny = Record<string, any>;
13
+ export type Client<M extends RequestsAny, ModuleName extends string> = RequestHandlers<never, never, M, ModuleName>;
9
14
  export type ExtractResponse<T> = T extends S.Schema<any, any, any> ? S.Schema.Type<T> : T extends unknown ? void : never;
10
15
  export type ExtractEResponse<T> = T extends S.Schema<any, any, any> ? S.Schema.Encoded<T> : T extends unknown ? void : never;
11
16
  type IsEmpty<T> = keyof T extends never ? true : false;
@@ -18,23 +23,23 @@ export type TaggedRequestClassAny = S.Schema.Any & {
18
23
  export interface ClientForOptions {
19
24
  readonly skipQueryKey?: readonly string[];
20
25
  }
21
- export interface RequestHandler<A, E, R, Request extends TaggedRequestClassAny> {
26
+ export interface RequestHandler<A, E, R, Request extends TaggedRequestClassAny, Name extends string> {
22
27
  handler: Effect.Effect<A, E, R>;
23
- name: string;
28
+ name: Name;
24
29
  options?: ClientForOptions;
25
30
  Request: Request;
26
31
  }
27
- export interface RequestHandlerWithInput<I, A, E, R, Request extends TaggedRequestClassAny> {
32
+ export interface RequestHandlerWithInput<I, A, E, R, Request extends TaggedRequestClassAny, Name extends string> {
28
33
  handler: (i: I) => Effect.Effect<A, E, R>;
29
- name: string;
34
+ name: Name;
30
35
  options?: ClientForOptions;
31
36
  Request: Request;
32
37
  }
33
- export type RequestHandlers<R, E, M extends Requests> = {
34
- [K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true ? RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K]> & {
35
- raw: RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K]>;
36
- } : RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K]> & {
37
- raw: RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, S.Schema.Encoded<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K]>;
38
+ export type RequestHandlers<R, E, M extends RequestsAny, ModuleName extends string> = {
39
+ [K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true ? RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K], `${ModuleName}.${K & string}`> & {
40
+ raw: RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K], `${ModuleName}.${K & string}`>;
41
+ } : RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K], `${ModuleName}.${K & string}`> & {
42
+ raw: RequestHandlerWithInput<Omit<S.Schema.Type<M[K]>, Cruft>, S.Schema.Encoded<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K], `${ModuleName}.${K & string}`>;
38
43
  };
39
44
  };
40
45
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientFor.d.ts","sourceRoot":"","sources":["../../src/client/clientFor.ts"],"names":[],"mappings":"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"}
package/eslint.config.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import path from "node:path"
2
2
  import { fileURLToPath } from "node:url"
3
- import { augmentedConfig } from "./src/eslint.base.config.mjs"
3
+ // Use the shared config package instead of a non-existent local file
4
+ import { augmentedConfig } from "@effect-app/eslint-shared-config/eslint.base.config"
4
5
 
5
6
  const __filename = fileURLToPath(import.meta.url)
6
7
  const __dirname = path.dirname(__filename)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "3.3.5",
3
+ "version": "3.3.7",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -22,7 +22,8 @@
22
22
  "@types/validator": "^13.15.3",
23
23
  "fast-check": "~4.3.0",
24
24
  "typescript": "~5.9.2",
25
- "vitest": "^3.2.4"
25
+ "vitest": "^3.2.4",
26
+ "@effect-app/eslint-shared-config": "0.0.12"
26
27
  },
27
28
  "peerDependencies": {
28
29
  "@effect/platform": "^0.90.7",
@@ -279,12 +280,6 @@
279
280
  "./validation/validators": {
280
281
  "types": "./dist/validation/validators.d.ts",
281
282
  "default": "./dist/validation/validators.js"
282
- },
283
- "./eslint.base.config": {
284
- "default": "./src/eslint.base.config.mjs"
285
- },
286
- "./eslint.vue.config": {
287
- "default": "./src/eslint.vue.config.mjs"
288
283
  }
289
284
  },
290
285
  "gitHead": "bd8e27eea3eff97db8739d577d67e7336c078d28",
@@ -13,7 +13,7 @@ import { HttpClient, HttpClientRequest } from "../http.js"
13
13
  import * as Option from "../Option.js"
14
14
  import * as S from "../Schema.js"
15
15
  import { typedKeysOf, typedValuesOf } from "../utils.js"
16
- import type { Client, ClientForOptions, Requests } from "./clientFor.js"
16
+ import type { Client, ClientForOptions, Requests, RequestsAny } from "./clientFor.js"
17
17
 
18
18
  export interface ApiConfig {
19
19
  url: string
@@ -80,7 +80,7 @@ export const RpcSerializationLayer = (config: ApiConfig) =>
80
80
  HttpClientLayer(config)
81
81
  )
82
82
 
83
- type RpcHandlers<M extends Requests> = {
83
+ type RpcHandlers<M extends RequestsAny> = {
84
84
  [K in keyof M]: Rpc.Rpc<M[K]["_tag"], M[K], M[K]["success"], M[K]["failure"]>
85
85
  }
86
86
 
@@ -206,6 +206,8 @@ const makeApiClientFactory = Effect
206
206
  moduleName: meta.moduleName
207
207
  })
208
208
 
209
+ const layers = requestLevelLayers.pipe(Layer.provideMerge(requestNameLayer))
210
+
209
211
  const fields = Struct.omit(Request.fields, "_tag")
210
212
  const requestAttr = h._tag
211
213
  // @ts-expect-error doc
@@ -215,9 +217,8 @@ const makeApiClientFactory = Effect
215
217
  Effect.flatMap((client) =>
216
218
  (client as any)[requestAttr]!(new Request()) as Effect.Effect<any, any, never>
217
219
  ),
218
- Effect.provide(requestLevelLayers),
219
- Effect.provide(mr),
220
- Effect.provide(requestNameLayer)
220
+ Effect.provide(layers),
221
+ Effect.provide(mr)
221
222
  ),
222
223
  ...requestMeta,
223
224
  raw: {
@@ -226,9 +227,8 @@ const makeApiClientFactory = Effect
226
227
  (client as any)[requestAttr]!(new Request()) as Effect.Effect<any, any, never>
227
228
  ),
228
229
  Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
229
- Effect.provide(requestLevelLayers),
230
- Effect.provide(mr),
231
- Effect.provide(requestNameLayer)
230
+ Effect.provide(layers),
231
+ Effect.provide(mr)
232
232
  ),
233
233
 
234
234
  ...requestMeta
@@ -240,9 +240,8 @@ const makeApiClientFactory = Effect
240
240
  Effect.flatMap((client) =>
241
241
  (client as any)[requestAttr]!(new Request(req)) as Effect.Effect<any, any, never>
242
242
  ),
243
- Effect.provide(requestLevelLayers),
244
- Effect.provide(mr),
245
- Effect.provide(requestNameLayer)
243
+ Effect.provide(layers),
244
+ Effect.provide(mr)
246
245
  ),
247
246
 
248
247
  ...requestMeta,
@@ -254,9 +253,8 @@ const makeApiClientFactory = Effect
254
253
  (client as any)[requestAttr]!(new Request(req)) as Effect.Effect<any, any, never>
255
254
  ),
256
255
  Effect.flatMap((res) => S.encode(Response)(res)), // TODO,
257
- Effect.provide(requestLevelLayers),
258
- Effect.provide(mr),
259
- Effect.provide(requestNameLayer)
256
+ Effect.provide(layers),
257
+ Effect.provide(mr)
260
258
  ),
261
259
 
262
260
  ...requestMeta
@@ -264,25 +262,25 @@ const makeApiClientFactory = Effect
264
262
  }
265
263
 
266
264
  return prev
267
- }, {} as Client<M>))
265
+ }, {} as Client<M, M["meta"]["moduleName"]>))
268
266
  }
269
267
  })
270
268
 
271
269
  const register: ManagedRuntime.ManagedRuntime<any, any>[] = []
272
270
  yield* Effect.addFinalizer(() => Effect.forEach(register, (mr) => mr.disposeEffect))
273
271
 
274
- const cacheL = new Map<any, Map<any, Client<any>>>()
272
+ const cacheL = new Map<any, Map<any, Client<any, any>>>()
275
273
 
276
274
  function makeClientForCached(requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) {
277
275
  let cache = cacheL.get(requestLevelLayers)
278
276
  if (!cache) {
279
- cache = new Map<any, Client<any>>()
277
+ cache = new Map<any, Client<any, any>>()
280
278
  cacheL.set(requestLevelLayers, cache)
281
279
  }
282
280
 
283
281
  return <M extends Requests>(
284
282
  models: M
285
- ): Effect.Effect<Client<Omit<M, "meta">>> =>
283
+ ): Effect.Effect<Client<Omit<M, "meta">, M["meta"]["moduleName"]>> =>
286
284
  Effect.gen(function*() {
287
285
  const found = cache.get(models)
288
286
  if (found) {
@@ -47,12 +47,14 @@ export function makePathWithBody(
47
47
  return path.build(pars, { ignoreSearch: true, ignoreConstraints: true })
48
48
  }
49
49
 
50
- export type Requests = Record<string, any>
50
+ export type Requests<ModuleName extends string = string> = { meta: { moduleName: ModuleName } } & RequestsAny
51
+ export type RequestsAny = Record<string, any>
51
52
 
52
- export type Client<M extends Requests> = RequestHandlers<
53
+ export type Client<M extends RequestsAny, ModuleName extends string> = RequestHandlers<
53
54
  never,
54
55
  never,
55
- M
56
+ M,
57
+ ModuleName
56
58
  >
57
59
 
58
60
  export type ExtractResponse<T> = T extends S.Schema<any, any, any> ? S.Schema.Type<T>
@@ -80,33 +82,47 @@ export interface ClientForOptions {
80
82
  readonly skipQueryKey?: readonly string[]
81
83
  }
82
84
 
83
- export interface RequestHandler<A, E, R, Request extends TaggedRequestClassAny> {
85
+ export interface RequestHandler<A, E, R, Request extends TaggedRequestClassAny, Name extends string> {
84
86
  handler: Effect.Effect<A, E, R>
85
- name: string
87
+ name: Name
86
88
  options?: ClientForOptions
87
89
  Request: Request
88
90
  }
89
91
 
90
- export interface RequestHandlerWithInput<I, A, E, R, Request extends TaggedRequestClassAny> {
92
+ export interface RequestHandlerWithInput<I, A, E, R, Request extends TaggedRequestClassAny, Name extends string> {
91
93
  handler: (i: I) => Effect.Effect<A, E, R>
92
- name: string
94
+ name: Name
93
95
  options?: ClientForOptions
94
96
  Request: Request
95
97
  }
96
98
 
97
99
  // make sure this is exported or d.ts of apiClientFactory breaks?!
98
- export type RequestHandlers<R, E, M extends Requests> = {
99
- [K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true
100
- ? RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K]> & {
101
- raw: RequestHandler<S.Schema.Type<M[K]["success"]>, S.Schema.Type<M[K]["failure"]> | E, R, M[K]>
102
- }
100
+ export type RequestHandlers<R, E, M extends RequestsAny, ModuleName extends string> = {
101
+ [K in keyof M]: IsEmpty<Omit<S.Schema.Type<M[K]>, Cruft>> extends true ?
102
+ & RequestHandler<
103
+ S.Schema.Type<M[K]["success"]>,
104
+ S.Schema.Type<M[K]["failure"]> | E,
105
+ R,
106
+ M[K],
107
+ `${ModuleName}.${K & string}`
108
+ >
109
+ & {
110
+ raw: RequestHandler<
111
+ S.Schema.Type<M[K]["success"]>,
112
+ S.Schema.Type<M[K]["failure"]> | E,
113
+ R,
114
+ M[K],
115
+ `${ModuleName}.${K & string}`
116
+ >
117
+ }
103
118
  :
104
119
  & RequestHandlerWithInput<
105
120
  Omit<S.Schema.Type<M[K]>, Cruft>,
106
121
  S.Schema.Type<M[K]["success"]>,
107
122
  S.Schema.Type<M[K]["failure"]> | E,
108
123
  R,
109
- M[K]
124
+ M[K],
125
+ `${ModuleName}.${K & string}`
110
126
  >
111
127
  & {
112
128
  raw: RequestHandlerWithInput<
@@ -114,7 +130,8 @@ export type RequestHandlers<R, E, M extends Requests> = {
114
130
  S.Schema.Encoded<M[K]["success"]>,
115
131
  S.Schema.Type<M[K]["failure"]> | E,
116
132
  R,
117
- M[K]
133
+ M[K],
134
+ `${ModuleName}.${K & string}`
118
135
  >
119
136
  }
120
137
  }
@@ -1,212 +0,0 @@
1
- /* eslint-disable @typescript-eslint/ban-ts-comment */
2
- // @ts-nocheck
3
- import { FlatCompat } from "@eslint/eslintrc"
4
- import js from "@eslint/js"
5
- import path from "node:path"
6
- import { fileURLToPath } from "node:url"
7
-
8
- import tsParser from "@typescript-eslint/parser"
9
-
10
- import codegen from "eslint-plugin-codegen"
11
- import _import from "eslint-plugin-import"
12
- import sortDestructureKeys from "eslint-plugin-sort-destructure-keys"
13
- import unusedImports from "eslint-plugin-unused-imports"
14
-
15
-
16
- import eslint from '@eslint/js';
17
- import tseslint from 'typescript-eslint';
18
- import dprint from "@ben_12/eslint-plugin-dprint";
19
-
20
-
21
- const __filename = fileURLToPath(import.meta.url)
22
- const __dirname = path.dirname(__filename)
23
-
24
- const compat = new FlatCompat({
25
- baseDirectory: __dirname,
26
- recommendedConfig: js.configs.recommended,
27
- allConfig: js.configs.all
28
- })
29
-
30
- /**
31
- * @param {string} dirName
32
- * @param {boolean} [forceTS=false]
33
- * @returns {import("eslint").Linter.FlatConfig[]}
34
- */
35
- export function baseConfig(dirName, forceTS = false, project = undefined) {
36
- // eslint-disable-next-line no-undef
37
- const enableTS = !!dirName && (forceTS || process.env["ESLINT_TS"])
38
- return [
39
- {
40
- ignores: [
41
- "**/*.js",
42
- // "**/*.mjs",
43
- // "**/*.cjs",
44
- "**/*.jsx",
45
- "**/*.d.ts",
46
- "**/node_modules/**",
47
- "vitest.config.ts",
48
- "vitest.config.test.ts",
49
- "vite.config.ts",
50
- "eslint.*.mjs",
51
- ]
52
- },
53
- js.configs.recommended,
54
- ...tseslint.config(
55
- eslint.configs.recommended,
56
- tseslint.configs.recommended,
57
- ),
58
- ...(enableTS ? tseslint.configs.recommendedTypeChecked : []),
59
- {
60
- // otherwise this config object doesn't apply inside vue files
61
- // I mean the rules are not applied, the plugins are not loaded
62
- // files: ["**/*.ts", "**/*.tsx"],
63
- name: "base",
64
- languageOptions: {
65
- parser: tsParser,
66
- parserOptions: {
67
- extraFileExtensions: [".vue"], // should be the same as vue config for perfomance reasons (https://typescript-eslint.io/troubleshooting/typed-linting/performance#project-service-issues)
68
- ...(enableTS
69
- && {
70
- tsconfigRootDir: dirName,
71
- projectService: true
72
- })
73
- }
74
- },
75
- settings: {
76
- "import/parsers": {
77
- "@typescript-eslint/parser": [".ts", ".tsx"]
78
- },
79
- "import/resolver": {
80
- typescript: {
81
- alwaysTryTypes: true
82
- } // this loads <rootdir>/tsconfig.json to eslint
83
- }
84
- },
85
- linterOptions: {
86
- reportUnusedDisableDirectives: "off"
87
- },
88
- plugins: {
89
- import: _import,
90
- "sort-destructure-keys": sortDestructureKeys,
91
- "unused-imports": unusedImports,
92
- codegen
93
- },
94
- rules: {
95
- "no-unexpected-multiline": "off",
96
- "no-restricted-imports": ["error", {
97
- "paths": [
98
- {
99
- name: ".",
100
- "message":
101
- "Please import from the specific file instead. Imports from index in the same directory are almost always wrong (circular)."
102
- },
103
- {
104
- name: "./",
105
- "message":
106
- "Please import from the specific file instead. Imports from index in the same directory are almost always wrong (circular)."
107
- },
108
- {
109
- name: "./index",
110
- "message":
111
- "Please import from the specific file instead. Imports from index in the same directory are almost always wrong (circular)."
112
- }
113
- ]
114
- }],
115
- "@typescript-eslint/no-namespace": "off", // We like namespaces, where ES modules cannot compete (augmenting existing types)
116
- "no-unused-vars": "off",
117
- "@typescript-eslint/no-unused-vars": "off",
118
- "unused-imports/no-unused-imports": "error",
119
- "unused-imports/no-unused-vars": [
120
- "warn",
121
- {
122
- "vars": "all",
123
- "varsIgnorePattern": "^_",
124
- "args": "after-used",
125
- "argsIgnorePattern": "^_",
126
- "ignoreRestSiblings": true
127
- }
128
- ],
129
- "@typescript-eslint/no-use-before-define": ["warn", { functions: false, classes: true, variables: true }], // functions may depend on classes or variables defined later
130
- "@typescript-eslint/explicit-function-return-type": "off",
131
- "@typescript-eslint/interface-name-prefix": "off",
132
- "@typescript-eslint/no-empty-object-type": "off",
133
- "sort-destructure-keys/sort-destructure-keys": "error", // Mainly to sort render props
134
- "require-yield": "off", // we want to be able to use e.g Effect.gen without having to worry about lint.
135
- "sort-imports": "off",
136
- "import/first": "error",
137
- "import/newline-after-import": "error",
138
- "import/no-duplicates": ["error", {"prefer-inline": true}],
139
- "import/no-unresolved": "off", // eslint don't understand some imports very well
140
- "import/order": "off",
141
- "@typescript-eslint/consistent-type-imports": ["error", { fixStyle: 'inline-type-imports' }],
142
-
143
- "object-shorthand": "error",
144
- ...(enableTS
145
- && {
146
- "@typescript-eslint/restrict-template-expressions": "warn",
147
- "@typescript-eslint/restrict-plus-operands": "off",
148
- "@typescript-eslint/no-unsafe-assignment": "warn",
149
- "@typescript-eslint/no-unsafe-call": "warn",
150
- "@typescript-eslint/no-unsafe-return": "warn",
151
- "@typescript-eslint/no-unsafe-argument": "warn",
152
- "@typescript-eslint/no-unsafe-member-access": "warn",
153
- "@typescript-eslint/no-misused-promises": "warn",
154
- "@typescript-eslint/unbound-method": "warn",
155
- "@typescript-eslint/only-throw-error": "off",
156
- "@typescript-eslint/no-base-to-string": "warn",
157
- "@typescript-eslint/no-floating-promises": "warn",
158
- })
159
- }
160
- }
161
- ]
162
- }
163
-
164
- /**
165
- * @param {string} dirName
166
- * @param {boolean} [forceTS=false]
167
- * @returns {import("eslint").Linter.FlatConfig[]}
168
- */
169
- export function augmentedConfig(dirName, forceTS = false, project = undefined) {
170
- return [
171
- ...baseConfig(dirName, forceTS, project),
172
- {
173
- name: "augmented",
174
- plugins: {
175
- "@ben_12/dprint": dprint
176
- },
177
- rules: {
178
- ...dprint.configs["typescript-recommended"].rules,
179
- "@ben_12/dprint/typescript": [
180
- "error",
181
- {
182
- // Use dprint JSON configuration file (default: "dprint.json")
183
- // It may be created using `dprint init` command
184
- // See also https://dprint.dev/config/
185
- //configFile: "dprint.json",
186
- // The TypeScript configuration of dprint
187
- // See also https://dprint.dev/plugins/typescript/config/
188
- config: {
189
- // The TypeScript configuration of dprint
190
- // See also https://dprint.dev/plugins/typescript/config/,
191
- "indentWidth": 2,
192
- "semiColons": "asi",
193
- "quoteStyle": "alwaysDouble",
194
- "trailingCommas": "never",
195
- "arrowFunction.useParentheses": "force",
196
- "memberExpression.linePerExpression": true,
197
- "binaryExpression.linePerExpression": true,
198
- "importDeclaration.forceSingleLine": true,
199
- "exportDeclaration.forceSingleLine": true
200
- }
201
- },
202
- ],
203
- "codegen/codegen": [
204
- "error",
205
- {
206
- presets: "@effect-app/eslint-codegen-model/dist/presets/index.js"
207
- }
208
- ]
209
- }
210
- }
211
- ]
212
- }
@@ -1,111 +0,0 @@
1
- import formatjs from "eslint-plugin-formatjs"
2
- import pluginVue from "eslint-plugin-vue"
3
- import { defineConfigWithVueTs, vueTsConfigs } from "@vue/eslint-config-typescript"
4
-
5
- import tseslint from "typescript-eslint"
6
-
7
- import { baseConfig } from "./eslint.base.config.mjs"
8
-
9
- import dprint from "@ben_12/eslint-plugin-dprint"
10
-
11
- /**
12
- * @param {string} dirName
13
- * @param {boolean} [forceTS=false]
14
- * @returns {import("eslint").Linter.FlatConfig[]}
15
- */
16
- export function vueConfig(dirName, forceTS = false, dprintConfigFile = "dprint.json") {
17
- const enableTS = !!dirName && (forceTS || process.env["ESLINT_TS"])
18
-
19
- return [
20
- ...baseConfig(dirName, forceTS),
21
-
22
- // ...ts.configs.recommended,
23
- // this should set the vue parser as the parser plus some recommended rules
24
- ...pluginVue.configs["flat/recommended"],
25
- ...defineConfigWithVueTs(vueTsConfigs.base),
26
- {
27
- name: "vue",
28
- files: ["*.vue", "**/*.vue"],
29
- languageOptions: {
30
- parserOptions: {
31
- // set a custom parser to parse <script> tags
32
- parser: {
33
- "<template>": tseslint.parser,
34
- "ts": tseslint.parser,
35
- "js": tseslint.parser,
36
- },
37
- ...(enableTS && {
38
- projectService: true,
39
- tsconfigRootDir: dirName,
40
- }),
41
- extraFileExtensions: [".vue"]
42
- }
43
- },
44
- rules: {
45
- "no-undef": "off",
46
- "vue/multi-word-component-names": "warn",
47
- "vue/no-template-shadow": "warn",
48
- "vue/valid-v-slot": [
49
- "error",
50
- {
51
- allowModifiers: true,
52
- },
53
- ]
54
- },
55
- plugins: {
56
- formatjs, // this is for ICU messages, so I'd say we need it here
57
- },
58
- },
59
-
60
- {
61
- name: "augmented",
62
- plugins: {
63
- "@ben_12/dprint": dprint,
64
- },
65
- rules: {
66
- ...dprint.configs["disable-typescript-conflict-rules"].rules,
67
- "vue/html-indent": "off",
68
- ...dprint.configs["typescript-recommended"].rules,
69
- ...dprint.configs["malva-recommended"].rules,
70
- ...dprint.configs["markup-recommended"].rules,
71
- "@ben_12/dprint/markup": [
72
- "error",
73
- {
74
- // Use dprint JSON configuration file (default: "dprint.json")
75
- // It may be created using `dprint init` command
76
- // See also https://dprint.dev/config/
77
- configFile: dprintConfigFile,
78
- config: {
79
- // The markup_fmt configuration of dprint
80
- // See also https://dprint.dev/plugins/markup_fmt/config/
81
- },
82
- },
83
- ],
84
- "@ben_12/dprint/typescript": [
85
- "error",
86
- {
87
- // Use dprint JSON configuration file (default: "dprint.json")
88
- // It may be created using `dprint init` command
89
- // See also https://dprint.dev/config/
90
- configFile: "dprint.json",
91
- // The TypeScript configuration of dprint
92
- // See also https://dprint.dev/plugins/typescript/config/
93
- config: {
94
- // The TypeScript configuration of dprint
95
- // See also https://dprint.dev/plugins/typescript/config/,
96
- indentWidth: 2,
97
- semiColons: "asi",
98
- quoteStyle: "alwaysDouble",
99
- trailingCommas: "never",
100
- "arrowFunction.useParentheses": "force",
101
- "memberExpression.linePerExpression": true,
102
- "binaryExpression.linePerExpression": true,
103
- "importDeclaration.forceSingleLine": true,
104
- "exportDeclaration.forceSingleLine": true,
105
- },
106
- },
107
- ],
108
- },
109
- },
110
- ]
111
- }