@effect-app/infra 2.78.3 → 2.78.4
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/dist/api/routing/middleware/dynamic-middleware.d.ts +8 -4
- package/dist/api/routing/middleware/dynamic-middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/dynamic-middleware.js +1 -1
- package/package.json +1 -1
- package/src/api/routing/middleware/dynamic-middleware.ts +31 -12
- package/test/controller.test.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,13 +2,17 @@ import { type Context, Effect, type Option, type S } from "effect-app";
|
|
|
2
2
|
import { type GetEffectContext, type RPCContextMap } from "effect-app/client";
|
|
3
3
|
import { type Tag } from "effect-app/Context";
|
|
4
4
|
import { type ContextTagWithDefault } from "../../layerUtils.js";
|
|
5
|
-
export type ContextWithLayer<Config, Service, Error, Dependencies,
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export type ContextWithLayer<Config, Service, Error, Dependencies, Id, LayerE, LayerR> = (ContextTagWithDefault<Id, {
|
|
6
|
+
_tag: any;
|
|
7
|
+
handle: (config: Config, headers: Record<string, string>) => Effect<Option<Context<Service>>, Error, unknown>;
|
|
8
|
+
}, LayerE, LayerR> | ContextTagWithDefault<Id, {
|
|
9
|
+
_tag: any;
|
|
10
|
+
handle: (config: Config, headers: Record<string, string>) => Effect<Option<Context<Service>>, Error, never>;
|
|
11
|
+
}, LayerE, LayerR>) & {
|
|
8
12
|
dependsOn?: Dependencies;
|
|
9
13
|
};
|
|
10
14
|
export declare namespace ContextWithLayer {
|
|
11
|
-
type Base<Config, Service, Error> = ContextWithLayer<Config, Service, Error, any, any>;
|
|
15
|
+
type Base<Config, Service, Error> = ContextWithLayer<Config, Service, Error, any, any, any, any>;
|
|
12
16
|
}
|
|
13
17
|
export declare const implementMiddleware: <T extends Record<string, RPCContextMap.Any>>() => <TI extends { [K in keyof T]: ContextWithLayer.Base<{ [K_1 in keyof T]?: T[K_1]["contextActivation"]; }, T[K]["service"], S.Schema.Type<T[K]["error"]>>; }>(implementations: TI) => {
|
|
14
18
|
dependencies: { [K in keyof TI]: TI[K]["Default"]; }[keyof TI][];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/dynamic-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,KAAK,qBAAqB,EAAuB,MAAM,qBAAqB,CAAA;AAGrF,MAAM,MAAM,gBAAgB,CAC1B,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"dynamic-middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/middleware/dynamic-middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,4 +15,4 @@ export const implementMiddleware = () => (implementations) => ({
|
|
|
15
15
|
});
|
|
16
16
|
})
|
|
17
17
|
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21pZGRsZXdhcmUvZHluYW1pYy1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLEVBQXVCLE1BQU0sWUFBWSxDQUFBO0FBRzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQThCLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQXFEbEMseUpBQXlKO0FBQ3pKLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQWdELEVBQUUsQ0FDckYsQ0FRRSxlQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLFlBQVksRUFBRSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUVwRDtJQUNiLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7UUFFbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLFFBQVEsQ0FBQyxFQUFDLE1BQXNELEVBQUUsT0FBK0I7WUFDL0YsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQ3BDLEtBQUssQ0FBQyxHQUFHLENBQ1AsTUFBTSxFQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFHLENBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBUSxFQUFFLENBQVEsQ0FDM0YsQ0FDRixDQUFBO1lBQ0QsT0FBTyxHQUVOLENBQUE7UUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUMsQ0FXQTtDQUNGLENBQUMsQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -11,19 +11,36 @@ export type ContextWithLayer<
|
|
|
11
11
|
Service,
|
|
12
12
|
Error,
|
|
13
13
|
Dependencies,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
handle: (
|
|
18
|
-
...args: [config: Config, headers: Record<string, string>]
|
|
19
|
-
) => Effect<Option<Context<Service>>, Error, unknown>
|
|
20
|
-
},
|
|
21
|
-
any,
|
|
22
|
-
unknown,
|
|
23
|
-
any
|
|
24
|
-
>
|
|
14
|
+
Id,
|
|
15
|
+
LayerE,
|
|
16
|
+
LayerR
|
|
25
17
|
> =
|
|
26
|
-
&
|
|
18
|
+
& (
|
|
19
|
+
| ContextTagWithDefault<
|
|
20
|
+
Id,
|
|
21
|
+
{
|
|
22
|
+
_tag: any
|
|
23
|
+
handle: (
|
|
24
|
+
config: Config,
|
|
25
|
+
headers: Record<string, string>
|
|
26
|
+
) => Effect<Option<Context<Service>>, Error, unknown>
|
|
27
|
+
},
|
|
28
|
+
LayerE,
|
|
29
|
+
LayerR
|
|
30
|
+
>
|
|
31
|
+
| ContextTagWithDefault<
|
|
32
|
+
Id,
|
|
33
|
+
{
|
|
34
|
+
_tag: any
|
|
35
|
+
handle: (
|
|
36
|
+
config: Config,
|
|
37
|
+
headers: Record<string, string>
|
|
38
|
+
) => Effect<Option<Context<Service>>, Error, never>
|
|
39
|
+
},
|
|
40
|
+
LayerE,
|
|
41
|
+
LayerR
|
|
42
|
+
>
|
|
43
|
+
)
|
|
27
44
|
& {
|
|
28
45
|
dependsOn?: Dependencies
|
|
29
46
|
}
|
|
@@ -34,6 +51,8 @@ export namespace ContextWithLayer {
|
|
|
34
51
|
Service,
|
|
35
52
|
Error,
|
|
36
53
|
any,
|
|
54
|
+
any,
|
|
55
|
+
any,
|
|
37
56
|
any
|
|
38
57
|
>
|
|
39
58
|
}
|
package/test/controller.test.ts
CHANGED
|
@@ -135,7 +135,7 @@ class RequireRoles extends Effect.Service<RequireRoles>()("RequireRoles", {
|
|
|
135
135
|
yield* Some
|
|
136
136
|
return {
|
|
137
137
|
handle: Effect.fn(
|
|
138
|
-
function*(cfg: { requireRoles?: readonly string[] }) {
|
|
138
|
+
function*(cfg: { requireRoles?: readonly string[] }, _headers: Record<string, string>) {
|
|
139
139
|
// we don't know if the service will be provided or not, so we use option..
|
|
140
140
|
const userProfile = yield* Effect.serviceOption(UserProfile)
|
|
141
141
|
const { requireRoles } = cfg
|
|
@@ -154,7 +154,7 @@ class RequireRoles extends Effect.Service<RequireRoles>()("RequireRoles", {
|
|
|
154
154
|
class Test extends Effect.Service<Test>()("Test", {
|
|
155
155
|
effect: Effect.gen(function*() {
|
|
156
156
|
return {
|
|
157
|
-
handle: Effect.fn(function*() {
|
|
157
|
+
handle: Effect.fn(function*(_cfg, _headers) {
|
|
158
158
|
return Option.none<Context<never>>()
|
|
159
159
|
})
|
|
160
160
|
}
|